コード例 #1
0
        public static void CreateApuntesBancarios(PaymentList pagos)
        {
            List <PaymentInfo> list = new List <PaymentInfo>();

            CreditCardList tarjetas      = CreditCardList.GetList();
            Payments       pagos_tarjeta = Payments.NewList();

            foreach (PaymentInfo item in pagos)
            {
                if (!Common.EnumFunctions.NeedsCuentaBancaria(item.EMedioPago))
                {
                    continue;
                }
                if (item.Vencimiento > DateTime.Today)
                {
                    continue;
                }

                if (item.EMedioPago != EMedioPago.Tarjeta)
                {
                    //Apunte bancario del pagaré, talón, etc..
                    BankLine.InsertItem(item, true);

                    list.Add(item);
                }
                else
                {
                    Payment pago_tarjeta = pagos_tarjeta.GetItemByTarjetaCredito(item.OidTarjetaCredito, item.Vencimiento);

                    if (pago_tarjeta == null)
                    {
                        pago_tarjeta = pagos_tarjeta.NewItem(item, ETipoPago.ExtractoTarjeta);
                        TransactionPayment pf = pago_tarjeta.Operations.NewItem(pago_tarjeta, item, item.ETipoPago);
                        pf.Cantidad = item.Total;
                        pago_tarjeta.EEstadoPago = EEstado.Pagado;
                    }
                    else
                    {
                        pago_tarjeta.Importe         += item.Importe;
                        pago_tarjeta.GastosBancarios += item.GastosBancarios;
                        TransactionPayment pf = pago_tarjeta.Operations.NewItem(pago_tarjeta, item, item.ETipoPago);
                        pf.Cantidad = item.Total;
                    }

                    list.Add(item);
                }
            }

            Payments pagos_fraccionados = Payments.NewList();

            pagos_fraccionados.OpenNewSession();

            //Apunte bancario de la tarjeta
            foreach (Payment item in pagos_tarjeta)
            {
                Payment root = pagos_fraccionados.NewItem(item.GetInfo(false), ETipoPago.FraccionadoTarjeta);
                root.Pagos.AddItem(item);

                //if (item.Importe != 0)
                //    MovimientoBanco.InsertItemTarjeta(item, tarjetas.GetItem(item.OidTarjetaCredito));
            }

            pagos_fraccionados.BeginTransaction();
            pagos_fraccionados.Save();

            Payment.UpdatePagadoFromList(list, true);
        }