コード例 #1
0
 private void AbrirCtaCte()
 {
     try
     {
         if (BSItems.Current != null)
         {
             Entities.DetCtaCte _detctacte = (BSItems.Current as Entities.DetCtaCte);
             Presenter.AbriCtaCte(_detctacte);
         }
     }
     catch (Exception ex)
     { Infrastructure.WinForms.Controls.Dialogos.MostrarMensajeError(Presenter.Title, "Ha ocurrido un error al Abrir Cta. Cte. del Item.", ex); }
 }
コード例 #2
0
 /// <summary>
 /// Abrir registro de cuenta corriente
 /// </summary>
 /// <param name="_detctacte"></param>
 public void AbriCtaCte(Entities.DetCtaCte _detctacte)
 {
     try
     {
         CAJ012IngresoLibrePresenter CAJ012_presenter;
         CAJ012_presenter = new CAJ012IngresoLibrePresenter(ContainerService, CAJ012IngresoLibrePresenter.TipoInicio.MostraCtaCte);
         CAJ012_presenter.Load();
         CAJ012_presenter.ItemLView             = new CtaCte();
         CAJ012_presenter.ItemLView.EMPR_Codigo = _detctacte.EMPR_Codigo;
         CAJ012_presenter.ItemLView.CCCT_Codigo = _detctacte.CCCT_Codigo;
         CAJ012_presenter.Editar();
     }
     catch (Exception)
     { throw; }
 }
コード例 #3
0
        public Boolean SaveExtornar(ref Movimiento Item)
        {
            try
            {
                Boolean m_isCorrect = true;

                DataAccessEnterpriseSQL.DABeginTransaction();

                Item.MOVI_CodPadre = Item.MOVI_Codigo;
                Item.SetEstado(Movimiento.Estado.Ingresado);

                Item.Instance = InstanceEntity.Added;
                m_isCorrect   = Insert(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_CodPadre, 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_MontoHaber  = iDetCtaCte.DCCT_MontoDebe;
                            iDetCtaCte.DCCT_MontoDebe   = 0;
                            iDetCtaCte.DCCT_MontoHaberD = iDetCtaCte.DCCT_MontoDebeD;
                            iDetCtaCte.DCCT_MontoDebeD  = 0;
                        }
                        else 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;
                        }

                        //iDetCtaCte.MOVI_Codigo = Item.MOVI_Codigo;
                        //if (Item.TIPO_Movimiento.TIPO_Desc2.Equals("I"))
                        //{
                        //   iDetCtaCte.DCCT_MontoDebe = iDetCtaCte.DCCT_MontoHaber;
                        //   iDetCtaCte.DCCT_MontoHaber = 0;
                        //}
                        //else if (Item.TIPO_Movimiento.TIPO_Desc2.Equals("E"))
                        //{
                        //   iDetCtaCte.DCCT_MontoHaber = iDetCtaCte.DCCT_MontoDebe;
                        //   iDetCtaCte.DCCT_MontoDebe = 0;
                        //}
                        iDetCtaCte.Instance     = InstanceEntity.Added;
                        iDetCtaCte.AUDI_UsrCrea = Item.AUDI_UsrCrea;
                        iDetCtaCte.CONS_TabTDC  = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte();
                        iDetCtaCte.CONS_CodTDC  = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte(Infrastructure.Aspect.Constants.TTipoMovimientoDetCtaCte.Extorno);
                        //iDetCtaCte.DCCT_TipoPago =
                        Entities.DetCtaCte _detCtaCte = iDetCtaCte;
                        BL_DetCtaCte.Save(ref _detCtaCte);
                    }
                }
                if (m_isCorrect)
                {
                    DataAccessEnterpriseSQL.DACommitTransaction();
                }
                else
                {
                    DataAccessEnterpriseSQL.DARollbackTransaction();
                }
                return(m_isCorrect);
            }
            catch (Exception)
            {
                DataAccessEnterpriseSQL.DARollbackTransaction();
                throw;
            }
        }
コード例 #4
0
ファイル: BLPlanillas.cs プロジェクト: ferarell/DelfinGroup
        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;
            }
        }
