Você está na página 1de 4

Probar / Consumir documentos AIF desde un Job usando

X++
Bueno la primera entrada de mi blog tiene que ver con ​AIF este mundillo aún por explorar
al máximo, pero igual entre todos lo terminamos de explorar así que empecemos con ello.

En ocasiones nos hacemos la pregunta: "​¿Y ahora cómo pruebo el documento AIF que
acabo de crear/configurar ?​", pues bien la respuesta no es muy difícil, existen varios
métodos de hacerlos entre ellos tenemos C#, clientes SOAP, o el mismo Ax mediante la
lectura directa de el XML o ir configurando el servicio por código x++, pa ra esta entrada
nos vamos a centrar en hacerlo directamente desde Ax por medio de un Job y haciendo la
llamada a un archivo XML.
Para este ejemplo voy a utilizar el servicio ​LedgerPurchaseInvoiceService​, para la creación
de una factura de proveedores, y usando el método ​create ​del mismo.
Lo primero es que tenemos que armar el XML de acuerdo a lo que le hayamos configurado
al servicio esto con el fin de no tener un XML con mil campos de los cuales solo usas 10.
Para este ejemplo he configurado estos campos, por lo tanto el xml tendrá estos o
menos campos dependiendo de si tiene el check de ​Requerido.

-​ ​<​soapenv:Envelope
xmlns:soapenv​=​"​http://schemas.xmlsoap.org/soap/envelope/​"​xmlns:ser​=​"​http://schemas.microsoft.c
om/dynamics/2008/01/services​"​xmlns:pur​=​"​http://schemas.microsoft.com/dynamics/2008/01/docum
ents/PurchaseInvoice​">
-​ ​<​pur:LedgerJournalTable class=​"​entity​">
​<​pur:JournalName>​APInv​</​pur:JournalName​>
​<​pur:WorkflowApprovalStatus>​NotSubmitted​</​pur:WorkflowApprovalStatus​>
-​ ​<​pur:LedgerJournalTrans class=​"​entity​">
​<​pur:AccountNum>​1001​</​pur:AccountNum​>
​<​pur:AmountCurCredit>​200​</​pur:AmountCurCredit​>
​<​pur:ApprovedBy>​3711​</​pur:ApprovedBy​>
​<​pur:DocumentDate>​2009-08-25​</​pur:DocumentDate​>
​<​pur:Invoice>​Factura1​</​pur:Invoice​>
​<​pur:TransDate>​2009-08-25​</​pur:TransDate​>
​</​pur:LedgerJournalTrans​>
​</​pur:LedgerJournalTable​>
</​soapenv:Envelope​>
Solo hace falta crearlo en un bloc de notas o cualquier editor de texto y guardarlo en una
ruta fácil de recordar de nuestro disco duro, yo lo he guardado en
C:\createPurchInvoice.xml.
Por último solo hace falta nuestro Job en Ax el cual tendrá la siguiente pinta:

static void​ testAIF(Args _args)


{
AifDocumentXml xml;
AifEntityKey aifEntityKey;
XmlDocument xmlDocument;
AifEntityKeyList entityKeyList;
AxdPurchaseInvoice AxdPurchaseInvoice;
LedgerJournalTable ljt;
;
xmlDocument = XmlDocument::newFile(​"C:\\createPurchInvoice.xml"​);
xml = xmlDocument.xml();
​if​ (xml)
{
AxdPurchaseInvoice = AxdBase::newClassId(​Classnum​(AxdPurchaseInvoice));
​try
{
entityKeyList = AxdPurchaseInvoice.createList(xml, ​new​ AifEndpointActionPolicyInfo(),
new​ AifConstraintListCollection());
aifEntityKey = entityKeyList.getEntityKey(1);
info(strfmt(​"Se ha creado el registro con RecId %1 en la tabla %2"​,
int642str(aifEntityKey.parmRecId()),Tableid2Name(aifEntityKey.parmTableId())));
ljt = LedgerJournalTable::findRecId(aifEntityKey.parmRecId());
info(strfmt(​"Se ha creado el diario de proveedores %1"​,ljt.JournalNum));
}
​catch​(Exception::Error){
info(​"Se ha producido un error"​);
}
}
}
Resumiendo un poco el código de arriba, simplemente se utiliza la clase Axd* para el
servicio LedgerPurchaseInvoiceService en este caso es la clase
AxdPurchaseInvoice la cual se inicializa con una serie de parámetros y con el xml.

Así que ejecutando el Job obtendremos nuestra anhelada prueba.


En otra entrada sigo mostrando cómo se pueden probar los AIF de diferentes formas.

Você também pode gostar