Beispiel #1
0
        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");
                }
            }
        }
        // GET: api/Supercuentas/5
        public HttpResponseMessage Get(string id)
        {
            using (var service = FService.Instance.GetService(typeof(ArticulosModel), ContextService) as ArticulosService)
            {
                var flujocadena  = HttpUtility.ParseQueryString(Request.RequestUri.Query)["flujo"];
                var fkcuentas    = HttpUtility.ParseQueryString(Request.RequestUri.Query)["fkcuentas"];
                var fkmonedas    = HttpUtility.ParseQueryString(Request.RequestUri.Query)["fkmonedas"];
                var fkregimeniva = HttpUtility.ParseQueryString(Request.RequestUri.Query)["fkregimeniva"];
                var flujo        = string.IsNullOrEmpty(flujocadena)? TipoFlujo.Venta: (TipoFlujo)Enum.Parse(typeof(TipoFlujo), flujocadena);
                var acabadodesde = HttpUtility.ParseQueryString(Request.RequestUri.Query)["FkAcabadoDesde"];
                var acabadohasta = HttpUtility.ParseQueryString(Request.RequestUri.Query)["FkAcabadoHasta"];
                var material     = HttpUtility.ParseQueryString(Request.RequestUri.Query)["Materialsalida"];

                var list = service.GetArticulo(id, fkcuentas, fkmonedas, fkregimeniva, flujo);
                if (!string.IsNullOrEmpty(acabadodesde))
                {
                    if (string.CompareOrdinal(ArticulosService.GetCodigoAcabado(list.Id), acabadodesde) < 0)
                    {
                        throw new Exception("Articulo no encontrado");
                    }
                }

                if (!string.IsNullOrEmpty(acabadohasta))
                {
                    if (string.CompareOrdinal(ArticulosService.GetCodigoAcabado(list.Id), acabadohasta) > 0)
                    {
                        throw new Exception("Articulo no encontrado");
                    }
                }

                if (!string.IsNullOrEmpty(material))
                {
                    if (material != ArticulosService.GetCodigoMaterial(list.Id))
                    {
                        throw new Exception("Articulo no encontrado");
                    }
                }
                var response = Request.CreateResponse(list == null? HttpStatusCode.InternalServerError :HttpStatusCode.OK);
                response.Content = new StringContent(JsonConvert.SerializeObject(list), Encoding.UTF8,
                                                     "application/json");
                return(response);
            }
        }
        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);
        }