1. Write a script and test the required fields of XML
VendInvoiceService vendInvoiceService = VendInvoiceService::construct();
AifQueryCriteria queryCriteria = AifQueryCriteria::construct();
VendInvoice VendInvoice = new VendInvoice();
XmlDocument xmlCreate;
AifCriteriaElement criteriaElement;
str xml = @'<?xml version="1.0" encoding="utf-8" ?>' +
@'<VendInvoice xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/VendInvoice">' +
@' <VendInvoiceInfoTable class="entity">' +
@' <PurchId>RA2-PO00000093</PurchId>' +
@' <RANInvoiceLocationURL>PUR</RANInvoiceLocationURL>' +
@' <RANInvoiceTotalInclTax>1500.01</RANInvoiceTotalInclTax>' +
@' <InclTax>yes</InclTax>' +
@' <CurrencyCode>AUD</CurrencyCode>' +
@' <DocumentDate>2014-11-12</DocumentDate>' +
@' <InvoiceAccount>3RDPA</InvoiceAccount>' +
@' <Num>201411120301</Num>' +
@' <PurchId>RA2-PO00000093</PurchId>' +
@' <VendInvoiceInfoSubTable class="entity">' +
@' <OrigPurchId>RA2-PO00000093</OrigPurchId>' +
@' <VendInvoiceInfoLine class="entity">' +
@' <Description>Tyler Describing stuff</Description>' +
@' <OrigPurchId>RA2-PO00000093</OrigPurchId>' +
@' <PurchaseLineLineNumber>1</PurchaseLineLineNumber>' +
@' <RANDocumentId>201411120401</RANDocumentId>' +
@' <ItemId>6310</ItemId>' +
@' <ReceiveNow>3</ReceiveNow>' +
@' </VendInvoiceInfoLine>' +
@' </VendInvoiceInfoSubTable>' +
@' </VendInvoiceInfoTable>' +
@' </VendInvoice>';
criteriaElement = AifCriteriaElement::newCriteriaElement(tablestr(VendInvoiceInfoTable),
fieldstr(VendInvoiceInfoTable, Num),
AifCriteriaOperator::NotEqual,
'0');
queryCriteria.addCriteriaElement(criteriaElement);
try
{
xmlCreate = XmlDocument::newXml(xml);
vendInvoice.deserialize(xmlCreate.xml());
vendInvoiceService.create(vendInvoice);
}
catch
{
exceptionTextFallThrough();
}
2. Configure the outbound port (field system adapter) with required fields
3. Create a class (extend AxSend) to generate the outboud record in the queue
AxdSendVendInvoice axdSendVendInvoice;
AifConstraintList aifConstraintList;
AifConstraint aifConstraint;
axdSendVendInvoice = new AxdSendVendInvoice();
aifConstraintList = new AifConstraintList();
aifConstraint = new AifConstraint();
aifConstraint.parmType(AifConstraintType::NoConstraint);
aifConstraintList.addConstraint(aifConstraint);
axdSendVendInvoice.parmShowDocPurpose(true);
axdSendVendInvoice.sendMultipleDocuments(classNum(VendInvoice), classNum(VendInvoiceService), AifSendMode::Async, aifConstraintList);
4. Run the script to generate the xml file to outbound folder
new AifOutboundProcessingService().run();
new AifGatewaySendService().run();
Note: The sequence of the fields in the xml is very important
<?xml version="1.0" encoding="utf-8" ?>
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
<Header>
<MessageId>{E120D4F9-C466-4CBF-BA60-E365202D7B19}</MessageId>
<Company>RA2</Company>
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/VendVendInvoiceService/create</Action>
</Header>
<Body>
<MessageParts>
<VendInvoice xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/VendInvoice">
<VendInvoiceInfoTable class="entity">
<CurrencyCode>AUD</CurrencyCode>
<DocumentDate>2014-10-29</DocumentDate>
<InclTax>Yes</InclTax>
<InvoiceAccount>3RDPA</InvoiceAccount>
<Num>TGC1</Num>
<PurchId>RA2-PO00000093</PurchId>
<RANInvoiceLocationURL>PUR</RANInvoiceLocationURL>
<RANInvoiceTotalInclTax>1500.01</RANInvoiceTotalInclTax>
<VendInvoiceInfoSubTable class="entity">
<OrigPurchId>RA2-PO00000093</OrigPurchId>
<VendInvoiceInfoLine class="entity">
<Description>Tyler Describing stuff</Description>
<ItemId>6310</ItemId>
<OrigPurchId>RA2-PO00000093</OrigPurchId>
<PurchaseLineLineNumber>1</PurchaseLineLineNumber>
<PurchPrice>500</PurchPrice>
<PurchUnit>ea</PurchUnit>
<RANDocumentId>201411120401</RANDocumentId>
<ReceiveNow>3</ReceiveNow>
</VendInvoiceInfoLine>
</VendInvoiceInfoSubTable>
</VendInvoiceInfoTable>
</VendInvoice>
</MessageParts>
</Body>
</Envelope>
5. Configure the inbound port (Field system adapter) with required fields
6. Copy the xml files into inbound folder
Notes: The xml files would be deleted once the inbound service is run
7. Run the script to trigger the inbound services
new AifGatewayReceiveService().run();
new AifInboundProcessingService().run();
8. Check the records which should be created
No comments:
Post a Comment