Esempio n. 1
0
        /// <summary>
        /// Permite anular el documento de venta actual
        /// </summary>
        /// <param name="Item"></param>
        /// <returns></returns>
        public Boolean SaveAnularFactura(ref DocsVta Item)
        {
            try
            {
                Boolean m_isCorrect = true;
                Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DABeginTransaction();

                m_isCorrect = UpdateAnularFactura(ref Item);


                // Anular Asiento de Venta
                GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoVenta);
                genAsientos.ItemDocsVta = Item;
                m_isCorrect             = genAsientos.Anular(Item.AUDI_UsrMod, GAsientos.TipoItem.DocVta);

                if (m_isCorrect)
                {
                    Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            { Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DARollbackTransaction(); throw; }
        }
        public Boolean SaveDiferido(ref Movimiento Item)
        {
            try
            {
                DataAccessEnterpriseSQL.DABeginTransaction();
                Boolean m_isCorrect = true;
                switch (Item.Instance)
                {
                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified:
                    m_isCorrect = UpdateEjecutarDiferido(ref Item);
                    break;
                }

                #region [ Generar el asiento de Diferido ]

                GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoCajaDiferido);
                genAsientos.ItemMovimiento = Item;
                genAsientos.GenerarAsientoBD(Item.AUDI_UsrMod);

                #endregion

                if (m_isCorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            { DataAccessEnterpriseSQL.DARollbackTransaction(); throw; }
        }
Esempio n. 3
0
        public bool AnularDocsVtaFacturacion(DocsVta item)
        {
            try
            {
                Boolean m_isCorrect = true;
                Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DABeginTransaction();
                m_isCorrect = AnularDocsVta(item);

                // Anular Asiento de Venta
                GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoVenta);
                genAsientos.ItemDocsVta = item;
                m_isCorrect             = genAsientos.Anular(item.AUDI_UsrMod, GAsientos.TipoItem.DocVta);

                if (m_isCorrect)
                {
                    Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception ex)
            { throw ex; }
        }
Esempio n. 4
0
        public DataSet GetImpresionFEDS(String x_procedure, ObservableCollection <Infrastructure.Aspect.DataAccess.DataAccessFilterSQL> x_filters, String x_usuario, Int16 x_sucr_codigo, Boolean x_transaccion = false, String Email = "")
        {
            DataSet dsResultado;

            try
            {
                Boolean m_iscorrect = true, m_generado = false;
                int     CCCT_Codigo = 0; Int16 EMPR_Codigo = 0; String TIPO_CodFPG;
                DataAccessEnterpriseSQL.DABeginTransaction();

                dsResultado = SelectDS(x_procedure, x_filters, ref EMPR_Codigo, ref CCCT_Codigo, ref m_generado, false);



                if (dsResultado.Tables.Count > 0 && dsResultado.Tables[0].Rows.Count > 0 && m_generado)
                {
                    GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoVenta);
                    genAsientos.ItemCtaCte = new CtaCte();
                    genAsientos.ItemCtaCte = BL_CtaCte.GetOne(EMPR_Codigo, CCCT_Codigo);

                    m_iscorrect = genAsientos.GenerarAsiento(x_usuario, x_sucr_codigo);
                    if (m_iscorrect)
                    {
                        m_iscorrect = genAsientos.ActualizarCtaCte(x_usuario);
                    }
                }



                //FACTURACION ELECTRONICA
                if (m_iscorrect)
                {
                    eFacturacionElectronica facturacionElectronica = new eFacturacionElectronica();
                    DataTable dtResultadoFacturacionElectronica    = new DataTable();
                    dtResultadoFacturacionElectronica = facturacionElectronica.ProcesarFacturacionElectronica(dsResultado.Tables[0].Rows[0]["DOCV_Codigo"].ToString(), Email, x_usuario);
                    dsResultado.Tables.Add(dtResultadoFacturacionElectronica);

                    string Resultado        = dtResultadoFacturacionElectronica.Rows[0]["resultado"].ToString();
                    string ResultadoDetalle = dtResultadoFacturacionElectronica.Rows[0]["mensajeerror"].ToString();
                    if (Resultado == "ERROR")
                    {
                        throw new System.Exception(ResultadoDetalle);
                    }
                }

                if (m_iscorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    throw new Exception("No se completo el proce de generación de documento");
                }
            }
            catch (Exception)
            { DataAccessEnterpriseSQL.DARollbackTransaction(); dsResultado = null; throw; }
            return(dsResultado);
        }
Esempio n. 5
0
        /// <summary>
        /// Anular documento generados par SLI
        /// </summary>
        /// <param name="item">The item.</param>
        /// <returns></returns>
        public bool AnularDocsVtaFacturacion(DocsVta item, string TipDocVta)
        {
            try
            {
                Boolean m_isCorrect = true;
                Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DABeginTransaction();
                m_isCorrect = AnularDocsVta(item);



                // Anular Asiento de Venta
                GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoVenta);
                genAsientos.ItemDocsVta = item;
                m_isCorrect             = genAsientos.Anular(item.AUDI_UsrMod, GAsientos.TipoItem.DocVta);


                if (TipDocVta == "eFact")
                {
                    if (item.DOCV_Numero != null)
                    {
                        if (m_isCorrect)
                        {
                            //FACTURACION ELECTRONICA
                            eFacturacionElectronica facturacionElectronica = new eFacturacionElectronica();
                            DataTable dtResultadoFacturacionElectronica    = new DataTable();
                            dtResultadoFacturacionElectronica = facturacionElectronica.ProcesarBajaFacturacionElectronica(item.DOCV_Codigo.ToString(), item.AUDI_UsrMod);

                            string Resultado        = dtResultadoFacturacionElectronica.Rows[0]["resultado"].ToString();
                            string ResultadoDetalle = dtResultadoFacturacionElectronica.Rows[0]["mensajeerror"].ToString();
                            if (Resultado == "ERROR")
                            {
                                throw new System.Exception(ResultadoDetalle);
                            }
                        }
                    }
                }

                if (m_isCorrect)
                {
                    Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception ex)
            { throw ex; }
        }
        private Boolean SaveGAsientos(ref ObservableCollection <NaveViaje> Items)
        {
            try
            {
                DataAccessEnterpriseSQL.DABeginTransaction();
                Boolean m_isCorrect = true;
                foreach (NaveViaje iNaveViaje in Items)
                {
                    //NaveViaje x_NaveViaje = SelectOne(iNaveViaje.NVIA_Codigo);
                    GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoSTATEMENT);

                    genAsientos.ItemNaveViaje = iNaveViaje;

                    //genAsientos.SUCR_Codigo = iNaveViaje.SUCR_Codigo;
                    //genAsientos.CABA_Ano = x_NaveViaje.CABA_Ano;
                    //genAsientos.CABA_Mes = x_NaveViaje.CABA_Mes;
                    //genAsientos.TIPO_TabREG = x_NaveViaje.TIPO_TabREG;
                    //genAsientos.TIPO_CodReg = x_NaveViaje.TIPO_CodREG;
                    //genAsientos.CABA_NroVoucher = x_NaveViaje.CABA_NroVoucher;

                    String x_usuario = String.IsNullOrEmpty(iNaveViaje.AUDI_UsrMod) ? iNaveViaje.AUDI_UsrCrea : iNaveViaje.AUDI_UsrMod;

                    m_isCorrect = genAsientos.GenerarAsientoBD(x_usuario);
                    //m_isCorrect = genAsientos.GenerarAsiento(x_NaveViaje.AUDI_UsrCrea, iNaveViaje.SUCR_Codigo);
                    //if (m_isCorrect)
                    //{ genAsientos.ActualizarNaveViaje(x_NaveViaje.AUDI_UsrCrea); }
                }

                if (m_isCorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            { DataAccessEnterpriseSQL.DARollbackTransaction(); throw; }
            return(false);
        }
Esempio n. 7
0
        public DataSet GetImpresionDS(String x_procedure, ObservableCollection <Infrastructure.Aspect.DataAccess.DataAccessFilterSQL> x_filters, String x_usuario, Int16 x_sucr_codigo, Boolean x_transaccion = false)
        {
            DataSet dsResultado;

            try
            {
                Boolean m_iscorrect = true, m_generado = false;
                int     CCCT_Codigo = 0; Int16 EMPR_Codigo = 0; String TIPO_CodFPG;
                DataAccessEnterpriseSQL.DABeginTransaction();

                dsResultado = SelectDS(x_procedure, x_filters, ref EMPR_Codigo, ref CCCT_Codigo, ref m_generado, false);
                if (dsResultado.Tables.Count > 0 && dsResultado.Tables[0].Rows.Count > 0 && m_generado)
                {
                    GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoVenta);
                    genAsientos.ItemCtaCte = new CtaCte();
                    genAsientos.ItemCtaCte = BL_CtaCte.GetOne(EMPR_Codigo, CCCT_Codigo);

                    m_iscorrect = genAsientos.GenerarAsiento(x_usuario, x_sucr_codigo);
                    if (m_iscorrect)
                    {
                        m_iscorrect = genAsientos.ActualizarCtaCte(x_usuario);
                    }
                }
                if (m_iscorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    throw new Exception("No se completo el proce de generación de documento");
                }
            }
            catch (Exception)
            { DataAccessEnterpriseSQL.DARollbackTransaction(); dsResultado = null; throw; }
            return(dsResultado);
        }
        public Boolean SaveAnular(ref Movimiento Item)
        {
            try
            {
                Boolean m_isCorrect = true;
                DataAccessEnterpriseSQL.DABeginTransaction();
                Item.SetEstado(Movimiento.Estado.Anulado);
                m_isCorrect = UpdateAnular(ref Item);
                if (Item != null && m_isCorrect)
                {
                    ObservableCollection <Infrastructure.Aspect.DataAccess.DataAccessFilterSQL> listFilters = new ObservableCollection <Infrastructure.Aspect.DataAccess.DataAccessFilterSQL>();
                    listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@psinEMPR_Codigo", FilterValue = Item.EMPR_Codigo, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Int16, FilterSize = 2
                    });
                    listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@pintMOVI_Codigo", FilterValue = Item.MOVI_Codigo, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Int32, FilterSize = 4
                    });
                    Item.ListDetCtaCte   = BL_DetCtaCte.GetAllFilter("CAJ_DCCTSS_TodosPorMovimiento", listFilters);
                    Item.TIPO_Movimiento = BL_Tipos.GetOne(Item.TIPO_TabMOV, Item.TIPO_CodMOV);

                    foreach (DetCtaCte iDetCtaCte in Item.ListDetCtaCte)
                    {
                        if (iDetCtaCte.DCCT_MontoDebe < iDetCtaCte.DCCT_MontoHaber)
                        {
                            iDetCtaCte.DCCT_MontoDebe   = iDetCtaCte.DCCT_MontoHaber;
                            iDetCtaCte.DCCT_MontoHaber  = 0;
                            iDetCtaCte.DCCT_MontoDebeD  = iDetCtaCte.DCCT_MontoHaberD;
                            iDetCtaCte.DCCT_MontoHaberD = 0;
                        }
                        else if (iDetCtaCte.DCCT_MontoDebe > iDetCtaCte.DCCT_MontoHaber)
                        {
                            iDetCtaCte.DCCT_MontoHaber  = iDetCtaCte.DCCT_MontoDebe;
                            iDetCtaCte.DCCT_MontoDebe   = 0;
                            iDetCtaCte.DCCT_MontoHaberD = iDetCtaCte.DCCT_MontoDebeD;
                            iDetCtaCte.DCCT_MontoDebeD  = 0;
                        }
                        iDetCtaCte.Instance     = InstanceEntity.Added;
                        iDetCtaCte.AUDI_UsrCrea = Item.AUDI_UsrMod;
                        iDetCtaCte.CONS_TabTDC  = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte();
                        iDetCtaCte.CONS_CodTDC  = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte(Infrastructure.Aspect.Constants.TTipoMovimientoDetCtaCte.Extorno);

                        Entities.DetCtaCte _detCtaCte = iDetCtaCte;
                        BL_DetCtaCte.Save(ref _detCtaCte);
                    }

                    GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoCaja);
                    genAsientos.ItemMovimiento = Item;
                    genAsientos.Anular(Item.AUDI_UsrMod, GAsientos.TipoItem.Movimiento);
                }
                if (m_isCorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            {
                DataAccessEnterpriseSQL.DARollbackTransaction();
                throw;
            }
        }
