Skip to main content

AX 2012: Create sales order with delivery address from an XML file

Code snippet to create a sales order from an XML file.

private void createSOFromFile()
{
    AxdSalesOrder   salesOrder;
    AifEntityKey    key;
   
    Filename        fileName;
    RecId           salesTableRecId;
    SalesTable      salesTable;
   
    XmlDocument     xmlDoc;
   
    salesOrder  = new AxdSalesOrder();
    fileName    = @"C:\Temp\SalesOrder.XML";
   
    xmlDoc = XmlDocument::newFile(fileName);
   
    key = salesOrder.create(xmlDoc.xml(),  
              new AifEndPointActionPolicyInfo(), 
              new AifConstraintList());

    salesTableRecId = key.parmRecId();
   
    info(strFmt("Sales order created: %1", SalesTable::findRecId(salesTableRecId).SalesId));
}

Sample XML file
<?xml version="1.0" encoding="UTF-8"?>
<SalesOrder xmlns:n="http://schemas.microsoft.com/dynamics/2008/01/documents/SalesOrder">
   <SalesTable class="entity">
      <CustAccount>C000002</CustAccount>
      <InventLocationId>EMU</InventLocationId>
      <CustomerRef>Cash on Delivery (COD)</CustomerRef>
      <PurchOrderFormNum>4669286216,1021</PurchOrderFormNum>
      <ReceiptDateRequested>2011-11-11</ReceiptDateRequested>
      <DeliveryName>team03qa@gmail.com</DeliveryName>
      <TableDlvAddr class="entity">
         <City>southbank</City>
         <CountryRegionId>AUS</CountryRegionId>
         <LocationName>delivery address</LocationName>
         <State>VIC</State>
         <Street>13075 MANCHESTER RD STE</Street>
         <ZipCode>3006</ZipCode>
      </TableDlvAddr>
      <SalesLine class="entity">
         <ItemId>CANO</ItemId>
         <SalesQty>20</SalesQty>
         <SalesPrice>82.25</SalesPrice>
         <SalesUnit>ltr</SalesUnit>
         <LineAmount>1</LineAmount>
         <LineNum>8966003144</LineNum>
      </SalesLine>
      <SalesLine class="entity">
         <ItemId>CANO</ItemId>
         <SalesPrice>9.9</SalesPrice>
         <SalesQty>1</SalesQty>
         <SalesUnit>ltr</SalesUnit>
         <LineAmount>9.9</LineAmount>
         <LineNum>8966003208</LineNum>
      </SalesLine>
   </SalesTable>
</SalesOrder> 

How does it work

AxdSalesOrder class uses AifEntity classes to create sales order, these classes internally map the datasources of an AOT query AxdSalesOrder with the element tags in XML with attribute class = "entity". For example; for delivery address, the XML node name is TableDlvAddr which is the datasource name in AxdSalesOrder query.


Similarly, if you want to add notes or attach documents with sales order you can add DocuRefHeader node in XML file.

Comments

  1. Can someone post an example of the XML file when also using the DocuRefHeader node? I keep getting an error about invalid child elements even though I know they are correct.

    ReplyDelete
  2. I would highly recommend Mr, Benjamin services to any person in need financial help and they will keep you on top of high directories for any further needs. Once again I commend yourself and your staff for extraordinary service and customer service, as this is a great asset to your company and a pleasant experience to customers such as myself. Wishing you all the best for the future.Mr, Benjamin is best way to get an easy loan,here is there email.. / 247officedept@gmail.com     Or talk to Mr Benjamin On WhatsApp Via_+1-989-394-3740 Thank You for helping me with loan once again in my sincerely heart I'm forever grateful.

    ReplyDelete

Post a Comment

I will appreciate your comments !

Popular posts from this blog

The Dual Write implementation - Part 1 - Understand and Setup

What is Dual-write? Tightly couples – complete at one transaction level Near real time Bi-directional Master data and business documents – Customer records you are creating and modifying and at this document we are talking about sales orders or quotes and invoice. Master data could be reference data e.g. customer groups and tax information Why Dual-write and why not Data Integrator? Data Integrator is Manual or Scheduled One directional Now, Let's deep dive and understand what is required for Dual-write setup and from where to start. First thing first, check you have access to https://make.powerapps.com/ Choose right environment of CDS (CE) Make sure you have access to the environment too, click on gear icon and Admin Center  Look for required environment and Open it, you must have access as going forward you are going to configure dual write steps in the environment user the same user you are logged in now. Now, go back to power platform admin center and...

D365FO: Entity cannot be deleted while dependent Entities for a processing group exist. Delete dependent Entities for a processing group and try again.

Scenario: There are times when you want to delete an entity from target entity list and when you do so, you face an error message which does not tell you where exactly the entity has been used.  "Entity cannot be deleted while dependent Entities for the processing group exist. Delete dependent Entities for a processing group and try again. " Solution: Browse the environment by appending this part  /?mi=SysTableBrowser&TableName=DMFDefinitionGroupEntity&cmp=USMF   at the end.  For example; if the environment URL is  https://daxture.sandbox.operations.dynamics.com then the complete URL will be https://daxture.sandbox.operations.dynamics.com/?mi=SysTableBrowser&TableName=DMFDefinitionGroupEntity&cmp=USMF Filter for Entity and it will give you the DefinitionGroup where the entity has been added or used in data management import/export projects. Get the DefinitionGroup name and search in the export/import projects under data management and either del...

Dual-write connection set error: An item with the same key has already been added

If you happen to see this error message then you have duplicate records in cdm_company entity in CDS environment. Check for cdm_companycode field this is normally not allowed but have a look and delete the ones with duplicates.