请输入
菜单

华航产品自动创建助理产品

下载

一、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)
)
BEGIN

    IF 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 
BEGIN

    IF @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 
BEGIN

    IF @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`(
)
BEGIN

    DECLARE 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 
BEGIN 

        IF 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 ;

华航产品自动创建助理产品.sql

 

最近修改: 2025-02-07