//private GenericResult CreateNAVPurchaseOrderFor(PurchOrderDTO purchOrder) //{ // GenericResult createPrePurchOrderResult = new GenericResult(); // if (!string.IsNullOrEmpty(purchOrder.SupplierId) && !string.IsNullOrEmpty(purchOrder.CenterResponsibilityCode)) // { // ConfiguraçãoEmailFornecedores ConfigEmailForne = DBConfigEmailFornecedores.GetById(purchOrder.SupplierId, purchOrder.CenterResponsibilityCode); // if (ConfigEmailForne != null && !string.IsNullOrEmpty(ConfigEmailForne.Email)) // purchOrder.Vendor_Mail = ConfigEmailForne.Email; // } // Task<WSPurchaseInvHeader.Create_Result> createPurchaseHeaderTask = NAVPurchaseHeaderIntermService.CreateAsync(purchOrder, configws); // createPurchaseHeaderTask.Wait(); // if (createPurchaseHeaderTask.IsCompletedSuccessfully) // { // createPrePurchOrderResult.ResultValue = createPurchaseHeaderTask.Result.WSPurchInvHeaderInterm.No; // purchOrder.NAVPrePurchOrderId = createPrePurchOrderResult.ResultValue; // bool createPurchaseLinesTask = NAVPurchaseLineService.CreateAndUpdateMultipleAsync(purchOrder, configws); // if (createPurchaseLinesTask) // { // try // { // /* // * Swallow errors at this stage as they will be managed in NAV // */ // //Task<WSGenericCodeUnit.FxCabimento_Result> createPurchOrderTask = WSGeneric.CreatePurchaseOrder(purchOrder.NAVPrePurchOrderId, configws); // //createPurchOrderTask.Start(); // ////if (createPurchOrderTask.IsCompletedSuccessfully) // ////{ // //// createPrePurchOrderResult.CompletedSuccessfully = true; // ////} // } // catch (Exception ex) { } // createPrePurchOrderResult.CompletedSuccessfully = true; // } // } // return createPrePurchOrderResult; //} private GenericResult CreateNAVPurchaseOrderFor(PurchOrderDTO purchOrder, DateTime DataRececao) { GenericResult createPrePurchOrderResult = new GenericResult(); if (!string.IsNullOrEmpty(purchOrder.SupplierId) && !string.IsNullOrEmpty(purchOrder.CenterResponsibilityCode)) { ConfiguraçãoEmailFornecedores ConfigEmailForne = DBConfigEmailFornecedores.GetById(purchOrder.SupplierId, purchOrder.CenterResponsibilityCode); if (ConfigEmailForne != null && !string.IsNullOrEmpty(ConfigEmailForne.Email)) { purchOrder.Vendor_Mail = ConfigEmailForne.Email; } } Task <WSPurchaseInvHeader.Create_Result> createPurchaseHeaderTask = NAVPurchaseHeaderIntermService.CreateAsync(purchOrder, configws, DataRececao); createPurchaseHeaderTask.Wait(); if (createPurchaseHeaderTask.IsCompletedSuccessfully) { createPrePurchOrderResult.ResultValue = createPurchaseHeaderTask.Result.WSPurchInvHeaderInterm.No; purchOrder.NAVPrePurchOrderId = createPrePurchOrderResult.ResultValue; bool createPurchaseLinesTask = NAVPurchaseLineService.CreateAndUpdateMultipleAsync(purchOrder, configws); if (createPurchaseLinesTask) { try { /* * Swallow errors at this stage as they will be managed in NAV */ //Task<WSGenericCodeUnit.FxCabimento_Result> createPurchOrderTask = WSGeneric.CreatePurchaseOrder(purchOrder.NAVPrePurchOrderId, configws); //createPurchOrderTask.Start(); ////if (createPurchOrderTask.IsCompletedSuccessfully) ////{ //// createPrePurchOrderResult.CompletedSuccessfully = true; ////} } catch (Exception ex) { } createPrePurchOrderResult.CompletedSuccessfully = true; } } return(createPrePurchOrderResult); }
public static async Task <WSPurchaseInvHeader.Create_Result> CreateAsync(PurchOrderDTO purchFromSupplier, NAVWSConfigurations WSConfigurations) { if (purchFromSupplier == null) { throw new ArgumentNullException("purchFromSupplier"); } int localMarketRegion; if (int.TryParse(purchFromSupplier.LocalMarketRegion, out localMarketRegion)) { localMarketRegion--; } WSPurchaseInvHeader.Create navCreate = new WSPurchaseInvHeader.Create() { WSPurchInvHeaderInterm = new WSPurchaseInvHeader.WSPurchInvHeaderInterm() { Buy_from_Vendor_No = purchFromSupplier.SupplierId, Pay_to_Vendor_No = purchFromSupplier.SupplierId, LocationCode = purchFromSupplier.LocationCode, RegionCode20 = purchFromSupplier.RegionCode, FunctionAreaCode20 = purchFromSupplier.FunctionalAreaCode, ResponsabilityCenterCode20 = purchFromSupplier.CenterResponsibilityCode, //Your_Reference = purchFromSupplier //Observacoes = purchFromSupplier; //Purchaser_Code = purchFromSupplier; //N_Consulta = purchFromSupplier; //Expected_Receipt_Date = purchFromSupplier; //Expected_Receipt_DateSpecified = true; //Responsibility_Center = purchFromSupplier; //V_Prop_Num = purchFromSupplier; //Ship_to_Name = purchFromSupplier; //Ship_to_Name_2 = purchFromSupplier; //Ship_to_Address = purchFromSupplier; //Ship_to_Address_2 = purchFromSupplier; //Ship_to_City = purchFromSupplier; //Ship_to_Contact = purchFromSupplier; //Ship_to_Post_Code = purchFromSupplier; //Ship_to_County = purchFromSupplier; //Ship_to_Country_Region_Code = purchFromSupplier; Requisition_No = purchFromSupplier.RequisitionId, //Payment_Terms_Code = purchFromSupplier; Mercado_Local_Regiao = (WSPurchaseInvHeader.Mercado_Local_Regiao)localMarketRegion, Mercado_Local_RegiaoSpecified = true, //Motivo_Anulacao_Encomenda = purchFromSupplier, //Motivo_Anulacao_EncomendaSpecified = true; //Encomenda_Origem_NAV17 = purchFromSupplier, //Utilizador_Criacao = purchFromSupplier, Prices_Including_VAT = purchFromSupplier.PricesIncludingVAT.HasValue ? purchFromSupplier.PricesIncludingVAT.Value : false, Prices_Including_VATSpecified = purchFromSupplier.PricesIncludingVAT.HasValue, Down_Payment = purchFromSupplier.InAdvance.HasValue ? purchFromSupplier.InAdvance.Value : false, Down_PaymentSpecified = purchFromSupplier.InAdvance.HasValue, Vendor_Mail = purchFromSupplier.Vendor_Mail, N_Consulta = purchFromSupplier.NAVPrePurchOrderId, Purchaser_Code = purchFromSupplier.Purchaser_Code } }; //Configure NAV Client EndpointAddress ws_URL = new EndpointAddress(WSConfigurations.WS_PurchaseInvIntermHeader_URL.Replace("Company", WSConfigurations.WS_User_Company)); WSPurchaseInvHeader.WSPurchInvHeaderInterm_PortClient ws_Client = new WSPurchaseInvHeader.WSPurchInvHeaderInterm_PortClient(navWSBinding, ws_URL); ws_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation; ws_Client.ClientCredentials.Windows.ClientCredential = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain); //try //{ return(await ws_Client.CreateAsync(navCreate)); //} //catch (Exception ex) //{ // throw; //} }
public static async Task <WSPurchaseInvLine.CreateMultiple_Result> CreateMultipleAsync(PurchOrderDTO purchFromSupplier, NAVWSConfigurations WSConfigurations) { if (purchFromSupplier == null) { throw new ArgumentNullException("purchFromSupplier"); } WSPurchaseInvLine.CreateMultiple navCreate = new WSPurchaseInvLine.CreateMultiple(); navCreate.WSPurchInvLineInterm_List = purchFromSupplier.Lines.Select(purchLine => new WSPurchaseInvLine.WSPurchInvLineInterm() { Document_Type = WSPurchaseInvLine.Document_Type.Order, Document_TypeSpecified = true, Document_No = purchFromSupplier.NAVPrePurchOrderId, No = purchLine.Code, Buy_from_Vendor_No = purchFromSupplier.SupplierId, Pay_to_Vendor_No = purchFromSupplier.SupplierId, Quantity = purchLine.QuantityRequired.HasValue ? purchLine.QuantityRequired.Value : 0, QuantitySpecified = true, gLocation = purchLine.LocationCode, Job_No = purchLine.ProjectNo, RegionCode20 = purchLine.RegionCode, FunctionAreaCode20 = purchLine.FunctionalAreaCode, ResponsabilityCenterCode20 = purchLine.CenterResponsibilityCode, Type = WSPurchaseInvLine.Type.Item, TypeSpecified = true, Description100 = purchLine.Description, Line_Discount_Percent = purchLine.DiscountPercentage.HasValue ? purchLine.DiscountPercentage.Value : 0, Line_Discount_PercentSpecified = purchLine.DiscountPercentage.HasValue, VAT_Bus_Posting_Group = purchLine.VATBusinessPostingGroup, VAT_Prod_Posting_Group = purchLine.VATProductPostingGroup, Requisition_No = purchFromSupplier.RequisitionId, Requisition_Line_No = purchLine.LineId.HasValue ? purchLine.LineId.Value : 0, Requisition_Line_NoSpecified = true, Unit_of_Measure_Code = purchLine.UnitMeasureCode, Direct_Unit_Cost = purchLine.UnitCost.HasValue ? purchLine.UnitCost.Value : 0, Direct_Unit_CostSpecified = true, Blanket_Order_No = string.IsNullOrEmpty(purchLine.OpenOrderNo) ? string.Empty : purchLine.OpenOrderNo, Blanket_Order_Line_No = purchLine.OpenOrderLineNo.HasValue ? purchLine.OpenOrderLineNo.Value : 0, Blanket_Order_Line_NoSpecified = purchLine.OpenOrderLineNo.HasValue, }) .ToArray(); //Configure NAV Client EndpointAddress ws_URL = new EndpointAddress(WSConfigurations.WS_PurchaseInvLine_URL.Replace("Company", WSConfigurations.WS_User_Company)); WSPurchaseInvLine.WSPurchInvLineInterm_PortClient ws_Client = new WSPurchaseInvLine.WSPurchInvLineInterm_PortClient(navWSBinding, ws_URL); ws_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation; ws_Client.ClientCredentials.Windows.ClientCredential = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain); //try //{ return(await ws_Client.CreateMultipleAsync(navCreate)); //} //catch (Exception ex) //{ // throw; //} }
/// <summary> /// Para criar encomendas com referência a encomendas de compra abertas. /// Necessário para contornar validação do NAV no campo Pay-to Vendor No.". Primeiro criar as linhas para gerar as chaves, etc e depois atualizar e preencher com os dados pretendidos. /// </summary> /// <param name="purchFromSupplier"></param> /// <param name="WSConfigurations"></param> /// <returns></returns> public static bool CreateAndUpdateMultipleAsync(PurchOrderDTO purchFromSupplier, NAVWSConfigurations WSConfigurations) { if (purchFromSupplier == null) { throw new ArgumentNullException("purchFromSupplier"); } WSPurchaseInvLine.CreateMultiple navCreate = new WSPurchaseInvLine.CreateMultiple(); navCreate.WSPurchInvLineInterm_List = purchFromSupplier.Lines.Select(purchLine => new WSPurchaseInvLine.WSPurchInvLineInterm() { Document_Type = WSPurchaseInvLine.Document_Type.Order, Document_TypeSpecified = true, Document_No = purchFromSupplier.NAVPrePurchOrderId, Buy_from_Vendor_No = purchFromSupplier.SupplierId, Requisition_No = purchFromSupplier.RequisitionId, Requisition_Line_No = purchLine.LineId.HasValue ? purchLine.LineId.Value : 0, Requisition_Line_NoSpecified = true ////NR20181113 - Adicionei, mas julgo que é melhor retirar, pois os campos são atualizados na chamada do método UpdateMultipleAsync //,Direct_Unit_Cost = purchLine.UnitCost.HasValue ? purchLine.UnitCost.Value : 0, //Direct_Unit_CostSpecified = true, //Description = purchLine.Description, //Description_2 = purchLine.Description2, //FunctionAreaCode20 = purchLine.FunctionalAreaCode, //Job_No = purchLine.ProjectNo, //Line_Discount_Percent = purchLine.DiscountPercentage.HasValue ? purchLine.DiscountPercentage.Value : 0, //Line_Discount_PercentSpecified = true, //Quantity = purchLine.QuantityRequired.HasValue ? purchLine.QuantityRequired.Value : 0, //QuantitySpecified = true, //RegionCode20 = purchLine.RegionCode, //ResponsabilityCenterCode20 = purchLine.CenterResponsibilityCode, //Unit_of_Measure_Code = purchLine.UnitMeasureCode, //VAT_Bus_Posting_Group = purchLine.VATBusinessPostingGroup, //VAT_Prod_Posting_Group = purchLine.VATProductPostingGroup }) .ToArray(); //Configure NAV Client EndpointAddress ws_URL = new EndpointAddress(WSConfigurations.WS_PurchaseInvLine_URL.Replace("Company", WSConfigurations.WS_User_Company)); WSPurchaseInvLine.WSPurchInvLineInterm_PortClient ws_Client = new WSPurchaseInvLine.WSPurchInvLineInterm_PortClient(navWSBinding, ws_URL); ws_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation; ws_Client.ClientCredentials.Windows.ClientCredential = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain); Task <WSPurchaseInvLine.CreateMultiple_Result> createPurchaseLinesTask = ws_Client.CreateMultipleAsync(navCreate); createPurchaseLinesTask.Wait(); if (createPurchaseLinesTask.IsCompletedSuccessfully) { Task <WSPurchaseInvLine.UpdateMultiple_Result> updatePurchaseLinesTask = UpdateMultipleAsync(purchFromSupplier, createPurchaseLinesTask.Result.WSPurchInvLineInterm_List.ToList(), WSConfigurations); updatePurchaseLinesTask.Wait(); return(updatePurchaseLinesTask.IsCompletedSuccessfully); } return(false); //try //{ //return await ws_Client.CreateMultipleAsync(navCreate); //} //catch (Exception ex) //{ // throw; //} }
private static async Task <WSPurchaseInvLine.UpdateMultiple_Result> UpdateMultipleAsync(PurchOrderDTO purchFromSupplier, List <WSPurchaseInvLine.WSPurchInvLineInterm> itemsToUpdate, NAVWSConfigurations WSConfigurations) { if (purchFromSupplier == null) { throw new ArgumentNullException("purchFromSupplier"); } var supplierId = purchFromSupplier.SupplierId; var items = purchFromSupplier.Lines.Select(x => new { a = x.Code, b = x.UnitMeasureCode }); itemsToUpdate.ForEach(purchInvLine => { var item = purchFromSupplier.Lines.Single(x => x.LineId == (int)purchInvLine.Requisition_Line_No); //purchInvLine.Document_Type = WSPurchaseInvLine.Document_Type.Order; //purchInvLine.Document_TypeSpecified = true; purchInvLine.Document_No = purchFromSupplier.NAVPrePurchOrderId; purchInvLine.No = item.Code; //purchInvLine.Buy_from_Vendor_No = purchFromSupplier.SupplierId; //purchInvLine.Pay_to_Vendor_No = purchFromSupplier.SupplierId; purchInvLine.Cross_Reference_No = item.SupplierProductCode; purchInvLine.Quantity = item.QuantityRequired.HasValue ? item.QuantityRequired.Value : 0; purchInvLine.QuantitySpecified = true; purchInvLine.gLocation = item.LocationCode; purchInvLine.Job_No = item.ProjectNo; purchInvLine.RegionCode20 = item.RegionCode; purchInvLine.FunctionAreaCode20 = item.FunctionalAreaCode; purchInvLine.ResponsabilityCenterCode20 = item.CenterResponsibilityCode; purchInvLine.Type = WSPurchaseInvLine.Type.Item; purchInvLine.TypeSpecified = true; //purchInvLine.Description100 = item.Description + " " + item.Description2; purchInvLine.Description = item.Description; purchInvLine.Description_2 = item.Description2; purchInvLine.Line_Discount_Percent = item.DiscountPercentage.HasValue ? item.DiscountPercentage.Value : 0; purchInvLine.Line_Discount_PercentSpecified = item.DiscountPercentage.HasValue; purchInvLine.VAT_Bus_Posting_Group = item.VATBusinessPostingGroup; purchInvLine.VAT_Prod_Posting_Group = item.VATProductPostingGroup; purchInvLine.Requisition_No = purchFromSupplier.RequisitionId; purchInvLine.Requisition_Line_No = item.LineId.HasValue ? item.LineId.Value : 0; purchInvLine.Requisition_Line_NoSpecified = true; purchInvLine.Unit_of_Measure_Code = item.UnitMeasureCode; purchInvLine.Direct_Unit_Cost = item.UnitCost.HasValue ? item.UnitCost.Value : 0; purchInvLine.Direct_Unit_CostSpecified = true; purchInvLine.Blanket_Order_No = string.IsNullOrEmpty(item.OpenOrderNo) ? string.Empty : item.OpenOrderNo; purchInvLine.Blanket_Order_Line_No = item.OpenOrderLineNo.HasValue ? item.OpenOrderLineNo.Value : 0; purchInvLine.Blanket_Order_Line_NoSpecified = item.OpenOrderLineNo.HasValue; }); WSPurchaseInvLine.UpdateMultiple navUpdate = new WSPurchaseInvLine.UpdateMultiple(); navUpdate.WSPurchInvLineInterm_List = itemsToUpdate.ToArray(); //Configure NAV Client EndpointAddress ws_URL = new EndpointAddress(WSConfigurations.WS_PurchaseInvLine_URL.Replace("Company", WSConfigurations.WS_User_Company)); WSPurchaseInvLine.WSPurchInvLineInterm_PortClient ws_Client = new WSPurchaseInvLine.WSPurchInvLineInterm_PortClient(navWSBinding, ws_URL); ws_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation; ws_Client.ClientCredentials.Windows.ClientCredential = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain); //try //{ return(await ws_Client.UpdateMultipleAsync(navUpdate)); //} //catch (Exception ex) //{ // throw; //} }