Beispiel #1
0
        public RespuestaTransaccion Put([FromBody] ClienteRequest clienteRequest)
        {
            RespuestaTransaccion RG = new RespuestaTransaccion();

            try
            {
                using (FacturadorWebContext context = new FacturadorWebContext())
                {
                    var TD        = context.TipoDocumento.SingleOrDefault(x => x.Acronimo == clienteRequest.TIPO_DOCUMENTO);
                    var resultado = context.Persona.SingleOrDefault(x => x.NumeroDocumento == clienteRequest.NUMERO_DOCUMENTO && x.IdTipoDocumento == TD.Id);
                    if (resultado != null)
                    {
                        resultado.Nombre    = clienteRequest.NOMBRE;
                        resultado.Apellido  = clienteRequest.APELLIDO;
                        resultado.Direccion = clienteRequest.DIRECCION;
                        resultado.Email     = clienteRequest.EMAIL;
                        resultado.Telefono  = clienteRequest.TELEFONO;
                        context.SaveChanges();
                        return(RG.GenerarRespuesta("Actualizacion exitosa", "0000"));
                    }
                    else
                    {
                        return(RG.GenerarRespuesta("Error. El cliente no existe en nuestra base de datos", "0005"));
                    }
                }
            }
            catch (Exception ex)
            {
                return(RG.GenerarRespuesta("Ocurrio un error durante la actualizacion de los datos", "0006", ex));
            }
        }
Beispiel #2
0
        public List <ProductoInventario> Get()
        {
            List <Inventario>         resultado          = null;
            List <ProductoInventario> listado_definitivo = new List <ProductoInventario>();

            using (FacturadorWebContext bd = new FacturadorWebContext())
            {
                resultado = bd.Inventario.ToList();
            }

            if (resultado != null)
            {
                foreach (Inventario producto in resultado)
                {
                    ProductoInventario PI = new ProductoInventario();
                    PI.Codigo               = producto.Id;
                    PI.Descripcion          = producto.Descripcion;
                    PI.Nombre               = producto.Nombre;
                    PI.FechaRegistro        = producto.FechaRegistro;
                    PI.TotalRecibidos       = producto.TotalRecibidos;
                    PI.TotalVendidos        = producto.TotalVendidos;
                    PI.TotalDevueltos       = producto.TotalDevueltos;
                    PI.TotalDesincorporados = producto.TotalDesincorporados;
                    PI.TotalProceso         = producto.TotalProceso;
                    PI.PrecioCompra         = producto.PrecioCompra;
                    PI.PrecioVenta          = producto.PrecioVenta;
                    PI.PorcentajeIva        = producto.PorcentajeIva;
                    PI.PorcentajeDescuento  = producto.PorcentajeDescuento;
                    listado_definitivo.Add(PI);
                }
            }
            return(listado_definitivo);
        }
Beispiel #3
0
        public IniciarSesionResponse Post([FromBody] IniciarSesionRequest SessionObject)
        {
            var RG = new RespuestaTransaccion();
            IniciarSesionResponse ObjetoRespuesta = null;
            RespuestaTransaccion  RTN             = new RespuestaTransaccion();

            using (FacturadorWebContext context = new FacturadorWebContext())
            {
                var query_sesion = from U in context.Usuario join P in context.Persona on U.IdPersona equals P.Id where U.Nickname == SessionObject.NICKNAME && U.Clave == SessionObject.PASSWORD
                                   select new IniciarSesionResponse {
                    NOMBRE = P.Nombre, APELLIDO = P.Apellido, ID_USUARIO = U.Id, PERFIL = U.Perfil, ESTADO = U.Estado
                };
                ObjetoRespuesta = query_sesion.FirstOrDefault();

                if (ObjetoRespuesta != null)
                {
                    if (ObjetoRespuesta.ESTADO)
                    {
                        ObjetoRespuesta.RESPUESTA_TRANSACCION = RTN.GenerarRespuesta("Transaccion exitosa", "0000");
                    }
                    else
                    {
                        ObjetoRespuesta.RESPUESTA_TRANSACCION = RTN.GenerarRespuesta("Error. Usuario inactivo, por favor contacte al administrador del sistema", "0008");
                    }
                }
                else
                {
                    ObjetoRespuesta = new IniciarSesionResponse();
                    ObjetoRespuesta.RESPUESTA_TRANSACCION = RTN.GenerarRespuesta("Error. Inicio de sesion fallido, usuario o password incorrectos", "0007");
                }
                return(ObjetoRespuesta);
            }
        }
