Nano Hash - криптовалюты, майнинг, программирование

Обновить закупочную цену в строке покупки из торгового соглашения

Мне нужно обновить заказы на покупку, которые были созданы ранее. Требуется обновить закупочную цену, применив новые торговые соглашения, которые были созданы позже в системе после создания заказа на поставку. Я написал фрагмент кода, но комбинации в торговом соглашении бесконечны.

Есть ли более быстрый способ узнать цену, активную для комбинаций?

Спасибо

public static PriceDiscTable checkPriceDiscTable(PriceDiscAccountRelation    _accountRelation,
                                                 PriceDiscItemRelation       _itemRelation,
                                                 InventLocationId            _inventLocationId)
{
    RecId              priceDiscTableRec;
    PriceDiscTable      priceDiscTable;
    TableGroupAll               accountCode, ItemCode;
    PriceDiscAccountRelation    accountRelation;
    PriceDiscItemRelation       itemRelation;

    int     totalcases = 3;
    int     prioritycase = 0;

    while(prioritycase < totalcases)
    {
        switch (priorityCase)
        {
            case 0:
                accountCode         = TableGroupAll::Table;
                accountRelation     = _accountRelation;
                itemCode            = TableGroupAll::Table;
                itemRelation        = _itemRelation;

                priceDiscTableRec = DAL_PriceFromAgrement::findPriceDiscTable(accountCode, accountRelation,
                                                                                itemCode, itemRelation, _inventLocationId);
                priceDiscTable = PriceDiscTable::findRecId(priceDiscTableRec);
                if(priceDiscTable.recId)
                {
                    return priceDiscTable;
                }
                break;

            case 1:
                accountCode         = TableGroupAll::GroupId;
                accountRelation     = _accountRelation;
                itemCode            = TableGroupAll::Table;
                itemRelation        = _itemRelation;

                priceDiscTableRec = DAL_PriceFromAgrement::findPriceDiscTable(accountCode, accountRelation,
                                                                                itemCode, itemRelation, _inventLocationId);
                if(priceDiscTable.recId)
                {
                    return priceDiscTable;
                }
                break;

            case 2:
                accountCode         = TableGroupAll::All;
                accountRelation     = "";
                itemCode            = TableGroupAll::Table;
                itemRelation        = _itemRelation;

                priceDiscTableRec = DAL_PriceFromAgrement::findPriceDiscTable(accountCode, accountRelation,
                                                                                itemCode, itemRelation, _inventLocationId);
                if(priceDiscTable.recId)
                {
                    return priceDiscTable;
                }
                break;
        }
        prioritycase++;
    }

    return priceDiscTable;
}

Ответы:


1

Вспомогательный класс уже готов сделать это за вас.

Имя класса PriceDisc.

Взгляните на метод purchPriceAgreement на InventTable.

...
vendTable= VendTable::find(_accountNum);

priceDisc = new PriceDisc(ModuleInventPurchSales::Purch,
                              this.ItemId,
                              _inventDim,
                              inventTableModule.UnitId,
                              _priceDate,
                              _qty,
                              vendTable.AccountNum,
                              _currencyCode);

    if (!priceDisc.findPrice(vendTable.PriceGroup, false))

...

price       = priceDisc.price();
priceMarkup = priceDisc.markup();
priceUnit   = priceDisc.priceUnit();
...
etc
26.10.2016
  • Спасибо, но я использовал метод setPriceDisc в PurchLine, который выполняет все вычисления. 27.10.2016
  • @Axer также делает намного больше. Вы специально запросили цену торгового соглашения, и я дал вам код. 28.10.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..