#start FUN-640063 add
FUNCTION i901_bp_refresh()
DISPLAY ARRAY g_voteb TO s_voteb.* ATTRIBUTE(COUNT=g_rec_b,UNBUFFERED)
BEFORE DISPLAY
EXIT DISPLAY
ON IDLE g_idle_seconds
CALL cl_on_idle()
CONTINUE DISPLAY
END DISPLAY
END FUNCTION
#end FUN-640063 add
FUNCTION i901_a()
DEFINE li_result LIKE type_file.num5 #No.FUN-680136 SMALLINT
DEFINE ls_doc STRING
DEFINE li_inx LIKE type_file.num10 #No.FUN-680136 INTEGER
DEFINE l_newno LIKE tc_votea_file.tc_votea01
DEFINE l_sql STRING
MESSAGE ""
CLEAR FORM
CALL g_voteb.clear()
LET g_wc = NULL #MOD-530329
LET g_wc2= NULL #MOD-530329
IF s_shut(0) THEN
RETURN
END IF
INITIALIZE g_votea.* LIKE tc_votea_file.* #DEFAULT 設定
LET g_votea01_t = NULL
IF g_ydate IS NULL THEN
LET g_votea.tc_votea01 = NULL
LET g_votea.tc_voteadate = g_today
ELSE #使用上筆資料值
LET g_votea.tc_votea01 = g_sheet #採購詢價單別
LET g_votea.tc_voteadate = g_ydate #收貨日期
END IF
#預設值及將數值類變數清成零
LET g_votea_t.* = g_votea.*
LET g_votea_o.* = g_votea.*
CALL cl_opmsg('a')
WHILE TRUE
LET g_votea.tc_voteauser = g_user
LET g_votea.tc_voteamodu = g_user
LET g_votea.tc_voteadate = g_today
LET g_votea.tc_voteaacti = 'Y' #資料有效
LET g_votea.tc_voteaconf = 'N' #資料有效
CALL i901_i("a") #輸入單頭
IF INT_FLAG THEN #使用者不玩了
INITIALIZE g_votea.* TO NULL
LET INT_FLAG = 0
CALL cl_err('',9001,0)
EXIT WHILE
END IF
IF cl_null(g_votea.tc_votea01) THEN # KEY 不可空白
CONTINUE WHILE
END IF
#輸入後, 若該單據需自動編號, 並且其單號為空白, 則自動賦予單號
BEGIN WORK
#No:MOD-540182 --start--
CALL s_auto_assign_no("cxx",g_votea.tc_votea01,g_votea.tc_voteadate,"","tc_votea_file","tc_votea01","","","") RETURNING li_result,g_votea.tc_votea01
IF (NOT li_result) THEN
CONTINUE WHILE
END IF
MESSAGE g_votea.tc_votea01
LET l_sql =" SELECT CASE WHEN sno < 10 THEN substr('",g_votea.tc_votea01 CLIPPED,"',1,12)||'00'||to_char(sno) ",
" WHEN sno > 10 AND sno < 100 THEN substr('",g_votea.tc_votea01 CLIPPED,"',1,12)|| '0'||to_char(sno) ",
" ELSE substr('",g_votea.tc_votea01 CLIPPED,"',1,12)||to_char(sno) ",
" END sno ",
" FROM ( ",
" SELECT TO_NUMBER(SUBSTR(NVL(MAX(tc_votea01),'XPUBX-'||to_char(sysdate,'yymmdd')||'000'),-3,3))+1 sno ",
" FROM ds.tc_votea_file WHERE tc_votea01 LIKE substr('",g_votea.tc_votea01 CLIPPED,"',1,12)||'%' )"
#MESSAGE l_sql
PREPARE i901_sno FROM l_sql # RUNTIME 編譯
IF STATUS THEN CALL cl_err('i901_sno',STATUS,0) END IF
#end No:FUN-550019
DECLARE i901_cs_sno # CURSOR
CURSOR FOR i901_sno
FOREACH i901_cs_sno INTO l_newno
IF SQLCA.sqlcode THEN
CALL cl_err('foreach:',SQLCA.sqlcode,1)
EXIT FOREACH
END IF
END FOREACH
MESSAGE l_newno
LET g_votea.tc_votea01 = l_newno
DISPLAY BY NAME g_votea.tc_votea01
INSERT INTO tc_votea_file VALUES (g_votea.*)
LET g_ydate = g_votea.tc_voteadate #備份上一筆日期
#No:MOD-540182 --start--
#備份上一筆單別
CALL s_get_doc_no(g_votea.tc_votea01) RETURNING g_sheet
#No:MOD-540182 ---end---
IF SQLCA.SQLCODE THEN #置入資料庫不成功
ROLLBACK WORK #No:7857
CALL cl_err3("ins","tc_votea_file",g_votea.tc_votea01,"",SQLCA.SQLCODE,"","",1) #No.FUN-660129
CONTINUE WHILE
ELSE
COMMIT WORK #No:7857
END IF
SELECT ROWID INTO g_votea_rowid FROM tc_votea_file
WHERE tc_votea01 = g_votea.tc_votea01
LET g_votea01_t = g_votea.tc_votea01 #保留舊值
LET g_votea_t.* = g_votea.*
LET g_votea_o.* = g_votea.*
CALL g_voteb.clear()
LET g_rec_b = 0 #No:MOD-490280
CALL i901_b() #輸入單身
EXIT WHILE
END WHILE
END FUNCTION
FUNCTION i901_u()
IF s_shut(0) THEN
RETURN
END IF
IF g_votea.tc_votea01 IS NULL THEN # KEY 不可為空白
CALL cl_err('',-400,0)
RETURN
END IF
SELECT * INTO g_votea.* FROM tc_votea_file
WHERE tc_votea01=g_votea.tc_votea01
IF g_votea.tc_voteaacti ='N' THEN #檢查資料是否為無效
CALL cl_err(g_votea.tc_votea01,'mfg1000',0)
RETURN
END IF
MESSAGE ""
CALL cl_opmsg('u')
LET g_votea01_t = g_votea.tc_votea01
BEGIN WORK
OPEN i901_cl USING g_votea_rowid
IF STATUS THEN
CALL cl_err("OPEN i901_cl:", STATUS, 1)
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
FETCH i901_cl INTO g_votea.* # 鎖住將被更改或取消的資料
IF SQLCA.SQLCODE THEN
CALL cl_err(g_votea.tc_votea01,SQLCA.SQLCODE,0) # 資料被他人LOCK
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
CALL i901_show()
WHILE TRUE
LET g_votea01_t = g_votea.tc_votea01
LET g_votea_o.* = g_votea.*
LET g_votea.tc_voteamodu = g_user
LET g_votea.tc_voteadate = g_today
CALL i901_i("u") #欄位更改
IF INT_FLAG THEN
LET INT_FLAG = 0
LET g_votea.*=g_votea_t.*
CALL i901_show()
CALL cl_err('','9001',0)
EXIT WHILE
END IF
IF g_votea.tc_votea01 != g_votea01_t THEN # 更改單號
UPDATE tc_voteb_file SET voteb01 = g_votea.tc_votea01 WHERE tc_voteb01 = g_votea01_t
IF SQLCA.SQLCODE OR SQLCA.sqlerrd[3] = 0 THEN
CALL cl_err3("upd","tc_voteb_file",g_votea01_t,"",SQLCA.SQLCODE,"","voteb",1) #No.FUN-660129
CONTINUE WHILE
END IF
END IF
UPDATE tc_votea_file SET tc_votea_file.* = g_votea.* WHERE ROWID = g_votea_rowid
IF SQLCA.SQLCODE OR SQLCA.sqlerrd[3] = 0 THEN
CALL cl_err3("upd","tc_votea_file","","",SQLCA.SQLCODE,"","",1) #No.FUN-660129
CONTINUE WHILE
END IF
EXIT WHILE
END WHILE
CLOSE i901_cl
COMMIT WORK
#start FUN-640063 add
CALL i901_b_fill("1=1")
CALL i901_bp_refresh()
#end FUN-640063 add
END FUNCTION
FUNCTION i901_i(p_cmd)
DEFINE
l_n LIKE type_file.num5, #No.FUN-680136 SMALLINT
p_cmd LIKE type_file.chr1 #a:輸入 u:更改 #No.FUN-680136 VARCHAR(1)
DEFINE li_result LIKE type_file.num5 #No.FUN-680136 SMALLINT
IF s_shut(0) THEN
RETURN
END IF
DISPLAY BY NAME g_votea.tc_voteauser,g_votea.tc_voteamodu,g_votea.tc_voteadate,g_votea.tc_voteaacti,g_votea.tc_voteaconf
CALL cl_set_head_visible("","YES") #No.FUN-6B0032
INPUT BY NAME g_votea.tc_votea01,g_votea.tc_votea02,g_votea.tc_votea03 WITHOUT DEFAULTS
BEFORE INPUT
LET g_before_input_done = FALSE
CALL i901_set_entry(p_cmd)
CALL i901_set_no_entry(p_cmd)
LET g_before_input_done = TRUE
#No:MOD-540182 --start--
CALL cl_set_docno_format("tc_votea01")
#No:MOD-540182 ---end---
AFTER FIELD tc_votea01
#單號處理方式:
#在輸入單別後, 至單據性質檔中讀取該單別資料;
#若該單別不需自動編號, 則讓使用者自行輸入單號, 並檢查其是否重複
#若要自動編號, 則單號不用輸入, 直到單頭輸入完成後, 再行自動指定單號
#No:MOD-540182 --start--
IF NOT cl_null(g_votea.tc_votea01) THEN
CALL s_check_no("apm",g_votea.tc_votea01,g_votea01_t,"6","tc_votea_file","tc_votea01","") RETURNING li_result,g_votea.tc_votea01
DISPLAY BY NAME g_votea.tc_votea01
IF (NOT li_result) THEN
LET g_votea.tc_votea01=g_votea_o.tc_votea01
NEXT FIELD tc_votea01
END IF
# DISPLAY g_smy.smydesc TO smydesc
IF g_votea.tc_votea01 != g_votea01_t OR g_votea01_t IS NULL THEN
#進行輸入之單號檢查
#No:MOD-540182 --start-- 暫時先mark,因為此支程式裡面沒有改成動態編碼長度
# CALL s_mfgchno(g_votea.tc_votea01) RETURNING g_i,g_votea.tc_votea01
# DISPLAY BY NAME g_votea.tc_votea01
# IF NOT g_i THEN
# NEXT FIELD tc_votea01
# END IF
#No:MOD-540182 ---end---
# SELECT count(*) INTO l_n FROM tc_votea_file
# WHERE tc_votea01 = g_votea.tc_votea01
# IF l_n > 0 THEN #單據編號重複
# CALL cl_err(g_votea.tc_votea01,-239,0)
# LET g_votea.tc_votea01 = g_votea01_t
# DISPLAY BY NAME g_votea.tc_votea01
# NEXT FIELD tc_votea01
# END IF
END IF
END IF
#No:MOD-540182 ---end---
AFTER FIELD tc_votea02
IF cl_null(g_votea.tc_votea02) THEN
LET g_votea_o.tc_votea02 = g_votea.tc_votea02
NEXT FIELD tc_votea02
END IF
AFTER FIELD tc_votea03
#IF cl_null(g_votea.tc_votea03) THEN
# LET g_votea_o.tc_votea03 = g_votea.tc_votea03
# NEXT FIELD tc_votea03
#END IF
IF NOT cl_null(g_votea.tc_votea03) THEN
IF g_votea.tc_votea03 NOT MATCHES "[UR]" OR g_votea.tc_votea03 IS NULL
THEN CALL cl_err(g_votea.tc_votea03,'cxx1001',0)
LET g_votea_o.tc_votea03 = g_votea.tc_votea03
DISPLAY BY NAME g_votea.tc_votea03
NEXT FIELD tc_votea03
END IF
END IF
ON ACTION CONTROLZ
CALL cl_show_req_fields()
ON ACTION CONTROLG
CALL cl_cmdask()
ON ACTION CONTROLF #欄位說明
CALL cl_set_focus_form(ui.Interface.getRootNode()) RETURNING g_fld_name,g_frm_name #Add on 040913
CALL cl_fldhelp(g_frm_name,g_fld_name,g_lang) #Add on 040913
ON ACTION controlp
CASE
WHEN INFIELD(tc_votea01) #單據編號
LET g_t1 = s_get_doc_no(g_votea.tc_votea01) #No:MOD-540182
CALL q_smycust(FALSE,FALSE,g_t1,'APM','6') RETURNING g_t1 #TQC-670008
LET g_votea.tc_votea01 = g_t1 #No:MOD-540182
DISPLAY BY NAME g_votea.tc_votea01
CALL i901_tc_votea01('d')
NEXT FIELD tc_votea01
OTHERWISE EXIT CASE
END CASE
ON IDLE g_idle_seconds
CALL cl_on_idle()
CONTINUE INPUT
ON ACTION about #MOD-4C0121
CALL cl_about() #MOD-4C0121
ON ACTION help #MOD-4C0121
CALL cl_show_help() #MOD-4C0121
END INPUT
END FUNCTION
全站熱搜