采购模块进行定价的时候,参照的是仓库的采购进仓单,但是选择这些单的时候显示的只是表体部分,看
不到到底是那些仓库的货,于是我定时任务的方式去处理这个问题,采用定期的将表头的仓库信息拷入到表体行中,因为这些信息本身只是提供一个参考,不需要做什么处理的,所以直接拷就可以完成任务了。
起初我用的是一个触发器,但是后来考虑到,所有的进出仓的单据都放到这个表中,量大的时候很耽误时间,
同时考虑到定价一般发生在开完单据的第二,第三天。
CREATE TRIGGER tri_savewhname_rdrecords
ON RdRecords
FOR insert ,update
AS
BEGIN
UPDATE rdrecords SET cDefine24 = --对应表体自定义项第三项
(SELECT cwhname FROM warehouse wh ,rdrecord rd --存储仓库名称到表体
WHERE wh.cwhcode = rd.cwhcode AND
rdrecords.id = rd.id )
WHERE autoid IN ( SELECT autoid FROM inserted ) AND EXISTS
(
SELECT 1 FROM rdrecord rd1, inserted in1
WHERE rd1.id = in1.id AND
rd1.cvouchtype = '01' --只操作采购入库单
)
END
sqlServer里面建一个SQL Server 代理作业,并不能,定义好时间,语句就可以了。
UPDATE rdrecords
SET cdefine24 =cwhname
FROM warehouse wh inner join rdrecord rd on
wh.cwhcode = rd.cwhcode inner join rdrecords rds on rd.id=rds.id
where rd.cvouchtype='01' and cdefine24 IS null
因为只针对采购入库单,所以选择的单据类型为“01”,只要我选择的那个自定义项为空,就可以
进行拷贝动作了。
后面定价员又提出一个问题,就是有些定了价的入库单,被改动了。这样就会使定价出问题,于是希望能
准确的看到那些是否审核。 自然她说得复杂,我们要做的其实不错,如法炮制。
UPDATE rdrecords
SET cdefine24 =cdefine24 + "(已审)"
where
exists
(
select 1 from rdrecord rd
where
rd.cvouchtype='01' and
rd.id = rdrecords.id and
rd.cAccounter is not null
)
拷一个“审核”字样到仓库名后面,直观的很。