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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.01.2013, 13:20   #1  
Greggy is offline
Greggy
Участник
 
90 / 14 (1) ++
Регистрация: 19.10.2004
Адрес: г. Томск
Загрузка каталога поставщика
Добрый день! Есть проблема. Система AX2012 R2 При загрузке каталога поставщика, если загружать каталог с открытой датой окончания, то система создает по товару/поставщику отдельные журналы коммерческих соглашений и разносит их, в итоге получаем отдельные независимые друг от друга цены покупки (PriceDiscTable), ну а при формировании заявки на покупку система подбирает наименьшую цену независимо от того последней ли ее прогрузили или первой т.к. присутствуют несколько цен покупки с открытой датой окончания. На мой взгляд довольно странно что система не ищет уже существующую цену покупки и не обновляет ее. Я что-то не так делаю или для такого поведения необходимы доработки?

Последний раз редактировалось Greggy; 09.01.2013 в 13:48.
Старый 09.01.2013, 15:44   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
При проведении журнала коммерческих соглашений можно изменять существующие записи в ценах. Для этого в таблице PriceDiscAdmTrans должно быть заполнено поле PriceDiscTableRef.
Так как вы сами загружаете откуда-то строки, то обязанность наполнить таблицу PriceDiscAdmTrans закрываемыми строками лежит на вас. То есть, должно быть что-то подобное:
Заполнили строку в PriceDiscAdmTrans. Начали выборку с подбором закрываемых строк:
X++:
       select priceDiscTable
            where (!priceDiscTable.FromDate || priceDiscTable.FromDate <= fromDate)
                  && (!priceDiscTable.ToDate || priceDiscTable.ToDate >= fromDate)
                  && priceDiscTable.AccountCode     == _priceTrans.AccountCode
                  && priceDiscTable.AccountRelation == _priceTrans.AccountRelation
                  && priceDiscTable.ItemCode        == _priceTrans.ItemCode
                  && priceDiscTable.ItemRelation    == _priceTrans.ItemRelation
                  && priceDiscTable.Currency        == _priceTrans.Currency
                  && priceDiscTable.InventDimId     == _priceTrans.InventDimId
                  && priceDiscTable.relation        == _priceTrans.relation
                  && priceDiscTable.Module          == _priceTrans.Module
Закрываем строки:
X++:
    while (priceDiscTable)
    {
        ttsBegin;

        priceDiscAdmTrans.clear();

        priceDiscAdmTrans.initFromPriceDiscTable_OVK(priceDiscTable);

        priceDiscAdmTrans.ToDate            = fromDate - 1;
        priceDiscAdmTrans.JournalNum        = _journalNum;

        priceDiscAdmTrans.insert();

        ttsCommit;

        next priceDiscTable;
    }
Метод initFromPriceDiscTable_OVK выглядит примерно так:

X++:
void initFromPriceDiscTable_OVK(PriceDiscTable _priceDiscTable)
{
    ;

    this.ItemCode           = _priceDiscTable.ItemCode;
    this.AccountCode        = _priceDiscTable.AccountCode;
    this.ItemRelation       = _priceDiscTable.ItemRelation;
    this.AccountRelation    = _priceDiscTable.AccountRelation;
    this.QuantityAmount     = _priceDiscTable.QuantityAmount;
    this.FromDate           = _priceDiscTable.FromDate;
    this.ToDate             = _priceDiscTable.ToDate;
    this.Amount             = _priceDiscTable.Amount;
    this.Currency           = _priceDiscTable.Currency;
    this.Percent1           = _priceDiscTable.Percent1;
    this.Percent2           = _priceDiscTable.Percent2;
    this.DeliveryTime       = _priceDiscTable.DeliveryTime;
    this.SearchAgain        = _priceDiscTable.SearchAgain;
    this.PriceUnit          = _priceDiscTable.PriceUnit;
    this.relation           = _priceDiscTable.relation;
    this.UnitId             = _priceDiscTable.UnitId;
    this.Markup             = _priceDiscTable.Markup;
    this.AllocateMarkup     = _priceDiscTable.AllocateMarkup;
    this.Module             = _priceDiscTable.Module;
    this.InventDimId        = _priceDiscTable.InventDimId;
    this.PriceDiscTableRef  = _priceDiscTable.RecId;

}
Старый 09.01.2013, 19:10   #3  
Greggy is offline
Greggy
Участник
 
90 / 14 (1) ++
Регистрация: 19.10.2004
Адрес: г. Томск
Дело в том что я загружаю неоткуда то а по стандартному функционалу импорта каталога поставщика. Про связь через PriceDiscTableRef я знаю, но я предполагал что она должна создаваться автоматически при создании нового журнала при импорте. Который в дальнейшем автоматом же разносится. Просто чисто логически я предполагал такое поведение системы
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пакетная загрузка валюты DAX 4 StealthSP DAX: Администрирование 7 08.09.2010 16:10
Перенос задолженности с одного поставщика/клиента на другого Лучана DAX: Функционал 2 29.06.2006 16:10
Ограничение по номеру накладной для поставщика BigMike DAX: Функционал 2 16.12.2004 16:39
Вопрос: Для чего служит скрещивание поставщика с клиентом!? Хемуль DAX: Функционал 4 30.04.2004 19:05
Номер накладной поставщика в purchFormLetter.update SNG DAX: Программирование 8 24.03.2004 10:03
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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