Esempio n. 1
0
        public Response_GetFacturaWithDetailscs Get(int userId) // buscar una factura en curso
        {
            Response_GetFacturaWithDetailscs facturaResponse = new Response_GetFacturaWithDetailscs();
            RespuestaTransaccion             RT       = new RespuestaTransaccion();
            GetFacturaDetailResponse         consulta = new GetFacturaDetailResponse();

            using (FacturadorWebContext bd = new FacturadorWebContext())
            {
                var usuario = bd.Usuario.SingleOrDefault(x => x.Id == userId && x.Estado == true);
                if (usuario != null)
                {
                    var factura = bd.Factura.SingleOrDefault(x => x.IdUsuario == userId && x.IdEstado == 1);
                    if (factura != null)
                    {
                        facturaResponse = consulta.ConsultarDetalleFactura(factura);
                    }
                    else
                    {
                        facturaResponse.respuestaTransaccion = RT.GenerarRespuesta("Error. El operador no tiene facturas en proceso", "0025");
                    }
                }
                else
                {
                    facturaResponse.respuestaTransaccion = RT.GenerarRespuesta("Error. El operador no existe o no tiene permisos para facturar", "0026");
                }
            }
            return(facturaResponse);
        }
Esempio n. 2
0
        public async Task <RespuestaTransaccion> PutAsync([FromBody] Request_Objetc_Add_Producto_To_Factura entrada) // restar producto de la factura
        {
            RespuestaTransaccion             RG              = new RespuestaTransaccion();
            GetFacturaDetailResponse         consulta        = new GetFacturaDetailResponse();
            Response_GetFacturaWithDetailscs facturaResponse = new Response_GetFacturaWithDetailscs();

            using (FacturadorWebContext bd = new FacturadorWebContext())
            {
                var facturaEnProceso = bd.Factura.FirstOrDefault(x => x.IdUsuario == entrada.idUsuario && x.IdEstado == 1);

                if (facturaEnProceso != null)
                {
                    var productoInventario = bd.Inventario.FirstOrDefault(x => x.Id == entrada.codBarras);
                    if (productoInventario != null)
                    {
                        productoInventario.TotalProceso--;
                        bd.SaveChanges();

                        var productoProductoEnProceso = bd.Producto.FirstOrDefault(x => x.IdInventario == entrada.codBarras && x.IdFactura == facturaEnProceso.Id);
                        if (productoProductoEnProceso != null)
                        {
                            if (productoProductoEnProceso.Cantidad > 0)
                            {
                                productoProductoEnProceso.Cantidad--;
                                productoProductoEnProceso.ValorTotal          = productoProductoEnProceso.ValorUnitario * productoProductoEnProceso.Cantidad;
                                productoProductoEnProceso.ValorTotalDescuento = (productoProductoEnProceso.PorcentajeDescuento * productoProductoEnProceso.ValorTotal) / 100;
                                productoProductoEnProceso.ValorTotalIva       = (productoProductoEnProceso.PorcentajeIva * productoProductoEnProceso.ValorTotal) / 100;
                                bd.SaveChanges();
                            }
                            else
                            {
                                return(RG.GenerarRespuesta("Error, ya se desconto el total de unidades disponibles del producto para la factura", "0026"));
                            }
                        }
                        else
                        {
                            return(RG.GenerarRespuesta("Error, El producto no esta asociado a la factura", "0025"));
                        }
                        facturaResponse = consulta.ConsultarDetalleFactura(facturaEnProceso);
                        await _hubContext.Clients.All.SendAsync("SignalrFacturaReceived", facturaResponse);

                        return(RG.GenerarRespuesta("Producto descontado de la factura. Transaccion exitosa", "0000"));
                    }
                    else
                    {
                        return(RG.GenerarRespuesta("Error, el codigo de producto no existe en BD", "0027"));
                    }
                }
                else
                {
                    return(RG.GenerarRespuesta("Error, El operador no tiene una factura en proceso", "0028"));
                }
            }
        }
