覆蓋客戶的賬單到聯絡人和賬單到地址資訊

當你需要覆蓋客戶的 Bill-To Contact 和 Bill-To Address 資訊時,第一步是為 Customer DAC 的 IsBillContSameAsMainIsBillSameAsMain 屬性設定正確的值。在更新 IsBillContSameAsMainIsBillSameAsMain 屬性以將當前 Same as Main 欄位值提交到快取後,不要忘記立即在 Customer 快取上呼叫 Update() 方法。 **** **** ****** ****** ******

下一步是在分配任何欄位值之前在 BillContactBillAddress 資料檢視上呼叫 Select() 方法。還建議將 Select() 方法的結果分配給 BillContactBillAddress 資料檢視的 Current 屬性,以保證你的程式碼分別修改 ContactAddress PXCache 中的當前記錄。

public class CustomerMaintExt : PXGraphExtension<CustomerMaint>
{
    public PXAction<Customer> UpdateBillingAddress;
    [PXButton(CommitChanges = true)]
    [PXUIField(DisplayName = "Update Bill-To Info")]
    protected void updateBillingAddress()
    {
        Customer currentCustomer = Base.BAccount.Current;

        if (currentCustomer.IsBillContSameAsMain != true)
        {
            currentCustomer.IsBillContSameAsMain = true;
            Base.BAccount.Update(currentCustomer);
        }
        else
        {
            currentCustomer.IsBillContSameAsMain = false;
            Base.BAccount.Update(currentCustomer);

            Contact billContact = Base.BillContact.Current = Base.BillContact.Select();
            billContact.FullName = "ABC Holdings Inc";
            billContact.Phone1 = "+1 (212) 532-9574";
            Base.BillContact.Update(billContact);
        }

        if (currentCustomer.IsBillSameAsMain != true)
        {
            currentCustomer.IsBillSameAsMain = true;
            Base.CurrentCustomer.Update(currentCustomer);
        }
        else
        {
            currentCustomer.IsBillSameAsMain = false;
            Base.CurrentCustomer.Update(currentCustomer);

            Address billAddress = Base.BillAddress.Current = Base.BillAddress.Select();
            billAddress.AddressLine1 = "65 Broadway";
            billAddress.AddressLine2 = "Office Suite 187";
            billAddress.City = "New York";
            billAddress.CountryID = "US";
            billAddress = Base.BillAddress.Update(billAddress);
            billAddress.State = "NY";
            billAddress.PostalCode = "10004";
            Base.BillAddress.Update(billAddress);
        }

        Base.Actions.PressSave();
    }
}