public void ActualizarComprobanteVenta(Comprobante comprobante) { comprobante.Items.Empty(); foreach (var nuevoItem in from importe in Importes where importe.Tipo != null && importe.Tipo.ConceptoFacturacion != null select new ComprobanteItem(Session) { Concepto = importe.Tipo.ConceptoFacturacion, Cantidad = 1, PrecioUnitario = importe.Importe }) { nuevoItem.ActualizarDescripcion(); nuevoItem.ActualizarImporteTotal(); comprobante.Items.Add(nuevoItem); } comprobante.Cuotas.Empty(); foreach (var cuota in Cuotas) { var nuevaCuota = new ComprobanteCuota(Session) { Numero = cuota.Numero, Fecha = cuota.Fecha, Importe = cuota.Importe }; cuota.ComprobanteCuota = nuevaCuota; comprobante.Cuotas.Add(nuevaCuota); } //Si se llegó a este punto, desde una sesión hija (ej. modificando una cuota puntual), no se debe guardar el comprobante aún //(porque la validación podría fallar, si estamos variando el total del monto de cuotas) //Solo guardar y validar cuando se guarda la sesión principal (documento) if (!(Session is NestedUnitOfWork)) { comprobante.Save(); } }