lunes, 9 de abril de 2012

Adding a secondary Cust/Vend address via X++

We're integrating with an external system once more.  This time we need to add an invoice address to the clients we are importing.  We already have a primary mail address, but on some occasions the invoices are directed to a department full of some patient ladies with very thick skin.
 
I find the way Ax 2009 deals with the global address book quite complicated but help is on hand in the form of a white paper (AX 2012 version).  However, I started by looking at the CustTable.deliveryAddress() and the Address.insert(..., ...) methods.

Below is an example of adding and editing the secondary invoice address:

static void Job1(Args _args)
{
    CustTable       custTable;
    DirPartyTable   dirPartyTable;
    Address         invoiceAddress;
    ;
    
    custTable       = CustTable::find("1");
    dirPartyTable   = DirPartyTable::find( custTable.PartyId );
    
    // Find private address for invoicing
    invoiceAddress = Address::find(dirPartyTable.TableId, dirPartyTable.RecId, AddressType::Invoice, true);
    if (!invoiceAddress)
    {
        invoiceAddress.AddrRecId    = dirPartyTable.RecId;
        invoiceAddress.AddrTableId  = dirPartyTable.TableId;
        invoiceAddress.type         = AddressType::Invoice;
        invoiceAddress.IsPrimary    = NoYes::No;
    }

    invoiceAddress.Name             = "Invoice Addressee";
    invoiceAddress.CountryRegionId  = "ES";
    invoiceAddress.Street           = "Calle de los perdidos";
    invoiceAddress.ZipCode          = "50000";
    invoiceAddress.City             = "Zaragoza";
    invoiceAddress.County           = "ZARAGOZA";
    invoiceAddress.State            = "AR";

    invoiceAddress.AddressMap::formatAddress();
    if (invoiceAddress.RecId == 0)
    {
        invoiceAddress.insert(true, false);
    }
    else
    {
        invoiceAddress.update(true, false);
    }
}

No hay comentarios:

Publicar un comentario