Exemplo n.º 1
0
        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;
            }
        }