Ок, привожу полный код метода CustVendExchAdjustment_W.isAdvanceAdjustment():
X++:
public static boolean isAdvanceAdjustment(CustVendTrans _firstCustVendTrans,
CustVendTrans _custVendTransDebet,
CustVendTrans _custVendTransCredit)
{
boolean isAmountDiff = _custVendTransDebet.CurrencyCode != CompanyInfo::standardCurrency() && _custVendTransDebet.Invoice &&
_custVendTransCredit.CurrencyCode == CompanyInfo::standardCurrency() && ! _custVendTransCredit.Invoice;
if (isAmountDiff && AmountDiffParameters_RU::find().Active)
{
return false;
}
if (((! _firstCustVendTrans && (_custVendTransDebet.Invoice || _custVendTransCredit.Invoice)) || _firstCustVendTrans.Invoice) &&
(_custVendTransDebet.Prepayment || _custVendTransCredit.Prepayment) &&
LedgerParameters::find().AdvanceAdjustment_W)
{
return true;
}
return false;
}
Нетрудно заметить, что метод возращает true, если поле Invoice заполнено ХОТЯ БЫ В ОДНОЙ из сопоставляемых проводок - в Вашем случае это поле в обеих проводках пустое и метод вернет false, - что верно, т.к. накладной для переоценки нет и авансовой разницы у нас не было (была курсовая).
А насчет doReverse() - Вы не правы, не буду спорить, просто пройдитесь дебаггером.