예제 #1
0
        public PerdidaGanancia getPerdidaGanancia(DataTable pdtDetalla, string pCtaOrigen, string pCtaDestino)
        {
            PerdidaGanancia oPG = new PerdidaGanancia();

            DataRow[] result           = pdtDetalla.Select("VAT_GL_ACCT_ID = '" + pCtaOrigen + "' AND TRASLADO = '" + pCtaDestino + "'");
            string    sCtaPerdida      = string.Empty;
            string    sCtaGanancia     = string.Empty;
            double    dPerdidaGanancia = 0;

            foreach (DataRow rowDetalle in result)
            {
                dPerdidaGanancia = double.Parse(rowDetalle["PERDIDA_GANANCIA"].ToString());

                if (dPerdidaGanancia != 0)
                {
                    if (rowDetalle["VAT_GL_ACCT_ID"].ToString().Equals(pCtaOrigen) && rowDetalle["TRASLADO"].ToString().Equals(pCtaDestino) && dPerdidaGanancia < 0)
                    {
                        oPG.Perdida      += Math.Abs(dPerdidaGanancia);
                        oPG.CuentaPerdida = rowDetalle["CUENTA_PER_GANANCIA"].ToString();
                    }
                    else
                    {
                        oPG.Ganancia      += dPerdidaGanancia;
                        oPG.CuentaGanancia = rowDetalle["CUENTA_PER_GANANCIA"].ToString();
                    }
                }
            }

            return(oPG);
        }
예제 #2
0
        public PerdidaGanancia getPerdidaGanancia(DataTable dtDetalleMovimientos)
        {
            // Perdida Ganancia
            double          dPerdidaGanancia = 0;
            double          dPerdida         = 0;
            double          dGanancia        = 0;
            PerdidaGanancia oPG = new PerdidaGanancia();

            foreach (DataRow rowDetalle in dtDetalleMovimientos.Rows)
            {
                dPerdidaGanancia = double.Parse(rowDetalle["PERDIDA_GANANCIA"].ToString());

                if (dPerdidaGanancia < 0)
                {
                    dPerdida += Math.Abs(dPerdidaGanancia);
                }
                else
                {
                    dGanancia += Math.Abs(dPerdidaGanancia);
                }
            }

            oPG.Perdida  = Math.Round(dPerdida, 4);
            oPG.Ganancia = Math.Round(dGanancia, 4);

            return(oPG);
        }