Beispiel #4
0
        public List <Response_GetAllFacturas> Get()
        {
            List <Factura> ListadoFactura = null;
            List <Response_GetAllFacturas> ListaFacturasResponse = new List <Response_GetAllFacturas>();

            using (FacturadorWebContext context = new FacturadorWebContext())
            {
                ListadoFactura = context.Factura.ToList();
                if (ListadoFactura != null)
                {
                    var query = from F in context.Factura
                                join E in context.EstadosFactura on F.IdEstado equals E.Id
                                select new Response_GetAllFacturas
                    {
                        Id             = F.Id,
                        Numero         = F.Numero,
                        ValorTotal     = F.ValorTotal,
                        ValorSubtotal  = F.ValorSubtotal,
                        ValorIva       = F.ValorIva,
                        ValorDescuento = F.ValorDescuento,
                        FechaApertura  = F.FechaApertura,
                        FechaCierre    = F.FechaCierre,
                        Estado         = E.Descripcion
                    };
                    ListaFacturasResponse = query.ToList();
                }
            }
            return(ListaFacturasResponse);
        }
Beispiel #5
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);
        }
Beispiel #6
0
        public RespuestaTransaccion Post([FromBody] Request_Object_Create_Invoice objeto_entrada)
        {
            RespuestaTransaccion RG = new RespuestaTransaccion();
            Cliente cliente         = null;

            using (FacturadorWebContext bd = new FacturadorWebContext())
            {
                var usuario = bd.Usuario.FirstOrDefault(x => x.Id == objeto_entrada.userId && x.Estado == true);

                if (usuario != null)
                {
                    var TD = bd.TipoDocumento.SingleOrDefault(x => x.Acronimo == objeto_entrada.clientDocumentType);
                    if (TD != null)
                    {
                        // BUSCAR EN PERSONAS - CLIENTES
                        var query_clientes = 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 T.Acronimo == objeto_entrada.clientDocumentType && P.NumeroDocumento == objeto_entrada.clientDocumentNumber
                                             select new Cliente {
                            Id = C.Id
                        };
                        cliente = query_clientes.FirstOrDefault();

                        if (cliente != null)
                        {
                            var facturaEnProceso = bd.Factura.FirstOrDefault(x => x.IdUsuario == objeto_entrada.userId && x.IdEstado == 1);

                            if (facturaEnProceso != null)
                            {
                                return(RG.GenerarRespuesta("Error, El operador ya tiene una factura en proceso", "0022"));
                            }
                            else
                            {
                                Factura factura = new Factura();
                                factura.FechaApertura = DateTime.Now;
                                factura.IdEstado      = 1;
                                factura.IdCliente     = cliente.Id;
                                factura.IdUsuario     = usuario.Id;
                                bd.Factura.Add(factura);
                                bd.SaveChanges();
                                return(RG.GenerarRespuesta("Factura creada con exito", "0000"));
                            }
                        }
                        else
                        {
                            return(RG.GenerarRespuesta("Error. El cliente(" + objeto_entrada.clientDocumentType + " - " + objeto_entrada.clientDocumentNumber + ") no existe", "0020"));
                        }
                    }
                    else
                    {
                        return(RG.GenerarRespuesta("Error. Tipo de documento (" + objeto_entrada.clientDocumentType + ") no existe", "0019"));
                    }
                }
                else
                {
                    return(RG.GenerarRespuesta("Error. El cajero no esta registrado en base de datos o no esta autorizado para realizar el proceso de facturacion", "0021"));
                }
            }
        }
Beispiel #7
0
        public List <GetClienteResponse> Get()
        {
            List <Cliente>            ListadoClientes       = null;
            List <GetClienteResponse> ListaClientesResponse = new List <GetClienteResponse>();

            using (FacturadorWebContext context = new FacturadorWebContext())
            {
                ListadoClientes = context.Cliente.ToList();
                if (ListadoClientes != null)
                {
                    foreach (Cliente c in ListadoClientes)
                    {
                        var query = from P in context.Persona
                                    join C in context.Cliente on P.Id equals C.IdPersona
                                    join TD in context.TipoDocumento on P.IdTipoDocumento equals TD.Id

                                    select new GetClienteResponse
                        {
                            NOMBRE           = P.Nombre,
                            APELLIDO         = P.Apellido,
                            NUMERO_DOCUMENTO = P.NumeroDocumento,
                            TELEFONO         = P.Telefono,
                            EMAIL            = P.Email,
                            DIRECCION        = P.Direccion,
                            TIPO_DOCUMENTO   = TD.Acronimo
                        };
                        ListaClientesResponse = query.ToList();
                    }
                }
            }
            return(ListaClientesResponse);
        }
