前几个月买了一个通用的ERP软件,很多数据自动生成商业智能没有,流程或是不符,报表缺失等.
反映给软件开发商,不是说这个功能不打算改,就是要等下一个版本,或是先报价收费后再定制.到了几乎无法推行下去的地步!买之前没有具体运作起流程很多问题发现不了折.所以准备上ERP时一定要把后期的服务谈清楚,免得买过来用不了.
还好,最好发现SQL2005的触发器能自已不修改主程序而完成大部分功能:
一,重要数据修改自动记录
二,禁止修改与删除
三,定时自动统计更新
四,生成自已想要的表格
五,增加字段保存想要的商业智能
下面是触发器的一个简单例子
USE [XingJianV45]
GO
/****** 对象: Trigger [dbo].[TRIGGER_JIXIAO] 脚本日期: 02/12/2011 21:00:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TRIGGER_JIXIAO]
ON [dbo].[Sale_Order]
AFTER UPDATE
AS
BEGIN
declare @xs as nvarchar(50)
declare @bcje as money--本次金额(含上次金额,绝对值输入)
declare @dzsj as datetime-- 到账时间
declare @yfje as money--应付金额
declare @yfsj as datetime--应付时间
declare @yifuje as money --已付金额,之前到账金额
IF UPDATE(daojinge)
BEGIN
select @xs=Sale_Order_SerialNO, @yifuje=daojinge,
@yfje=sale_order_money, @yfsj=sale_order_signdate from deleted
select @dzsj=daotime,@bcje=daojinge from INSERTED
--计算绩效工资,拖款费用,提醒催款
if @bcje>=@yfje
begin
update sale_order set wancheng=1 where Sale_Order_SerialNO=@xs
end
else
begin
update sale_order set wancheng=0 where Sale_Order_SerialNO=@xs
end
--分期付款的要在未到账前计算,或是把到的一部分先记录
if datediff(day,@yfsj,@dzsj)>7
begin
update sale_order set weiyuetime=datediff(day,@yfsj,@dzsj),
weiyuejing=weiyuejing+ datediff(day,@yfsj,@dzsj)*(@bcje-@yifuje)*0.0004 where Sale_Order_SerialNO=@xs
end
else
begin
update sale_order set weiyuetime=0 , weiyuejing=0 where Sale_Order_SerialNO=@xs
end
--计算提成要根据不同的客户,业务,付款时间
END
declare @SH as BIT
select @SH=Sale_Order_Review from deleted
IF UPDATE(Sale_Order_Review) AND @SH='True'
BEGIN
ROLLBACK TRAN
END
END