From 32db0929b1bc6bb0ce084270847ca2b43987a7a2 Mon Sep 17 00:00:00 2001 From: James Date: Thu, 1 Nov 2018 14:04:05 -0400 Subject: [PATCH] Updates for v2.0.6 (#82) * Add memo and arpaymentitems missing tags (Issue #67) * Resolve create AR payment missing check number (Issue #75) * Add SourceLineRecordNo property to Order Entry, Purchasing, and Inventory Lines (Issue #76) * Add DropShip and LineShipToContactName to OrderEntryTransactionLine (Issue #77) * Remove OverrideTaxAmount and Tax from PurchasingTransactionLineUpdate XML (Issue #78) * Change updateitemdetails to itemdetails in PurchasingTransactionLineUpdate to match schema (Issue #79) * Add LineDeliverToContactName, Form1099Type, and Form1099Box to PurchasingTransactionLine (Issue #80) * Add LineLevelSimpleTaxType to OrderEntryTransactionLine and PurchasingTransactionLine (Issue #73) * Add DeliverToContactName to PurchasingTransaction (Issue #81) --- .../AccountsReceivable/ArPaymentCreateTest.cs | 2 + .../OrderEntryTransactionLineCreateTest.cs | 2 + .../OrderEntryTransactionLineUpdateTest.cs | 2 + .../PurchasingTransactionLineCreateTest.cs | 2 + .../PurchasingTransactionLineUpdateTest.cs | 126 ++++++++++++++++++ .../AccountsReceivable/ArPaymentApply.cs | 6 + .../AccountsReceivable/ArPaymentCreate.cs | 2 + .../InventoryTransactionLineCreate.cs | 3 + .../AbstractOrderEntryTransactionLine.cs | 6 + .../OrderEntryTransactionLineCreate.cs | 13 ++ .../OrderEntryTransactionLineUpdate.cs | 10 ++ .../AbstractPurchasingTransaction.cs | 2 + .../AbstractPurchasingTransactionLine.cs | 8 ++ .../Purchasing/PurchasingTransactionCreate.cs | 7 + .../PurchasingTransactionLineCreate.cs | 14 ++ .../PurchasingTransactionLineUpdate.cs | 17 ++- .../Purchasing/PurchasingTransactionUpdate.cs | 7 + Intacct.SDK/Intacct.SDK.csproj | 2 +- Intacct.SDK/Xml/RequestHandler.cs | 2 +- 19 files changed, 227 insertions(+), 6 deletions(-) create mode 100644 Intacct.SDK.Tests/Functions/Purchasing/PurchasingTransactionLineUpdateTest.cs diff --git a/Intacct.SDK.Tests/Functions/AccountsReceivable/ArPaymentCreateTest.cs b/Intacct.SDK.Tests/Functions/AccountsReceivable/ArPaymentCreateTest.cs index 56f679bd..fbbfaaaa 100644 --- a/Intacct.SDK.Tests/Functions/AccountsReceivable/ArPaymentCreateTest.cs +++ b/Intacct.SDK.Tests/Functions/AccountsReceivable/ArPaymentCreateTest.cs @@ -36,6 +36,7 @@ public void GetXmlTest() C0020 1922.12 + 1000 1020 900 @@ -53,6 +54,7 @@ public void GetXmlTest() TransactionPaymentAmount = 1922.12M, ReceivedDate = new DateTime(2016, 06, 30), PaymentMethod = "Printed Check", + ReferenceNumber = "1000", OverpaymentDepartmentId = "900", OverpaymentLocationId = "1020" }; diff --git a/Intacct.SDK.Tests/Functions/OrderEntry/OrderEntryTransactionLineCreateTest.cs b/Intacct.SDK.Tests/Functions/OrderEntry/OrderEntryTransactionLineCreateTest.cs index c7e7a02f..80d25a55 100644 --- a/Intacct.SDK.Tests/Functions/OrderEntry/OrderEntryTransactionLineCreateTest.cs +++ b/Intacct.SDK.Tests/Functions/OrderEntry/OrderEntryTransactionLineCreateTest.cs @@ -59,6 +59,7 @@ public void GetAllXmlTest() 93294 2340 593 + Test 10.00 32.35 None @@ -108,6 +109,7 @@ public void GetAllXmlTest() WarehouseId = "93294", Quantity = 2340, Unit = "593", + LineLevelSimpleTaxType = "Test", DiscountPercent = 10.00M, Price = 32.35M, DiscountSurchargeMemo = "None", diff --git a/Intacct.SDK.Tests/Functions/OrderEntry/OrderEntryTransactionLineUpdateTest.cs b/Intacct.SDK.Tests/Functions/OrderEntry/OrderEntryTransactionLineUpdateTest.cs index 28f70a68..09894790 100644 --- a/Intacct.SDK.Tests/Functions/OrderEntry/OrderEntryTransactionLineUpdateTest.cs +++ b/Intacct.SDK.Tests/Functions/OrderEntry/OrderEntryTransactionLineUpdateTest.cs @@ -60,6 +60,7 @@ public void GetAllXmlTest() 93294 2340 593 + Test 10.00 32.35 None @@ -110,6 +111,7 @@ public void GetAllXmlTest() WarehouseId = "93294", Quantity = 2340, Unit = "593", + LineLevelSimpleTaxType = "Test", DiscountPercent = 10.00M, Price = 32.35M, DiscountSurchargeMemo = "None", diff --git a/Intacct.SDK.Tests/Functions/Purchasing/PurchasingTransactionLineCreateTest.cs b/Intacct.SDK.Tests/Functions/Purchasing/PurchasingTransactionLineCreateTest.cs index 831a6dc6..d9480af8 100644 --- a/Intacct.SDK.Tests/Functions/Purchasing/PurchasingTransactionLineCreateTest.cs +++ b/Intacct.SDK.Tests/Functions/Purchasing/PurchasingTransactionLineCreateTest.cs @@ -58,6 +58,7 @@ public void GetAllXmlTest() 93294 2340 593 + Test 32.35 1.23 9.23 @@ -93,6 +94,7 @@ public void GetAllXmlTest() WarehouseId = "93294", Quantity = 2340, Unit = "593", + LineLevelSimpleTaxType = "Test", Price = 32.35M, OverrideTaxAmount = 1.23M, Tax = 9.23M, diff --git a/Intacct.SDK.Tests/Functions/Purchasing/PurchasingTransactionLineUpdateTest.cs b/Intacct.SDK.Tests/Functions/Purchasing/PurchasingTransactionLineUpdateTest.cs new file mode 100644 index 00000000..a384daa3 --- /dev/null +++ b/Intacct.SDK.Tests/Functions/Purchasing/PurchasingTransactionLineUpdateTest.cs @@ -0,0 +1,126 @@ +/* + * Copyright 2018 Sage Intacct, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "LICENSE" file accompanying this file. This file is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Xml; +using Intacct.SDK.Functions.InventoryControl; +using Intacct.SDK.Functions.Purchasing; +using Intacct.SDK.Functions; +using Intacct.SDK.Tests.Xml; +using Intacct.SDK.Xml; +using Xunit; + +namespace Intacct.SDK.Tests.Functions.Purchasing +{ + public class PurchasingTransactionLineUpdateTest : XmlObjectTestHelper + { + [Fact] + public void GetXmlTest() + { + string expected = @" + + 26323 + 2340 +"; + + PurchasingTransactionLineUpdate record = new PurchasingTransactionLineUpdate() + { + LineNo = 1, + ItemId = "26323", + Quantity = 2340, + }; + + this.CompareXml(expected, record); + } + + [Fact] + public void GetAllXmlTest() + { + string expected = @" + + 26323 + Item Description + true + 93294 + 2340 + 593 + Test + 32.35 + SF + Purchasing + Memo + + + 52 + 3243 + + + true + + + customfield1 + customvalue1 + + + 235 + 23423434 + 797656 + 90295 + 243609 + 9062 + true +"; + + PurchasingTransactionLineUpdate record = new PurchasingTransactionLineUpdate() { + LineNo = 1, + ItemId = "26323", + ItemDescription = "Item Description", + Taxable = true, + WarehouseId = "93294", + Quantity = 2340, + Unit = "593", + LineLevelSimpleTaxType = "Test", + Price = 32.35M, + Memo = "Memo", + Billable = true, + Form1099 = true, + LocationId = "SF", + DepartmentId = "Purchasing", + ProjectId = "235", + CustomerId = "23423434", + VendorId = "797656", + EmployeeId = "90295", + ClassId = "243609", + ContractId = "9062", + CustomFields = new Dictionary + { + { "customfield1", "customvalue1" } + } + }; + + TransactionItemDetail detail1 = new TransactionItemDetail() + { + Quantity = 52, + LotNumber = "3243", + }; + record.ItemDetails.Add(detail1); + + this.CompareXml(expected, record); + } + } +} \ No newline at end of file diff --git a/Intacct.SDK/Functions/AccountsReceivable/ArPaymentApply.cs b/Intacct.SDK/Functions/AccountsReceivable/ArPaymentApply.cs index 0e43a7d7..ffa0af3e 100644 --- a/Intacct.SDK/Functions/AccountsReceivable/ArPaymentApply.cs +++ b/Intacct.SDK/Functions/AccountsReceivable/ArPaymentApply.cs @@ -21,6 +21,8 @@ public class ArPaymentApply : AbstractArPayment { public int? SummaryRecordNo; + + public string Memo; public ArPaymentApply(string controlId = null) : base(controlId) { @@ -40,15 +42,19 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteEndElement(); //paymentdate xml.WriteElement("batchkey", SummaryRecordNo); + xml.WriteElement("memo", Memo); xml.WriteElement("overpaylocid", OverpaymentLocationId); xml.WriteElement("overpaydeptid", OverpaymentDepartmentId); if (ApplyToTransactions.Count > 0) { + xml.WriteStartElement("arpaymentitems"); foreach (ArPaymentItem applyToTransaction in ApplyToTransactions) { applyToTransaction.WriteXml(ref xml); } + + xml.WriteEndElement(); //arpaymentitems } xml.WriteEndElement(); //apply_arpayment diff --git a/Intacct.SDK/Functions/AccountsReceivable/ArPaymentCreate.cs b/Intacct.SDK/Functions/AccountsReceivable/ArPaymentCreate.cs index 430c4824..1f153081 100644 --- a/Intacct.SDK/Functions/AccountsReceivable/ArPaymentCreate.cs +++ b/Intacct.SDK/Functions/AccountsReceivable/ArPaymentCreate.cs @@ -45,6 +45,8 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteElement("bankaccountid", BankAccountId); } + xml.WriteElement("refid", ReferenceNumber); + xml.WriteElement("overpaylocid", OverpaymentLocationId); xml.WriteElement("overpaydeptid", OverpaymentDepartmentId); diff --git a/Intacct.SDK/Functions/InventoryControl/InventoryTransactionLineCreate.cs b/Intacct.SDK/Functions/InventoryControl/InventoryTransactionLineCreate.cs index e249e07b..b31d3ff2 100644 --- a/Intacct.SDK/Functions/InventoryControl/InventoryTransactionLineCreate.cs +++ b/Intacct.SDK/Functions/InventoryControl/InventoryTransactionLineCreate.cs @@ -19,6 +19,8 @@ namespace Intacct.SDK.Functions.InventoryControl { public class InventoryTransactionLineCreate : AbstractInventoryTransactionLine { + + public int? SourceLineRecordNo; public InventoryTransactionLineCreate() { @@ -34,6 +36,7 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteElement("quantity", Quantity, true); xml.WriteElement("unit", Unit); xml.WriteElement("cost", Cost); + xml.WriteElement("sourcelinekey", SourceLineRecordNo); xml.WriteElement("locationid", LocationId); xml.WriteElement("departmentid", DepartmentId); diff --git a/Intacct.SDK/Functions/OrderEntry/AbstractOrderEntryTransactionLine.cs b/Intacct.SDK/Functions/OrderEntry/AbstractOrderEntryTransactionLine.cs index 56329dd7..eb6ac43d 100644 --- a/Intacct.SDK/Functions/OrderEntry/AbstractOrderEntryTransactionLine.cs +++ b/Intacct.SDK/Functions/OrderEntry/AbstractOrderEntryTransactionLine.cs @@ -36,6 +36,8 @@ public abstract class AbstractOrderEntryTransactionLine : IXmlObject public decimal? Quantity; public string Unit; + + public string LineLevelSimpleTaxType; public decimal? DiscountPercent; @@ -58,6 +60,10 @@ public abstract class AbstractOrderEntryTransactionLine : IXmlObject public string TaskNumber; public string BillingTemplate; + + public bool? DropShip; + + public string LineShipToContactName; public List ItemDetails = new List(); diff --git a/Intacct.SDK/Functions/OrderEntry/OrderEntryTransactionLineCreate.cs b/Intacct.SDK/Functions/OrderEntry/OrderEntryTransactionLineCreate.cs index 377144fb..54be7d26 100644 --- a/Intacct.SDK/Functions/OrderEntry/OrderEntryTransactionLineCreate.cs +++ b/Intacct.SDK/Functions/OrderEntry/OrderEntryTransactionLineCreate.cs @@ -20,6 +20,8 @@ namespace Intacct.SDK.Functions.OrderEntry { public class OrderEntryTransactionLineCreate : AbstractOrderEntryTransactionLine { + + public int? SourceLineRecordNo; public OrderEntryTransactionLineCreate() { @@ -36,8 +38,10 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteElement("warehouseid", WarehouseId); xml.WriteElement("quantity", Quantity, true); xml.WriteElement("unit", Unit); + xml.WriteElement("linelevelsimpletaxtype", LineLevelSimpleTaxType); xml.WriteElement("discountpercent", DiscountPercent); xml.WriteElement("price", Price); + xml.WriteElement("sourcelinekey", SourceLineRecordNo); xml.WriteElement("discsurchargememo", DiscountSurchargeMemo); xml.WriteElement("locationid", LocationId); xml.WriteElement("departmentid", DepartmentId); @@ -81,6 +85,15 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteElement("fulfillmentstatus", FulfillmentStatus); xml.WriteElement("taskno", TaskNumber); xml.WriteElement("billingtemplate", BillingTemplate); + + xml.WriteElement("dropship", DropShip); + + if (!string.IsNullOrWhiteSpace(LineShipToContactName)) + { + xml.WriteStartElement("shipto"); + xml.WriteElement("contactname", LineShipToContactName, true); + xml.WriteEndElement(); //shipto + } xml.WriteEndElement(); //sotransitem } diff --git a/Intacct.SDK/Functions/OrderEntry/OrderEntryTransactionLineUpdate.cs b/Intacct.SDK/Functions/OrderEntry/OrderEntryTransactionLineUpdate.cs index 9e42d2d3..ecc0205c 100644 --- a/Intacct.SDK/Functions/OrderEntry/OrderEntryTransactionLineUpdate.cs +++ b/Intacct.SDK/Functions/OrderEntry/OrderEntryTransactionLineUpdate.cs @@ -54,6 +54,7 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteElement("warehouseid", WarehouseId); xml.WriteElement("quantity", Quantity, true); xml.WriteElement("unit", Unit); + xml.WriteElement("linelevelsimpletaxtype", LineLevelSimpleTaxType); xml.WriteElement("discountpercent", DiscountPercent); xml.WriteElement("price", Price); xml.WriteElement("discsurchargememo", DiscountSurchargeMemo); @@ -99,6 +100,15 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteElement("fulfillmentstatus", FulfillmentStatus); xml.WriteElement("taskno", TaskNumber); xml.WriteElement("billingtemplate", BillingTemplate); + + xml.WriteElement("dropship", DropShip); + + if (!string.IsNullOrWhiteSpace(LineShipToContactName)) + { + xml.WriteStartElement("shipto"); + xml.WriteElement("contactname", LineShipToContactName, true); + xml.WriteEndElement(); //shipto + } xml.WriteEndElement(); //updatesotransitem } diff --git a/Intacct.SDK/Functions/Purchasing/AbstractPurchasingTransaction.cs b/Intacct.SDK/Functions/Purchasing/AbstractPurchasingTransaction.cs index 73b6b0d7..257beaab 100644 --- a/Intacct.SDK/Functions/Purchasing/AbstractPurchasingTransaction.cs +++ b/Intacct.SDK/Functions/Purchasing/AbstractPurchasingTransaction.cs @@ -53,6 +53,8 @@ public abstract class AbstractPurchasingTransaction : AbstractFunction public string ReturnToContactName; public string PayToContactName; + + public string DeliverToContactName; public string AttachmentsId; diff --git a/Intacct.SDK/Functions/Purchasing/AbstractPurchasingTransactionLine.cs b/Intacct.SDK/Functions/Purchasing/AbstractPurchasingTransactionLine.cs index 777b4f31..12589cfa 100644 --- a/Intacct.SDK/Functions/Purchasing/AbstractPurchasingTransactionLine.cs +++ b/Intacct.SDK/Functions/Purchasing/AbstractPurchasingTransactionLine.cs @@ -33,6 +33,8 @@ public abstract class AbstractPurchasingTransactionLine : IXmlObject public decimal? Quantity; public string Unit; + + public string LineLevelSimpleTaxType; public decimal? Price; @@ -44,7 +46,13 @@ public abstract class AbstractPurchasingTransactionLine : IXmlObject public bool? Form1099; + public string Form1099Type; + + public string Form1099Box; + public bool? Billable; + + public string LineDeliverToContactName; public List ItemDetails = new List(); diff --git a/Intacct.SDK/Functions/Purchasing/PurchasingTransactionCreate.cs b/Intacct.SDK/Functions/Purchasing/PurchasingTransactionCreate.cs index 2d0dcf3e..77b9d4b1 100644 --- a/Intacct.SDK/Functions/Purchasing/PurchasingTransactionCreate.cs +++ b/Intacct.SDK/Functions/Purchasing/PurchasingTransactionCreate.cs @@ -67,6 +67,13 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteStartElement("payto"); xml.WriteElement("contactname", PayToContactName, true); xml.WriteEndElement(); //payto + + if (!string.IsNullOrWhiteSpace(DeliverToContactName)) + { + xml.WriteStartElement("deliverto"); + xml.WriteElement("contactname", DeliverToContactName, true); + xml.WriteEndElement(); //deliverto + } xml.WriteElement("supdocid", AttachmentsId); xml.WriteElement("externalid", ExternalId); diff --git a/Intacct.SDK/Functions/Purchasing/PurchasingTransactionLineCreate.cs b/Intacct.SDK/Functions/Purchasing/PurchasingTransactionLineCreate.cs index b76255e3..c450cb0b 100644 --- a/Intacct.SDK/Functions/Purchasing/PurchasingTransactionLineCreate.cs +++ b/Intacct.SDK/Functions/Purchasing/PurchasingTransactionLineCreate.cs @@ -20,6 +20,8 @@ namespace Intacct.SDK.Functions.Purchasing { public class PurchasingTransactionLineCreate : AbstractPurchasingTransactionLine { + + public int? SourceLineRecordNo; public PurchasingTransactionLineCreate() { @@ -35,8 +37,18 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteElement("warehouseid", WarehouseId); xml.WriteElement("quantity", Quantity, true); xml.WriteElement("unit", Unit); + xml.WriteElement("linelevelsimpletaxtype", LineLevelSimpleTaxType); xml.WriteElement("price", Price); + xml.WriteElement("sourcelinekey", SourceLineRecordNo); xml.WriteElement("overridetaxamount", OverrideTaxAmount); + + if (!string.IsNullOrWhiteSpace(LineDeliverToContactName)) + { + xml.WriteStartElement("deliverto"); + xml.WriteElement("contactname", LineDeliverToContactName, true); + xml.WriteEndElement(); //deliverto + } + xml.WriteElement("tax", Tax); xml.WriteElement("locationid", LocationId); xml.WriteElement("departmentid", DepartmentId); @@ -53,6 +65,8 @@ public override void WriteXml(ref IaXmlWriter xml) } xml.WriteElement("form1099", Form1099); + xml.WriteElement("form1099type", Form1099Type); + xml.WriteElement("form1099box", Form1099Box); xml.WriteCustomFieldsExplicit(CustomFields); diff --git a/Intacct.SDK/Functions/Purchasing/PurchasingTransactionLineUpdate.cs b/Intacct.SDK/Functions/Purchasing/PurchasingTransactionLineUpdate.cs index 2adbf0ab..3331e315 100644 --- a/Intacct.SDK/Functions/Purchasing/PurchasingTransactionLineUpdate.cs +++ b/Intacct.SDK/Functions/Purchasing/PurchasingTransactionLineUpdate.cs @@ -53,24 +53,33 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteElement("warehouseid", WarehouseId); xml.WriteElement("quantity", Quantity); xml.WriteElement("unit", Unit); + xml.WriteElement("linelevelsimpletaxtype", LineLevelSimpleTaxType); xml.WriteElement("price", Price); - xml.WriteElement("overridetaxamount", OverrideTaxAmount); - xml.WriteElement("tax", Tax); + + if (!string.IsNullOrWhiteSpace(LineDeliverToContactName)) + { + xml.WriteStartElement("deliverto"); + xml.WriteElement("contactname", LineDeliverToContactName, true); + xml.WriteEndElement(); //deliverto + } + xml.WriteElement("locationid", LocationId); xml.WriteElement("departmentid", DepartmentId); xml.WriteElement("memo", Memo); if (ItemDetails.Count > 0) { - xml.WriteStartElement("updateitemdetails"); + xml.WriteStartElement("itemdetails"); foreach (AbstractTransactionItemDetail itemDetail in ItemDetails) { itemDetail.WriteXml(ref xml); } - xml.WriteEndElement(); //updateitemdetails + xml.WriteEndElement(); //itemdetails } xml.WriteElement("form1099", Form1099); + xml.WriteElement("form1099type", Form1099Type); + xml.WriteElement("form1099box", Form1099Box); xml.WriteCustomFieldsExplicit(CustomFields); diff --git a/Intacct.SDK/Functions/Purchasing/PurchasingTransactionUpdate.cs b/Intacct.SDK/Functions/Purchasing/PurchasingTransactionUpdate.cs index 8eaa8677..0eeb280c 100644 --- a/Intacct.SDK/Functions/Purchasing/PurchasingTransactionUpdate.cs +++ b/Intacct.SDK/Functions/Purchasing/PurchasingTransactionUpdate.cs @@ -82,6 +82,13 @@ public override void WriteXml(ref IaXmlWriter xml) xml.WriteElement("contactname", PayToContactName); xml.WriteEndElement(); //payto } + + if (!string.IsNullOrWhiteSpace(DeliverToContactName)) + { + xml.WriteStartElement("deliverto"); + xml.WriteElement("contactname", DeliverToContactName, true); + xml.WriteEndElement(); //deliverto + } xml.WriteElement("supdocid", AttachmentsId); xml.WriteElement("externalid", ExternalId); diff --git a/Intacct.SDK/Intacct.SDK.csproj b/Intacct.SDK/Intacct.SDK.csproj index 698ffdc4..f6870d41 100644 --- a/Intacct.SDK/Intacct.SDK.csproj +++ b/Intacct.SDK/Intacct.SDK.csproj @@ -2,7 +2,7 @@ netstandard1.6 Intacct.SDK - 2.0.5 + 2.0.6 intacct Sage Intacct SDK Sage Intacct SDK for .NET diff --git a/Intacct.SDK/Xml/RequestHandler.cs b/Intacct.SDK/Xml/RequestHandler.cs index 3d729125..f51bcaad 100644 --- a/Intacct.SDK/Xml/RequestHandler.cs +++ b/Intacct.SDK/Xml/RequestHandler.cs @@ -26,7 +26,7 @@ namespace Intacct.SDK.Xml { public class RequestHandler { - public const string Version = "2.0.5"; + public const string Version = "2.0.6"; public ClientConfig ClientConfig;