To Find or Update customer primary Address in Ax 2012
To Find or Update customer primary Address in Ax 2012 you can try following code. Relation between dirpartytable and custtable slightly changed in Ax 2012 so you need to re-learn about this.
static void jay_updateAddress(Args _args) {
container roles;
DirParty dirParty;
DirPartyPostalAddressView addressView;
LogisticsPostalAddress address;
CustTable custtable;
DirPartyLocation partyLocation;
;
ttsBegin;
custtable = Custtable::find("Cust-000025");
address = DirParty::primaryPostalAddress(CustTable.Party); //找到主要地址
address = DirParty::findPostalAddressByRole(CustTable.Party, LogisticsLocationRoleType::Business);
/* 找到第一个地址, 并将第一个地址更新为主要地址
select firstonly address join forupdate partyLocation
where partyLocation.Location == address.Location
&& partyLocation.Party == CustTable.Party;
partyLocation.IsPrimary = NoYes::Yes;
partyLocation.update();
*/
address.City = "沧州";
address.State = "河北省";
addressView.IsPrimary = NoYes::Yes; // this line is valid when update
addressView.Party = CustTable.Party;
addressview.initFromPostalAddress(address);
DirParty = DirParty::constructFromPartyRecId(CustTable.Party);
roles = [LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Business).RecId]; // 地址类型
DirParty.createOrUpdatePostalAddress(addressView,roles);
ttsCommit;
info("xixi");
}
Note: createOrUpdatePostalAddress method is useful for both creating or updating the customer address. if you are providing the existing dirpartyid then it will update the customer address ,in case of new dirpartyid it will create a new address.