By:Suntime 2007-12-26
声明:本案例涉及对数据库的操作,特别是金蝶账套的单据模板数据表的修改,存在一定的数据风险,操作前请备份好账套。如果你对金蝶K3系列产品的数据结构不熟悉,请就此打住。望三思而后行!!!
一、需求
小静这丫头,最近轴承企业做得比较多。
(那此轴承企业生产的轴承,卖到俄罗斯和美国都有,估计下次世界大战,两个对打的轴承,搞不好全是大连生产的。虽然是卖废铁废钢,再怎么也比珠三角卖人力的强。尽管近两三年人工有所涨价、新劳动合动也快实施了,但一百好几斤的农民工一个月再怎么劳作,也就在那一千元左右的工资。台佬哥还不停地报怨成本涨了、不赚钱了,早知道这样,还不如早给做点高新、早点做品牌,即便代工,也该同鬼佬多谈点价格啊?!即便实在做不了,就跟着小静他们去做轴承,一吨铜铁也有上千好几万啊。-:),一些废话。)
做轴承要买铸件、卖轴承也是卖大件。于是弄多了,大家的轴承一个一个地卖,都觉得天天报价要价实在太麻烦,刚脆论斤卖得了,于是就有论重计价。
轴承都称重论斤卖了,软件也就跟着论斤卖了,于是小静一个一个账套地去改。刚开始时,小静还不觉得不辛苦,跑了三头两天,结果连圣诞节都搭进去了,小静傻眼了,这软件做起来怎么比轴承还重啊?!
小静忽然想到,人家的作业方式都是一样的,为什么我的软件设置就不能复制啊,省得天天折腾。
嗯,是得找个一劳永逸的办法了。
二、需求分析及关键点说明
需求分析环境:KIS 专业版 V9.1
需求解析:
这是一个称重计价的需求。简单点说,要在单据上体现这两个基本逻辑关系:
1、 数量×单重=总重量
2、 单重×单重单价=单价
由此派生出的数据关系,金额=数量×单价 或 金额=总重量×单重单价
解决方式:
1、对于单个产品而言,其单重相对比较固定,故在“物料”基础资料中新增一个自定义字段“单重” (数据库字段名FUnitWeight),用于录入物料单重资料。
2、在采购入库单上新增“单重”字段(数据库字段名FUnitWeight),属性为数值。新增单据时,来源于物料基础资料的“单重”字段,录入单据时可根据实际情况修改,需要保存数据到数据表。本步操作要修改Action。
新增字段,假定后台新增字段名为FUnitWeight。
在新增单据自定义后执行如下脚本:
-----------------------
Update ICTemplateEntry set FRelationID='FItemID',FAction='.,FUnitWeight', where FID=’A01’ And FFieldName='FUnitWeight'
----------------------
在采购入库单上新增“单重单价”字段(数据库字段名FUnitWeiPrice),属性为单价。录入单据时可根据实际情况修改,需要保存数据到数据表。本步操作直接可以通过软件的“单据自定义”工具进行操作。
在采购入库单上新增“总重量”字段(数据库字段名FTotalWeight),属性为数量。新增录入单据时不可以修改,但需要保存数据到数据表。定义计算公式:总重量=数量×单重。本步操作直接可以通过软件的“单据自定义”工具进行操作。
3、 单据模板后期处理,需要处理 单价、金额及单重单价(由单价反算)三字段的Action。
这里以单价为例作说明。
这是系统单价原来的设置:
-----------------------
UPDATE ICTemplateEntry SET
FRelationID='FItemID,FAmount,FUnitID',
FAction='.,FPlanPrice;!,FAmount,/,FAuxQty'
WHERE FID='A01' And FFieldName='FAuxPrice'
----------------------
这是需要更新的脚本:
-----------------------
UPDATE ICTemplateEntry SET
FRelationID='FItemID,FAmount,FUnitID,FUnitWeight,FUnitWeiPrice,FTotalWeight',
FAction='.,FPlanPrice;!,FAmount,/,FAuxQty;Cal,A=B*C,FUnitWeight,FUnitWeiPrice'
WHERE FID='A01' And FFieldName='FAuxPrice'
----------------------
两者的差异,我就不再作说明了,自己去比较吧。
如上图。
实际上,这个例子,比昨天所说的,ilikesap11 的銅基计价计算需求要简单得多。
四、其他
整理的你的脚本、保存,以备下次应用。这是个好习惯。
本文档从金蝶社区和QQ群4362985散发。若要转载,请注明出处。谢谢。