protected void btnDevolucion_Click(object sender, System.EventArgs e) { int i; if (ddlOTS.Items.Count == 0) { Utils.MostrarAlerta(Response, "No se ha seleccionado ninguna orden de trabajo.\\n Revise Por Favor."); return; } if (ddlFactRel.Items.Count == 0) { Utils.MostrarAlerta(Response, "La orden de trabajo " + ddlOTS.SelectedItem.Text + " no tiene ninguna factura relacionada.\\nRevise Por Favor."); return; } string prefOtSel = ddPrefOt.SelectedValue; string numOtSel = ddlOTS.SelectedValue; string[] factRel = ddlFactRel.SelectedValue.Split('-'); double valorFactura = 0; double valorIva = 0; double valorRetenciones = 0; string observacion = DBFunctions.SingleData("SELECT MFAC_OBSERVACION FROM MFACTURACLIENTE WHERE PDOC_CODIGO = '" + factRel[2].Trim() + "' AND MFAC_NUMEDOCU = '" + factRel[3].Trim() + "'"); //NotaDevolucionCliente prueba = new NotaDevolucionCliente() ; //prueba.ObservacionDevolucion = txtObserva.Text; if (txtObserva.Text == "" || txtObserva.Text == null) { txtObserva.Text = " Sin Observación. "; } NotaDevolucionCliente.observacionDevolucion = " || Razón Devolucion: " + txtObserva.Text + ""; try{ valorFactura = Convert.ToDouble(DBFunctions.SingleData("SELECT mfac_valofact FROM mfacturacliente WHERE pdoc_codigo='" + factRel[2].Trim() + "' AND mfac_numedocu=" + factRel[3].Trim() + "")); } catch {} try{ valorIva = Convert.ToDouble(DBFunctions.SingleData("SELECT mfac_valoiva FROM mfacturacliente WHERE pdoc_codigo='" + factRel[2].Trim() + "' AND mfac_numedocu=" + factRel[3].Trim() + "")); } catch {} try{ valorRetenciones = Convert.ToDouble(DBFunctions.SingleData("SELECT mfac_valorete FROM mfacturacliente WHERE pdoc_codigo='" + factRel[2].Trim() + "' AND mfac_numedocu=" + factRel[3].Trim() + "")); } catch {} DataSet dsRetenciones = new DataSet(); DataTable dtRetenciones = null; if (valorRetenciones != 0) { dsRetenciones = DBFunctions.Request(dsRetenciones, IncludeSchema.NO, "SELECT * FROM mfacturaclienteRETENCION WHERE pdoc_codigo='" + factRel[2].Trim() + "' AND mfac_numedocu=" + factRel[3].Trim() + ""); dtRetenciones = dsRetenciones.Tables[0]; } NotaDevolucionCliente notaDevFT = new NotaDevolucionCliente(ddlPrefNDC.SelectedValue, factRel[2].Trim(), Convert.ToUInt32(DBFunctions.SingleData("SELECT pdoc_ultidocu+1 FROM pdocumento WHERE pdoc_codigo='" + ddlPrefNDC.SelectedValue + "'")), Convert.ToUInt32(factRel[3].Trim()), "N", "FA", valorFactura, valorIva, valorRetenciones, DateTime.Now, HttpContext.Current.User.Identity.Name, dtRetenciones); ArrayList sqlRefs = new ArrayList(); //Eliminamos la relacion entre la orden de trabajo y la factura que se esta eliminando sqlRefs.Add("DELETE FROM mfacturaclientetaller WHERE pdoc_codigo='" + factRel[2].Trim() + "' AND mfac_numedocu=" + factRel[3].Trim() + " AND pdoc_prefordetrab='" + prefOtSel + "' AND mord_numeorde=" + numOtSel + ""); //Debemos cambiar el estado de las transferencias que estan relacionadas con este cargo (mordentransferencia ,mpedidotransferencia y mfacturacliente) sqlRefs.Add("UPDATE mfacturacliente SET tvig_vigencia='C' WHERE (pdoc_codigo,mfac_numedocu) IN (SELECT pdoc_factura,mfac_numero FROM mordentransferencia WHERE pdoc_codigo='" + prefOtSel + "' AND mord_numeorde=" + numOtSel + " AND tcar_cargo='" + factRel[0].Trim() + "')"); sqlRefs.Add("UPDATE mpedidotransferencia SET tvig_vigencia='C' WHERE pdoc_codigo='" + prefOtSel + "' AND mord_numeorde=" + numOtSel + " AND tcar_cargo='" + factRel[0].Trim() + "'"); //Vuelvo a dejar la orden es estao abierto sqlRefs.Add("UPDATE morden SET test_estado='A',mord_estaliqu='P' WHERE pdoc_codigo='" + prefOtSel + "' AND mord_numeorde=" + numOtSel + ""); //Se agrega el comentario del por qué la devolución. sqlRefs.Add("UPDATE MFACTURACLIENTE SET MFAC_OBSERVACION = '" + observacion + " " + NotaDevolucionCliente.observacionDevolucion + "' WHERE PDOC_CODIGO = '" + factRel[2].Trim() + "' AND MFAC_NUMEDOCU = " + factRel[3].Trim()); //Ahora agregamos los sqlrels for (i = 0; i < sqlRefs.Count; i++) { notaDevFT.SqlRels.Add(sqlRefs[i].ToString()); } //Ahora agregamos los sql relacionados con el almacenamiento historico de la ot ArrayList sqlHistorico = Orden.AlmacenarHistorialDevolucionOrden(prefOtSel, numOtSel, factRel[2].Trim(), factRel[3].Trim(), DateTime.Now.ToString("yyyy-MM-dd"), HttpContext.Current.User.Identity.Name.ToLower()); for (i = 0; i < sqlHistorico.Count; i++) { notaDevFT.SqlRels.Add(sqlHistorico[i].ToString()); } ///*notaDevFT.GrabarNotaDevolucionCliente(false); //for(i=0;i<notaDevFT.SqlStrings.Count;i++) // lb.Text += "<br>"+notaDevFT.SqlStrings[i].ToString();*/ if (notaDevFT.GrabarNotaDevolucionCliente(true)) { Orden.AlmacenarCostosDevolucionOT(notaDevFT.PrefijoFactura, notaDevFT.NumeroFactura, notaDevFT.PrefijoNota, notaDevFT.NumeroNota); RevisionDevolucionesOT(prefOtSel, Convert.ToUInt32(numOtSel)); ProceHecEco contaOnline = new ProceHecEco(); contaOnline.contabilizarOnline(notaDevFT.PrefijoNota, Convert.ToInt32(notaDevFT.NumeroNota.ToString()), DateTime.Now, ""); Response.Redirect(indexPage + "?process=Automotriz.DevolucionesOT&prefD=" + notaDevFT.PrefijoNota + "&numD=" + notaDevFT.NumeroNota + ""); } else { lb.Text += "<br>Mal " + notaDevFT.ProcessMsg; } }
public static bool RealizarAjusteInventario(string prefijo, int numero, string prefReferencia, int numReferencia, string almacen, DateTime fechaDocumento, string vendedor, string centroCosto, string observaciones, DataTable dtItems, ref string msjError) { double cantidad = 0; double valorUnitario = 0; double costoPromedio = 0; double costoPromedioAlmacen = 0; double porcentajeIVA = 0; double porcentajeDescuento = 0; double cantidadDevolucion = 0; double costoPromedioHistorico = 0; double costoPromedioHistoricoAlmacen = 0; double valorPublico = 0; double inventarioInicial = 0; double inventarioInicialAlmacen = 0; int tipoMovimiento = 50; string nit = DBFunctions.SingleData("SELECT mnit_nit from cempresa"); string cargo = DBFunctions.SingleData("SELECT TVEND_CODIGO FROM PVENDEDOR WHERE PVEN_CODIGO='" + vendedor + "'"); string año = DBFunctions.SingleData("SELECT pano_ano FROM cinventario"); Movimiento Mov = new Movimiento( prefijo, (uint)numero, prefReferencia, (uint)numReferencia, tipoMovimiento, nit, almacen, fechaDocumento, vendedor, cargo, centroCosto, "N", ""); Mov.Observaciones = observaciones; for (int i = 0; i < dtItems.Rows.Count; i++) { string codItem = ""; string lineaItem = DBFunctions.SingleData("SELECT plin_tipo FROM plineaitem WHERE plin_codigo='" + dtItems.Rows[i]["mite_linea"].ToString() + "'"); Referencias.Guardar(dtItems.Rows[i]["mite_codigo"].ToString().Trim(), ref codItem, lineaItem); cantidad = Convert.ToDouble(dtItems.Rows[i]["msal_cantasig"]); //cantidfad facturada valorUnitario = Convert.ToDouble(dtItems.Rows[i]["msal_costprom"]); //valor unidad string sqlSaldos = String.Format( "SELECT msal_costprom, \n" + " msal_costpromhist, \n" + " msal_cantactual \n" + "FROM msaldoitem \n" + "WHERE pano_ano = {0} \n" + "AND mite_codigo = '{1}'" , año , codItem); string sqlSaldosAlmacen = String.Format( "SELECT msal_costprom, \n" + " msal_costpromhist, \n" + " msal_cantactual \n" + "FROM msaldoitemalmacen \n" + "WHERE pano_ano = {0} \n" + "AND palm_almacen = '{1}' \n" + "AND mite_codigo = '{2}'" , año , almacen , codItem); ArrayList arrSaldos = DBFunctions.RequestAsCollection(sqlSaldos); ArrayList arrSaldosAlmacen = DBFunctions.RequestAsCollection(sqlSaldosAlmacen); if (arrSaldos.Count > 0) { Hashtable hashSaldos = (Hashtable)arrSaldos[0]; costoPromedio = Convert.ToDouble(hashSaldos["MSAL_COSTPROM"]); costoPromedioHistorico = Convert.ToDouble(hashSaldos["MSAL_COSTPROMHIST"]); inventarioInicial = Convert.ToDouble(hashSaldos["MSAL_CANTACTUAL"]); } else { costoPromedio = 0; costoPromedioHistorico = 0; inventarioInicial = 0; } if (arrSaldosAlmacen.Count > 0) { Hashtable hashSaldosAlmacen = (Hashtable)arrSaldosAlmacen[0]; costoPromedioAlmacen = Convert.ToDouble(hashSaldosAlmacen["MSAL_COSTPROM"]); costoPromedioHistoricoAlmacen = Convert.ToDouble(hashSaldosAlmacen["MSAL_COSTPROMHIST"]); inventarioInicialAlmacen = Convert.ToDouble(hashSaldosAlmacen["MSAL_CANTACTUAL"]); } else { costoPromedioAlmacen = 0; costoPromedioHistoricoAlmacen = 0; inventarioInicialAlmacen = 0; } valorPublico = 0; porcentajeIVA = 0; porcentajeDescuento = 0; cantidadDevolucion = 0; Mov.InsertaFila(codItem, cantidad, valorUnitario, costoPromedio, costoPromedioAlmacen, porcentajeIVA, porcentajeDescuento, cantidadDevolucion, costoPromedioHistorico, costoPromedioHistoricoAlmacen, valorPublico, inventarioInicial, inventarioInicialAlmacen, 0, "", ""); } if (Mov.RealizarMov(true)) { int ultiDocu = Convert.ToInt32(DBFunctions.SingleData("SELECT PDOC_ULTIDOCU FROM PDOCUMENTO WHERE PDOC_CODIGO = '" + prefijo + "'")); if (ultiDocu != numero) { DBFunctions.NonQuery("UPDATE pdocumento SET pdoc_ultidocu=" + numero + " WHERE pdoc_codigo='" + prefijo + "'"); } else if (ultiDocu == numero) { numero += 1; DBFunctions.NonQuery("UPDATE pdocumento SET pdoc_ultidocu=" + numero + " WHERE pdoc_codigo='" + prefijo + "'"); registroConsecutivo = true; } ProceHecEco contaOnline = new ProceHecEco(); contaOnline.contabilizarOnline(prefijo, numero, DateTime.Now, ""); return(true); } else { msjError += Mov.ProcessMsg; } return(false); }