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); }
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); }
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)); }