コード例 #1
0
        private void ValidarKit(List <DivisionLotessalidaLinModel> listado, DivisionLotessalidaLinVistaModel model)
        {
            var serviceKit = FService.Instance.GetService(typeof(KitModel), _context, _db);

            if (serviceKit.exists(model.Lote))
            {
                var kitobj = serviceKit.get(model.Lote) as KitModel;

                foreach (var item in kitobj.Lineas)
                {
                    if (!listado.Any(f => item.Lote == f.Lote && Funciones.Qint(item.Loteid) == f.Tabla))
                    {
                        throw new ValidationException(string.Format("El Kit {0} no está completo, falta añadir el lote {1}{2}", model.Lote, item.Lote, Funciones.RellenaCod(item.Loteid, 3)));
                    }
                }
            }
        }
コード例 #2
0
        public ActionResult AgregarLineas(DivisionLotessalidaLinVistaModel model)
        {
            var errormessage = "";

            try
            {
                var listadoSalida  = Session[sessionsalida] as List <DivisionLotessalidaLinModel>;
                var listadoEntrada = Session[sessionentrada] as List <DivisionLotesentradaLinModel>;

                //NO PUEDE HABER MAS DE UNA SALIDA
                if (listadoSalida.Count >= 1)
                {
                    throw new ValidationException("Ya se ha añadido un lote de salida");
                }

                using (var divisionLotesService = FService.Instance.GetService(typeof(DivisionLotesModel), ContextService) as DivisionLotesService)
                {
                    listadoSalida          = divisionLotesService.CrearNuevasLineasSalida(listadoSalida, model); //CREAMOS LA SALIDA
                    Session[sessionsalida] = listadoSalida;

                    //CREAMOS LAS ENTRADAS
                    DivisionLotessalidaLinVistaModel linea = new DivisionLotessalidaLinVistaModel();

                    listadoEntrada          = divisionLotesService.CrearDosNuevasLineasEntrada(listadoSalida, listadoEntrada);
                    Session[sessionentrada] = listadoEntrada;
                }

                return(Content(JsonConvert.SerializeObject(model), "application/json", Encoding.UTF8));
            }
            catch (Exception ex)
            {
                errormessage = ex.Message;
            }


            return(Content("{\"error\":\"" + errormessage + "\"}", "application/json", Encoding.UTF8));
        }
コード例 #3
0
        public List <DivisionLotessalidaLinModel> GenerarLineasSinStock(List <DivisionLotessalidaLinModel> listado, DivisionLotessalidaLinVistaModel model, ArticulosDocumentosModel articuloObj, int maxId)
        {
            var familiasService = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService;
            var unidadesService = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService;

            var monedasService = FService.Instance.GetService(typeof(MonedasModel), _context, _db) as MonedasService;
            var monedasObj     = monedasService.get(model.Fkmonedas) as MonedasModel;
            var familiaObj     = familiasService.get(ArticulosService.GetCodigoFamilia(model.Fkarticulos)) as FamiliasproductosModel;

            var ancho  = model.Ancho;
            var largo  = model.Largo;
            var grueso = model.Grueso;

            if (model.Modificarmedidas)
            {
                ancho  = model.Ancho;
                largo  = model.Largo;
                grueso = model.Grueso;
            }
            else
            {
                ancho  = articuloObj.Ancho.Value;
                largo  = articuloObj.Largo.Value;
                grueso = articuloObj.Grueso.Value;
            }

            var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel;
            var metros      = UnidadesService.CalculaResultado(unidadesObj, model.Cantidad, largo, ancho, grueso, model.Metros);

            model.Metros = metros;

            listado.Add(new DivisionLotessalidaLinModel(_context)
            {
                Id               = maxId++,
                Fkarticulos      = model.Fkarticulos,
                Descripcion      = articuloObj.Descripcion,
                Cantidad         = model.Cantidad,
                Largo            = largo,
                Ancho            = ancho,
                Grueso           = grueso,
                Fkunidades       = articuloObj.Fkunidades,
                Metros           = metros,
                Decimalesmedidas = unidadesObj.Decimalestotales,
                Decimalesmonedas = monedasObj.Decimales,
                Canal            = model.Canal,
            }
                        );

            return(listado);
        }
