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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.06.2007, 10:13   #1  
Spiker is offline
Spiker
GMCS
Сотрудники компании GMCS
 
6 / 10 (1) +
Регистрация: 07.06.2007
Адрес: Пенза
! Вопрос по резервированию
Вопрос в следующем...
В аксапте ведется партионный учет товара. У одной номенклатуры на момент времени X в наличии 2 партии товара. Используется модель FIFO. т.е. по хорошему Аксапта должна полностью выбрать всю партию 1, а потом начать выбирать партию 2, т.к. партия 1 исторически возникла раньше партии 2. Но на деле не совсем так. Расход идет попеременно то из партии 1, то из партии 2. Анализ проводок привел к мысли о том, что из за частых корректировок даты на которые ориентируется система при резервировании обновляются.
Исследование кода позволило обнаружить причину...
в классе InventUpd_Reservation, в методе updateReserveMore()
создается query по запасам в наличии (InventSum), в запросе сортировка идет по полю InventSum.LastUpdDatePhysical ASC
Данное поле обновляется в InventSum\Methods\addInventTransOnSum

X++:
if ( ! inventTrans.isTransfer() )
        {
            if (inventTrans.DatePhysical)
                this.LastUpdDatePhysical = inventTrans.DatePhysical;
            else
            if (inventTrans.DateInvent)
                this.LastUpdDatePhysical = inventTrans.DateInvent;
            else
            if (inventTrans.DateExpected)
                this.LastUpdDateExpected = inventTrans.DateExpected;
        }
        else
        {
            inventDimIssue = this.inventDimTransferIssue(inventTrans);
            if (inventDimIssue && inventDimIssue.inventDimId != inventTrans.inventDimId)
            {
                inventSumIssue = inventSum::find(inventTrans.ItemId,inventDimIssue.inventDimId);
                if (inventSumIssue.RecId)
                {
                    this.LastUpdDateExpected = inventSumIssue.LastUpdDateExpected;
                    this.LastUpdDatePhysical = inventSumIssue.LastUpdDatePhysical;
                }
            }

        }
вопрос в том, если разрешить изменение только если дата пустая, т.е. в первый раз. что бы аксапта не трогала партию 2, не выбрав поностью партию 1.
На чем это может еще отразиться?
Старый 07.06.2007, 10:23   #2  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Недавно решал похожую ситуацию, скорее всего у вас идут возвраты по партии 1 и 2, и поэтому поле InventSum.LastUpdDatePhysical обновляется датой последнего прихода, решили эту проблему следующим образом, там по моему в коде стоит ограничение если перемещение то дату не обновлять, мы еще добавили свое если возврат то дату не трогать

Последний раз редактировалось konopello; 07.06.2007 в 11:15.
Старый 07.06.2007, 12:32   #3  
Spiker is offline
Spiker
GMCS
Сотрудники компании GMCS
 
6 / 10 (1) +
Регистрация: 07.06.2007
Адрес: Пенза
в принципе да...оно правильно...только не возвраты идут, а корректировки (у нас через сторно делаются)
в результате допустим у нас партия 1 пришла 1 числа сего месяца, а 2 - 2 числа....начинаем продавать...берется 1 партия, и тут 4 числа корректировка...получается что у первой партии дата 4 становится и система начинает брать 2 партию, т.к. у нее дата 2 число, что раньше чем 4...

получается необходимо закрывать любое изменение даты, если только она не datenull()
т.о. у нас гарантированно будет сохраняться дата возникновения партии...ну или по правильному запасов по данной аналитике...

вопрос на чем это может отразиться еще?
Старый 07.06.2007, 13:33   #4  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
получается необходимо закрывать любое изменение даты, если только она не datenull()
т.о. у нас гарантированно будет сохраняться дата возникновения партии...ну или по правильному запасов по данной аналитике...
Но ты учти, что этот метод вызывается при любом складском движении и прежде чем сделать 10 раз подумай а то горе будет....
Старый 07.06.2007, 13:39   #5  
Spiker is offline
Spiker
GMCS
Сотрудники компании GMCS
 
6 / 10 (1) +
Регистрация: 07.06.2007
Адрес: Пенза
Цитата:
Сообщение от konopello Посмотреть сообщение
Но ты учти, что этот метод вызывается при любом складском движении и прежде чем сделать 10 раз подумай а то горе будет....
это понятно...вопрос чем это может обернуться? на чем сказаться? Для чего это поле кроме резервирования?
Старый 07.06.2007, 13:48   #6  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
это понятно...вопрос чем это может обернуться? на чем сказаться? Для чего это поле кроме резервирования?
Что значит чем, тебе надо что бы эта дата не обновлялась при определенном условии. Типа это коррекция или заказ тебе надо написать метод типа isTransfer который и будет делать вилку. А на самом деле это не критично просто даты у тя в этом поле не верные будут.
Старый 07.06.2007, 13:56   #7  
Spiker is offline
Spiker
GMCS
Сотрудники компании GMCS
 
6 / 10 (1) +
Регистрация: 07.06.2007
Адрес: Пенза
Цитата:
Сообщение от konopello Посмотреть сообщение
Что значит чем, тебе надо что бы эта дата не обновлялась при определенном условии. Типа это коррекция или заказ тебе надо написать метод типа isTransfer который и будет делать вилку. А на самом деле это не критично просто даты у тя в этом поле не верные будут.
так мне получается и нужно...что бы партия возникла...дата записалась...потом любые движения по партии дату не меняют...и это получается дата возникновения партии...иначе на складе товар из партии 1 залеживается и близок к истечению срока годности...а расход идет из партии 2 в это время...а из за корректировок....происходит смена даты и расходуется то партия 1, то партия 2 попеременно...а нужно жесткое FIFO.
Старый 07.06.2007, 14:04   #8  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Ты главное учти, что товар то может быть и с другой аналитикой не только партия
Старый 07.06.2007, 14:27   #9  
Spiker is offline
Spiker
GMCS
Сотрудники компании GMCS
 
6 / 10 (1) +
Регистрация: 07.06.2007
Адрес: Пенза
Цитата:
Сообщение от konopello Посмотреть сообщение
Ты главное учти, что товар то может быть и с другой аналитикой не только партия
Согласен. в принципе перенося мой вопрос в термины системы...вопрос можно озвучить так...если товар пришел на аналитику...то он должен уйти первым, даже если есть товар с совпадающим набором аналитик достаточных для резервирования, но с более поздней датой прихода. (именно датой прихода...т.е. датой первого появления товара на этой аналитике, а не датой последнего движения по ней)
Старый 28.01.2010, 09:19   #10  
soad is offline
soad
Участник
 
27 / 16 (1) ++
Регистрация: 24.07.2008
Spiker, поделитесь пожалуйста, удалось ли решить данную задачу?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по возвратам soad DAX: Функционал 2 24.07.2008 13:04
Вопрос по перегрузке лукапа поля прям на таблице HorrR DAX: Программирование 3 03.06.2008 18:02
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
расчеты с персоналом. НДФЛ. вопрос чайника shumelka DAX: Функционал 2 25.03.2004 11:36
Вопрос к пользователю при сохранении данных в таблице Anais DAX: Программирование 1 19.03.2004 10:28

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

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

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