一、demo脚本
DROP PROCEDURE IF EXISTS `huahang_autoadd_form06_by_products`;
DELIMITER ;;
CREATE PROCEDURE `huahang_autoadd_form06_by_products`(
tmp_productid INT (19),
tmp_action VARCHAR(20)
)
BEGINIF tmp_action='delete' THEN
UPDATE ld_customform06 SET deleted=1 WHERE product_id=tmp_productid;
ELSEIF tmp_productid>0 THEN
-- 如果不存在对应 产品ID 的记录,则新增
IF NOT EXISTS (SELECT 1 FROM ld_customform06 WHERE deleted=0 AND product_id=tmp_productid) THEN
SET @autoadd_maxcrmid=(SELECT MAX(crmid) FROM ld_crmentity);
INSERT INTO ld_crmentity(crmid,setype)
SELECT @autoadd_maxcrmid+1,'CustomForm06';
UPDATE ld_crmentity_seq SET id=(SELECT MAX(crmid) FROM ld_crmentity);INSERT INTO ld_customform06(
customform06id,
customform06_no,
product_id,smownerid,
smcreatorid,
modifiedby,
createdtime,
modifiedtime
)
SELECT
@autoadd_maxcrmid+1,
product_no,
productid,smownerid,
smcreatorid,
modifiedby,
createdtime,
modifiedtime
FROM ld_products
WHERE productid=tmp_productid;
UPDATE ld_modentity_num SET cur_id=cur_id+1 WHERE semodule='CustomForm06' AND active=1;INSERT INTO ld_customform06scf(customform06id) SELECT @autoadd_maxcrmid+1;
-- 更新其他产品信息
UPDATE ld_customform06 a
LEFT JOIN ld_customform06scf b ON b.customform06id=a.customform06id
LEFT JOIN ld_products c ON c.productid=a.product_id
SET
a.customform06_no=c.product_no,
a.smownerid=c.smownerid,
a.smcreatorid=c.smcreatorid,
a.createdtime=c.createdtime,
a.modifiedby=c.modifiedby,
a.modifiedtime=c.modifiedtime,b.cf_3575=c.productname,
b.cf_3576=c.productsheet, -- 规格型号
b.cf_3577=c.productcategory, -- 产品类别
b.cf_3578=c.usageunit, -- 计量单位
b.cf_3579=c.unit_price, -- 产品报价(RMB)
b.cf_3582=c.costprice, -- 产品报价(RMB)
b.cf_3581=c.qtyearly, -- 安全库存
b.cf_3586=c.qtyinstock, -- 总库存数量
b.cf_3583=c.description -- 备注
WHERE a.product_id>0
AND a.product_id=tmp_productid;ELSE
-- 如果存在,更新产品的其他信息
INSERT INTO ld_customform06scf(customform06id)
SELECT customform06id FROM ld_customform06 WHERE customform06id NOT IN (SELECT customform06id FROM ld_customform06scf);UPDATE ld_customform06 a
LEFT JOIN ld_customform06scf b ON b.customform06id=a.customform06id
LEFT JOIN ld_products c ON c.productid=a.product_id
SET
a.customform06_no=c.product_no,
a.smownerid=c.smownerid,
a.smcreatorid=c.smcreatorid,
a.createdtime=c.createdtime,
a.modifiedby=c.modifiedby,
a.modifiedtime=c.modifiedtime,b.cf_3575=c.productname,
b.cf_3576=c.productsheet, -- 规格型号
b.cf_3577=c.productcategory, -- 产品类别
b.cf_3578=c.usageunit, -- 计量单位
b.cf_3579=c.unit_price, -- 产品报价(RMB)
b.cf_3582=c.costprice, -- 产品报价(RMB)
b.cf_3581=c.qtyearly, -- 安全库存
b.cf_3586=c.qtyinstock, -- 总库存数量
b.cf_3583=c.description -- 备注
WHERE a.product_id>0
AND a.product_id=tmp_productid;END IF;
END IF;
END
;;
DELIMITER ;
DROP TRIGGER IF EXISTS `huahang_reset_form06_by_products_afterinsert`;
DELIMITER ;;
CREATE TRIGGER `huahang_reset_form06_by_products_afterinsert` AFTER INSERT ON `ld_products` FOR EACH ROW
BEGINIF @disable_triggers IS NULL THEN
CALL huahang_autoadd_form06_by_products(NEW.productid,NULL);
END IF;END
;;
DELIMITER ;DROP TRIGGER IF EXISTS `huahang_reset_form06_by_products_afterupdate`;
DELIMITER ;;
CREATE TRIGGER `huahang_reset_form06_by_products_afterupdate` AFTER UPDATE ON `ld_products` FOR EACH ROW
BEGINIF @disable_triggers IS NULL THEN
IF NEW.deleted=1 THEN
CALL huahang_autoadd_form06_by_products(NEW.productid,'delete');
ELSE
CALL huahang_autoadd_form06_by_products(NEW.productid,NULL);
END IF;
END IF;END
;;
DELIMITER ;
-- 同步历史产品信息
DROP PROCEDURE IF EXISTS `huahang_addall_to_form06`;
delimiter ||
CREATE PROCEDURE `huahang_addall_to_form06`(
)
BEGINDECLARE tmp_billid INT(19) DEFAULT 0;
DECLARE MYCUSOR CURSOR FOR SELECT productid FROM ld_products WHERE deleted=0 AND productid NOT IN (SELECT product_id FROM ld_customform06 WHERE deleted=0);
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET tmp_billid = NULL;OPEN MYCUSOR;
FETCH MYCUSOR INTO tmp_billid;
WHILE(tmp_billid IS NOT NULL) DO
CALL huahang_autoadd_form06_by_products(tmp_billid,NULL);
FETCH MYCUSOR INTO tmp_billid;
END WHILE;
CLOSE MYCUSOR;END ||
delimiter;CALL huahang_addall_to_form06();
UPDATE ld_customform06 a
LEFT JOIN ld_customform06scf b ON b.customform06id=a.customform06id
LEFT JOIN ld_products c ON c.productid=a.product_id
SET
a.customform06_no=c.product_no,
a.smownerid=c.smownerid,
a.smcreatorid=c.smcreatorid,
a.createdtime=c.createdtime,
a.modifiedby=c.modifiedby,
a.modifiedtime=c.modifiedtime,b.cf_3575=c.productname,
b.cf_3576=c.productsheet, -- 规格型号
b.cf_3577=c.productcategory, -- 产品类别
b.cf_3578=c.usageunit, -- 计量单位
b.cf_3579=c.unit_price, -- 产品报价(RMB)
b.cf_3582=c.costprice, -- 产品报价(RMB)
b.cf_3581=c.qtyearly, -- 安全库存
b.cf_3586=c.qtyinstock, -- 总库存数量
b.cf_3583=c.description -- 备注
WHERE a.product_id>0;
DROP TRIGGER IF EXISTS `huahuang_reset_salesorderdetail_insert`;
DELIMITER ;;
CREATE TRIGGER `huahuang_reset_salesorderdetail_insert` BEFORE INSERT ON `ld_salesorderdetail` FOR EACH ROW
BEGINIF NEW.line_customform06_id>0 THEN
SET NEW.productid=(SELECT product_id FROM ld_customform06 WHERE customform06id=NEW.line_customform06_id LIMIT 1);
END IF;END
;;
DELIMITER ;