コード例 #1
0
        static public List <Alerts> ShowAllAlerts()
        {
            DBRequest     req      = new DBRequest();
            List <Alerts> lstAlert = req.GetAllAlerts();

            return(lstAlert);
        }
コード例 #2
0
        static public List <StorageBoxes> ShowAllBoxes()
        {
            DBRequest           req    = new DBRequest();
            List <StorageBoxes> lstBox = req.GetAllBoxes();

            return(lstBox);
        }
コード例 #3
0
        static public bool AddLog(string action, int bottleID)
        {
            DateTime  moment = DateTime.Now;
            DBRequest req    = new DBRequest();

            bool res = false;

            switch (action)
            {
            case "ajoutNouvelle":
                req.LogAddNew(bottleID);
                break;

            case "ajoutExistante":
                req.LogAddExist(bottleID);
                break;

            case "retrait":
                req.LogDel(bottleID);
                break;

            case "default":
                break;
            }
            return(res);
        }
コード例 #4
0
        static public Bottles GetBottleWithName(string name)
        {
            DBRequest req = new DBRequest();
            Bottles   bot = req.GetBottleWithName(name);

            return(bot);
        }
コード例 #5
0
        static public List <Bottles> ShowAllBottles()
        {
            DBRequest      req    = new DBRequest();
            List <Bottles> lstBot = req.GetAllBottles();

            return(lstBot);
        }
コード例 #6
0
        private bool ExecuteNonQuery(DBRequest request)
        {
            //Controllo
            if (!registered.Contains(request.Controller))
            {
                throw new Exception("Il Controller non è registrato all'inizio dell'esecuzione");
            }

            //Inizio
            DB2Transaction transaction = databaseConnection.GetTransaction();
            DB2Command     command     = databaseConnection.GetCommand();

            command.CommandText = request.Command;
            command.Transaction = transaction;

            //Esecuzione
            try {
                command.ExecuteNonQuery();
            }
            catch (Exception e) {
                throw new Exception("Errore: " + e.Message);
            }

            //Controllo
            if (!registered.Contains(request.Controller))
            {
                transaction.Rollback();
                throw new Exception("Il Controller non è registrato alla fine dell'esecuzione");
            }

            //Fine
            transaction.Commit();
            return(true);
        }
コード例 #7
0
        static public List <Bottles> GetBottlesWithAlert(int id)
        {
            DBRequest      req    = new DBRequest();
            List <Bottles> lstBot = req.GetBottlesWithAlert(id);

            return(lstBot);
        }
コード例 #8
0
        static public List <Logs> GetAllLogs()
        {
            DBRequest   req    = new DBRequest();
            List <Logs> lstlog = req.GetAllLogs();

            return(lstlog);
        }
コード例 #9
0
        static public bool UpdateBottle(string wineName, int number, double volume, int year)
        {
            DBRequest req = new DBRequest();

            bool res = req.UpdateBottle(wineName, number, volume, year);

            return(res);
        }
コード例 #10
0
        static public bool RemoveBottle(string name, int num, double vol, string manu, int year)
        {
            bool      res = false;
            DBRequest req = new DBRequest();

            res = req.RemoveBottle(name, num, vol, manu, year);

            return(res);
        }
コード例 #11
0
        static public bool AddStorageWDesc(string name, string desc)
        {
            bool      res = false;
            DBRequest req = new DBRequest();

            res = req.AddStorageWDesc(name, desc);

            return(res);
        }
コード例 #12
0
        static public bool RemoveStorage(string name)
        {
            bool      res = false;
            DBRequest req = new DBRequest();

            res = req.RemoveStorage(name);

            return(res);
        }
コード例 #13
0
        static public bool AddBottle(string name, string col, int num, double vol, string manu, int year, string box)
        {
            bool      res = false;
            DBRequest req = new DBRequest();

            res = req.AddBottle(name, col, num, vol, manu, year, box);

            return(res);
        }
コード例 #14
0
        static public List <Bottles> OrderByVarietal()
        {
            List <Bottles> lstBot = new List <Bottles>();
            DBRequest      req    = new DBRequest();

            lstBot = req.OrderByVarietal();

            return(lstBot);
        }
コード例 #15
0
        static public List <Bottles> OrderByManufacturer()
        {
            List <Bottles> lstBot = new List <Bottles>();
            DBRequest      req    = new DBRequest();

            lstBot = req.OrderByManufacturer();

            return(lstBot);
        }
コード例 #16
0
        static public List <Bottles> ResearchByKeyword(string key)
        {
            List <Bottles> lstBot = new List <Bottles>();
            DBRequest      req    = new DBRequest();

            lstBot = req.ResearchByKeyword(key);

            return(lstBot);
        }
