示例#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);
        }
示例#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"));
                }
            }
        }
示例#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"));
                }
            }
        }
示例#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"));
                }
            }
        }