分享

采购订单的“品质要求”字段可随基础资料带出并可修改的实现方式

 海为科技 2007-12-12

采购订单的“品质要求”字段可随基础资料带出并可修改的实现方式

/*-----------------------------------------------------------------------------
* DESCRIPTION:采购订单的“品质要求”字段可随基础资料带出并可修改的实现方式
* BY:Suntime
* DATE:2006-12

* 功能:采购订单的“品质要求”字段可随基础资料带出,并可修改
* 客户要求:应客户要求,设置此字段的目的
      1、向其供应商和加工商在业务单据上说明相关物料的生产、加工要求
      2、在一段时间内,某一物料的外购或委外品质要求是不变的
      3、要减少输单工作量,订单上的“品质要求”字段可随基础资料带出,并可修改。
      4、新增或选单生成业务单据时,最好能直接在新单据上直接显示此字段相关信息
* 实现方式:
      1、在物料基础资料上新增“品质要求”字段,
      2、在采购订单上新增“品质要求”字段,新增或选单生成业务单据时,数据值来源于物料的“品质要求”,并可修改。
-----------------------------------------------------------------------------*/

/*在物料基础资料上新增"品质要求"字段*/

if not exists (SELECT * FROM sysobjects t1 ,syscolumns t2 where t1.id=t2.id and t1.name='t_ICItemCustom'  and t2.Name='QualityRequest')
Alter Table t_ICItemCustom Add QualityRequest varchar(800)
go

DECLARE @FPropID INT
SELECT @FPropID = ISNull(MAX(FPropID)+1,102) FROM t_ItemPropDesc WHERE FItemClassID=4 And (FPropID>=102 And FPropID<500)
PRINT @FPropID

INSERT INTO t_ItemPropDesc (FItemClassID,FPropID,FName,FName_en,FName_cht,FSQLColumnName,FDataType,FPrecision,FScale,FActualType,FActualSize,FBehavior,FSearch,FSrcTable,FSrcField,FDisplayField,FDefaultValue,FPageName,FPageName_en,FPageName_cht,FComCall,FIsShownList,FViewMask)
VALUES (4,@FPropID, '品质要求', '品质要求', '品质要求', 'QualityRequest', 200, 800, 0, 200, 800, NULL, 0, NULL, NULL, NULL, NULL, '1.基本资料', '1. Basic Data', '1.基本資料', NULL, 0, 0)
go

If Not Exists(Select 1 from t_FieldDescription where FTableID =60 And FFieldName='QualityRequest')
 Insert into t_FieldDescription(FTableID,FFieldName,FFieldType,FDescription,FDescription_CHT,FDescription_EN,FSefDefSign) values(60,'QualityRequest','STRING','品质要求','品质要求','品质要求',1)
go

UPdate t_ItemPropDesc set FBehavior=1  Where FItemClassID = 4 and Fname='品质要求'
Go

exec SP_CREATE_ICItem_VIEW
go
exec SP_CREATE_ICItem_TRIGGER
go

/*在采购订单上新增"品质要求"字段*/

--向单据模板记录表(ICTemplateEntry)中插入 QualityRequest 字段
DECLARE @FCtlIndex INT,
 @FCtlOrder INT
SELECT @FCtlIndex = MAX(FCtlIndex)+1 FROM ICTemplateEntry WHERE FID='P02'
SELECT @FCtlOrder = MAX(FCtlOrder)+1 FROM ICTemplateEntry WHERE FID='P02'
PRINT @FCtlIndex
PRINT @FCtlOrder

Insert Into ICTemplateEntry(FID,FCtlIndex,FCtlOrder,FHeadCaption,FHeadCaption_CHT,FHeadCaption_EN,FCtlType,FLookUpCls,FNeedSave,FValueType,FSaveValue,FFieldName,FWidth,FEnable,FRelateOutTbl,FPrint,FMustInput,FNeedCount,FFilter,FRelationID,FAction,FDefaultCtl,FVisForBillType, FStatCount,FFormat,FMaxValue,FMinValue)
Values('P02',@FCtlIndex,@FCtlOrder,'品质要求','品质要求','品质要求',30,-1,-1,0,0,'QualityRequest',1500,48,0,-1,0,0,'','FItemID','.,QualityRequest',1,31,0,'','','')
go

--向采购订单分录表(POOrderEntry)中添加 QualityRequest 字段
if not exists (SELECT * FROM sysobjects t1 ,syscolumns t2 where t1.id=t2.id and t1.name='POOrderEntry'  and t2.Name='QualityRequest')
Alter Table POOrderEntry  Add QualityRequest VARCHAR(800) NULL
go

--向出套打格式字段表(GLNoteCitation)\单据序时薄表(ICChatBillTitle)中添加 QualityRequest 字段
DELETE FROM  GLNoteCitation WHERE FCode='QualityRequest' AND  FTemplateID='P02' AND FRelationID IN (1,2,3,20)

DECLARE @FID INT,@FInterID INT
SELECT @FID = MAX(FID)+1 FROM GLNoteCitation WHERE FTemplateID='P02'
SELECT @FInterID = MAX(FInterID)+1 FROM ICChatBillTitle Where FTypeID=81
PRINT @FID
PRINT @FInterID

Insert Into GLNoteCitation(FTemplateID,FID,FNoteTypeID,FCitationName,FInEntry,FIsMoney,FCode,FCtlIndex,FIsSum,FKeyFieldName,FExtFieldName,FTableName,FRelationID,FCitationName_CHT,FCitationName_EN)
Values ('P02',@FID ,50,'品质要求$',1,0 ,'QualityRequest',41,0,'QualityRequest','', '', 2,'品质要求$','品质要求$')