コード例 #17
0
        static public bool AddBottleWithVarietal(string name, string col, int num, double vol, string manu, int year, string box, List <string> var)
        {
            bool      res = false;
            DBRequest req = new DBRequest();

            res = req.AddBottleWVar(name, col, num, vol, manu, year, box, var);

            return(res);
        }
コード例 #18
0
        static public bool AddAlertToBottle(string name, string alert)
        {
            bool      res = false;
            DBRequest req = new DBRequest();

            res = req.AddAlertToBottle(name, alert);

            return(res);
        }
コード例 #19
0
        static public bool DelAlert(string alert)
        {
            bool      res = false;
            DBRequest req = new DBRequest();

            res = req.DelAlert(alert);

            return(res);
        }
コード例 #20
0
        static public bool AddAlert(string alert, string message)
        {
            bool      res = false;
            DBRequest req = new DBRequest();

            res = req.AddAlert(alert, message);

            return(res);
        }
コード例 #21
0
        public GenericResult CreateTransferShipmentFor(string requisitionId)
        {
            GenericResult        response    = new GenericResult();
            RequisitionViewModel requisition = null;

            if (!string.IsNullOrEmpty(requisitionId))
            {
                var tempReq = DBRequest.GetById(requisitionId);
                if (tempReq != null)
                {
                    requisition = tempReq.ParseToViewModel();
                }
            }
            return(CreateTransferShipmentFor(requisition));
        }
コード例 #22
0
        public JsonResult GetRequisicoes()
        {
            List <RequisitionStates> states = new List <RequisitionStates>()
            {
                RequisitionStates.Approved,
                RequisitionStates.Archived,
                RequisitionStates.Available,
                RequisitionStates.Consulta,
                RequisitionStates.Encomenda,
                RequisitionStates.Pending,
                RequisitionStates.Received,
                RequisitionStates.Treated,
                RequisitionStates.Validated
            };

            List <AcessosDimensões> userDimensions = DBUserDimensions.GetByUserId(User.Identity.Name);


            List <RequisitionViewModel> requisitions = DBRequest.GetByState(states, userDimensions, _config.NAVDatabaseName, _config.NAVCompanyName).ParseToViewModel();

            return(Json(requisitions));
        }
コード例 #23
0
        public bool AskNonQuery(DBRequest request)
        {
            //Controllo
            if (!registered.Contains(request.Controller))
            {
                throw new Exception("Il Controller non è registrato");
            }
            if (queue.Contains(request))
            {
                throw new Exception("La richiesta è già in corso");
            }

            //Aggiunta alla coda
            queue.Enqueue(request);

            //Attesa
            bool first = queue.Peek().Equals(request);

            while (!first)
            {
                first = queue.Peek().Equals(request);
            }

            //Esecuzione
            bool result;

            try {
                result = ExecuteNonQuery(request);
            }
            catch (Exception e) {
                throw e;
            }
            //Comunque vada, la richiesta viene tolta dalla fila
            finally {
                queue.Dequeue();
            }
            return(result);
        }
コード例 #24
0
        private DBReaderController ExecuteQuery(DBRequest request)
        {
            //Controllo
            if (!registered.Contains(request.Controller))
            {
                throw new Exception("Il Controller non è registrato all'inizio dell'esecuzione");
            }

            //Inizio
            DBReaderController result;
            DB2DataReader      reader;
            DB2Transaction     transaction = databaseConnection.GetTransaction();
            DB2Command         command     = databaseConnection.GetCommand();

            command.CommandText = request.Command;
            command.Transaction = transaction;

            //Esecuzione
            try {
                reader = command.ExecuteReader();
            }
            catch (Exception e) {
                throw new Exception("Errore in lettura: " + e.Message);
            }

            //Controllo
            if (!registered.Contains(request.Controller))
            {
                transaction.Rollback();
                throw new Exception("Il Controller non è registrato alla fine dell'esecuzione");
            }

            //Fine
            transaction.Commit();
            return(result = new DBReaderController(reader));
        }
