Example #1
0
        public static List <MedicamentoCustomSAMBHS> ObtenerContasolMedicamentos()
        {
            try
            {
                DatabaseSAMBHSContext dbContex = new DatabaseSAMBHSContext();
                var List = (from pro in dbContex.Producto
                            join prod in dbContex.ProductoDetalle on pro.v_IdProducto equals prod.v_IdProducto
                            where prod.i_Eliminado == 0
                            select new MedicamentoCustomSAMBHS
                {
                    IdProductoDetalle = prod.v_IdProductoDetalle,
                    CodInterno = pro.v_CodInterno,
                    Nombre = pro.v_Descripcion,
                    Presentacion = pro.v_Presentacion,
                    Concentracion = pro.v_Concentracion,
                    Ubicacion = pro.v_Ubicacion,
                }).ToList();

                return(List);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Example #2
0
        public static List <PlanCustom> GetPlanByProtocolId(string protocolId)
        {
            try
            {
                var listPlan = (from pl in _ctx.Plan
                                where pl.v_ProtocoloId == protocolId
                                select new PlanCustom
                {
                    i_PlanId = pl.i_PlanId,
                    v_IdUnidadProductiva = pl.v_IdUnidadProductiva,
                    d_Importe = pl.d_Importe,
                    d_ImporteCo = pl.d_ImporteCo,
                    i_EsCoaseguro = pl.i_EsCoaseguro,
                    i_EsDeducible = pl.i_EsDeducible
                }).ToList();

                DatabaseSAMBHSContext samb = new DatabaseSAMBHSContext();

                foreach (var item in listPlan)
                {
                    var result = samb.Linea.Where(x => x.v_IdLinea == item.v_IdUnidadProductiva).FirstOrDefault();
                    if (result != null)
                    {
                        item.v_IdUnidadProductivaName = result.v_Nombre;
                    }
                }

                return(listPlan);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public List <Recipes> GetRecipesByServiceId(string serviceId)
        {
            try
            {
                DatabaseContext ctx        = new DatabaseContext();
                var             listReceta = (from rec in ctx.Receta
                                              join dry in ctx.DiagnosticRepository on rec.v_DiagnosticRepositoryId equals dry.v_DiagnosticRepositoryId
                                              join dis in ctx.Diseases on dry.v_DiseasesId equals dis.v_DiseasesId
                                              where dry.v_ServiceId == serviceId
                                              select new Recipes
                {
                    RecetaId = rec.i_IdReceta,
                    ProductoDetalleId = rec.v_IdProductoDetalle,
                    IdLinea = rec.v_IdUnidadProductiva,
                    d_Quantity = rec.d_Cantidad,
                    DiseaseId = dis.v_DiseasesId,
                    DiseaseName = dis.v_Name,
                    Posologia = rec.v_Posologia,
                    Duration = rec.v_Duracion,
                    FechaFin = rec.t_FechaFin,
                    ComponentId = dry.v_ComponentId,
                }).ToList();
                listReceta = listReceta.GroupBy(x => x.RecetaId).Select(z => z.First()).ToList();

                //Sambhs
                DatabaseSAMBHSContext ctxsamb = new DatabaseSAMBHSContext();
                string periodo = DateTime.Now.Year.ToString();
                foreach (var objReceta in listReceta)
                {
                    var objProdutc = (from pral in ctxsamb.ProductoAlmacen
                                      join prod in ctxsamb.ProductoDetalle on pral.v_ProductoDetalleId equals prod.v_IdProductoDetalle
                                      join pro in ctxsamb.Producto on prod.v_IdProducto equals pro.v_IdProducto
                                      where prod.v_IdProductoDetalle == objReceta.ProductoDetalleId && pral.i_IdAlmacen == 1 && pral.v_Periodo == periodo
                                      select new {
                        pral.d_StockActual,
                        prod.v_IdProducto,
                        pro.v_Descripcion,
                        pro.d_PrecioVenta,
                    }).FirstOrDefault();
                    if (objProdutc != null)
                    {
                        objReceta.StockActual = float.Parse(objProdutc.d_StockActual.Value.ToString("N2"));
                        objReceta.ProductId   = objProdutc.v_IdProducto;
                        objReceta.ProductName = objProdutc.v_Descripcion;
                        objReceta.Price       = objProdutc.d_PrecioVenta;
                    }
                }

                return(listReceta);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public List <string> SearchProduct(string name)
        {
            using (var ctx = new DatabaseSAMBHSContext())
            {
                var query = (from a in ctx.Producto
                             join pd in ctx.ProductoDetalle on a.v_IdProducto equals pd.v_IdProducto
                             join pa in ctx.ProductoAlmacen on pd.v_IdProductoDetalle equals pa.v_ProductoDetalleId

                             where (a.v_CodInterno.Contains(name) || a.v_Descripcion.Contains(name) || name == null) && a.i_Eliminado == (int)SiNo.No && a.i_EsActivo == (int)SiNo.Si && pa.i_IdAlmacen == 1
                             select new
                {
                    value = a.v_Descripcion + "|" + a.v_IdProducto + "|" + a.v_CodInterno + "|" + a.v_IdLinea + "|" + pd.v_IdProductoDetalle + "|" + a.d_PrecioVenta + "|" + a.d_PrecioMayorista
                }).ToList();
                query = query.GroupBy(x => x.value).Select(z => z.First()).ToList();
                return(query.Select(p => p.value).ToList());
            }
        }
        public List <KeyValueDTO> GetDocumentsForCombo(int pintUsadoCompras, int pintUsadoVentas)
        {
            try
            {
                int    EstablecimientoPredeterminado = int.Parse(System.Configuration.ConfigurationManager.AppSettings["appEstablecimientoPredeterminado"]);
                string TipoDocumentoVentaRapida      = System.Configuration.ConfigurationManager.AppSettings["csTipoDocumentoVentaRapida"];
                using (DatabaseSAMBHSContext dbContext = new DatabaseSAMBHSContext())
                {
                    var query = (from a in dbContext.Documento

                                 join A in dbContext.EstablecimientoDetalle on a.i_CodigoDocumento equals A.i_IdTipoDocumento //Trae solo documentos que fueron registrados en establecimientodetalle

                                 where a.i_Eliminado == 0 && A.i_Eliminado == 0 && A.i_Eliminado == 0 && A.i_IdEstablecimiento == EstablecimientoPredeterminado
                                 select a).Distinct();

                    if (pintUsadoCompras == 1)
                    {
                        query = query.Where(x => x.i_UsadoCompras == 1);
                    }
                    else if (pintUsadoVentas == 1)
                    {
                        query = query.Where(x => x.i_UsadoVentas == 1);
                    }


                    query = query.OrderBy(x => x.i_CodigoDocumento);

                    var query2 = query.AsEnumerable()
                                 .Select(x => new KeyValueDTO
                    {
                        Id     = x.i_CodigoDocumento.ToString(),
                        Value  = x.v_Nombre,
                        Value2 = x.v_Siglas,
                        Value3 = TipoDocumentoVentaRapida,
                        Value6 = x.i_UsadoDocumentoInterno == 1 ? true : false,
                    }).ToList();
                    return(query2);
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Example #6
0
        public List <CostoNotasIngresoPedido> SaldosIniciales(string Periodo)
        {
            using (DatabaseSAMBHSContext dbContex = new DatabaseSAMBHSContext())
            {
                var SaldosIniciales = (from a in dbContex.MovimientoDetalle

                                       join b in dbContex.Movimiento on new { m = a.v_IdMovimiento, eliminado = 0 } equals new { m = b.v_IdMovimiento, eliminado = b.i_Eliminado.Value } into b_join

                                       from b in b_join.DefaultIfEmpty()

                                       join c in dbContex.Cliente on new { c = b.v_IdCliente, eliminado = 0 } equals new { c = c.v_IdCliente, eliminado = c.i_Eliminado.Value } into c_join

                                       from c in c_join.DefaultIfEmpty()

                                       join d in dbContex.Documento on new { d = a.i_IdTipoDocumento.Value, eliminado = 0 } equals new { d = d.i_CodigoDocumento, eliminado = d.i_Eliminado.Value } into d_join

                                       from d in d_join.DefaultIfEmpty()

                                       join e in dbContex.ProductoDetalle on new { pd = a.v_IdProductoDetalle, eliminado = 0 } equals new { pd = e.v_IdProductoDetalle, eliminado = e.i_Eliminado.Value } into e_join

                                       from e in e_join.DefaultIfEmpty()
                                       where a.i_Eliminado == 0 &&
                                       b.i_IdTipoMovimiento == (int)Enumeratores.TipoDeMovimiento.NotadeIngreso &&
                                       b.v_Periodo == Periodo
                                       select new
                {
                    NroPedido = a.v_NroPedido.Trim(),

                    Costo = b.i_IdMoneda == (int)Enumeratores.Currency.Dolares ? b.v_OrigenTipo == "I" ? a.d_Precio : a.d_PrecioCambio : a.d_Precio / b.d_TipoCambio,
                    v_IdProductoDetalle = e.v_IdProductoDetalle,
                }).ToList().AsQueryable().Select(x => new CostoNotasIngresoPedido
                {
                    Costo = x.Costo ?? 0,
                    v_IdProductoDetalle = x.v_IdProductoDetalle,
                    NroPedido           = x.NroPedido,
                }).ToList();
                return(SaldosIniciales);
            }
        }
Example #7
0
        public BoardCliente GetClients(BoardCliente data)
        {
            try
            {
                string filtValue          = data.Name == "" ? null : data.Name;
                DatabaseSAMBHSContext cnx = new DatabaseSAMBHSContext();
                var query = (from A in cnx.Cliente
                             join J1 in cnx.SystemUser on new { i_InsertUserId = A.i_InsertaIdUsuario.Value }
                             equals new { i_InsertUserId = J1.i_SystemUserId } into J1_join
                             from J1 in J1_join.DefaultIfEmpty()

                             join J2 in cnx.SystemUser on new { i_UpdateUserId = A.i_ActualizaIdUsuario.Value }
                             equals new { i_UpdateUserId = J2.i_SystemUserId } into J2_join
                             from J2 in J2_join.DefaultIfEmpty()

                             join J3 in cnx.SystemParameter on new { a = A.i_IdTipoIdentificacion.Value, b = 150 }
                             equals new { a = J3.i_ParameterId, b = J3.i_GroupId } into J3_join
                             from J3 in J3_join.DefaultIfEmpty()

                             join J4 in cnx.ClienteDirecciones on new { IdDireccion = A.v_IdCliente, eliminado = 0, predeterminado = 1 }
                             equals new { IdDireccion = J4.v_IdCliente, eliminado = J4.i_Eliminado.Value, predeterminado = J4.i_EsDireccionPredeterminada.Value } into J4_join
                             from J4 in J4_join.DefaultIfEmpty()

                             where A.i_Eliminado == 0 && (A.v_RazonSocial.Contains(filtValue) || A.v_NroDocIdentificacion.Contains(filtValue) || filtValue == null)

                             select new ClienteCustom
                {
                    NombreRazonSocial = (A.v_ApePaterno + " " + A.v_ApeMaterno + " " + A.v_PrimerNombre + " " + A.v_SegundoNombre + " " + A.v_RazonSocial).Trim(),
                    v_IdCliente = A.v_IdCliente,
                    v_ApeMaterno = A.v_ApeMaterno,
                    v_ApePaterno = A.v_ApePaterno,
                    v_CodCliente = A.v_CodCliente,
                    i_IdLista = A.i_IdListaPrecios,
                    v_NroDocIdentificacion = A.v_NroDocIdentificacion,
                    v_PrimerNombre = A.v_PrimerNombre,
                    v_RazonSocial = (A.v_ApePaterno + " " + A.v_ApeMaterno + " " + A.v_PrimerNombre + " " + A.v_SegundoNombre + " " + A.v_RazonSocial).Trim(),
                    v_SegundoNombre = A.v_SegundoNombre,
                    i_IdTipoIdentificacion = A.i_IdTipoIdentificacion,
                    i_IdTipoPersona = A.i_IdTipoPersona,
                    t_ActualizaFecha = A.t_ActualizaFecha.Value,
                    t_InsertaFecha = A.t_InsertaFecha.Value,
                    v_UsuarioCreacion = J1.v_UserName,
                    v_UsuarioModificacion = J2.v_UserName,
                    TipoDocumento = J3.v_Value1,
                    v_FlagPantalla = A.v_FlagPantalla,
                    v_Direccion = J4 == null ? A.v_DirecPrincipal : J4.v_Direccion,
                    i_ParameterId = J3.i_ParameterId,
                    i_IdDireccionCliente = J4 == null ? -1 : J4.i_IdDireccionCliente
                }).ToList();

                int skip        = (data.Index - 1) * data.Take;
                var ListClients = query.GroupBy(g => g.v_IdCliente).Select(s => s.First()).ToList();
                data.TotalRecords = ListClients.Count;

                if (data.Take > 0)
                {
                    ListClients = ListClients.Skip(skip).Take(data.Take).ToList();
                }

                data.List = ListClients.OrderBy(x => x.v_NroDocIdentificacion).ToList();
                return(data);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Example #8
0
        public BoardProductsSAMBHS GetProductsSAMBHS_PV(BoardProductsSAMBHS data)
        {
            try
            {
                DatabaseSAMBHSContext cnx = new DatabaseSAMBHSContext();
                var RucEmpresa            = data.RucEmpresa == null ? "" : data.RucEmpresa;
                var fltValue             = data.ProductName == null ? "" : data.ProductName;
                var ListaSaldosIniciales = new List <CostoNotasIngresoPedido>();
                data.IdAlmacen = int.Parse(System.Configuration.ConfigurationManager.AppSettings["appAlmacenPredeterminado"]);
                var periodo = DateTime.Now.Year.ToString();

                if (RucEmpresa == Constants.RucWortec)
                {
                    ListaSaldosIniciales = SaldosIniciales(periodo);
                }

                IQueryable query;
                if (data.ConStock)
                {
                    #region Query Con Stock

                    query = (from n in cnx.Producto
                             join D in cnx.ProductoDetalle on n.v_IdProducto equals D.v_IdProducto into D_join
                             from D in D_join.DefaultIfEmpty()

                             join J3 in cnx.ProductoAlmacen on new { a = D.v_IdProductoDetalle, b = data.IdAlmacen, eliminado = 0, _periodo = periodo } equals new { a = J3.v_ProductoDetalleId, b = J3.i_IdAlmacen, eliminado = J3.i_Eliminado.Value, _periodo = J3.v_Periodo } into J3_join
                             from J3 in J3_join.DefaultIfEmpty()

                             join J4 in cnx.DataHierarchy on new { a = n.i_IdUnidadMedida.Value, b = 17 }
                             equals new { a = J4.i_ItemId.Value, b = J4.i_GroupId } into J4_join
                             from J4 in J4_join.DefaultIfEmpty()

                             join J5 in cnx.Linea on n.v_IdLinea equals J5.v_IdLinea into J5_join
                             from J5 in J5_join.DefaultIfEmpty()

                             join J6 in cnx.DataHierarchy on new { a = n.i_IdPerfilDetraccion.Value, b = 176 }
                             equals new { a = J6.i_ItemId.Value, b = J6.i_GroupId } into J6_join
                             from J6 in J6_join.DefaultIfEmpty()

                             where (n.v_Descripcion.Contains(fltValue) || n.v_CodInterno.Contains(fltValue) || fltValue == "") && n.i_Eliminado == 0 && n.i_EsServicio == 0 && n.i_EsActivoFijo == 0 && n.i_EsActivo == 1 &&
                             J3.d_StockActual > 0 &&
                             J3_join.Any(p => p.v_ProductoDetalleId == D.v_IdProductoDetalle)          // <---linea clave

                             select new
                    {
                        n.v_IdProducto,
                        D.v_IdProductoDetalle,
                        n.v_Descripcion,
                        n.v_CodInterno,
                        n.i_EsServicio,
                        n.i_EsLote,
                        n.d_PrecioVenta,
                        n.i_IdTipoProducto,
                        stockActual = J3.d_StockActual,
                        J3.v_IdProductoAlmacen,
                        d_separacion = J3.d_SeparacionTotal ?? 0,
                        n.i_IdUnidadMedida,
                        EmpaqueUnidadMedida = J4.v_Value1,
                        n.d_Empaque,
                        n.i_EsAfectoDetraccion,
                        TasaDetraccion = J6 != null ? J6.v_Value2 : "0",
                        TopeDetraccion = J6 != null ? J6.v_Field : "0",
                        n.i_NombreEditable,
                        StockDisponible = J3.d_StockActual - J3.d_SeparacionTotal,
                        n.i_ValidarStock,
                        n.i_EsAfectoPercepcion,
                        n.d_TasaPercepcion,
                        n.i_PrecioEditable,
                        ProductoAlmacen = J3.v_IdProductoAlmacen,
                        NroCuentaVenta = J5.v_NroCuentaVenta,
                        NroCuentaCompra = J5.v_NroCuentaCompra,
                        J3.i_IdAlmacen,
                        v_NroPedidoExportacion = J3.v_NroPedido,
                        ValorUM = string.IsNullOrEmpty(J4.v_Value2) ? "0" : J4.v_Value2,
                        UM = "UNIDADES",
                        Observaciones = n.v_Caracteristica,
                        AfectoIsc = n.i_EsAfectoIsc,
                        StockMinimo = n.d_StockMinimo == null ? 1 : J3 == null || J3.d_StockActual == null ? 1 : J3.d_StockActual <= n.d_StockMinimo ? 1 : 0,
                        n.v_Descripcion2,

                        i_SolicitarNroLoteIngreso = n.i_SolicitarNroLoteIngreso ?? 0,
                        i_SolicitarNroSerieIngreso = n.i_SolicitarNroSerieIngreso ?? 0,
                        i_SolicitaOrdenProduccionIngreso = n.i_SolicitaOrdenProduccionIngreso ?? 0,
                        i_SolicitarNroSerieSalida = n.i_SolicitarNroSerieSalida ?? 0,
                        i_SolicitarNroLoteSalida = n.i_SolicitarNroLoteSalida ?? 0,
                        i_SolicitaOrdenProduccionSalida = n.i_SolicitaOrdenProduccionSalida ?? 0,

                        J3.v_NroLote,
                        J3.v_NroSerie,
                        t_FechaCaducidad = J3.t_FechaCaducidad == null ? Fechanull : J3.t_FechaCaducidad,
                    }).ToList().Select(p =>
                    {
                        var PrecioWortec = Constants.RucWortec == RucEmpresa
                                     ? ListaSaldosIniciales.Where(
                            a =>
                            a.v_IdProductoDetalle == p.v_IdProductoDetalle &&
                            a.NroPedido == p.v_NroPedidoExportacion).ToList()
                                     : null;
                        return(new ProductCustomSAMBHS
                        {
                            TasaDetraccion = p.TasaDetraccion,
                            TopeDetraccion = p.TopeDetraccion,
                            v_IdProducto = p.v_IdProducto,
                            v_IdProductoDetalle = p.v_IdProductoDetalle,
                            v_Descripcion = p.v_Descripcion,
                            v_CodInterno = p.v_CodInterno,
                            i_EsServicio = p.i_EsServicio,
                            i_EsLote = p.i_EsLote,
                            i_IdTipoProducto = p.i_IdTipoProducto,
                            stockActual = p.stockActual,
                            v_IdProductoAlmacen = p.v_IdProductoAlmacen,
                            d_separacion = p.d_separacion,
                            i_IdUnidadMedida = p.i_IdUnidadMedida,
                            EmpaqueUnidadMedida = p.EmpaqueUnidadMedida,
                            d_Empaque = p.d_Empaque,
                            i_EsAfectoDetraccion = p.i_EsAfectoDetraccion,
                            i_NombreEditable = p.i_NombreEditable,
                            StockDisponible = p.StockDisponible,
                            i_ValidarStock = p.i_ValidarStock,
                            i_EsAfectoPercepcion = p.i_EsAfectoPercepcion,
                            d_TasaPercepcion = p.d_TasaPercepcion,
                            i_PrecioEditable = p.i_PrecioEditable,
                            d_Precio = Constants.RucWortec == RucEmpresa ? (PrecioWortec.Any() ? DevuelveValorRedondeado(PrecioWortec.Average(x => x.Costo), 4)
                                                 : 0)
                                             : p.d_PrecioVenta,
                            d_Descuento = 0,
                            IdMoneda = 1,
                            NroCuentaVenta = p.NroCuentaVenta,
                            NroCuentaCompra = p.NroCuentaCompra,
                            IdAlmacen = p.i_IdAlmacen,
                            v_NroPedidoExportacion = p.v_NroPedidoExportacion,
                            StockActualUM = p.stockActual / int.Parse(p.ValorUM),
                            SeparacionActualUM = p.d_separacion / int.Parse(p.ValorUM),
                            SaldoUM = (p.stockActual / int.Parse(p.ValorUM)) - p.d_separacion / int.Parse(p.ValorUM),
                            UM = p.UM,
                            Observacion = p.Observaciones.Trim(),
                            EsAfectoIsc = p.AfectoIsc.HasValue && p.AfectoIsc == 1,
                            StockMinimo = p.StockMinimo,
                            v_Descripcion2 = p.v_Descripcion2,

                            i_SolicitarNroLoteIngreso = p.i_SolicitarNroLoteIngreso,
                            i_SolicitarNroSerieIngreso = p.i_SolicitarNroSerieIngreso,
                            i_SolicitaOrdenProduccionIngreso = p.i_SolicitaOrdenProduccionIngreso,
                            i_SolicitarNroSerieSalida = p.i_SolicitarNroSerieSalida,
                            i_SolicitarNroLoteSalida = p.i_SolicitarNroLoteSalida,
                            i_SolicitaOrdenProduccionSalida = p.i_SolicitaOrdenProduccionSalida,



                            v_NroLote = p.v_NroLote,
                            v_NroSerie = p.v_NroSerie,
                            t_FechaCaducidad = p.t_FechaCaducidad.Value,
                        });
                    }).AsQueryable();
                    int skip         = (data.Index - 1) * data.Take;
                    var FinalList    = query.Cast <ProductCustomSAMBHS>().ToList().OrderBy(o => o.t_FechaCaducidad).ToList();
                    var ListProducts = FinalList.GroupBy(g => g.v_IdProducto).Select(s => s.First()).ToList();
                    data.TotalRecords = ListProducts.Count;
                    if (data.Take > 0)
                    {
                        ListProducts = ListProducts.Skip(skip).Take(data.Take).ToList();
                    }
                    data.List = ListProducts;

                    #endregion
                }
                else
                {
                    #region Query Sin Importar Stock

                    query = (from n in cnx.Producto
                             join D in cnx.ProductoDetalle on n.v_IdProducto equals D.v_IdProducto into D_join
                             from D in D_join.DefaultIfEmpty()

                             join J4 in cnx.DataHierarchy on new { a = n.i_IdUnidadMedida, b = 17 }
                             equals new { a = J4.i_ItemId, b = J4.i_GroupId } into J4_join
                             from J4 in J4_join.DefaultIfEmpty()

                             join J5 in cnx.Linea on n.v_IdLinea equals J5.v_IdLinea into J5_join
                             from J5 in J5_join.DefaultIfEmpty()

                             join J6 in cnx.ProductoAlmacen on new { a = D.v_IdProductoDetalle, b = data.IdAlmacen, eliminado = 0, _periodo = periodo }
                             equals new { a = J6.v_ProductoDetalleId, b = J6.i_IdAlmacen, eliminado = J6.i_Eliminado.Value, _periodo = J6.v_Periodo } into J6_join
                             from J6 in J6_join.DefaultIfEmpty()

                             join J7 in cnx.DataHierarchy on new { a = n.i_IdPerfilDetraccion, b = 176 }
                             equals new { a = J7.i_ItemId, b = J7.i_GroupId } into J7_join
                             from J7 in J7_join.DefaultIfEmpty()

                             where n.i_Eliminado == 0 && n.i_EsServicio == 0 && n.i_EsActivoFijo == 0 && n.i_EsActivo == 1 &&
                             D_join.Any(p => p.v_IdProductoDetalle.Equals(J6.v_ProductoDetalleId))
                             select new
                    {
                        v_IdProducto = n.v_IdProducto,
                        v_IdProductoDetalle = D.v_IdProductoDetalle,
                        v_Descripcion = n.v_Descripcion,
                        v_CodInterno = n.v_CodInterno,
                        i_EsServicio = n.i_EsServicio,
                        i_EsLote = n.i_EsLote,
                        n.d_PrecioVenta,
                        i_IdTipoProducto = n.i_IdTipoProducto,
                        i_IdUnidadMedida = n.i_IdUnidadMedida,
                        EmpaqueUnidadMedida = J4.v_Value1,
                        d_Empaque = n.d_Empaque,
                        i_EsAfectoDetraccion = n.i_EsAfectoDetraccion,
                        i_NombreEditable = n.i_NombreEditable,
                        i_ValidarStock = n.i_ValidarStock,
                        i_EsAfectoPercepcion = n.i_EsAfectoPercepcion,
                        d_TasaPercepcion = n.d_TasaPercepcion,
                        i_PrecioEditable = n.i_PrecioEditable,
                        NroCuentaVenta = J5.v_NroCuentaVenta,
                        NroCuentaCompra = J5.v_NroCuentaCompra,
                        NroPedido = J6.v_NroPedido,
                        stockActual = J6.d_StockActual,
                        v_IdProductoAlmacen = J6.v_IdProductoAlmacen,
                        d_Separacion = J6.d_SeparacionTotal == null ? 0 : J6.d_SeparacionTotal,
                        d_StockActual = J6.d_StockActual,
                        i_IdAlmacen = J6.i_IdAlmacen,
                        v_NroPedidoExportacion = J6.v_NroPedido,
                        ValorUM = string.IsNullOrEmpty(J4.v_Value2) ? "0" : J4.v_Value2,
                        UM = "UNIDADES",
                        AfectoIsc = n.i_EsAfectoIsc,
                        StockMinimo = n.d_StockMinimo == null ? 1 : J6 == null || J6.d_StockActual == null ? 1 : J6.d_StockActual <= n.d_StockMinimo ? 1 : 0,
                        v_Descripcion2 = n.v_Descripcion2,
                        TasaDetraccion = J7 != null ? J7.v_Value2 : "0",
                        TopeDetraccion = J7 != null ? J7.v_Field : "0",



                        i_SolicitarNroLoteIngreso = n.i_SolicitarNroLoteIngreso ?? 0,
                        i_SolicitarNroSerieIngreso = n.i_SolicitarNroSerieIngreso ?? 0,
                        i_SolicitaOrdenProduccionIngreso = n.i_SolicitaOrdenProduccionIngreso ?? 0,
                        i_SolicitarNroSerieSalida = n.i_SolicitarNroSerieSalida ?? 0,
                        i_SolicitarNroLoteSalida = n.i_SolicitarNroLoteSalida ?? 0,
                        i_SolicitaOrdenProduccionSalida = n.i_SolicitaOrdenProduccionSalida ?? 0,


                        v_NroLote = J6.v_NroLote,
                        v_NroSerie = J6.v_NroSerie,
                        t_FechaCaducidad = J6.t_FechaCaducidad == null ? Fechanull : J6.t_FechaCaducidad.Value,
                    }).ToList().Select(p =>
                    {
                        decimal?PrecioWortec = Constants.RucWortec == RucEmpresa
                                     ? ListaSaldosIniciales.Where(
                            a =>
                            a.v_IdProductoDetalle == p.v_IdProductoDetalle &&
                            a.NroPedido == p.v_NroPedidoExportacion).Sum(a => a.Costo)
                                     : 0;
                        return(new ProductCustomSAMBHS
                        {
                            v_IdProducto = p.v_IdProducto,
                            v_IdProductoDetalle = p.v_IdProductoDetalle,
                            v_Descripcion = p.v_Descripcion,
                            v_CodInterno = p.v_CodInterno,
                            i_EsServicio = p.i_EsServicio,
                            i_EsLote = p.i_EsLote,
                            i_IdTipoProducto = p.i_IdTipoProducto,
                            stockActual = p.v_IdProductoAlmacen != null ? p.stockActual ?? 0 : 0,
                            v_IdProductoAlmacen = p.v_IdProductoAlmacen,
                            d_separacion = p.v_IdProductoAlmacen != null ? p.d_Separacion ?? 0 : 0,
                            i_IdUnidadMedida = p.i_IdUnidadMedida,
                            EmpaqueUnidadMedida = p.EmpaqueUnidadMedida,
                            d_Empaque = p.d_Empaque,
                            i_EsAfectoDetraccion = p.i_EsAfectoDetraccion,
                            i_NombreEditable = p.i_NombreEditable,
                            StockDisponible = p.d_StockActual,
                            i_ValidarStock = p.i_ValidarStock,
                            i_EsAfectoPercepcion = p.i_EsAfectoPercepcion,
                            d_TasaPercepcion = p.d_TasaPercepcion,
                            i_PrecioEditable = p.i_PrecioEditable,
                            d_Precio = p.v_IdProductoAlmacen != null ? RucEmpresa == Constants.RucWortec ? PrecioWortec != null ? PrecioWortec : 0 : p.d_PrecioVenta : 0,
                            d_Descuento = 0,
                            IdMoneda = 1,
                            NroCuentaVenta = p.NroCuentaVenta,
                            NroCuentaCompra = p.NroCuentaCompra,
                            IdAlmacen =
                                p.v_IdProductoAlmacen != null ? -1 : p.i_IdAlmacen == 0 ? -1 : p.i_IdAlmacen,
                            v_NroPedidoExportacion = p.NroPedido,
                            StockActualUM = p.stockActual == 0 || p.ValorUM == "0" ? 0 : p.stockActual / int.Parse(p.ValorUM),
                            SeparacionActualUM = p.d_Separacion == 0 || p.ValorUM == "0" ? 0 : p.d_Separacion / int.Parse(p.ValorUM),
                            SaldoUM =
                                p.ValorUM == "0"
                                             ? 0
                                             : p.stockActual != 0 && p.ValorUM != "0" && p.d_Separacion != 0
                                                 ? (p.stockActual / int.Parse(p.ValorUM)) -
                                p.d_Separacion / int.Parse(p.ValorUM)
                                                 : p.stockActual == 0 && p.ValorUM != "0" && p.d_Separacion != 0
                                                     ? -p.d_Separacion / int.Parse(p.ValorUM)
                                                     : p.d_Separacion == 0 && p.ValorUM != "0" && p.stockActual != 0
                                                         ? (p.stockActual / int.Parse(p.ValorUM))
                                                         : 0,
                            UM = p.UM,
                            EsAfectoIsc = p.AfectoIsc.HasValue && p.AfectoIsc == 1,
                            StockMinimo = p.StockMinimo,
                            v_Descripcion2 = p.v_Descripcion2,
                            TasaDetraccion = p.TasaDetraccion,
                            TopeDetraccion = p.TopeDetraccion,
                            i_SolicitarNroLoteIngreso = p.i_SolicitarNroLoteIngreso,
                            i_SolicitarNroSerieIngreso = p.i_SolicitarNroSerieIngreso,
                            i_SolicitaOrdenProduccionIngreso = p.i_SolicitaOrdenProduccionIngreso,
                            i_SolicitarNroSerieSalida = p.i_SolicitarNroSerieSalida,
                            i_SolicitarNroLoteSalida = p.i_SolicitarNroLoteSalida,
                            i_SolicitaOrdenProduccionSalida = p.i_SolicitaOrdenProduccionSalida,

                            v_NroSerie = p.v_NroSerie,
                            v_NroLote = p.v_NroLote,
                            t_FechaCaducidad = p.t_FechaCaducidad,
                        });
                    }).AsQueryable();
                    int skip         = (data.Index - 1) * data.Take;
                    var FinalList    = query.Cast <ProductCustomSAMBHS>().ToList().OrderBy(o => o.t_FechaCaducidad).ToList();
                    var ListProducts = FinalList.GroupBy(g => g.v_IdProducto).Select(s => s.First()).ToList();
                    data.TotalRecords = ListProducts.Count;
                    if (data.Take > 0)
                    {
                        ListProducts = ListProducts.Skip(skip).Take(data.Take).ToList();
                    }
                    data.List = ListProducts;
                    #endregion
                }
                return(data);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }