zoukankan      html  css  js  c++  java
  • 随笔之转移日记账

    在AX2009中标准环境中,在对转移日记账进行过账的时候,如果没有启用站点,过账的时候,是不会产生凭证交易的。如果启用站点并且源站点不同于目标站点,才会生成凭证交易(当然如果启用物料维,物料维的不同也会产生凭证交易)。如果我们想仓库不同的时候也想让系统帮我们产生凭证交易,能做到吗?答案是肯定得,并且实现起来也很简单.因为只要我们能找到系统判断站点不同的地方,我们就完全可以多加一个仓库判断的条件,该如何找到这一段代码呢?其实,也是有技巧的。系统把生成凭证的地方,大部分都是写在了InventMovement这个类及它的子类上了,再想想因为InventMovement承载的是业务类型数据,所以我们可以断定它一定会有一个针对转移日记账的子类,检查一下,果然有InventMov_Jour_Transfer.这样就找到了我们需要的信息,看代码

    boolean  mustBeBookedFinancially()
    {
        InventDim   inventDimTo;
        InventDim   inventDimFrom;
        ;
        // old journals which have not been upgraded.
        if (inventJournalTrans.InventTransId == inventJournalTrans.ToInventTransId || !inventJournalTrans.ToInventTransId)
            return false;
    
        // if item normally don't post to ledger then don't do it here either.
        if (!super())
            return false;
    
        inventDimFrom = inventJournalTrans.inventDim();
        inventDimTo = inventJournalTrans.toInventDim();
    
        // only post to ledger if site or item dimensions are different.
        //就是你,找到了
        if (inventDimFrom.InventSiteId != inventDimTo.InventSiteId)
        {
            return true;
        }
    
        if (!InventDim::isInventDimEqualItemDim(this.dimGroupId(), inventDimFrom, inventDimTo))
        {
            return true;
        }
    
        return false;
    }

    看到这段代码,我们是不是很高兴?加上条件即可满足我们的需求。

  • 相关阅读:
    组件中的data为什么不是一个对象而是一个函数?
    v-if v-show 的区别 以及使用的场景
    前后端数据交互的方式有哪些?
    服务端渲染客户端渲染的区别
    按下www.baidu.com发生什么
    php-语言参考-类型3.2-未完待续
    php-安装与配置-未完待续2
    PHP-入门指引1
    php扩展开发-INI配置
    php扩展开发-全局变量
  • 原文地址:https://www.cnblogs.com/dingkui/p/3677411.html
Copyright © 2011-2022 走看看