public BillingReceptionModel OpenOrder(BillingReceptionModel item, string postedByUserName, NAVConfigurations _config, NAVWSConfigurations _configws)
        {
            if (item != null)
            {
                Task <WSGenericCodeUnit.FxGetURLOrder_Result> createOrderLink = WSGeneric.GetOrderByN(item.NumEncomenda, _configws);

                createOrderLink.Wait();
                if (createOrderLink.IsCompletedSuccessfully)
                {
                    try
                    {
                        item.eReasonCode = 1;
                        item.eMessage    = "Factura Aberta.";
                        item.link        = createOrderLink.Result.return_value;
                    }
                    catch
                    {
                        item.eReasonCode = 2;
                        item.eMessage    = "Não foi possivel abrir a Factura Nº De Encomenda:" + item.NumEncomenda;
                    }
                }
                else
                {
                    item.Id = item.Id.Remove(0, 2);
                }
            }
            else
            {
                item.eReasonCode = 2;
                item.eMessage    = "O registo não pode ser nulo";
            }
            return(item);
        }
Example #2
0
        public GenericResult CreateTransferShipmentFor(RequisitionViewModel requisition)
        {
            GenericResult response = new GenericResult();

            if (requisition != null && requisition.Lines != null && requisition.Lines.Count > 0)
            {
                try
                {
                    TransferShipment transferShipment = new TransferShipment();
                    transferShipment.ProjectNo        = requisition.ProjectNo;
                    transferShipment.Comments         = requisition.Comments;
                    transferShipment.FunctionalAreaNo = requisition.FunctionalAreaCode;
                    transferShipment.RequisitionNo    = requisition.RequisitionNo;
                    transferShipment.Lines            = requisition.Lines.Select(line => new TransferShipmentLine()
                    {
                        ProductNo              = line.Code,
                        ProductDescription     = line.Description,
                        Quantity               = line.QuantityToProvide,
                        UnitOfMeasureNo        = line.UnitMeasureCode,
                        UnitCost               = line.UnitCost,
                        RegionNo               = line.RegionCode,
                        FunctionalAreaNo       = line.FunctionalAreaCode,
                        CenterResponsibilityNo = line.CenterResponsibilityCode
                    }).ToList();

                    Task <WSTransferShipmentHeader.Create_Result> createTransferShipHeaderTask = NAVTransferShipmentService.CreateHeaderAsync(transferShipment, configws);
                    createTransferShipHeaderTask.Wait();
                    if (createTransferShipHeaderTask.IsCompletedSuccessfully)
                    {
                        transferShipment.TransferShipmentNo = createTransferShipHeaderTask.Result.WSShipmentDocHeader.Nº_Guia_Transporte;

                        Task <WSTransferShipmentLine.CreateMultiple_Result> createTransferShipLinesTask = NAVTransferShipmentService.CreateLinesAsync(transferShipment, configws);
                        createTransferShipLinesTask.Wait();
                        if (createTransferShipLinesTask.IsCompletedSuccessfully)
                        {
                            Task <WSGenericCodeUnit.FxPostShipmentDoc_Result> createTransferShipDocTask = WSGeneric.CreateTransferShipment(transferShipment.TransferShipmentNo, configws);
                            createTransferShipDocTask.Wait();
                            if (createTransferShipDocTask.IsCompletedSuccessfully)
                            {
                                response.CompletedSuccessfully = true;
                                response.ResultValue           = createTransferShipDocTask.Result.return_value;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    response.ErrorMessage = ex.Message;
                }
            }
            else
            {
                response.ErrorMessage = "A requisição é nula ou não tem linhas.";
            }
            return(response);
        }
Example #3
0
        public JsonResult RegisterRequisition([FromBody] List <SimplifiedRequisitionLineViewModel> items)
        {
            string dataRegisto;
            bool   historyRequisition = true;
            SimplifiedRequisitionViewModel requisitionSimpli = DBSimplifiedRequisitions.ParseToViewModel(DBSimplifiedRequisitions.GetById(items[0].RequisitionNo));
            List <ProjectDiaryViewModel>   ListDp            = new List <ProjectDiaryViewModel>();

            //Receipt Lines Date
            if (requisitionSimpli.ReceiptLinesDate == true && requisitionSimpli.RegistrationDate != null)
            {
                dataRegisto = requisitionSimpli.RegistrationDate;
            }
            else
            {
                dataRegisto = DateTime.Now.ToString();
            }

            foreach (var item in items)
            {
                if (item.QuantityReceipt == 0 || item.QuantityReceipt == null)
                {
                    Task <WSGenericCodeUnit.FxGetStock_ItemLocation_Result> TGetNavLocationProduct = WSGeneric.GetNAVProductQuantityInStockFor(item.Code, item.LocationCode, configws);
                    TGetNavLocationProduct.Wait();
                    if (TGetNavLocationProduct.IsCompletedSuccessfully)
                    {
                        if (TGetNavLocationProduct.Result.return_value > 0 && TGetNavLocationProduct.Result.return_value >= item.QuantityApproved)
                        {
                            //Update Simplified Requisition lines
                            item.QuantityReceipt = item.QuantityApproved;
                            DBSimplifiedRequisitionLines.Update(DBSimplifiedRequisitionLines.ParseToDatabase(item));

                            //Create Diary Project
                            DiárioDeProjeto newdp = new DiárioDeProjeto()
                            {
                                NºProjeto        = requisitionSimpli.ProjectNo,
                                Data             = requisitionSimpli.RegistrationDate == "" || requisitionSimpli.RegistrationDate == null ? (DateTime?)null : DateTime.Parse(requisitionSimpli.RegistrationDate),
                                TipoMovimento    = 1, //Consumo
                                Tipo             = item.Type,
                                Código           = item.Code,
                                Descrição        = item.Description,
                                Quantidade       = item.QuantityApproved,
                                CódUnidadeMedida = item.MeasureUnitNo,
                                CódLocalização   = item.LocationCode,
                                //GrupoContabProjeto = x.ProjectContabGroup,
                                CódigoRegião                 = item.RegionCode,
                                CódigoÁreaFuncional          = item.FunctionAreaCode,
                                CódigoCentroResponsabilidade = item.ResponsabilityCenterCode,
                                Utilizador    = User.Identity.Name,
                                CustoUnitário = item.UnitCost,
                                CustoTotal    = item.TotalCost,
                                //PreçoUnitário = x.UnitPrice,
                                //PreçoTotal = x.TotalPrice,
                                //Faturável = x.Billable,
                                Registado = true,
                                //FaturaANºCliente = x.InvoiceToClientNo,
                                //Moeda = x.Currency,
                                //ValorUnitárioAFaturar = x.UnitValueToInvoice,
                                TipoRefeição = item.MealType,
                                //CódGrupoServiço = x.ServiceGroupCode,
                                //NºGuiaResíduos = x.ResidueGuideNo,
                                //NºGuiaExterna = x.ExternalGuideNo,
                                //DataConsumo = x.ConsumptionDate == "" || x.ConsumptionDate == null ? (DateTime?)null : DateTime.Parse(x.ConsumptionDate),
                                //CódServiçoCliente = x.ServiceClientCode
                            };
                            newdp.Faturada          = false;
                            newdp.DataHoraCriação   = DateTime.Now;
                            newdp.UtilizadorCriação = User.Identity.Name;

                            //Insert List Regist Project
                            ListDp.Add(DBProjectDiary.ParseToViewModel(newdp));
                        }
                        else
                        {
                            historyRequisition            = false;
                            requisitionSimpli.eReasonCode = 101;
                            requisitionSimpli.eMessage    = requisitionSimpli.eMessage + " Quantidade existente em stock: " + TGetNavLocationProduct.Result.return_value + ", no Produto " + item.Description + " \r\n";
                        }
                    }
                }
            }
            //Register diary project
            if (ListDp.Count() != 0)
            {
                register.UpdateProjectDiaryRequisition(ListDp, requisitionSimpli.RequisitionNo, User.Identity.Name);
            }

            if (historyRequisition == true)
            {
                //Register lines of diary project
                ListDp.Clear();
                items.ForEach(x =>
                {
                    x.Status = 3;
                    DBSimplifiedRequisitionLines.Update(DBSimplifiedRequisitionLines.ParseToDatabase(x));
                    DiárioDeProjeto newdp = new DiárioDeProjeto()
                    {
                        NºProjeto        = requisitionSimpli.ProjectNo,
                        Data             = requisitionSimpli.RegistrationDate == "" || requisitionSimpli.RegistrationDate == null ? (DateTime?)null : DateTime.Parse(requisitionSimpli.RegistrationDate),
                        TipoMovimento    = 1, //Consumo
                        Tipo             = x.Type,
                        Código           = x.Code,
                        Descrição        = x.Description,
                        Quantidade       = x.QuantityApproved,
                        CódUnidadeMedida = x.MeasureUnitNo,
                        CódLocalização   = x.LocationCode,
                        //GrupoContabProjeto = x.ProjectContabGroup,
                        CódigoRegião                 = x.RegionCode,
                        CódigoÁreaFuncional          = x.FunctionAreaCode,
                        CódigoCentroResponsabilidade = x.ResponsabilityCenterCode,
                        Utilizador    = User.Identity.Name,
                        CustoUnitário = x.UnitCost,
                        CustoTotal    = x.TotalCost,
                        //PreçoUnitário = x.UnitPrice,
                        //PreçoTotal = x.TotalPrice,
                        //Faturável = x.Billable,
                        Registado = true,
                        //FaturaANºCliente = x.InvoiceToClientNo,
                        //Moeda = x.Currency,
                        //ValorUnitárioAFaturar = x.UnitValueToInvoice,
                        TipoRefeição = x.MealType,
                        //CódGrupoServiço = x.ServiceGroupCode,
                        //NºGuiaResíduos = x.ResidueGuideNo,
                        //NºGuiaExterna = x.ExternalGuideNo,
                        //DataConsumo = x.ConsumptionDate == "" || x.ConsumptionDate == null ? (DateTime?)null : DateTime.Parse(x.ConsumptionDate),
                        //CódServiçoCliente = x.ServiceClientCode
                    };
                    newdp.Faturada          = false;
                    newdp.DataHoraCriação   = DateTime.Now;
                    newdp.UtilizadorCriação = User.Identity.Name;

                    //Insert List Regist Project
                    ListDp.Add(DBProjectDiary.ParseToViewModel(newdp));
                });

                register.RegisterDiaryLinesRequisition(ListDp, User.Identity.Name);

                //Update Simplified Requisition Header
                requisitionSimpli.Status             = 3;
                requisitionSimpli.RegistrationDate   = DateTime.Now.ToString();
                requisitionSimpli.ReceiptResponsible = User.Identity.Name;
                DBSimplifiedRequisitions.Update(DBSimplifiedRequisitions.ParseToDatabase(requisitionSimpli));

                requisitionSimpli.eReasonCode = 100;
                requisitionSimpli.eMessage    = "Registo em Diário de Projeto com sucesso";
            }

            return(Json(requisitionSimpli));
        }