# Prog. Version..: '5.00.04-07.12.21(00009)' #
# Pattern name...: cxxi901.4gl
# Descriptions...: ●職工福利委員會公告資料維護作業●
# Date & Author..: 2011/01/05 By Jeffrey
# Modify.........:
DATABASE ds
GLOBALS "../../../tiptop/config/top.global"
#模組變數(Module Variables)
DEFINE g_votea RECORD LIKE tc_votea_file.*, # (單頭)
g_votea_t RECORD LIKE tc_votea_file.*, # (舊值)
g_votea_o RECORD LIKE tc_votea_file.*, # (舊值)
g_votea01_t LIKE tc_votea_file.tc_votea01, # (舊值)
g_votea_rowid LIKE type_file.chr18, #ROWID
g_t1 LIKE oay_file.oayslip, #MOD-540182 #No.FUN-680136 VARCHAR(5)
g_sheet LIKE oay_file.oayslip, #No.FUN-680136 VARCHAR(5) #單別 (沿用)
g_ydate LIKE type_file.dat, #No.FUN-680136 DATE #單據日期(沿用)
g_voteb DYNAMIC ARRAY OF RECORD #程式變數(Program Variables)
tc_voteb02 LIKE tc_voteb_file.tc_voteb02, #公告項次
tc_voteb03 LIKE tc_voteb_file.tc_voteb03, #公告細項主旨
tc_voteb04 LIKE tc_voteb_file.tc_voteb04, #URL連結網址
tc_votebacti LIKE tc_voteb_file.tc_votebacti, #資料有效碼
tc_votebuser LIKE tc_voteb_file.tc_votebuser, #資料建立者
tc_votebmodu LIKE tc_voteb_file.tc_votebmodu, #最近資料修改者
tc_votebdate LIKE tc_voteb_file.tc_votebdate #最近修改日期
END RECORD,
g_voteb_t RECORD #程式變數 (舊值)
tc_voteb02 LIKE tc_voteb_file.tc_voteb02, #公告項次
tc_voteb03 LIKE tc_voteb_file.tc_voteb03, #公告細項主旨
tc_voteb04 LIKE tc_voteb_file.tc_voteb04, #URL連結網址
tc_votebacti LIKE tc_voteb_file.tc_votebacti, #資料有效碼
tc_votebuser LIKE tc_voteb_file.tc_votebuser, #資料建立者
tc_votebmodu LIKE tc_voteb_file.tc_votebmodu, #最近資料修改者
tc_votebdate LIKE tc_voteb_file.tc_votebdate #最近修改日期
END RECORD,
g_voteb_o RECORD #程式變數 (舊值)
tc_voteb02 LIKE tc_voteb_file.tc_voteb02, #公告項次
tc_voteb03 LIKE tc_voteb_file.tc_voteb03, #公告細項主旨
tc_voteb04 LIKE tc_voteb_file.tc_voteb04, #URL連結網址
tc_votebacti LIKE tc_voteb_file.tc_votebacti, #資料有效碼
tc_votebuser LIKE tc_voteb_file.tc_votebuser, #資料建立者
tc_votebmodu LIKE tc_voteb_file.tc_votebmodu, #最近資料修改者
tc_votebdate LIKE tc_voteb_file.tc_votebdate #最近修改日期
END RECORD,
g_sql STRING, #CURSOR暫存 TQC-5B0183
g_wc STRING, #單頭CONSTRUCT結果
g_wc2 STRING, #單身CONSTRUCT結果
g_rec_b LIKE type_file.num5, #單身筆數 #No.FUN-680136 SMALLINT
l_ac LIKE type_file.num5 #目前處理的ARRAY CNT #No.FUN-680136 SMALLINT
DEFINE p_row,p_col LIKE type_file.num5 #No.FUN-680136 SMALLINT
DEFINE g_gec07 LIKE gec_file.gec07 #FUN-550019
DEFINE g_forupd_sql STRING #SELECT ... FOR UPDATE NOWAIT NOWAIT SQL
DEFINE g_before_input_done LIKE type_file.num5 #No.FUN-680136 SMALLINT
DEFINE g_chr LIKE type_file.chr1 #No.FUN-680136 VARCHAR(1)
DEFINE g_cnt LIKE type_file.num10 #No.FUN-680136 INTEGER
DEFINE g_i LIKE type_file.num5 #count/index for any purpose #No.FUN-680136 SMALLINT
DEFINE g_msg LIKE ze_file.ze03 #No.FUN-680136 VARCHAR(72)
DEFINE g_curs_index LIKE type_file.num10 #No.FUN-680136 INTEGER
DEFINE g_row_count LIKE type_file.num10 #總筆數 #No.FUN-680136 INTEGER
DEFINE g_jump LIKE type_file.num10 #查詢指定的筆數 #No.FUN-680136 INTEGER
DEFINE mi_no_ask LIKE type_file.num5 #是否開啟指定筆視窗 #No.FUN-680136 SMALLINT #No:FUN-6A0067
DEFINE g_argv1 LIKE tc_votea_file.tc_votea01 #No.FUN-680136 VARCHAR(16) #單號 #TQC-630074
DEFINE g_argv2 STRING #指定執行的功能 #TQC-630074
DEFINE g_argv3 STRING #No:FUN-670099
#No.FUN-710091 --begin
DEFINE l_table STRING
DEFINE g_str STRING
DEFINE g_chr2 LIKE type_file.chr1 #No.FUN-680136 VARCHAR(1)
DEFINE g_chr3 LIKE type_file.chr1 #FUN-580120 #No.FUN-680136 VARCHAR(1)
#No.FUN-710091 --end
#主程式開始
MAIN
DEFINE l_time LIKE type_file.chr8 #計算被使用時間 #No.FUN-680136 VARCHAR(8)
#No:FUN-710055 --start--
OPTIONS #改變一些系統預設值
FORM LINE FIRST + 2, #畫面開始的位置
MESSAGE LINE LAST, #訊息顯示的位置
PROMPT LINE LAST, #提示訊息的位置
INPUT NO WRAP #輸入的方式: 不打轉
DEFER INTERRUPT #擷取中斷鍵, 由程式處理
#No:FUN-710055 ---end---
IF (NOT cl_user()) THEN
EXIT PROGRAM
END IF
WHENEVER ERROR CALL cl_err_msg_log
IF (NOT cl_setup("CXX")) THEN
EXIT PROGRAM
END IF
LET g_argv1=ARG_VAL(1) #TQC-630074
LET g_argv2=ARG_VAL(2) #TQC-630074
LET g_argv3=ARG_VAL(3) #TQC-630074
#No.FUN-710091 --begin
LET g_sql="tc_votea01.tc_votea_file.tc_votea01,",
"tc_votea02.tc_votea_file.tc_votea02,",
"tc_votea03.tc_votea_file.tc_votea03,",
"tc_voteb02.tc_voteb_file.tc_voteb02,",
"tc_voteb03.tc_voteb_file.tc_voteb03,",
"tc_voteb04.tc_voteb_file.tc_voteb04"
LET l_table = cl_prt_temptable('cxxi901',g_sql) CLIPPED
IF l_table = -1 THEN EXIT PROGRAM END IF
#No.FUN-710091 --end
CALL cl_used(g_prog,l_time,1) #計算使用時間 (進入時間) #MOD-580088
RETURNING l_time
LET g_forupd_sql = "SELECT * FROM tc_votea_file WHERE ROWID = ? FOR UPDATE NOWAIT"
DECLARE i901_cl CURSOR FROM g_forupd_sql
LET p_row = 1 LET p_col = 3
OPEN WINDOW i901_w AT p_row,p_col WITH FORM "cxx/42f/cxxi901"
ATTRIBUTE (STYLE = g_win_style CLIPPED) #No:FUN-580092 HCN
CALL cl_set_locale_frm_name("cxxi901") #No:FUN-670099
LET g_pdate = g_today #No.FUN-710091
CALL cl_ui_init()
LET g_ydate = NULL
CALL i901_menu()
CLOSE WINDOW i901_w #結束畫面
CALL cl_used(g_prog,l_time,2) #計算使用時間 (退出時間) #MOD-580088
RETURNING l_time
END MAIN
#QBE 查詢資料
FUNCTION i901_cs()
DEFINE lc_qbe_sn LIKE gbm_file.gbm01 #No:FUN-580031 HCN
CLEAR FORM
CALL g_voteb.clear()
#TQC-630074
IF NOT cl_null(g_argv1) THEN
LET g_wc = " tc_votea01 = '",g_argv1,"'" #FUN-580120
ELSE
CALL cl_set_head_visible("","YES") #No.FUN-6B0032
INITIALIZE g_votea.* TO NULL #No.FUN-750051
CONSTRUCT BY NAME g_wc ON tc_votea01,tc_votea02,tc_votea03,
tc_voteauser,tc_voteamodu,tc_voteadate,tc_voteaacti,tc_voteaconf
#No:FUN-580031 --start-- HCN
BEFORE CONSTRUCT
CALL cl_qbe_init()
#No:FUN-580031 --end-- HCN
ON ACTION controlp
CASE
WHEN INFIELD(tc_votea01) #詢價單號 #MOD-4A0252
CALL cl_init_qry_var()
LET g_qryparam.state = 'c'
LET g_qryparam.form ="q_votea"
LET g_qryparam.where = " 1=1 "
CALL cl_create_qry() RETURNING g_qryparam.multiret
DISPLAY g_qryparam.multiret TO tc_votea01
NEXT FIELD tc_votea01
OTHERWISE EXIT CASE
END CASE
ON IDLE g_idle_seconds
CALL cl_on_idle()
CONTINUE CONSTRUCT
ON ACTION about #MOD-4C0121
CALL cl_about() #MOD-4C0121
ON ACTION help #MOD-4C0121
CALL cl_show_help() #MOD-4C0121
ON ACTION controlg #MOD-4C0121
CALL cl_cmdask() #MOD-4C0121
#No:FUN-580031 --start-- HCN
ON ACTION qbe_select
CALL cl_qbe_list() RETURNING lc_qbe_sn
CALL cl_qbe_display_condition(lc_qbe_sn)
#No:FUN-580031 --end-- HCN
END CONSTRUCT
IF INT_FLAG THEN
RETURN
END IF
END IF
#END TQC-630074
# 資料權限的檢查
# IF g_priv2='4' THEN #只能使用自己的資料
# LET g_wc = g_wc clipped," AND tc_voteauser = '",g_user,"'"
# END IF
# IF g_priv3='4' THEN #只能使用相同群的資料
# LET g_wc = g_wc clipped," AND tc_voteagrup MATCHES '",g_grup CLIPPED,"*'"
# END IF
# IF g_priv3 MATCHES "[5678]" THEN #TQC-5C0134群組權限
# LET g_wc = g_wc clipped," AND tc_voteagrup IN ",cl_chk_tgrup_list()
# END IF
#start FUN-580035
# IF g_priv3 MATCHES '[567]' THEN #只能使用相同群組的資料
# LET g_wc = g_wc clipped," AND tc_voteagrup IN ",cl_get_grup_str(g_grup)
# END IF
#end FUN-580035
#TQC-630074
IF NOT cl_null(g_argv1) THEN
LET g_wc2 = ' 1=1'
ELSE
CONSTRUCT g_wc2 ON tc_voteb02,tc_voteb03,tc_voteb04,tc_votebacti,tc_votebuser,tc_votebmodu,tc_votebdate #螢幕上取單身條件
FROM s_voteb[1].tc_voteb02,s_voteb[1].tc_voteb03,s_voteb[1].tc_voteb04,
s_voteb[1].tc_votebacti,s_voteb[1].tc_votebuser,s_voteb[1].tc_votebmodu,s_voteb[1].tc_votebdate
#No:FUN-580031 --start-- HCN
BEFORE CONSTRUCT
CALL cl_qbe_display_condition(lc_qbe_sn)
#No:FUN-580031 --end-- HCN
#-----No:FUN-670099-----
ON ACTION CONTROLP
CASE
#FUN-650191--add--begin
WHEN INFIELD(tc_voteb03) #
CALL cl_init_qry_var()
LET g_qryparam.state = 'c'
LET g_qryparam.form ="q_voteb"
CALL cl_create_qry() RETURNING g_qryparam.multiret
DISPLAY g_qryparam.multiret TO tc_voteb03
NEXT FIELD tc_voteb03
OTHERWISE EXIT CASE
#FUN-650191 add--end
END CASE
#-----No:FUN-670099 END-----
ON IDLE g_idle_seconds
CALL cl_on_idle()
CONTINUE CONSTRUCT
ON ACTION about #MOD-4C0121
CALL cl_about() #MOD-4C0121
ON ACTION help #MOD-4C0121
CALL cl_show_help() #MOD-4C0121
ON ACTION controlg #MOD-4C0121
CALL cl_cmdask() #MOD-4C0121
#No:FUN-580031 --start-- HCN
ON ACTION qbe_save
CALL cl_qbe_save()
#No:FUN-580031 --end-- HCN
END CONSTRUCT
IF INT_FLAG THEN
RETURN
END IF
END IF
#END TQC-630074
IF g_wc2 = " 1=1" THEN # 若單身未輸入條件
LET g_sql = "SELECT ROWID, tc_votea01 FROM tc_votea_file ",
" WHERE ", g_wc CLIPPED,
" ORDER BY 2"
ELSE # 若單身有輸入條件
LET g_sql = "SELECT UNIQUE tc_votea_file.ROWID, tc_votea01 ",
" FROM tc_votea_file, tc_voteb_file ",
" WHERE tc_votea01 = tc_voteb01",
" AND ", g_wc CLIPPED, " AND ",g_wc2 CLIPPED,
" ORDER BY 2"
END IF
PREPARE i901_prepare FROM g_sql
DECLARE i901_cs #SCROLL CURSOR
SCROLL CURSOR WITH HOLD FOR i901_prepare
IF g_wc2 = " 1=1" THEN # 取合乎條件筆數
LET g_sql="SELECT COUNT(*) FROM tc_votea_file WHERE ",g_wc CLIPPED
ELSE
LET g_sql="SELECT COUNT(DISTINCT tc_votea01) FROM tc_votea_file,tc_voteb_file WHERE ",
"tc_votea01 = tc_voteb01 AND ",g_wc CLIPPED," AND ",g_wc2 CLIPPED
END IF
PREPARE i901_precount FROM g_sql
DECLARE i901_count CURSOR FOR i901_precount
END FUNCTION
FUNCTION i901_menu()
WHILE TRUE
CALL i901_bp("G")
CASE g_action_choice
WHEN "insert"
IF cl_chk_act_auth() THEN
CALL i901_a()
END IF
WHEN "query"
IF cl_chk_act_auth() THEN
CALL i901_q()
END IF
WHEN "delete"
IF cl_chk_act_auth() THEN
CALL i901_r()
END IF
WHEN "modify"
IF cl_chk_act_auth() THEN
CALL i901_u()
END IF
WHEN "invalid"
IF cl_chk_act_auth() THEN
CALL i901_x()
END IF
WHEN "reproduce"
IF cl_chk_act_auth() THEN
CALL i901_copy()
END IF
WHEN "detail"
IF cl_chk_act_auth() THEN
CALL i901_b()
ELSE
LET g_action_choice = NULL
END IF
WHEN "output"
IF cl_chk_act_auth() THEN
CALL i901_out()
END IF
WHEN "help"
CALL cl_show_help()
WHEN "exit"
EXIT WHILE
WHEN "controlg"
CALL cl_cmdask()
WHEN "confirm" #確認
IF cl_chk_act_auth() THEN
CALL i901_y_chk() #CALL 原確認的 check 段
IF g_success = "Y" THEN
CALL i901_y_upd() #CALL 原確認的 update 段
END IF
END IF
WHEN "undo_confirm"
IF cl_chk_act_auth() THEN
CALL i901_z()
END IF
WHEN "void"
IF cl_chk_act_auth() THEN
CALL i901_x()
END IF
WHEN "exporttoexcel" #FUN-4B0025
IF cl_chk_act_auth() THEN
CALL cl_export_to_excel(ui.Interface.getRootNode(),base.TypeInfo.create(g_voteb),'','')
END IF
#No:FUN-6A0162-------add--------str----
WHEN "related_document" #相關文件
IF cl_chk_act_auth() THEN
IF g_votea.tc_votea01 IS NOT NULL THEN
LET g_doc.column1 = "tc_votea01"
LET g_doc.value1 = g_votea.tc_votea01
CALL cl_doc()
END IF
END IF
#No:FUN-6A0162-------add--------end----
END CASE
END WHILE
END FUNCTION
FUNCTION i901_bp(p_ud)
DEFINE p_ud LIKE type_file.chr1 #No.FUN-680136 VARCHAR(1)
IF p_ud <> "G" OR g_action_choice = "detail" THEN
RETURN
END IF
LET g_action_choice = " "
CALL cl_set_act_visible("accept,cancel", FALSE)
DISPLAY ARRAY g_voteb TO s_voteb.* ATTRIBUTE(COUNT=g_rec_b,UNBUFFERED)
BEFORE DISPLAY
CALL cl_navigator_setting( g_curs_index, g_row_count )
BEFORE ROW
LET l_ac = ARR_CURR()
CALL cl_show_fld_cont() #No:FUN-550037 hmf
ON ACTION insert
LET g_action_choice="insert"
EXIT DISPLAY
ON ACTION query
LET g_action_choice="query"
EXIT DISPLAY
ON ACTION delete
LET g_action_choice="delete"
EXIT DISPLAY
ON ACTION modify
LET g_action_choice="modify"
EXIT DISPLAY
ON ACTION first
CALL i901_fetch('F')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION previous
CALL i901_fetch('P')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION jump
CALL i901_fetch('/')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION next
CALL i901_fetch('N')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION last
CALL i901_fetch('L')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION invalid
LET g_action_choice="invalid"
EXIT DISPLAY
ON ACTION reproduce
LET g_action_choice="reproduce"
EXIT DISPLAY
ON ACTION detail
LET g_action_choice="detail"
LET l_ac = 1
EXIT DISPLAY
ON ACTION output
LET g_action_choice="output"
EXIT DISPLAY
ON ACTION help
LET g_action_choice="help"
EXIT DISPLAY
ON ACTION locale
CALL cl_dynamic_locale()
CALL cl_show_fld_cont() #No:FUN-550037 hmf
ON ACTION exit
LET g_action_choice="exit"
EXIT DISPLAY
ON ACTION controlg
LET g_action_choice="controlg"
EXIT DISPLAY
#@ ON ACTION 確認
ON ACTION confirm
LET g_action_choice="confirm"
EXIT DISPLAY
#@ ON ACTION 取消確認
ON ACTION undo_confirm
LET g_action_choice="undo_confirm"
EXIT DISPLAY
#@ ON ACTION 作廢
ON ACTION void
LET g_action_choice="void"
EXIT DISPLAY
ON ACTION accept
LET g_action_choice="detail"
LET l_ac = ARR_CURR()
EXIT DISPLAY
ON ACTION cancel
LET INT_FLAG=FALSE #MOD-570244 mars
LET g_action_choice="exit"
EXIT DISPLAY
ON IDLE g_idle_seconds
CALL cl_on_idle()
CONTINUE DISPLAY
ON ACTION about #MOD-4C0121
CALL cl_about() #MOD-4C0121
ON ACTION exporttoexcel #FUN-4B0025
LET g_action_choice = 'exporttoexcel'
EXIT DISPLAY
# No:FUN-530067 --start--
AFTER DISPLAY
CONTINUE DISPLAY
# No:FUN-530067 ---end---
ON ACTION controls #No.FUN-6B0032
CALL cl_set_head_visible("","AUTO") #No.FUN-6B0032
ON ACTION related_document #No:FUN-6A0162 相關文件
LET g_action_choice="related_document"
EXIT DISPLAY
END DISPLAY
CALL cl_set_act_visible("accept,cancel", TRUE)
END FUNCTION
全站熱搜