In this post I will show you the way for creating a Invent Movement Journal in Ax 2012 through AIF (FileSystem Adapter).
We do not have the standar service for Invent Movement journal but we can create a custom service or modify a existent service. I choosed the second one.
The InventProfitLossJournal Service has what it takes.
Now we will create the EndPoint
Now, we will select the option Service Operations
And in the data polices form I selected the following fields
Now, check the schema out
We are going to create the XML File according to the schema
<?xml version="1.0" encoding="utf-8"?>
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
<Header>
<MessageId>{429AA009-09D4-45A9-BB2B-14DF0DFD3D93}</MessageId>
<LogonAsUser>NETWORK\jarizmendi</LogonAsUser>
<Company>ara</Company>
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/ProfitLossJournalService/create</Action>
<RequestMessageId>
</RequestMessageId>
</Header>
<Body>
<MessageParts xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
<ProfitLossJournal xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/ProfitLossJournal">
<InventJournalTable class="entity">
<AXHJRNO>AS400</AXHJRNO>
<Description>Shitty Journal</Description>
<JournalNameId>Entxcancel</JournalNameId>
<JournalType>Movement</JournalType>
<InventJournalTrans class="entity">
<DefaultDimension xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
<ItemId>MA451</ItemId>
<Qty>-3</Qty>
<TransDate>2013-05-28</TransDate>
<InventDim class="entity">
<InventBatchId>Surtido</InventBatchId>
<InventLocationId>002</InventLocationId>
<InventSiteId>Default</InventSiteId>
<WMSLocationId>General</WMSLocationId>
</InventDim>
</InventJournalTrans>
</InventJournalTable>
</ProfitLossJournal>
</MessageParts>
</Body>
</Envelope>
Check the header
<Header>
<MessageId>{429AA009-09D4-45A9-BB2B-14DF0DFD3D93}</MessageId>
<LogonAsUser>NETWORK\jarizmendi</LogonAsUser>
<Company>ara</Company>
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/ProfitLossJournalService/create</Action>
<RequestMessageId>
</RequestMessageId>
</Header>
Action has the namespace of the service, the external name of the service and the action (Create).
The body has the same order than the Schema.
Also we need to change this class method
In the standar, the journal name is taken by the field ProfitLossJournalNameid, but we change this method and now the JournalNameId is taken by the XML File (Compile CIL).
In the XML File there are two tags that indicate this is a Journal with a JournalNameId Entxcancel and its journalType is Movement
Now we have to run this job
void jc()
{
Args args;
AifGatewayReceiveService agrs = new AifGatewayReceiveService();
AifInboundProcessingService aip = new AifInboundProcessingService();
AifGatewaySendService agss = new AifGatewaySendService();
AifOutboundProcessingService aop = new AifOutboundProcessingService();
;
agrs.run();
aip.run();
agss.run();
aop.run();
}
And the result is:
And the lines