public void GenerarOperacion(IStockPieza entrada)
        {
            var ms             = entrada as MovimientosstockModel;
            var serializer     = new Serializer <TransformacioneslotesDiarioStockSerializable>();
            var diario         = serializer.SetXml(ms.Documentomovimiento);
            var historicoStock = Db.Stockhistorico.SingleOrDefault(
                f => f.empresa == ms.Empresa && f.lote == ms.Lote && f.loteid == ms.Loteid && f.fkarticulos == ms.Fkarticulos);
            var unidadesService = FService.Instance.GetService(typeof(UnidadesModel), _context, Db) as UnidadesService;
            var unidadesModel   = unidadesService.get(ms.Fkunidadesmedida) as UnidadesModel;

            if (historicoStock != null)
            {
                var nuevapiezaStock = Db.Stockactual.Create();
                var properties      = nuevapiezaStock.GetType().GetProperties();
                foreach (var item in properties)
                {
                    item.SetValue(nuevapiezaStock, historicoStock.GetType().GetProperty(item.Name).GetValue(historicoStock));
                }
                nuevapiezaStock.largo  = ms.Largo;
                nuevapiezaStock.ancho  = ms.Ancho;
                nuevapiezaStock.grueso = ms.Grueso;
                nuevapiezaStock.metros = ms.Metros;
                nuevapiezaStock.costeacicionalvariable = (nuevapiezaStock.costeacicionalvariable ?? 0) + (ms.Costeadicionalvariable ?? 0);
                nuevapiezaStock.costeadicionalmaterial = (nuevapiezaStock.costeadicionalmaterial ?? 0) + (ms.Costeadicionalmaterial ?? 0);
                nuevapiezaStock.costeadicionalotro     = (nuevapiezaStock.costeadicionalotro ?? 0) + (ms.Costeadicionalotro ?? 0);
                nuevapiezaStock.costeadicionalportes   = (nuevapiezaStock.costeadicionalportes ?? 0) + (ms.Costeadicionalportes ?? 0);
                nuevapiezaStock.cantidaddisponible     = ms.Cantidad;
                nuevapiezaStock.cantidadtotal          = ms.Cantidad;
                nuevapiezaStock.metros = UnidadesService.CalculaResultado(unidadesModel, Math.Abs(ms.Cantidad),
                                                                          nuevapiezaStock.largo, nuevapiezaStock.ancho, nuevapiezaStock.grueso, nuevapiezaStock.metros ?? 0);
                nuevapiezaStock.fkarticulos = diario.Fkarticulosnuevo;
                Db.Stockactual.Add(nuevapiezaStock);
            }

            if (historicoStock != null)
            {
                var nuevapiezaStock = Db.Stockhistorico.Create();
                var properties      = historicoStock.GetType().GetProperties();
                foreach (var item in properties)
                {
                    item.SetValue(nuevapiezaStock, historicoStock.GetType().GetProperty(item.Name).GetValue(historicoStock));
                }
                nuevapiezaStock.largo                  = ms.Largo;
                nuevapiezaStock.ancho                  = ms.Ancho;
                nuevapiezaStock.grueso                 = ms.Grueso;
                nuevapiezaStock.metros                 = ms.Metros;
                nuevapiezaStock.fkarticulos            = diario.Fkarticulosnuevo;
                nuevapiezaStock.costeacicionalvariable = (nuevapiezaStock.costeacicionalvariable ?? 0) + (ms.Costeadicionalvariable ?? 0);
                nuevapiezaStock.costeadicionalmaterial = (nuevapiezaStock.costeadicionalmaterial ?? 0) + (ms.Costeadicionalmaterial ?? 0);
                nuevapiezaStock.costeadicionalotro     = (nuevapiezaStock.costeadicionalotro ?? 0) + (ms.Costeadicionalotro ?? 0);
                nuevapiezaStock.costeadicionalportes   = (nuevapiezaStock.costeadicionalportes ?? 0) + (ms.Costeadicionalportes ?? 0);
                nuevapiezaStock.cantidaddisponible     = ms.Cantidad;
                nuevapiezaStock.cantidadtotal          = ms.Cantidad;
                nuevapiezaStock.metros                 = UnidadesService.CalculaResultado(unidadesModel, Math.Abs(ms.Cantidad),
                                                                                          nuevapiezaStock.largo, nuevapiezaStock.ancho, nuevapiezaStock.grueso, nuevapiezaStock.metros ?? 0);

                Db.Stockhistorico.Remove(historicoStock);
                Db.Stockhistorico.Add(nuevapiezaStock);
            }
        }
        public ILineaImportar ImportarLinea(ILineaImportar model)
        {
            var articuloObj = _serviceArticulos.get(model.Fkarticulos) as ArticulosModel;
            var unidadesObj = _serviceUnidades.get(articuloObj.Fkunidades) as UnidadesModel;

            model.Metros = UnidadesService.CalculaResultado(unidadesObj, model.Cantidad, model.Largo ?? 0,
                                                            model.Ancho ?? 0, model.Grueso ?? 0, model.Metros);

            model.Importe = model.Metros * model.Precio;

            return(model);
        }
Пример #3
0
        private Stockactual EditarPieza(MovimientosstockModel model)
        {
            var item = _db.Stockactual.Single(f => f.empresa == model.Empresa && f.fkalmacenes == model.Fkalmacenes && f.fkarticulos == model.Fkarticulos &&
                                              f.lote == model.Lote && f.loteid == model.Loteid);

            if (model.Tipomovimiento == TipoOperacionService.MovimientoRemedir)
            {
                var articulosService = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService;
                var unidadesService  = FService.Instance.GetService(typeof(UnidadesModel), _context, _db) as UnidadesService;
                var articuloObj      = articulosService.GetArticulo(model.Fkarticulos);
                var unidadesObj      = unidadesService.get(model.Fkunidadesmedida) as UnidadesModel;

                if (articuloObj.Permitemodificarlargo)
                {
                    item.largo = model.Largo;
                }
                if (articuloObj.Permitemodificarancho)
                {
                    item.ancho = model.Ancho;
                }
                if (articuloObj.Permitemodificargrueso)
                {
                    item.grueso = model.Grueso;
                }

                var metros = UnidadesService.CalculaResultado(unidadesObj, model.Cantidad, item.largo, item.ancho, item.grueso, item.metros ?? 0);
                item.metros = metros;

                model.Metros = metros;

                if (model.Pesoneto.HasValue)
                {
                    item.pesonetolote = (model.Pesoneto ?? 0) * (item.metros ?? 0);
                    model.Pesoneto    = item.pesonetolote;
                }

                item.referenciaproveedor = model.Referenciaproveedor;
                if (model.Fkalmaceneszona > 0)
                {
                    item.fkalmaceneszona = model.Fkalmaceneszona;
                }
                item.fkincidenciasmaterial   = model.Fkincidenciasmaterial;
                item.fkcalificacioncomercial = model.Fkcalificacioncomercial;
                item.fktipograno             = model.Fktipograno;
                item.fktonomaterial          = model.Fktonomaterial;
                item.fkvariedades            = model.Fkvariedades;
            }
            else if (model.Tipomovimiento == TipoOperacionService.MovimientoAlmacen)
            {
                item.fkalmaceneszona = model.Ubicaciondestino;

                var historicoitem = _db.Stockhistorico.SingleOrDefault(f =>
                                                                       f.empresa == model.Empresa && f.fkalmacenes == model.Fkalmacenes && f.fkarticulos == model.Fkarticulos && f.lote == model.Lote &&
                                                                       f.loteid == model.Loteid) ?? _db.Stockhistorico.Create();

                historicoitem.fkalmaceneszona = model.Ubicaciondestino;

                return(item);
            }
            else if (model.Tipomovimiento == TipoOperacionService.InsertarReservaStock ||
                     model.Tipomovimiento == TipoOperacionService.EliminarReservaStock)
            {
                item.cantidaddisponible += model.Cantidad;
            }
            else
            {
                var operacion      = (model.Cantidad < 0) ? -1 : 1;
                var piezautilizada = PiezaUtilizada(model);
                item.cantidadtotal            += model.Cantidad;
                item.cantidaddisponible       += model.Cantidad;
                item.integridadreferencialflag = Guid.NewGuid();

                if (!piezautilizada)
                {
                    item.metros += model.Metros;
                    if (operacion > 0)
                    {
                        item.largo  = model.Largo;
                        item.ancho  = model.Ancho;
                        item.grueso = model.Grueso;
                        item.metros = model.Metros;
                    }
                }
                else
                {
                    item.metros += model.Metros * operacion;
                }

                //No tiene sentido los costes adicionales en el stock actual
                //item.costeacicionalvariable = (item.costeacicionalvariable ?? 0) + model.Costeadicionalvariable;
                //item.costeadicionalmaterial = (item.costeadicionalmaterial ?? 0) + model.Costeadicionalmaterial;
                //item.costeadicionalotro = (item.costeadicionalotro ?? 0) + model.Costeadicionalotro;
                //item.costeadicionalportes = (item.costeadicionalportes ?? 0) + model.Costeadicionalportes;

                item.pesonetolote   += model.Pesoneto;
                item.tipoalmacenlote = (int?)model.Tipodealmacenlote;
            }

            StockhistoricoAddOrUpdate(model);
            return(item);
        }
        private Stockactual EditarPieza(IStockPieza entrada)
        {
            var model = entrada as MovimientosstockModel;

            var item = Db.Stockactual.Single(f =>
                                             f.empresa == model.Empresa && f.fkalmacenes == model.Fkalmacenes && f.fkarticulos == model.Fkarticulos && f.lote == model.Lote &&
                                             f.loteid == model.Loteid);
            var articulosService = FService.Instance.GetService(typeof(ArticulosModel), _context, Db) as ArticulosService;
            var unidadesService  = FService.Instance.GetService(typeof(UnidadesModel), _context, Db) as UnidadesService;
            var articuloObj      = articulosService.GetArticulo(model.Fkarticulos);
            var unidadesObj      = unidadesService.get(model.Fkunidadesmedida) as UnidadesModel;

            if (articuloObj.Permitemodificarlargo)
            {
                item.largo = model.Largo;
            }
            if (articuloObj.Permitemodificarancho)
            {
                item.ancho = model.Ancho;
            }
            if (articuloObj.Permitemodificargrueso)
            {
                item.grueso = model.Grueso;
            }

            var metros = UnidadesService.CalculaResultado(unidadesObj, model.Cantidad, model.Largo, model.Ancho, model.Grueso, item.metros ?? 0);

            item.metros = metros;

            if (model.Pesoneto.HasValue)
            {
                item.pesonetolote = (model.Pesoneto ?? 0) * (item.metros ?? 0);
            }

            item.referenciaproveedor     = model.Referenciaproveedor;
            item.fkalmaceneszona         = model.Fkalmaceneszona;
            item.fkincidenciasmaterial   = model.Fkincidenciasmaterial;
            item.fkcalificacioncomercial = model.Fkcalificacioncomercial;
            item.fktipograno             = model.Fktipograno;
            item.fktonomaterial          = model.Fktonomaterial;
            item.fkvariedades            = model.Fkvariedades;

            var historicoitem = Db.Stockhistorico.Single(f =>
                                                         f.empresa == model.Empresa && f.fkalmacenes == model.Fkalmacenes && f.fkarticulos == model.Fkarticulos && f.lote == model.Lote &&
                                                         f.loteid == model.Loteid);

            if (model.Pesoneto.HasValue)
            {
                historicoitem.pesonetolote = item.pesonetolote;
            }
            historicoitem.largo  = item.largo;
            historicoitem.ancho  = item.ancho;
            historicoitem.grueso = item.grueso;
            historicoitem.metros = item.metros;
            historicoitem.referenciaproveedor     = item.referenciaproveedor;
            historicoitem.fkalmaceneszona         = item.fkalmaceneszona;
            historicoitem.fkincidenciasmaterial   = item.fkincidenciasmaterial;
            historicoitem.fkcalificacioncomercial = item.fkcalificacioncomercial;
            historicoitem.fktipograno             = item.fktipograno;
            historicoitem.fktonomaterial          = item.fktonomaterial;
            historicoitem.fkvariedades            = item.fkvariedades;
            //Db.Stockhistorico.AddOrUpdate(historicoitem);

            return(item);
        }