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); } }
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); } }
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); } }
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); } }
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); } }