Sunday, March 23, 2014

Import Customer into AX 2012 using X++ with Address and Contact information

static void UploadCustomer(Args _args)
{
    CommaTextIO         csvFile;
    container                   readCon;
    counter                     icount,inserted;
    Dialog                      dialog;
    DialogField               dfFileName;


    FileName                    fileName;
     Name                        name;

    DirPartyContactInfoView     contactView;
    CustTable                            CustTable;
    DirParty                               dirParty;
    DirPartyRecId                      partyRecId;

    LogisticsPostalAddress        address;
    DirPartyPostalAddressView addressView;

    inserted =0;

    #File


    dialog = new Dialog("Pick the file");
    dfFileName = dialog.addField(extendedTypeStr("FilenameOpen"));
    dialog.filenameLookupFilter(["All files", #AllFiles]);


    if (dialog.run())
    {
        csvFile = new CommaTextIo(dfFileName.value(), 'r');
        csvFile.inFieldDelimiter(',');
        readCon = csvFile.read();
        ttsBegin;
        while(csvFile.status() == IO_Status::OK)
        {
            readCon = csvFile.read();

            if(readCon)
            {
                icount++;

                name = conPeek(readCon,2);
                partyRecId = DirPartyTable::createNew( DirPartyType::Organization, name).RecId;

                custTable.clear();
                custTable.initValue();
                custTable.Party      = partyRecId;
                custTable.AccountNum = conPeek(readCon,1);
                custTable.CustGroup  = conPeek(readCon,3);
                custTable.Currency   = conPeek(readCon,7);
                custTable.DlvMode    = conPeek(readCon,8);
                custTable.PaymTermId = conPeek(readCon,9);
                custTable.insert();

                custTable = Custtable::find(conPeek(readCon,1));
                partyRecId = custTable.Party;

                DirParty = DirParty::constructFromPartyRecId(partyRecId );
                address.clear();
                //address.PostBox = strLRTrim(conPeek(readCon,13));
                address.CountryRegionId = strLRTrim(conPeek(readCon,5));
                if( address.CountryRegionId != "")
                {
                    address.State = strLRTrim(conPeek(readCon,15));
                    address.ZipCode = strLRTrim(conPeek(readCon,15));
                    address.Street  = strLRTrim(conPeek(readCon,4));
                    address.City    = strLRTrim(conPeek(readCon,18));
                    
                    //address.Address =  conPeek(readCon,4);
    
                    addressView.LocationName = "Address";
                    addressView.IsPrimary = NoYes::Yes;
                    addressView.Party = partyRecId;
                    addressview.initFromPostalAddress(address);


                    DirParty = DirParty::constructFromPartyRecId(addressView.Party );
                    DirParty.createOrUpdatePostalAddress(addressView);
                }

                contactView.clear();

                if(conPeek(readCon,5) != "")
                {
                    contactView.LocationName = "Phone Number";
                    contactView.Locator      = strLRTrim(conPeek(readCon,5));
                    contactView.Type         = LogisticsElectronicAddressMethodType::Phone;
                    contactView.Party        = partyRecId;
                    contactView.IsPrimary    = NoYes::Yes;
                    dirParty.createOrUpdateContactInfo(contactView);
                }

                if(conPeek(readCon,3) != "")
                {
                    contactView.LocationName = "Fax Number";
                    contactView.Locator      = strLRTrim(conPeek(readCon,3));
                    contactView.Type         = LogisticsElectronicAddressMethodType::Fax;
                    contactView.Party        = partyRecId;
                    contactView.IsPrimary    = NoYes::Yes;
                    dirParty.createOrUpdateContactInfo(contactView);
                }

                if(conPeek(readCon,4) != "")
                {
                    contactView.LocationName = "Website";
                    contactView.Locator      = strLRTrim(conPeek(readCon,4));
                    contactView.Type         = LogisticsElectronicAddressMethodType::URL;
                    contactView.Party        = partyRecId;
                    contactView.IsPrimary    = NoYes::Yes;
                    dirParty.createOrUpdateContactInfo(contactView);
                }

                if(conPeek(readCon,6) != "")
                {
                    contactView.LocationName = "Email";
                    contactView.Locator      = strLRTrim(conPeek(readCon,6));
                    contactView.Type         = LogisticsElectronicAddressMethodType::Email;
                    contactView.Party        = partyRecId;
                    contactView.IsPrimary    = NoYes::Yes;
                    dirParty.createOrUpdateContactInfo(contactView);
                }

            }

        }
        ttsCommit;
    }

}

1 comment: