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