first commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
DELIMITER //
|
||||
CREATE OR REPLACE FUNCTION sys_next_no(
|
||||
p_billno_max VARCHAR(20)
|
||||
)
|
||||
RETURNS VARCHAR(20)
|
||||
DETERMINISTIC
|
||||
BEGIN
|
||||
DECLARE v_billno VARCHAR(20);
|
||||
DECLARE v_code1 VARCHAR(10);
|
||||
DECLARE v_code2 VARCHAR(10);
|
||||
DECLARE v_code3 INT;
|
||||
|
||||
SET v_billno = p_billno_max;
|
||||
|
||||
IF IFNULL(v_billno, '') = '' THEN
|
||||
SET v_billno = CONCAT(DATE_FORMAT(CURDATE(), '%y%m%d'), '-001');
|
||||
ELSE
|
||||
-- Check last 3 digits
|
||||
IF REGEXP_SUBSTR(v_billno, '[0-9]{3}$') IS NOT NULL THEN
|
||||
SET v_code1 = RIGHT(v_billno, 3);
|
||||
SET v_code3 = CAST(v_code1 AS UNSIGNED) + 1;
|
||||
|
||||
IF v_code3 < 10 THEN
|
||||
SET v_code2 = CONCAT('00', v_code3);
|
||||
ELSEIF v_code3 < 100 THEN
|
||||
SET v_code2 = CONCAT('0', v_code3);
|
||||
ELSE
|
||||
SET v_code2 = CAST(v_code3 AS CHAR);
|
||||
END IF;
|
||||
|
||||
SET v_billno = CONCAT(LEFT(v_billno, LENGTH(v_billno) - 3), v_code2);
|
||||
-- Check last 2 digits
|
||||
ELSEIF REGEXP_SUBSTR(v_billno, '[0-9]{2}$') IS NOT NULL THEN
|
||||
SET v_code1 = RIGHT(v_billno, 2);
|
||||
SET v_code3 = CAST(v_code1 AS UNSIGNED) + 1;
|
||||
|
||||
IF v_code3 < 10 THEN
|
||||
SET v_code2 = CONCAT('0', v_code3);
|
||||
ELSE
|
||||
SET v_code2 = CAST(v_code3 AS CHAR);
|
||||
END IF;
|
||||
|
||||
SET v_billno = CONCAT(LEFT(v_billno, LENGTH(v_billno) - 2), v_code2);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
RETURN v_billno;
|
||||
END //
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user