Insert Into ICChatBillTitle(FInterID,FTypeID,FColCaption,FColCaption_CHT,FColCaption_EN,FMergeable,FColName,FName,FTableName,FTableAlias,FColType,FItemClassID,FReturnDataType,FCtlIndex,FStatistical,FNeedCount,FCountPriceType, FVisForQuest,FVisForOrder,FFormat)
Values(@FInterID,81,'品质要求$','品质要求$','品质要求$',0,'QualityRequest','QualityRequest','POOrderEntry','u1',1,-1,0,41,1,0,0,1,1,'')
go

--整理单据求和统计公式计算表(ICVoucherTField)中先前添加 QualityRequest 字段记录
Delete FROM  ICVoucherTField WHERE FBillType=71 AND FIsUserDefine=1 AND FUserDefineField='QualityRequest'
go

--向表描述表(t_TableDescription)和字段描述表(t_FieldDescription)添加QualityRequest 字段
 IF Exists(Select t2.* From t_TableDescription t1, t_FieldDescription t2  Where t1.FTableID=t2.FTableID And t1.FTableName ='POOrderEntry' And t2.FFieldName ='QualityRequest')
     Begin
         UPDATE t2 SET FFieldType ='STRING'
         ,FDescription ='品质要求',FDescription_CHT ='品质要求',FDescription_EN ='品质要求'
         ,FFieldNote = '品质要求',FFieldNote_CHT = '品质要求',FFieldNote_EN = '品质要求'
         From t_TableDescription t1, t_FieldDescription t2
         Where t1.FTableID=t2.FTableID And t1.FTableName ='POOrderEntry' And t2.FFieldName ='QualityRequest'
     End
 Else
     Begin
         INSERT INTO t_FieldDescription(FTableID,FFieldName,FFieldType
         ,FDescription,FDescription_CHT,FDescription_EN
         ,FFieldNote,FFieldNote_CHT,FFieldNote_EN
         ) Select t1.FTableID,'QualityRequest','STRING'
         ,'品质要求','品质要求','品质要求'
         ,'品质要求','品质要求','品质要求'
         From t_TableDescription t1
         Where t1.FTableName ='POOrderEntry'
     End
Go

--删除并重整选单流转表(ICSelBills)中的 QualityRequest 字段记录
Delete ICSelBills Where FID ='P02' and  FFieldName='1007100' and  FDstCtlField='QualityRequest' and  FSelType=0
Delete ICSelBills Where FID ='P02' and  FFieldName='32' and  FDstCtlField='QualityRequest' and  FSelType=0
Delete ICSelBills Where FID ='P02' and  FFieldName='FContractID' and  FDstCtlField='QualityRequest' and  FSelType=0
Delete ICSelBills Where FID ='P02' and  FFieldName='FContractID' and  FDstCtlField='QualityRequest' and  FSelType=0
Delete ICSelBills Where FID ='P02' and  FFieldName='FRequestInterID' and  FDstCtlField='QualityRequest' and  FSelType=0
Insert Into ICSelBills(FID,FFieldName,FDstCtlField,FDK,FSelType,FColName,FName,FTableName,FTableAlias,FAction)
Values('P02','FRequestInterID','QualityRequest',0,0,'QualityRequest','QualityRequest','t_ICItem','t4','')
go

--设置采购订单 品质要求 字段来源于物料的 品质要求 字段
UPdate ICTemplateEntry set FRelationID='FItemID',FAction='.,QualityRequest',FDefaultctl=1 where FFieldName='QualityRequest'
go

已经公开 2007年4月26日 16:40 作者: Suntime
所属归类: , ,

评论

 
五一了,没有什么好东西送给大家,就拿这个吧

实际上工业老单的单据自定义是可以实现的,
只是要在物料和单据上新增相关字段之后
要注意修改单据模板和选单表的 Action
2007-04-26 17:55
 
 
谢谢你的共享...收藏了..学习中~~~~~~~~~~
2007-04-26 18:38
 
 
关于单据模板的,

这段是我改过的
Insert Into ICTemplateEntry(FID,FCtlIndex,FCtlOrder,FHeadCaption,FHeadCaption_CHT,FHeadCaption_EN,FCtlType,FLookUpCls,FNeedSave,FValueType,FSaveValue,FFieldName,FWidth,FEnable,FRelateOutTbl,FPrint,FMustInput,FNeedCount,FFilter,FRelationID,FAction,FDefaultCtl,FVisForBillType, FStatCount,FFormat,FMaxValue,FMinValue)
Values('P02',@FCtlIndex,@FCtlOrder,'品质要求','品质要求','品质要求',30,-1,-1,0,0,'QualityRequest',1500,48,0,-1,0,0,'','FItemID','.,QualityRequest',1,31,0,'','','')
go

你同单据自定义产生的脚本比较一下

实际关键是这几个字段:FRelationID、FAction、FFilter
即便是单据自定义,在最后更新
UPdate ICTemplateEntry set FRelationID='FItemID',FAction='.,QualityRequest',FDefaultctl=1 where FFieldName='QualityRequest'
就行了


这段脚本主要解决,手工新增单据时,“品质要求”字段可随基础资料带出并可修改

119,你再同单据自定义的“来源于已有的基础资料属性”比较看看
2007-04-28 11:12
 
 
这段脚本
Insert Into ICSelBills(FID,FFieldName,FDstCtlField,FDK,FSelType,FColName,FName,FTableName,FTableAlias,FAction)
Values('P02','FRequestInterID','QualityRequest',0,0,'QualityRequest','QualityRequest','t_ICItem','t4','')
go

主要是解决选单时 采购申请单->采购订单,“品质要求”字段可随基础资料带出并可修改

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多