Ejemplo n.º 1
0
        public void UpdateSaldo()
        {
            if (Items.Count == 0)
            {
                return;
            }

            BankAccountList cuentas = BankAccountList.GetList(false);
            BankAccountInfo cuenta;

            foreach (BankAccountInfo item in cuentas)
            {
                item.SaldoParcial = item.SaldoInicial;
            }

            foreach (BankLineInfo item in Items.Reverse())
            {
                if (item.EEstado == EEstado.Anulado)
                {
                    item.Saldo = 0;
                }
                else
                {
                    cuenta = cuentas.GetItem(item.OidCuenta);
                    if (cuenta != null)
                    {
                        cuenta.SaldoParcial += item.Importe;
                    }
                    item.Saldo = (cuenta != null) ? cuenta.SaldoParcial : item.Importe;
                }
            }
        }
        protected string GetPaymentAccount(PaymentInfo payment)
        {
            string cuenta = string.Empty;
            string info   = string.Empty;

            try
            {
                switch (payment.EMedioPago)
                {
                case EMedioPago.Efectivo:
                {
                    CashInfo caja = CashInfo.Get(1);
                    cuenta = caja.CuentaContable;
                    info   = String.Format(Resources.Messages.CASH_BOOK_ACCOUNT_NOT_FOUND, caja.Codigo, caja.Nombre);
                }
                break;

                case EMedioPago.Tarjeta:
                {
                    CreditCardInfo  tarjeta = CreditCardInfo.Get(payment.OidTarjetaCredito);
                    BankAccountInfo cb      = _bank_accounts.GetItem(payment.OidCuentaBancaria);
                    cuenta = (tarjeta.ETipoTarjeta == ETipoTarjeta.Credito) ? tarjeta.CuentaContable : cb.CuentaContable;
                    info   = String.Format(Resources.Messages.CREDIT_CARD_BOOK_ACCOUNT_NOT_FOUND, tarjeta.Numeracion, tarjeta.Nombre);
                }
                break;

                case EMedioPago.CompensacionFactura:
                {
                    IAcreedorInfo provider = _providers.GetItem(payment.OidAgente, payment.ETipoAcreedor);
                    cuenta = provider.CuentaContable;
                    info   = String.Format(Resources.Messages.PROVIDER_BOOK_ACCOUNT_NOT_FOUND, provider.Codigo, provider.Nombre);
                }
                break;

                case EMedioPago.Pagare:

                    if (payment.EEstadoPago == EEstado.Pagado)
                    {
                        BankAccountInfo cb = _bank_accounts.GetItem(payment.OidCuentaBancaria);
                        cuenta = cb.CuentaContable;
                        info   = String.Format(Resources.Messages.BANK_ACCOUNT_BOOK_ACCOUNT_NOT_FOUND, cb.Valor, cb.Entidad);
                    }
                    else
                    {
                        cuenta = GetFinancialCashPaymentsAccount(payment.Vencimiento);
                    }
                    break;

                default:
                {
                    BankAccountInfo cb = _bank_accounts.GetItem(payment.OidCuentaBancaria);
                    cuenta = cb.CuentaContable;
                    info   = String.Format(Resources.Messages.BANK_ACCOUNT_BOOK_ACCOUNT_NOT_FOUND, cb.Valor, cb.Entidad);
                }
                break;
                }
            }
            catch (Exception ex)
            {
                if (ex is iQException)
                {
                    throw ex;
                }
                else
                {
                    throw new iQException("El pago nº " + payment.Codigo + " no tiene cuenta bancaria asociada");
                }
            }

            if (cuenta == string.Empty)
            {
                throw new iQException(info);
            }

            return(Convert.ToInt64(cuenta).ToString());           //Por algún motivo hay cuentas guardadas con un salto de línea al final y da problemas al exportar a contawin
        }