コード例 #5
0
        private void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                Int32?ENCT_Codigo = null; if (txaENTC_Codigo.SelectedItem != null)
                {
                    ENCT_Codigo = txaENTC_Codigo.SelectedItem.ENTC_Codigo;
                }
                DateTime?Fecha = null; if (dtpMOVI_FecEmision.NSFecha.HasValue)
                {
                    Fecha = dtpMOVI_FecEmision.NSFecha;
                }
                String TipoDocumento = null; if (cmbTipoDocumento.ConstantesSelectedItem != null)
                {
                    TipoDocumento = cmbTipoDocumento.ConstantesSelectedItem.CONS_CodTipo;
                }
                String MBL = null; if (!String.IsNullOrEmpty(txtMBL.Text))
                {
                    MBL = txtMBL.Text;
                }
                String HBL = null; if (!String.IsNullOrEmpty(txtHBL.Text))
                {
                    HBL = txtHBL.Text;
                }

                String F_TIPO_CodTDO = null; if (cmbTIPO_CodTDO.TiposSelectedItem != null)
                {
                    F_TIPO_CodTDO = cmbTIPO_CodTDO.TiposSelectedItem.TIPO_CodTipo;
                }
                String F_CCCT_Serie = null; if (!String.IsNullOrEmpty(txtCCCT_Serie.Text))
                {
                    F_CCCT_Serie = txtCCCT_Serie.Text;
                }
                String F_CCCT_Numero = null; if (!String.IsNullOrEmpty(txtCCCT_Numero.Text))
                {
                    F_CCCT_Numero = txtCCCT_Numero.Text;
                }


                Boolean x_TipoDocumento = true;
                if (TipoMovimiento == TipoMovimientoCtaCte.Egresos)
                {
                    if (String.IsNullOrEmpty(TipoDocumento))
                    {
                        x_TipoDocumento = false;
                    }
                }
                //grdItemsDocumentos.Columns["MODULO"].IsVisible = x_TipoDocumento;

                if (ENCT_Codigo.HasValue && Fecha.HasValue && x_TipoDocumento)
                {
                    ObservableCollection <Infrastructure.Aspect.DataAccess.DataAccessFilterSQL> _listFilters = new ObservableCollection <Infrastructure.Aspect.DataAccess.DataAccessFilterSQL>();
                    _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@psinEMPR_Codigo", FilterValue = Delfin.Controls.Entorno.ItemEmpresa.EMPR_Codigo, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Int16, FilterSize = 2
                    });
                    _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@pintENTC_Codigo", FilterValue = ENCT_Codigo, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Int32, FilterSize = 4
                    });
                    _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@pdtmCCCT_FechaEmision", FilterValue = Fecha, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.DateTime, FilterSize = 8
                    });
                    _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@TipoDocumento", FilterValue = TipoDocumento, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Varchar, FilterSize = 8
                    });
                    _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@HBL", FilterValue = HBL, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Varchar, FilterSize = 50
                    });
                    _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@MBL", FilterValue = MBL, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Varchar, FilterSize = 50
                    });

                    _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@pchrTIPO_CodTDO", FilterValue = F_TIPO_CodTDO, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Varchar, FilterSize = 3
                    });
                    _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@pvchCCCT_Serie", FilterValue = F_CCCT_Serie, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Varchar, FilterSize = 20
                    });
                    _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                    {
                        FilterName = "@pvchCCCT_Numero", FilterValue = F_CCCT_Numero, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Varchar, FilterSize = 20
                    });

                    if (txaNVIA_Codigo.Value != null)
                    {
                        _listFilters.Add(new Infrastructure.Aspect.DataAccess.DataAccessFilterSQL()
                        {
                            FilterName = "@pintNVIA_Codigo", FilterValue = (txaNVIA_Codigo.Value as Entities.NaveViaje).NVIA_Codigo, FilterType = Infrastructure.Aspect.DataAccess.DataAccessFilterTypes.Int32, FilterSize = 4
                        });
                    }

                    String _procedure = "CAJ_CCCTSS_TodosPendientes";
                    switch (TipoMovimiento)
                    {
                    case TipoMovimientoCtaCte.Ingresos:
                        _procedure = "CAJ_CCCTSS_TodosPendientesIngresos";
                        break;

                    case TipoMovimientoCtaCte.Egresos:
                        _procedure = "CAJ_CCCTSS_TodosPendientesEgresos";
                        if (cmbTipoDocumento.ConstantesSelectedItem.CONS_CodTipo.Equals("LI"))
                        {
                            FormatGridDocumentos(CAJ002IngresosEgresosPresenter.TBusqueda.Liquidaciones);
                            Presenter.TipoBusqueda       = CAJ002IngresosEgresosPresenter.TBusqueda.Liquidaciones;
                            Presenter.Item.EsLiquidacion = true;
                        }
                        else
                        {
                            FormatGridDocumentos(CAJ002IngresosEgresosPresenter.TBusqueda.Base);
                            Presenter.TipoBusqueda       = CAJ002IngresosEgresosPresenter.TBusqueda.Base;
                            Presenter.Item.EsLiquidacion = false;
                        }
                        break;
                    }
                    Items = Presenter.Client.GetAllDetCtaCteFilter(_procedure, _listFilters);

                    if (Presenter.Item.ListDetCtaCte != null && Presenter.Item.ListDetCtaCte.Count > 0)
                    {
                        foreach (Entities.DetCtaCte idetCtaCte in Presenter.Item.ListDetCtaCte)
                        {
                            Entities.DetCtaCte _delete =
                                Items.Where(Del => Del.CCCT_Codigo == idetCtaCte.CCCT_Codigo).FirstOrDefault();
                            if (_delete != null)
                            {
                                Items.Remove(_delete);
                            }
                        }
                    }
                    BSItems.DataSource = Items;
                    BSItems.ResetBindings(true);
                    grdItemsDocumentos.BestFitColumns();
                }
                else
                {
                    String msg = "";
                    if (!ENCT_Codigo.HasValue)
                    {
                        msg += "* Seleccione una Entidad" + Environment.NewLine;
                    }
                    if (!Fecha.HasValue)
                    {
                        msg += "* Seleccione una fecha" + Environment.NewLine;
                    }
                    if (String.IsNullOrEmpty(TipoDocumento))
                    {
                        msg += "* Seleccione el tipo de busqueda" + Environment.NewLine;
                    }
                    Infrastructure.WinForms.Controls.Dialogos.MostrarMensajeInformacion(Presenter.Title, "No puede realizar la busqueda, faltan datos, haga click en el boton detalles", msg);
                }
            }
            catch (Exception ex)
            { Infrastructure.WinForms.Controls.Dialogos.MostrarMensajeError(Presenter.Title, "Ha Ocurrido al consultar", ex); }
        }
