Buscar en este blog

martes, 20 de octubre de 2015

Crear clientes y direcciones por código x++ en Microsoft Dynamics Ax 2012

Aquí cómo crear un cliente con su dirección y un registro de información de contacto como email, mediante código X++.

static void JobCreaClientePersona(Args _args)
{
    CustTable                    custTable;
    NumberSeq                    numberSeq;
    Name                         name = 'Jorge Lopez';
 
    DirParty                        dirParty;
    DirPartyPostalAddressView       dirPartyPostalAddressView;
    DirPartyContactInfoView         dirPartyContactInfo;
    ;
 
    ttsBegin;
    custTable.initValue();
 
   try
    {
       //crea datos del cliente en la CustTable
        numberSeq               = NumberSeq::newGetNum(CustParameters::numRefCustAccount());
        custTable.AccountNum    = numberSeq.num();
        custTable.CustGroup     = '02';
        custTable.Currency      = 'MXP';
        custTable.PaymTermId    = '00';
        custTable.PaymMode      = '01';
 
        //aquí se define si es persona u organización
        custTable.insert(DirPartyType::Person, name);  
 
        //DirParty
        //Crea instancia de la clase DirParty a partir de la entidad de CustTable
        dirParty = DirParty::constructFromCommon(custTable);
 
        dirPartyPostalAddressView.LocationName      = 'Oficina central ';
        dirPartyPostalAddressView.City              = 'Polanco';
        dirPartyPostalAddressView.Street            = 'Presidente Masarik';
        dirPartyPostalAddressView.StreetNumber      = '22';
        dirPartyPostalAddressView.CountryRegionId   = 'MEX'; //necesita ser un país valido
        dirPartyPostalAddressView.State             = '09' //necesita ser un estado valido
 
        // Llena dirección
        dirParty.createOrUpdatePostalAddress(dirPartyPostalAddressView);
 
        dirPartyContactInfo.LocationName    = 'Email Jorge Lopez';
        dirPartyContactInfo.Locator         = 'jorge.lopez222@gmail.com';
        dirPartyContactInfo.Type            = LogisticsElectronicAddressMethodType::Email;
        dirPartyContactInfo.IsPrimary       = NoYes::Yes;
 
        // Llena dirección de contacto
        dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
 
        ttsCommit;
       
        info( strFmt("Cliente creado: %1" , custTable.AccountNum));
    }
    catch(Exception::Error)
    {
       ttsAbort;
       throw Exception::Error;
    }

}

Post que podrían interesarte:
Capturar errores del infolog mediante código x++
Crear documentos asociados a un registro por código (DocuRef)
Teclas rápidas en Microsoft Dynamics Ax 2012


Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo. O comenta si quieres saber sobre algún tema en específico.

No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma. 

3 comentarios:

  1. Una duda tengo este mismo código (o casi el mismo) y en ocasiones me marca un error
    "No se puede crear un registro en Direcciones (LogisticsPostalAddress).El registro ya existe.", lo curioso es que este error solo aparece si lo ejecuto desde un WS o desde un portal que corre ese WS, pero al correr en un job directamente el cliente se inserta sin problemas ¿Sabes porque?

    ResponderBorrar
  2. Este comentario ha sido eliminado por el autor.

    ResponderBorrar