Example #1
0
        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();
            }
        }