public IEnumerable <Encargo> GetAllByIdGreaterOrEqual(int year, long encargo) { var conn = FarmaciaContext.GetConnection(); try { var rs = new List <DTO.Encargo>(); var sqlExtra = string.Empty; var sql = $@" SELECT * FROM (SELECT e.num_enc, e.fecha_enc, e.cliente, e.operador, e.observaciones, e.emp_codigo, e.alm_codigo From appul.ah_encargos e WHERE to_char(e.fecha_enc, 'YYYY') >= {year} AND e.num_enc >= {encargo} Order by e.num_enc ASC) WHERE rownum <= 999"; conn.Open(); var cmd = conn.CreateCommand(); cmd.CommandText = sql; var reader = cmd.ExecuteReader(); while (reader.Read()) { var rNumEnc = Convert.ToInt32(reader["num_enc"]); var rFechaEnc = Convert.ToDateTime(reader["fecha_enc"]); var rOperador = Convert.ToString(reader["operador"]); var rCliente = !Convert.IsDBNull(reader["cliente"]) ? Convert.ToInt64(reader["cliente"]) : 0L; var rObservaciones = Convert.ToString(reader["observaciones"]); var rEmpCodigo = Convert.ToString(reader["emp_codigo"]); var rAlmCodigo = Convert.ToInt32(reader["alm_codigo"]); sql = $@" SELECT le.linea, le.articulo, le.uni_encargadas, le.fecha_disponib, le.emp_codigo From appul.ah_lin_encargo le where num_enc = {rNumEnc} AND emp_codigo = '{rEmpCodigo}' AND alm_codigo = '{rAlmCodigo}' AND to_char(fecha_enc, 'YYYYMMDD') = '{rFechaEnc.ToString("yyyyMMdd")}'"; cmd.CommandText = sql; var readerLineaEncargo = cmd.ExecuteReader(); var numLinea = 1; while (readerLineaEncargo.Read()) { var rArticulo = Convert.ToString(readerLineaEncargo["articulo"]); if (string.IsNullOrEmpty(rArticulo)) { continue; } var artSql = $@"select * from appul.ab_articulos where codigo='{rArticulo}'"; cmd.CommandText = artSql; var readerArticulo = cmd.ExecuteReader(); var hayArticulo = readerArticulo.HasRows; readerArticulo.Close(); readerArticulo.Dispose(); if (hayArticulo) { var rLinea = Convert.ToInt32(readerLineaEncargo["linea"]); var rUniEncargadas = !Convert.IsDBNull(readerLineaEncargo["uni_encargadas"]) ? Convert.ToInt64(readerLineaEncargo["uni_encargadas"]) : 0L; var rFechaDisponib = !Convert.IsDBNull(readerLineaEncargo["fecha_disponib"]) ? Convert.ToDateTime(readerLineaEncargo["fecha_disponib"]) : DateTime.MinValue; var dto = new DTO.Encargo { Id = rNumEnc, FechaHora = rFechaEnc, Cliente = rCliente, Vendedor = rOperador, Observaciones = rObservaciones, Empresa = rEmpCodigo, Almacen = rAlmCodigo, Linea = numLinea, Farmaco = rArticulo, Cantidad = rUniEncargadas, FechaHoraEntrega = rFechaDisponib }; rs.Add(dto); } numLinea = numLinea + 1; } readerLineaEncargo.Close(); readerLineaEncargo.Dispose(); } reader.Close(); reader.Dispose(); return(rs.Select(GenerarEncargo)); } catch (Exception ex) { throw; } finally { conn.Close(); conn.Dispose(); } }
private Encargo GenerarEncargo(DTO.Encargo encargo) { var cliente = new Cliente { Id = encargo.Cliente }; var vendedor = new Vendedor { Nombre = encargo.Vendedor.Trim() }; var farmacoEncargado = default(Farmaco); var farmaco = _farmacoRepository.GetOneOrDefaultById(encargo.Farmaco); if (farmaco != null) { var proveedor = _proveedorRepository.GetOneOrDefaultByCodigoNacional(encargo.Farmaco); var categoria = _categoriaRepository.GetOneOrDefaultById(encargo.Farmaco); Familia familia = null; Familia superFamilia = null; if (string.IsNullOrWhiteSpace(farmaco.SubFamilia)) { familia = new Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new Familia { Nombre = string.Empty }; } else { familia = _familiaRepository.GetSubFamiliaOneOrDefault(farmaco.Familia, farmaco.SubFamilia) ?? new Familia { Nombre = string.Empty }; superFamilia = _familiaRepository.GetOneOrDefaultById(farmaco.Familia) ?? new Familia { Nombre = string.Empty }; } var laboratorio = !farmaco.Laboratorio.HasValue ? new Laboratorio { Codigo = string.Empty, Nombre = "<Sin Laboratorio>" } : _laboratorioRepository.GetOneOrDefaultByCodigo(farmaco.Laboratorio.Value, farmaco.Clase, farmaco.ClaseBot) ?? new Laboratorio { Codigo = string.Empty, Nombre = "<Sin Laboratorio>" }; farmacoEncargado = new Farmaco { Id = farmaco.Id, Codigo = encargo.Farmaco.ToString(), PrecioCoste = farmaco.PUC, Proveedor = proveedor, Categoria = categoria, Familia = familia, SuperFamilia = superFamilia, Laboratorio = laboratorio, Denominacion = farmaco.Denominacion, Precio = farmaco.PrecioMedio, }; } return(new Encargo { Id = encargo.Id, Fecha = encargo.FechaHora, FechaEntrega = encargo.FechaHoraEntrega, Farmaco = farmacoEncargado, Cantidad = encargo.Cantidad, Cliente = cliente, Vendedor = vendedor, Observaciones = encargo.Observaciones, Empresa = encargo.Empresa, Almacen = encargo.Almacen, Linea = encargo.Linea }); }