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