K3默认序时簿是不体现即时库存的,如果需要在序时簿将物料的即时库存数据带入,可以按照下方的步骤实现:
本文以销售订单序时簿增加即时库存为例,其他单据以此方法参考即可。
如果希望在订单新增环节体现物料即时库存,参见另外一篇文章https://blog.csdn.net/hzfw2008/article/details/77461406
一、步骤
1、 创建视图,按物料合计库存。
2、 获取目标序时簿typeid
3、 修改序时簿关联关系表ICTableRelation,追加与即时库存关联关系
4、 修改序时簿字段表ICChatBillTitle,追加显示即时库存字段。
5、 序时簿过滤器中显示隐藏列中勾选显示库存字段。
二、涉及到的表介绍:
序号 表名 表功能
1 ictransactiontype 单据业务类型表
2 iclisttemplate 序时簿模版表
3 ICTableRelation 序时簿所有表之间的连接关系
4 ICChatBillTitle 序时簿显示字段表
三、分步骤实现:
1、 创建库存合计视图vw_rtstock。
CREATE VIEW [dbo].[vw_rtstock] AS SELECT a.FItemID, SUM(a.FQty) kc FROM dbo.ICInventory a LEFT JOIN dbo.t_Stock b ON a.FStockID = b.FItemID WHERE 1=1 AND b.FTypeID = 500 GROUP BY a.FItemID
2、 获取目标单据序时簿模版内码(这里以销售订单为例,获取到32)
SELECT flisttemplateid,* FROM ictransactiontype WHERE fname LIKE '%销售订单%'
3、 按序时簿模版内码获取模版代码(本例销售订单序时簿为61)
SELECT ftemplateid,* FROM iclisttemplate WHERE fid = 32
4、增加序时簿关联表连接关系
--select * from ICTableRelation where ftypeid = 61 INSERT INTO dbo.ICTableRelation(FTypeID,FTableName,FTableNameAlias, FFieldName,FTableName11,FTableNameAlias11,FFieldName11,FLogic,FBillID,FFieldID,FMode,FIndex,FCondition,FLeftParentheses,FRightParentheses,FLogicOperator,FISConst,FConstType,FSubFilter) SELECT ftypeid,ftablename,FTableNameAlias,FFieldName,'vw_rtstock','kc','fitemid',flogic,fbillid,ffieldid,fmode,findex,'','','','=',0,0,'' FROM dbo.ICTableRelation WHERE ftypeid = 61 AND finterid = 16
5、增加序时簿显示字段
--SELECT * FROM ICChatBillTitle WHERE ftypeid = 61 insert ICChatBillTitle (FInterID, FTypeID, FColCaption, FHeadSecond, FColName, FTableName, FColType, FColWidth, FVisible, FItemClassID, FVisForQuest,FReturnDataType,FCountPriceType, FCtlIndex, FName, FTableAlias, FAction, FNeedCount, FIsPrimary,FLogicAction, FStatistical, FMergeable,FVisForOrder, FColCaption_CHT, FColCaption_EN,FControl, FMode,FControlType, FPrecisionField, FAlign, FEditable, FFormat, FFormatType) Select 500001, 61, '即时库存$', '' ,'kc', 'vw_rtstock', 2, 1000, 3, -1, 0, 0, 1, 5, 'kc', 'kc', '', 1, 0, '', 1, 0,1, '即时库存$', 'stockQty $', 0, 0, 5, '', 0, 0, '', 0
6、 重新打开K3,销售订单序时簿过滤器显示隐藏列中勾选显示即时库存。

7、最终成品:

