首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成客户价目表

问生成客户价目表
EN

Stack Overflow用户
提问于 2012-10-11 13:38:51
回答 1查看 1.6K关注 0票数 2

我有一个要求生成一个完整的客户逐个项目价目表出口到第三方计划,考虑到贸易协议/折扣等。

要按我尝试过的项目获取客户列表:

  1. 创建一个双环(如所有客户的外部循环,包含所有项目的内环)
  2. 创建一个将custTable连接到inventTable的select语句

为了获得一个价格,我一直在为给定的客户/项目创建一个假的SalesLine,并在x++中执行salesLine.calcLineAmount(1)

然而,这需要6个小时来处理完整的客户/项目列表。

我唯一想到的另一件事是运行这个过程一次并存储在一个表中,然后在任何价格/贸易协议/折扣被更改时,只更新相关的记录。

有没有人有其他更好的方法来达到这个结果的建议?

EN

回答 1

Stack Overflow用户

发布于 2012-10-11 21:30:50

你是如何加入CustTable到InventTable的?我相信,这只是一个笛卡儿式的连接,所有可能的客户都会反对所有可能的商品,而这本来就是缓慢的。

而定价/贸易协议/折扣的本质是,它们经常变化,并且不太实际地保持一个表,每一个客户的每一个价格是什么,特别是如果你有贸易协议的日期范围,具体数量阈值或单位,仓库出来,等等。

这是你想做的事情的代码,我相信它会比你正在做的任何事情工作得更快。我很快就写了这篇文章,但是它应该能工作,您应该删除整数中断,我只是不希望它永远运行。

代码语言:javascript
复制
static void Job66(Args _args)
{
    PriceDisc       priceDisc;
    container       retVal;
    CustTable       custTable;
    InventTable     inventTable;
    InventTableModule   inventTableModule;
    int             i, n;
    ;

    while select custTable
    {
        i++;

        if (i>5)
            break;

        n = 0;
        while select inventTable
            join inventTableModule
            where inventTableModule.ItemId      == inventTable.ItemId   &&
                  inventTableModule.ModuleType  == ModuleInventPurchSales::Sales
        {
            n++;

            if (n>10)
                break;

            retVal = priceDisc::findItemPriceAgreement(ModuleInventPurchSales::Sales,
                                                       inventTable.ItemId,
                                                       InventDim::findOrCreateBlank(false),
                                                       inventTableModule.UnitId,
                                                       SystemDateGet(),
                                                       1,
                                                       custTable.AccountNum,
                                                       custTable.Currency,
                                                       custTable.PriceGroup);
            info(strfmt("%1 - %2 - %3 - %4 - %5 - %6 - %7 - %8 - %9", custTable.AccountNum,
                                                            custTable.Name,
                                                            inventTable.ItemId,
                                                            inventTable.ItemName,
                                                            conPeek(retVal, 1), // priceDisc.price(),
                                                            conPeek(retVal, 2), // priceDisc.markup(),
                                                            conPeek(retVal, 3), // priceDisc.priceUnit(),
                                                            conPeek(retVal, 4), // priceDisc.deliveryDays(),
                                                            conPeek(retVal, 5))); // priceDisc.calendarDays()];
        }
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12840895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档