Ejemplo n.º 1
0
        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;
            //}
        }
Ejemplo n.º 2
0
        /// <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;
            //}
        }