예제 #3
0
        public List <GJ_DIST> getListGJ_DIST()
        {
            List <GJ_DIST> lstGJ_DIST        = new List <GJ_DIST>();
            int            iEntry_No         = 1;
            double         dMontoFactura     = 0;
            double         dMontoPago        = 0;
            double         dMonto_tipoCambio = 0;

            if (TipoCambio.Equals("FACTURA"))
            {
                foreach (DataRow item in _dtVMX_IVATRASTEMP.Rows)
                {
                    GJ_DIST oGJ_DIST = new GJ_DIST();

                    dMontoFactura = double.Parse(item["MONTO"].ToString());

                    oGJ_DIST = getGJ_DIST_NATIVE(iEntry_No++, dMontoFactura, "DR", item["CUENTA_ORIGEN"].ToString());
                    lstGJ_DIST.Add(oGJ_DIST);

                    oGJ_DIST = getGJ_DIST_NATIVE(iEntry_No++, dMontoFactura, "CR", item["CUENTA_DESTINO"].ToString());
                    lstGJ_DIST.Add(oGJ_DIST);
                }

                // Monedas rastreables
                foreach (DataRow item in _dtVMX_IVATRASTEMP.Rows)
                {
                    foreach (MonedaRastreo moneda in _lstCurrencyTracking)
                    {
                        GJ_DIST oGJ_DIST_TRACK = new GJ_DIST();

                        dMontoFactura     = double.Parse(item["MONTO"].ToString());
                        dMonto_tipoCambio = Math.Round((dMontoFactura / moneda.SELL_RATE), 2);

                        oGJ_DIST_TRACK = getGJ_DIST_TRACK(iEntry_No++, dMonto_tipoCambio, "DR", item["CUENTA_DESTINO"].ToString(), moneda.ID);
                        lstGJ_DIST.Add(oGJ_DIST_TRACK);

                        oGJ_DIST_TRACK = getGJ_DIST_TRACK(iEntry_No++, dMonto_tipoCambio, "CR", item["CUENTA_ORIGEN"].ToString(), moneda.ID);
                        lstGJ_DIST.Add(oGJ_DIST_TRACK);
                    }
                }
            }
            else
            {
                // 1 - Moneda del sistema
                foreach (DataRow item in _dtVMX_IVATRASTEMP.Rows)
                {
                    GJ_DIST oGJ_DIST = new GJ_DIST();

                    dMontoFactura = double.Parse(item["MONTO"].ToString());
                    dMontoPago    = double.Parse(item["MONTO_IVA_DEPOSITO"].ToString());

                    oGJ_DIST = getGJ_DIST_NATIVE(iEntry_No++, dMontoFactura, "DR", item["CUENTA_ORIGEN"].ToString());
                    lstGJ_DIST.Add(oGJ_DIST);

                    oGJ_DIST = getGJ_DIST_NATIVE(iEntry_No++, dMontoPago, "CR", item["CUENTA_DESTINO"].ToString());
                    lstGJ_DIST.Add(oGJ_DIST);

                    // Perdida Ganancia
                    PerdidaGanancia oPG          = new PerdidaGanancia();
                    string          sCta_Origen  = item["CUENTA_ORIGEN"].ToString();
                    string          sCta_Destino = item["CUENTA_DESTINO"].ToString();

                    oPG = oPG.getPerdidaGanancia(_dtDetalla_IVA, sCta_Origen, sCta_Destino);

                    if (oPG.Ganancia > 0)
                    {
                        oGJ_DIST = getGJ_DIST_NATIVE(iEntry_No++, oPG.Ganancia, "DR", oPG.CuentaGanancia);
                        lstGJ_DIST.Add(oGJ_DIST);
                    }

                    if (oPG.Perdida > 0)
                    {
                        oGJ_DIST = getGJ_DIST_NATIVE(iEntry_No++, oPG.Perdida, "CR", oPG.CuentaPerdida);
                        lstGJ_DIST.Add(oGJ_DIST);
                    }
                }

                // 2- Monedas rastreables
                foreach (DataRow item in _dtVMX_IVATRASTEMP.Rows)
                {
                    dMontoFactura = double.Parse(item["MONTO"].ToString());
                    dMontoPago    = double.Parse(item["MONTO_IVA_DEPOSITO"].ToString());

                    foreach (MonedaRastreo moneda in _lstCurrencyTracking)
                    {
                        GJ_DIST oGJ_DIST_TRACK = new GJ_DIST();

                        dMonto_tipoCambio = Math.Round((dMontoFactura / moneda.SELL_RATE), 2);
                        oGJ_DIST_TRACK    = getGJ_DIST_TRACK(iEntry_No++, dMonto_tipoCambio, "DR", item["CUENTA_DESTINO"].ToString(), moneda.ID);
                        lstGJ_DIST.Add(oGJ_DIST_TRACK);

                        dMonto_tipoCambio = Math.Round((dMontoPago / moneda.SELL_RATE), 2);
                        oGJ_DIST_TRACK    = getGJ_DIST_TRACK(iEntry_No++, dMonto_tipoCambio, "CR", item["CUENTA_ORIGEN"].ToString(), moneda.ID);
                        lstGJ_DIST.Add(oGJ_DIST_TRACK);

                        // Perdida Ganancia
                        PerdidaGanancia oPG          = new PerdidaGanancia();
                        string          sCta_Origen  = item["CUENTA_ORIGEN"].ToString();
                        string          sCta_Destino = item["CUENTA_DESTINO"].ToString();

                        oPG = oPG.getPerdidaGanancia(_dtDetalla_IVA, sCta_Origen, sCta_Destino);

                        if (oPG.Ganancia > 0)
                        {
                            dMonto_tipoCambio = Math.Round((oPG.Ganancia / moneda.SELL_RATE), 2);
                            oGJ_DIST_TRACK    = getGJ_DIST_TRACK(iEntry_No++, dMonto_tipoCambio, "DR", oPG.CuentaGanancia, moneda.ID);
                            lstGJ_DIST.Add(oGJ_DIST_TRACK);
                        }

                        if (oPG.Perdida > 0)
                        {
                            dMonto_tipoCambio = Math.Round((oPG.Perdida / moneda.SELL_RATE), 2);
                            oGJ_DIST_TRACK    = getGJ_DIST_TRACK(iEntry_No++, dMonto_tipoCambio, "CR", oPG.CuentaPerdida, moneda.ID);
                            lstGJ_DIST.Add(oGJ_DIST_TRACK);
                        }
                    }
                }
            }

            return(lstGJ_DIST);
        }