public DocumentoVenta DocumentoVentaItemEliminar(DocumentoVentaItem docItem) { RepositoryGenerico <DocumentoVentaItem> repository = new RepositoryGenerico <DocumentoVentaItem>(); ServiciosProductos servProductos = new ServiciosProductos(); DocumentoVentaItem dato = repository.Obtener(docItem.Id); repository.Eliminar(dato); DocumentoVenta docVenta = this.DocumentoVentaObtener(docItem.IdVenta); if (docItem.IdPedidoItemProducto <= 0 && docItem.IdProductoStock > 0) { bool?_descuentaStock = null; if (docVenta.TipoComprobante.Id == (int)TIPOS_COMPROBANTE.NOTA_DE_PEDIDO_) { _descuentaStock = false; } else if (docVenta.TipoComprobante.Id == (int)TIPOS_COMPROBANTE.NOTA_DE_CREDITO_) { _descuentaStock = true; } if (_descuentaStock.HasValue) { servProductos.ProductoStockActualizarStock(docItem.IdProductoStock, docItem.Cantidad, _descuentaStock.Value); } } return(this.CalcularTotales(docVenta)); }
public IHttpActionResult EliminarItem([FromBody] DocumentoVentaItem docItem) { try { ServiciosVentas servicio = new ServiciosVentas(); DocumentoVenta resp = servicio.DocumentoVentaItemEliminar(docItem); if (resp == null) { return(NotFound()); } LoggerHelper.LogInfo(System.Reflection.MethodBase.GetCurrentMethod(), JsonConvert.SerializeObject(resp)); return(Ok(resp)); } catch (ApplicationException ex) { LoggerHelper.LogError(MethodBase.GetCurrentMethod(), ex); return(BadRequest(ex.Message)); } catch (Exception ex) { LoggerHelper.LogError(MethodBase.GetCurrentMethod(), ex); return(BadRequest("El documento de venta no se pudo actualizar.")); } }
public DocumentoVentaItem DocumentoVentaItemGrabar(DocumentoVentaItem datosGraba) { RepositoryGenerico <DocumentoVentaItem> repository = new RepositoryGenerico <DocumentoVentaItem>(); DocumentoVentaItem dato; int _id = datosGraba.Id; if (_id == -1) { dato = new DocumentoVentaItem(); } else { dato = repository.Obtener(_id); } dato.IdVenta = datosGraba.IdVenta; dato.NroItem = datosGraba.NroItem; dato.IdProductoStock = datosGraba.IdProductoStock; dato.IdPedidoItemProducto = datosGraba.IdPedidoItemProducto; dato.Descripcion = datosGraba.Descripcion; dato.Cantidad = datosGraba.Cantidad; dato.PrecioUnitario = datosGraba.PrecioUnitario; dato.Precio = datosGraba.Precio; repository.Actualizar(dato); return(dato); }
public IDictionary ImprimirDatosNotaPedido(int idVenta) { IDictionary datos = new Hashtable(); DocumentoVenta docVenta = this.DocumentoVentaObtener(idVenta); if (docVenta == null) { throw new ApplicationException("No existe Nota de Pedido"); } DocumentoVentaItem itemDtoOculto = docVenta.Items.FirstOrDefault(item => item.Descripcion.EndsWith("[NO SE IMPRIME]")); List <DocumentoVentaItem> listadoItems = docVenta.Items.ToList <DocumentoVentaItem>() .FindAll(item => item != itemDtoOculto) .ToList <DocumentoVentaItem>(); decimal subtotal = docVenta.Gravado; decimal total = docVenta.Total; if (itemDtoOculto != null) { subtotal = docVenta.Gravado + (itemDtoOculto.Precio * -1); total = docVenta.Total + (itemDtoOculto.Precio * -1); } datos.Add("DescripcionComprobante", docVenta.TipoComprobante.Descripcion); datos.Add("Numero", string.Format("{0:00000}", docVenta.Numero)); datos.Add("Fecha", string.Format("{0}", string.Format("{0:dd/MM/yyy}", docVenta.Fecha))); datos.Add("NombreCliente", string.Format("{0} - {1} {2}", docVenta.Cliente.Id.ToString(), docVenta.Cliente.Nombre, docVenta.Cliente.Apellido)); datos.Add("NombreFantasia", docVenta.Cliente.NombreFantasia.ConvertirString()); datos.Add("RazonSocial", docVenta.Cliente.RazonSocial.ConvertirString()); datos.Add("CodigoCliente", string.Format("{0:0000}", docVenta.Cliente.Id)); datos.Add("ListadoItems", listadoItems); datos.Add("NroPedido", string.Format("{0:00000}", docVenta.NumeroPedido > 0 ? docVenta.NumeroPedido : 0)); datos.Add("Direccion", docVenta.Cliente.Direccion.ConvertirString()); datos.Add("Localidad", docVenta.Cliente.Localidad.ConvertirString()); datos.Add("Provincia", docVenta.Cliente.Provincia != null ? docVenta.Cliente.Provincia.Descripcion : string.Empty); datos.Add("CodigoPostal", docVenta.Cliente.CodigoPostal.ConvertirString()); datos.Add("Telefono", docVenta.Cliente.Celular.ConvertirString()); datos.Add("Email", docVenta.Cliente.Email); datos.Add("SituacionIVA", docVenta.Cliente.SituacionIVA != null ? docVenta.Cliente.SituacionIVA.Descripcion : string.Empty); datos.Add("Subtotal", string.Format("{0:#,##0.00}", subtotal)); datos.Add("Descuento", string.Format("{0:#,##0.00}", docVenta.Descuento)); datos.Add("ImprimirSubtotal", string.Format("{0}", docVenta.Descuento != 0 ? 1 : 0)); datos.Add("Total", string.Format("{0:#,##0.00}", total)); datos.Add("TextoPiePagina", string.Empty); return(datos); }
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); }
public DocumentoVenta DocumentoVentaFacturarPedido(DocumentoVenta dato) { ServiciosProductos servProductos = new ServiciosProductos(); ServiciosPedido servPedido = new ServiciosPedido(); VentaRepository repository = new VentaRepository(); if (dato.Items == null) { dato.Items = new List <DocumentoVentaItem>(); } Pedido pedido = servPedido.PedidoObtener(dato.IdPedido); pedido.Items.ToList <PedidoItem>() .OrderBy(item => item.Producto.Ubicacion).ToList <PedidoItem>() .ForEach(delegate(PedidoItem pi) { decimal _precioUnitario = 0; if (pi.Producto.PrecioPorPeso) { _precioUnitario = pi.Precio * pi.Producto.Peso; } else { _precioUnitario = pi.Precio; } if (pi.Cantidad == 0) { // si la cantidad esta en 0 lo mismo se genera el item de la factura en 0 // para mantener la numeracion de los items string _descripcion = string.Format("{0} {1} - Código: {2} ", pi.Producto.DescripcionCategoria, pi.Producto.DescripcionSubcategoria, pi.Producto.Codigo.ToString()); DocumentoVentaItem dvItem = new DocumentoVentaItem() { Id = -1, IdVenta = dato.Id, NroItem = dato.Items.Count + 1, Descripcion = _descripcion, IdProductoStock = pi.Producto.ProductoStock[0].Id, IdPedidoItemProducto = -1, Cantidad = 0, PrecioUnitario = _precioUnitario, Precio = 0 }; dato.Items.Add(dvItem); } else { pi.ItemProductos.ToList <PedidoItemProducto>() .ForEach(delegate(PedidoItemProducto pip) { if (pip.Cantidad > 0) { string _descripcion = string.Format("{0} {1} - Código: {2} - {3}", pi.Producto.DescripcionCategoria, pi.Producto.DescripcionSubcategoria, pi.Producto.Codigo.ToString(), pip.Medida.Observaciones); DocumentoVentaItem dvItem = new DocumentoVentaItem() { Id = -1, IdVenta = dato.Id, NroItem = dato.Items.Count + 1, Descripcion = _descripcion, IdProductoStock = pip.IdProductoStock, IdPedidoItemProducto = pip.Id, Cantidad = pip.Cantidad, PrecioUnitario = _precioUnitario, Precio = pip.Cantidad * _precioUnitario }; dato.Items.Add(dvItem); } }); } }); if (pedido.Cliente.ComisionApp > 0 && pedido.NumeroPedidoMinorista > 0) { DocumentoVentaItem dvItem = new DocumentoVentaItem() { Id = -1, IdVenta = dato.Id, NroItem = dato.Items.Count + 1, Descripcion = string.Format("Comisión APP Tienda WEB {0}%", pedido.Cliente.ComisionApp), IdProductoStock = -1, IdPedidoItemProducto = -1, Cantidad = 1, PrecioUnitario = (pedido.Total * pedido.Cliente.ComisionApp) / 100, Precio = (pedido.Total * pedido.Cliente.ComisionApp) / 100 }; dato.Items.Add(dvItem); } if (pedido.Cliente.DescuentoOculto > 0) { decimal descuento = ((pedido.Total * pedido.Cliente.DescuentoOculto) / 100) * -1; DocumentoVentaItem dvItem = new DocumentoVentaItem() { Id = -1, IdVenta = dato.Id, NroItem = dato.Items.Count + 1, Descripcion = string.Format("Descuento cliente {0}% [NO SE IMPRIME]", pedido.Cliente.DescuentoOculto), IdProductoStock = -1, IdPedidoItemProducto = -1, Cantidad = 1, PrecioUnitario = descuento, Precio = descuento }; dato.Items.Add(dvItem); } /************************/ pedido.Estado = this.ObtenerObjeto <Estado>((int)ESTADOS.FACTURADO_); servPedido.PedidoGrabar(pedido); /************************/ //hay que grabar para que se actualice el numero de pedido que se esta facturando.. dato.NumeroPedido = pedido.Numero; dato = this.DocumentoVentaGrabar(dato); return(dato); }
public DocumentoVenta DocumentoVentaFacturarProducto(Producto producto) { ServiciosProductos servProductos = new ServiciosProductos(); DocumentoVenta dato = this.DocumentoVentaObtener(producto.IdDocumentoVenta); producto.ProductoStock.ToList <ProductoStock>() .ForEach(delegate(ProductoStock ps) { if (ps.CantidadPedido > 0) { Producto prodDescripcion = this.ObtenerObjeto <Producto>(producto.Id); string descripcion = string.Format("{0} {1} - Código: {2} - {3}", prodDescripcion.DescripcionCategoria, prodDescripcion.DescripcionSubcategoria, producto.Codigo.ToString(), ps.Medida.Observaciones); decimal precioUnitario = 0; if (producto.PrecioPorPeso) { precioUnitario = producto.PrecioUnitarioFinal * producto.Peso; } else { precioUnitario = producto.PrecioUnitarioFinal; } DocumentoVentaItem dvItem = new DocumentoVentaItem() { Id = -1, IdVenta = dato.Id, NroItem = dato.Items.Count + 1, Descripcion = descripcion, IdProductoStock = ps.Id, Cantidad = ps.CantidadPedido, PrecioUnitario = precioUnitario, Precio = ps.CantidadPedido * precioUnitario }; dato.Items.Add(dvItem); } }); dato = this.DocumentoVentaGrabar(dato); //para actualizar, vuelvo a ciclar por las dudas que la actualización que de error al Grabar bool?_descuentaStock = null; if (dato.TipoComprobante.Id == (int)TIPOS_COMPROBANTE.NOTA_DE_PEDIDO_) { _descuentaStock = true; } else if (dato.TipoComprobante.Id == (int)TIPOS_COMPROBANTE.NOTA_DE_CREDITO_) { _descuentaStock = false; } if (_descuentaStock.HasValue) { producto.ProductoStock.ToList <ProductoStock>() .ForEach(delegate(ProductoStock ps) { if (ps.CantidadPedido > 0) { servProductos.ProductoStockActualizarStock(ps.Id, ps.CantidadPedido, _descuentaStock.Value); } }); } return(dato); }