Beispiel #8
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"));
                }
            }
        }
Beispiel #9
0
        public RespuestaTransaccion Get(string ACRONIMO, string NUMERO_DOCUMENTO)
        {
            Cliente cliente         = null;
            RespuestaTransaccion RG = new RespuestaTransaccion();

            using (FacturadorWebContext context = new FacturadorWebContext())
            {
                var TD = context.TipoDocumento.SingleOrDefault(x => x.Acronimo == ACRONIMO);
                if (TD != null)
                {
                    // BUSCAR EN PERSONAS - CLIENTES
                    var query_clientes = from C in context.Cliente
                                         join P in context.Persona on C.IdPersona equals P.Id
                                         join T in context.TipoDocumento on P.IdTipoDocumento equals T.Id
                                         where T.Acronimo == ACRONIMO && P.NumeroDocumento == NUMERO_DOCUMENTO
                                         select new Cliente {
                        Id = C.Id
                    };
                    cliente = query_clientes.FirstOrDefault();

                    if (cliente != null)
                    {
                        return(RG.GenerarRespuesta("Cliente existe en nuestra base de datos", "0000"));
                    }
                    else
                    {
                        var query_personas = context.Persona.SingleOrDefault(x => x.NumeroDocumento == NUMERO_DOCUMENTO && x.IdTipoDocumento == TD.Id);
                        if (query_personas != null)
                        {
                            Cliente nuevo_cliente = new Cliente();
                            nuevo_cliente.Puntos    = 0;
                            nuevo_cliente.IdPersona = query_personas.Id;
                            context.Cliente.Add(nuevo_cliente);
                            context.SaveChanges();
                            return(RG.GenerarRespuesta("El usuario " + query_personas.Nombre + " " + query_personas.Apellido + " ya existe en nuestra base de datos y se ha registrado como cliente para modificar su informacion de registro buscar en clientes y haga clic en la opcion editar", "0000"));
                        }
                        else
                        {
                            return(RG.GenerarRespuesta("Error. El cliente (" + ACRONIMO + "-" + NUMERO_DOCUMENTO + ") no existe", "0002"));
                        }
                    }
                }
                else
                {
                    return(RG.GenerarRespuesta("Error. Tipo de documento (" + ACRONIMO + ") no existe", "0001"));
                }
            }
        }
Beispiel #10
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"));
                }
            }
        }
Beispiel #11
0
        public List <GetTiposDocumentos> Get()
        {
            List <TipoDocumento>      consulta  = null;
            List <GetTiposDocumentos> respuesta = new List <GetTiposDocumentos>();

            using (FacturadorWebContext bd = new FacturadorWebContext())
            {
                consulta = bd.TipoDocumento.ToList();
            }

            foreach (TipoDocumento td in consulta)
            {
                GetTiposDocumentos tipo_documento = new GetTiposDocumentos();
                tipo_documento.DESCRIPCION = td.Descripcion;
                tipo_documento.ACRONIMO    = td.Acronimo;
                respuesta.Add(tipo_documento);
            }
            return(respuesta);
        }
