martes, 19 de mayo de 2015
Unknown
Después de un tiempo ya incursionando en el mundo de axapta y su lenguaje X++, he pensado que puede venir bien escribir sobre ello, ya que hay pocos ejemplos en internet en español.
A continuación veremos un pequeño ejemplo de un job que crea clientes con dos diálogos creados dinámicamente. Para ello realizaremos los siguientes pasos
1) Ubicamos en el árbol (AOT) los jobs y presionamos botón derecho "Crear nuevo Job"
2) Especificamos el nombre del Job, lo llamaremos "InsertCustomersDinamics"
3) Introducimos el siguiente código:
static void
ARInsertClients2(Args _args)
{
//Tabla de
clientes, donde insertaremos los nuevos clientes
CustTable custTable;
//Tabla de
grupos de clientes
CustGroup custGroup;
//Se cuencial
de clientes
NumberSeq numberSeq;
//Dialogo
donde le solicitaremos al usuario, el núero de clientes a crear
Dialog dialogNum;
//Dialogo
donde solicitaremos los datos de los clientes a crear
Dialog dialogVals;
DialogField fieldNumCus;
DialogGroup dialogGroupTmp;
Array fieldNameCus;
Array fieldCustGroup;
boolean ret;
boolean retAll;
IntegerBLN numCustomerToCreate;
IntegerBLN numCustomer;
CustName custName;
CustGroupId custGroupId;
//inicializamos
los arrays
fieldNameCus = new
Array(Types::Class);
fieldCustGroup = new Array(Types::Class);
//Solicitamos
al usuario que indique el número de clientes a crear
//textlabel
@@QAP24: Carga Masiva de Clientes
dialogNum = new
Dialog("@QAP24");
//textlabel
@QAP16: Cantidad de clientes
//textlbel
@QAP23: Cantidad de clientes a crear de forma masiva
fieldNumCus = dialogNum.addField(extendedTypeStr(IntegerBLN), "@QAP16", "@QAP23");
fieldNumCus.mandatory_RU(true);
dialogNum.run();
if (dialogNum.closedOk())
{
numCustomerToCreate =
fieldNumCus.value();
//labeltext
@QAP25: Datos de los Clientes a Crear
dialogVals = new Dialog("@QAP25");
for
(numCustomer=1;
numCustomer<=numCustomerToCreate; numCustomer+=1)
{
dialogGroupTmp =
dialogVals.addGroup("Cliente " + int642str((numCustomer)));
//textlabel
@SYS27874: Nombre del Cliente
fieldNameCus.value(numCustomer,
dialogVals.addField(extendedTypeStr(CustName),
"@SYS27874"));
fieldNameCus.value(numCustomer).mandatory_RU(true);
//textlabel
@QAP19: Grupo de Cliente
fieldCustGroup.value(numCustomer,
dialogVals.addField(extendedTypeStr(CustGroupId),
"@QAP19"));
fieldNameCus.value(numCustomer).mandatory_RU(true);
}
dialogVals.run();
if
(dialogVals.closedOk())
{
ttsBegin;
//inicializamos
la variable rtAll a true para establecer que por defecto todo ira bien
retAll = true;
for
(numCustomer=1;
numCustomer<=numCustomerToCreate; numCustomer+=1)
{
custName =
fieldNameCus.value(numCustomer).value();
custGroupId =
fieldCustGroup.value(numCustomer).value();
//obtenemos
el grupo de cliente que utilizaremos enlos clientes a crear
custGroup =
CustGroup::find(custGroupId);
//si
encontramos el grupo de clientes, continuamos
if
(custGroup)
{
//Invocamos
la inicialización del registro
custTable.initValue();
//obtenemos
la secuencia del AccountNum de los párametros customers
numberSeq =
NumberSeq::newGetNum(CustParameters::numRefCustAccount());
//Asignamos
el suguiente número
custTable.AccountNum = numberSeq.num();
custTable.CustGroup = custGroup.CustGroup;
custTable.initFromCustGroup(custGroup);
//ejecutamos
las validaciones de la tabla
ret
= custTable.validateWrite();
if
(ret)
{
custTable.insert(DirPartyType::Organization, custName + " " + int2str(numCustomer));
//textlabel
@QAP20: se creó satisfactoriamente el cliente cón el código {0}
info(strFmt("@QAP20",
custTable.AccountNum));
}
else
{
//textlabel @QAP21: No se guardo el cliente
info("@QAP21");
retAll = false;
}
}
else
{
//textlabel
@QAP22: No se encontro el código: {0} en la tabla Grupos de Clientes
info(strFmt("@QAP22",
custGroupId));
retAll = false;
}
}
//si
todos los registros se insertaron correctamente, hacemos el commit, sino
abortamos todo.
if
(retAll)
{
ttsCommit;
}
else
{
ttsAbort;
}
}
}
}
0 comentarios :
Publicar un comentario