Esempio n. 9
0
        public Boolean Save(ref Planillas Item)
        {
            try
            {
                String x_usuario = "";
                DataAccessEnterpriseSQL.DABeginTransaction();
                Boolean m_isCorrect = true;
                switch (Item.Instance)
                {
                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added:
                    m_isCorrect = Insert(ref Item);
                    x_usuario   = Item.AUDI_UsrCrea;
                    foreach (Entities.DetCtaCte item in Item.ListDetCtaCte)
                    {
                        item.Instance = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added;
                    }
                    break;

                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified:
                    m_isCorrect = Update(ref Item);
                    x_usuario   = Item.AUDI_UsrMod;
                    break;

                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted:
                    m_isCorrect = Delete(ref Item); break;
                }

                /*
                 * Grabar Detalle de las planillas
                 */
                foreach (Movimiento item in Item.ListMovimiento)
                {
                    item.AUDI_UsrMod = x_usuario;
                    item.PLAN_Codigo = Item.PLAN_Codigo;
                    item.PLAN_Tipo   = Item.PLAN_Tipo;

                    String _tipo = "";
                    switch (Item.PLAN_Tipo)
                    {
                    case "DET":
                        _tipo = Item.PLAN_Tipo;
                        break;

                    case "WWW":
                        _tipo = "BAN";
                        break;

                    default:
                        _tipo = Item.PLAN_Tipo;
                        break;
                    }

                    item.MOVI_Referencia = String.Format("[Cod. Pla.:{2}-{0}] {1}", Item.PLAN_Codigo, Item.PLAN_Concepto, _tipo);
                    Entities.Movimiento _item = item;
                    m_isCorrect      = BL_Movimiento.Save(ref _item, Movimiento.TInterfazMovimiento.RegistroPlanilla);
                    item.MOVI_Codigo = _item.MOVI_Codigo;
                }

                /*
                 * Grabar detalle de Cta Cte
                 */
                foreach (DetCtaCte iDetCtaCte in Item.ListDetCtaCte)
                {
                    switch (iDetCtaCte.Instance)
                    {
                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Unchanged:
                        break;

                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added:
                        iDetCtaCte.AUDI_UsrCrea = x_usuario;
                        break;

                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified:
                        iDetCtaCte.AUDI_UsrMod = x_usuario;
                        break;

                    case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted:
                        break;

                    default:
                        break;
                    }
                    #region Guardar el detalle de Transacciones

                    iDetCtaCte.EMPR_Codigo = Item.EMPR_Codigo;
                    iDetCtaCte.MOVI_Codigo = Item.ListMovimiento[0].MOVI_Codigo;
                    iDetCtaCte.TIPO_TabMND = Item.ItemCuentasBancarias.TIPO_TabMND;
                    iDetCtaCte.TIPO_CodMND = Item.ItemCuentasBancarias.TIPO_CodMND;
                    //iDetCtaCte.CCCT_TipoCambio = Item.TipoCambio;
                    iDetCtaCte.DCCT_TipoCambio     = iDetCtaCte.CCCT_TipoCambio.Value; //Item.TipoCambio;
                    iDetCtaCte.DCCT_FechaTrans     = DateTime.Now;
                    iDetCtaCte.DCCT_PagoDetraccion = (Item.TPlanilla == Planillas.TipoPlanilla.Detracciones);

                    Decimal TipoCambio = iDetCtaCte.DCCT_TipoCambio;

                    #region Movimiento de Egreso

                    /*
                     * Realizar las operaciones correspondientes para un Egreso
                     */
                    iDetCtaCte.DCCT_MontoHaber  = 0;
                    iDetCtaCte.DCCT_MontoHaberD = 0;
                    iDetCtaCte.CONS_TabTDC      = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte();
                    iDetCtaCte.CONS_CodTDC      = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte(Infrastructure.Aspect.Constants.TTipoMovimientoDetCtaCte.Pago);

                    /*
                     * Verificar la Moneda de la Cuenta Bancaria
                     */
                    if (Item.ItemCuentasBancarias.TIPO_CodMND.Equals(Infrastructure.Aspect.Constants.Util.getMoneda(TMoneda.Soles)))
                    {
                        /*
                         * Si la Moneda de la cuenta bancaria es S/. (Nuevos Soles)
                         * - Vericar la moneda del documento para realizar la conversión para los campos correspondientes
                         */
                        if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Soles)))
                        {
                            iDetCtaCte.DCCT_PPago      = 0;
                            iDetCtaCte.DCCT_MontoDebe  = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                            iDetCtaCte.DCCT_PPagoD     = 0;
                            iDetCtaCte.DCCT_MontoDebeD = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) / TipoCambio, 2, MidpointRounding.AwayFromZero);
                        }
                        else if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Dolares)))
                        {
                            iDetCtaCte.DCCT_PPago      = 0;
                            iDetCtaCte.DCCT_MontoDebe  = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                            iDetCtaCte.DCCT_PPagoD     = 0;
                            iDetCtaCte.DCCT_MontoDebeD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                        }
                    }
                    else if (Item.ItemCuentasBancarias.TIPO_CodMND.Equals(Infrastructure.Aspect.Constants.Util.getMoneda(TMoneda.Dolares)))
                    {
                        /*
                         * Si la Moneda de la cuenta Bancaria es en US$ (Dolares Americanos)
                         * - Vericar la moneda del documento para realizar la conversión para los campos correspondientes
                         */
                        if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Soles)))
                        {
                            iDetCtaCte.DCCT_PPago     = 0;
                            iDetCtaCte.DCCT_MontoDebe = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                            if (iDetCtaCte.CCCT_Pendiente.HasValue)
                            {
                                iDetCtaCte.DCCT_PPagoD     = 0;
                                iDetCtaCte.DCCT_MontoDebeD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                            }
                        }
                        else if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Dolares)))
                        {
                            iDetCtaCte.DCCT_PPago      = 0;
                            iDetCtaCte.DCCT_MontoDebe  = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                            iDetCtaCte.DCCT_PPagoD     = 0;
                            iDetCtaCte.DCCT_MontoDebeD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                        }
                    }
                    #endregion

                    /*
                     * Realizar la Operación de Grabado en la Base de datosm según la Instancia de la Clase
                     */
                    Entities.DetCtaCte _idetctacte = iDetCtaCte;
                    BL_DetCtaCte.Save(ref _idetctacte);
                    #endregion
                }
                #region [ Generar Asientos de los Movimientos Generados ]

                foreach (Movimiento iMovi in Item.ListMovimiento)
                {
                    GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoCaja);
                    genAsientos.ItemMovimiento = iMovi;
                    genAsientos.GenerarAsientoBD(Item.AUDI_UsrCrea);
                }

                #endregion

                if (m_isCorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            {
                DataAccessEnterpriseSQL.DARollbackTransaction();
                throw;
            }
        }
