acumatica
Изменения в контактах и адресной информации через код
Поиск…
Вступление
В этом разделе вы узнаете, как изменять информацию о контактах и адресах с помощью кода на разных экранах в Acumatica.
Укажите контактную и адресную информацию для нового сотрудника
Чтобы указать контактную и адресную информацию для сотрудника, вы всегда должны вызывать метод Select()
в представлениях контактов и адресов перед назначением значений полей. Также рекомендуется присваивать результат метода Select()
объектам « Контакты» и « Адресные данные» « Текущее свойство», чтобы гарантировать, что ваш код изменяет текущую запись в Contact и Address PXCache соответственно.
EmployeeMaint employeeMaintGraph = PXGraph.CreateInstance<EmployeeMaint>();
EPEmployee epEmployeeRow = new EPEmployee();
epEmployeeRow.AcctCD = "EMPLOYEE1";
epEmployeeRow = employeeMaintGraph.Employee.Insert(epEmployeeRow);
Contact contactRow = employeeMaintGraph.Contact.Current = employeeMaintGraph.Contact.Select();
contactRow.FirstName = "John";
contactRow.LastName = "Green";
employeeMaintGraph.Contact.Update(contactRow);
Address addressRow = employeeMaintGraph.Address.Current = employeeMaintGraph.Address.Select();
addressRow.CountryID = "US";
addressRow = employeeMaintGraph.Address.Update(addressRow);
addressRow.State = "DC";
employeeMaintGraph.Address.Update(addressRow);
epEmployeeRow.VendorClassID = "EMPSTAND";
epEmployeeRow.DepartmentID = "FINANCE";
employeeMaintGraph.Employee.Update(epEmployeeRow);
employeeMaintGraph.Actions.PressSave();
При вставке нового Employee employeeMaintGraph.Contact.Current
всегда будет возвращать главную запись контакта, поскольку запись контакта автоматически добавляется в кеш и, следовательно, становится доступной через текущее свойство PXCache / Data View. Использование метода Select()
является более универсальным, поскольку оно будет работать во всех возможных сценариях, нужно ли вводить новый Employee или обновлять существующий.
Переопределить связь между билл-сайтом и биллом-адресом для клиента
Когда вам необходимо переопределить информацию о счетах Bill-To Contact и Bill-To Address для клиента, самым первым шагом является установление правильных значений свойств IsBillContSameAsMain и IsBillSameAsMain клиентского ЦАП. Не забудьте вызвать метод Update()
в кэше Клиента сразу после того, как вы обновили свойство IsBillContSameAsMain или IsBillSameAsMain, чтобы зафиксировать текущее значение « То же, что и основное» в кеше.
Следующим шагом будет вызов метода Select()
в представлениях BillContact и BillAddress до назначения значений полей. Также рекомендуется присваивать результат метода Select()
объектам представления BillContact и BillAddress Current, чтобы гарантировать, что ваш код изменяет текущую запись в Contact и Address 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();
}
}
Переопределение счета Bill-To Contact и Bill-To Address для заказа клиента
Чтобы указать адрес «Билл-Контакт» и «Билл- Ад» для заказа клиента , вы всегда должны сначала вызвать метод Select()
в представлениях Billing_Contact и Billing_Address до назначения значений полей. Также рекомендуется присваивать результат метода Select()
объектам Billing_Contact и Billing_Address « Current», чтобы гарантировать, что ваш код изменяет текущую запись в SOBillingContact и SOBillingAddress PXCache соответственно.
Когда вам необходимо переопределить информацию о контакте и адресе Bill-To Contact и Address для заказа клиента , установите правильные значения свойств OverrideContact и OverrideAddress на ЦАП SOBillingContact и ЦАП SOBillingAddress . Не забудьте вызвать метод Update()
в кэшах SOBillingContact и SOBillingAddress сразу после обновления свойств OverrideContact и OverrideAddress для фиксации изменений. Как только это будет сделано, вы можете продолжить и указать информацию о контакте и адресе Bill-To Contact для заказа клиента.
public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
{
public PXAction<SOOrder> UpdateBillingAddress;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Update Bill-To Info")]
protected void updateBillingAddress()
{
SOBillingContact contact = Base.Billing_Contact.Current = Base.Billing_Contact.Select();
if (contact.OverrideContact == true)
{
contact.OverrideContact = false;
Base.Billing_Contact.Update(contact);
}
else
{
contact.OverrideContact = true;
contact = Base.Billing_Contact.Update(contact);
if (contact == null)
{
contact = Base.Billing_Contact.Current;
}
contact.Phone1 = "+1 (908) 643-0281";
contact.Email = "[email protected]";
Base.Billing_Contact.Update(contact);
}
SOBillingAddress address = Base.Billing_Address.Current = Base.Billing_Address.Select();
if (address.OverrideAddress == true)
{
address.OverrideAddress = false;
Base.Billing_Address.Update(address);
}
else
{
address.OverrideAddress = true;
address = Base.Billing_Address.Update(address);
if (address == null)
{
address = Base.Billing_Address.Current;
}
address.AddressLine1 = "201 Lower Notch Rd";
address.AddressLine2 = "Office Suite 1936";
address.City = "Little Falls";
address.CountryID = "US";
address = Base.Billing_Address.Update(address);
address.State = "NJ";
address.PostalCode = "07425";
Base.Billing_Address.Update(address);
}
Base.Actions.PressSave();
}
}