Коллеги, привет!
Долго думала, куда поместить тему, в разработку или в функционал, решила все же в функционал, может, мне кто-то все-таки объяснит, зачем сделано так, как сделано.
Так вот, коллеги. В классе, который обрабатывает периодическую переоценку в поставщиках и клиентах, переоценка происходит в 2 шага: на первом шаге берутся проводки, которые сопоставлены после даты переоценки, а на втором шаге - проводки, которые на дату переоценки являются открытыми.
И вот представим себе ситуацию: есть накладная (клиенту), она сопоставлена 31.10.2014, делается переоценка также на 31.10.2014 и система при переоценке вначале делает проводки по нереализованной курсовой и тут же их откатывает обратно на дату сопоставления. Поскольку дата сопоставления и дата переоценки совпадают - получаются бессмысленные телодвижения с нулевым результатом. Происходит это из-за вот такого кода в методе createSettledTransQuery класса СustExchAdjTrans (32-41 строка):
X++:
if (countryRegion_RU)
{
custSettlementDs.addRange(fieldnum(CustSettlement, TransDate)).value(SysQuery::range(exchangeAdjustmentController.postingDate(), null));
}
else
{
// </GEERU>
custSettlementDs.addRange(fieldnum(CustSettlement, TransDate)).value(strfmt('%1 %2', '>', exchangeAdjustmentController.postingDate()));
// <GEERU>
}
На мой взгляд, такая проводка вообще не должна вызывать каких-то телодвижений, потому что на дату переоценки она уже закрыта (пусть даже самой датой этой переоценки). Причем из кода видно, что для международной функицональности так и есть (там условие строгое). А для российской почему-то условие не жесткое - из-за этого происходит накрутка транзакций с нулевым результатом.
Есть ли этому логическое объяснение?
Заранее спасибо!