# 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

 

 

arrow
arrow
    全站熱搜

    jeffreyhu 發表在 痞客邦 留言(0) 人氣()