public IHttpActionResult FacturarPedido([FromBody] Producto producto) { try { ServiciosVentas servicio = new ServiciosVentas(); DocumentoVenta resp = servicio.DocumentoVentaFacturarProducto(producto); 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 DocumentoVenta DocumentoVentaAnular(DocumentoVenta datosGraba) { ServiciosProductos servProductos = new ServiciosProductos(); VentaRepository repository = new VentaRepository(); DocumentoVenta dato = this.DocumentoVentaObtener(datosGraba.Id); dato.Anulado = datosGraba.Anulado; repository.Actualizar(dato); dato.Items.ToList <DocumentoVentaItem>() .ForEach(delegate(DocumentoVentaItem docItem) { if (docItem.IdProductoStock > 0 && docItem.IdPedidoItemProducto <= 0) { bool?_descuentaStock = null; if (dato.TipoComprobante.Id == (int)TIPOS_COMPROBANTE.NOTA_DE_PEDIDO_) { _descuentaStock = datosGraba.Anulado ? false : true; } else if (dato.TipoComprobante.Id == (int)TIPOS_COMPROBANTE.NOTA_DE_CREDITO_) { _descuentaStock = datosGraba.Anulado ? true : false; } if (_descuentaStock.HasValue) { servProductos.ProductoStockActualizarStock(docItem.IdProductoStock, docItem.Cantidad, _descuentaStock.Value); } } }); return(dato); }
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)); }
/// <summary> /// Metodo para agregar la informacion del pedido y sus detalles /// </summary> public void RegistrarNuevoPedido() { try { //Agregar pedido a la base de datos RepositorioPedido.AgregarPedido(Pedido); //Agregar detalle del pedido a la base de datos RepositorioDetallePedido.AgregarDetallePedido(Pedido); EstadoDocumento estadoDocumento = new EstadoDocumento(); estadoDocumento.IdEstado = 1; estadoDocumento.Read(); DocumentoVenta documentoVenta = new DocumentoVenta(); //Asignar el pedido al documento de venta documentoVenta.Pedido = this.Pedido; documentoVenta.EstadoDocumento = estadoDocumento; documentoVenta.Insert(); }catch (Exception ex) { } }
public DocumentoVenta DocumentoVentaObtener(int idDocVenta) { VentaRepository repository = new VentaRepository(); DocumentoVenta docventa = repository.Obtener(idDocVenta); if (docventa != null) { docventa.Items = this.Listar <DocumentoVentaItem>("IdVenta", idDocVenta).ToList <DocumentoVentaItem>(); docventa.Observaciones = this.ObtenerObjeto <DocumentoVentaObservaciones>("IdVenta", idDocVenta); } return(docventa); }
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 IHttpActionResult Get(int id) { try { ServiciosVentas servicio = new ServiciosVentas(); DocumentoVenta resp = servicio.DocumentoVentaObtener(id); if (resp == null) { return(NotFound()); } return(Ok(resp)); } catch (Exception ex) { LoggerHelper.LogError(MethodBase.GetCurrentMethod(), ex); return(BadRequest(ex.Message)); } }
public void DocumentoVentaAplicarRecibo(int idVenta) { VentaRepository repository = new VentaRepository(); DocumentoVenta recibo = repository.Obtener(idVenta); DocumentoVentaList comprobantesPendientes = repository.ListarVentas(-1, -1, null, null, -1, recibo.Cliente.Id, 1); comprobantesPendientes.DocumentosVenta.ForEach(delegate(DocumentoVenta docNP) { if (recibo.Pendiente >= 0) { recibo.Pendiente = recibo.Pendiente - docNP.Pendiente; docNP.Pendiente = recibo.Pendiente >= 0 ? 0 : docNP.Pendiente - recibo.Pendiente; repository.Actualizar(docNP); } }); repository.Actualizar(recibo); }
private void BtnRevisar_Click(object sender, RoutedEventArgs e) { DocumentoVenta documento = (DocumentoVenta)dataDocumento.SelectedItem; if (documento != null) { //Si el grid del pedido no esta visible, se hace visible if (gridPedido.Visibility == Visibility.Hidden) { gridPedido.Visibility = Visibility.Visible; } this.MostrarDatosPedido(documento.Pedido); } else { main.Mensaje("Aviso", "Debe seleccionar un documento para revisarlo"); } }
public DocumentoVenta CalcularTotales(DocumentoVenta dato) { VentaRepository repository = new VentaRepository(); dato.Gravado = 0; dato.Items = this.Listar <DocumentoVentaItem>("IdVenta", dato.Id).ToList <DocumentoVentaItem>(); dato.Items.ToList <DocumentoVentaItem>() .ForEach(delegate(DocumentoVentaItem item) { dato.Gravado = dato.Gravado + item.Precio; }); dato.Total = dato.Gravado - dato.Descuento; dato.Pendiente = dato.Total; repository.Actualizar(dato); return(this.DocumentoVentaObtener(dato.Id)); }
private void BtnHabilitarPago_Click(object sender, RoutedEventArgs e) { try { DocumentoVenta documento = (DocumentoVenta)dataDocumento.SelectedItem; if (documento != null) { if (documento.Pedido.EstadoPedido.IdEstado == 10) { documento.FechaEmision = DateTime.Now; HttpClient client2 = new HttpClient(); var content = new StringContent(JsonConvert.SerializeObject(documento), Encoding.UTF8, "application/json"); var response2 = client2.PutAsync("http://localhost:54192/api/DocumentoVenta", content).Result; if (response2.StatusCode == HttpStatusCode.OK) { this.ActualizarPedidoEstado(documento.Pedido); main.Mensaje("Pago Habilitado", "El pago del pedido " + documento.Pedido.IdPedido + " ha sido habilitado"); } else { main.Mensaje("Aviso", "El pago del pedido no fue habilitado. Intente más tarde"); } } else { main.Mensaje("No Permitido", "El cliente debe confirmar la recepción para habilitar el pago"); } } else { main.Mensaje("Aviso", "Debe seleccionar un documento de la lista"); } }catch (Exception ex) { } }
public CalculoVenta() { DocumentoVenta = new DocumentoVenta(); }
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); }
private Response CrearCobro(EncabFacturaVenta factura) { try { /*Crear anticipo por la factura q se esta creando*/ #region Documento venta tipo adelanto string nroAnticipo; DocumentoVenta documento = new DocumentoVenta { CoTipoDoc = "ADEL", CoCli = factura.CoCli.Trim(), CoVen = factura.CoVen.Trim(), CoMone = factura.CoMone, Tasa = factura.Tasa, FecReg = factura.FecReg, FecEmis = factura.FecEmis, FecVenc = factura.FecVenc, Aut = true, Contrib = factura.Contrib, DocOrig = "COBRO", NroOrig = null, Saldo = factura.Saldo, TotalBruto = factura.Saldo, TotalNeto = factura.Saldo, TipoImp = "7", CoUsIn = factura.CoUsIn, FeUsIn = DateTime.Now, CoUsMo = string.Empty, FeUsMo = Convert.ToDateTime("01/01/1900"), CoSucuIn = factura.CoSucuIn, CoSucuMo = factura.CoSucuMo }; string AnticipoString = JsonConvert.SerializeObject(documento); httpCliente.Headers.Add(HttpRequestHeader.ContentType, "application/json"); response = httpCliente.UploadString($"http://localhost:{puertoApi}/api/DocumentoVentaProfit/Guardar?Emp={db}", "POST", AnticipoString); resp = JsonConvert.DeserializeObject <Response>(response); nroAnticipo = resp.FacturaID; #endregion #region Renglones cobro List <DetaCobroDocReng> RengCob = new List <DetaCobroDocReng> { new DetaCobroDocReng { RengNum = 1, CoTipoDoc = "ADEL", NroDoc = nroAnticipo, /*;-)*/ CoSucuIn = factura.CoSucuIn, CoUsIn = factura.CoUsIn, FeUsIn = DateTime.Now, CoUsMo = factura.CoUsMo, CoSucuMo = factura.CoSucuMo, FeUsMo = factura.FeUsMo } }; #endregion #region Forma de pago List <TipoCobroTpreng> RengTip = new List <TipoCobroTpreng> { new TipoCobroTpreng { RengNum = 1, FormaPag = "EF", CodCaja = _caja.CodCaja.Trim(), // ;-) MontDoc = factura.Saldo, FechaChe = factura.FecEmis, CoSucuIn = factura.CoSucuIn, CoUsIn = factura.CoUsIn, FeUsIn = factura.FeUsIn, CoSucuMo = factura.CoSucuMo, CoUsMo = factura.CoUsMo, FeUsMo = factura.FeUsMo, } }; #endregion #region Encabezado cobro y guardar EncabCobro cobro = new EncabCobro { Descrip = $"Anticipo automático proyecto {factura.Campo2.Trim()} presupuesto {factura.Campo1.Trim()}.", CoCli = factura.CoCli.Trim(), CoVen = factura.CoVen, CoMone = factura.CoMone, Tasa = factura.Tasa, Fecha = factura.FecEmis, Campo1 = factura.Campo1.Trim(), Campo2 = factura.Campo2.Trim(), CoUsIn = "999", FeUsIn = DateTime.Now, CoSucuIn = factura.CoSucuIn, CoUsMo = string.Empty, FeUsMo = Convert.ToDateTime("01/01/1900"), DetaCobroDocReng = RengCob, TipoCobroTpreng = RengTip }; string CobroString = JsonConvert.SerializeObject(cobro); httpCliente.Headers.Add(HttpRequestHeader.ContentType, "application/json"); response = httpCliente.UploadString($"http://localhost:{puertoApi}/api/CobroProfit/Guardar?Emp={db}&isAdelanto={true}", "POST", CobroString); resp = JsonConvert.DeserializeObject <Response>(response); nroCobro = resp.FacturaID.Trim(); #endregion #region Actualizando el anticipo response = httpCliente.DownloadString($"http://localhost:{puertoApi}/api/DocumentoVentaProfit/GetDocumento?NumDocumento={nroAnticipo.Trim()}&CodTipoDocumento=ADEL&Emp={db}"); DocumentoVenta anticipo = JsonConvert.DeserializeObject <DocumentoVenta>(response); anticipo.Observa = $"COBRO N° {nroCobro}"; anticipo.NroOrig = nroCobro; string EditAnticipoString = JsonConvert.SerializeObject(anticipo); httpCliente.Headers.Add(HttpRequestHeader.ContentType, "application/json"); response = httpCliente.UploadString($"http://localhost:{puertoApi}/api/DocumentoVentaProfit/Actualizar?Emp={db}", "PUT", EditAnticipoString); return(resp = JsonConvert.DeserializeObject <Response>(response)); #endregion } catch (WebException ex) { CloseLoading(); using (var reader = new System.IO.StreamReader(ex.Response.GetResponseStream())) { response = reader.ReadToEnd(); return(resp = JsonConvert.DeserializeObject <Response>(response)); } } }