У меня есть кое-что, что работает, но, конечно, не кажется правильным
Желание: добавить одно поле в качестве расширения для кода / таблицы CustomerPaymentMethod - все ниже
Проблема: Зачем мне поле PaymentMethodID и как его заполнить, если оно необходимо?
Запущено без этого в таблице БД ИЛИ ЦАП.Это загружает / работает в прямом доступе к AR303010 (метод оплаты клиента), но завершается неудачно при соединении SQL из AR303000 (клиент AR)
Если я просто добавляю в таблицу, то получаю «Невозможно вставить ноль в поле»
Если я добавлю в ЦАП, то продолжу получать Null в БД (только в таблице расширений)
Так что это работает, но, конечно, не кажется правильным.Предполагается, что в таблице расширений НЕ требуется идентификатор PaymentMethodID, поскольку в ЦАП из файла «CustomerPaymentMethod.cs» он НЕ помечен как «IsKey = true».Если мне это нужно, то я надеюсь, что оно будет заполнено автоматически как часть ключа
Таблица:
Create Table XPMCustomerPaymentMethodExt (
[CompanyID] [int] NOT NULL DEFAULT ((0)),
[PMInstanceID] [int] NOT NULL,
[BAccountID] [int] NOT NULL,
[PaymentMethodID] [nvarchar](10) NULL, /* Problem Child, if not here, fails to load customer screen (AR303000) */
[CanConsolidate] [bit] NULL,
[DeletedDatabaseRecord] [bit] NOT NULL DEFAULT ((0)),
CONSTRAINT [PK_XPMCustomerPaymentMethodExt] PRIMARY KEY CLUSTERED
(
[CompanyID] ASC,
[PMInstanceID] ASC
)
)
ЦАП:
[PXTable(IsOptional = true)]
public class XPMCustomerPaymentMethodExt : PXCacheExtension<PX.Objects.AR.CustomerPaymentMethod>
{
#region CanConsolidate
public abstract class canConsolidate : PX.Data.IBqlField
{
}
protected bool? _CanConsolidate = false;
[PXDBBool]
[PXDefault(false, PersistingCheck = PXPersistingCheck.Nothing)]
[PXUIField(DisplayName = "Payments may be consolidated")]
public virtual bool? CanConsolidate
{
get
{
return _CanConsolidate;
}
set
{
_CanConsolidate = value;
}
}
#endregion
#region PaymentMethodID
public abstract class paymentMethodID : PX.Data.IBqlField
{
}
protected string _PaymentMethodID; // = Base.PaymentMethodID;
[PXMergeAttributes(Method = MergeMethod.Merge)]
[PXDBString(10, IsUnicode = true)]
//[PXDefault(typeof(CustomerPaymentMethod.paymentMethodID), PersistingCheck = PXPersistingCheck.Nothing)]
//[PXFormula(typeof(Selector<CustomerPaymentMethod.pMInstanceID, CustomerPaymentMethod.paymentMethodID>))]
public virtual String PaymentMethodID
{
get
{
//return Base.PaymentMethodID;
return _PaymentMethodID;
}
set
{
// Base.PaymentMethodID = value;
_PaymentMethodID = value;
}
}
#endregion
}