請求書システムに変更を保存して、アカウント システム (サード パーティのアプリ) にエクスポートする必要があります。
私がやろうとしているのは、2 つのトリガーを追加することです。
ON INSERT : 新しい請求書が追加され、別のテーブルで新規としてマークする必要があるため、次の移行で適切な ASCII を生成して会計システムにインポートします。
更新時: これはもう少し複雑です。これは、請求書が変更されたとき、または請求書が支払われたときに発生する可能性があります。
両方のトリガーが同じプロシージャを呼び出します。
DROP PROCEDURE IF EXISTS `marca_factura_modificada`;
DELIMITER |
CREATE PROCEDURE `marca_factura_modificada`( IN nempresa_in int, IN nfactura_in int, IN cany_in char(2), IN cobrada boolean )
BEGIN
DECLARE existeix_factura INT;
DECLARE abans_afegir_factura INT;
DECLARE abans_afegir_cobrament INT;
SELECT NFactura,afegir_factura,afegir_cobrament
INTO existeix_factura,abans_afegir_factura,abans_afegir_cobrament
FROM factures_modificades
WHERE NEmpresa = nempresa_in
AND NFactura = nfactura_in
AND CAny = cany_in
LIMIT 1;
IF existeix_factura IS NULL THEN
IF new.DataFactura = CURDATE() THEN
IF (new.LComptat = 1 OR new.LCreditCobrat = 1) THEN
INSERT INTO factures_modificades (NEmpresa, NFactura, CAny,afegir_factura,afegir_cobrament )
VALUES (nempresa_in, nfactura_in, cany_in,1,1);
ELSE
INSERT INTO factures_modificades (NEmpresa, NFactura, CAny,afegir_factura,afegir_cobrament )
VALUES (nempresa_in, nfactura_in, cany_in,1,0);
END IF
ELSE
/* Si no és d'avui i no hi ha registre es que ja es va afegir la factura en el seu dia */
INSERT INTO factures_modificades (NEmpresa, NFactura, CAny,afegir_factura,afegir_cobrament )
VALUES (nempresa_in, nfactura_in, cany_in,0,1);
END IF
ELSE
IF(cobrada = 0 AND abans_afegir_factura = 0) THEN
DELETE FROM factures_modificades WHERE NEmpresa = nempresa_in AND NFactura = nfactura_in AND CAny = cany_in LIMIT 1;
ELSEIF (cobrada = 1 AND abans_afegir_cobrament = 0) THEN
UPDATE factures_modificades SET afegir_cobrament = 1 WHERE NEmpresa = nempresa_in AND NFactura = nfactura_in AND CAny = cany_in;
ELSEIF (cobrada = 0 AND abans_afegir_cobrament = 1) THEN
UPDATE factures_modificades SET afegir_cobrament = 0 WHERE NEmpresa = nempresa_in AND NFactura = nfactura_in AND CAny = cany_in;
END IF
END IF
END
|
DELIMITER ;
しかし、これはmysql 5.5では機能しません(IF THEN ELSEコードに問題があると思いますが、どこにあるのかわかりません.