コード例 #6
0
        /// <summary>
        /// Permite guardar el documento nota de credito, realizando las respectivas operaciones para completar el proceso en finanzas
        /// </summary>
        /// <param name="Item"></param>
        /// <returns></returns>
        public Boolean SaveNotaCredito(ref DocsVta Item)
        {
            try
            {
                Boolean m_isCorrect = true;
                String  x_usuario   = "";
                Infrastructure.Aspect.DataAccess.DataAccessEnterpriseSQL.DABeginTransaction();
                switch (Item.Instance)
                {
                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added:
                    m_isCorrect = InsertNotaCredito(ref Item);
                    x_usuario   = Item.AUDI_UsrCrea;
                    /* CtaCte */
                    getCtaCte(ref Item);
                    Item.ItemCtaCte.AUDI_UsrCrea       = x_usuario;
                    Item.ItemCtaCte.Instance           = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added;
                    Item.ItemDetCtaCte.AUDI_UsrCrea    = x_usuario;
                    Item.ItemDetCtaCte.Instance        = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added;
                    Item.ItemDetCtaCteFactura.Instance = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added;
                    break;

                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified:
                    m_isCorrect = UpdateNotaCredito(ref Item);
                    x_usuario   = Item.AUDI_UsrMod;
                    getDocsVta(ref Item);
                    if (Item.ItemCtaCte != null)
                    {
                        getCtaCte(ref Item);
                        Item.ItemCtaCte.AUDI_UsrMod    = x_usuario;
                        Item.ItemDetCtaCte.AUDI_UsrMod = x_usuario;
                    }
                    Item.ItemDetCtaCteFactura.AUDI_UsrMod = x_usuario;
                    if (Item.ItemDetCtaCteFactura.Instance != Infrastructure.Aspect.BusinessEntity.InstanceEntity.Added)
                    {
                        Item.ItemDetCtaCteFactura.Instance = Infrastructure.Aspect.BusinessEntity.InstanceEntity.Modified;
                    }
                    break;

                case Infrastructure.Aspect.BusinessEntity.InstanceEntity.Deleted:
                    m_isCorrect = Delete(ref Item); break;
                }
                /* CtaCte */
                Entities.CtaCte _itemCtaCte = Item.ItemCtaCte;
                if (_itemCtaCte != null && BL_CtaCte.Save(ref _itemCtaCte))
                {
                    Entities.DetCtaCte _itemDetCtaCte = Item.ItemDetCtaCte;
                    _itemDetCtaCte.CCCT_Codigo         = _itemCtaCte.CCCT_Codigo;
                    _itemDetCtaCte.DCCT_MontoDebe      = 0;
                    _itemDetCtaCte.DCCT_MontoDebeD     = 0;
                    _itemDetCtaCte.DCCT_MontoHaber     = Item.DOCV_ValorVtaTotal;
                    _itemDetCtaCte.DCCT_MontoHaberD    = Item.DOCV_ValorVtaTotalD;
                    _itemDetCtaCte.CONS_TabTDC         = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte();
                    _itemDetCtaCte.CONS_CodTDC         = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte(Infrastructure.Aspect.Constants.TTipoMovimientoDetCtaCte.Provision);
                    _itemDetCtaCte.DCCT_TipoCambio     = Item.DOCV_TipoCambio;
                    _itemDetCtaCte.TIPO_CodMND         = Item.TIPO_CodMND;
                    _itemDetCtaCte.TIPO_TabMND         = Item.TIPO_TabMND;
                    _itemDetCtaCte.DCCT_FechaTrans     = Item.DOCV_FechaEmision.Value;
                    _itemDetCtaCte.CCCT_CodReferencia  = null;
                    _itemDetCtaCte.DCCT_ItemReferencia = null;

                    m_isCorrect        = BL_DetCtaCte.Save(ref _itemDetCtaCte);
                    Item.ItemDetCtaCte = _itemDetCtaCte;
                }

                /* Canjes en la Factura *
                 *
                 * if (m_isCorrect && Item.ItemDetCtaCteFactura.CCCT_Pendiente.HasValue && Item.ItemDetCtaCteFactura.CCCT_Pendiente > 0 && Item.ItemDetCtaCte != null)
                 * {
                 * Entities.DetCtaCte _itemDetCtaCte = Item.ItemDetCtaCteFactura;
                 * _itemDetCtaCte.DCCT_MontoDebe = 0;
                 * _itemDetCtaCte.DCCT_MontoDebeD = 0;
                 * _itemDetCtaCte.DCCT_MontoHaber = Item.DOCV_ValorVtaTotal;
                 * _itemDetCtaCte.DCCT_MontoHaberD = Item.DOCV_ValorVtaTotalD;
                 * _itemDetCtaCte.CONS_TabTDC = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte();
                 * _itemDetCtaCte.CONS_CodTDC = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte(Infrastructure.Aspect.Constants.TTipoMovimientoDetCtaCte.Canje);
                 * _itemDetCtaCte.DCCT_TipoCambio = Item.DOCV_TipoCambio;
                 * _itemDetCtaCte.TIPO_CodMND = Item.TIPO_CodMND;
                 * _itemDetCtaCte.TIPO_TabMND = Item.TIPO_TabMND;
                 * _itemDetCtaCte.DCCT_FechaTrans = Item.DOCV_FechaEmision.Value;
                 * _itemDetCtaCte.CCCT_CodReferencia = Item.ItemCtaCte.CCCT_Codigo;
                 * _itemDetCtaCte.AUDI_UsrCrea = x_usuario;
                 *
                 * m_isCorrect = BL_DetCtaCte.Save(ref _itemDetCtaCte);
                 * Item.ItemDetCtaCteFactura = _itemDetCtaCte;
                 * }
                 *
                 * if (m_isCorrect && Item.ItemDetCtaCteFactura.CCCT_Pendiente.HasValue && Item.ItemDetCtaCteFactura.CCCT_Pendiente > 0 && Item.ItemDetCtaCte!= null)
                 * {
                 * Entities.DetCtaCte _itemDetCtaCte = Item.ItemDetCtaCte;
                 * _itemDetCtaCte.DCCT_MontoDebe = Item.DOCV_ValorVtaTotal;
                 * _itemDetCtaCte.DCCT_MontoDebeD = Item.DOCV_ValorVtaTotalD;
                 * _itemDetCtaCte.DCCT_MontoHaber = 0;
                 * _itemDetCtaCte.DCCT_MontoHaberD = 0;
                 * _itemDetCtaCte.CONS_TabTDC = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte();
                 * _itemDetCtaCte.CONS_CodTDC = Infrastructure.Aspect.Constants.Util.GetTTipoMovimientoDetCtaCte(Infrastructure.Aspect.Constants.TTipoMovimientoDetCtaCte.Canje);
                 * _itemDetCtaCte.DCCT_TipoCambio = Item.DOCV_TipoCambio;
                 * _itemDetCtaCte.TIPO_CodMND = Item.TIPO_CodMND;
                 * _itemDetCtaCte.TIPO_TabMND = Item.TIPO_TabMND;
                 * _itemDetCtaCte.CCCT_CodReferencia = Item.ItemDetCtaCteFactura.CCCT_Codigo;
                 * _itemDetCtaCte.DCCT_ItemReferencia = Item.ItemDetCtaCteFactura.DCCT_Item;
                 * _itemDetCtaCte.DCCT_FechaTrans = Item.DOCV_FechaEmision.Value;
                 * _itemDetCtaCte.AUDI_UsrCrea = x_usuario;
                 *
                 * m_isCorrect = BL_DetCtaCte.Save(ref _itemDetCtaCte, DetCtaCte.TInterfazDetCtaCte.Canje);
                 * }
                 */
                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; }
        }
コード例 #7
0
ファイル: BLMovimiento.cs プロジェクト: ferarell/DelfinGroup
        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;
            }
        }