28.03.2007, 18:03 | #1 |
Участник
|
Остатки на дату InventSumDatePhysical
Странная ситуация с остатками. Выполнил следующую последовательность действий:
1) Совсем новая номенклатура, по ней сделал закупку 2) По закупке создал отборочную накладную 20.03.2007 на 5 единиц. 3) При помощи поля "Немедленное получение" с минусовым количеством отсторнирвал её тем же числом - все 5 единиц. 4) Создал новую отборочную накладную 21.03.2007 на 5 единиц 5) Создан финансовую накладеную 21.03.2007 на 5 единиц Я считал, что используя класс InventSumDatePhysical получу на 15.03.2007 остаток равный нулю, но не тут-то было: остаток -5 (минус пять). Код в принципе простейший: X++: inventDimParm.initFromInventDim(_inventDim); inventSumDate = InventSumDatePhysicalDim::newParameters(_dateSaldo, _inventTable.ItemId, _inventDim, inventDimParm); tmpQty = inventSumDate.physicalQuantity(); Вопрос: сталкивался ли кто-нибудь с подобным поведением? Пока не могу понять копать стандартный функционал или модификации приводят к такому? Ax 3.0 SP 3 с некоторыми вытяжками из SP 5 |
|
28.03.2007, 20:08 | #2 |
Member
|
А в отчете стандартном (Физ. наличие по складам) такая же картина?
__________________
С уважением, glibs® |
|
29.03.2007, 09:06 | #3 |
Участник
|
Да, та же самая (там же используется класс из той же иерархии).
Вчера просто не было возможности проверить. Сегодня получил доступ к стандартным SP3 и SP5 - на них ошибка не воспроизводится. В нашем приложении в InventTransPosting при сториноровании отборочной накладной по закупке создается на одну запись меньше, чем в стандартном приложении. Так что сегодня буду искать, что там за 3 года "намодифицировали". |
|
29.03.2007, 11:27 | #4 |
Участник
|
Поспешил. Оказывается у меня не чистый SP3. Оказывается, ошибка была до SP4, о чем говорит такой код в методах updateTransPhysicalReturnedReceipt и updateTransPhysicalReturnedIssue класса InventUpd_Physical.
X++: // START: 1947 SP4 inventTrans.voucher= _ledgerVoucher.lastVoucher(); localBuffer.Voucher = inventTrans.Voucher; localBuffer.VoucherPhysical = inventTrans.Voucher; this.postingPhysical(true); // END: 1947 SP4 Осталось придумать, как исправить существующие записи. |
|
|
За это сообщение автора поблагодарили: Lemming (2), kashperuk (3), _AnK_ (2). |
10.05.2007, 12:34 | #5 |
Участник
|
Raven Melancholic, во первых спасибо за то что подсказали, в чем причина "съехавших" остатков на дату и как пофиксить код.
В данный момент я как раз пишу Job, который исправит последствия. Что удалось выяснить(только предположения, в складском контуре я не силен): 1. При создании сторно отборочной накладной в таблице InventTransPosting не создается запись с InventTransPostingType = InventTransPostingType::Physical. 2. Для складской проводки не прописываются DateFinancial, Voucher. Вроде бы по этим двум признакам джобом можно найти неверные данные и создать недостающие записи в InventTransPosting, проапдейтить неправильные в InventTrans, но увы это не решает проблему. То есть что то я таки упустил, сижу разбираюсь дальше, но пока с идеями не очень густо . Если у кого то есть какие либо мысли по данному вопросу, заранее спасибо за информацию! |
|
10.05.2007, 13:04 | #6 |
Участник
|
Вот класс, исправляющий существующие записи. У него есть ограничение: исправляет только те возвраты которые были сделаны при помощи указания отрицательного значения в поле "немедленная поставка". Если возврат осуществлялся другим способом (отдельными лотами в том же заказе/закупке, вообще отдельными документами), то такие записи не исправляются. Так же не исправляются записи в случае, если по одному лоту несколько возвратов.
Для нас эти ограничения неважны, если для вас это критично, то думаю доделать несложно. |
|
|
За это сообщение автора поблагодарили: Logger (7). |
10.05.2007, 15:29 | #7 |
Участник
|
Спасибо за класс, он окончательно подсказал верное направление!
|
|
Теги |
ax3.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Остатки товара на определенную дату | 7 | |||
Скачут остатки | 3 | |||
Остатки на дату. | 119 | |||
Цена на дату создания заказа/закупки | 2 | |||
Остатки | 6 |
|