Пример #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;
            //}
        }
Пример #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;
            //}
        }
Пример #3
0
        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;
            //}
        }