Esempio n. 3
0
        public RespuestaTransaccion Put([FromBody] UpdateFactura datos)
        {
            RespuestaTransaccion             RG = new RespuestaTransaccion();
            Response_GetFacturaWithDetailscs facturaResponse = new Response_GetFacturaWithDetailscs();
            GetFacturaDetailResponse         consulta        = new GetFacturaDetailResponse();

            using (FacturadorWebContext bd = new FacturadorWebContext())
            {
                var facturaEnProceso = bd.Factura.FirstOrDefault(x => x.IdUsuario == datos.idUsuario && x.IdEstado == 1);
                facturaResponse = consulta.ConsultarDetalleFactura(facturaEnProceso);
                if (facturaEnProceso != null)
                {
                    facturaEnProceso.ValorTotal     = facturaResponse.valorTotal;
                    facturaEnProceso.ValorSubtotal  = facturaResponse.valorSubtotal;
                    facturaEnProceso.ValorIva       = facturaResponse.valorIva;
                    facturaEnProceso.ValorDescuento = facturaResponse.valorDescuento;
                    facturaEnProceso.FechaCierre    = DateTime.Now;
                    if (datos.operacion == 1)
                    {
                        facturaEnProceso.IdEstado = 2;
                    }
                    if (datos.operacion == 2)
                    {
                        facturaEnProceso.IdEstado = 3;
                    }
                    bd.SaveChanges();

                    foreach (Productos p in facturaResponse.productos)
                    {
                        var inventario = bd.Inventario.SingleOrDefault(x => x.Id == p.Codigo);
                        if (datos.operacion == 1)
                        {
                            inventario.TotalVendidos = inventario.TotalVendidos + p.Cantidad;
                        }
                        inventario.TotalProceso = inventario.TotalProceso - p.Cantidad;
                        bd.SaveChanges();
                    }
                    return(RG.GenerarRespuesta("Operacion Exitosa", "0000"));
                }
                else
                {
                    return(RG.GenerarRespuesta("Error, El operador no tiene una factura en proceso", "0029"));
                }
            }
        }
Esempio n. 4
0
        public async Task <RespuestaTransaccion> PostAsync([FromBody] Request_Objetc_Add_Producto_To_Factura entrada) // agregar producto a la factura
        {
            RespuestaTransaccion             RG              = new RespuestaTransaccion();
            GetFacturaDetailResponse         consulta        = new GetFacturaDetailResponse();
            Response_GetFacturaWithDetailscs facturaResponse = new Response_GetFacturaWithDetailscs();

            using (FacturadorWebContext bd = new FacturadorWebContext())
            {
                var facturaEnProceso = bd.Factura.FirstOrDefault(x => x.IdUsuario == entrada.idUsuario && x.IdEstado == 1);

                if (facturaEnProceso != null)
                {
                    var productoInventario = bd.Inventario.FirstOrDefault(x => x.Id == entrada.codBarras);
                    if (productoInventario != null)
                    {
                        //varificar si hay unidades disponibles y si hay unidades entonces descontar unidad del total disponible y aumentar unidades en proceso
                        if ((productoInventario.TotalRecibidos - productoInventario.TotalVendidos - productoInventario.TotalProceso - productoInventario.TotalDevueltos - productoInventario.TotalDesincorporados) > 0)
                        {
                            productoInventario.TotalProceso++;
                            bd.SaveChanges();

                            var productoProductoEnProceso = bd.Producto.FirstOrDefault(x => x.IdInventario == entrada.codBarras && x.IdFactura == facturaEnProceso.Id);
                            if (productoProductoEnProceso != null)
                            {
                                productoProductoEnProceso.Cantidad++;
                                productoProductoEnProceso.ValorTotal          = productoProductoEnProceso.ValorUnitario * productoProductoEnProceso.Cantidad;
                                productoProductoEnProceso.ValorTotalDescuento = (productoProductoEnProceso.PorcentajeDescuento * productoProductoEnProceso.ValorTotal) / 100;
                                productoProductoEnProceso.ValorTotalIva       = (productoProductoEnProceso.PorcentajeIva * productoProductoEnProceso.ValorTotal) / 100;
                            }
                            else
                            {
                                Producto producto = new Producto();
                                producto.ValorUnitario       = productoInventario.PrecioVenta;
                                producto.ValorTotal          = productoInventario.PrecioVenta;
                                producto.Cantidad            = 1;
                                producto.PorcentajeIva       = productoInventario.PorcentajeIva;
                                producto.ValorTotalIva       = (productoInventario.PorcentajeIva * producto.ValorTotal) / 100;
                                producto.PorcentajeDescuento = productoInventario.PorcentajeDescuento;
                                producto.ValorTotalDescuento = (productoInventario.PorcentajeDescuento * producto.ValorTotal) / 100;
                                producto.IdFactura           = facturaEnProceso.Id;
                                producto.IdInventario        = entrada.codBarras;
                                bd.Producto.Add(producto);
                            }
                            bd.SaveChanges();
                            facturaResponse = consulta.ConsultarDetalleFactura(facturaEnProceso);
                            await _hubContext.Clients.All.SendAsync("SignalrFacturaReceived", facturaResponse);

                            return(RG.GenerarRespuesta("Producto añadido con exito", "0000"));
                        }
                        else
                        {
                            return(RG.GenerarRespuesta("Error. el producto bajo el codigo indicado no tiene unidades disponibles en el inventario", "0017"));
                        }
                    }
                    else
                    {
                        return(RG.GenerarRespuesta("Error, el codigo de producto no existe en BD", "0016"));
                    }
                }
                else
                {
                    return(RG.GenerarRespuesta("Error, El operador no tiene una factura en proceso", "0018"));
                }
            }
        }
