Показать сообщение отдельно
Старый 30.10.2014, 15:09   #1  
ksenia is offline
ksenia
Участник
Аватар для ksenia
 
291 / 28 (1) +++
Регистрация: 11.10.2003
Адрес: Москва
Нюансы российской локализации в переоценке по контрагентам
Коллеги, привет!
Долго думала, куда поместить тему, в разработку или в функционал, решила все же в функционал, может, мне кто-то все-таки объяснит, зачем сделано так, как сделано.
Так вот, коллеги. В классе, который обрабатывает периодическую переоценку в поставщиках и клиентах, переоценка происходит в 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>
    }
На мой взгляд, такая проводка вообще не должна вызывать каких-то телодвижений, потому что на дату переоценки она уже закрыта (пусть даже самой датой этой переоценки). Причем из кода видно, что для международной функицональности так и есть (там условие строгое). А для российской почему-то условие не жесткое - из-за этого происходит накрутка транзакций с нулевым результатом.
Есть ли этому логическое объяснение?
Заранее спасибо!