Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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
            });
        }