Saturday, 11 July 2015

CustomerPersonsXppImport

static void CustomerPersonsXppImport(Args _args)
{
    #define.Name("Alex Anikiev")
    #define.FirstName("Alex")
    #define.LastName("Anikiev")
    #define.PostalAddressName("Postal address")
    #define.City("Alpharetta")
    #define.County("FULTON")
    #define.Country("USA")
    #define.Street("1125 Sanctuary Pkwy #300")
    #define.State("GA")
    #define.ZipCode("30009")
    #define.ElectronicAddressName("Electronic address")
    #define.Locator("alexani@microsoft.com")
    #define.LocatorExt("")
    #define.CustAccount("Alex")
    #define.CustGroup("10")
    #define.Currency("USD")
    #define.CostCenter("OU_4803")
    #define.Department("OU_2311")  
    #define.ExpensePurpose("Training")

    DirPerson                   dirPerson;
    DirPersonName               dirPersonName;
    LogisticsLocation           logisticsLocation;
    LogisticsPostalAddress      logisticsPostalAddress;
    LogisticsElectronicAddress  logisticsElectronicAddress;
    CustTable                   custTable;

    try
    {
        ttsbegin;

        //Person
        dirPerson.clear();
        dirPerson.initValue();
        dirPerson.Name = #Name;

        if (dirPerson.validateWrite())
        {
            dirPerson.insert();

            if (dirPerson)
            {
                //Person name
                dirPersonName.clear();
                dirPersonName.initValue();
                dirPersonName.FirstName = #FirstName;
                dirPersonName.LastName = #LastName;
                dirPersonName.Person = dirPerson.RecId;
                dirPersonName.ValidFrom = DateTimeUtil::utcNow();
               dirPersonName.ValidTo = DateTimeUtil::maxValue();

                if (dirPersonName.validateWrite())
                {
                    dirPersonName.insert();
                }
                else
                    throw error("Person name");

                //Location
                logisticsLocation = LogisticsLocation::create(#PostalAddressName, NoYes::Yes);

                //Party location
                DirParty::addLocation(dirPerson.RecId, logisticsLocation.RecId, true, true, false, [LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Home).RecId]);

                //Postal address
                logisticsPostalAddress.clear();
                logisticsPostalAddress.initValue();
                logisticsPostalAddress.City = #City;
                logisticsPostalAddress.County = #County;
                logisticsPostalAddress.CountryRegionId = #Country;
                logisticsPostalAddress.Street = #Street;
                logisticsPostalAddress.State = #State;
                logisticsPostalAddress.ZipCode = #ZipCode;
                logisticsPostalAddress.Address = LogisticsPostalAddress::formatAddress(
                #Street, #ZipCode, #City, #Country, #State, #County);              
                logisticsPostalAddress.Location = logisticsLocation.RecId;
                logisticsPostalAddress.ValidFrom = DateTimeUtil::utcNow();
                logisticsPostalAddress.ValidTo = DateTimeUtil::maxValue();

                if (logisticsPostalAddress.validateWrite())
                {
                    logisticsPostalAddress.insert();
                }
                else
                    throw error("Postal address");

                //Location
                logisticsLocation = LogisticsLocation::create(#ElectronicAddressName, NoYes::No);

                //Party location
                DirParty::addLocation(dirPerson.RecId, logisticsLocation.RecId, false, true, false);

                //Electronic address
                logisticsElectronicAddress.clear();
                logisticsElectronicAddress.initValue();
                logisticsElectronicAddress.Location = logisticsLocation.RecId;
                logisticsElectronicAddress.Type = LogisticsElectronicAddressMethodType::Email;
                logisticsElectronicAddress.Locator = #Locator;
                logisticsElectronicAddress.LocatorExtension = #LocatorExt;
                logisticsElectronicAddress.ValidFrom = DateTimeUtil::utcNow();
                logisticsElectronicAddress.ValidTo = DateTimeUtil::maxValue();

                if (logisticsElectronicAddress.validateWrite())
                {
                    logisticsElectronicAddress.insert();
                }
                else
                    throw error("Electronic address");

                //Customer
                custTable.clear();
                custTable.initValue();
                //CustTable.Currency = "";//initValue

                custTable.AccountNum = #CustAccount;
                //custTable.AccountNum = NumberSeq::newGetNum(CustParameters::numRefCustAccount()).num();
                custTable.Party = dirPerson.RecId;

                custTable.CustGroup = #CustGroup;
                custTable.initFromCustGroup(CustGroup::find(#CustGroup));

                custTable.Currency = #Currency;
                custTable.DefaultDimension = AxdDimensionUtil::getDimensionAttributeValueSetId(
                [3, "CostCenter", #CostCenter, "Department", #Department, "ExpensePurpose", #ExpensePurpose]);

                if (custTable.validateWrite())
                {
                    custTable.insert();
                }
                else
                    throw error("Customer");
            }
        }
        else
            throw error("Person");

        ttscommit;
    }
    catch
    {
        error("Error!");
        return;
    }

    info("Done!");
}

No comments:

Post a Comment