AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.02.2005, 18:59   #1  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,914 / 5737 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Во первых - зря ты эту функцию заблокировал. На второй и последующих итерациях закрытия она (вместе с cобственно функцией updateReceiptAdjustmentTrans) занимается передвижением стоимости по лотам. То есть - скажем скорректировали расход по приходу, а оказалось что это не просто расход - а перенос на соседний склад. И соответственно надо там приходную проводку тоже скорректировать (собственно - отсуюда и название метода). То есть - по большому счету -все итерации закрытия с номером >1 - это и есть выполнение этой функции до тех пор пока на очередной итерации сумма протаскиваемой по цепочке коррекции не станет меньше минимальной коррекции пропускной способности.

Еще для некоторого понимания хочется сказать что laterAdjustment - эта сумма коррекций сеебстоимости прихода, проведенных на дату ПОСЛЕ закрытия склада. Ну скажем - ты откорректировал на 15 января себестоимость прихода (скажем - накладные расходы по накладной доначислил). 20 января ты начал закрывать склад на 31 декабря. Так аксапта чтобы как говорится два раза не вставать еще и проведет твои коррекции от 15 января на проводки списания выполненные в декабре. Мне кажется что это архитектурный просчет. Правильнее было бы их списывать на прибыли и убытки. Но к твоемй случаю это не относится

Теперь о несколько более более полезных для тебя вещах

К тому времени когда эта функция на второй и последующих итерациях вызывается, себестоимость ПРИХОДНОЙ проводки уже скорректирована функцией updateTransIdReceipt. И собственно - данная функция пытается просчитать пропорцию, чтобы понять какую собственно долю коррекции себестоимости приходной проводки надо транзитом перекинуть на уже (возможно) сопоставленную с ней расходную...
Делается это этой строкой:
adjustment = Currency::amount((_receipt.costValue() - _adjustmentLater) / _receipt.qty * _receipt.qtySettled - _receipt.costAmountSettled);

То есть - посчитали сумму коррекции на одну единицу товара и помножили на количество сопоставленных единиц товара, после чего отняли от результата общую сумму сопоставленной с расходом стоимости прихода.

Только вот как мне кажется отнимать уже заведомо округленную _receipt.costAmounSettled (сопоставленную сумму прихода) от неокругленной второй половины выражения - в корне не верно.
Мне на одном из моих бывших проектов помогла следующая корректировка этого куска кода:
adjustment = Currency::amount((_receipt.costValue() - _adjustmentLater) / _receipt.qty * _receipt.qtySettled) - _receipt.costAmountSettled;

То есть - прежде чем вычитать из рассчитанной суммы уже округленную сумму сопоставления данного прихода с расходом - стоит эту рассчитанную сумму тоже округлить. В противном случае - копейка будет гулять бесконечно....
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:16.