示例#1
0
        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."));
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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)
            {
            }
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
 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));
     }
 }
示例#8
0
        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);
        }
示例#9
0
        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");
            }
        }
示例#10
0
        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));
        }
示例#11
0
        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)
            {
            }
        }
示例#12
0
 public CalculoVenta()
 {
     DocumentoVenta = new DocumentoVenta();
 }
示例#13
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);
        }
示例#14
0
        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);
        }
示例#15
0
        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);
        }
示例#16
0
        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));
                }
            }
        }