Me again! I have an issue where my eConnect code is not updating the receivings Tax Summary correctly. I have attached some images of what the client is expecting, and what my submission is creating
|And here is the XML that I submitted. I am almost there, I am just overlooking something!
Within this images.zip file, image013.jpg is what they are expecting. The problem I am getting is that the TAX Id window has not populated the Gross figure and the distribution has produced an unbalanced document. Image007 & 008 are what my code are currently producing
So I need to figure out what to add to my code in order to get these populated.
<?xml version="1.0" encoding="utf-8"?>
<POPReceivingsType>
<eConnectProcessInfo xsi:nil="true" />
<taRequesterTrxDisabler_Items xsi:nil="true" />
<taUpdateCreateItemRcd xsi:nil="true" />
<taUpdateCreateVendorRcd xsi:nil="true" />
<taCreateVendorAddress_Items xsi:nil="true" />
<taPopRcptLotInsert_Items xsi:nil="true" />
<taPopRcptSerialInsert_Items xsi:nil="true" />
<taPopRcptLineInsert_Items>
<taPopRcptLineInsert>
<POPTYPE>3</POPTYPE>
<POPRCTNM>R000065</POPRCTNM>
<ITEMNMBR>Laynards x 30</ITEMNMBR>
<ITEMDESC>Laynards x 30</ITEMDESC>
<VENDORID>ARJ001</VENDORID>
<RCPTLNNM>1</RCPTLNNM>
<InventoryAccount>9998-00</InventoryAccount>
<UOFM>Each</UOFM>
<UNITCOST>43.20</UNITCOST>
<EXTDCOST>43.20</EXTDCOST>
<NONINVEN>1</NONINVEN>
<QTYSHPPD>1</QTYSHPPD>
<QTYINVCD>1</QTYINVCD>
<Purchase_IV_Item_Taxable>3</Purchase_IV_Item_Taxable>
<Purchase_Site_Tax_Schedu>PSTD</Purchase_Site_Tax_Schedu>
<LOCNCODE>NO PROJECT</LOCNCODE>
<receiptdate>01/02/2016</receiptdate>
<CURNCYID>GBP</CURNCYID>
<ProjNum>DEVLIV1SC</ProjNum>
<CostCatID>SC04</CostCatID>
</taPopRcptLineInsert>
</taPopRcptLineInsert_Items>
<taPopRcptMultiBin_Items xsi:nil="true" />
<taPopRcptLineTaxInsert_Items>
<taPopRcptLineTaxInsert>
<VENDORID>ARJ001</VENDORID>
<POPRCTNM>R000065</POPRCTNM>
<TAXDTLID>PSTD</TAXDTLID>
<TAXTYPE>0</TAXTYPE>
<ACTNUMST>1226-00</ACTNUMST>
<TAXAMNT>8.64</TAXAMNT>
<RCPTLNNM>1</RCPTLNNM>
</taPopRcptLineTaxInsert>
</taPopRcptLineTaxInsert_Items>
<taPopRctUserDefined xsi:nil="true" />
<taPopDistribution_Items xsi:nil="true" />
<taAnalyticsDistribution_Items xsi:nil="true" />
<taPopRcptHdrInsert>
<POPRCTNM>R000065</POPRCTNM>
<POPTYPE>3</POPTYPE>
<VNDDOCNM>27300</VNDDOCNM>
<receiptdate>01/02/2016</receiptdate>
<BACHNUMB>16022016025926</BACHNUMB>
<VENDORID>ARJ001</VENDORID>
<TAXAMNT>8.64</TAXAMNT>
<AUTOCOST>1</AUTOCOST>
<TAXSCHID>PSTD</TAXSCHID>
<USINGHEADERLEVELTAXES>2</USINGHEADERLEVELTAXES>
<CURNCYID>GBP</CURNCYID>
</taPopRcptHdrInsert>
<taMdaUpdate_Items xsi:nil="true" />
</POPReceivingsType>
</eConnect>
POPReceivingsType oPOPReceivingsType = new POPReceivingsType();
taPopRcptHdrInsert invoiceHeader = new taPopRcptHdrInsert();
List<taPopRcptLineInsert_ItemsTaPopRcptLineInsert> ecInvoiceLines = new List<taPopRcptLineInsert_ItemsTaPopRcptLineInsert>();
GetNextDocNumbers transNumber = new GetNextDocNumbers();
Int16 lineNumber = 1, lineIndex = 0;
String xmlFilename = "XML\\posted" + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".xml";
Decimal totalTax = 0;
//Get Business Unit/Supplier Details
c2sBUnit.BU_ID = Convert.ToInt32(invoice.BU_ID);
c2sSupplier.Supplier_ID = invoice.Supplier_ID;
c2sBUnit.Fetch();
c2sSupplier.Fetch();
//build connection string to dynamics database
dynamicsConnStr = ConfigurationManager.ConnectionStrings["eConnectDB"].ConnectionString.Replace("{DBNAME}", c2sBUnit.BU_DBName);
Console.WriteLine(dynamicsConnStr);
invoice.InvoiceNumber = transNumber.GetNextPOPReceiptNumber(IncrementDecrement.Increment, dynamicsConnStr);
String batchNumberPlaceHolder = DateTime.Now.ToString("ddMMyyyyhhmmss");
String vendorReference = c2sSupplier.Supplier_Acct.Substring(c2sSupplier.Supplier_Acct.IndexOf('-') + 1);
Console.WriteLine(invoice.SupplierDocumentNumber);
//Invoice Header Details
invoiceHeader.POPRCTNM = invoice.InvoiceNumber; //receipt number placeholder
invoiceHeader.POPTYPE = 3; //Shipping/invoice
invoiceHeader.VNDDOCNM = invoice.SupplierDocumentNumber; //invoice number
invoiceHeader.CURNCYID = "GBP"; //currency defaults to GBP
invoiceHeader.TAXSCHID = invoice.TaxSchedule; //Tax Code
invoiceHeader.receiptdate = invoice.InvoiceDate.ToString("dd/MM/yyyy"); // invoice.InvoiceDate.ToString("dd/MM/yyyy");
invoiceHeader.USINGHEADERLEVELTAXES = 2;
invoiceHeader.AUTOCOST = 1;
invoiceHeader.BACHNUMB = batchNumberPlaceHolder;
invoiceHeader.VENDORID = vendorReference;
//Invoice lines
taPopRcptLineTaxInsert_ItemsTaPopRcptLineTaxInsert[] invoiceLineTax = new taPopRcptLineTaxInsert_ItemsTaPopRcptLineTaxInsert[invoice.InvoiceLines.Count];
oPOPReceivingsType.taPopRcptLineInsert_Items = new taPopRcptLineInsert_ItemsTaPopRcptLineInsert[invoice.InvoiceLines.Count];
Decimal totalInvoiceTax = 0;
foreach (OutgoingInvoiceLine line in invoice.InvoiceLines)
{
taPopRcptLineTaxInsert_ItemsTaPopRcptLineTaxInsert invoiceTax = new taPopRcptLineTaxInsert_ItemsTaPopRcptLineTaxInsert();
taPopRcptLineInsert_ItemsTaPopRcptLineInsert ecLine = new taPopRcptLineInsert_ItemsTaPopRcptLineInsert();
NominalIDs c2sNominal = new NominalIDs(ConfigurationManager.ConnectionStrings["DestinationDB"].ConnectionString);
ecLine.POPRCTNM = invoice.SupplierDocumentNumber;
ecLine.VENDORID = vendorReference;
ecLine.CURNCYID = "GBP";
ecLine.ITEMNMBR = line.ItemDescription;
ecLine.ITEMDESC = line.ItemDescription;
ecLine.UOFM = "Each";
ecLine.QTYINVCD = line.Quantity;
ecLine.QTYSHPPD = line.Quantity;
ecLine.UNITCOST = Decimal.Parse(line.UnitCost.ToString());
ecLine.EXTDCOST = Decimal.Parse(Convert.ToString(line.UnitCost * line.Quantity));
ecLine.Purchase_IV_Item_Taxable = 3;
ecLine.EXTDCOSTSpecified = true;
ecLine.UNITCOSTSpecified = true;
ecLine.NONINVEN = 1;
ecLine.receiptdate = "01/02/2016";
ecLine.RCPTLNNM = lineNumber;
ecLine.POPTYPE = 3;
//ecLine.INVINDX = 315;
ecLine.InventoryAccount = "9998-00"; //line.NominalCode;
ecLine.ProjNum = line.ProjectNumber;
ecLine.CostCatID = line.CostCategory;
ecLine.LOCNCODE = "NO PROJECT"; //default Location Code
ecLine.Purchase_Site_Tax_Schedu = line.TaxCode;
oPOPReceivingsType.taPopRcptLineInsert_Items[lineIndex] = ecLine;
totalTax = line.TaxCost;
//Invoice Tax
c2sNominal.Nominal_BUID = c2sBUnit.BU_ID;
c2sNominal.Nominal_Code = line.NominalCode;
c2sNominal.Fetch();
invoiceTax.TAXTYPE = 0;
invoiceTax.POPRCTNM = invoice.SupplierDocumentNumber;
invoiceTax.VENDORID = vendorReference;
invoiceTax.TAXDTLID = invoice.TaxDetail;
invoiceTax.TAXAMNT = totalTax;
invoiceTax.MSCTXAMT = Decimal.Parse("0.00");
invoiceTax.FRTTXAMT = Decimal.Parse("0.00");
//invoiceTax.ACTINDX = c2sNominal.ACCTINDX;
invoiceTax.ACTNUMST = "1226-00";//line.NominalCode;
invoiceTax.RCPTLNNM = lineNumber;
invoiceLineTax[lineIndex] = invoiceTax;
totalInvoiceTax += totalTax;
lineIndex++;
lineNumber++;
}
invoiceHeader.TAXAMNT = totalInvoiceTax;
oPOPReceivingsType.taPopRcptHdrInsert = invoiceHeader;
oPOPReceivingsType.taPopRcptLineTaxInsert_Items = invoiceLineTax;
// Create an eConnect XML document object and populate it
// with the POPReceivingsType schema object
eConnectType eConnect = new eConnectType();
eConnect.POPReceivingsType = new POPReceivingsType[1];
eConnect.POPReceivingsType[0] = oPOPReceivingsType;
// Create a file to hold the serialized eConnect XML document
FileStream fs = new FileStream(xmlFilename, FileMode.Create);
XmlTextWriter writer = new XmlTextWriter(fs, new UTF8Encoding());
// Serialize the eConnect document object to the file using the XmlTextWriter.
XmlSerializer serializer = new XmlSerializer(eConnect.GetType());
serializer.Serialize(writer, eConnect);
writer.Close();
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(xmlFilename);
//// Create an XML string from the document object
invoice.GeneratedXML = xmldoc.OuterXml;