Beispiel #1
0
        public Farmaco GenerarFarmaco(DTO.Farmaco farmaco)
        {
            var familia   = _familiaRepository.GetOneOrDefaultById(farmaco.Familia);
            var categoria = farmaco.CategoriaId.HasValue
                            ? _categoriaRepository.GetOneOrDefaultById(farmaco.CategoriaId.Value)
                            : null;

            var subcategoria = farmaco.CategoriaId.HasValue && farmaco.SubcategoriaId.HasValue
                ? _categoriaRepository.GetSubcategoriaOneOrDefaultByKey(
                farmaco.CategoriaId.Value,
                farmaco.SubcategoriaId.Value)
                : null;

            var codigoBarra = _barraRepository.GetOneByFarmacoId(farmaco.Id);

            var proveedor = _proveedorRepository.GetOneOrDefaultByCodigoNacional(farmaco.Id);

            var laboratorio = _laboratorioRepository.GetOneOrDefaultByCodigo(farmaco.Laboratorio);

            var pcoste = farmaco.PrecioUnicoEntrada.HasValue && farmaco.PrecioUnicoEntrada != 0
                            ? (decimal)farmaco.PrecioUnicoEntrada.Value * _factorCentecimal
                            : ((decimal?)farmaco.PrecioMedio ?? 0m) * _factorCentecimal;

            var iva = default(decimal);

            switch (farmaco.IVA)
            {
            case 1: iva = 4; break;

            case 2: iva = 10; break;

            case 3: iva = 21; break;

            default: iva = 0; break;
            }

            return(new Farmaco
            {
                Id = farmaco.Id,
                Codigo = farmaco.Id.ToString(),
                Denominacion = farmaco.Denominacion,
                Familia = familia,
                Categoria = categoria,
                Subcategoria = subcategoria,
                CodigoBarras = codigoBarra,
                Proveedor = proveedor,
                FechaUltimaCompra = farmaco.FechaUltimaEntrada.HasValue && farmaco.FechaUltimaEntrada.Value > 0 ? (DateTime?)$"{farmaco.FechaUltimaEntrada.Value}".ToDateTimeOrDefault("yyyyMMdd") : null,
                FechaUltimaVenta = farmaco.FechaUltimaSalida.HasValue && farmaco.FechaUltimaSalida.Value > 0 ? (DateTime?)$"{farmaco.FechaUltimaSalida.Value}".ToDateTimeOrDefault("yyyyMMdd") : null,
                Ubicacion = farmaco.Ubicacion ?? string.Empty,
                Web = farmaco.BolsaPlastico,
                Precio = farmaco.PVP * _factorCentecimal,
                PrecioCoste = pcoste,
                Iva = iva,
                Stock = farmaco.ExistenciasAux ?? 0,
                StockMinimo = farmaco.Stock ?? 0,
                Laboratorio = laboratorio,
                Baja = farmaco.FechaBaja > 0,
                FechaCaducidad = farmaco.FechaCaducidad.HasValue && farmaco.FechaCaducidad.Value > 0 ? (DateTime?)$"{farmaco.FechaCaducidad.Value}".ToDateTimeOrDefault("yyyyMM") : null
            });
        }
        public Farmaco GenerarFarmaco(DTO.Farmaco farmaco)
        {
            var proveedor = _proveedorRepository.GetOneOrDefaultByCodigoNacional(farmaco.Codigo);
            var categoria = _categoriaRepository.GetOneOrDefaultById(farmaco.Codigo);

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

            var impuesto = !string.IsNullOrWhiteSpace(farmaco.CodigoImpuesto) ? farmaco.CodigoImpuesto : "0";
            var iva      = _tarifaRepository.GetTarifaOrDefaultByCodigoImpuesto(impuesto) ?? 0m;

            return(new Farmaco
            {
                Id = farmaco.Id,
                Codigo = farmaco.Codigo,
                Denominacion = farmaco.Denominacion,
                Familia = familia,
                SuperFamilia = superFamilia,
                Categoria = categoria,
                CodigoBarras = farmaco.CodigoBarras,
                Proveedor = proveedor,
                FechaUltimaCompra = farmaco.FechaUltimaCompra,
                FechaUltimaVenta = farmaco.FechaUltimaVenta,
                FechaCaducidad = farmaco.FechaCaducidad,
                Ubicacion = farmaco.Ubicacion ?? string.Empty,
                Precio = farmaco.Precio,
                PrecioCoste = farmaco.PrecioCoste,
                Iva = iva,
                Stock = farmaco.Stock,
                StockMinimo = farmaco.StockMinimo,
                StockMaximo = farmaco.StockMaximo,
                Laboratorio = laboratorio,
                Baja = farmaco.FechaBaja.HasValue
            });
        }