专业版物料数据授权解决方法
客户是生成企业,业务员用移动应用开单,因为原料保密,不希望业务员看到原材料,专业版不支持物料数据授权,
目前只想到这个方法解决,大家可以参考下,看看有没有更完善的解决方法。
1、增加计量单位组 数量组 把除了产成品以外的计量单位都添加这个组里
2、增加物料 代码 9 ,名称 原材料,单位 数量组
3、所有物料 物料属性选自制(系统会生成成本对象)
可以通过系统工具把所有物料引出 把物料属性改成自制 在覆盖引入
4、执行语句-把产成品(代码02)以外的物料设置成半禁用(电脑端能看,手机上看不到)
Update t_ICItemCore set FDeleted=1 where fnumber<'02' or fnumber>'03'
Update t_ICItemCore set FDeleted=0 where fnumber='9'
5 执行语句在入库单、领料单、其他入库、其他出库单增加原材料列(取值成本对象)
DELETE FROM ICTemplateEntry WHERE FLookUpCls='2001' AND FID='A01'
INSERT INTO ICTemplateEntry
(FID, FCtlOrder, FCtlIndex, FCtlType, FLookUpCls, FNeedSave, FValueType, FSaveValue, FFieldName, FEnable, FPrint,
FHeadCaption, FWidth, FNeedCount, FMustInput, FDefaultCtl, FVisForBillType, FRelateOutTbl, FSysMustInputItem,
FHeadCaption_CHT, FHeadCaption_EN, FStatCount, FIsVisibleForList, FCanEditedAllTime,
FAllowCopy,FPrintStatus, FIsVisibleForTemplate, FSelBill, FBillVisible)
VALUES ('A01',4,4,2,2001,1,1,1,'FCostOBJID',48,1,'原材料',1005,0,0,1,31,0,0,'原材料','CostObj',0,1,1,1,0,0,0,0)
--入库单增加原材料列
DELETE FROM ICTemplateEntry WHERE FLookUpCls='2001' AND FID='B04'
INSERT INTO ICTemplateEntry
(FID, FCtlOrder, FCtlIndex, FCtlType, FLookUpCls, FNeedSave, FValueType, FSaveValue, FFieldName, FEnable, FPrint,
FHeadCaption, FWidth, FNeedCount, FMustInput, FDefaultCtl, FVisForBillType, FRelateOutTbl, FSysMustInputItem,
FHeadCaption_CHT, FHeadCaption_EN, FStatCount, FIsVisibleForList, FCanEditedAllTime,
FAllowCopy,FPrintStatus, FIsVisibleForTemplate, FSelBill, FBillVisible)
VALUES ('B04',4,4,2,2001,1,1,1,'FCostOBJID',48,1,'原材料',1005,0,0,1,31,0,0,'原材料','CostObj',0,1,1,1,0,0,0,0)
--领料单增加原材料列
DELETE FROM ICTemplateEntry WHERE FLookUpCls='2001' AND FID='A97'
INSERT INTO ICTemplateEntry
(FID, FCtlOrder, FCtlIndex, FCtlType, FLookUpCls, FNeedSave, FValueType, FSaveValue, FFieldName, FEnable, FPrint,
FHeadCaption, FWidth, FNeedCount, FMustInput, FDefaultCtl, FVisForBillType, FRelateOutTbl, FSysMustInputItem,
FHeadCaption_CHT, FHeadCaption_EN, FStatCount, FIsVisibleForList, FCanEditedAllTime,
FAllowCopy,FPrintStatus, FIsVisibleForTemplate, FSelBill, FBillVisible)
VALUES ('A97',4,4,2,2001,1,1,1,'FCostOBJID',48,1,'原材料',1005,0,0,1,31,0,0,'原材料','CostObj',0,1,1,1,0,0,0,0)
--其他入库单增加原材料列
DELETE FROM ICTemplateEntry WHERE FLookUpCls='2001' AND FID='B09'
INSERT INTO ICTemplateEntry
(FID, FCtlOrder, FCtlIndex, FCtlType, FLookUpCls, FNeedSave, FValueType, FSaveValue, FFieldName, FEnable, FPrint,
FHeadCaption, FWidth, FNeedCount, FMustInput, FDefaultCtl, FVisForBillType, FRelateOutTbl, FSysMustInputItem,
FHeadCaption_CHT, FHeadCaption_EN, FStatCount, FIsVisibleForList, FCanEditedAllTime,
FAllowCopy,FPrintStatus, FIsVisibleForTemplate, FSelBill, FBillVisible)
VALUES ('B09',4,4,2,2001,1,1,1,'FCostOBJID',48,1,'原材料',1005,0,0,1,31,0,0,'原材料','CostObj',0,1,1,1,0,0,0,0)
--其他出库单增加原材料列
6、增加触发器 单据保存后 把物料代码9(内码868)更换成原材料列对应的原材料
(1)执行语句 查出 物料代码9内码
select FItemID from t_ICItemCore where fnumber='9'
(2)把下面语句物料内码改成868 然后在查询分析器执行下
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE TRIGGER [YLICStockBill] ON [dbo].[ICStockBill]
FOR UPDATE
AS
begin
Update t_ICItemCore set FDeleted=1 where fnumber<'02' or fnumber>'03'
Update t_ICItemCore set FDeleted=0 where fnumber='9'
--把产成品(代码02)以外的物料设置成半禁用(电脑端能看,手机上看不到)
update ICStockBillEntry set FItemID=cbCostObj.FStdProductID from
cbCostObj where ICStockBillEntry.FItemID=868 and ICStockBillEntry.FCostOBJID=cbCostObj.FItemID
--单据保存后 把物料代码9(内码868)更换成原材料列对应的原材料
END
7、做采购入库单时 物料选9 原料选择(成本对象里的原材料名称)
单据保存后,点前单,点后单 就能看到变化
问题:物料半禁用后无法做入库出库,哪位大神有方法处理
如果能实现禁用的物料可以入库或出库,那样就禁用下物料就可以让手机只能看到成品了
推荐阅读