Beispiel #12
0
        public RespuestaTransaccion Post([FromBody] ClienteRequest clienteRequest)
        {
            RespuestaTransaccion RG = new RespuestaTransaccion();

            try
            {
                using (FacturadorWebContext context = new FacturadorWebContext())
                {
                    var TD        = context.TipoDocumento.SingleOrDefault(x => x.Acronimo == clienteRequest.TIPO_DOCUMENTO);
                    var resultado = context.Persona.Where(x => x.NumeroDocumento == clienteRequest.NUMERO_DOCUMENTO && x.IdTipoDocumento == TD.Id).ToList();
                    if (resultado.Count == 0)
                    {
                        Persona persona = new Persona();
                        persona.Nombre          = clienteRequest.NOMBRE;
                        persona.Apellido        = clienteRequest.APELLIDO;
                        persona.NumeroDocumento = clienteRequest.NUMERO_DOCUMENTO;
                        persona.IdTipoDocumento = TD.Id;
                        persona.Telefono        = clienteRequest.TELEFONO;
                        persona.Email           = clienteRequest.EMAIL;
                        persona.Direccion       = clienteRequest.DIRECCION;
                        context.Persona.Add(persona);
                        context.SaveChanges();

                        int     id_persona_transaccion = persona.Id;
                        Cliente cliente = new Cliente();
                        cliente.Puntos    = 0;
                        cliente.IdPersona = id_persona_transaccion;
                        context.Cliente.Add(cliente);
                        context.SaveChanges();
                        return(RG.GenerarRespuesta("El cliente se registro con exito", "0000"));
                    }
                    else
                    {
                        return(RG.GenerarRespuesta("Error. El cliente ya existe en nuestra base de datos", "0003"));
                    }
                }
            }
            catch (Exception ex)
            {
                return(RG.GenerarRespuesta("Ocurrio un error durante el proceso de registro", "0004", ex));
            }
        }
Beispiel #13
0
        public Response_GetFacturaEnProceso Get(int userId)
        {
            Response_GetFacturaEnProceso resultado = new Response_GetFacturaEnProceso();
            RespuestaTransaccion         RT        = new RespuestaTransaccion();

            using (FacturadorWebContext bd = new FacturadorWebContext())
            {
                var usuario = bd.Usuario.FirstOrDefault(x => x.Id == userId && x.Estado == true);
                if (usuario != null)
                {
                    var query = from F in bd.Factura
                                join C in bd.Cliente on F.IdCliente equals C.Id
                                join P in bd.Persona on C.IdPersona equals P.Id
                                join T in bd.TipoDocumento on P.IdTipoDocumento equals T.Id
                                where F.IdUsuario == userId && F.IdEstado == 1

                                select new Response_GetFacturaEnProceso
                    {
                        numeroFactura   = F.Numero.ToString(),
                        numerodocumento = P.NumeroDocumento,
                        acronimo        = T.Acronimo
                    };

                    resultado = query.FirstOrDefault();

                    if (resultado != null)
                    {
                        resultado.respuestaTransaccion = RT.GenerarRespuesta("Error, el operador ya tiene una factura en proceso", "0023");
                    }
                    else
                    {
                        resultado = new Response_GetFacturaEnProceso();
                        resultado.respuestaTransaccion = RT.GenerarRespuesta("Continuar proceso de facturacion - crear nueva factura", "0000");
                    }
                }
                else
                {
                    resultado.respuestaTransaccion = RT.GenerarRespuesta("Error, el operador no existe o no tiene permisos para ejecutar el proceso de facturacion", "0024");
                }
            }
            return(resultado);
        }
Beispiel #14
0
        public RespuestaTransaccion Put([FromBody] PutRequest producto)
        {
            RespuestaTransaccion RT = new RespuestaTransaccion();
            Inventario           inventario;

            try
            {
                using (FacturadorWebContext bd = new FacturadorWebContext())
                {
                    inventario = bd.Inventario.SingleOrDefault(x => x.Id == producto.Codigo);
                    if (inventario != null)
                    {
                        if (producto.Nombre != null && producto.PrecioCompra > 0 && producto.Descripcion != null && producto.PrecioVenta > producto.PrecioCompra)
                        {
                            inventario.Nombre              = producto.Nombre;
                            inventario.Descripcion         = producto.Descripcion;
                            inventario.PorcentajeDescuento = producto.PorcentajeDescuento;
                            inventario.PorcentajeIva       = producto.PorcentajeIva;
                            inventario.PrecioCompra        = producto.PrecioCompra;
                            inventario.PrecioVenta         = producto.PrecioVenta;
                            bd.SaveChanges();
                            return(RT.GenerarRespuesta("Actualizacion exitosa", "0000"));
                        }
                        else
                        {
                            return(RT.GenerarRespuesta("Error, registro fallido. Los datos en el registro no son validos. ", "0015"));
                        }
                    }
                    else
                    {
                        return(RT.GenerarRespuesta("Error. No se encontro el codigo del producto " + producto.Codigo + "", "0014"));
                    }
                }
            }
            catch (Exception ex)
            {
                return(RT.GenerarRespuesta("Error. Ocurrio un error inesperado", "0013", ex));
            }
        }
