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.

原文地址:https://www.cnblogs.com/xiangliqi/p/4609892.html