コード例 #4
0
        private List <DivisionLotessalidaLinModel> GenerarLineasConStock(List <DivisionLotessalidaLinModel> listado, DivisionLotessalidaLinVistaModel model, ArticulosDocumentosModel articuloObj, int maxId)
        {
            var stockactualService = new StockactualService(_context, _db);
            var articulosService   = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var familiasService    = FService.Instance.GetService(typeof(FamiliasproductosModel), _context, _db) as FamiliasproductosService;
            var unidadesService    = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService;

            var lotesService = new LotesService(_context);

            foreach (var linea in model.Lineas)
            {
                if (!listado.Any(f => f.Lote == linea.Lote && f.Tabla == Funciones.Qint(linea.Loteid)))
                {
                    var stockObj =
                        _db.Stockhistorico.Single(
                            f =>
                            f.fkalmacenes == _context.Fkalmacen && f.empresa == _context.Empresa &&
                            f.lote == linea.Lote && f.loteid == linea.Loteid);
                    var loteObj = lotesService.Get(stockObj.id.ToString());

                    articuloObj = articulosService.GetArticulo(linea.Fkarticulos, model.Fkcuenta, model.Fkmonedas, model.Fkregimeniva, model.Flujo);
                    var familiaObj = familiasService.get(ArticulosService.GetCodigoFamilia(linea.Fkarticulos)) as FamiliasproductosModel;

                    var ancho  = linea.Ancho;
                    var largo  = linea.Largo;
                    var grueso = linea.Grueso;
                    var item   = familiaObj.Gestionstock
                        ? stockactualService.GetArticuloPorLoteOCodigo(
                        string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3)), model.Fkalmacen,
                        Empresa) as MovimientosstockModel : null;
                    if (model.Modificarmedidas)
                    {
                        ancho  = model.Ancho;
                        largo  = model.Largo;
                        grueso = model.Grueso;
                    }
                    else
                    {
                        ancho  = item?.Ancho ?? linea.Ancho;
                        largo  = item?.Largo ?? linea.Largo;
                        grueso = item?.Grueso ?? linea.Grueso;
                    }
                    if (linea.Cantidad > item.Cantidad)
                    {
                        throw new ValidationException(string.Format("La cantidad indicada para el lote {0} es superior a la que hay en el stock actual", string.Format("{0}{1}", linea.Lote, Funciones.RellenaCod(linea.Loteid, 3))));
                    }
                    var unidadesObj = unidadesService.get(familiaObj.Fkunidadesmedida) as UnidadesModel;

                    var metros = UnidadesService.CalculaResultado(unidadesObj, articuloObj.Lotefraccionable ? model.Cantidad : linea.Cantidad, largo, ancho, grueso, model.Metros);
                    linea.Metros = metros;



                    listado.Add(new DivisionLotessalidaLinModel(_context)
                    {
                        Id                = maxId++,
                        Fkarticulos       = linea.Fkarticulos,
                        Descripcion       = articuloObj.Descripcion,
                        Lote              = linea.Lote,
                        Tabla             = Funciones.Qint(linea.Loteid),
                        Cantidad          = articuloObj.Lotefraccionable ? model.Cantidad : linea.Cantidad,
                        Largo             = largo,
                        Ancho             = ancho,
                        Grueso            = grueso,
                        Fkunidades        = articuloObj.Fkunidades,
                        Metros            = metros,
                        Decimalesmedidas  = unidadesObj.Decimalestotales,
                        Canal             = model.Canal,
                        Flagidentifier    = Guid.NewGuid(),
                        Precio            = loteObj.Costenetocompra,
                        Tipodealmacenlote = (TipoAlmacenlote?)stockObj.tipoalmacenlote,
                    }
                                );
                }
            }

            ValidarKit(listado, model);

            return(listado);
        }
コード例 #5
0
        public List <DivisionLotessalidaLinModel> CrearNuevasLineasSalida(List <DivisionLotessalidaLinModel> listado, DivisionLotessalidaLinVistaModel model)
        {
            var articulosService = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
            var maxId            = listado.Any() ? listado.Max(f => f.Id) + 1 : 1;
            var articuloObj      = articulosService.GetArticulo(model.Fkarticulos, model.Fkcuenta, model.Fkmonedas, model.Fkregimeniva, model.Flujo);

            if (articuloObj != null && articuloObj.Tipogestionlotes == Tipogestionlotes.Singestion)
            {
                throw new Exception("Error, el articulo debe tener gestión de lotes");
            }

            return(GenerarLineasConStock(listado, model, articuloObj, maxId));
        }