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; } }