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