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