Esempio n. 10
0
        public Boolean Save(ref Transferencia Item)
        {
            try
            {
                DataAccessEnterpriseSQL.DABeginTransaction();
                Boolean m_isCorrect = true;
                String  x_Usuario   = "";
                switch (Item.Instance)
                {
                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added:
                    x_Usuario   = Item.AUDI_UsrCrea;
                    m_isCorrect = Insert(ref Item);
                    foreach (Movimiento iMov in Item.ListIngresos)
                    {
                        iMov.Instance = InstanceEntity.Added; iMov.AUDI_UsrCrea = x_Usuario;
                    }
                    foreach (Movimiento iMov in Item.ListEgresos)
                    {
                        iMov.Instance = InstanceEntity.Added; iMov.AUDI_UsrCrea = x_Usuario;
                    }
                    foreach (GastosBancarios iGas in Item.ListGastosBancarios)
                    {
                        iGas.Instance = InstanceEntity.Added; iGas.AUDI_UsrCrea = x_Usuario;
                    }
                    break;

                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified:
                    x_Usuario   = Item.AUDI_UsrMod;
                    m_isCorrect = Update(ref Item);
                    break;
                    // case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted:
                    // m_isCorrect = Delete(ref Item);
                    //break;
                }

                /*
                 * Grabar Detalles
                 */
                /*
                 * Movimientos de Ingresos
                 */
                foreach (Movimiento iMov in Item.ListIngresosEliminados)
                {
                    Movimiento _mov = iMov;
                    _mov.TRAN_Codigo = Item.TRAN_Codigo;
                    _mov.EMPR_Codigo = Item.EMPR_Codigo;
                    _mov.AUDI_UsrMod = x_Usuario;
                    _mov.Instance    = InstanceEntity.Deleted;
                    BL_Movimiento.Save(ref _mov, Movimiento.TInterfazMovimiento.Transferencia);
                }
                foreach (Movimiento iMov in Item.ListIngresos)
                {
                    Movimiento _mov = iMov;
                    _mov.TRAN_Codigo = Item.TRAN_Codigo;
                    _mov.EMPR_Codigo = Item.EMPR_Codigo;
                    _mov.AUDI_UsrMod = x_Usuario;
                    m_isCorrect      = BL_Movimiento.Save(ref _mov, Movimiento.TInterfazMovimiento.Transferencia);
                }

                /*
                 * Moviemientos de Egresos
                 */
                foreach (Movimiento iMov in Item.ListEgresosEliminados)
                {
                    Movimiento _mov = iMov;
                    _mov.TRAN_Codigo = Item.TRAN_Codigo;
                    _mov.EMPR_Codigo = Item.EMPR_Codigo;
                    _mov.AUDI_UsrMod = x_Usuario;
                    _mov.Instance    = InstanceEntity.Deleted;
                    BL_Movimiento.Save(ref _mov, Movimiento.TInterfazMovimiento.Transferencia);
                }
                foreach (Movimiento iMov in Item.ListEgresos)
                {
                    Movimiento _mov = iMov;
                    _mov.TRAN_Codigo = Item.TRAN_Codigo;
                    _mov.EMPR_Codigo = Item.EMPR_Codigo;
                    _mov.AUDI_UsrMod = x_Usuario;
                    m_isCorrect      = BL_Movimiento.Save(ref _mov, Movimiento.TInterfazMovimiento.Transferencia);
                }

                /*
                 * Gastos Bancarios
                 */
                foreach (GastosBancarios iGBan in Item.ListGastosBancariosEliminados)
                {
                    GastosBancarios _gban = iGBan;
                    _gban.Instance = InstanceEntity.Deleted;
                    BL_GastosBancarios.Save(ref _gban);
                }
                foreach (GastosBancarios iGBan in Item.ListGastosBancarios)
                {
                    GastosBancarios _gban = iGBan;
                    _gban.TRAN_Codigo = Item.TRAN_Codigo;
                    _gban.EMPR_Codigo = Item.EMPR_Codigo;
                    switch (_gban.Instance)
                    {
                    case InstanceEntity.Added:
                        _gban.AUDI_UsrCrea = x_Usuario;
                        break;

                    case InstanceEntity.Modified:
                        _gban.AUDI_UsrMod = x_Usuario;
                        break;
                    }
                    m_isCorrect = BL_GastosBancarios.Save(ref _gban);
                }

                if (m_isCorrect)
                {
                    GAsientos genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoTransferencia);
                    genAsientos.ItemTransferencia = Item;
                    genAsientos.GenerarAsientoBD(x_Usuario);
                }

                /*
                 * Termninar la transacción
                 */
                if (m_isCorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            {
                DataAccessEnterpriseSQL.DARollbackTransaction();
                throw;
            }
        }
Esempio n. 11
0
        public Boolean Save(ref Movimiento Item)
        {
            try
            {
                Boolean m_isCorrect = true;
                DataAccessEnterpriseSQL.DABeginTransaction();
                String    x_Usuario = "";
                GAsientos genAsientos;
                #region [ Cabecera de Movimiento ]
                genAsientos = new GAsientos(GAsientos.TipoAsiento.AsientoCaja);

                switch (Item.Instance)
                {
                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added:
                    m_isCorrect = Insert(ref Item);
                    if (Item.ListDetCtaCte != null)
                    {
                        foreach (Entities.DetCtaCte item in Item.ListDetCtaCte)
                        {
                            item.CCCT_Pendiente = Math.Abs(item.CCCT_Pendiente.Value);
                            item.Instance       = InstanceEntity.Added;
                        }
                    }
                    Item.ItemCtaCteDescuadre               = new CtaCte();
                    Item.ItemCtaCteDescuadre.Instance      = InstanceEntity.Added;
                    Item.ItemCtaCteDescuadre.AUDI_UsrCrea  = Item.AUDI_UsrCrea;
                    Item.ItemCtaCteDescuadre.ItemDetCtaCte = new DetCtaCte();
                    Item.ItemCtaCteDescuadre.ItemDetCtaCte.AUDI_UsrCrea = Item.AUDI_UsrCrea;
                    Item.ItemCtaCteDescuadre.CCCT_FechaEmision          = Item.MOVI_FecEmision;
                    x_Usuario = Item.AUDI_UsrCrea;

                    if (Item.ListFlujos != null && Item.ListFlujos.Count > 0)
                    {
                        foreach (Entities.MovimientoFlujo _movimientoFlujo in Item.ListFlujos)
                        {
                            MovimientoFlujo movimientoFlujo = _movimientoFlujo;
                            movimientoFlujo.EMPR_Codigo  = Item.EMPR_Codigo;
                            movimientoFlujo.AUDI_UsrCrea = Item.AUDI_UsrCrea;
                            movimientoFlujo.MOVI_Codigo  = Item.MOVI_Codigo;
                            //iMovimientoFlujo.CUBA_Codigo = Item.CUBA_Codigo;
                            _movimientoFlujo.Instance = InstanceEntity.Added;
                            m_isCorrect = BL_MovimientoFlujo.Save(ref movimientoFlujo);
                            if (!m_isCorrect)
                            { //Item.SetMensajeError(String.Format("* No se puede grabar la Chequera Numero {0}.", iMovimientoFlujo.MFLU_Item)); break;
                            }
                        }
                    }

                    if (Item.ListTipificaciones != null && Item.ListTipificaciones.Count > 0)
                    {
                        foreach (Entities.Tipificaciones iTipificacion in Item.ListTipificaciones)
                        {
                            Tipificaciones _tipificacion = iTipificacion;
                            _tipificacion.EMPR_Codigo  = Item.EMPR_Codigo;
                            _tipificacion.MOVI_Codigo  = Item.MOVI_Codigo;
                            _tipificacion.AUDI_UsrCrea = Item.AUDI_UsrCrea;
                            _tipificacion.Instance     = InstanceEntity.Added;
                            m_isCorrect = BL_Tipificaciones.Save(ref _tipificacion);
                        }
                    }
                    break;

                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified:
                    m_isCorrect = Update(ref Item);
                    foreach (Entities.DetCtaCte item in Item.ListDetCtaCte)
                    {
                        item.CCCT_Pendiente = Math.Abs(item.CCCT_Pendiente.Value);
                    }
                    if (Item.ItemCtaCteDescuadre == null)
                    {
                        Item.ItemCtaCteDescuadre          = new CtaCte();
                        Item.ItemCtaCteDescuadre.Instance = InstanceEntity.Added;
                    }
                    Item.ItemCtaCteDescuadre.AUDI_UsrMod = Item.AUDI_UsrMod;
                    x_Usuario = Item.AUDI_UsrMod;

                    #region [ Flujos ]

                    /* Eliminar los registros */
                    if (Item.ListFlujosEliminados != null && Item.ListFlujosEliminados.Count > 0)
                    {
                        foreach (Entities.MovimientoFlujo iMovimientoFlujo in Item.ListFlujosEliminados)
                        {
                            MovimientoFlujo MovimientoFlujo = iMovimientoFlujo;
                            MovimientoFlujo.Instance = InstanceEntity.Deleted;
                            BL_MovimientoFlujo.Save(ref MovimientoFlujo);
                        }
                    }
                    /* Agregar o actualizar los registros */
                    if (Item.ListFlujos != null && Item.ListFlujos.Count > 0)
                    {
                        foreach (Entities.MovimientoFlujo iMovimientoFlujo in Item.ListFlujos)
                        {
                            MovimientoFlujo MovimientoFlujo = iMovimientoFlujo;
                            MovimientoFlujo.EMPR_Codigo = Item.EMPR_Codigo;
                            if (MovimientoFlujo.Instance == InstanceEntity.Added)
                            {
                                MovimientoFlujo.AUDI_UsrCrea = Item.AUDI_UsrCrea;
                            }
                            else if (MovimientoFlujo.Instance == InstanceEntity.Modified)
                            {
                                MovimientoFlujo.AUDI_UsrMod = Item.AUDI_UsrMod;
                            }
                            MovimientoFlujo.MOVI_Codigo = Item.MOVI_Codigo;
                            m_isCorrect = BL_MovimientoFlujo.Save(ref MovimientoFlujo);
                            if (!m_isCorrect)
                            {// Item.SetMensajeError(String.Format("* No se puede grabar la Chequera Numero {0}.", _iChequera.CHEQ_Codigo)); break;
                            }
                        }
                    }

                    #endregion

                    #region [ Tipificaciones ]

                    if (Item.ListTipificacionesEliminados != null && Item.ListTipificacionesEliminados.Count > 0)
                    {
                        foreach (Entities.Tipificaciones iTipEli in Item.ListTipificacionesEliminados)
                        {
                            Tipificaciones _tipificacion = iTipEli;
                            _tipificacion.Instance = InstanceEntity.Deleted;
                            BL_Tipificaciones.Save(ref _tipificacion);
                        }
                    }

                    if (Item.ListTipificaciones != null && Item.ListTipificaciones.Count > 0)
                    {
                        foreach (Entities.Tipificaciones iTipificacion in Item.ListTipificaciones)
                        {
                            Tipificaciones _tipificacion = iTipificacion;
                            _tipificacion.EMPR_Codigo = Item.EMPR_Codigo;
                            if (_tipificacion.Instance == InstanceEntity.Added)
                            {
                                _tipificacion.AUDI_UsrCrea = Item.AUDI_UsrMod;
                            }
                            else if (_tipificacion.Instance == InstanceEntity.Modified)
                            {
                                _tipificacion.AUDI_UsrMod = Item.AUDI_UsrMod;
                            }
                            _tipificacion.MOVI_Codigo = Item.MOVI_Codigo;
                            m_isCorrect = BL_Tipificaciones.Save(ref _tipificacion);
                        }
                    }

                    #endregion


                    break;

                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted:
                    m_isCorrect = Delete(ref Item); break;
                }

                #endregion

                #region Detalles de CtaCte

                if (Item.ListDetCtaCteEliminados != null && Item.ListDetCtaCteEliminados.Count > 0)
                {
                    foreach (Entities.DetCtaCte iDetCtaCte in Item.ListDetCtaCteEliminados)
                    {
                        Entities.DetCtaCte _idetctacte = iDetCtaCte;
                        _idetctacte.Instance = InstanceEntity.Deleted;
                        BL_DetCtaCte.Save(ref _idetctacte);
                    }
                }
                if (Item.ListDetCtaCte != null && Item.ListDetCtaCte.Count > 0)
                {
                    foreach (Entities.DetCtaCte iDetCtaCte in Item.ListDetCtaCte)
                    {
                        switch (iDetCtaCte.Instance)
                        {
                        case InstanceEntity.Unchanged:
                            break;

                        case InstanceEntity.Added:
                            iDetCtaCte.AUDI_UsrCrea = x_Usuario;
                            break;

                        case InstanceEntity.Modified:
                            iDetCtaCte.AUDI_UsrMod = x_Usuario;
                            break;

                        case InstanceEntity.Deleted:
                            break;

                        default:
                            break;
                        }
                        #region Guardar el detalle de Transacciones

                        iDetCtaCte.EMPR_Codigo     = Item.EMPR_Codigo;
                        iDetCtaCte.MOVI_Codigo     = Item.MOVI_Codigo;
                        iDetCtaCte.TIPO_TabMND     = Item.ItemCuentasBancarias.TIPO_TabMND;
                        iDetCtaCte.TIPO_CodMND     = Item.ItemCuentasBancarias.TIPO_CodMND;
                        iDetCtaCte.CCCT_TipoCambio = Item.MOVI_TipoCambio;
                        iDetCtaCte.DCCT_FechaTrans = DateTime.Now;
                        String TipoMovimiento = Item.TIPO_Movimiento.TIPO_Desc2;
                        if (Item.TIPO_Movimiento.TIPO_Desc2.Equals("I"))
                        {
                            if (iDetCtaCte.TipoCtaCte.Equals("-"))
                            {
                                if (iDetCtaCte.TIPO_CodTDO.Equals(Entities.Tipos.GetTipo(Entities.Tipos.TipoTDO.NotaCredito)))
                                {
                                    Item.TIPO_Movimiento.TIPO_Desc2 = "E";
                                }
                                else
                                {
                                    Item.TIPO_Movimiento.TIPO_Desc2 = "E";
                                }
                            }
                        }
                        else if (Item.TIPO_Movimiento.TIPO_Desc2.Equals("E"))
                        {
                            if (iDetCtaCte.TipoCtaCte.Equals("-"))
                            {
                                if (iDetCtaCte.TIPO_CodTDO.Equals(Entities.Tipos.GetTipo(Entities.Tipos.TipoTDO.NotaCredito)))
                                {
                                    Item.TIPO_Movimiento.TIPO_Desc2 = "I";
                                }
                                else
                                {
                                    Item.TIPO_Movimiento.TIPO_Desc2 = "I";
                                }
                            }
                        }

                        Decimal TipoCambio = iDetCtaCte.DCCT_TipoCambio;
                        if (Item.TIPO_Movimiento.TIPO_Desc2.Equals("E"))
                        {
                            #region Movimiento de Egreso

                            /*
                             * Realizar las operaciones correspondientes para un Egreso
                             */
                            iDetCtaCte.DCCT_MontoHaber  = 0;
                            iDetCtaCte.DCCT_MontoHaberD = 0;
                            iDetCtaCte.CONS_TabTDC      = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte();
                            iDetCtaCte.CONS_CodTDC      = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte(Infrastructure.Aspect.Constants.TTipoMovimientoDetCtaCte.Pago);

                            /*
                             * Verificar la Moneda de la Cuenta Bancaria
                             */
                            if (Item.ItemCuentasBancarias.TIPO_CodMND.Equals(Infrastructure.Aspect.Constants.Util.getMoneda(TMoneda.Soles)))
                            {
                                /*
                                 * Si la Moneda de la cuenta bancaria es S/. (Nuevos Soles)
                                 * - Vericar la moneda del documento para realizar la conversión para los campos correspondientes
                                 */
                                if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Soles)))
                                {
                                    #region Realizar ajustes si es Diferido - DEBE
                                    /* Cambio - Cheques Diferidos - 02/05/2016 - Por Proceso Incompleto - El diferido debe grabarse igual que un cheque normal */
                                    if (Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.EgresosChequeDiferido)) || Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.IngresosDiferidos)))
                                    {
                                        iDetCtaCte.DCCT_PPago = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        //iDetCtaCte.DCCT_MontoDebe = 0;
                                        iDetCtaCte.DCCT_PPagoD = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        //iDetCtaCte.DCCT_MontoDebeD = 0;
                                    }
                                    else
                                    {
                                        iDetCtaCte.DCCT_PPago = 0;
                                        //iDetCtaCte.DCCT_MontoDebe = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        iDetCtaCte.DCCT_PPagoD = 0;
                                        //iDetCtaCte.DCCT_MontoDebeD = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                    }

                                    iDetCtaCte.DCCT_MontoDebe  = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    iDetCtaCte.DCCT_MontoDebeD = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                    /* Fin de Cambio - Cheques Diferidos - 02/05/2016 */
                                    #endregion
                                }
                                else if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Dolares)))
                                {
                                    #region Realizar ajustes si es Diferido - DEBE
                                    /* Cambio - Cheques Diferidos - 02/05/2016 - Por Proceso Incompleto - El diferido debe grabarse igual que un cheque normal */
                                    if (Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.EgresosChequeDiferido)) || Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.IngresosDiferidos)))
                                    {
                                        iDetCtaCte.DCCT_PPago = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        //iDetCtaCte.DCCT_MontoDebe = 0;
                                        iDetCtaCte.DCCT_PPagoD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        //iDetCtaCte.DCCT_MontoDebeD = 0;
                                    }
                                    else
                                    {
                                        iDetCtaCte.DCCT_PPago = 0;
                                        //iDetCtaCte.DCCT_MontoDebe = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        iDetCtaCte.DCCT_PPagoD = 0;
                                        //iDetCtaCte.DCCT_MontoDebeD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    }
                                    iDetCtaCte.DCCT_MontoDebe  = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                    iDetCtaCte.DCCT_MontoDebeD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    /* Fin de Cambio - Cheques Diferidos - 02/05/2016 */
                                    #endregion
                                }
                            }
                            else if (Item.ItemCuentasBancarias.TIPO_CodMND.Equals(Infrastructure.Aspect.Constants.Util.getMoneda(TMoneda.Dolares)))
                            {
                                /*
                                 * Si la Moneda de la cuenta Bancaria es en US$ (Dolares Americanos)
                                 * - Vericar la moneda del documento para realizar la conversión para los campos correspondientes
                                 */
                                if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Soles)))
                                {
                                    #region Realizar ajustes si es Diferido - DEBE
                                    /* Cambio - Cheques Diferidos - 02/05/2016 - Por Proceso Incompleto - El diferido debe grabarse igual que un cheque normal */
                                    if (Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.EgresosChequeDiferido)) || Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.IngresosDiferidos)))
                                    {
                                        iDetCtaCte.DCCT_PPago = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        //iDetCtaCte.DCCT_MontoDebe = 0;
                                        if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                        {
                                            iDetCtaCte.DCCT_PPagoD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                            //iDetCtaCte.DCCT_MontoDebeD = 0;
                                        }
                                    }
                                    else
                                    {
                                        iDetCtaCte.DCCT_PPago = 0;
                                        //iDetCtaCte.DCCT_MontoDebe = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                        {
                                            iDetCtaCte.DCCT_PPagoD = 0;
                                            //iDetCtaCte.DCCT_MontoDebeD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        }
                                    }
                                    iDetCtaCte.DCCT_MontoDebe = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                    {
                                        iDetCtaCte.DCCT_MontoDebeD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                    }
                                    /* Fin de Cambio - Cheques Diferidos - 02/05/2016 */
                                    #endregion
                                }
                                else if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Dolares)))
                                {
                                    #region Realizar ajustes si es Diferido - DEBE
                                    /* Cambio - Cheques Diferidos - 02/05/2016 - Por Proceso Incompleto - El diferido debe grabarse igual que un cheque normal */
                                    if (Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.EgresosChequeDiferido)) || Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.IngresosDiferidos)))
                                    {
                                        iDetCtaCte.DCCT_PPago = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        //iDetCtaCte.DCCT_MontoDebe = 0;
                                        iDetCtaCte.DCCT_PPagoD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        //iDetCtaCte.DCCT_MontoDebeD = 0;
                                    }
                                    else
                                    {
                                        iDetCtaCte.DCCT_PPago = 0;
                                        //iDetCtaCte.DCCT_MontoDebe = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        iDetCtaCte.DCCT_PPagoD = 0;
                                        //iDetCtaCte.DCCT_MontoDebeD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    }
                                    iDetCtaCte.DCCT_MontoDebe  = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                    iDetCtaCte.DCCT_MontoDebeD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    /* Fin de Cambio - Cheques Diferidos - 02/05/2016 */
                                    #endregion
                                }
                            }
                            #endregion
                        }
                        else if (Item.TIPO_Movimiento.TIPO_Desc2.Equals("I"))
                        {
                            #region Movimiento de Ingreso

                            /*
                             * Realizar las operaciones correspondientes para un Ingreso
                             */
                            iDetCtaCte.DCCT_MontoDebe  = 0;
                            iDetCtaCte.DCCT_MontoDebeD = 0;
                            iDetCtaCte.CONS_TabTDC     = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte();
                            iDetCtaCte.CONS_CodTDC     = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte(Infrastructure.Aspect.Constants.TTipoMovimientoDetCtaCte.Provision);

                            /*
                             * Verificar la Moneda de la Cuenta Bancaria
                             */
                            if (Item.ItemCuentasBancarias.TIPO_CodMND.Equals(Infrastructure.Aspect.Constants.Util.getMoneda(TMoneda.Soles)))
                            {
                                /*
                                 * Si la Moneda de la cuenta bancaria es S/. (Nuevos Soles)
                                 * - Vericar la moneda del documento para realizar la conversión para los campos correspondientes
                                 */
                                if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Soles)))
                                {
                                    TipoCambio = iDetCtaCte.DCCT_TipoCambio;

                                    #region Realizar ajustes si es Diferido - HABER
                                    /* Cambio - Cheques Diferidos - 02/05/2016 - Por Proceso Incompleto */
                                    if (Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.IngresosDiferidos)) || Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.EgresosChequeDiferido)))
                                    {
                                        iDetCtaCte.DCCT_PPago = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        //iDetCtaCte.DCCT_MontoHaber = 0;
                                    }
                                    else
                                    {
                                        iDetCtaCte.DCCT_PPago = 0;
                                        //iDetCtaCte.DCCT_MontoHaber = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    }
                                    iDetCtaCte.DCCT_MontoHaber = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    /* Fin de Cambio - Cheques Diferidos - 02/05/2016 */
                                    #endregion

                                    if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                    {
                                        #region Realizar ajustes si es Diferido - HABER
                                        /* Cambio - Cheques Diferidos - 02/05/2016 - Por Proceso Incompleto - El diferido debe grabarse igual que un cheque normal */
                                        if (Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.IngresosDiferidos)) || Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.EgresosChequeDiferido)))
                                        {
                                            iDetCtaCte.DCCT_PPagoD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                            //iDetCtaCte.DCCT_MontoHaberD = 0;
                                        }
                                        else
                                        {
                                            iDetCtaCte.DCCT_PPagoD = 0;
                                            //iDetCtaCte.DCCT_MontoHaberD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        }
                                        iDetCtaCte.DCCT_MontoHaberD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        /* Fin de Cambio - Cheques Diferidos - 02/05/2016 */
                                        #endregion
                                    }
                                }
                                else if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Dolares)))
                                {
                                    TipoCambio = iDetCtaCte.DCCT_TipoCambio;
                                    #region Realizar ajustes si es Diferido - HABER
                                    /* Cambio - Cheques Diferidos - 02/05/2016 - Por Proceso Incompleto - El diferido debe grabarse igual que un cheque normal */
                                    if (Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.IngresosDiferidos)) || Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.EgresosChequeDiferido)))
                                    {
                                        //iDetCtaCte.DCCT_MontoHaber = 0;
                                        //iDetCtaCte.DCCT_MontoHaberD = 0;
                                        iDetCtaCte.DCCT_PPago  = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        iDetCtaCte.DCCT_PPagoD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    }
                                    else
                                    {
                                        //iDetCtaCte.DCCT_MontoHaber = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        //iDetCtaCte.DCCT_MontoHaberD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        iDetCtaCte.DCCT_PPago  = 0;
                                        iDetCtaCte.DCCT_PPagoD = 0;
                                    }
                                    iDetCtaCte.DCCT_MontoHaber  = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                    iDetCtaCte.DCCT_MontoHaberD = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    /* Fin de Cambio - Cheques Diferidos - 02/05/2016 */
                                    #endregion
                                }
                            }
                            else if (Item.ItemCuentasBancarias.TIPO_CodMND.Equals(Infrastructure.Aspect.Constants.Util.getMoneda(TMoneda.Dolares)))
                            {
                                /*
                                 * Si la Moneda de la cuenta Bancaria es en US$ (Dolares Americanos)
                                 * - Vericar la moneda del documento para realizar la conversión para los campos correspondientes
                                 */
                                if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Soles)))
                                {
                                    TipoCambio = iDetCtaCte.DCCT_TipoCambio;
                                    #region Realizar ajustes si es Diferido - HABER
                                    /* Cambio - Cheques Diferidos - 02/05/2016 - Por Proceso Incompleto - El diferido debe grabarse igual que un cheque normal */
                                    if (Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.IngresosDiferidos)) || Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.EgresosChequeDiferido)))
                                    {
                                        iDetCtaCte.DCCT_PPago = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        //iDetCtaCte.DCCT_MontoHaber = 0;
                                        if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                        {
                                            iDetCtaCte.DCCT_PPagoD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                            //iDetCtaCte.DCCT_MontoHaberD = 0;
                                        }
                                    }
                                    else
                                    {
                                        iDetCtaCte.DCCT_PPago = 0;
                                        //iDetCtaCte.DCCT_MontoHaber = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                        if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                        {
                                            iDetCtaCte.DCCT_PPagoD = 0;
                                            //iDetCtaCte.DCCT_MontoHaberD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        }
                                    }
                                    iDetCtaCte.DCCT_MontoHaber = (iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0);
                                    if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                    {
                                        iDetCtaCte.DCCT_MontoHaberD = Math.Round(iDetCtaCte.CCCT_Pendiente.Value / TipoCambio, 2, MidpointRounding.AwayFromZero);
                                    }
                                    /* Fin de Cambio - Cheques Diferidos - 02/05/2016 */
                                    #endregion
                                }
                                else if (iDetCtaCte.TIPO_CodMND.Equals(Util.getMoneda(TMoneda.Dolares)))
                                {
                                    TipoCambio = iDetCtaCte.DCCT_TipoCambio;
                                    #region Realizar ajustes si es Diferido - HABER
                                    /* Cambio - Cheques Diferidos - 02/05/2016 - Por Proceso Incompleto - El diferido debe grabarse igual que un cheque normal */
                                    if (Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.IngresosDiferidos)) || Item.TIPO_CodMOV.Equals(Item.GetTipoMovimiento(Entities.Movimiento.TipoMovimiento.EgresosChequeDiferido)))
                                    {
                                        iDetCtaCte.DCCT_PPago = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        //iDetCtaCte.DCCT_MontoHaber = 0;
                                        if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                        {
                                            iDetCtaCte.DCCT_PPagoD = iDetCtaCte.CCCT_Pendiente.Value;
                                            //iDetCtaCte.DCCT_MontoHaberD = 0;
                                        }
                                    }
                                    else
                                    {
                                        iDetCtaCte.DCCT_PPago = 0;
                                        //iDetCtaCte.DCCT_MontoHaber = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                        if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                        {
                                            iDetCtaCte.DCCT_PPagoD = 0;
                                            //iDetCtaCte.DCCT_MontoHaberD = iDetCtaCte.CCCT_Pendiente.Value;
                                        }
                                    }
                                    iDetCtaCte.DCCT_MontoHaber = Math.Round((iDetCtaCte.CCCT_Pendiente.HasValue ? iDetCtaCte.CCCT_Pendiente.Value : 0) * TipoCambio, 2, MidpointRounding.AwayFromZero);
                                    if (iDetCtaCte.CCCT_Pendiente.HasValue)
                                    {
                                        iDetCtaCte.DCCT_MontoHaberD = iDetCtaCte.CCCT_Pendiente.Value;
                                    }
                                    /* Fin de Cambio - Cheques Diferidos - 02/05/2016 */
                                    #endregion
                                }
                            }
                            #endregion
                        }

                        /*
                         * Realizar la Operación de Grabado en la Base de datosm según la Instancia de la Clase
                         */
                        Entities.DetCtaCte _idetctacte = iDetCtaCte;
                        BL_DetCtaCte.Save(ref _idetctacte);
                        Item.TIPO_Movimiento.TIPO_Desc2 = TipoMovimiento;
                        #endregion
                    }
                    #region Liquidacion - Terminar

                    if (Item.EsLiquidacion)
                    {
                        Entities.Liquidacion _itemLiquidacion = new Liquidacion();
                        _itemLiquidacion.EMPR_Codigo = Item.EMPR_Codigo;
                        _itemLiquidacion.LIQU_Codigo = Item.Liquidacion.LIQU_Codigo;
                        _itemLiquidacion.AUDI_UsrMod = x_Usuario;
                        _itemLiquidacion.SetEstado(Liquidacion.Estado.Liquidado);
                        m_isCorrect = BL_Liquidacion.Save(ref _itemLiquidacion, Liquidacion.TOperacion.Liquidar);
                    }

                    #endregion
                }

                #region Guardar Si existe un Descuadre

                m_isCorrect = GuardarDescuadre(ref Item, x_Usuario);

                #endregion

                #endregion

                #region Grabar Flujos

                #endregion

                #region [ Generar Asiento Contable ]

                if (m_isCorrect)
                {
                    genAsientos.ItemMovimiento = Item;
                    switch (Item.Instance)
                    {
                    case InstanceEntity.Unchanged:
                        break;

                    case InstanceEntity.Added:
                        genAsientos.GenerarAsientoBD(x_Usuario);
                        //m_isCorrect = genAsientos.GenerarAsiento(x_Usuario, Item.SUCR_Codigo);
                        //if (m_isCorrect)
                        //{ genAsientos.ActualizarMovimiento(x_Usuario); }
                        break;

                    case InstanceEntity.Modified:
                        genAsientos.GenerarAsientoBD(x_Usuario);
                        //m_isCorrect = genAsientos.ActualizarAsiento(Item.AUDI_UsrMod, Item.SUCR_Codigo);
                        break;

                    case InstanceEntity.Deleted:
                        break;

                    default:
                        break;
                    }
                }

                #endregion

                if (m_isCorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            {
                DataAccessEnterpriseSQL.DARollbackTransaction();
                throw;
            }
        }