Exemplo n.º 1
0
        public DocumentoVenta DocumentoVentaGrabar(DocumentoVenta datosGraba)
        {
            VentaRepository repository = new VentaRepository();
            DocumentoVenta  dato;

            int _id = datosGraba.Id;

            if (_id == -1)
            {
                dato = new DocumentoVenta();
                dato.TipoComprobante = datosGraba.TipoComprobante;
                dato.Numero          = repository.ObtenerProximoNumero(datosGraba.TipoComprobante.Id);
            }
            else
            {
                dato = repository.Obtener(_id);
            }

            dato.IdEmpresa                   = datosGraba.IdEmpresa;
            dato.Usuario                     = this.ObtenerObjeto <Cliente>(datosGraba.Usuario.Id);
            dato.Cliente                     = this.ObtenerObjeto <Cliente>(datosGraba.Cliente.Id);
            dato.IdPedido                    = datosGraba.IdPedido;
            dato.NumeroPedido                = datosGraba.NumeroPedido;
            dato.Letra                       = datosGraba.Letra;
            dato.Sucursal                    = datosGraba.Sucursal;
            dato.Fecha                       = datosGraba.Fecha;
            dato.Vencimiento                 = datosGraba.Vencimiento;
            dato.Gravado                     = datosGraba.Gravado;
            dato.Descuento                   = datosGraba.Descuento;
            dato.PorcentajeIVA               = datosGraba.PorcentajeIVA;
            dato.IVA                         = datosGraba.IVA;
            dato.Total                       = datosGraba.Total;
            dato.Pendiente                   = datosGraba.Pendiente;
            dato.Comision                    = datosGraba.Comision;
            dato.Efectivo                    = datosGraba.Efectivo;
            dato.EfectivoCotizaDolar         = datosGraba.EfectivoCotizaDolar;
            dato.Dolares                     = datosGraba.Dolares;
            dato.DolaresCotizaDolar          = datosGraba.DolaresCotizaDolar;
            dato.Euros                       = datosGraba.Euros;
            dato.EurosCotizaDolar            = datosGraba.EurosCotizaDolar;
            dato.Cheques                     = datosGraba.Cheques;
            dato.ChequesCotizaDolar          = datosGraba.ChequesCotizaDolar;
            dato.Tarjeta                     = datosGraba.Tarjeta;
            dato.TarjetaCotizaDolar          = datosGraba.TarjetaCotizaDolar;
            dato.MercadoPago                 = datosGraba.MercadoPago;
            dato.MercadoPagoCotizaDolar      = datosGraba.MercadoPagoCotizaDolar;
            dato.DepositoTransferencia       = datosGraba.DepositoTransferencia;
            dato.DepositoTransferCotizaDolar = datosGraba.DepositoTransferCotizaDolar;
            dato.RetencionIVA                = datosGraba.RetencionIVA;
            dato.RetencionGanancia           = datosGraba.RetencionGanancia;
            dato.RetencionIngBrutos          = datosGraba.RetencionIngBrutos;

            repository.Actualizar(dato);

            if (datosGraba.Observaciones != null)
            {
                datosGraba.Observaciones.IdVenta = dato.Id;
                dato.Observaciones = this.DocumentoVentaObservacionesGrabar(datosGraba.Observaciones);
            }

            if (datosGraba.Items != null && datosGraba.Items.Count > 0)
            {
                if (dato.Items == null)
                {
                    dato.Items = new List <DocumentoVentaItem>();
                }

                datosGraba.Items.ToList <DocumentoVentaItem>()
                .ForEach(delegate(DocumentoVentaItem item)
                {
                    item.IdVenta = dato.Id;
                    DocumentoVentaItem docItem = this.DocumentoVentaItemGrabar(item);

                    dato.Gravado = dato.Gravado + docItem.Precio;
                });

                dato       = this.CalcularTotales(dato);
                dato.Items = this.Listar <DocumentoVentaItem>("IdVenta", dato.Id).ToList <DocumentoVentaItem>();
            }


            return(dato);
        }