觸發器方案解決錄入發票作業不允許重複錄入稅務發票號碼
標準檢測:稅務發票號碼+發票單別+發票單號
錄入發票和費用發票作業程序中,ACRTQ
稅務發票號碼+發票單別+發票單號 是主鍵即錄入採購發票(費用發票或者銷售發票)時,不允許重複錄入。系統本身會做檢測。
不同發票單別+單號,卻允許錄入相同稅務發票
但是確存在允許不同採購發票時,允許重複,財務端可能存在重複付款的可能性(雖然這種可能性比較低)
個案
易飛是閉源系統,無法通過編碼方式直接修改。考慮到未來不久即將更換系統,故此方案放棄!
觸發器
邏輯相對簡單,若能通過觸發器反饋異常信息並提示給前端,查詢相關資料決定raiserrror符號來交互信息。
觸發器方案:
ALTER trigger T_NO_Repeate
ON ACRTQ
FOR INSERT,UPDATE
AS
DECLARE @msg VARCHAR(50), @Num VARCHAR(50), @INVOICENO VARCHAR(20)
SELECT @Num=RTRIM(TQ001) FROM inserted
SELECT @INVOICENO=TQ002+'-'+RTRIM(TQ003) FROM ACRTQ WHERE TQ001=@Num AND TQ005='N'
IF EXISTS(SELECT * FROM ACRTQ WHERE TQ001=@Num AND TQ005='N')
BEGIN
SET @msg='歷史記錄表【'+@INVOICENO+'】中存在稅務此發票號碼';
--拋出自定義錯誤信息
raiserror('稅務%s[%s]存在異常,%s',16,1,'發票號碼',@Num,@msg)
END
測試效果:
3.raiserrror符號
請參考網址:
關於raiserrror詳細介紹