コード例 #25
0
        public JsonResult CriarEncomendaCabimento([FromBody] List <LinhasPreEncomendaView> item)
        {
            //if (item != null)
            //{
            //    try
            //    {
            //        RequisitionService serv = new RequisitionService(configws, HttpContext.User.Identity.Name);
            //        item = serv.CreatePurchaseOrderFor(item);


            //    }
            //    catch (Exception ex)
            //    {
            //        item.eReasonCode = 2;
            //        item.eMessage = "Ocorreu um erro ao criar encomenda de compra (" + ex.Message + ")";
            //    }
            //}
            //else
            //{
            //    item = new LinhasPreEncomendaView()
            //    {
            //        eReasonCode = 3,
            //        eMessage = "Não é possivel criar encomenda de compra. A requisição não pode ser nula."
            //    };
            //}
            //return Json(item);



            /*
             * 1º - filtrar os itens que chegam aqui, ficando apenas com os que são:
             *  --> Documento a Criar = Encomenda (1)
             *  --> Criar Documento = true
             *  --> Nº Encomenda Aberto = ''
             *  --> Nº Linha Encomenda Aberto = ''
             * 2º - Criar Encomenda
             * 3º - As linhas da Requisição devem ficar marcadas  com o Nº da Encomenda criada (cada item tem um Nº Linha Requisição)
             * 4º - Colocar as linhas com Tratadas = 1
             */

            ErrorHandler resultado = new ErrorHandler
            {
                eReasonCode = 1,
                eMessage    = "Criada Encomenda com sucesso."
            };

            if (item != null)
            {
                try
                {
                    List <LinhasPreEncomendaView> list = item.Where(it => it.DocumentoACriar == 1).Where(it => it.CriarDocumento == true).Where(it => it.NumEncomendaAberto == string.Empty).Where(it => !it.NumLinhaEncomendaAberto.HasValue).ToList();

                    List <PurchOrderDTO> purchOrders = new List <PurchOrderDTO>();

                    try
                    {
                        if (list != null && list.Count() > 0)
                        {
                            purchOrders = list.GroupBy(x =>
                                                       x.NumFornecedor,
                                                       x => x,
                                                       (key, items) => new PurchOrderDTO
                            {
                                SupplierId               = key,
                                RequisitionId            = list.Where(f => f.NumFornecedor == key).FirstOrDefault().NumRequisicao,
                                CenterResponsibilityCode = list.Where(f => f.NumFornecedor == key).FirstOrDefault().CodigoCentroResponsabilidade,
                                FunctionalAreaCode       = list.Where(f => f.NumFornecedor == key).FirstOrDefault().CodigoAreaFuncional,
                                RegionCode               = list.Where(f => f.NumFornecedor == key).FirstOrDefault().CodigoRegiao,
                                LocalMarketRegion        = list.Where(f => f.NumFornecedor == key).FirstOrDefault().CodigoLocalizacao,
                                Lines = items.Select(line => new PurchOrderLineDTO()
                                {
                                    LineId                   = line.NumLinhaPreEncomenda,
                                    Type                     = null,
                                    Code                     = line.CodigoProduto,
                                    Description              = line.DescricaoProduto,
                                    ProjectNo                = line.NumProjeto,
                                    QuantityRequired         = line.QuantidadeDisponibilizada,
                                    UnitCost                 = line.CustoUnitario,
                                    LocationCode             = line.CodigoLocalizacao,
                                    OpenOrderNo              = line.NumEncomendaAberto,
                                    OpenOrderLineNo          = line.NumLinhaEncomendaAberto,
                                    CenterResponsibilityCode = line.CodigoCentroResponsabilidade,
                                    FunctionalAreaCode       = line.CodigoAreaFuncional,
                                    RegionCode               = line.CodigoRegiao,
                                    UnitMeasureCode          = line.CodigoUnidadeMedida,
                                    VATBusinessPostingGroup  = string.Empty,
                                    VATProductPostingGroup   = string.Empty,
                                }).ToList()
                            }).ToList();
                        }
                    }
                    catch
                    {
                        throw new Exception("Ocorreu um erro ao agrupar as linhas.");
                    }

                    if (purchOrders != null && purchOrders.Count() > 0)
                    {
                        purchOrders.ForEach(purchOrder =>
                        {
                            RequisitionViewModel requisition = DBRequest.GetById(purchOrder.RequisitionId).ParseToViewModel();

                            try
                            {
                                //purchOrder.Purchaser_Code = User.Identity.Name;
                                purchOrder.Purchaser_Code = string.IsNullOrEmpty(DBUserConfigurations.GetById(User.Identity.Name).EmployeeNo) ? "" : DBUserConfigurations.GetById(User.Identity.Name).EmployeeNo;

                                var result = CreateNAVPurchaseOrderFor(purchOrder, Convert.ToDateTime(requisition.ReceivedDate));
                                if (result.CompletedSuccessfully)
                                {
                                    foreach (PurchOrderLineDTO Linha in purchOrder.Lines)
                                    {
                                        LinhasPreEncomenda LinhaPre = DBEncomendas.GetLinhasPreEncomenda((int)Linha.LineId);

                                        if (LinhaPre != null)
                                        {
                                            string ReqNo   = LinhaPre.NºRequisição;
                                            int ReqNoLinha = (int)LinhaPre.NºLinhaRequisição;

                                            Requisição Req = DBRequest.GetById(ReqNo);
                                            if (Req != null)
                                            {
                                                Req.NºEncomenda           = result.ResultValue;
                                                Req.UtilizadorModificação = User.Identity.Name;
                                                Req.DataHoraModificação   = DateTime.Now;
                                                if (DBRequest.Update(Req) != null)
                                                {
                                                    LinhasRequisição ReqLinha = DBRequestLine.GetByRequisicaoNoAndLineNo(ReqNo, ReqNoLinha);
                                                    if (ReqLinha != null)
                                                    {
                                                        ReqLinha.NºEncomendaCriada     = result.ResultValue;
                                                        ReqLinha.UtilizadorModificação = User.Identity.Name;
                                                        ReqLinha.DataHoraModificação   = DateTime.Now;
                                                        DBRequestLine.Update(ReqLinha);
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    foreach (LinhasPreEncomendaView Linha in list)
                                    {
                                        if (Linha.NumFornecedor == purchOrder.SupplierId)
                                        {
                                            Linha.NumPreEncomenda       = result.ResultValue;
                                            Linha.DocumentoACriar       = null;
                                            Linha.CriarDocumento        = false;
                                            Linha.Tratada               = true;
                                            Linha.UtilizadorModificacao = User.Identity.Name;
                                            Linha.DataHoraModificacao   = DateTime.Now;
                                            DBEncomendas.Update(DBEncomendas.CastLinhasPreEncomendaToDB(Linha));
                                        }
                                    }

                                    resultado.eMessages.Add(new TraceInformation(TraceType.Success, "Criada encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; "));

                                    //Update req
                                    //requisition.OrderNo = result.ResultValue;

                                    //Update Requisition Lines
                                    //requisition.Lines.Where(x => x.LineNo == purchOrder.OpenOrderLineNo).ToList().ForEach(line =>
                                    //{
                                    //    line.CreatedOrderNo = result.ResultValue;
                                    //    line.UpdateUser = User.Identity.Name;
                                    //    line.UpdateDateTime = DateTime.Now;
                                    //});
                                    //Commit to DB
                                    //var updatedReq = DBRequest.Update(requisition.ParseToDB(), true);



                                    //bool linesUpdated = DBRequestLine.Update(requisition.Lines.ParseToDB());
                                    //if (linesUpdated)
                                    //if (updatedReq != null)
                                    //{
                                    //    resultado.eMessages.Add(new TraceInformation(TraceType.Success, "Criada encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; "));
                                    //}
                                }
                            }
                            catch (Exception ex)
                            {
                                resultado.eMessages.Add(new TraceInformation(TraceType.Error, "Ocorreu um erro ao criar encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; "));
                                resultado.eMessages.Add(new TraceInformation(TraceType.Exception, purchOrder.SupplierId + " " + ex.Message));
                            }

                            if (resultado.eMessages.Any(x => x.Type == TraceType.Error))
                            {
                                resultado.eReasonCode = 2;
                                //resultado.eMessage = "Ocorreram erros ao criar encomenda de compra.";

                                resultado.eMessage = "Ocorreram erros ao criar encomenda de compra." + Environment.NewLine + resultado.eMessages[resultado.eMessages.Count() - 1].Message;
                            }
                            else
                            {
                                resultado.eReasonCode = 1;
                                resultado.eMessage    = "Encomenda de compra criada com sucesso.";
                            }
                        });
                    }
                    else
                    {
                        resultado.eReasonCode = 3;
                        resultado.eMessage    = "Não existem linhas que cumpram os requisitos de validação do mercado local.";
                    }
                }
                catch (Exception ex)
                {
                    resultado.eReasonCode = -1;
                    resultado.eMessage    = "Erro desconhecido.";
                }
            }

            return(Json(resultado));
        }
コード例 #26
0
        public RequisitionViewModel CreateMarketConsultFor(RequisitionViewModel requisition)
        {
            try
            {
                //Verificar se pode criar uma consulta de mercado
                if (requisition.Lines.Where(p => p.CreateMarketSearch == true).Where(p => string.IsNullOrEmpty(p.QueryCreatedMarketNo)).Count() <= 0)
                {
                    requisition.eReasonCode = -1;
                    requisition.eMessage    = "Consulta ao Mercado não pode ser criada! As linhas devem estar marcadas com 'Criar Consulta Mercado' e não ter 'Nº de Consulta Mercado Criada'";
                    return(requisition);
                }

                //Criar nova Consulta Mercado - Obtenção do novo NumConsultaMercado e incrementar Numerações
                ConsultaMercado consultaMercado = DBConsultaMercado.Create(changedByUserName);

                //Ir Buscar o Nº Mecanográfico do utilizado
                ConfigUtilizadores UC = DBUserConfigurations.GetById(changedByUserName);

                //Actualizar o registo com os dados possiveis
                consultaMercado.CodProjecto               = requisition.ProjectNo == "" ? null : requisition.ProjectNo;
                consultaMercado.Descricao                 = "Consulta Mercado - " + requisition.RequisitionNo;
                consultaMercado.CodRegiao                 = requisition.RegionCode;
                consultaMercado.CodAreaFuncional          = requisition.FunctionalAreaCode;
                consultaMercado.CodCentroResponsabilidade = requisition.CenterResponsibilityCode;
                consultaMercado.DataPedidoCotacao         = DateTime.Now;
                consultaMercado.CodLocalizacao            = requisition.LocalCode;
                consultaMercado.Destino = 0;
                consultaMercado.Estado  = 0;
                consultaMercado.UtilizadorRequisicao = requisition.CreateUser;
                consultaMercado.Fase                   = 0;
                consultaMercado.Modalidade             = 0;
                consultaMercado.PedidoCotacaoCriadoEm  = DateTime.Now;
                consultaMercado.PedidoCotacaoCriadoPor = changedByUserName;
                consultaMercado.NumRequisicao          = requisition.RequisitionNo;
                consultaMercado.Urgente                = requisition.Urgent;
                consultaMercado.CodComprador           = !string.IsNullOrEmpty(UC.EmployeeNo) ? UC.EmployeeNo : null;

                consultaMercado = DBConsultaMercado.Update(consultaMercado);

                //Para cada linha da requisição
                foreach (RequisitionLineViewModel requisitionLine in requisition.Lines.Where(p => p.CreateMarketSearch == true).Where(p => p.QueryCreatedMarketNo == null))
                {
                    decimal _qty            = requisitionLine.QuantityToRequire != null ? requisitionLine.QuantityToRequire.Value : 0;
                    decimal _custo          = requisitionLine.UnitCost != null ? requisitionLine.UnitCost.Value : 0;
                    decimal _custoTotalPrev = Math.Round(_qty * _custo * 100) / 100;

                    DateTime?_dataEntrega;

                    try
                    {
                        _dataEntrega = DateTime.Parse(requisitionLine.ExpectedReceivingDate);
                    }
                    catch
                    {
                        _dataEntrega = null;
                    }

                    //Inserir Linhas na tabela "Linhas_Consulta_Mercado"
                    LinhasConsultaMercado linhasConsultaMercado = new LinhasConsultaMercado()
                    {
                        NumConsultaMercado        = consultaMercado.NumConsultaMercado,
                        CodProduto                = requisitionLine.Code,
                        Descricao                 = requisitionLine.Description,
                        Descricao2                = requisitionLine.Description2,
                        NumProjecto               = requisitionLine.ProjectNo,
                        CodRegiao                 = requisitionLine.RegionCode,
                        CodAreaFuncional          = requisitionLine.FunctionalAreaCode,
                        CodCentroResponsabilidade = requisitionLine.CenterResponsibilityCode,
                        CodLocalizacao            = requisitionLine.LocalCode,
                        Quantidade                = requisitionLine.QuantityToRequire,
                        CustoUnitarioPrevisto     = requisitionLine.UnitCost,
                        CustoTotalPrevisto        = _custoTotalPrev,
                        CodUnidadeMedida          = requisitionLine.UnitMeasureCode,
                        DataEntregaPrevista       = _dataEntrega,
                        NumRequisicao             = requisition.RequisitionNo,
                        LinhaRequisicao           = requisitionLine.LineNo,
                        CriadoEm  = DateTime.Now,
                        CriadoPor = changedByUserName
                    };
                    linhasConsultaMercado = DBConsultaMercado.Create(linhasConsultaMercado);


                    //Verificar se tem Fornecedor identificado
                    if (requisitionLine.SupplierNo != null)
                    {
                        //Verificar se na tabela "Seleccao_Entidades" já temos este Fornecedor para esta Consulta Mercado
                        SeleccaoEntidades seleccaoEntidades = DBConsultaMercado.GetSeleccaoEntidadesPorNumConsultaFornecedor(consultaMercado.NumConsultaMercado, requisitionLine.SupplierNo);

                        if (seleccaoEntidades == null)
                        {
                            seleccaoEntidades = new SeleccaoEntidades()
                            {
                                NumConsultaMercado = consultaMercado.NumConsultaMercado,
                                CodFornecedor      = requisitionLine.SupplierNo,
                                NomeFornecedor     = !string.IsNullOrEmpty(requisitionLine.SupplierNo) ? DBNAV2017Supplier.GetAll(_config.NAVDatabaseName, _config.NAVCompanyName, requisitionLine.SupplierNo).FirstOrDefault().Name : "",
                                Selecionado        = true,
                                Preferencial       = true
                            };

                            seleccaoEntidades = DBConsultaMercado.Create(seleccaoEntidades);
                        }
                    }

                    requisitionLine.QueryCreatedMarketNo = consultaMercado.NumConsultaMercado;

                    DBRequestLine.Update(DBRequestLine.ParseToDB(requisitionLine));
                }

                requisition.MarketInquiryNo = consultaMercado.NumConsultaMercado;

                Requisição requisição = DBRequest.ParseToDB(requisition);
                DBRequest.Update(requisição);
                requisition = DBRequest.ParseToViewModel(requisição);

                requisition.eReasonCode = 1;
                requisition.eMessage    = "Consulta ao Mercado " + consultaMercado.NumConsultaMercado + " criada com sucesso";
            }
            catch (Exception ex)
            {
                requisition.eReasonCode = -1;
                requisition.eMessage    = ex.Message;
            }

            return(requisition);
        }
コード例 #27
0
        public RequisitionViewModel ValidateRequisition(RequisitionViewModel requisition)
        {
            requisition.eReasonCode = 99;
            requisition.eMessage    = "Ocorreu um erro na Validação da Requisição.";

            try
            {
                if (requisition != null)
                {
                    if (requisition.State == RequisitionStates.Approved)
                    {
                        if (requisition.Lines != null && requisition.Lines.Count > 0)
                        {
                            var linesToValidate = requisition.Lines
                                                  .Where(x => x.QuantityRequired != null && x.QuantityRequired.HasValue && x.QuantityRequired.Value > 0)
                                                  .ToList();

                            if (linesToValidate != null && linesToValidate.Count > 0)
                            {
                                linesToValidate.ForEach(item =>
                                {
                                    item.QuantityToProvide = item.QuantityRequired; // QuantidadeADisponibilizar = QuantidadeRequerida
                                    item.UpdateUser        = this.changedByUserName;
                                    item.UpdateDateTime    = DateTime.Now;

                                    if (DBRequestLine.Update(item.ParseToDB()) == null)
                                    {
                                        requisition.eReasonCode = 2;
                                        requisition.eMessage    = "Ocorreu um erro ao atualizar as linhas na Validação da Requisição.";
                                    }
                                });

                                if (requisition.eReasonCode == 99)
                                {
                                    requisition.State = RequisitionStates.Validated;
                                    requisition.ResponsibleValidation = this.changedByUserName;
                                    requisition.ValidationDate        = DateTime.Now;
                                    requisition.UpdateUser            = this.changedByUserName;

                                    var updatedReq = DBRequest.UpdateHeaderAndLines(requisition.ParseToDB(), true);
                                    if (updatedReq != null)
                                    {
                                        requisition             = updatedReq.ParseToViewModel();
                                        requisition.eReasonCode = 1;
                                        requisition.eMessage    = "Requisição validada com sucesso.";
                                    }
                                    else
                                    {
                                        requisition.eReasonCode = 3;
                                        requisition.eMessage    = "Ocorreu um erro ao validar a requisição.";
                                    }
                                }
                            }
                            else
                            {
                                requisition.eReasonCode = 4;
                                requisition.eMessage    = "Não existem linhas com Qt. Requerida superior a zero.";
                            }
                        }
                        else
                        {
                            requisition.eReasonCode = 5;
                            requisition.eMessage    = "Não existem linhas para validar na Requisição.";
                        }
                    }
                    else
                    {
                        requisition.eReasonCode = 6;
                        requisition.eMessage    = "A Requisição não está no estado Aprovado.";
                    }
                }
                else
                {
                    requisition = new RequisitionViewModel()
                    {
                        eReasonCode = 7,
                        eMessage    = "Erro na obtenção da Requisição.",
                    };
                }
            }
            catch
            {
                requisition.eReasonCode = 99;
                requisition.eMessage    = "Ocorreu um erro na Validação da Requisição.";
            };

            return(requisition);
        }
コード例 #28
0
        public RequisitionViewModel CreatePurchaseOrderFor(RequisitionViewModel requisition)
        {
            if (requisition != null && requisition.Lines != null && requisition.Lines.Count > 0)
            {
                if (string.IsNullOrEmpty(requisition.ReceivedDate))
                {
                    requisition.eReasonCode = 4;
                    requisition.eMessage    = "É obrigatório o preenchimento do campo Data Receção no Geral.";
                    return(requisition);
                }

                //use for database update later
                var requisitionLines = requisition.Lines;

                requisitionLines.RemoveAll(x => x.CriarNotaEncomenda == null || x.CriarNotaEncomenda == false);
                requisitionLines.RemoveAll(x => x.CreatedOrderNo != "" && x.CreatedOrderNo != null);
                //FIM

                if (requisitionLines.Any(x => string.IsNullOrEmpty(x.SupplierNo) || !x.UnitCost.HasValue || x.UnitCost.Value == 0))
                {
                    throw new Exception("É obrigatório o preenchimento do fornecedor e do custo unitário nas linhas");
                }


                List <PurchOrderDTO> purchOrders = new List <PurchOrderDTO>();
                List <DBNAV2017SupplierProductRef.SuppliersProductsRefs> supplierProductRef = new List <DBNAV2017SupplierProductRef.SuppliersProductsRefs>();

                try
                {
                    purchOrders = requisitionLines.GroupBy(x =>
                                                           x.SupplierNo,
                                                           x => x,
                                                           (key, items) => new PurchOrderDTO
                    {
                        SupplierId               = key,
                        RequisitionId            = requisition.RequisitionNo,
                        CenterResponsibilityCode = requisition.CenterResponsibilityCode,
                        FunctionalAreaCode       = requisition.FunctionalAreaCode,
                        RegionCode               = requisition.RegionCode,
                        LocalMarketRegion        = requisition.LocalMarketRegion,
                        InAdvance          = requisition.InAdvance.HasValue ? requisition.InAdvance.Value : false,
                        PricesIncludingVAT = requisition.PricesIncludingVAT.HasValue ? requisition.PricesIncludingVAT.Value : false,
                        LocationCode       = requisition.LocalCode,
                        Purchaser_Code     = requisition.NumeroMecanografico,


                        Lines = items.Select(line => new PurchOrderLineDTO()
                        {
                            LineId                   = line.LineNo,
                            Type                     = line.Type,
                            Code                     = line.Code,
                            Description              = line.Description,
                            Description2             = line.Description2,
                            ProjectNo                = line.ProjectNo,
                            QuantityRequired         = line.QuantityRequired,
                            UnitCost                 = line.UnitCost,
                            LocationCode             = line.LocalCode,
                            OpenOrderNo              = line.OpenOrderNo,
                            OpenOrderLineNo          = line.OpenOrderLineNo,
                            CenterResponsibilityCode = line.CenterResponsibilityCode,
                            FunctionalAreaCode       = line.FunctionalAreaCode,
                            RegionCode               = line.RegionCode,
                            UnitMeasureCode          = line.UnitMeasureCode,
                            VATBusinessPostingGroup  = line.VATBusinessPostingGroup,
                            VATProductPostingGroup   = line.VATProductPostingGroup,
                            DiscountPercentage       = line.DiscountPercentage.HasValue ? line.DiscountPercentage.Value : 0,
                        })
                                .ToList()
                    })
                                  .ToList();

                    supplierProductRef = DBNAV2017SupplierProductRef.GetSuplierProductRefsForRequisition(_config.NAVDatabaseName, _config.NAVCompanyName, requisition.RequisitionNo);
                }
                catch
                {
                    throw new Exception("Ocorreu um erro ao agrupar as linhas.");
                }

                if (purchOrders.Count() > 0)
                {
                    purchOrders.ForEach(purchOrder =>
                    {
                        try
                        {
                            purchOrder.Lines.ForEach(line =>
                                                     line.SupplierProductCode = supplierProductRef
                                                                                .Where(x => x.ProductId == line.Code &&
                                                                                       x.SupplierNo == purchOrder.SupplierId &&
                                                                                       x.UnitOfMeasureCode == line.UnitMeasureCode)
                                                                                .FirstOrDefault()
                                                                                ?.SupplierProductId
                                                     );

                            //Novo código que adiciona + linhas mas só para requisições do tipo nutrição
                            if (requisition.RequestNutrition == true)
                            {
                                string codFornecedor = purchOrder.SupplierId;
                                List <ConfigLinhasEncFornecedor> LinhasEncFornecedor = DBConfigLinhasEncFornecedor.GetAll().Where(x => x.VendorNo == codFornecedor).ToList();

                                if (LinhasEncFornecedor != null && LinhasEncFornecedor.Count > 0)
                                {
                                    foreach (ConfigLinhasEncFornecedor linha in LinhasEncFornecedor)
                                    {
                                        string ProjectNo                = string.Empty;
                                        string RegionCode               = string.Empty;
                                        string FunctionalAreaCode       = string.Empty;
                                        string CenterResponsibilityCode = string.Empty;
                                        string ArmazemCompraDireta      = string.Empty;

                                        Configuração Config = DBConfigurations.GetById(1);
                                        if (Config != null)
                                        {
                                            ArmazemCompraDireta = Config.ArmazemCompraDireta;
                                        }

                                        UnidadesProdutivas UnidProd = DBProductivityUnits.GetAll().Where(x => x.NºCliente == codFornecedor).FirstOrDefault();
                                        if (UnidProd != null)
                                        {
                                            ProjectNo = UnidProd.ProjetoMatSubsidiárias;
                                        }

                                        if (!string.IsNullOrEmpty(ProjectNo))
                                        {
                                            NAVProjectsViewModel Project = DBNAV2017Projects.GetAll(_config.NAVDatabaseName, _config.NAVCompanyName, ProjectNo).FirstOrDefault();
                                            if (Project != null)
                                            {
                                                RegionCode               = Project.RegionCode;
                                                FunctionalAreaCode       = Project.AreaCode;
                                                CenterResponsibilityCode = Project.CenterResponsibilityCode;
                                            }
                                        }

                                        PurchOrderLineDTO purchOrderLine = new PurchOrderLineDTO()
                                        {
                                            LineId                   = null,
                                            Type                     = 2, //PRODUTO
                                            Code                     = linha.No,
                                            Description              = linha.Description,
                                            Description2             = linha.Description2,
                                            ProjectNo                = ProjectNo,
                                            QuantityRequired         = linha.Quantity,
                                            UnitCost                 = linha.Valor,
                                            LocationCode             = ArmazemCompraDireta,
                                            OpenOrderNo              = "",   //line.OpenOrderNo,
                                            OpenOrderLineNo          = null, //line.OpenOrderLineNo,
                                            CenterResponsibilityCode = CenterResponsibilityCode,
                                            FunctionalAreaCode       = FunctionalAreaCode,
                                            RegionCode               = RegionCode,
                                            UnitMeasureCode          = linha.UnitOfMeasure,
                                            VATBusinessPostingGroup  = "", //line.VATBusinessPostingGroup,
                                            VATProductPostingGroup   = "", //line.VATProductPostingGroup,
                                            DiscountPercentage       = 0   //line.DiscountPercentage.HasValue ? line.DiscountPercentage.Value : 0,
                                        };
                                        purchOrder.Lines.Add(purchOrderLine);
                                    }
                                }
                            }

                            //var result = CreateNAVPurchaseOrderFor(purchOrder, Convert.ToDateTime(requisition.ReceivedDate), requisition.Comments);
                            var result = CreateNAVPurchaseOrderFor(purchOrder, Convert.ToDateTime(requisition.ReceivedDate));
                            if (result.CompletedSuccessfully)
                            {
                                //Update req
                                requisition.OrderNo = result.ResultValue;

                                //Update Requisition Lines
                                requisition.Lines.ForEach(line =>
                                {
                                    if (line.SupplierNo == purchOrder.SupplierId)
                                    {
                                        line.CreatedOrderNo = result.ResultValue;
                                        line.UpdateUser     = this.changedByUserName;
                                    }
                                });
                                //Commit to DB
                                var updatedReq = DBRequest.Update(requisition.ParseToDB(), true);
                                //bool linesUpdated = DBRequestLine.Update(requisition.Lines.ParseToDB());
                                //if (linesUpdated)
                                if (updatedReq != null)
                                {
                                    requisition.eMessages.Add(new TraceInformation(TraceType.Success, "Criada encomenda para o fornecedor núm. " + purchOrder.SupplierId + "; "));
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            requisition.eMessages.Add(new TraceInformation(TraceType.Error, "Ocorreu um erro ao criar encomenda para o fornecedor núm. " + purchOrder.SupplierId + ": " + ex.Message));
                            //requisition.eMessages.Add(new TraceInformation(TraceType.Exception, purchOrder.SupplierId + " " + ex.Message));
                        }
                    });

                    if (requisition.eMessages.Any(x => x.Type == TraceType.Success))
                    {
                        //Refresh lines - Get from db
                        var updatedLines = DBRequestLine.GetByRequisitionId(requisition.RequisitionNo);
                        if (updatedLines != null)
                        {
                            requisition.Lines = updatedLines.ParseToViewModel();
                        }
                    }

                    if (requisition.eMessages.Any(x => x.Type == TraceType.Error))
                    {
                        requisition.eReasonCode = 2;
                        requisition.eMessage    = "Ocorram erros ao criar encomenda de compra.";
                    }
                    else
                    {
                        requisition.eReasonCode = 1;
                        requisition.eMessage    = "Encomenda de compra criada com sucesso.";
                    }
                }
                else
                {
                    requisition.eReasonCode = 3;
                    requisition.eMessage    = "Não existem linhas que cumpram os requisitos de criação de encomenda.";
                }
            }
            return(requisition);
        }
コード例 #29
0
        public string Post([FromBody] LogInForm value)
        {
            DBRequest request = new DBRequest();

            return(request.LogIn(value));
        }
コード例 #30
0
        public string Post([FromBody] NewUserForm value)
        {
            DBRequest request = new DBRequest();

            return(request.Registeration(value));
        }