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; } }