Esempio n. 5
0
        public Response_GetFacturaWithDetailscs ConsultarDetalleFactura(Factura factura)
        {
            Response_GetFacturaWithDetailscs facturaResponse = new Response_GetFacturaWithDetailscs();
            RespuestaTransaccion             RT = new RespuestaTransaccion();

            try
            {
                using (FacturadorWebContext bd = new FacturadorWebContext())
                {
                    List <Productos> ListadoProductos = new List <Productos>();
                    Datoscliente     cliente          = new Datoscliente();

                    var query1 = from C in bd.Cliente
                                 join P in bd.Persona on C.IdPersona equals P.Id
                                 join T in bd.TipoDocumento on P.IdTipoDocumento equals T.Id
                                 where C.Id == factura.IdCliente

                                 select new Datoscliente
                    {
                        nombreCliente    = P.Nombre,
                        apellidoCliente  = P.Apellido,
                        acronimoCliente  = T.Acronimo,
                        documentoCliente = P.NumeroDocumento
                    };
                    cliente = query1.FirstOrDefault();
                    var productos = bd.Producto.Where(x => x.IdFactura == factura.Id && x.Cantidad > 0).ToList();

                    facturaResponse.valorSubtotal  = 0;
                    facturaResponse.valorIva       = 0;
                    facturaResponse.valorDescuento = 0;
                    facturaResponse.valorTotal     = 0;
                    foreach (Producto p in productos)
                    {
                        var       inventario = bd.Inventario.FirstOrDefault(x => x.Id == p.IdInventario);
                        Productos prod       = new Productos();
                        prod.Codigo              = Convert.ToInt32(p.IdInventario);
                        prod.nombre              = inventario.Nombre;
                        prod.descripcion         = inventario.Descripcion;
                        prod.Cantidad            = p.Cantidad;
                        prod.ValorUnitario       = p.ValorUnitario;
                        prod.ValorTotal          = p.ValorTotal;
                        prod.PorcentajeDescuento = p.PorcentajeDescuento;
                        prod.ValorTotalDescuento = p.ValorTotalDescuento;
                        prod.PorcentajeIva       = p.PorcentajeIva;
                        prod.ValorTotalIva       = p.ValorTotalIva;

                        /* valores en factura */
                        facturaResponse.valorSubtotal  = facturaResponse.valorSubtotal + p.ValorTotal;
                        facturaResponse.valorIva       = facturaResponse.valorIva + p.ValorTotalIva;
                        facturaResponse.valorDescuento = facturaResponse.valorDescuento + p.ValorTotalDescuento;
                        ListadoProductos.Add(prod);
                    }
                    facturaResponse.valorTotal           = facturaResponse.valorSubtotal - facturaResponse.valorDescuento + facturaResponse.valorIva;
                    facturaResponse.numeroFactura        = factura.Numero.ToString();
                    facturaResponse.cliente              = cliente;
                    facturaResponse.respuestaTransaccion = RT.GenerarRespuesta("Consulta exitosa", "0000");
                    facturaResponse.productos            = ListadoProductos;
                }
            }
            catch (Exception ex)
            {
                facturaResponse.respuestaTransaccion = RT.GenerarRespuesta("Ocurrio un error: " + ex.Message, "9090");
                return(facturaResponse);
            }

            return(facturaResponse);
        }