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"); } } }
private void ValidarLineas(Traspasosalmacen model) { if (!model.TraspasosalmacenLin.Any() && model.TraspasosalmacenCostesadicionales.Any()) { throw new ValidationException(General.ErrorLineasObligatoriasCostes); } var familiasProductosService = FService.Instance.GetService(typeof(FamiliasproductosModel), Context, _db); foreach (var item in model.TraspasosalmacenLin) { if (string.IsNullOrEmpty(item.fkarticulos)) { throw new ValidationException(string.Format(General.ErrorCampoObligatorio, RTraspasosalmacen.Fkarticulos)); } if (!item.cantidad.HasValue) { throw new ValidationException(string.Format(General.ErrorCampoObligatorio, RTraspasosalmacen.Cantidad)); } if (!item.metros.HasValue) { throw new ValidationException(string.Format(General.ErrorCampoObligatorio, RTraspasosalmacen.Metros)); } var familiacodigo = ArticulosService.GetCodigoFamilia(item.fkarticulos); var familiaModel = familiasProductosService.get(familiacodigo) as FamiliasproductosModel; item.fkunidades = _db.Unidades.Single(f => f.id == familiaModel.Fkunidadesmedida).id; VerificarPertenenciaKit(model, item); } var vector = model.TraspasosalmacenLin.OrderBy(f => f.orden).ToList(); for (var i = 0; i < vector.Count(); i++) { vector[i].orden = (i + 1) * ApplicationHelper.EspacioOrdenLineas; } }
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); }
private void ValidarLineas(Pedidos model) { var familiasProductosService = FService.Instance.GetService(typeof(FamiliasproductosModel), Context, _db) as FamiliasproductosService; foreach (var item in model.PedidosLin) { if (string.IsNullOrEmpty(item.fkarticulos)) { throw new ValidationException(string.Format(General.ErrorCampoObligatorio, RPedidos.Fkarticulos)); } if (!item.cantidad.HasValue) { throw new ValidationException(string.Format(General.ErrorCampoObligatorio, RPedidos.Cantidad)); } if (!item.metros.HasValue) { throw new ValidationException(string.Format(General.ErrorCampoObligatorio, RPedidos.Metros)); } if (!item.precio.HasValue) { throw new ValidationException(string.Format(General.ErrorCampoObligatorio, RPedidos.Precio)); } if (string.IsNullOrEmpty(item.fktiposiva)) { throw new ValidationException(string.Format(General.ErrorCampoObligatorio, RPedidos.Fktiposiva)); } if (item.porcentajedescuento.HasValue) { item.importedescuento = Math.Round((double)(item.precio * item.metros * item.porcentajedescuento) / 100.0, 2); } var familiacodigo = ArticulosService.GetCodigoFamilia(item.fkarticulos); var familiaModel = familiasProductosService.get(familiacodigo) as FamiliasproductosModel; item.fkunidades = _db.Unidades.Single(f => f.id == familiaModel.Fkunidadesmedida).id; var art = _db.Articulos.Single(f => f.empresa == model.empresa && f.id == item.fkarticulos); var codGrupo = art.fkgruposiva; if (!art.tipoivavariable) { var tiposivaService = FService.Instance.GetService(typeof(TiposIvaModel), Context, _db) as TiposivaService; item.fktiposiva = tiposivaService.GetTipoIva(codGrupo, model.fkregimeniva).Id; } double cantidad = item.metros ?? 0; double precio = item.precio ?? 0; double importedescuento = item.importedescuento ?? 0; var baseimponible = cantidad * precio - importedescuento; item.importe = baseimponible; if (!item.importe.HasValue) { throw new ValidationException(string.Format(General.ErrorCampoObligatorio, RPedidos.Importe)); } familiasProductosService.ValidarDimensiones(familiacodigo, item.largo, item.ancho, item.grueso, art.id); } var vector = model.PedidosLin.OrderBy(f => f.orden).ToList(); for (var i = 0; i < vector.Count(); i++) { vector[i].orden = (i + 1) * ApplicationHelper.EspacioOrdenLineas; } }
public ActionResult GetLotesAutomaticos(string fkarticulo) { var errormessage = ""; try { var listado = Session[sessionentrada] as List <TransformacionesentradaLinModel>; return(Content(JsonConvert.SerializeObject(listado.Where(f => f.Nueva && !string.IsNullOrEmpty(f.Loteautomaticoid) && ArticulosService.GetCodigoFamilia(f.Fkarticulos) == ArticulosService.GetCodigoFamilia(fkarticulo) && ArticulosService.GetCodigoMaterial(f.Fkarticulos) == ArticulosService.GetCodigoMaterial(fkarticulo)).GroupBy(f => f.Loteautomaticoid).Select(f => new StContadoresLotes() { IdLote = f.Key, Texto = listado.First(j => j.Loteautomaticoid == f.Key).Lote }).ToList()), "application/json", Encoding.UTF8)); } catch (Exception ex) { errormessage = ex.Message; Response.StatusCode = 500; } return(Content(errormessage)); }
public override IModelView CreateView(string id) { var identificador = Funciones.Qint(id); var obj = _db.Set <Transformaciones>().Where(f => f.empresa == Empresa && f.id == identificador).Include(f => f.Transformacionesentradalin).Include(f => f.Transformacionessalidalin).Include(f => f.Transformacionescostesadicionales).Single(); var result = GetModelView(obj) as TransformacionesModel; result.Tipodealmacenlote = (TipoAlmacenlote?)obj.tipoalmacenlote; var configuracion = _appService.GetConfiguracion(_db); result.Materialsalidaigualentrada = configuracion.Materialentradaigualsalida; result.Lineasentrada = obj.Transformacionesentradalin.ToList().Select(f => new TransformacionesentradaLinModel() { Id = f.id, Fkarticulos = f.fkarticulos, Descripcion = f.descripcion, Lote = f.lote, Tabla = f.tabla, Cantidad = f.cantidad, Largo = f.largo, Ancho = f.ancho, Grueso = f.grueso, Fkunidades = f.fkunidades, Metros = f.metros, Notas = f.notas, Canal = f.canal, Revision = f.revision, Decimalesmonedas = f.decimalesmonedas, Decimalesmedidas = f.decimalesmedidas, Orden = f.orden ?? f.id, Fkcontadoreslotes = f.fkcontadoreslotes, Flagidentifier = f.flagidentifier, Costeadicionalvariable = f.costeacicionalvariable, Costeadicionalmaterial = f.costeadicionalmaterial, Costeadicionalotro = f.costeadicionalotro, Costeadicionalportes = f.costeadicionalportes, Loteautomaticoid = f.loteautomaticoid, Lotenuevocontador = f.lotenuevocontador ?? 0, Nueva = f.nuevo ?? false, Precio = f.precio }).ToList(); result.Lineassalida = obj.Transformacionessalidalin.ToList().Select(f => new TransformacionessalidaLinModel() { Id = f.id, Fkarticulos = f.fkarticulos, Descripcion = f.descripcion, Lote = f.lote, Tabla = f.tabla, Cantidad = f.cantidad, Largo = f.largo, Ancho = f.ancho, Grueso = f.grueso, Fkunidades = f.fkunidades, Metros = f.metros, Notas = f.notas, Canal = f.canal, Revision = f.revision, Decimalesmonedas = f.decimalesmonedas, Decimalesmedidas = f.decimalesmedidas, Orden = f.orden ?? f.id, Flagidentifier = f.flagidentifier, Precio = f.precio, }).ToList(); var primeritem = result.Lineassalida.FirstOrDefault(); if (primeritem != null) { var serviceFamilia = FService.Instance.GetService(typeof(FamiliasproductosModel), Context, _db) as FamiliasproductosService; var familia = serviceFamilia.get(ArticulosService.GetCodigoFamilia(primeritem.Fkarticulos)) as FamiliasproductosModel; if (familia.Tipofamilia == TipoFamilia.Bloque) { result.Lotesalida = primeritem.Lote; } } result.Costes = obj.Transformacionescostesadicionales.ToList().Select(f => new TransformacionesCostesadicionalesModel() { Id = f.id, Tipodocumento = (TipoCosteAdicional)f.tipodocumento, Referenciadocumento = f.referenciadocumento, Importe = f.importe, Porcentaje = f.porcentaje, Total = f.total, Tipocoste = (TipoCoste)f.tipocoste, Tiporeparto = (TipoReparto)f.tiporeparto, Notas = f.notas }).ToList(); return(result); }