//Calcular Totales private void Totales() { DataTable dtItems = (DataTable)ViewState["ITEMS"]; DataSet dsValorItems = new DataSet(); DBFunctions.Request(dsValorItems, IncludeSchema.NO, "SELECT mi.MITE_CODIGO CODIGO, dor.DORD_CANTXPROD CANTIDAD " + "FROM MITEMS mi, DORDENPRODUCCION dor WHERE mi.MITE_CODIGO=dor.MITE_CODIGO AND " + "PDOC_CODIGO='" + ddlPrefOrden.SelectedValue + "' AND " + "MORD_NUMEORDE=" + ddlNumOrden.SelectedValue + ";"); double subtotal = 0, CIF, cargaPrestacional, costeoI = 0; double cantidad = 0, totalCantidad = 0; int items = 0; string horasMes; double costoHoraPlanta = Convert.ToDouble(DBFunctions.SingleData("SELECT MPLA_COSTOHORA FROM MPLANTAS WHERE MPLA_CODIGO='" + ddlAlmacen.SelectedValue + "';")); double capacidadPlanta = Convert.ToDouble(DBFunctions.SingleData("SELECT MPLA_CAPACIDAD FROM MPLANTAS WHERE MPLA_CODIGO='" + ddlAlmacen.SelectedValue + "';")); double totMateriaPrima = 0, totTrabajoTerceros = 0, totManoObra = 0, totMaquinas = 0, totCIF = 0; DateTime fechaP; try{ fechaP = Convert.ToDateTime(tbDate.Text).AddMonths(-1); } catch { Utils.MostrarAlerta(Response, "Fecha no válida, utilizando fecha actual."); tbDate.Text = DateTime.Now.ToString("yyyy-MM-dd"); fechaP = DateTime.Now.AddMonths(-1); } //Consultar CIF CIF = CosteoProduccion.TraerCIF(ddlAlmacen.SelectedValue, fechaP.Year, fechaP.Month); //Horas laboradas al mes horasMes = DBFunctions.SingleData("SELECT cnom_horaslabxmes from CNOMINA"); if (horasMes.Length == 0) { horasMes = "0"; } //Carga Prestacional cargaPrestacional = Convert.ToDouble(DBFunctions.SingleData("SELECT CNOM_PORCCARGPRES from CNOMINA")); string debug = "", mtcod = ""; for (int i = 0; i < dtItems.Rows.Count; i++) { cantidad = Convert.ToDouble(dtItems.Rows[i]["CANTIDAD"]); items++; totalCantidad += cantidad; //if(ddlTProc.SelectedValue!="1") { CosteoProduccion costeo = new CosteoProduccion( dtItems.Rows[i]["CODIGO"].ToString(), cantidad, dtItems.Rows[i]["ENSAMBLE"].ToString(), TipoCosteo.Produccion, CIF, horasMes, costoHoraPlanta, capacidadPlanta, cargaPrestacional); mtcod = dtItems.Rows[i]["CODIGO"].ToString(); //Se confirma si hace cierre para realizar los calculos correspondientes a las entregas de producción. if (chkCerrarO.Checked == true) { costeo.hacerCierre = true; costeo.cantidadOriginal = Convert.ToDouble(dsValorItems.Tables[0].Rows[i]["CANTIDAD"].ToString()); costeo.cantidadActual = Convert.ToDouble(dtItems.Rows[i]["CANTIDAD"].ToString()); costeo.dgCantidadSubItems = dgItems; } costeoI = costeo.Calcular(); if (costeo.error.Length > 0) { Utils.MostrarAlerta(Response, "" + costeo.error + ""); this.btnAjus.Enabled = false; return; } totMateriaPrima += costeo.totalMateriaPrima; totTrabajoTerceros += costeo.totalTrabajoTerceros; totManoObra += costeo.totalManoObra; totMaquinas += costeo.totalMaquinas; totCIF += costeo.totalCIF; subtotal += costeoI; dtItems.Rows[i]["VALOR"] = Math.Round(costeoI / cantidad, 2); debug += costeo.debug + "<br><br>"; } } ViewState["TOT_MATPRIMA"] = totMateriaPrima; ViewState["TOT_TERCEROS"] = totTrabajoTerceros; ViewState["TOT_MANOBRA"] = totManoObra; ViewState["TOT_CIF"] = totCIF; ViewState["TOT_MAQUINARIA"] = totMaquinas; ViewState["MITE_CODIGO"] = mtcod; txtNumUnid.Text = totalCantidad.ToString(); txtNumItem.Text = items.ToString(); txtSubTotal.Text = subtotal.ToString("#,##0"); }
//Seleccionar Embarque protected void btnSeleccionar_Click(object sender, System.EventArgs e) { ArrayList sqlStrings = new ArrayList(); DataTable dtVehiculos = (DataTable)ViewState["VEHICULOS"]; string manifiesto = txtManifiesto.Text.Trim(); string d_o = txtDO.Text.Trim(); string levante = txtLevante.Text.Trim(); string aduana = txtAduana.Text.Trim(); double tasaCambioI = 0, tasaCambioN = 0, totalEmbarque = 0, valor, totalIVA = 0, subtotal = 0, totalEmbarqueM = 0; string tGN, tGE; double totalGastosE = 0, totalGastosN = 0; double unidadesEmbarque = 0; DateTime fechaProceso; #region Validaciones for (int n = 0; n < dgEnsambles.Items.Count; n++) { if (((CheckBox)dgEnsambles.Items[n].FindControl("chkUsarE")).Checked) { sqlStrings.Add( "UPDATE MVEHICULO " + "SET MVEH_NUMEMANI='" + txtManifiesto.Text + "', MVEH_NUMED_O='" + txtDO.Text + "', " + "MVEH_NUMELEVANTE='" + txtLevante.Text + "', MVEH_ADUANA='" + txtAduana.Text + "', " + "TEST_TIPOESTA=20 " + "WHERE MCAT_VIN='" + dtVehiculos.Rows[n]["MCAT_VIN"] + "';"); dtVehiculos.Rows[n]["USAR"] = 1; } else { dtVehiculos.Rows[n]["USAR"] = 0; } } if (sqlStrings.Count == 0) { Utils.MostrarAlerta(Response, "No seleccionó vehículos."); return; } //Tasa de cambio I try { tasaCambioI = Convert.ToDouble(txtTasaCambioI.Text); } catch { Utils.MostrarAlerta(Response, "Tasa de cambio no válida."); return; } //Tasa de cambio N try { tasaCambioN = Convert.ToDouble(txtTasaCambio.Text); } catch { Utils.MostrarAlerta(Response, "Tasa de cambio no válida."); return; } //Embarques if (ddlEmbarque.Items.Count == 0) { Utils.MostrarAlerta(Response, "No hay embarques."); return; } //Manifiesto if (manifiesto.Length == 0) { Utils.MostrarAlerta(Response, "Debe ingresar el manifiesto."); return; } //DO if (d_o.Length == 0) { Utils.MostrarAlerta(Response, "Debe ingresar el D.O."); return; } //Levante... if (levante.Length == 0) { Utils.MostrarAlerta(Response, "Debe ingresar el levante."); return; } //Aduana if (aduana.Length == 0) { Utils.MostrarAlerta(Response, "Debe la aduana."); return; } //Fecha proceso try { fechaProceso = Convert.ToDateTime(txtFecha.Text); } catch { Utils.MostrarAlerta(Response, "Fecha no válida."); return; } #endregion #region Consultar Dembarqueckd //Detalles DataSet dsEmbarque = new DataSet(); DBFunctions.Request(dsEmbarque, IncludeSchema.NO, "SELECT * FROM DEMBARQUECKD WHERE MEMB_SECUENCIA=" + ddlEmbarque.SelectedValue + ";"); btEjecutar.Enabled = false; plcNacionalizar.Visible = true; #endregion #region Gastos //Cargar gastos DataSet dsGastos = new DataSet(); DBFunctions.Request(dsGastos, IncludeSchema.NO, "Select df.PDOC_CODIORDEPAGO PREFO,df.MFAC_NUMEORDEPAGO NUMO,df.pgas_codigo,pg.PGAS_NOMBRE gasto,sum(df.dfac_valorgasto) valor, pg.PGAS_MODENACI " + "from DFACTURAGASTOEMBARQUE df, PGASTODIRECTO pg " + "where memb_secuencia=" + ddlEmbarque.SelectedValue + " and pg.PGAS_CODIGO=df.PGAS_CODIGO " + "group by memb_secuencia,df.pgas_codigo,pgas_nombre,df.PDOC_CODIORDEPAGO,df.MFAC_NUMEORDEPAGO,pg.PGAS_MODENACI;"); dgrGastos.DataSource = dsGastos.Tables[0]; dgrGastos.DataBind(); txtManifiesto.Enabled = txtDO.Enabled = txtLevante.Enabled = txtAduana.Enabled = txtFecha.Enabled = txtTasaCambioI.Enabled = txtTasaCambio.Enabled = ddlEmbarque.Enabled = ddlPrefDoc.Enabled = false; //Gastos moneda extranjera tGE = DBFunctions.SingleData( "SELECT " + "SUM(DF.DFAC_VALORGASTO) " + "FROM DFACTURAGASTOEMBARQUE DF, PGASTODIRECTO PG " + "WHERE " + "PG.PGAS_CODIGO=DF.PGAS_CODIGO AND DF.MEMB_SECUENCIA=" + ddlEmbarque.SelectedValue + " AND " + "PG.PGAS_MODENACI='N';"); if (tGE.Length > 0) { totalGastosE = Convert.ToDouble(tGE); } //Gastos moneda nacional tGN = DBFunctions.SingleData( "SELECT " + "SUM(DF.DFAC_VALORGASTO) " + "FROM DFACTURAGASTOEMBARQUE DF, PGASTODIRECTO PG " + "WHERE " + "PG.PGAS_CODIGO=DF.PGAS_CODIGO AND DF.MEMB_SECUENCIA=" + ddlEmbarque.SelectedValue + " AND " + "PG.PGAS_MODENACI='S';"); if (tGN.Length > 0) { totalGastosN = Convert.ToDouble(tGN); } #endregion #region Validar Catalogos en embarque DataRow[] drVs; DataRow drV; int unidades = 0; for (int n = 0; n < dtVehiculos.Rows.Count; n++) { drV = dtVehiculos.Rows[n]; if (Convert.ToInt16(drV["USAR"]) == 1) { if (dsEmbarque.Tables[0].Select("PCAT_CODIGO='" + drV["PCAT_CODIGO"] + "'").Length == 0) { Utils.MostrarAlerta(Response, "El catálogo " + drV["PCAT_CODIGO"] + " no se encuentra en el embarque."); return; } sqlStrings.Add("UPDATE DEMBARQUECKD SET DITE_CANTNACI=DITE_CANTNACI+1 " + "WHERE MEMB_SECUENCIA=" + ddlEmbarque.SelectedValue + " AND PCAT_CODIGO='" + drV["PCAT_CODIGO"] + "';"); unidades++; } } #endregion #region Validar total embarque //Detalles embarque totalCIF for (int n = 0; n < dsEmbarque.Tables[0].Rows.Count; n++) { drV = dsEmbarque.Tables[0].Rows[n]; valor = Convert.ToDouble(drV["DITE_VALOFOB"]) * Convert.ToDouble(drV["DITE_CANTEMBA"]); unidadesEmbarque += Convert.ToDouble(drV["DITE_CANTEMBA"]); totalEmbarque += valor; } totalEmbarqueM = Convert.ToDouble(DBFunctions.SingleData( "SELECT MLIC_VALOEMBA FROM MEMBARQUE WHERE MEMB_SECUENCIA=" + ddlEmbarque.SelectedValue + ";")); if (Math.Abs(totalEmbarqueM - totalEmbarque) > (totalEmbarqueM / 100)) { btEjecutar.Enabled = false; Utils.MostrarAlerta(Response, "La sumatoria de los detalles del embarque no coincide con el valor total del embarque!"); } #endregion string ensamble = ""; //Planta string planta = DBFunctions.SingleData("SELECT MPLA_CODIGO FROM MPLANTAS WHERE TPRO_CODIGO='E' FETCH FIRST 1 ROWS ONLY;"); //CIF: double CIF = CosteoProduccion.TraerCIF(planta, DateTime.Now.Year, DateTime.Now.Month); //Horas laboradas al mes string horasMes = DBFunctions.SingleData("SELECT cnom_horaslabxmes from CNOMINA"); //Carga Prestacional double cargaPrestacional = Convert.ToDouble(DBFunctions.SingleData("SELECT CNOM_PORCCARGPRES from CNOMINA")); //Costo hora planta double costoHoraPlanta = Convert.ToDouble(DBFunctions.SingleData("SELECT MPLA_COSTOHORA FROM MPLANTAS WHERE MPLA_CODIGO='" + planta + "';")); //Capacidad Planta double capacidadPlanta = Convert.ToDouble(DBFunctions.SingleData("SELECT MPLA_CAPACIDAD FROM MPLANTAS WHERE MPLA_CODIGO='" + planta + "';")); CosteoProduccion costeo; string numD = DBFunctions.SingleData("SELECT pdoc_ultidocu+1 FROM pdocumento WHERE pdoc_codigo='" + ddlPrefDoc.SelectedValue + "';"); string prfD = ddlPrefDoc.SelectedValue; double cifV = 0, gravamenV = 0, ivaV = 0, gcifV = 0, costoUniV = 0, factorCIF = 0, factorImportacion = 0, totalCostoImportacion = 0, costeoV = 0; for (int n = 0; n < dtVehiculos.Rows.Count; n++) { drV = dtVehiculos.Rows[n]; dtVehiculos.Rows[n]["IVA"] = 0; if (Convert.ToInt16(drV["USAR"]) == 1) { drVs = dsEmbarque.Tables[0].Select("PCAT_CODIGO='" + drV["PCAT_CODIGO"] + "'"); valor = Convert.ToDouble(drVs[0]["DITE_VALOFOB"]); //Response.Write("<H1>"+drV["MCAT_VIN"]+"</H1><br>"); //Response.Write("fob: "+valor+"<br>"); cifV = totalEmbarque + totalGastosE; //Response.Write("CIF: "+cifV+"<br>"); gravamenV = Convert.ToDouble(DBFunctions.SingleData( "SELECT COALESCE(PA.PARA_GRAVAME,0) " + "FROM PCATALOGOVEHICULO PC LEFT JOIN PARANCEL PA ON PA.PARA_CODIGO=PC.PARA_CODIGO " + "WHERE PC.PCAT_CODIGO='" + drV["PCAT_CODIGO"] + "';")); gravamenV = cifV * tasaCambioN * gravamenV / 100; //Response.Write("GRAVAMEN: "+gravamenV+"<br>"); ivaV = Convert.ToDouble(DBFunctions.SingleData( "SELECT COALESCE(PA.PIVA_PORCIVA,0) " + "FROM PCATALOGOVEHICULO PC LEFT JOIN PARANCEL PA ON PA.PARA_CODIGO=PC.PARA_CODIGO " + "WHERE PC.PCAT_CODIGO='" + drV["PCAT_CODIGO"] + "';")) / 100; ivaV += (cifV * tasaCambioN + gravamenV) * ivaV; //Response.Write("IVA: "+ivaV+"<br>"); totalIVA += ivaV; gcifV = (cifV * tasaCambioI) + gravamenV + totalGastosN; //Response.Write("GCIF: "+gcifV+"<br>"); costoUniV = (gcifV / totalEmbarque) * valor; //Response.Write("Costo unitario: "+costoUniV+"<br>"); valor = costoUniV; #region Costeo ensamble = DBFunctions.SingleData( "SELECT PENS_CODIGO FROM PENSAMBLEPRODUCCION WHERE PCAT_CODIGO='" + dtVehiculos.Rows[n]["PCAT_CODIGO"] + "';" ); costeo = new CosteoProduccion( dtVehiculos.Rows[n]["PCAT_CODIGO"].ToString(), 1, ensamble, TipoCosteo.Ensamble, CIF, horasMes, costoHoraPlanta, capacidadPlanta, cargaPrestacional); costeoV = costeo.Calcular(); valor += costeoV; //Response.Write("Costeo: "+costeoV+"<br>"); //Response.Write("TOTAL: "+valor+"<br><br><br>"); if (costeo.error.Length > 0) { Utils.MostrarAlerta(Response, "" + costeo.error + ""); return; } #endregion sqlStrings.Add("UPDATE MVEHICULO SET MVEH_VALOCOMP=" + valor + " " + "where MCAT_VIN='" + drV["MCAT_VIN"] + "';"); factorCIF = totalGastosE / totalEmbarque; factorImportacion = gcifV / totalEmbarque; totalCostoImportacion = gcifV - (totalEmbarque * tasaCambioN); subtotal += valor; sqlStrings.Add( "INSERT INTO DLIQUIDACIONCKD VALUES(" + "DEFAULT," + ddlEmbarque.SelectedValue + "," + "'" + drV["PCAT_CODIGO"] + "','" + drV["MCAT_VIN"] + "'," + totalEmbarque + "," + gcifV / unidadesEmbarque + "," + gravamenV / unidadesEmbarque + "," + ivaV / unidadesEmbarque + "," + tasaCambioN + "," + tasaCambioI + "," + totalGastosE / unidadesEmbarque + "," + totalGastosN / unidadesEmbarque + "," + factorCIF + "," + factorImportacion + "," + totalCostoImportacion / unidadesEmbarque + "," + "'" + HttpContext.Current.User.Identity.Name + "'," + "'" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "');" ); sqlStrings.Add("INSERT INTO DCOSTOPRODUCCION VALUES('" + prfD + "'," + numD + "," + costeo.totalMateriaPrima + "," + costeo.totalTrabajoTerceros + "," + costeo.totalManoObra + "," + costeo.totalCIF + "," + costeo.totalMaquinas + ",'" + drV["MCAT_VIN"] + "');"); } } sqlStrings.Add("UPDATE pdocumento set pdoc_ultidocu=pdoc_ultidocu+1 " + "WHERE pdoc_codigo='" + prfD + "';"); totalIVA = unidades * (totalIVA / unidadesEmbarque); #region Factura Proveedor FacturaProveedor facturaRepuestos = new FacturaProveedor(); string prefijoFacturaProveedor = ddlPrefDoc.SelectedValue; UInt64 numeroFacturaProveedor = Convert.ToUInt64(lblNumDoc.Text.Trim()); string nit = DBFunctions.SingleData("SELECT MNIT_NIT FROM CEMPRESA;"); if (DBFunctions.RecordExist("SELECT * FROM mfacturaproveedor WHERE pdoc_codiordepago='" + prefijoFacturaProveedor + "' AND mfac_numeordepago=" + numeroFacturaProveedor + "")) { numeroFacturaProveedor = Convert.ToUInt32(DBFunctions.SingleData("SELECT pdoc_ultidocu+1 FROM pdocumento WHERE pdoc_codigo='" + prefijoFacturaProveedor + "'")); } FacturaProveedor facturaRepuestosProv = new FacturaProveedor("FPR", prefijoFacturaProveedor, prefijoFacturaProveedor, nit, planta, "F", numeroFacturaProveedor, numeroFacturaProveedor, "P", DateTime.Now, DateTime.Now, Convert.ToDateTime(null), DateTime.Now, 0, 0, 0, 0, 0, txtLevante.Text, HttpContext.Current.User.Identity.Name.ToLower()); facturaRepuestosProv.GrabarFacturaProveedor(false); ViewState["NUM_FAC"] = facturaRepuestosProv.NumeroFactura; ViewState["PRE_FAC"] = facturaRepuestosProv.PrefijoFactura; for (int i = 0; i < facturaRepuestosProv.SqlStrings.Count; i++) { sqlStrings.Insert(0, facturaRepuestosProv.SqlStrings[facturaRepuestosProv.SqlStrings.Count - i - 1].ToString()); } #endregion Factura Proveedor txtTotalEmbarque.Text = totalEmbarque.ToString("C"); txtTotalUnidades.Text = unidades.ToString("0"); txtTotalGastosE.Text = totalGastosE.ToString("C"); txtTotalGastosN.Text = totalGastosN.ToString("C"); txtIVA.Text = totalIVA.ToString("C"); txtSubtotal.Text = subtotal.ToString("C"); txtTotal.Text = (totalIVA + subtotal).ToString("C"); ViewState["DLIQUIDACION"] = sqlStrings; ViewState["VEHICULOS"] = dtVehiculos; btEjecutar.Enabled = true; btnSeleccionar.Visible = false; for (int n = 0; n < dgEnsambles.Items.Count; n++) { ((CheckBox)dgEnsambles.Items[n].FindControl("chkUsarE")).Enabled = false; } if (sqlStrings.Count == 0) { Utils.MostrarAlerta(Response, "No seleccionó vehículos."); return; } }
//Seleccionar ensamble a graficar protected void btnSeleccionar_Click(object sender, System.EventArgs e) { tvControl.Nodes.Clear(); //Agregar ensamble raiz //plcArbol.Visible = true; fldArbol.Visible = true; AgregarEnsamble(ddlEnsambles.SelectedValue, null, 0, "", -1); //Costeo try { CosteoProduccion costeo; string codElem = ""; //USAR PRIMERA PLANTA ENCONTRADA: string planta = ""; if (Request.QueryString["ens"] != null) { planta = DBFunctions.SingleData("SELECT MPLA_CODIGO FROM MPLANTAS WHERE TPRO_CODIGO='E' FETCH FIRST 1 ROWS ONLY;"); } else { planta = DBFunctions.SingleData("SELECT MPLA_CODIGO FROM MPLANTAS WHERE TPRO_CODIGO='P' FETCH FIRST 1 ROWS ONLY;"); } //CIF: DateTime fechaA = DateTime.Now.AddMonths(-1); double CIF = CosteoProduccion.TraerCIF(planta, fechaA.Year, fechaA.Month); //Horas laboradas al mes string horasMes = DBFunctions.SingleData("SELECT cnom_horaslabxmes from CNOMINA"); //Carga Prestacional double cargaPrestacional = Convert.ToDouble(DBFunctions.SingleData("SELECT CNOM_PORCCARGPRES from CNOMINA")); //Costo hora planta double costoHoraPlanta = Convert.ToDouble(DBFunctions.SingleData("SELECT MPLA_COSTOHORA FROM MPLANTAS WHERE MPLA_CODIGO='" + planta + "';")); //Capacidad Planta double capacidadPlanta = Convert.ToDouble(DBFunctions.SingleData("SELECT MPLA_CAPACIDAD FROM MPLANTAS WHERE MPLA_CODIGO='" + planta + "';")); //Produccion if (Request.QueryString["ens"] == null) { codElem = DBFunctions.SingleData("select mite_codigo from PENSAMBLEPRODUCCION " + "where pens_codigo='" + ddlEnsambles.SelectedValue + "';"); costeo = new CosteoProduccion( codElem, 1, ddlEnsambles.SelectedValue, TipoCosteo.Produccion, CIF, horasMes, costoHoraPlanta, capacidadPlanta, cargaPrestacional); } //Ensambles else { codElem = DBFunctions.SingleData("select pcat_codigo from PENSAMBLEPRODUCCION " + "where pens_codigo='" + ddlEnsambles.SelectedValue + "';"); costeo = new CosteoProduccion( codElem, 1, ddlEnsambles.SelectedValue, TipoCosteo.Ensamble, CIF, horasMes, costoHoraPlanta, capacidadPlanta, cargaPrestacional); } lblCosto.Text = costeo.Calcular().ToString("C"); if (costeo.error.Length > 0) { Utils.MostrarAlerta(Response, "" + costeo.error + ""); } lblCosteo.Text = costeo.debug; } catch { lblCosto.Text = "Error calculando el costeo."; } }