四、 功能表字段释义参考
1. ICTransactionType:该表反映了供需链所有单据的总体情况。
ICTransactionType
FbrNo
FID 单据事务类型内部ID
FROB 红蓝字标记 :1表示该单据区分红 蓝字 ,0表示没有红蓝字之分
Fname 单据名称
Ftype 单据类别
FtempalteID 单据模版ID (与 ICTemplate,ICTemplateEntry 表中的FID对应
FvchTempalteID (未用)
FheadTable 单据表头对应的数据库表名
FentryTable 单据表体对应的数据库表名
FcheckPro (未用)
FformWidth 单据录入时的缺省宽度
FformHeight 单据录入时的缺省高度
FfixCols 单据的固定列数目
2. ICListTemplate:该表反映了供需链所有序时簿的总体情况。
ICListTemplate
FID 内码(主键)
Fname 序时簿名称
FTemplateID 模版ID
FLogicStr 菜单的隐含/权限验证SS:1 区分发票/单据审核(已经取消)H: 菜单的隐含Fmodule,FmoduleDetail:验权(与t_Objecttype对应)
FBillTemplateID 单据模版对应ID
FmenuID 菜单模板,与ICListtoolbar 表中的FID对应
Ffilter 缺省过滤条件
FSourceType 1-序时簿模板,2-交叉分析报表
FgoupID 模板属于哪个业务系统
FneedStatistic 模板在交叉分析报表中是否显示
FneedCount 是否有合计行
FBillCls 单据类型(200-入库单 201-出库单 202-调拨单 204-盘盈/盘亏单)
FMasterTable 主表别名(优化需要)
原文链接:https://blog.csdn.net/hzfw2008/article/details/77460804
本人的需求是在,委外加工入库上增加勾稽期间,勾稽期间栏位FYearPeriod已经存在ICStockBill表上,
只在ICChatBillTitle表插入数据即可。

这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
我正在编写一个方法,它将在一个类中定义一个实例方法;类似于attr_accessor:classFoocustom_method(:foo)end我通过将custom_method函数添加到Module模块并使用define_method定义方法来实现它,效果很好。但我无法弄清楚如何考虑类(class)的可见性属性。例如,在下面的类中classFoocustom_method(:foo)privatecustom_method(:bar)end第一个生成的方法(foo)必须是公共(public)的,第二个(bar)必须是私有(private)的。我怎么做?或者,如何找到调用我的cust
只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您
在Rails自动生成的功能测试(test/functional/products_controller_test.rb)中,我看到以下代码:classProductsControllerTest我的问题是:方法调用products()在哪里/如何定义?products(:one)到底是什么意思?看代码,大概意思是“创建一个产品”,但是它是如何工作的呢?注意我是Ruby/Rails的新手,如果这些是微不足道的问题,我深表歉意。 最佳答案 如果您查看test/fixtures文件夹,您会看到一个products.yml文件。这是在您创建
使用散列定义的访问器方法动态创建对象的最简单方法是什么?例如,如果我有一个散列:{foo:"Foo",bar:"Bar"}我想要一个具有访问器方法foo、foo=、bar和bar=的对象,其初始值分别为"Foo"和"Bar"。我可以想到这样做:moduleObjectWithAccessordefself.newh;Struct.new(*h.keys).new(*h.values)endendo=ObjectWithAccessor.new(foo:"Foo",bar:"Bar")o.foo#=>"Foo"但是,我不需要它们的多个实例具有相同的特定键集,而是希望每次都使用可能不同的键
在我的一些Controller中,我有一个before_filter检查用户是否登录?用于CRUD操作。application.rbdeflogged_in?unlesscurrent_userredirect_toroot_pathendendprivatedefcurrent_user_sessionreturn@current_user_sessionifdefined?(@current_user_session)@current_user_session=UserSession.findenddefcurrent_userreturn@current_userifdefine
我需要动态创建一个Ruby类,即动态地从ActiveRecord::Base派生。我暂时使用eval:eval%Q{class::#{klass}是否有一种等效的、至少同样简洁的方法可以在不使用eval的情况下执行此操作? 最佳答案 您可以使用Class类,其中的类是实例。困惑了吗?;)cls=Class.new(ActiveRecord::Base)doself.table_name=table_nameendcls.new 关于ruby-无需eval即时创建Ruby类,我们在Stac
require'pp'p*1..10这会打印出1-10。为什么这么简洁?您还可以用它做什么? 最佳答案 它是“splat”运算符。它可用于分解数组和范围并在赋值期间收集值。这里收集赋值中的值:a,*b=1,2,3,4=>a=1b=[2,3,4]在此示例中,内部数组([3,4])中的值被分解并收集到包含数组中:a=[1,2,*[3,4]]=>a=[1,2,3,4]您可以定义将参数收集到数组中的函数:deffoo(*args)pargsendfoo(1,2,"three",4)=>[1,2,"three",4]
我读过的关于Ruby符号的每一篇文章都在谈论符号相对于字符串的效率。但是,这不是1970年代。我的电脑可以处理一些额外的垃圾收集。我错了吗?我拥有最新最好的奔腾双核处理器和4GBRAM。我认为这应该足以处理一些字符串。 最佳答案 您的计算机可能能够处理“一点点额外的垃圾收集”,但是当“一点点”发生在运行数百万次的内部循环中时呢?如果它在内存有限的嵌入式系统上运行呢?有很多地方你可以随意使用字符串,但在某些地方你不能。这完全取决于上下文。 关于ruby-现代计算机的功能是否不足以处理字符串
我正在使用Windows并尝试运行一个现有的功能包,该功能包最初是在MacOS上构建的,这允许他们通过使用带空格的"\"来解决问题。我正在使用Ruby2.2.3和Cucumber。功能名称包含空格,我无法更改它。我尝试使用""和''来绕过空白,但每次都有同样的问题。这是问题的一个例子。如果我运行:cucumberfeatures/'Namecontainingwhitespaces.feature'它工作正常。但是当我运行时:cucumber-pmy_profile和cucumber.yml包含:my_profile:features/'Namecontainingwhitespace