| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- CREATE DEFINER=`bi`@`%` PROCEDURE `BONUS_GL`(
- `PRM_PERIOD_NUM` INT
- )
- BEGIN
- DECLARE
- Done INT DEFAULT 0;
- DECLARE
- R1_USER_NAME VARCHAR ( 30 );
- DECLARE
- R1_REAL_NAME VARCHAR ( 50 );
- DECLARE
- R1_USER_LEVEL VARCHAR ( 10 );
- DECLARE
- R1_PARENT_LEVEL VARCHAR ( 10 );
- DECLARE
- R1_PARENT_USER_NAME VARCHAR ( 30 );
- DECLARE
- R3_USER_NAME VARCHAR ( 30 );
- DECLARE
- R3_REAL_NAME VARCHAR ( 50 );
- DECLARE
- R3_PARENT_USER_NAME VARCHAR ( 30 );
- DECLARE
- R3_PARENT_REAL_NAME VARCHAR ( 50 );
- DECLARE
- R1_PARENT_REAL_NAME VARCHAR ( 50 );
- DECLARE
- SHIJIDAISHU INT DEFAULT 0;
- /*DECLARE
- JICENGDAISHU INT DEFAULT 0;*/
- DECLARE
- JIJIANGDAISHU INT DEFAULT 0;
- DECLARE
- R1_ORI_BONUS_QY_BD DECIMAL ( 16, 3 );
- DECLARE
- R2_USER_NAME VARCHAR ( 30 );
- DECLARE
- R2_REAL_NAME VARCHAR ( 50 );
- DECLARE
- R2_ORI_BONUS_QY_BD DECIMAL ( 16, 3 );
- DECLARE
- R2_BDYJ DECIMAL ( 16, 3 );
- DECLARE
- R3_BDYJ DECIMAL ( 16, 3 );
- DECLARE
- R2_PARENT_USER_NAME VARCHAR ( 30 );
- DECLARE
- R2_PARENT_REAL_NAME VARCHAR ( 50 );
- DECLARE
- XIANAJIANGJIN DECIMAL ( 16, 3 );
- DECLARE
- TUIGUANGRENSHU INT;
- DECLARE
- DAISHUXIANZHI INT;
- DECLARE
- JIANGJINBILI DECIMAL ( 16, 3 );
- /* 声明游标 */
- DECLARE
- rs
- CURSOR FOR
- SELECT
- U.USER_NAME
- , U.REAL_NAME
- , B.ORI_BONUS_QY_BD
- , U2.USER_NAME AS PARENT_USER_NAME
- , U2.REAL_NAME AS PARENT_REAL_NAME
- FROM
- ar_calc_bonus B
- LEFT JOIN
- ar_user U
- ON
- U.ID = B.USER_ID
- LEFT JOIN
- ar_user_relation_new R
- ON
- R.USER_ID = B.USER_ID
- LEFT JOIN
- ar_user U2
- ON
- U2.ID = R.PARENT_UID
- LEFT JOIN
- ar_perf_period P
- ON
- P.USER_ID = U.ID
- AND P.PERIOD_NUM = PRM_PERIOD_NUM
- WHERE
- B.PERIOD_NUM = PRM_PERIOD_NUM
- AND B.ORI_BONUS_QY_BD > 0
- ;
-
- /* 异常处理 */
- DECLARE
- CONTINUE HANDLER FOR SQLSTATE '02000'
- SET Done = 1;
- /* 打开游标 */
- OPEN rs;
- DELETE
- FROM
- ek_temp_gl_cs
- ;
-
- /* 逐个取出当前记录LingQi字段的值,需要进行最大值的判断 */
- FETCH NEXT
- FROM
- rs
- INTO
- R1_USER_NAME
- , R1_REAL_NAME
- , R1_ORI_BONUS_QY_BD
- , R1_PARENT_USER_NAME
- , R1_PARENT_REAL_NAME
- ;
-
- /* 遍历数据表 */
- REPEAT
- SET JIJIANGDAISHU = 1;
- -- SET JICENGDAISHU = 1;
- SET SHIJIDAISHU = 0;-- INSERT INTO ORI_BONUS_GX_CS(USER_NAME,REAL_NAME,PARENT_NAME,ORI_BONUS_GX) VALUES (USER_NAME,REAL_NAME,PARENT_NAME,ORI_BONUS_GX);
- REPEAT
- SET R2_USER_NAME = NULL;
- SELECT
- A.USER_NAME
- , A.REAL_NAME
- , A.LEVEL_NAME
- , A.ORI_BONUS_QY_BD
- , A.PARENT_USER_NAME
- , A.PARENT_REAL_NAME
- , A.PARENT_LEVEL_NAME
- , A.BDYJ
- , A.TUIGUANGRENSHU
- , G.`实际代数`
- INTO
- R2_USER_NAME
- , R2_REAL_NAME
- , R1_USER_LEVEL
- , R2_ORI_BONUS_QY_BD
- , R2_PARENT_USER_NAME
- , R2_PARENT_REAL_NAME
- , R1_PARENT_LEVEL
- , R2_BDYJ
- , TUIGUANGRENSHU
- , DAISHUXIANZHI
- FROM
- (
- SELECT
- U.USER_NAME
- , U.REAL_NAME
- , D.LEVEL_NAME
- , IFNULL( B.ORI_BONUS_QY_BD, 0 ) AS ORI_BONUS_QY_BD
- , U2.USER_NAME AS PARENT_USER_NAME
- , U2.REAL_NAME AS PARENT_REAL_NAME
- , D2.LEVEL_NAME AS PARENT_LEVEL_NAME
- ,( XIAOYEJI ( R1_PARENT_USER_NAME, PRM_PERIOD_NUM )) AS BDYJ
- , (
- SELECT
- COUNT(*)
- FROM
- zr_user_vw R
- WHERE
- R.`推荐编号` = U.USER_NAME
- )
- AS TUIGUANGRENSHU
- FROM
- ar_user U
- LEFT JOIN
- ar_calc_bonus B
- ON
- B.USER_ID = U.ID
- AND B.PERIOD_NUM = PRM_PERIOD_NUM
- LEFT JOIN
- ar_declaration_level D
- ON
- D.ID = U.DEC_LV
- LEFT JOIN
- ar_user_relation_new R
- ON
- R.USER_ID = U.ID
- LEFT JOIN
- ar_user U2
- ON
- U2.ID = R.PARENT_UID
- LEFT JOIN
- ar_declaration_level D2
- ON
- D2.ID = U2.DEC_LV
- LEFT JOIN
- ar_perf_period P
- ON
- P.USER_ID = U.ID
- AND P.PERIOD_NUM = PRM_PERIOD_NUM
- WHERE
- U.USER_NAME = R1_PARENT_USER_NAME
- )
- A
- LEFT JOIN
- ek_temp_glds G
- ON
- G.`会员级别` = A.LEVEL_NAME
- AND G.`推广人数` =
- IF
- (
- A.TUIGUANGRENSHU > 3, 3, A.TUIGUANGRENSHU
- )
- ;
-
- SET Done = 0;
- SET SHIJIDAISHU = SHIJIDAISHU + 1;-- SET SHANGDAI = SHANGDAI + 1;
-
- IF R2_USER_NAME IS NOT NULL THEN
- SET JIANGJINBILI = 0;
- SET XIANAJIANGJIN = 0;
- IF JIJIANGDAISHU <= DAISHUXIANZHI AND JIJIANGDAISHU%2 = 1 AND R1_ORI_BONUS_QY_BD > 0 THEN
- IF JIJIANGDAISHU = 1
- OR
- JIJIANGDAISHU = 3
- OR
- JIJIANGDAISHU = 5 THEN
- SET JIANGJINBILI = 0.05;
- ELSEIF
- JIJIANGDAISHU = 7
- OR
- JIJIANGDAISHU = 9
- OR
- JIJIANGDAISHU = 11 THEN
- SET JIANGJINBILI = 0.04;
- ELSEIF
- JIJIANGDAISHU = 13
- OR
- JIJIANGDAISHU = 15
- OR
- JIJIANGDAISHU = 17 THEN
- SET JIANGJINBILI = 0.03;
- ELSE
- SET JIANGJINBILI = 0;
- END IF;
- SET XIANAJIANGJIN = R1_ORI_BONUS_QY_BD * JIANGJINBILI;
-
- END IF;
-
-
- /*IF R2_ORI_BONUS_QY_BD > 0 THEN
- SET JICENGDAISHU = JICENGDAISHU + 1;
- END IF;*/
- INSERT INTO ek_temp_gl_cs
- ( `得奖人编号`
- , `得奖人姓名`
- , `得奖人级别`
- , `给奖人编号`
- , `给奖人姓名`
- , `实际代数`
- , `计层代数`
- , `计奖代数`
- , `给奖人报团奖`
- , `得奖人报团奖`
- , `得奖人小业绩`
- , `奖金`
- , `推广人数`
- , `代数限制`
- , `奖金比例`
- )
- VALUES
- ( R2_USER_NAME
- , R2_REAL_NAME
- , R1_USER_LEVEL
- , R1_USER_NAME
- , R1_REAL_NAME
- , SHIJIDAISHU
- , NULL
- , IF(r2_bdyj <980,NULL,JIJIANGDAISHU)
- , R1_ORI_BONUS_QY_BD
- , R2_ORI_BONUS_QY_BD
- , R2_BDYJ
- , if(r2_bdyj <980,0,XIANAJIANGJIN)
- , TUIGUANGRENSHU
- , DAISHUXIANZHI
- , JIANGJINBILI
- )
- ;
- -- SET JIJIANGDAISHU = JICENGDAISHU;
-
- END IF;
- IF R2_BDYJ >= 980 THEN
- SET JIJIANGDAISHU = JIJIANGDAISHU + 1;
- END IF;
- SET R1_PARENT_USER_NAME = R2_PARENT_USER_NAME;
- UNTIL JIJIANGDAISHU >= 18
- OR
- R2_USER_NAME IS NULL
- END REPEAT;
- FETCH NEXT
- FROM
- rs
- INTO
- R1_USER_NAME
- , R1_REAL_NAME
- , R1_ORI_BONUS_QY_BD
- , R1_PARENT_USER_NAME
- , R1_PARENT_REAL_NAME
- ;
-
- UNTIL Done
- END REPEAT;
- /* 关闭游标 */
- CLOSE rs;
- END
|