public async Task <ActionResult> DevolverPorCodigo(string codigo)
        {
            try
            {
                ProductoViewModel productoViewModel = new ProductoViewModel();
                var item = await productoServices.DevolverPorCodigo(codigo);

                productoViewModel.CodigoProducto  = item.Codigo;
                productoViewModel.NombreProducto  = item.Nombre;
                productoViewModel.Descripcion     = item.Descripcion;
                productoViewModel.CodigoCategoria = item.Categoria.Codigo;

                decimal precio = 0;
                if (item.Lista_Precio != null)
                {
                    precio = item.Lista_Precio.Precio;
                }

                productoViewModel.Precio = precio;

                CategoriaViewModel categoria = new CategoriaViewModel();

                if (item.Categoria != null)
                {
                    categoria.CodigoCategoria = item.Categoria.Codigo;
                    categoria.NombreCategoria = item.Categoria.Nombre;
                    categoria.Descripcion     = item.Categoria.Descripcion;
                }

                productoViewModel.Categoria = categoria;

                return(Ok(productoViewModel));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <ActionResult> Insertar(FacturaViewModel model)
        {
            try
            {
                E_Factura factura = new E_Factura();
                var       cliente = await clienteServices.DevolverPorCodigo(model.CodCliente);

                factura.IdCliente = cliente.Id;
                factura.SubTotal  = model.SubTotal;
                factura.Descuento = model.TotalDescuento;
                factura.Iva       = model.TotalIva;

                if (model.Detalle != null)
                {
                    factura.Detalle = new List <E_Detalle>();

                    foreach (var item in model.Detalle)
                    {
                        E_Detalle detalle  = new E_Detalle();
                        var       producto = await productoServices.DevolverPorCodigo(item.CodigoProducto);

                        detalle.IdProducto = producto.Id;
                        detalle.Cantidad   = item.Cantidad;
                        detalle.Descuento  = item.PorcentajeDescuento;
                        detalle.Iva        = item.PorcentajeIva;
                        factura.Detalle.Add(detalle);
                    }
                }

                E_Factura fac = await facturaServices.Insertar(factura);

                FacturaViewModel facturaViewModel = new FacturaViewModel();
                facturaViewModel.NumeroFactura = fac.Codigo;
                facturaViewModel.CodCliente    = fac.Cliente.Codigo;

                var resultcli = await clienteServices.DevolverPorCodigo(fac.Cliente.Codigo);

                ClienteViewModel clienteViewModel = new ClienteViewModel();
                clienteViewModel.Codigo         = resultcli.Codigo;
                clienteViewModel.Identificacion = resultcli.Identificacion;
                clienteViewModel.Tipo_Documento = resultcli.Tipo_Identificacion.Abreviatura;
                clienteViewModel.NombreCompleto = resultcli.NombreCompleto;
                clienteViewModel.Direccion      = resultcli.Direccion;
                clienteViewModel.Telefono       = resultcli.Telefono;
                clienteViewModel.FechaNac       = resultcli.FechaNac.ToString("dd/MM/yyyy");
                clienteViewModel.Correo         = resultcli.Correo;
                facturaViewModel.Cliente        = clienteViewModel;

                facturaViewModel.Fecha          = fac.Fecha.ToString("dd/MM/yyyy");
                facturaViewModel.SubTotal       = fac.SubTotal;
                facturaViewModel.TotalDescuento = fac.Descuento;
                facturaViewModel.TotalIva       = fac.Iva;
                facturaViewModel.TotalGeneral   = fac.Total;

                List <DetalleViewModel> listaDetalle = new List <DetalleViewModel>();

                foreach (var item in fac.Detalle)
                {
                    DetalleViewModel detalle = new DetalleViewModel();
                    detalle.NumeroFactura  = fac.Codigo;
                    detalle.CodigoProducto = item.Producto.Codigo;

                    ProductoViewModel Producto = new ProductoViewModel();
                    Producto.CodigoProducto = item.Producto.Codigo;
                    Producto.NombreProducto = item.Producto.Nombre;
                    Producto.Descripcion    = item.Producto.Descripcion;
                    Producto.Precio         = item.Lista_Precio.Precio;
                    detalle.Producto        = Producto;

                    detalle.Cantidad            = item.Cantidad;
                    detalle.Precio              = item.Lista_Precio.Precio;
                    detalle.PorcentajeDescuento = item.Descuento;
                    detalle.PorcentajeIva       = item.Iva;
                    listaDetalle.Add(detalle);
                }

                facturaViewModel.Detalle = listaDetalle;
                return(Ok(facturaViewModel));
            }
            catch (System.Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }