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);
        }
Exemple #3
0
        private void ProcessarUnidade(string codigoUnidade)
        {
            if (String.IsNullOrWhiteSpace(codigoUnidade))
            {
                return;
            }

            if (!DadosArquivoFiscalService.RegistroJaExistente("0190", codigoUnidade))
            {
                // Apenas persiste uma unidade se a mesma ainda não tiver sido processada
                this.UpdateStatusAsynchronousExecution("Gerando Registro 0190");
                Registro0190 reg0190 = UnidadesService.GetRegistro0190(codigoUnidade);
                if (reg0190 != null)
                {
                    DadosArquivoFiscalService.PersistirRegistro(reg0190);
                }
            }
        }
        private void ProcessarUnidade(string codigoUnidade, string codEmp)
        {
            if (String.IsNullOrWhiteSpace(codigoUnidade))
            {
                return;
            }

            Registro0190 reg0190 = UnidadesService.GetRegistro0190(codigoUnidade);

            if (reg0190 != null)
            {
                if (unidades.Where(c => c.codEmp == codEmp && c.registro.ToString() == reg0190.ToString()).Count() == 0)
                {
                    // Apenas persiste uma unidade se a mesma ainda não tiver sido processada
                    //this.UpdateStatusAsynchronousExecution("Gerando Registro 0190");
                    //DadosArquivoPisCofinsService.PersistirRegistro(reg0190);
                    unidades.Add(new validacao {
                        codEmp = codEmp, registro = reg0190
                    });
                }
            }
        }
Exemple #5
0
        private void ProcessarProduto(string codigoProduto)
        {
            if (String.IsNullOrWhiteSpace(codigoProduto))
            {
                return;
            }

            IEnumerable <Registro0220> lreg220;

            if (!DadosArquivoFiscalService.RegistroJaExistente("0200", codigoProduto))
            {
                // Apenas persiste uma unidade se a mesma ainda não tiver sido processada
                this.UpdateStatusAsynchronousExecution("Gerando Registro 0200");
                Registro0200 reg0200 = ProdutosService.GetRegistro0200(codigoProduto);
                if (reg0200 != null)
                {
                    DadosArquivoFiscalService.PersistirRegistro(reg0200);
                    this.ProcessarUnidade(reg0200.UNID_INV);

                    lreg220 = ProdutosService.GetRegistros0220(reg0200.COD_ITEM);
                    foreach (Registro0220 item in lreg220)
                    {
                        this.UpdateStatusAsynchronousExecution("Gerando Registros 0220");
                        //item.FAT_CONV
                        if (!DadosArquivoFiscalService.RegistroJaExistente("0190", item.UNID_CONV))
                        {
                            // Apenas persiste uma unidade se a mesma ainda não tiver sido processada
                            this.UpdateStatusAsynchronousExecution("Gerando Registro 0190");
                            Registro0190 reg0190 = UnidadesService.GetRegistro0190(item.UNID_CONV);
                            if (reg0190 != null)
                            {
                                DadosArquivoFiscalService.PersistirRegistro(reg0190);
                            }
                        }
                        DadosArquivoFiscalService.PersistirRegistro(item);
                    }
                }
            }
        }
Exemple #6
0
 public UnidadesStartup(IContextService context, MarfilEntities db)
 {
     _context             = context;
     _tablasVariasService = new UnidadesService(context, db);
 }
        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);
        }
 public ImportacionService(IContextService context)
 {
     _context          = context;
     _serviceArticulos = FService.Instance.GetService(typeof(ArticulosModel), _context) as ArticulosService;
     _serviceUnidades  = FService.Instance.GetService(typeof(UnidadesModel), _context) as UnidadesService;
 }