По клиентам(тип счета) работает во всех случаях. А вот по поставщикам, работает только в зависимости от типа журнала. Работает только для типов LedgerJournalType::Approval - утверждение и LedgerJournalType::VendInvoiceRegister - регистрация накладной от поставщика. Почему так - не знаю. В классе VendVoucher, в методе newVendVoucherJournal видно, что параметр _paymTermId не всегда передается. Вот кусок кода :
X++:
................................
switch (ledgerJournalType)
{
case LedgerJournalType::Approval: // вот здесь всегда передается
if (_ledgerJournalTrans.Cancel == NoYes::Yes)
{
vendVoucher = new VendVoucherJournalCancel(_ledgerVoucher,
_ledgerJournalTrans.AccountNum,
_ledgerJournalTrans.amount() + _amountCur,
_ledgerJournalTrans.CurrencyCode,
_ledgerTransTxt,
_ledgerJournalTrans.Dimension,
_ledgerJournalTrans.PostingProfile,
LedgerPostingType::VendBalance,
_ledgerJournalTrans.Payment, // и здесь передается
_ledgerJournalTrans.SettleVoucher,
curuserid(),
NoYes::Yes,
'',
dateNull(),
0,
dateNull(),
_ledgerJournalTrans);
}
else
{
vendVoucher = new VendVoucherJournalApproval(_ledgerVoucher,
_ledgerJournalTrans.AccountNum,
_ledgerJournalTrans.amount() + _amountCur,
_ledgerJournalTrans.CurrencyCode,
_ledgerTransTxt,
_ledgerJournalTrans.Dimension,
_ledgerJournalTrans.PostingProfile,
LedgerPostingType::VendBalance,
_ledgerJournalTrans.Payment, // и здесь передается
_ledgerJournalTrans.SettleVoucher,
curuserid(),
NoYes::Yes,
'',
dateNull(),
0,
dateNull(),
_ledgerJournalTrans);
}
break;
default :
if (TaxParameters::canApplyCashDiscOnInvoice_ES() && (ledgerJournalType == LedgerJournalType::Daily || ledgerJournalType == LedgerJournalType::VendInvoiceRegister))
{
amount = _ledgerJournalTrans.amount() + _amountCur - _ledgerJournalTrans.CashDiscAmount;
approved = NoYes::Yes;
approvedBy = curuserid();
}
else
{
amount = _ledgerJournalTrans.amount() + _amountCur;
approved = _ledgerJournalTrans.Approved;
approvedBy = _ledgerJournalTrans.ApprovedBy;
}
vendVoucher = new VendVoucherJournal(_ledgerVoucher,
_ledgerJournalTrans.AccountNum,
amount,
_ledgerJournalTrans.CurrencyCode,
_ledgerTransTxt,
_ledgerJournalTrans.Dimension,
_ledgerJournalTrans.PostingProfile,
LedgerPostingType::VendBalance,
ledgerJournalType == LedgerJournalType::VendInvoiceRegister ? //а вот здесь передается если тип LedgerJournalType::VendInvoiceRegister, передавайте его здесь всегда
_ledgerJournalTrans.Payment : '',
_ledgerJournalTrans.SettleVoucher,
approvedBy,
approved,
'',
dateNull(),
0,
dateNull(),
_ledgerJournalTrans);
}
................................
Передавайте его всегда и все будет оплачиваться и сопоставляться, правда могут всплыть(а могут и не всплыть) какие-нибудь подводные камни, связанные именно с вышеуказанным ограничением. А так, проверил, работает.