Beispiel #15
0
        public ProductoInvetarioRespuestaTransaccion Get(int id)
        {
            Inventario Query_resultado = new Inventario();

            using (FacturadorWebContext bd = new FacturadorWebContext())
            {
                Query_resultado = bd.Inventario.SingleOrDefault(x => x.Id == id);
            }

            ProductoInvetarioRespuestaTransaccion resultado = new ProductoInvetarioRespuestaTransaccion();
            RespuestaTransaccion respuesta = new RespuestaTransaccion();

            if (Query_resultado != null)
            {
                resultado.Codigo               = Query_resultado.Id;
                resultado.Descripcion          = Query_resultado.Descripcion;
                resultado.Nombre               = Query_resultado.Nombre;
                resultado.FechaRegistro        = Query_resultado.FechaRegistro;
                resultado.TotalRecibidos       = Query_resultado.TotalRecibidos;
                resultado.TotalVendidos        = Query_resultado.TotalVendidos;
                resultado.TotalDevueltos       = Query_resultado.TotalDevueltos;
                resultado.TotalDesincorporados = Query_resultado.TotalDesincorporados;
                resultado.TotalProceso         = Query_resultado.TotalProceso;
                resultado.PrecioCompra         = Query_resultado.PrecioCompra;
                resultado.PrecioVenta          = Query_resultado.PrecioVenta;
                resultado.PorcentajeIva        = Query_resultado.PorcentajeIva;
                resultado.PorcentajeDescuento  = Query_resultado.PorcentajeDescuento;
                resultado.Respuesta            = respuesta.GenerarRespuesta("Producto existe en nuestra base de datos", "0000");
            }
            else
            {
                resultado.Respuesta = respuesta.GenerarRespuesta("Error al consultar inventario: el codigo de producto " + id + " no existe en nuestra base de datos", "0009");
            }

            return(resultado);
        }
Beispiel #16
0
        public RespuestaTransaccion Post([FromBody] PostRequest producto)
        {
            RespuestaTransaccion RT = new RespuestaTransaccion();
            Inventario           productoInventario = new Inventario();

            try
            {
                if (producto.Nombre != null && producto.PrecioCompra > 0 && producto.Descripcion != null && producto.PrecioVenta > producto.PrecioCompra && producto.TotalRecibidos > 0)
                {
                    productoInventario.Nombre               = producto.Nombre;
                    productoInventario.Descripcion          = producto.Descripcion;
                    productoInventario.PrecioCompra         = producto.PrecioCompra;
                    productoInventario.PrecioVenta          = producto.PrecioVenta;
                    productoInventario.TotalRecibidos       = producto.TotalRecibidos;
                    productoInventario.FechaRegistro        = DateTime.Now;
                    productoInventario.TotalDesincorporados = 0;
                    productoInventario.TotalDevueltos       = 0;
                    productoInventario.TotalVendidos        = 0;
                    productoInventario.TotalProceso         = 0;
                    if (producto.PorcentajeDescuento == null)
                    {
                        productoInventario.PorcentajeDescuento = 0;
                    }
                    else
                    {
                        productoInventario.PorcentajeDescuento = producto.PorcentajeDescuento;
                    }
                    if (producto.PorcentajeIva == null)
                    {
                        productoInventario.PorcentajeIva = 0;
                    }
                    else
                    {
                        productoInventario.PorcentajeIva = producto.PorcentajeIva;
                    }

                    using (FacturadorWebContext bd = new FacturadorWebContext())
                    {
                        bd.Inventario.Add(productoInventario);
                        bd.SaveChanges();
                    }
                }
                else
                {
                    return(RT.GenerarRespuesta("Error, registro fallido. Los datos en el registro no son validos. ", "0010"));
                }

                if (productoInventario.Id != 0)
                {
                    return(RT.GenerarRespuesta("El producto se registro con exito bajo el codigo " + productoInventario.Id + "", "0000"));
                }
                else
                {
                    return(RT.GenerarRespuesta("Error, registro fallido. Ocurrio un error inesperado crear el registro del producto", "0011"));
                }
            }
            catch (Exception ex)
            {
                return(RT.GenerarRespuesta("Error, registro fallido. Ocurrio un error inesperado crear el registro del producto", "0012", ex));
            }
        }
Beispiel #17
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"));
                }
            }
        }
Beispiel #18
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);
        }