private void VerificarTipoFamilia(Articulos model) { if (model.id.Length != 11) { throw new ValidationException("La longitud del código del artículo debe ser de 11"); } var familia = ArticulosService.GetCodigoFamilia(model.id); var familiaobj = _db.Familiasproductos.Single(f => f.empresa == model.empresa && f.id == familia); if ((TipoFamilia)(familiaobj.tipofamilia ?? 0) != TipoFamilia.General && (TipoFamilia)(familiaobj.tipofamilia ?? 0) != TipoFamilia.Libre) { model.tipogestionlotes = (int)Tipogestionlotes.Loteobligatorio; model.gestionstock = true; } if (familiaobj.validarmaterial ?? false) { var codmaterial = ArticulosService.GetCodigoMaterial(model.id); if (!_db.Materiales.Any(f => f.empresa == model.empresa && f.id == codmaterial)) { throw new ValidationException("No existe el material del articulo"); } } if (familiaobj.validarcaracteristica ?? false) { var codcaracteristica = ArticulosService.GetCodigoCaracteristica(model.id); if (!_db.CaracteristicasLin.Any(f => f.empresa == model.empresa && f.fkcaracteristicas == familia && f.id == codcaracteristica)) { throw new ValidationException("No existe la caracteristica del articulo"); } } if (familiaobj.validargrosor ?? false) { var codgrosor = ArticulosService.GetCodigoGrosor(model.id); if (!_db.Grosores.Any(f => f.empresa == model.empresa && f.id == codgrosor)) { throw new ValidationException("No existe la grosor del articulo"); } } if (familiaobj.validaracabado ?? false) { var codacabado = ArticulosService.GetCodigoAcabado(model.id); if (!_db.Acabados.Any(f => f.empresa == model.empresa && f.id == codacabado)) { throw new ValidationException("No existe la acabado del articulo"); } } }
public override IModelView CreateView(string id) { var obj = _db.Set <Articulos>().Single(f => f.id == id && f.empresa == Empresa); var result = GetModelView(obj) as ArticulosModel; var familiasService = FService.Instance.GetService(typeof(FamiliasproductosModel), Context, _db); var materialesService = FService.Instance.GetService(typeof(MaterialesModel), Context, _db); var caracteristicasService = FService.Instance.GetService(typeof(CaracteristicasModel), Context, _db); var grosoresService = FService.Instance.GetService(typeof(GrosoresModel), Context, _db); var acabadosService = FService.Instance.GetService(typeof(AcabadosModel), Context, _db); result.Familia = ArticulosService.GetCodigoFamilia(result.Id); var familiaObj = familiasService.get(result.Familia) as FamiliasproductosModel; result.Validarmateriales = familiaObj.Validarmaterial; result.Validarcaracteristicas = familiaObj.Validarcaracteristica; result.Validargrosores = familiaObj.Validargrosor; result.Validaracabados = familiaObj.Validaracabado; result.Fkcontadores = familiaObj.Fkcontador; result.Materiales = familiaObj.Validarmaterial ? ArticulosService.GetCodigoMaterial(result.Id):string.Empty; result.Caracteristicas = familiaObj.Validarcaracteristica ? ArticulosService.GetCodigoCaracteristica(result.Id): string.Empty; result.Grosores = familiaObj.Validargrosor ? ArticulosService.GetCodigoGrosor(result.Id) :string.Empty; result.Acabados = familiaObj.Validaracabado ? ArticulosService.GetCodigoAcabado(result.Id) : string.Empty; result.Lotefraccionable = obj.lotefraccionable; result.Codigolibre = ArticulosService.GetCodigoLibre(result.Id, familiaObj.Validarmaterial, familiaObj.Validarcaracteristica); result.Tipoivavariable = obj.tipoivavariable; var materialesObj = familiaObj.Validarmaterial ? materialesService.get(result.Materiales) as MaterialesModel : null; result.FamiliaDescripcion = familiaObj.Descripcion; result.Tipofamilia = (int)familiaObj.Tipofamilia; result.Fkcontadores = familiaObj.Fkcontador; result.MaterialesDescripcion = familiaObj.Validarmaterial ? materialesObj.Descripcion : string.Empty; result.CaracteristicasDescripcion = familiaObj.Validarcaracteristica ? ((CaracteristicasModel)caracteristicasService.get(result.Familia)).Lineas.Single(f => f.Id == result.Caracteristicas).Descripcion : string.Empty; result.GrosoresDescripcion = familiaObj.Validargrosor ? grosoresService.get(result.Grosores).get("Descripcion").ToString() : string.Empty; result.AcabadosDescripcion = familiaObj.Validaracabado ? acabadosService.get(result.Acabados).get("Descripcion").ToString() :string.Empty; result.Fkunidades = familiaObj.Fkunidadesmedida; result.Fkgruposmateriales = obj.fkgruposmateriales; //ser tarifas result.TarifasSistemaVenta = GetTarifas(TipoFlujo.Venta, result.Id); result.TarifasSistemaCompra = GetTarifas(TipoFlujo.Compra, result.Id); result.TarifasEspecificasVentas = new TarifaEspecificaArticulo() { Tipo = TipoFlujo.Venta, Lineas = _appService.GetTarifasEspecificas(TipoFlujo.Venta, id, Empresa).ToList() }; result.TarifasEspecificasCompras = new TarifaEspecificaArticulo() { Tipo = TipoFlujo.Compra, Lineas = _appService.GetTarifasEspecificas(TipoFlujo.Compra, id, Empresa).ToList() }; //articulos documentos result.Largo = obj.largo ?? 0; result.Ancho = obj.ancho ?? 0; result.Grueso = obj.grueso ?? 0; var unidad = _db.Unidades.Single(f => f.id == familiaObj.Fkunidadesmedida); result.Decimalestotales = unidad.decimalestotales; result.Formulas = (TipoStockFormulas)Enum.Parse(typeof(TipoStockFormulas), unidad.formula.ToString()); result.Fkunidades = familiaObj.Fkunidadesmedida; result.Permitemodificarmetros = unidad.tipototal == (int)TipoStockTotal.Editado; result.Fechaultimaentrada = obj.fechaultimaentrada; result.Ultimaentrada = obj.ultimaentrada; result.Fechaultimasalida = obj.fechaultimasalida; result.Ultimasalida = obj.ultimasalida; // Necesario para crear la url para el último albarán de salida/entrada result.idAlbaranEntrada = _db.AlbaranesCompras.Where(f => f.empresa == Empresa && f.referencia == result.Ultimaentrada).Select(f => f.id).SingleOrDefault(); result.modoAlbaranEntrada = _db.AlbaranesCompras.Where(f => f.empresa == Empresa && f.referencia == result.Ultimaentrada).Select(f => f.modo).SingleOrDefault(); result.idAlbaranSalida = _db.Albaranes.Where(f => f.empresa == Empresa && f.referencia == result.Ultimasalida).Select(f => f.id).SingleOrDefault(); result.modoAlbaranSalida = _db.Albaranes.Where(f => f.empresa == Empresa && f.referencia == result.Ultimasalida).Select(f => f.modo).SingleOrDefault(); return(result); }