四、T100双档开发,接上一章继续完善IT资产归还程序

编程入门 行业动态 更新时间:2024-10-07 12:19:42

四、T100双档开发,接上<a href=https://www.elefans.com/category/jswz/34/1766895.html style=一章继续完善IT资产归还程序"/>

四、T100双档开发,接上一章继续完善IT资产归还程序

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

T100双档开发之IT资产归还

  • 前言
  • 一、IT资产归还需求分析
  • 二、IT资产归还双档程序实体Table建立 r.t
  • 三、实体表的规格设置,告诉设计器你的格式 adzi150
  • 四、注册程式azzi900
  • 五、单据性质azzi600
  • 六、设置作业azzi910
  • 七、单别设置 aooi199
  • 八、单别设置 aooi200
  • 九、签出规格及程序
  • 十、规格(画面)生成
  • 十一、调整规格
  • 十二、上传规格,下载程式并调整
  • 十三、4gl源码


前言

继上一章的IT资产领用申请,我们继续开发IT资产归还双档程序。上一次的双档程序中我在单身添加了一个借用部门栏位,方便追踪记录资产情况。


一、IT资产归还需求分析

领用了一台笔记本电脑,我们用不到了,就需要做归还。
归还的时候需要注意的重要逻辑:
一:回写IT资产领用申请中的归还数量
二:回写IT资产维护作业中的归还状态

二、IT资产归还双档程序实体Table建立 r.t



三、实体表的规格设置,告诉设计器你的格式 adzi150

注意:我们添加了实体table,在设计器中更新一下基础资料


四、注册程式azzi900

五、单据性质azzi600

六、设置作业azzi910

七、单别设置 aooi199

八、单别设置 aooi200

九、签出规格及程序

十、规格(画面)生成

十一、调整规格

十二、上传规格,下载程式并调整

资产归还程序已经完成
开发时注意的地方:
1:回写资产借用栏位的时候需要加锁。
2:状态栏需要改写在每种状态下应该有那些状态按钮

十三、4gl源码

#該程式未解開Section, 採用最新樣板產出!
#該程式非freestyle程式!
{<section id="cint112.description" type="s" >}
#應用 a00 樣板自動產生(Version:3)
#+ Standard Version.....: SD版次:0001(1900-01-01 00:00:00), PR版次:
#+ Customerized Version.: SD版次:0001(2022-04-13 11:24:54), PR版次:
#+ Build......: 000002
#+ Filename...: cint112
#+ Description: IT資產歸還申請
#+ Creator....: 00000(2022-04-13 11:24:54)
#+ Modifier...: 00000 -SD/PR-{</section>}{<section id="cint112.global" type="s" >}
#應用 t01 樣板自動產生(Version:98)
#add-point:填寫註解說明 name="global.memo" 
#Memos
#end add-point
#add-point:填寫註解說明(客製用) name="global.memo_customerization"#end add-point
#(ver:86) ---start---
#add-point:填寫註解說明(行業用) name="global.memo_industry"#end add-point
#(ver:86) --- end ---IMPORT os
IMPORT util
IMPORT FGL lib_cl_dlg
IMPORT JAVA com.fourjs.fgl.lang.FglRecord   #(ver:87) add
#add-point:增加匯入項目 name="global.import"#end add-point SCHEMA ds GLOBALS "../../cfg/top_global.inc"
#(ver:87) ---add start---
GLOBALS
#單身匯excel POI變數
TYPE rec_arr_type           ARRAY [] OF com.fourjs.fgl.lang.FglRecord
DEFINE g_export_tag         DYNAMIC ARRAY OF rec_arr_type                 #畫面欄位數
DEFINE g_export_tabname     DYNAMIC ARRAY OF STRING                       #畫面名稱
END GLOBALS
#(ver:87) --- add end ---#add-point:增加匯入變數檔 name="global.inc"#end add-point#單頭 type 宣告
PRIVATE type type_g_iniduc_m        RECORDiniducdocno LIKE iniduc_t.iniducdocno, iniducdocdt LIKE iniduc_t.iniducdocdt, iniduc001 LIKE iniduc_t.iniduc001, iniducstus LIKE iniduc_t.iniducstus, iniducownid LIKE iniduc_t.iniducownid, iniducownid_desc LIKE type_t.chr80, iniducowndp LIKE iniduc_t.iniducowndp, iniducowndp_desc LIKE type_t.chr80, iniduccrtid LIKE iniduc_t.iniduccrtid, iniduccrtid_desc LIKE type_t.chr80, iniduccrtdp LIKE iniduc_t.iniduccrtdp, iniduccrtdp_desc LIKE type_t.chr80, iniduccrtdt LIKE iniduc_t.iniduccrtdt, iniducmodid LIKE iniduc_t.iniducmodid, iniducmodid_desc LIKE type_t.chr80, iniducmoddt LIKE iniduc_t.iniducmoddt, iniduccnfid LIKE iniduc_t.iniduccnfid, iniduccnfid_desc LIKE type_t.chr80, iniduccnfdt LIKE iniduc_t.iniduccnfdt, iniducpstid LIKE iniduc_t.iniducpstid, iniducpstid_desc LIKE type_t.chr80, iniducpstdt LIKE iniduc_t.iniducpstdtEND RECORD#單身 type 宣告
PRIVATE TYPE type_g_inieuc_d        RECORDinieucseq LIKE inieuc_t.inieucseq, inieuc001 LIKE inieuc_t.inieuc001, inieuc002 LIKE inieuc_t.inieuc002, inicuc001 LIKE inicuc_t.inicuc001, inicuc002 LIKE inicuc_t.inicuc002, inieuc003 LIKE inieuc_t.inieuc003END RECORDPRIVATE TYPE type_browser RECORDb_statepic     LIKE type_t.chr50,b_iniducdocno LIKE iniduc_t.iniducdocnoEND RECORD#add-point:自定義模組變數(Module Variable) (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="global.variable"#end add-point#模組變數(Module Variables)
DEFINE g_iniduc_m          type_g_iniduc_m
DEFINE g_iniduc_m_t        type_g_iniduc_m
DEFINE g_iniduc_m_o        type_g_iniduc_m
DEFINE g_iniduc_m_mask_o   type_g_iniduc_m #轉換遮罩前資料
DEFINE g_iniduc_m_mask_n   type_g_iniduc_m #轉換遮罩後資料DEFINE g_iniducdocno_t LIKE iniduc_t.iniducdocnoDEFINE g_inieuc_d          DYNAMIC ARRAY OF type_g_inieuc_d
DEFINE g_inieuc_d_t        type_g_inieuc_d
DEFINE g_inieuc_d_o        type_g_inieuc_d
DEFINE g_inieuc_d_mask_o   DYNAMIC ARRAY OF type_g_inieuc_d #轉換遮罩前資料
DEFINE g_inieuc_d_mask_n   DYNAMIC ARRAY OF type_g_inieuc_d #轉換遮罩後資料DEFINE g_browser         DYNAMIC ARRAY OF type_browser
DEFINE g_browser_f       DYNAMIC ARRAY OF type_browserDEFINE g_detail_multi_table_t    RECORDinicucdocno LIKE inicuc_t.inicucdocno,inicucseq LIKE inicuc_t.inicucseq,inicuc001 LIKE inicuc_t.inicuc001,inicuc002 LIKE inicuc_t.inicuc002END RECORDDEFINE g_wc                  STRING
DEFINE g_wc_t                STRING
DEFINE g_wc2                 STRING                          #單身CONSTRUCT結果
DEFINE g_wc2_table1          STRINGDEFINE g_wc2_extend          STRING
DEFINE g_wc_filter           STRING
DEFINE g_wc_filter_t         STRINGDEFINE g_sql                 STRING
DEFINE g_forupd_sql          STRING
DEFINE g_cnt                 LIKE type_t.num10
DEFINE g_current_idx         LIKE type_t.num10     
DEFINE g_jump                LIKE type_t.num10        
DEFINE g_no_ask              LIKE type_t.num5        
DEFINE g_rec_b               LIKE type_t.num10           
DEFINE l_ac                  LIKE type_t.num10    
DEFINE g_curr_diag           ui.Dialog                         #Current DialogDEFINE g_pagestart           LIKE type_t.num10                 
DEFINE gwin_curr             ui.Window                         #Current Window
DEFINE gfrm_curr             ui.Form                           #Current Form
DEFINE g_page_action         STRING                            #page action
DEFINE g_header_hidden       LIKE type_t.num5                  #隱藏單頭
DEFINE g_worksheet_hidden    LIKE type_t.num5                  #隱藏工作Panel
DEFINE g_page                STRING                            #第幾頁
DEFINE g_state               STRING       
DEFINE g_header_cnt          LIKE type_t.num10
DEFINE g_detail_cnt          LIKE type_t.num10                  #單身總筆數
DEFINE g_detail_idx          LIKE type_t.num10                  #單身目前所在筆數
DEFINE g_detail_idx_tmp      LIKE type_t.num10                  #單身目前所在筆數
DEFINE g_detail_idx2         LIKE type_t.num10                  #單身2目前所在筆數
DEFINE g_detail_idx_list     DYNAMIC ARRAY OF LIKE type_t.num10 #單身2目前所在筆數
DEFINE g_browser_cnt         LIKE type_t.num10                  #Browser總筆數
DEFINE g_browser_idx         LIKE type_t.num10                  #Browser目前所在筆數
DEFINE g_temp_idx            LIKE type_t.num10                  #Browser目前所在筆數(暫存用)
DEFINE g_order               STRING                             #查詢排序欄位DEFINE g_current_row         LIKE type_t.num10                  #Browser所在筆數
DEFINE g_current_sw          BOOLEAN                            #Browser所在筆數用開關
DEFINE g_current_page        LIKE type_t.num10                  #目前所在頁數
DEFINE g_insert              LIKE type_t.chr5                   #是否導到其他pageDEFINE g_ref_fields          DYNAMIC ARRAY OF VARCHAR(500) #ap_ref用陣列
DEFINE g_ref_vars            DYNAMIC ARRAY OF VARCHAR(500) #ap_ref用陣列
DEFINE g_rtn_fields          DYNAMIC ARRAY OF VARCHAR(500) #ap_ref用陣列
DEFINE gs_keys               DYNAMIC ARRAY OF VARCHAR(500) #同步資料用陣列
DEFINE gs_keys_bak           DYNAMIC ARRAY OF VARCHAR(500) #同步資料用陣列
DEFINE g_bfill               LIKE type_t.chr5              #是否刷新單身
DEFINE g_error_show          LIKE type_t.num5              #是否顯示筆數提示訊息
DEFINE g_master_insert       BOOLEAN                       #確認單頭資料是否寫入DEFINE g_wc_frozen           STRING                        #凍結欄位使用
DEFINE g_chk                 BOOLEAN                       #助記碼判斷用
DEFINE g_aw                  STRING                        #確定當下點擊的單身
DEFINE g_default             BOOLEAN                       #是否有外部參數查詢
DEFINE g_log1                STRING                        #log用
DEFINE g_log2                STRING                        #log用
DEFINE g_loc                 LIKE type_t.chr5              #判斷游標所在位置
DEFINE g_add_browse          STRING                        #新增填充用WC
DEFINE g_update              BOOLEAN                       #確定單頭/身是否異動過
DEFINE g_idx_group           om.SaxAttributes              #頁籤群組
DEFINE g_master_commit       LIKE type_t.chr1              #確認單頭是否修改過
DEFINE g_err_rec             LIKE type_t.chr1              #紀錄是否有錯誤   #161130-00056#add-point:自定義客戶專用模組變數(Module Variable) name="global.variable_customerization"#end add-point#add-point:傳入參數說明(global.argv) name="global.argv"#end add-point{</section>}{<section id="cint112.main" type="s" >}
#應用 a26 樣板自動產生(Version:7)
#+ 作業開始(主程式類型)
MAIN#add-point:main段define(客製用) name="main.define_customerization"#end add-point   #add-point:main段define(請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="main.define"#end add-point   OPTIONSINPUT NO WRAPDEFER INTERRUPT#設定SQL錯誤記錄方式 (模組內定義有效)WHENEVER ERROR CALL cl_err_msg_log#依模組進行系統初始化設定(系統設定)CALL cl_ap_init("cin","")#add-point:作業初始化 name="main.init"#end add-point#LOCK CURSOR (identifier)#add-point:SQL_define name="main.define_sql"#add by ky 20220414 startLET g_forupd_sql = " SELECT inicuc003 FROM inicuc_t WHERE inicucdocno = ? AND inicucseq = ? AND inicucent = ? AND inicucsite = ? FOR UPDATE"LET g_forupd_sql = cl_sql_forupd(g_forupd_sql)                #轉換不同資料庫語法LET g_forupd_sql = cl_sql_add_mask(g_forupd_sql)              #遮蔽特定資料DECLARE t112_cl01 CURSOR FROM g_forupd_sql                 # LOCK CURSOR#add by ky 20220414 end#end add-pointLET g_forupd_sql = " SELECT iniducdocno,iniducdocdt,iniduc001,iniducstus,iniducownid,'',iniducowndp, '',iniduccrtid,'',iniduccrtdp,'',iniduccrtdt,iniducmodid,'',iniducmoddt,iniduccnfid,'',iniduccnfdt, iniducpstid,'',iniducpstdt", " FROM iniduc_t"," WHERE iniducent= ? AND iniducsite= ? AND iniducdocno=? FOR UPDATE"#add-point:SQL_define name="main.after_define_sql"#end add-pointLET g_forupd_sql = cl_sql_forupd(g_forupd_sql)                #轉換不同資料庫語法LET g_forupd_sql = cl_sql_add_mask(g_forupd_sql)              #遮蔽特定資料DECLARE cint112_cl CURSOR FROM g_forupd_sql                 # LOCK CURSORLET g_sql = " SELECT DISTINCT t0.iniducdocno,t0.iniducdocdt,t0.iniduc001,t0.iniducstus,t0.iniducownid, t0.iniducowndp,t0.iniduccrtid,t0.iniduccrtdp,t0.iniduccrtdt,t0.iniducmodid,t0.iniducmoddt,t0.iniduccnfid, t0.iniduccnfdt,t0.iniducpstid,t0.iniducpstdt,t1.ooag011 ,t2.ooefl003 ,t3.ooag011 ,t4.ooefl003 , t5.ooag011 ,t6.ooag011 ,t7.ooag011"," FROM iniduc_t t0"," LEFT JOIN ooag_t t1 ON t1.ooagent="||g_enterprise||" AND t1.ooag001=t0.iniducownid  "," LEFT JOIN ooefl_t t2 ON t2.ooeflent="||g_enterprise||" AND t2.ooefl001=t0.iniducowndp AND t2.ooefl002='"||g_dlang||"' "," LEFT JOIN ooag_t t3 ON t3.ooagent="||g_enterprise||" AND t3.ooag001=t0.iniduccrtid  "," LEFT JOIN ooefl_t t4 ON t4.ooeflent="||g_enterprise||" AND t4.ooefl001=t0.iniduccrtdp AND t4.ooefl002='"||g_dlang||"' "," LEFT JOIN ooag_t t5 ON t5.ooagent="||g_enterprise||" AND t5.ooag001=t0.iniducmodid  "," LEFT JOIN ooag_t t6 ON t6.ooagent="||g_enterprise||" AND t6.ooag001=t0.iniduccnfid  "," LEFT JOIN ooag_t t7 ON t7.ooagent="||g_enterprise||" AND t7.ooag001=t0.iniducpstid  "," WHERE t0.iniducent = " ||g_enterprise|| " AND t0.iniducsite = ? AND t0.iniducdocno = ?"LET g_sql = cl_sql_add_mask(g_sql)              #遮蔽特定資料#add-point:SQL_define name="main.after_refresh_sql"#end add-pointPREPARE cint112_master_referesh FROM g_sqlIF g_bgjob = "Y" THEN#add-point:Service Call name="main.servicecall"#end add-pointELSE#畫面開啟 (identifier)OPEN WINDOW w_cint112 WITH FORM cl_ap_formpath("cin",g_code)#瀏覽頁簽資料初始化CALL cl_ui_init()#程式初始化CALL cint112_init()   #進入選單 Menu (="N")CALL cint112_ui_dialog() #add-point:畫面關閉前 name="main.before_close"#end add-point#畫面關閉CLOSE WINDOW w_cint112END IF CLOSE cint112_cl#add-point:作業離開前 name="main.exit"#end add-point#離開作業CALL cl_ap_exitprogram("0")
END MAIN{</section>}{<section id="cint112.init" type="s" >}
#+ 瀏覽頁簽資料初始化
PRIVATE FUNCTION cint112_init()#add-point:init段define(客製用) name="init.define_customerization"#end add-point    #add-point:init段define(請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="init.define"#end add-point   #add-point:Function前置處理  name="init.pre_function"#end add-pointLET g_bfill       = "Y"LET g_detail_idx  = 1 #第一層單身指標LET g_detail_idx2 = 1 #第二層單身指標#各個page指標LET g_detail_idx_list[1] = 1 LET g_error_show  = 1LET l_ac = 1 #單身指標LET g_err_rec = "N"   #161130-00056CALL cl_set_combo_scc_part('iniducstus','13','N,Y,S,Z')LET gwin_curr = ui.Window.getCurrent()  #取得現行畫面LET gfrm_curr = gwin_curr.getForm()     #取出物件化後的畫面物件#page群組LET g_idx_group = om.SaxAttributes.create()CALL g_idx_group.addAttribute("'1',","1")#add-point:畫面資料初始化 name="init.init"#end add-point#初始化搜尋條件CALL cint112_default_search()END FUNCTION{</section>}{<section id="cint112.ui_dialog" type="s" >}
#+ 功能選單
PRIVATE FUNCTION cint112_ui_dialog()#add-point:ui_dialog段define(客製用) name="ui_dialog.define_customerization"#end add-pointDEFINE li_idx     LIKE type_t.num10DEFINE ls_wc      STRINGDEFINE lb_first   BOOLEANDEFINE la_wc      DYNAMIC ARRAY OF RECORDtableid    STRING,wc         STRINGEND RECORDDEFINE la_param   RECORDprog       STRING,actionid   STRING,background LIKE type_t.chr1,param      DYNAMIC ARRAY OF STRINGEND RECORDDEFINE ls_js      STRINGDEFINE la_output  DYNAMIC ARRAY OF STRING   #報表元件鬆耦合使用DEFINE  l_cmd_token           base.StringTokenizer   #報表作業cmdrun使用 DEFINE  l_cmd_next            STRING                 #報表作業cmdrun使用DEFINE  l_cmd_cnt             LIKE type_t.num5       #報表作業cmdrun使用DEFINE  l_cmd_prog_arg        STRING                 #報表作業cmdrun使用DEFINE  l_cmd_arg             STRING                 #報表作業cmdrun使用#(ver:87) ---add start---DEFINE l_arr_len       INTEGERDEFINE l_arr_cnt       INTEGERDEFINE lb_get_type     LIKE type_t.chr20#(ver:87) --- add end ---#add-point:ui_dialog段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="ui_dialog.define"#end add-point#add-point:Function前置處理  name="ui_dialog.pre_function"#end add-pointCALL cl_set_act_visible("accept,cancel", FALSE)#action default動作#應用 a42 樣板自動產生(Version:3)#進入程式時預設執行的動作CASE g_actdefaultWHEN "insert"LET g_action_choice="insert"LET g_actdefault = ""IF cl_auth_chk_act("insert") THENCALL cint112_insert()#add-point:ON ACTION insert name="menu.default.insert"#END add-pointEND IF#add-point:action default自訂 name="ui_dialog.action_default"#end add-pointOTHERWISEEND CASELET lb_first = TRUE#add-point:ui_dialog段before dialog  name="ui_dialog.before_dialog"#end add-pointWHILE TRUE IF g_action_choice = "logistics" THEN#清除畫面及相關資料CLEAR FORMCALL g_browser.clear()       INITIALIZE g_iniduc_m.* TO NULLCALL g_inieuc_d.clear()LET g_wc  = ' 1=2'LET g_wc2 = ' 1=1'LET g_action_choice = ""CALL cint112_init()END IFDIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)DISPLAY ARRAY g_inieuc_d TO s_detail1.* ATTRIBUTES(COUNT=g_rec_b) #page1  BEFORE ROW#顯示單身筆數CALL cint112_idx_chk()#確定當下選擇的筆數LET l_ac = DIALOG.getCurrentRow("s_detail1")LET g_detail_idx = l_acLET g_detail_idx_list[1] = l_acCALL g_idx_group.addAttribute("'1',",l_ac)#add-point:page1, before row動作 name="ui_dialog.page1.before_row"#end add-pointBEFORE DISPLAY#如果一直都在單身1則控制筆數位置IF g_loc = 'm' THENCALL FGL_SET_ARR_CURR(g_idx_group.getValue("'1',"))END IFLET g_loc = 'm'LET l_ac = DIALOG.getCurrentRow("s_detail1")LET g_current_page = 1#顯示單身筆數CALL cint112_idx_chk()#add-point:page1自定義行為 name="ui_dialog.page1.before_display"#end add-point#自訂ACTION(detail_show,page_1)#add-point:page1自定義行為 name="ui_dialog.page1.action"#end add-pointEND DISPLAY#add-point:ui_dialog段自定義display array name="ui_dialog.more_displayarray"#end add-pointBEFORE DIALOGCALL cl_ap_code_set_action() #171110-00013#1 #先填充browser資料CALL cint112_browser_fill("")CALL cl_notice()CALL cl_navigator_setting(g_current_idx, g_detail_cnt)LET g_curr_diag = ui.DIALOG.getCurrent()LET g_current_sw = FALSE#回歸舊筆數位置 (回到當時異動的筆數)#確保g_current_idx位於正常區間內#小於,等於0則指到第1筆IF g_current_idx <= 0 THENLET g_current_idx = 1END IF#超過最大筆數則指到最後1筆IF g_current_idx > g_browser.getLength() THENLEt g_current_idx = g_browser.getLength()END IF LET g_current_sw = TRUELET g_current_row = g_current_idx #目前指標#有資料才進行fetchIF g_current_idx <> 0 THENCALL cint112_fetch('') # reload dataEND IF#LET g_detail_idx = 1CALL cint112_ui_detailshow() #Setting the current row #筆數顯示LET g_current_page = 1CALL cint112_idx_chk()CALL cl_ap_performance_cal()#add-point:ui_dialog段before_dialog2 name="ui_dialog.before_dialog2"#end add-point#add-point:ui_dialog段more_action name="ui_dialog.more_action"#end add-point#狀態碼切換ON ACTION statechangeLET g_action_choice = "statechange"CALL cint112_statechange()#根據資料狀態切換action狀態CALL cl_set_act_visible("statechange,modify,modify_detail,delete,reproduce", TRUE)CALL cint112_set_act_visible()   CALL cint112_set_act_no_visible()IF NOT (g_iniduc_m.iniducdocno IS NULL) THEN#組合條件LET g_add_browse = " iniducent = " ||g_enterprise|| " AND iniducsite = '" ||g_site|| "' AND"," iniducdocno = '", g_iniduc_m.iniducdocno, "' "#填到對應位置CALL cint112_browser_fill("")END IF#查詢方案選擇 ON ACTION queryplanselLET g_action_choice = "queryplan" #ver:81CALL cl_dlg_qryplan_select() RETURNING ls_wc#不是空條件才寫入g_wc跟重新找資料IF NOT cl_null(ls_wc) THENCALL util.JSON.parse(ls_wc, la_wc)INITIALIZE g_wc, g_wc2,g_wc2_table1,g_wc2_extend TO NULLFOR li_idx = 1 TO la_wc.getLength()CASEWHEN la_wc[li_idx].tableid = "iniduc_t" LET g_wc = la_wc[li_idx].wcWHEN la_wc[li_idx].tableid = "inieuc_t" LET g_wc2_table1 = la_wc[li_idx].wcWHEN la_wc[li_idx].tableid = "EXTENDWC"LET g_wc2_extend = la_wc[li_idx].wcEND CASEEND FORIF NOT cl_null(g_wc) OR NOT cl_null(g_wc2_table1) OR NOT cl_null(g_wc2_extend)THEN#組合g_wc2IF g_wc2_table1 <> " 1=1" AND NOT cl_null(g_wc2_table1) THENLET g_wc2 = g_wc2_table1END IFIF g_wc2_extend <> " 1=1" AND NOT cl_null(g_wc2_extend) THENLET g_wc2 = g_wc2 ," AND ", g_wc2_extendEND IFIF g_wc2.subString(1,5) = " AND " THENLET g_wc2 = g_wc2.subString(6,g_wc2.getLength())END IFEND IFCALL cint112_browser_fill("F")   #browser_fill()會將notice區塊清空END IF#查詢方案選擇ON ACTION qbe_selectLET g_action_choice = "queryplan" #ver:81CALL cl_qbe_list("m") RETURNING ls_wcIF NOT cl_null(ls_wc) THENCALL util.JSON.parse(ls_wc, la_wc)INITIALIZE g_wc, g_wc2,g_wc2_table1,g_wc2_extend TO NULLFOR li_idx = 1 TO la_wc.getLength()CASEWHEN la_wc[li_idx].tableid = "iniduc_t" LET g_wc = la_wc[li_idx].wcWHEN la_wc[li_idx].tableid = "inieuc_t" LET g_wc2_table1 = la_wc[li_idx].wcWHEN la_wc[li_idx].tableid = "EXTENDWC"LET g_wc2_extend = la_wc[li_idx].wcEND CASEEND FORIF NOT cl_null(g_wc) OR NOT cl_null(g_wc2_table1)OR NOT cl_null(g_wc2_extend)THENIF g_wc2_table1 <> " 1=1" AND NOT cl_null(g_wc2_table1) THENLET g_wc2 = g_wc2_table1END IFIF g_wc2_extend <> " 1=1" AND NOT cl_null(g_wc2_extend) THENLET g_wc2 = g_wc2 ," AND ", g_wc2_extendEND IFIF g_wc2.subString(1,5) = " AND " THENLET g_wc2 = g_wc2.subString(6,g_wc2.getLength())END IF#取得條件後需要重查、跳到結果第一筆資料的功能程式段CALL cint112_browser_fill("F")IF g_browser_cnt = 0 THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "-100" LET g_errparam.popup = TRUE CALL cl_err()CLEAR FORMELSECALL cint112_fetch("F")END IFEND IFEND IF#重新搜尋會將notice區塊清空,此處不可用EXIT DIALOG, SUBDIALOG重讀會導致部分變數消失ON ACTION firstLET g_action_choice = "fetch"CALL cint112_fetch('F')LET g_current_row = g_current_idxLET g_curr_diag = ui.DIALOG.getCurrent()CALL cint112_idx_chk()ON ACTION previousLET g_action_choice = "fetch"CALL cint112_fetch('P')LET g_current_row = g_current_idxLET g_curr_diag = ui.DIALOG.getCurrent()CALL cint112_idx_chk()ON ACTION jumpLET g_action_choice = "fetch"CALL cint112_fetch('/')LET g_current_row = g_current_idxLET g_curr_diag = ui.DIALOG.getCurrent()CALL cint112_idx_chk()ON ACTION nextLET g_action_choice = "fetch"CALL cint112_fetch('N')LET g_current_row = g_current_idxLET g_curr_diag = ui.DIALOG.getCurrent()CALL cint112_idx_chk()ON ACTION lastLET g_action_choice = "fetch"CALL cint112_fetch('L')LET g_current_row = g_current_idxLET g_curr_diag = ui.DIALOG.getCurrent()CALL cint112_idx_chk()#excel匯出功能          ON ACTION exporttoexcelLET g_action_choice="exporttoexcel"IF cl_auth_chk_act("exporttoexcel") THEN#(ver:87) ---start---#因應匯出excel規則調整,需同時符合新舊做法LET lb_get_type = cl_get_exporttoexcel_type()#add-point:ON ACTION exporttoexcel name="ui_dialog.exporttoexcel_type_change"#END add-pointDISPLAY "lb_get_type:",lb_get_typeCASEWHEN lb_get_type = "poi"   #使用poi樣板#browserCALL g_export_node.clear()IF g_main_hidden = 1 THENLET l_arr_len = g_browser.getLength()LET g_export_tabname[1] = "s_browse"LET g_export_tag[1] = rec_arr_type.create(l_arr_len)FOR l_arr_cnt = 1 TO l_arr_lenLET g_export_tag[1][l_arr_cnt] = g_browser[l_arr_cnt]END FOR#add-point:ON ACTION exporttoexcel name="menu.exporttoexcel_browser_poi"#END add-pointCALL cl_export_poi()#add-point:ON ACTION exporttoexcel name="menu.exporttoexcel_browser_after_poi"#END add-point#非browserELSELET l_arr_len = g_inieuc_d.getLength()LET g_export_tag[1] = rec_arr_type.create(l_arr_len)LET g_export_tabname[1] = "s_detail1"FOR l_arr_cnt = 1 TO l_arr_lenLET g_export_tag[1][l_arr_cnt] = g_inieuc_d[l_arr_cnt]END FOR#add-point:ON ACTION exporttoexcel name="menu.exporttoexcel_poi"#END add-pointCALL cl_export_to_excel_getpage()CALL cl_export_poi()#add-point:ON ACTION exporttoexcel name="menu.exporttoexcel_after_poi"#END add-pointEND IFOTHERWISE   #使用原始樣板#(ver:87) --- end ---#browserCALL g_export_node.clear()IF g_main_hidden = 1 THENLET g_export_node[1] = base.typeInfo.create(g_browser)LET g_export_id[1]   = "s_browse"#add-point:ON ACTION exporttoexcel name="menu.exporttoexcel_browser"   #(ver:80)#END add-pointCALL cl_export_to_excel()#add-point:ON ACTION exporttoexcel name="menu.exporttoexcel_browser_after"   #(ver:80)#END add-point#非browserELSELET g_export_node[1] = base.typeInfo.create(g_inieuc_d)LET g_export_id[1]   = "s_detail1"#add-point:ON ACTION exporttoexcel name="menu.exporttoexcel"#END add-pointCALL cl_export_to_excel_getpage()CALL cl_export_to_excel()#add-point:ON ACTION exporttoexcel name="menu.exporttoexcel_after"   #(ver:80)#END add-pointEND IFEND CASE   #(ver:87) addEND IFON ACTION closeLET INT_FLAG = FALSELET g_action_choice = "exit"EXIT DIALOGON ACTION exitLET g_action_choice = "exit"EXIT DIALOG#180226-00040 ---modify start---#180226-00040 --- modify end ---#單頭摺疊,可利用hot key "Alt-s"開啟/關閉單頭ON ACTION controls     IF g_header_hidden THENCALL gfrm_curr.setElementHidden("vb_master",0)CALL gfrm_curr.setElementImage("controls","small/arr-u.png")LET g_header_hidden = 0     #visibleELSECALL gfrm_curr.setElementHidden("vb_master",1)CALL gfrm_curr.setElementImage("controls","small/arr-d.png")LET g_header_hidden = 1     #hidden     END IF#應用 a43 樣板自動產生(Version:4)ON ACTION modifyLET g_action_choice="modify"IF cl_auth_chk_act("modify") THENLET g_aw = ''CALL cint112_modify()#add-point:ON ACTION modify name="menu.modify"#END add-pointEND IF#應用 a43 樣板自動產生(Version:4)ON ACTION modify_detailLET g_action_choice="modify_detail"IF cl_auth_chk_act("modify") THENLET g_aw = g_curr_diag.getCurrentItem()CALL cint112_modify()#add-point:ON ACTION modify_detail name="menu.modify_detail"#END add-pointEND IF#應用 a43 樣板自動產生(Version:4)ON ACTION deleteLET g_action_choice="delete"IF cl_auth_chk_act("delete") THENCALL cint112_delete()#add-point:ON ACTION delete name="menu.delete"#END add-pointEND IF#應用 a43 樣板自動產生(Version:4)ON ACTION insertLET g_action_choice="insert"IF cl_auth_chk_act("insert") THENCALL cint112_insert()#add-point:ON ACTION insert name="menu.insert"#END add-pointEND IF#應用 a43 樣板自動產生(Version:4)ON ACTION outputLET g_action_choice="output"IF cl_auth_chk_act("output") THEN#add-point:ON ACTION output name="menu.output"#END add-point&include "erp/cin/cint112_rep.4gl"#add-point:ON ACTION output.after name="menu.after_output"#END add-pointEND IF#應用 a43 樣板自動產生(Version:4)ON ACTION quickprintLET g_action_choice="quickprint"IF cl_auth_chk_act("quickprint") THEN#add-point:ON ACTION quickprint name="menu.quickprint"#END add-point&include "erp/cin/cint112_rep.4gl"#add-point:ON ACTION quickprint.after name="menu.after_quickprint"#END add-pointEND IF#應用 a43 樣板自動產生(Version:4)ON ACTION reproduceLET g_action_choice="reproduce"IF cl_auth_chk_act("reproduce") THENCALL cint112_reproduce()#add-point:ON ACTION reproduce name="menu.reproduce"#END add-pointEND IF#應用 a43 樣板自動產生(Version:4)ON ACTION queryLET g_action_choice="query"IF cl_auth_chk_act("query") THENCALL cint112_query()#add-point:ON ACTION query name="menu.query"#END add-point#應用 a59 樣板自動產生(Version:3)  CALL g_curr_diag.setCurrentRow("s_detail1",1)END IF#180611-00048#應用 a46 樣板自動產生(Version:3)#新增相關文件ON ACTION related_documentCALL cint112_set_pk_array()IF cl_auth_chk_act("related_document") THEN#add-point:ON ACTION related_document name="ui_dialog.dialog.related_document"#END add-pointCALL cl_doc()END IFON ACTION agendumCALL cint112_set_pk_array()#add-point:ON ACTION agendum name="ui_dialog.dialog.agendum"#END add-pointCALL cl_user_overview()CALL cl_user_overview_set_follow_pic()ON ACTION followupCALL cint112_set_pk_array()#add-point:ON ACTION followup name="ui_dialog.dialog.followup"#END add-pointCALL cl_user_overview_follow(g_iniduc_m.iniducdocdt)#主選單用ACTION&include "main_menu_exit_dialog.4gl"&include "relating_action.4gl"#交談指令共用ACTION&include "common_action.4gl" CONTINUE DIALOGEND DIALOG#(ver:79) ---add start---#add-point:ui_dialog段 after dialog name="ui_dialog.exit_dialog"#end add-point#(ver:79) --- add end ---IF g_action_choice = "exit" AND NOT cl_null(g_action_choice) THEN#add-point:ui_dialog段離開dialog前 name="ui_dialog.b_exit"#end add-pointEXIT WHILEEND IFEND WHILE    CALL cl_set_act_visible("accept,cancel", TRUE)END FUNCTION{</section>}{<section id="cint112.browser_fill" type="s" >}
#+ 瀏覽頁簽資料填充
PRIVATE FUNCTION cint112_browser_fill(ps_page_action)#add-point:browser_fill段define(客製用) name="browser_fill.define_customerization"#end add-point  DEFINE ps_page_action    STRINGDEFINE l_wc              STRINGDEFINE l_wc2             STRINGDEFINE l_sql             STRINGDEFINE l_sub_sql         STRINGDEFINE l_sql_rank        STRING#add-point:browser_fill段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="browser_fill.define"#end add-point    #add-point:Function前置處理 name="browser_fill.before_browser_fill"#end add-pointIF cl_null(g_wc) THENLET g_wc = " 1=1"END IFIF cl_null(g_wc2) THENLET g_wc2 = " 1=1"END IFLET l_wc  = g_wc.trim() LET l_wc2 = g_wc2.trim()#add-point:browser_fill,foreach前 name="browser_fill.before_foreach"#end add-pointIF g_wc2 <> " 1=1" THEN#單身有輸入搜尋條件                      LET l_sub_sql = " SELECT DISTINCT iniducdocno "," FROM iniduc_t "," "," LEFT JOIN inieuc_t ON inieucent = iniducent AND inieucsite = iniducsite AND iniducdocno = inieucdocno ", "  ",#add-point:browser_fill段sql(inieuc_t1) name="browser_fillt.join.}"#end add-point" ", " LEFT JOIN inicuc_t ON inicucent = "||g_enterprise||" AND inicucsite = '"||g_site||"' AND iniducdocno = inicucdocno AND inieucseq = inicucseq ", " WHERE iniducent = " ||g_enterprise|| " AND iniducsite = '" ||g_site|| "' AND inieucent = " ||g_enterprise|| " AND inieucsite = '" ||g_site|| "' AND ",l_wc, " AND ", l_wc2, cl_sql_add_filter("iniduc_t")ELSE#單身未輸入搜尋條件LET l_sub_sql = " SELECT DISTINCT iniducdocno "," FROM iniduc_t ", "  ","  "," WHERE iniducent = " ||g_enterprise|| " AND iniducsite = '" ||g_site|| "' AND ",l_wc CLIPPED, cl_sql_add_filter("iniduc_t")END IF#add-point:browser_fill,cnt wc name="browser_fillt_sqlwc"#end add-pointLET g_sql = " SELECT COUNT(1) FROM (",l_sub_sql,")"#add-point:browser_fill,count前 name="browser_fill.before_count"#end add-pointIF g_sql.getIndexOf(" 1=2",1) THENDISPLAY "INFO: 1=2 jumped!"ELSEPREPARE header_cnt_pre FROM g_sqlEXECUTE header_cnt_pre INTO g_browser_cnt   #總筆數FREE header_cnt_preEND IFIF g_browser_cnt > g_max_browse THENIF g_error_show = 1 THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = g_browser_cntLET g_errparam.code = 9035 LET g_errparam.popup = TRUE CALL cl_err()END IFLET g_browser_cnt = g_max_browseEND IFDISPLAY g_browser_cnt TO FORMONLY.b_count   #總筆數的顯示DISPLAY g_browser_cnt TO FORMONLY.h_count   #總筆數的顯示#根據行為確定資料填充位置及WCIF cl_null(g_add_browse) THEN#清除畫面CLEAR FORM                INITIALIZE g_iniduc_m.* TO NULLCALL g_inieuc_d.clear()        #add-point:browser_fill g_add_browse段額外處理 name="browser_fill.add_browse.other"#end add-point   CALL g_browser.clear()LET g_cnt = 1ELSELET l_wc  = g_add_browseLET l_wc2 = " 1=1" LET g_cnt = g_current_idxEND IF#依照t0.iniducdocno Browser欄位定義(取代原本bs_sql功能)#考量到單身可能下條件, 所以此處需join單身所有table#DISTINCT是為了避免在join時出現重複的資料(如果不加DISTINCT則須在程式中過濾)IF g_wc2 <> " 1=1" THEN#單身有輸入搜尋條件   LET g_sql = " SELECT DISTINCT t0.iniducstus,t0.iniducdocno "," FROM iniduc_t t0","  ","  LEFT JOIN inieuc_t ON inieucent = iniducent AND inieucsite = iniducsite AND iniducdocno = inieucdocno ", "  ", #add-point:browser_fill段sql(inieuc_t1) name="browser_fill.join.inieuc_t1"#end add-point" LEFT JOIN inicuc_t ON inicucent = "||g_enterprise||" AND inicucsite = '"||g_site||"' AND iniducdocno = inicucdocno AND inieucseq = inicucseq ", " WHERE t0.iniducent = " ||g_enterprise|| " AND t0.iniducsite = '" ||g_site|| "' AND ",l_wc," AND ",l_wc2, cl_sql_add_filter("iniduc_t")ELSE#單身無輸入搜尋條件   LET g_sql = " SELECT DISTINCT t0.iniducstus,t0.iniducdocno "," FROM iniduc_t t0","  "," WHERE t0.iniducent = " ||g_enterprise|| " AND t0.iniducsite = '" ||g_site|| "' AND ",l_wc, cl_sql_add_filter("iniduc_t")END IF#add-point:browser_fill,sql wc name="browser_fill.fill_sqlwc"#end add-pointLET g_sql = g_sql, " ORDER BY iniducdocno ",g_order#add-point:browser_fill,before_prepare name="browser_fill.before_prepare"#end add-point#LET g_sql = cl_sql_add_tabid(g_sql,"iniduc_t") #WC重組LET g_sql = cl_sql_add_mask(g_sql) #遮蔽特定資料IF g_sql.getIndexOf(" 1=2",1) THENDISPLAY "INFO: 1=2 jumped!"ELSEPREPARE browse_pre FROM g_sqlDECLARE browse_cur CURSOR FOR browse_pre#add-point:browser_fill段open cursor name="browser_fill.open"#end add-pointFOREACH browse_cur INTO g_browser[g_cnt].b_statepic,g_browser[g_cnt].b_iniducdocnoIF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "Foreach:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL cl_err()EXIT FOREACHEND IF#add-point:browser_fill段reference name="browser_fill.reference"#end add-point#應用 a24 樣板自動產生(Version:3)#browser顯示圖片CASE g_browser[g_cnt].b_statepicWHEN "N"LET g_browser[g_cnt].b_statepic = "stus/16/unconfirmed.png"WHEN "Y"LET g_browser[g_cnt].b_statepic = "stus/16/confirmed.png"WHEN "S"LET g_browser[g_cnt].b_statepic = "stus/16/posted.png"WHEN "Z"LET g_browser[g_cnt].b_statepic = "stus/16/unposted.png"END CASELET g_cnt = g_cnt + 1IF g_cnt > g_max_browse THENEXIT FOREACHEND IFEND FOREACHFREE browse_preEND IF#清空g_add_browse, 並指定指標位置IF NOT cl_null(g_add_browse) THENLET g_add_browse = ""CALL g_curr_diag.setCurrentRow("s_browse",g_current_idx)END IFIF cl_null(g_browser[g_cnt].b_iniducdocno) THENCALL g_browser.deleteElement(g_cnt)END IFLET g_header_cnt  = g_browser.getLength()LET g_browser_cnt = g_browser.getLength()#筆數顯示IF g_browser_cnt > 0 THENDISPLAY g_browser_idx TO FORMONLY.b_index #當下筆數DISPLAY g_browser_cnt TO FORMONLY.b_count #總筆數DISPLAY g_browser_idx TO FORMONLY.h_index #當下筆數DISPLAY g_browser_cnt TO FORMONLY.h_count #總筆數DISPLAY g_detail_idx  TO FORMONLY.idx     #單身當下筆數DISPLAY g_detail_cnt  TO FORMONLYt     #單身總筆數ELSEDISPLAY '' TO FORMONLY.b_index #當下筆數DISPLAY '' TO FORMONLY.b_count #總筆數DISPLAY '' TO FORMONLY.h_index #當下筆數DISPLAY '' TO FORMONLY.h_count #總筆數DISPLAY '' TO FORMONLY.idx     #單身當下筆數DISPLAY '' TO FORMONLYt     #單身總筆數END IFLET g_rec_b = g_cnt - 1LET g_detail_cnt = g_rec_bLET g_cnt = 0#若無資料則關閉相關功能IF g_browser_cnt = 0 THENCALL cl_set_act_visible("statechange,modify,modify_detail,delete,reproduce,mainhidden", FALSE)CALL cl_navigator_setting(0,0)ELSECALL cl_set_act_visible("mainhidden", TRUE)END IF#add-point:browser_fill段結束前 name="browser_fill.after"#end add-point   END FUNCTION{</section>}{<section id="cint112.ui_headershow" type="s" >}
#+ 單頭資料重新顯示
PRIVATE FUNCTION cint112_ui_headershow()#add-point:ui_headershow段define(客製用) name="ui_headershow.define_customerization"#end add-point  #add-point:ui_headershow段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="ui_headershow.define"#end add-point      #add-point:Function前置處理  name="ui_headershow.pre_function"#end add-pointLET g_iniduc_m.iniducdocno = g_browser[g_current_idx].b_iniducdocno   EXECUTE cint112_master_referesh USING g_site,g_iniduc_m.iniducdocno INTO g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt, g_iniduc_m.iniduc001,g_iniduc_m.iniducstus,g_iniduc_m.iniducownid,g_iniduc_m.iniducowndp,g_iniduc_m.iniduccrtid, g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt,g_iniduc_m.iniduccnfid, g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid,g_iniduc_m.iniducpstdt,g_iniduc_m.iniducownid_desc, g_iniduc_m.iniducowndp_desc,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp_desc,g_iniduc_m.iniducmodid_desc, g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniducpstid_descCALL cint112_iniduc_t_mask()CALL cint112_show()END FUNCTION{</section>}{<section id="cint112.ui_detailshow" type="s" >}
#+ 單身資料重新顯示
PRIVATE FUNCTION cint112_ui_detailshow()#add-point:ui_detailshow段define(客製用) name="ui_detailshow.define_customerization"#end add-point    #add-point:ui_detailshow段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="ui_detailshow.define"#end add-point    #add-point:Function前置處理 name="ui_detailshow.before"#end add-point    IF g_curr_diag IS NOT NULL THENCALL g_curr_diag.setCurrentRow("s_detail1",g_detail_idx)      END IF#add-point:ui_detailshow段after name="ui_detailshow.after"#end add-point    END FUNCTION{</section>}{<section id="cint112.ui_browser_refresh" type="s" >}
#+ 瀏覽頁簽資料重新顯示
PRIVATE FUNCTION cint112_ui_browser_refresh()#add-point:ui_browser_refresh段define(客製用) name="ui_browser_refresh.define_customerization"#end add-point    DEFINE l_i  LIKE type_t.num10#add-point:ui_browser_refresh段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="ui_browser_refresh.define"#end add-point    #add-point:Function前置處理  name="ui_browser_refresh.pre_function"#end add-pointLET g_browser_cnt = g_browser.getLength()LET g_header_cnt  = g_browser.getLength()FOR l_i =1 TO g_browser.getLength()IF g_browser[l_i].b_iniducdocno = g_iniduc_m.iniducdocno THENCALL g_browser.deleteElement(l_i)EXIT FOREND IFEND FORLET g_browser_cnt = g_browser_cnt - 1LET g_header_cnt = g_header_cnt - 1#若無資料則關閉相關功能IF g_browser_cnt = 0 THENCALL cl_set_act_visible("statechange,modify,modify_detail,delete,reproduce,mainhidden", FALSE)CALL cl_navigator_setting(0,0)CLEAR FORMELSECALL cl_set_act_visible("mainhidden", TRUE)END IF#add-point:ui_browser_refresh段after name="ui_browser_refresh.after"#end add-point    END FUNCTION{</section>}{<section id="cint112.construct" type="s" >}
#+ QBE資料查詢
PRIVATE FUNCTION cint112_construct()#add-point:cs段define(客製用) name="cs.define_customerization"#end add-point    DEFINE ls_return   STRINGDEFINE ls_result   STRING DEFINE ls_wc       STRING DEFINE la_wc       DYNAMIC ARRAY OF RECORDtableid     STRING,wc          STRINGEND RECORDDEFINE li_idx      LIKE type_t.num10#add-point:cs段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="cs.define"#end add-point    #add-point:Function前置處理  name="cs.pre_function"#end add-point#清除畫面CLEAR FORM                INITIALIZE g_iniduc_m.* TO NULLCALL g_inieuc_d.clear()        LET g_action_choice = ""INITIALIZE g_wc TO NULLINITIALIZE g_wc2 TO NULLINITIALIZE g_wc2_table1 TO NULLLET g_qryparam.state = 'c'#add-point:cs段開始前 name="cs.before_construct"#end add-point #使用DIALOG包住 單頭CONSTRUCT及單身CONSTRUCTDIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)#單頭CONSTRUCT BY NAME g_wc ON iniducdocno,iniducdocdt,iniduc001,iniducstus,iniducownid,iniducowndp, iniduccrtid,iniduccrtdp,iniduccrtdt,iniducmodid,iniducmoddt,iniduccnfid,iniduccnfdt,iniducpstid, iniducpstdtBEFORE CONSTRUCT#add-point:cs段before_construct name="cs.head.before_construct"#end add-point #公用欄位開窗相關處理#應用 a11 樣板自動產生(Version:3)#共用欄位查詢處理  ##----<<iniduccrtdt>>----AFTER FIELD iniduccrtdtCALL FGL_DIALOG_GETBUFFER() RETURNING ls_resultIF NOT cl_null(ls_result) THENIF NOT cl_chk_date_symbol(ls_result) THENLET ls_result = cl_add_date_extra_cond(ls_result)END IFEND IFCALL FGL_DIALOG_SETBUFFER(ls_result)#----<<iniducmoddt>>----AFTER FIELD iniducmoddtCALL FGL_DIALOG_GETBUFFER() RETURNING ls_resultIF NOT cl_null(ls_result) THENIF NOT cl_chk_date_symbol(ls_result) THENLET ls_result = cl_add_date_extra_cond(ls_result)END IFEND IFCALL FGL_DIALOG_SETBUFFER(ls_result)#----<<iniduccnfdt>>----AFTER FIELD iniduccnfdtCALL FGL_DIALOG_GETBUFFER() RETURNING ls_resultIF NOT cl_null(ls_result) THENIF NOT cl_chk_date_symbol(ls_result) THENLET ls_result = cl_add_date_extra_cond(ls_result)END IFEND IFCALL FGL_DIALOG_SETBUFFER(ls_result)#----<<iniducpstdt>>----AFTER FIELD iniducpstdtCALL FGL_DIALOG_GETBUFFER() RETURNING ls_resultIF NOT cl_null(ls_result) THENIF NOT cl_chk_date_symbol(ls_result) THENLET ls_result = cl_add_date_extra_cond(ls_result)END IFEND IFCALL FGL_DIALOG_SETBUFFER(ls_result)#一般欄位開窗相關處理    #Ctrlp:construct.c.iniducdocno#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducdocno#add-point:ON ACTION controlp INFIELD iniducdocno name="construct.c.iniducdocno"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL cq_iniaucdocno()                           #呼叫開窗DISPLAY g_qryparam.return1 TO iniducdocno  #顯示到畫面上NEXT FIELD iniducdocno                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducdocno#add-point:BEFORE FIELD iniducdocno name="construct.b.iniducdocno"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducdocno#add-point:AFTER FIELD iniducdocno name="construct.a.iniducdocno"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducdocdt#add-point:BEFORE FIELD iniducdocdt name="construct.b.iniducdocdt"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducdocdt#add-point:AFTER FIELD iniducdocdt name="construct.a.iniducdocdt"#END add-point#Ctrlp:construct.c.iniducdocdt#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducdocdt#add-point:ON ACTION controlp INFIELD iniducdocdt name="construct.c.iniducdocdt"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniduc001#add-point:BEFORE FIELD iniduc001 name="construct.b.iniduc001"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniduc001#add-point:AFTER FIELD iniduc001 name="construct.a.iniduc001"#END add-point#Ctrlp:construct.c.iniduc001#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniduc001#add-point:ON ACTION controlp INFIELD iniduc001 name="construct.c.iniduc001"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducstus#add-point:BEFORE FIELD iniducstus name="construct.b.iniducstus"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducstus#add-point:AFTER FIELD iniducstus name="construct.a.iniducstus"#END add-point#Ctrlp:construct.c.iniducstus#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducstus#add-point:ON ACTION controlp INFIELD iniducstus name="construct.c.iniducstus"#END add-point#Ctrlp:construct.c.iniducownid#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducownid#add-point:ON ACTION controlp INFIELD iniducownid name="construct.c.iniducownid"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL q_ooag001()                           #呼叫開窗DISPLAY g_qryparam.return1 TO iniducownid  #顯示到畫面上NEXT FIELD iniducownid                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducownid#add-point:BEFORE FIELD iniducownid name="construct.b.iniducownid"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducownid#add-point:AFTER FIELD iniducownid name="construct.a.iniducownid"#END add-point#Ctrlp:construct.c.iniducowndp#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducowndp#add-point:ON ACTION controlp INFIELD iniducowndp name="construct.c.iniducowndp"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL q_ooeg001_9()                           #呼叫開窗DISPLAY g_qryparam.return1 TO iniducowndp  #顯示到畫面上NEXT FIELD iniducowndp                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducowndp#add-point:BEFORE FIELD iniducowndp name="construct.b.iniducowndp"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducowndp#add-point:AFTER FIELD iniducowndp name="construct.a.iniducowndp"#END add-point#Ctrlp:construct.c.iniduccrtid#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniduccrtid#add-point:ON ACTION controlp INFIELD iniduccrtid name="construct.c.iniduccrtid"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL q_ooag001()                           #呼叫開窗DISPLAY g_qryparam.return1 TO iniduccrtid  #顯示到畫面上NEXT FIELD iniduccrtid                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniduccrtid#add-point:BEFORE FIELD iniduccrtid name="construct.b.iniduccrtid"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniduccrtid#add-point:AFTER FIELD iniduccrtid name="construct.a.iniduccrtid"#END add-point#Ctrlp:construct.c.iniduccrtdp#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniduccrtdp#add-point:ON ACTION controlp INFIELD iniduccrtdp name="construct.c.iniduccrtdp"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL q_ooeg001_9()                           #呼叫開窗DISPLAY g_qryparam.return1 TO iniduccrtdp  #顯示到畫面上NEXT FIELD iniduccrtdp                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniduccrtdp#add-point:BEFORE FIELD iniduccrtdp name="construct.b.iniduccrtdp"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniduccrtdp#add-point:AFTER FIELD iniduccrtdp name="construct.a.iniduccrtdp"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniduccrtdt#add-point:BEFORE FIELD iniduccrtdt name="construct.b.iniduccrtdt"#END add-point#Ctrlp:construct.c.iniducmodid#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducmodid#add-point:ON ACTION controlp INFIELD iniducmodid name="construct.c.iniducmodid"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL q_ooag001()                           #呼叫開窗DISPLAY g_qryparam.return1 TO iniducmodid  #顯示到畫面上NEXT FIELD iniducmodid                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducmodid#add-point:BEFORE FIELD iniducmodid name="construct.b.iniducmodid"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducmodid#add-point:AFTER FIELD iniducmodid name="construct.a.iniducmodid"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducmoddt#add-point:BEFORE FIELD iniducmoddt name="construct.b.iniducmoddt"#END add-point#Ctrlp:construct.c.iniduccnfid#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniduccnfid#add-point:ON ACTION controlp INFIELD iniduccnfid name="construct.c.iniduccnfid"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL q_ooag001()                           #呼叫開窗DISPLAY g_qryparam.return1 TO iniduccnfid  #顯示到畫面上NEXT FIELD iniduccnfid                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniduccnfid#add-point:BEFORE FIELD iniduccnfid name="construct.b.iniduccnfid"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniduccnfid#add-point:AFTER FIELD iniduccnfid name="construct.a.iniduccnfid"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniduccnfdt#add-point:BEFORE FIELD iniduccnfdt name="construct.b.iniduccnfdt"#END add-point#Ctrlp:construct.c.iniducpstid#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducpstid#add-point:ON ACTION controlp INFIELD iniducpstid name="construct.c.iniducpstid"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL q_ooag001()                           #呼叫開窗DISPLAY g_qryparam.return1 TO iniducpstid  #顯示到畫面上NEXT FIELD iniducpstid                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducpstid#add-point:BEFORE FIELD iniducpstid name="construct.b.iniducpstid"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducpstid#add-point:AFTER FIELD iniducpstid name="construct.a.iniducpstid"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducpstdt#add-point:BEFORE FIELD iniducpstdt name="construct.b.iniducpstdt"#END add-pointEND CONSTRUCT#單身根據table分拆constructCONSTRUCT g_wc2_table1 ON inieucseq,inieuc001,inieuc002,inicuc001,inicuc002,inieuc003FROM s_detail1[1].inieucseq,s_detail1[1].inieuc001,s_detail1[1].inieuc002,s_detail1[1].inicuc001, s_detail1[1].inicuc002,s_detail1[1].inieuc003BEFORE CONSTRUCT#add-point:cs段before_construct name="cs.body.before_construct"#end add-point #單身公用欄位開窗相關處理#單身一般欄位開窗相關處理#應用 a01 樣板自動產生(Version:2)BEFORE FIELD inieucseq#add-point:BEFORE FIELD inieucseq name="construct.b.page1.inieucseq"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inieucseq#add-point:AFTER FIELD inieucseq name="construct.a.page1.inieucseq"#END add-point#Ctrlp:construct.c.page1.inieucseq#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inieucseq#add-point:ON ACTION controlp INFIELD inieucseq name="construct.c.page1.inieucseq"#END add-point#Ctrlp:construct.c.page1.inieuc001#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inieuc001#add-point:ON ACTION controlp INFIELD inieuc001 name="construct.c.page1.inieuc001"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL cq_iniaucdocno()                           #呼叫開窗DISPLAY g_qryparam.return1 TO inieuc001  #顯示到畫面上NEXT FIELD inieuc001                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD inieuc001#add-point:BEFORE FIELD inieuc001 name="construct.b.page1.inieuc001"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inieuc001#add-point:AFTER FIELD inieuc001 name="construct.a.page1.inieuc001"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD inieuc002#add-point:BEFORE FIELD inieuc002 name="construct.b.page1.inieuc002"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inieuc002#add-point:AFTER FIELD inieuc002 name="construct.a.page1.inieuc002"#END add-point#Ctrlp:construct.c.page1.inieuc002#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inieuc002#add-point:ON ACTION controlp INFIELD inieuc002 name="construct.c.page1.inieuc002"#END add-point#Ctrlp:construct.c.page1.inicuc001#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inicuc001#add-point:ON ACTION controlp INFIELD inicuc001 name="construct.c.page1.inicuc001"#應用 a08 樣板自動產生(Version:3)#開窗c段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL cq_iniaucdocno()                           #呼叫開窗DISPLAY g_qryparam.return1 TO inicuc001  #顯示到畫面上NEXT FIELD inicuc001                     #返回原欄位#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD inicuc001#add-point:BEFORE FIELD inicuc001 name="construct.b.page1.inicuc001"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inicuc001#add-point:AFTER FIELD inicuc001 name="construct.a.page1.inicuc001"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD inicuc002#add-point:BEFORE FIELD inicuc002 name="construct.b.page1.inicuc002"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inicuc002#add-point:AFTER FIELD inicuc002 name="construct.a.page1.inicuc002"#END add-point#Ctrlp:construct.c.page1.inicuc002#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inicuc002#add-point:ON ACTION controlp INFIELD inicuc002 name="construct.c.page1.inicuc002"#END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD inieuc003#add-point:BEFORE FIELD inieuc003 name="construct.b.page1.inieuc003"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inieuc003#add-point:AFTER FIELD inieuc003 name="construct.a.page1.inieuc003"#END add-point#Ctrlp:construct.c.page1.inieuc003#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inieuc003#add-point:ON ACTION controlp INFIELD inieuc003 name="construct.c.page1.inieuc003"#END add-pointEND CONSTRUCT#add-point:cs段add_cs(本段內只能出現新的CONSTRUCT指令) name="cs.add_cs"#end add-pointBEFORE DIALOGCALL cl_qbe_init()#add-point:cs段b_dialog name="cs.b_dialog"#end add-point  #查詢方案列表ON ACTION qbe_selectLET ls_wc = ""CALL cl_qbe_list("c") RETURNING ls_wcIF NOT cl_null(ls_wc) THENCALL util.JSON.parse(ls_wc, la_wc)INITIALIZE g_wc, g_wc2, g_wc2_table1, g_wc2_extend TO NULLFOR li_idx = 1 TO la_wc.getLength()CASEWHEN la_wc[li_idx].tableid = "iniduc_t" LET g_wc = la_wc[li_idx].wcWHEN la_wc[li_idx].tableid = "inieuc_t" LET g_wc2_table1 = la_wc[li_idx].wcEND CASEEND FOREND IF#條件儲存為方案ON ACTION qbe_saveCALL cl_qbe_save()ON ACTION acceptCALL cl_qbe_auto_save() #180530-00049#1ACCEPT DIALOGON ACTION cancelLET INT_FLAG = 1EXIT DIALOG #交談指令共用ACTION&include "common_action.4gl" CONTINUE DIALOGEND DIALOG#組合g_wc2LET g_wc2 = g_wc2_table1#add-point:cs段結束前 name="cs.after_construct"#end add-point    IF INT_FLAG THENRETURNEND IFEND FUNCTION{</section>}{<section id="cint112.query" type="s" >}
#+ 資料查詢QBE功能準備
PRIVATE FUNCTION cint112_query()#add-point:query段define(客製用) name="query.define_customerization"#end add-point   DEFINE ls_wc STRING#add-point:query段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="query.define"#end add-point   #add-point:Function前置處理  name="query.pre_function"#end add-point#切換畫面LET ls_wc = g_wcLET INT_FLAG = 0CALL cl_navigator_setting( g_current_idx, g_detail_cnt )ERROR ""#清除畫面及相關資料CLEAR FORMCALL g_browser.clear()       CALL g_inieuc_d.clear()#add-point:query段other name="query.other"#end add-point   DISPLAY '' TO FORMONLY.idxDISPLAY '' TO FORMONLYtDISPLAY '' TO FORMONLY.b_indexDISPLAY '' TO FORMONLY.b_countDISPLAY '' TO FORMONLY.h_indexDISPLAY '' TO FORMONLY.h_countCALL cint112_construct()IF INT_FLAG THEN#取消查詢LET INT_FLAG = 0#LET g_wc = ls_wcLET g_wc = " 1=2"CALL cint112_browser_fill("")CALL cint112_fetch("")RETURNEND IF#儲存WC資訊CALL cl_dlg_save_user_latestqry("("||g_wc||") AND ("||g_wc2||")")#搜尋後資料初始化 LET g_detail_cnt  = 0LET g_current_idx = 1LET g_current_row = 0LET g_detail_idx  = 1LET g_detail_idx2 = 1LET g_detail_idx_list[1] = 1LET g_error_show  = 1LET g_wc_filter   = ""LET l_ac = 1CALL FGL_SET_ARR_CURR(1)CALL cint112_browser_fill("F")IF g_browser_cnt = 0 THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "-100" LET g_errparam.popup = TRUE CALL cl_err()ELSECALL cint112_fetch("F") #顯示單身筆數CALL cint112_idx_chk()END IFEND FUNCTION{</section>}{<section id="cint112.fetch" type="s" >}
#+ 指定PK後抓取單頭其他資料
PRIVATE FUNCTION cint112_fetch(p_flag)#add-point:fetch段define(客製用) name="fetch.define_customerization"#end add-point    DEFINE p_flag     LIKE type_t.chr1DEFINE ls_msg     STRING#add-point:fetch段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="fetch.define"#end add-point    #add-point:Function前置處理  name="fetch.pre_function"#end add-pointIF g_browser_cnt = 0 THENRETURNEND IF#清空第二階單身CALL cl_ap_performance_next_start()CASE p_flagWHEN 'F' LET g_current_idx = 1WHEN 'L'  LET g_current_idx = g_browser.getLength()              WHEN 'P'IF g_current_idx > 1 THEN               LET g_current_idx = g_current_idx - 1END IF WHEN 'N'IF g_current_idx < g_header_cnt THENLET g_current_idx =  g_current_idx + 1END IF        WHEN '/'IF (NOT g_no_ask) THEN    CALL cl_set_act_visible("accept,cancel", TRUE)    CALL cl_getmsg('fetch',g_lang) RETURNING ls_msgLET INT_FLAG = 0PROMPT ls_msg CLIPPED,':' FOR g_jump#交談指令共用ACTION&include "common_action.4gl" END PROMPTCALL cl_set_act_visible("accept,cancel", FALSE)    IF INT_FLAG THENLET INT_FLAG = 0EXIT CASE  END IF           END IFIF g_jump > 0 AND g_jump <= g_browser.getLength() THENLET g_current_idx = g_jumpEND IFLET g_no_ask = FALSE  END CASE LET g_current_row = g_current_idxLET g_detail_cnt = g_header_cnt                  #單身總筆數顯示IF g_detail_cnt > 0 THEN#若單身有資料時, idx至少為1IF g_detail_idx <= 0 THENLET g_detail_idx = 1END IFDISPLAY g_detail_idx TO FORMONLY.idx  ELSELET g_detail_idx = 0DISPLAY '' TO FORMONLY.idx    END IF#瀏覽頁筆數顯示LET g_pagestart = g_current_idxDISPLAY g_pagestart TO FORMONLY.b_index   #當下筆數DISPLAY g_pagestart TO FORMONLY.h_index   #當下筆數CALL cl_navigator_setting( g_pagestart, g_browser_cnt )#代表沒有資料IF g_current_idx = 0 OR g_browser.getLength() = 0 THENRETURNEND IF#避免超出browser資料筆數上限IF g_current_idx > g_browser.getLength() THENLET g_browser_idx = g_browser.getLength()LET g_current_idx = g_browser.getLength()END IFLET g_iniduc_m.iniducdocno = g_browser[g_current_idx].b_iniducdocno#重讀DB,因TEMP有不被更新特性EXECUTE cint112_master_referesh USING g_site,g_iniduc_m.iniducdocno INTO g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt, g_iniduc_m.iniduc001,g_iniduc_m.iniducstus,g_iniduc_m.iniducownid,g_iniduc_m.iniducowndp,g_iniduc_m.iniduccrtid, g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt,g_iniduc_m.iniduccnfid, g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid,g_iniduc_m.iniducpstdt,g_iniduc_m.iniducownid_desc, g_iniduc_m.iniducowndp_desc,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp_desc,g_iniduc_m.iniducmodid_desc, g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniducpstid_desc#遮罩相關處理LET g_iniduc_m_mask_o.* =  g_iniduc_m.*CALL cint112_iniduc_t_mask()LET g_iniduc_m_mask_n.* =  g_iniduc_m.*#根據資料狀態切換action狀態CALL cl_set_act_visible("statechange,modify,modify_detail,delete,reproduce", TRUE)CALL cint112_set_act_visible()   CALL cint112_set_act_no_visible()#add-point:fetch段action控制 name="fetch.action_control"#end add-point  #add-point:fetch結束前 name="fetch.after"#end add-point#保存單頭舊值LET g_iniduc_m_t.* = g_iniduc_m.*LET g_iniduc_m_o.* = g_iniduc_m.*LET g_data_owner = g_iniduc_m.iniducownid      LET g_data_dept  = g_iniduc_m.iniducowndpLET g_data_crtid = g_iniduc_m.iniduccrtid   #180201-00054LET g_data_crtdp = g_iniduc_m.iniduccrtdp   #180201-00054#重新顯示   CALL cint112_show()END FUNCTION{</section>}{<section id="cint112.insert" type="s" >}
#+ 資料新增
PRIVATE FUNCTION cint112_insert()#add-point:insert段define(客製用) name="insert.define_customerization"#end add-point    #add-point:insert段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="insert.define"#end add-point    #add-point:Function前置處理  name="insert.pre_function"#end add-point#清畫面欄位內容CLEAR FORM                    CALL g_inieuc_d.clear()   INITIALIZE g_iniduc_m.* TO NULL             #DEFAULT 設定LET g_iniducdocno_t = NULLLET g_master_insert = FALSE#add-point:insert段before name="insert.before"#end add-point    CALL s_transaction_begin()WHILE TRUE#公用欄位給值(單頭)#應用 a14 樣板自動產生(Version:5)    #公用欄位新增給值  LET g_iniduc_m.iniducownid = g_userLET g_iniduc_m.iniducowndp = g_deptLET g_iniduc_m.iniduccrtid = g_userLET g_iniduc_m.iniduccrtdp = g_dept LET g_iniduc_m.iniduccrtdt = cl_get_current()LET g_iniduc_m.iniducmodid = g_userLET g_iniduc_m.iniducmoddt = cl_get_current()LET g_iniduc_m.iniducstus = 'N'#append欄位給值#一般欄位給值#add-point:單頭預設值 name="insert.default"LET g_iniduc_m.iniducdocdt = cl_get_current()#end add-point #保存單頭舊值(用於資料輸入錯誤還原預設值時使用)LET g_iniduc_m_t.* = g_iniduc_m.*LET g_iniduc_m_o.* = g_iniduc_m.*#顯示狀態(stus)圖片#應用 a21 樣板自動產生(Version:3)#根據當下狀態碼顯示圖片CASE g_iniduc_m.iniducstus WHEN "N"CALL gfrm_curr.setElementImage("statechange", "stus/32/unconfirmed.png")WHEN "Y"CALL gfrm_curr.setElementImage("statechange", "stus/32/confirmed.png")WHEN "S"CALL gfrm_curr.setElementImage("statechange", "stus/32/posted.png")WHEN "Z"CALL gfrm_curr.setElementImage("statechange", "stus/32/unposted.png")END CASECALL cint112_input("a")#add-point:單頭輸入後 name="insert.after_insert"#end add-pointIF INT_FLAG THENLET INT_FLAG = 0INITIALIZE g_errparam TO NULL LET g_errparam.extend = '' LET g_errparam.code = 9001 LET g_errparam.popup = FALSE CALL s_transaction_end('N','0')CALL cl_err()END IFIF NOT g_master_insert THENDISPLAY g_detail_cnt  TO FORMONLY.h_count    #總筆數DISPLAY g_current_idx TO FORMONLY.h_index    #當下筆數INITIALIZE g_iniduc_m.* TO NULLINITIALIZE g_inieuc_d TO NULL#add-point:取消新增後 name="insert.cancel"#end add-point CALL cint112_show()CALL cint112_idx_chk()   #(ver:83)RETURNEND IFLET INT_FLAG = 0#CALL g_inieuc_d.clear()LET g_rec_b = 0CALL s_transaction_end('Y','0')EXIT WHILEEND WHILE#根據資料狀態切換action狀態CALL cl_set_act_visible("statechange,modify,modify_detail,delete,reproduce", TRUE)CALL cint112_set_act_visible()   CALL cint112_set_act_no_visible()#將新增的資料併入搜尋條件中LET g_iniducdocno_t = g_iniduc_m.iniducdocno#組合新增資料的條件LET g_add_browse = " iniducent = " ||g_enterprise|| " AND iniducsite = '" ||g_site|| "' AND"," iniducdocno = '", g_iniduc_m.iniducdocno, "' "#add-point:組合新增資料的條件後 name="insert.after.add_browse"#end add-point#填到最後面LET g_current_idx = g_browser.getLength() + 1CALL cint112_browser_fill("")DISPLAY g_browser_cnt TO FORMONLY.h_count    #總筆數DISPLAY g_current_idx TO FORMONLY.h_index    #當下筆數CALL cl_navigator_setting(g_current_idx, g_browser_cnt)CLOSE cint112_clCALL cint112_idx_chk()#撈取異動後的資料(主要是帶出reference)EXECUTE cint112_master_referesh USING g_site,g_iniduc_m.iniducdocno INTO g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt, g_iniduc_m.iniduc001,g_iniduc_m.iniducstus,g_iniduc_m.iniducownid,g_iniduc_m.iniducowndp,g_iniduc_m.iniduccrtid, g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt,g_iniduc_m.iniduccnfid, g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid,g_iniduc_m.iniducpstdt,g_iniduc_m.iniducownid_desc, g_iniduc_m.iniducowndp_desc,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp_desc,g_iniduc_m.iniducmodid_desc, g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniducpstid_desc#遮罩相關處理LET g_iniduc_m_mask_o.* =  g_iniduc_m.*CALL cint112_iniduc_t_mask()LET g_iniduc_m_mask_n.* =  g_iniduc_m.*#將資料顯示到畫面上DISPLAY BY NAME g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001,g_iniduc_m.iniducstus, g_iniduc_m.iniducownid,g_iniduc_m.iniducownid_desc,g_iniduc_m.iniducowndp,g_iniduc_m.iniducowndp_desc, g_iniduc_m.iniduccrtid,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdp_desc, g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmodid_desc,g_iniduc_m.iniducmoddt, g_iniduc_m.iniduccnfid,g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid, g_iniduc_m.iniducpstid_desc,g_iniduc_m.iniducpstdt#add-point:新增結束後 name="insert.after"#end add-point LET g_data_owner = g_iniduc_m.iniducownid      LET g_data_dept  = g_iniduc_m.iniducowndpLET g_data_crtid = g_iniduc_m.iniduccrtid   #180201-00054LET g_data_crtdp = g_iniduc_m.iniduccrtdp   #180201-00054#功能已完成,通報訊息中心CALL cint112_msgcentre_notify('insert')CALL cint112_idx_chk()   #(ver:83)END FUNCTION{</section>}{<section id="cint112.modify" type="s" >}
#+ 資料修改
PRIVATE FUNCTION cint112_modify()#add-point:modify段define(客製用) name="modify.define_customerization"#end add-point    DEFINE l_new_key    DYNAMIC ARRAY OF STRINGDEFINE l_old_key    DYNAMIC ARRAY OF STRINGDEFINE l_field_key  DYNAMIC ARRAY OF STRINGDEFINE l_wc2_table1          STRING#add-point:modify段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="modify.define"#end add-point    #add-point:Function前置處理  name="modify.pre_function"#end add-point#保存單頭舊值LET g_iniduc_m_t.* = g_iniduc_m.*LET g_iniduc_m_o.* = g_iniduc_m.*IF g_iniduc_m.iniducdocno IS NULLTHENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "std-00003" LET g_errparam.popup = FALSE CALL cl_err()RETURNEND IFERROR ""LET g_iniducdocno_t = g_iniduc_m.iniducdocnoCALL s_transaction_begin()OPEN cint112_cl USING g_enterprise, g_site,g_iniduc_m.iniducdocnoIF SQLCA.SQLCODE THEN   #(ver:78)INITIALIZE g_errparam TO NULL LET g_errparam.extend = "OPEN cint112_cl:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE   #(ver:78)LET g_errparam.popup = TRUE CLOSE cint112_clCALL s_transaction_end('N','0')CALL cl_err()RETURNEND IF#顯示最新的資料EXECUTE cint112_master_referesh USING g_site,g_iniduc_m.iniducdocno INTO g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt, g_iniduc_m.iniduc001,g_iniduc_m.iniducstus,g_iniduc_m.iniducownid,g_iniduc_m.iniducowndp,g_iniduc_m.iniduccrtid, g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt,g_iniduc_m.iniduccnfid, g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid,g_iniduc_m.iniducpstdt,g_iniduc_m.iniducownid_desc, g_iniduc_m.iniducowndp_desc,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp_desc,g_iniduc_m.iniducmodid_desc, g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniducpstid_desc#檢查是否允許此動作IF NOT cint112_action_chk() THENCALL s_transaction_end('N','0')RETURNEND IF#遮罩相關處理LET g_iniduc_m_mask_o.* =  g_iniduc_m.*CALL cint112_iniduc_t_mask()LET g_iniduc_m_mask_n.* =  g_iniduc_m.*#add-point:modify段show之前 name="modify.before_show"#end add-point  #LET l_wc2_table1 = g_wc2_table1#LET g_wc2_table1 = " 1=1"CALL cint112_show()#add-point:modify段show之後 name="modify.after_show"#end add-point#LET g_wc2_table1 = l_wc2_table1WHILE TRUELET g_iniducdocno_t = g_iniduc_m.iniducdocno#寫入修改者/修改日期資訊(單頭)LET g_iniduc_m.iniducmodid = g_user 
LET g_iniduc_m.iniducmoddt = cl_get_current()
LET g_iniduc_m.iniducmodid_desc = cl_get_username(g_iniduc_m.iniducmodid)#add-point:modify段修改前 name="modify.before_input"#end add-point#欄位更改LET g_loc = 'n'LET g_update = FALSELET g_master_commit = "N"CALL cint112_input("u")LET g_loc = 'n'#add-point:modify段修改後 name="modify.after_input"#end add-pointIF g_update OR NOT INT_FLAG THEN#若有modid跟moddt則進行updateUPDATE iniduc_t SET (iniducmodid,iniducmoddt) = (g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt) WHERE iniducent = g_enterprise AND iniducsite = g_site AND iniducdocno = g_iniducdocno_tEND IFIF INT_FLAG THENCALL s_transaction_end('N','0')LET INT_FLAG = 0#若單頭無commit則還原IF g_master_commit = "N" THENLET g_iniduc_m.* = g_iniduc_m_t.*#  CALL cint112_show()   #(ver:83)END IFCALL cint112_show()   #(ver:83)CALL cint112_idx_chk()   #(ver:83)INITIALIZE g_errparam TO NULL LET g_errparam.extend = '' LET g_errparam.code = 9001 LET g_errparam.popup = FALSE CALL cl_err()RETURNEND IF #若單頭key欄位有變更IF g_iniduc_m.iniducdocno != g_iniduc_m_t.iniducdocnoTHENCALL s_transaction_begin()#add-point:單身fk修改前 name="modify.body.b_fk_update"#end add-point#更新單身key值UPDATE inieuc_t SET inieucdocno = g_iniduc_m.iniducdocnoWHERE inieucent = g_enterprise AND inieucsite = g_site AND inieucdocno = g_iniduc_m_t.iniducdocno#add-point:單身fk修改中 name="modify.body.m_fk_update"#end add-pointCASEWHEN SQLCA.sqlerrd[3] = 0  #更新不到的處理#   INITIALIZE g_errparam TO NULL #   LET g_errparam.extend = "inieuc_t" #   LET g_errparam.code = "std-00009" #   LET g_errparam.popup = TRUE #   CALL cl_err()#   CALL s_transaction_end('N','0')#   CONTINUE WHILEWHEN SQLCA.SQLCODE #其他錯誤INITIALIZE g_errparam TO NULL LET g_errparam.extend = "inieuc_t:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL s_transaction_end('N','0')CALL cl_err()CONTINUE WHILEEND CASE#add-point:單身fk修改後 name="modify.body.a_fk_update"#end add-point#UPDATE 多語言table key值LET l_new_key[01] = g_enterprise
LET l_old_key[01] = g_enterprise
LET l_field_key[01] = 'inicucent'
LET l_new_key[02] = g_site
LET l_old_key[02] = g_site
LET l_field_key[02] = 'inicucsite'
LET l_new_key[03] = g_iniduc_m.iniducdocno
LET l_old_key[03] = g_iniducdocno_t
LET l_field_key[03] = 'inicucdocno'
INITIALIZE g_errparam TO NULL #161130-00056
CALL cl_multitable_key_upd(l_new_key, l_old_key, l_field_key, 'inicuc_t')
#161130-00056 ---start---
IF NOT cl_null(g_errparam.code) THENLET g_err_rec = 'Y'
END IF
#161130-00056 --- end ---#161130-00056 ---start---
IF g_err_rec = 'Y' THENCALL s_transaction_end('N','0')LET g_err_rec = 'N'CONTINUE WHILE
END IF
#161130-00056 --- end ---   #161130-00056 addCALL s_transaction_end('Y','0')END IFEXIT WHILEEND WHILE#180720-00009 ---start---#add-point:modify段修改後 name="modify.after"#end add-point#180720-00009 --- end ---#根據資料狀態切換action狀態CALL cl_set_act_visible("statechange,modify,modify_detail,delete,reproduce", TRUE)CALL cint112_set_act_visible()   CALL cint112_set_act_no_visible()#組合新增資料的條件LET g_add_browse = " iniducent = " ||g_enterprise|| " AND iniducsite = '" ||g_site|| "' AND"," iniducdocno = '", g_iniduc_m.iniducdocno, "' "#填到對應位置CALL cint112_browser_fill("")CLOSE cint112_clCALL s_transaction_end('Y','0')#180720-00009 ---start---#add-point:modify段結束前 name="modify.before_end"#end add-point#180720-00009 --- end ---#功能已完成,通報訊息中心CALL cint112_msgcentre_notify('modify')CALL cint112_idx_chk() #ver:83END FUNCTION {</section>}{<section id="cint112.input" type="s" >}
#+ 資料輸入
PRIVATE FUNCTION cint112_input(p_cmd)#add-point:input段define(客製用) name="input.define_customerization"#end add-point  DEFINE  p_cmd                 LIKE type_t.chr1DEFINE  l_cmd_t               LIKE type_t.chr1DEFINE  l_cmd                 LIKE type_t.chr1DEFINE  l_n                   LIKE type_t.num10                #檢查重複用  DEFINE  l_cnt                 LIKE type_t.num10                #檢查重複用  DEFINE  l_lock_sw             LIKE type_t.chr1                #單身鎖住否  DEFINE  l_allow_insert        LIKE type_t.num5                #可新增否 DEFINE  l_allow_delete        LIKE type_t.num5                #可刪除否  DEFINE  l_count               LIKE type_t.num10DEFINE  l_i                   LIKE type_t.num10DEFINE  l_ac_t                LIKE type_t.num10DEFINE  l_insert              BOOLEANDEFINE  ls_return             STRINGDEFINE  l_var_keys            DYNAMIC ARRAY OF STRINGDEFINE  l_field_keys          DYNAMIC ARRAY OF STRINGDEFINE  l_vars                DYNAMIC ARRAY OF STRINGDEFINE  l_fields              DYNAMIC ARRAY OF STRINGDEFINE  l_var_keys_bak        DYNAMIC ARRAY OF STRINGDEFINE  lb_reproduce          BOOLEANDEFINE  li_reproduce          LIKE type_t.num10DEFINE  li_reproduce_target   LIKE type_t.num10DEFINE  ls_keys               DYNAMIC ARRAY OF VARCHAR(500)DEFINE  ls_mdl_str            STRING   #180411-00062#add-point:input段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="input.define"DEFINE  l_ooef004            LIKE  ooef_t.ooef004DEFINE  l_success            LIKE  type_t.num5DEFINE  l_inicuc002          LIKE  inicuc_t.inicuc002DEFINE  l_inieuc003          LIKE  inieuc_t.inieuc003#end add-point  #add-point:Function前置處理  name="input.pre_function"#end add-point#先做狀態判定IF p_cmd = 'r' THENLET l_cmd_t = 'r'LET p_cmd   = 'a'ELSELET l_cmd_t = p_cmdEND IF   #將資料輸出到畫面上DISPLAY BY NAME g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001,g_iniduc_m.iniducstus, g_iniduc_m.iniducownid,g_iniduc_m.iniducownid_desc,g_iniduc_m.iniducowndp,g_iniduc_m.iniducowndp_desc, g_iniduc_m.iniduccrtid,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdp_desc, g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmodid_desc,g_iniduc_m.iniducmoddt, g_iniduc_m.iniduccnfid,g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid, g_iniduc_m.iniducpstid_desc,g_iniduc_m.iniducpstdt#ver:82#清空單身條件LET g_wc2 = " 1=1"LET g_wc2_table1 = " 1=1 "#CALL cint112_b_fill()#ver:82#切換畫面CALL cl_set_head_visible("","YES")  LET l_insert = FALSELET g_action_choice = ""#add-point:input段define_sql name="input.define_sql"#end add-point LET g_forupd_sql = "SELECT inieucseq,inieuc001,inieuc002,inieuc003 FROM inieuc_t WHERE inieucent=?  AND inieucsite=? AND inieucdocno=? AND inieucseq=? FOR UPDATE"#add-point:input段define_sql name="input.after_define_sql"#end add-point LET g_forupd_sql = cl_sql_forupd(g_forupd_sql)LET g_forupd_sql = cl_sql_add_mask(g_forupd_sql)              #遮蔽特定資料DECLARE cint112_bcl CURSOR FROM g_forupd_sql#add-point:input段define_sql name="input.other_sql"#end add-point LET l_allow_insert = cl_auth_detail_input("insert")LET l_allow_delete = cl_auth_detail_input("delete")LET g_qryparam.state = 'i'#控制key欄位可否輸入CALL cint112_set_entry(p_cmd)#add-point:set_entry後 name="input.after_set_entry"#end add-pointCALL cint112_set_no_entry(p_cmd)DISPLAY BY NAME g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001,g_iniduc_m.iniducstus LET lb_reproduce = FALSELET l_ac_t = 1#關閉被遮罩相關欄位輸入, 無法確定USER是否會需要輸入此欄位#因此先行關閉, 若有需要可於下方add-point中自行開啟CALL cl_mask_set_no_entry()#add-point:資料輸入前 name="input.before_input"#end add-pointDIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM){</section>}{<section id="cint112.input.head" type="s" >}#單頭段INPUT BY NAME g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001,g_iniduc_m.iniducstus  ATTRIBUTE(WITHOUT DEFAULTS)#自訂ACTION(master_input)BEFORE INPUTIF s_transaction_chk("N",0) THENCALL s_transaction_begin()END IFOPEN cint112_cl USING g_enterprise, g_site,g_iniduc_m.iniducdocnoIF SQLCA.SQLCODE THEN   #(ver:78)INITIALIZE g_errparam TO NULL LET g_errparam.extend = "OPEN cint112_cl:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE   #(ver:78)LET g_errparam.popup = TRUE CLOSE cint112_clCALL s_transaction_end('N','0')CALL cl_err()RETURNEND IFIF l_cmd_t = 'r' THENEND IF#因應離開單頭後已寫入資料庫, 若重新回到單頭則視為修改#因此需於此處開啟/關閉欄位CALL cint112_set_entry(p_cmd)#add-point:資料輸入前 name="input.m.before_input"#end add-pointCALL cint112_set_no_entry(p_cmd)#應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducdocno#add-point:BEFORE FIELD iniducdocno name="input.b.iniducdocno"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducdocno#add-point:AFTER FIELD iniducdocno name="input.a.iniducdocno"#應用 a05 樣板自動產生(Version:3)#確認資料無重複IF  NOT cl_null(g_iniduc_m.iniducdocno) THEN IF p_cmd = 'a' OR ( p_cmd = 'u' AND (g_iniduc_m.iniducdocno != g_iniducdocno_t )) THEN IF NOT ap_chk_notDup("","SELECT COUNT(*) FROM iniduc_t WHERE "||"iniducent = " ||g_enterprise|| " AND iniducsite = '" ||g_site|| "' AND "||"iniducdocno = '"||g_iniduc_m.iniducdocno ||"'",'std-00004',0) THEN NEXT FIELD CURRENTEND IFEND IFEND IF#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE iniducdocno#add-point:ON CHANGE iniducdocno name="input.g.iniducdocno"#END add-point #應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducdocdt#add-point:BEFORE FIELD iniducdocdt name="input.b.iniducdocdt"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducdocdt#add-point:AFTER FIELD iniducdocdt name="input.a.iniducdocdt"#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE iniducdocdt#add-point:ON CHANGE iniducdocdt name="input.g.iniducdocdt"#END add-point #應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniduc001#add-point:BEFORE FIELD iniduc001 name="input.b.iniduc001"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniduc001#add-point:AFTER FIELD iniduc001 name="input.a.iniduc001"#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE iniduc001#add-point:ON CHANGE iniduc001 name="input.g.iniduc001"#END add-point #應用 a01 樣板自動產生(Version:2)BEFORE FIELD iniducstus#add-point:BEFORE FIELD iniducstus name="input.b.iniducstus"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD iniducstus#add-point:AFTER FIELD iniducstus name="input.a.iniducstus"#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE iniducstus#add-point:ON CHANGE iniducstus name="input.g.iniducstus"#END add-point #欄位檢查#Ctrlp:input.c.iniducdocno#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducdocno#add-point:ON ACTION controlp INFIELD iniducdocno name="input.c.iniducdocno"#應用 a07 樣板自動產生(Version:3)   #開窗i段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'i'LET g_qryparam.reqry = FALSELET g_qryparam.default1 = g_iniduc_m.iniducdocno             #給予default值##add by ky 20220411 startselect ooef004 into l_ooef004from ooef_twhere ooefent = g_enterprise and ooef001 = g_siteLET g_qryparam.arg1 = l_ooef004LET g_qryparam.arg2 = g_prog##add by ky 20220411 endCALL q_ooba002_1()                                #呼叫開窗LET g_iniduc_m.iniducdocno = g_qryparam.return1              DISPLAY g_iniduc_m.iniducdocno TO iniducdocno              #NEXT FIELD iniducdocno                          #返回原欄位#END add-point#Ctrlp:input.c.iniducdocdt#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducdocdt#add-point:ON ACTION controlp INFIELD iniducdocdt name="input.c.iniducdocdt"#END add-point#Ctrlp:input.c.iniduc001#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniduc001#add-point:ON ACTION controlp INFIELD iniduc001 name="input.c.iniduc001"#END add-point#Ctrlp:input.c.iniducstus#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD iniducstus#add-point:ON ACTION controlp INFIELD iniducstus name="input.c.iniducstus"#END add-point#欄位開窗AFTER INPUTIF INT_FLAG THENEXIT DIALOGEND IF#CALL cl_err_collect_show()      #錯誤訊息統整顯示#CALL cl_showmsg()DISPLAY BY NAME g_iniduc_m.iniducdocno#add-point:單頭INPUT後 name="input.head.after_input"#end add-pointIF p_cmd <> 'u' THENCALL s_transaction_begin()#add-point:單頭新增前 name="input.head.b_insert"## add by ky 20220411 startCALL s_aooi200_gen_docno(g_site,g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_prog) RETURNING l_success,g_iniduc_m.iniducdocno # 定义l_success LIKE type_t.num5 经常会让你定义的IF NOT l_success THENCALL s_transaction_end('N','0')INITIALIZE g_errparam TO NULLLET g_errparam.code = 'apm-00003'LET g_errparam.extend = g_iniduc_m.iniducdocnoLET g_errparam.popup = TRUECALL cl_err()NEXT FIELD iniducdocnoCONTINUE DIALOGEND IF DISPLAY BY NAME g_iniduc_m.iniducdocno  #数据显示到单头画面中#end add-pointINSERT INTO iniduc_t (iniducent, iniducsite,iniducdocno,iniducdocdt,iniduc001,iniducstus, iniducownid,iniducowndp,iniduccrtid,iniduccrtdp,iniduccrtdt,iniducmodid,iniducmoddt, iniduccnfid,iniduccnfdt,iniducpstid,iniducpstdt)VALUES (g_enterprise, g_site,g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001, g_iniduc_m.iniducstus,g_iniduc_m.iniducownid,g_iniduc_m.iniducowndp,g_iniduc_m.iniduccrtid, g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt, g_iniduc_m.iniduccnfid,g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid,g_iniduc_m.iniducpstdt)  IF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "g_iniduc_m:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL s_transaction_end('N','0')CALL cl_err()NEXT FIELD CURRENTEND IF#add-point:單頭新增中 name="input.head.m_insert"#end add-point#161130-00056#add-point:單頭新增後 name="input.head.a_insert"#end add-pointCALL s_transaction_end('Y','0') IF l_cmd_t = 'r' AND p_cmd = 'a' THENCALL cint112_detail_reproduce()#因應特定程式需求, 重新刷新單身資料CALL cint112_b_fill()CALL cint112_b_fill2('0')END IF#add-point:單頭新增後 name="input.head.a_insert2"#end add-pointLET g_master_insert = TRUELET p_cmd = 'u'ELSECALL s_transaction_begin()#add-point:單頭修改前 name="input.head.b_update"#end add-point#將遮罩欄位還原CALL cint112_iniduc_t_mask_restore('restore_mask_o')UPDATE iniduc_t SET (iniducdocno,iniducdocdt,iniduc001,iniducstus,iniducownid,iniducowndp, iniduccrtid,iniduccrtdp,iniduccrtdt,iniducmodid,iniducmoddt,iniduccnfid,iniduccnfdt, iniducpstid,iniducpstdt) = (g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001, g_iniduc_m.iniducstus,g_iniduc_m.iniducownid,g_iniduc_m.iniducowndp,g_iniduc_m.iniduccrtid, g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt, g_iniduc_m.iniduccnfid,g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid,g_iniduc_m.iniducpstdt) WHERE iniducent = g_enterprise AND iniducsite = g_site AND iniducdocno = g_iniducdocno_tIF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "iniduc_t:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL s_transaction_end('N','0')CALL cl_err()NEXT FIELD CURRENTEND IF#add-point:單頭修改中 name="input.head.m_update"#end add-point#161130-00056#將遮罩欄位進行遮蔽CALL cint112_iniduc_t_mask_restore('restore_mask_n')#修改歷程記錄(單頭修改)LET g_log1 = util.JSON.stringify(g_iniduc_m_t)LET g_log2 = util.JSON.stringify(g_iniduc_m)IF NOT cl_log_modified_record(g_log1,g_log2) THEN CALL s_transaction_end('N','0')ELSECALL s_transaction_end('Y','0')END IF#add-point:單頭修改後 name="input.head.a_update"#end add-pointEND IFLET g_master_commit = "Y"LET g_iniducdocno_t = g_iniduc_m.iniducdocnoEND INPUT{</section>}{<section id="cint112.input.body" type="s" >}#Page1 預設值產生於此處INPUT ARRAY g_inieuc_d FROM s_detail1.*ATTRIBUTE(COUNT = g_rec_b,WITHOUT DEFAULTS, #MAXCOUNT = g_max_rec,INSERT ROW = l_allow_insert, DELETE ROW = l_allow_delete,APPEND ROW = l_allow_insert)#自訂ACTION(detail_input,page_1)BEFORE INPUT#add-point:資料輸入前 name="input.body.before_input2"#end add-pointIF g_insert = 'Y' AND NOT cl_null(g_insert) THEN CALL FGL_SET_ARR_CURR(g_inieuc_d.getLength()+1) LET g_insert = 'N' END IF CALL cint112_b_fill() #ver:82#如果一直都在單身1則控制筆數位置IF g_loc = 'm' AND g_rec_b != 0 THENCALL FGL_SET_ARR_CURR(g_idx_group.getValue("'1',"))END IFLET g_loc = 'm'LET g_rec_b = g_inieuc_d.getLength()#add-point:資料輸入前 name="input.d.before_input"#end add-pointBEFORE ROW#add-point:modify段before row2 name="input.body.before_row2"#end add-point  LET l_insert = FALSELET l_cmd = ''LET l_ac_t = l_ac LET l_ac = ARR_CURR()LET g_detail_idx = l_acLET g_detail_idx_list[1] = l_acLET g_current_page = 1LET l_lock_sw = 'N'            #DEFAULTLET l_n = ARR_COUNT()DISPLAY l_ac TO FORMONLY.idxCALL s_transaction_begin()OPEN cint112_cl USING g_enterprise, g_site,g_iniduc_m.iniducdocnoIF SQLCA.SQLCODE THEN   #(ver:78)INITIALIZE g_errparam TO NULL LET g_errparam.extend = "OPEN cint112_cl:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE   #(ver:78)LET g_errparam.popup = TRUE CLOSE cint112_clCALL s_transaction_end('N','0')CALL cl_err()RETURNEND IFLET g_rec_b = g_inieuc_d.getLength()IF g_rec_b >= l_ac AND g_inieuc_d[l_ac].inieucseq IS NOT NULLTHENLET l_cmd='u'LET g_inieuc_d_t.* = g_inieuc_d[l_ac].*  #BACKUPLET g_inieuc_d_o.* = g_inieuc_d[l_ac].*  #BACKUPCALL cint112_set_entry_b(l_cmd)#add-point:modify段after_set_entry_b name="input.body.after_set_entry_b"#end add-point  CALL cint112_set_no_entry_b(l_cmd)IF NOT cint112_lock_b("inieuc_t","'1'") THENLET l_lock_sw='Y'ELSEFETCH cint112_bcl INTO g_inieuc_d[l_ac].inieucseq,g_inieuc_d[l_ac].inieuc001,g_inieuc_d[l_ac].inieuc002, g_inieuc_d[l_ac].inieuc003IF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = g_inieuc_d_t.inieucseq,":",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL cl_err()LET l_lock_sw = "Y"END IF#遮罩相關處理LET g_inieuc_d_mask_o[l_ac].* =  g_inieuc_d[l_ac].*CALL cint112_inieuc_t_mask()LET g_inieuc_d_mask_n[l_ac].* =  g_inieuc_d[l_ac].*LET g_bfill = "N"CALL cint112_show()LET g_bfill = "Y"CALL cl_show_fld_cont()END IFELSELET l_cmd='a'END IF#add-point:modify段before row name="input.body.before_row"## add by ky 20220413 startIF NOT cl_null(g_inieuc_d[l_ac].inieuc001) AND NOT cl_null(g_inieuc_d[l_ac].inieuc002) THENSELECT inicuc001,inicuc002 INTO g_inieuc_d[l_ac].inicuc001,g_inieuc_d[l_ac].inicuc002 FROM inicuc_t WHERE inicucent = g_enterprise AND inicucsite = g_siteAND inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002END IF## add by ky 20220413 end#end add-point  #其他table資料備份(確定是否更改用)LET g_detail_multi_table_t.inicucdocno = g_iniduc_m.iniducdocno
LET g_detail_multi_table_t.inicucseq = g_inieuc_d[l_ac].inieucseq
LET g_detail_multi_table_t.inicuc001 = g_inieuc_d[l_ac].inicuc001
LET g_detail_multi_table_t.inicuc002 = g_inieuc_d[l_ac].inicuc002#其他table進行lockINITIALIZE l_var_keys TO NULL INITIALIZE l_field_keys TO NULL INITIALIZE g_errparam TO NULL   #161130-00056LET l_field_keys[01] = 'inicucent'LET l_var_keys[01] = g_enterpriseLET l_field_keys[02] = 'inicucsite'LET l_var_keys[02] = g_siteLET l_field_keys[03] = 'inicucdocno'LET l_var_keys[03] = g_iniduc_m.iniducdocnoLET l_field_keys[04] = 'inicucseq'LET l_var_keys[04] = g_inieuc_d[l_ac].inieucseqIF NOT cl_multitable_lock(l_var_keys,l_field_keys,'inicuc_t') THENRETURN END IF CALL cint112_idx_chk()   #(ver:83)BEFORE INSERT  IF s_transaction_chk("N",0) THENCALL s_transaction_begin()END IFLET l_insert = TRUELET l_n = ARR_COUNT()LET l_cmd = 'a'CALL cint112_idx_chk()   #(ver:83)INITIALIZE g_inieuc_d[l_ac].* TO NULL INITIALIZE g_inieuc_d_t.* TO NULL INITIALIZE g_inieuc_d_o.* TO NULL #公用欄位給值(單身)#自定義預設值LET g_inieuc_d[l_ac].inieucseq = "0"LET g_inieuc_d[l_ac].inieuc003 = "1"#add-point:modify段before備份 name="input.body.insert.before_bak"## add by ky 20220413 startSELECT MAX(inieucseq) INTO g_inieuc_d[l_ac].inieucseq FROM inieuc_t WHERE inieucdocno = g_iniduc_m.iniducdocnoAND inieucsite = g_site AND inieucent = g_enterpriseIF cl_null(g_inieuc_d[l_ac].inieucseq) THEN LET g_inieuc_d[l_ac].inieucseq = 1 ELSELET g_inieuc_d[l_ac].inieucseq = g_inieuc_d[l_ac].inieucseq + 1END IF## add by ky 20220413 end#end add-pointLET g_inieuc_d_t.* = g_inieuc_d[l_ac].*     #新輸入資料LET g_inieuc_d_o.* = g_inieuc_d[l_ac].*     #新輸入資料CALL cl_show_fld_cont()CALL cint112_set_entry_b(l_cmd)#add-point:modify段after_set_entry_b name="input.body.insert.after_set_entry_b"#end add-pointCALL cint112_set_no_entry_b(l_cmd)IF lb_reproduce THENLET lb_reproduce = FALSELET g_inieuc_d[li_reproduce_target].* = g_inieuc_d[li_reproduce].*LET g_inieuc_d[li_reproduce_target].inieucseq = NULLEND IFLET g_detail_multi_table_t.inicucdocno = g_iniduc_m.iniducdocno
LET g_detail_multi_table_t.inicucseq = g_inieuc_d[l_ac].inieucseq
LET g_detail_multi_table_t.inicuc001 = g_inieuc_d[l_ac].inicuc001
LET g_detail_multi_table_t.inicuc002 = g_inieuc_d[l_ac].inicuc002#add-point:modify段before insert name="input.body.before_insert"#end add-point  AFTER INSERTLET l_insert = FALSEIF INT_FLAG THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = '' LET g_errparam.code = 9001 LET g_errparam.popup = FALSE CALL cl_err()LET INT_FLAG = 0CANCEL INSERTEND IF#add-point:單身新增 name="input.body.b_a_insert"#end add-pointLET l_count = 1  SELECT COUNT(1) INTO l_count FROM inieuc_t WHERE inieucent = g_enterprise AND inieucsite = g_site AND inieucdocno = g_iniduc_m.iniducdocnoAND inieucseq = g_inieuc_d[l_ac].inieucseq#資料未重複, 插入新增資料IF l_count = 0 THEN #add-point:單身新增前 name="input.body.b_insert"#end add-point#同步新增到同層的tableINITIALIZE gs_keys TO NULL LET gs_keys[1] = g_iniduc_m.iniducdocnoLET gs_keys[2] = g_inieuc_d[g_detail_idx].inieucseqCALL cint112_insert_b('inieuc_t',gs_keys,"'1'")#add-point:單身新增後 name="input.body.a_insert"#end add-pointELSE    INITIALIZE g_errparam TO NULL LET g_errparam.extend = 'INSERT' LET g_errparam.code = "std-00006" LET g_errparam.popup = TRUE INITIALIZE g_inieuc_d[l_ac].* TO NULLCALL s_transaction_end('N','0')CALL cl_err()CANCEL INSERTEND IFIF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "inieuc_t:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL s_transaction_end('N','0')                    CALL cl_err()CANCEL INSERTELSE#先刷新資料#CALL cint112_b_fill()#資料多語言用-增/改INITIALIZE l_var_keys TO NULL INITIALIZE l_field_keys TO NULL INITIALIZE l_vars TO NULL INITIALIZE l_fields TO NULL INITIALIZE l_var_keys_bak TO NULL INITIALIZE g_errparam TO NULL    #161130-00056IF g_iniduc_m.iniducdocno = g_detail_multi_table_t.inicucdocno ANDg_inieuc_d[l_ac].inieucseq = g_detail_multi_table_t.inicucseq ANDg_inieuc_d[l_ac].inicuc001 = g_detail_multi_table_t.inicuc001 ANDg_inieuc_d[l_ac].inicuc002 = g_detail_multi_table_t.inicuc002 THENELSE LET l_var_keys[01] = g_enterpriseLET l_field_keys[01] = 'inicucent'LET l_var_keys_bak[01] = g_enterpriseLET l_var_keys[02] = g_siteLET l_field_keys[02] = 'inicucsite'LET l_var_keys_bak[02] = g_siteLET l_var_keys[03] = g_iniduc_m.iniducdocnoLET l_field_keys[03] = 'inicucdocno'LET l_var_keys_bak[03] = g_detail_multi_table_t.inicucdocnoLET l_var_keys[04] = g_inieuc_d[l_ac].inieucseqLET l_field_keys[04] = 'inicucseq'LET l_var_keys_bak[04] = g_detail_multi_table_t.inicucseqLET l_vars[01] = g_inieuc_d[l_ac].inicuc001LET l_fields[01] = 'inicuc001'LET l_vars[02] = g_inieuc_d[l_ac].inicuc002LET l_fields[02] = 'inicuc002'CALL cl_multitable(l_var_keys,l_field_keys,l_vars,l_fields,l_var_keys_bak,'inicuc_t')#161130-00056 ---start---IF NOT cl_null(g_errparam.code) THENLET g_err_rec = 'Y'END IF#161130-00056 --- end ---END IF #161130-00056 ---start---IF g_err_rec = 'Y' THENCALL s_transaction_end('N','0')LET g_err_rec = 'N'CANCEL INSERTEND IF#161130-00056 --- end ---   #161130-00056 add#add-point:input段-after_insert name="input.body.a_insert2"#end add-pointCALL s_transaction_end('Y','0')#ERROR 'INSERT O.K'LET g_rec_b = g_rec_b + 1END IFBEFORE DELETE                            #是否取消單身IF l_cmd = 'a' THENLET l_cmd='d'#add-point:單身刪除後(=d) name="input.body.after_delete_d"#end add-pointELSE#add-point:單身刪除前 name="input.body.b_delete_ask"#end add-point IF NOT cl_ask_del_detail() THENCANCEL DELETEEND IFIF l_lock_sw = "Y" THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = -263 LET g_errparam.popup = TRUE CALL cl_err()CANCEL DELETEEND IF#add-point:單身刪除前 name="input.body.b_delete"#end add-point #取得該筆資料key值INITIALIZE gs_keys TO NULLLET gs_keys[01] = g_iniduc_m.iniducdocnoLET gs_keys[gs_keys.getLength()+1] = g_inieuc_d_t.inieucseq#刪除同層單身IF NOT cint112_delete_b('inieuc_t',gs_keys,"'1'") THENCALL s_transaction_end('N','0')CLOSE cint112_bclCANCEL DELETEEND IF#刪除下層單身IF NOT cint112_key_delete_b(gs_keys,'inieuc_t') THENCALL s_transaction_end('N','0')CLOSE cint112_bclCANCEL DELETEEND IF#刪除多語言INITIALIZE l_var_keys_bak TO NULL INITIALIZE l_field_keys TO NULL INITIALIZE g_errparam TO NULL    #161130-00056LET l_field_keys[01] = 'inicucent'LET l_var_keys_bak[01] = g_enterpriseLET l_field_keys[02] = 'inicucsite'LET l_var_keys_bak[02] = g_siteLET l_field_keys[03] = 'inicucdocno'LET l_var_keys_bak[03] = g_detail_multi_table_t.inicucdocnoLET l_field_keys[04] = 'inicucseq'LET l_var_keys_bak[04] = g_detail_multi_table_t.inicucseqCALL cl_multitable_delete(l_field_keys,l_var_keys_bak,'inicuc_t')#161130-00056 ---start---IF NOT cl_null(g_errparam.code) THENLET g_err_rec = 'Y'END IF#161130-00056 --- end ---#161130-00056 ---start---IF g_err_rec = 'Y' THENCALL s_transaction_end('N','0')CLOSE cint112_bclLET g_err_rec = 'N'CANCEL DELETEEND IF#161130-00056 --- end ---   #161130-00056 add#add-point:單身刪除中 name="input.body.m_delete"#end add-point CALL s_transaction_end('Y','0')CLOSE cint112_bclLET g_rec_b = g_rec_b-1#add-point:單身刪除後 name="input.body.a_delete"#end add-pointLET l_count = g_inieuc_d.getLength()#add-point:單身刪除後(<>d) name="input.body.after_delete"#end add-pointEND IFAFTER DELETE#如果是最後一筆IF l_ac = (g_inieuc_d.getLength() + 1) THENCALL FGL_SET_ARR_CURR(l_ac-1)END IF#應用 a01 樣板自動產生(Version:2)BEFORE FIELD inieucseq#add-point:BEFORE FIELD inieucseq name="input.b.page1.inieucseq"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inieucseq#add-point:AFTER FIELD inieucseq name="input.a.page1.inieucseq"#應用 a05 樣板自動產生(Version:3)#確認資料無重複IF  g_iniduc_m.iniducdocno IS NOT NULL AND g_inieuc_d[g_detail_idx].inieucseq IS NOT NULL THEN IF l_cmd = 'a' OR ( l_cmd = 'u' AND (g_iniduc_m.iniducdocno != g_iniducdocno_t OR g_inieuc_d[g_detail_idx].inieucseq != g_inieuc_d_t.inieucseq)) THEN IF NOT ap_chk_notDup("","SELECT COUNT(*) FROM inieuc_t WHERE "||"inieucent = " ||g_enterprise|| " AND inieucsite = '" ||g_site|| "' AND "||"inieucdocno = '"||g_iniduc_m.iniducdocno ||"' AND "|| "inieucseq = '"||g_inieuc_d[g_detail_idx].inieucseq ||"'",'std-00004',0) THEN NEXT FIELD CURRENTEND IFEND IFEND IF#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE inieucseq#add-point:ON CHANGE inieucseq name="input.g.page1.inieucseq"#END add-point #應用 a01 樣板自動產生(Version:2)BEFORE FIELD inieuc001#add-point:BEFORE FIELD inieuc001 name="input.b.page1.inieuc001"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inieuc001#add-point:AFTER FIELD inieuc001 name="input.a.page1.inieuc001"SELECT inicuc001,inicuc002 INTO g_inieuc_d[l_ac].inicuc001,g_inieuc_d[l_ac].inicuc002 FROM inicuc_t WHERE inicucent = g_enterprise AND inicucsite = g_siteAND inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE inieuc001#add-point:ON CHANGE inieuc001 name="input.g.page1.inieuc001"## add by ky 20220413 startIF NOT cl_null(g_inieuc_d[l_ac].inieuc001) AND NOT cl_null(g_inieuc_d[l_ac].inieuc002) THEN# 此领用单号+项次不存在或未过账!LET l_cnt = 0SELECT COUNT(1) INTO l_cnt FROM inibuc_t,inicuc_t WHERE inibucdocno = inicucdocnoAND inibucent = inicucent AND inibsite = inicsite AND inibucstus = 'S'AND inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002AND inibucent = g_enterprise AND inibucsite = g_siteIF cl_null(l_cnt) OR l_cnt = 0 THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "cin-00003"LET g_errparam.popup = TRUE CALL cl_err()NEXT FIELD CURRENTEND IF# 领用单号+项次领用的数量LET l_inicuc002 = 0SELECT inicuc002 INTO l_inicuc002 FROM inicuc_t WHERE inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002AND inicucent = g_enterprise AND inicucsite = g_siteIF cl_null(l_inicuc002) THEN LET l_inicuc002 = 0 END IF# 已经归还的数量LET l_inieuc003 = 0SELECT SUM(inieuc003) INTO l_inieuc003 FROM iniduc_t,inieuc_d WHERE iniducdocno = inieucdocno AND iniducent = inieucent AND iniducsite = inieucsiteAND iniducent = g_enterprise AND iniducsite = g_site AND iniducdocno <> g_iniduc_m.iniducdocnoIF cl_null(l_inieuc003) THEN LET l_inieuc003 = 0 END IFLET g_inieuc_d[l_ac].inieuc003 = l_inicuc002 - l_inieuc003SELECT inicuc001,inicuc002 INTO g_inieuc_d[l_ac].inicuc001,g_inieuc_d[l_ac].inicuc002 FROM inicuc_t WHERE inicucent = g_enterprise AND inicucsite = g_siteAND inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002END IF## add by ky 20220413 end#END add-point #應用 a01 樣板自動產生(Version:2)BEFORE FIELD inieuc002#add-point:BEFORE FIELD inieuc002 name="input.b.page1.inieuc002"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inieuc002#add-point:AFTER FIELD inieuc002 name="input.a.page1.inieuc002"SELECT inicuc001,inicuc002 INTO g_inieuc_d[l_ac].inicuc001,g_inieuc_d[l_ac].inicuc002 FROM inicuc_t WHERE inicucent = g_enterprise AND inicucsite = g_siteAND inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE inieuc002#add-point:ON CHANGE inieuc002 name="input.g.page1.inieuc002"## add by ky 20220413 startIF NOT cl_null(g_inieuc_d[l_ac].inieuc001) AND NOT cl_null(g_inieuc_d[l_ac].inieuc002) THEN# 此领用单号+项次不存在或未过账!LET l_cnt = 0SELECT COUNT(1) INTO l_cnt FROM inibuc_t,inicuc_t WHERE inibucdocno = inicucdocnoAND inibucent = inicucent AND inibucsite = inicucsite AND inibucstus = 'S'AND inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002AND inibucent = g_enterprise AND inibucsite = g_siteIF cl_null(l_cnt) OR l_cnt = 0 THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "cin-00003"LET g_errparam.popup = TRUE CALL cl_err()NEXT FIELD CURRENTEND IF# 领用单号+项次领用的数量LET l_inicuc002 = 0SELECT inicuc002 INTO l_inicuc002 FROM inicuc_t WHERE inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002AND inicucent = g_enterprise AND inicucsite = g_siteIF cl_null(l_inicuc002) THEN LET l_inicuc002 = 0 END IF# 已经归还的数量LET l_inieuc003 = 0SELECT SUM(inieuc003) INTO l_inieuc003 FROM iniduc_t,inieuc_d WHERE iniducdocno = inieucdocno AND iniducent = inieucent AND iniducsite = inieucsiteAND iniducent = g_enterprise AND iniducsite = g_site AND iniducdocno <> g_iniduc_m.iniducdocnoIF cl_null(l_inieuc003) THEN LET l_inieuc003 = 0 END IFLET g_inieuc_d[l_ac].inieuc003 = l_inicuc002 - l_inieuc003SELECT inicuc001,inicuc002 INTO g_inieuc_d[l_ac].inicuc001,g_inieuc_d[l_ac].inicuc002 FROM inicuc_t WHERE inicucent = g_enterprise AND inicucsite = g_siteAND inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002END IF## add by ky 20220413 end#END add-point #應用 a01 樣板自動產生(Version:2)BEFORE FIELD inicuc001#add-point:BEFORE FIELD inicuc001 name="input.b.page1.inicuc001"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inicuc001#add-point:AFTER FIELD inicuc001 name="input.a.page1.inicuc001"#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE inicuc001#add-point:ON CHANGE inicuc001 name="input.g.page1.inicuc001"#END add-point #應用 a01 樣板自動產生(Version:2)BEFORE FIELD inicuc002#add-point:BEFORE FIELD inicuc002 name="input.b.page1.inicuc002"#END add-point#應用 a02 樣板自動產生(Version:2)AFTER FIELD inicuc002#add-point:AFTER FIELD inicuc002 name="input.a.page1.inicuc002"#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE inicuc002#add-point:ON CHANGE inicuc002 name="input.g.page1.inicuc002"#END add-point #應用 a02 樣板自動產生(Version:2)AFTER FIELD inieuc003#應用 a15 樣板自動產生(Version:3)#確認欄位值在特定區間內IF NOT cl_ap_chk_range(g_inieuc_d[l_ac].inieuc003,"1","1","","","azz-00079",1) THENNEXT FIELD inieuc003END IF #add-point:AFTER FIELD inieuc003 name="input.a.page1.inieuc003"IF NOT cl_null(g_inieuc_d[l_ac].inieuc003) THEN ## add by ky 20220413 startIF NOT cl_null(g_inieuc_d[l_ac].inieuc001) AND NOT cl_null(g_inieuc_d[l_ac].inieuc002) THEN# 领用单号+项次领用的数量LET l_inicuc002 = 0SELECT inicuc002 INTO l_inicuc002 FROM inicuc_t WHERE inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002AND inicucent = g_enterprise AND inicucsite = g_siteIF cl_null(l_inicuc002) THEN LET l_inicuc002 = 0 END IF# 已经归还的数量LET l_inieuc003 = 0SELECT SUM(inieuc003) INTO l_inieuc003 FROM iniduc_t,inieuc_d WHERE iniducdocno = inieucdocno AND iniducent = inieucent AND iniducsite = inieucsiteAND iniducent = g_enterprise AND iniducsite = g_site AND iniducdocno <> g_iniduc_m.iniducdocnoIF cl_null(l_inieuc003) THEN LET l_inieuc003 = 0 END IFIF (l_inicuc002 - l_inieuc003)<g_inieuc_d[l_ac].inieuc003 THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "cin-00004"  #至azzi920中自行添加LET g_errparam.popup = TRUE CALL cl_err()NEXT FIELD CURRENTEND IFEND IF## add by ky 20220413 endEND IF #END add-point#應用 a01 樣板自動產生(Version:2)BEFORE FIELD inieuc003#add-point:BEFORE FIELD inieuc003 name="input.b.page1.inieuc003"#END add-point#應用 a04 樣板自動產生(Version:3)ON CHANGE inieuc003#add-point:ON CHANGE inieuc003 name="input.g.page1.inieuc003"#END add-point #Ctrlp:input.c.page1.inieucseq#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inieucseq#add-point:ON ACTION controlp INFIELD inieucseq name="input.c.page1.inieucseq"#END add-point#Ctrlp:input.c.page1.inieuc001#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inieuc001#add-point:ON ACTION controlp INFIELD inieuc001 name="input.c.page1.inieuc001"#應用 a07 樣板自動產生(Version:3)   #開窗i段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'i'LET g_qryparam.reqry = FALSELET g_qryparam.default1 = g_inieuc_d[l_ac].inieuc001             #給予default值#給予argLET g_qryparam.arg1 = "" #sCALL cq_iniaucdocno()                                #呼叫開窗LET g_inieuc_d[l_ac].inieuc001 = g_qryparam.return1              DISPLAY g_inieuc_d[l_ac].inieuc001 TO inieuc001              #NEXT FIELD inieuc001                          #返回原欄位#END add-point#Ctrlp:input.c.page1.inieuc002#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inieuc002#add-point:ON ACTION controlp INFIELD inieuc002 name="input.c.page1.inieuc002"#END add-point#Ctrlp:input.c.page1.inicuc001#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inicuc001#add-point:ON ACTION controlp INFIELD inicuc001 name="input.c.page1.inicuc001"#應用 a07 樣板自動產生(Version:3)   #開窗i段INITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'i'LET g_qryparam.reqry = FALSELET g_qryparam.default1 = g_inieuc_d[l_ac].inicuc001             #給予default值#給予argLET g_qryparam.arg1 = "" #sCALL cq_iniaucdocno()                                #呼叫開窗LET g_inieuc_d[l_ac].inicuc001 = g_qryparam.return1              DISPLAY g_inieuc_d[l_ac].inicuc001 TO inicuc001              #NEXT FIELD inicuc001                          #返回原欄位#END add-point#Ctrlp:input.c.page1.inicuc002#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inicuc002#add-point:ON ACTION controlp INFIELD inicuc002 name="input.c.page1.inicuc002"#END add-point#Ctrlp:input.c.page1.inieuc003#應用 a03 樣板自動產生(Version:3)ON ACTION controlp INFIELD inieuc003#add-point:ON ACTION controlp INFIELD inieuc003 name="input.c.page1.inieuc003"#END add-pointON ROW CHANGEIF INT_FLAG THENLET INT_FLAG = 0LET g_inieuc_d[l_ac].* = g_inieuc_d_t.*INITIALIZE g_errparam TO NULL LET g_errparam.extend = '' LET g_errparam.code = 9001 LET g_errparam.popup = FALSE CLOSE cint112_bclCALL s_transaction_end('N','0')CALL cl_err()EXIT DIALOG END IFIF l_lock_sw = 'Y' THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = g_inieuc_d[l_ac].inieucseq LET g_errparam.code = -263 LET g_errparam.popup = TRUE CALL cl_err()LET g_inieuc_d[l_ac].* = g_inieuc_d_t.*ELSE#add-point:單身修改前 name="input.body.b_update"#end add-point#寫入修改者/修改日期資訊(單身)#將遮罩欄位還原CALL cint112_inieuc_t_mask_restore('restore_mask_o')UPDATE inieuc_t SET (inieucdocno,inieucseq,inieuc001,inieuc002,inieuc003) = (g_iniduc_m.iniducdocno, g_inieuc_d[l_ac].inieucseq,g_inieuc_d[l_ac].inieuc001,g_inieuc_d[l_ac].inieuc002, g_inieuc_d[l_ac].inieuc003)WHERE inieucent = g_enterprise AND inieucsite = g_site AND inieucdocno = g_iniduc_m.iniducdocno AND inieucseq = g_inieuc_d_t.inieucseq #項次   #add-point:單身修改中 name="input.body.m_update"#end add-pointCASEWHEN SQLCA.sqlerrd[3] = 0  #更新不到的處理LET g_inieuc_d[l_ac].* = g_inieuc_d_t.*INITIALIZE g_errparam TO NULL LET g_errparam.extend = "inieuc_t" LET g_errparam.code = "std-00009" LET g_errparam.popup = TRUE CALL s_transaction_end('N','0')CALL cl_err()WHEN SQLCA.SQLCODE #其他錯誤LET g_inieuc_d[l_ac].* = g_inieuc_d_t.*  INITIALIZE g_errparam TO NULL LET g_errparam.extend = "inieuc_t:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL s_transaction_end('N','0')CALL cl_err()                   OTHERWISE#資料多語言用-增/改INITIALIZE l_var_keys TO NULL INITIALIZE l_field_keys TO NULL INITIALIZE l_vars TO NULL INITIALIZE l_fields TO NULL INITIALIZE l_var_keys_bak TO NULL INITIALIZE g_errparam TO NULL    #161130-00056IF g_iniduc_m.iniducdocno = g_detail_multi_table_t.inicucdocno ANDg_inieuc_d[l_ac].inieucseq = g_detail_multi_table_t.inicucseq ANDg_inieuc_d[l_ac].inicuc001 = g_detail_multi_table_t.inicuc001 ANDg_inieuc_d[l_ac].inicuc002 = g_detail_multi_table_t.inicuc002 THENELSE LET l_var_keys[01] = g_enterpriseLET l_field_keys[01] = 'inicucent'LET l_var_keys_bak[01] = g_enterpriseLET l_var_keys[02] = g_siteLET l_field_keys[02] = 'inicucsite'LET l_var_keys_bak[02] = g_siteLET l_var_keys[03] = g_iniduc_m.iniducdocnoLET l_field_keys[03] = 'inicucdocno'LET l_var_keys_bak[03] = g_detail_multi_table_t.inicucdocnoLET l_var_keys[04] = g_inieuc_d[l_ac].inieucseqLET l_field_keys[04] = 'inicucseq'LET l_var_keys_bak[04] = g_detail_multi_table_t.inicucseqLET l_vars[01] = g_inieuc_d[l_ac].inicuc001LET l_fields[01] = 'inicuc001'LET l_vars[02] = g_inieuc_d[l_ac].inicuc002LET l_fields[02] = 'inicuc002'CALL cl_multitable(l_var_keys,l_field_keys,l_vars,l_fields,l_var_keys_bak,'inicuc_t')#161130-00056 ---start---IF NOT cl_null(g_errparam.code) THENLET g_err_rec = 'Y'END IF#161130-00056 --- end ---END IF #161130-00056 ---start---IF g_err_rec = 'Y' THENLET g_inieuc_d[l_ac].* = g_inieuc_d_t.*CALL s_transaction_end('N','0')LET g_err_rec = 'N'END IF#161130-00056 --- end ---   #161130-00056 addINITIALIZE gs_keys TO NULL LET gs_keys[1] = g_iniduc_m.iniducdocnoLET gs_keys_bak[1] = g_iniducdocno_tLET gs_keys[2] = g_inieuc_d[g_detail_idx].inieucseqLET gs_keys_bak[2] = g_inieuc_d_t.inieucseqCALL cint112_update_b('inieuc_t',gs_keys,gs_keys_bak,"'1'")END CASE#將遮罩欄位進行遮蔽CALL cint112_inieuc_t_mask_restore('restore_mask_n')#判斷key是否有改變INITIALIZE gs_keys TO NULLIF NOT(g_inieuc_d[g_detail_idx].inieucseq = g_inieuc_d_t.inieucseq ) THENLET gs_keys[01] = g_iniduc_m.iniducdocnoLET gs_keys[gs_keys.getLength()+1] = g_inieuc_d_t.inieucseqCALL cint112_key_update_b(gs_keys,'inieuc_t')END IF#修改歷程記錄(單身修改)LET g_log1 = util.JSON.stringify(g_iniduc_m),util.JSON.stringify(g_inieuc_d_t)LET g_log2 = util.JSON.stringify(g_iniduc_m),util.JSON.stringify(g_inieuc_d[l_ac])IF NOT cl_log_modified_record_d(g_log1,g_log2) THEN CALL s_transaction_end('N','0')END IF#add-point:單身修改後 name="input.body.a_update"#end add-pointEND IFAFTER ROW#add-point:單身after_row name="input.body.after_row"#end add-pointCALL cint112_unlock_b("inieuc_t","'1'")CALL s_transaction_end('Y','0')#其他table進行unlock#add-point:單身after_row2 name="input.body.after_row2"#end add-pointAFTER INPUT#add-point:input段after input  name="input.body.after_input"#end add-point ON ACTION controlo    IF l_insert THEN#170920-00028 ---modify start---#新增判斷是否有上一筆資料可供複製IF l_ac_t <= 0 OR l_ac_t IS NULL THENINITIALIZE g_errparam TO NULLLET g_errparam.extend = ""LET g_errparam.code   = "adz-01032"LET g_errparam.popup  = TRUECALL cl_err()ELSELET li_reproduce = l_ac_tLET li_reproduce_target = l_acLET g_inieuc_d[li_reproduce_target].* = g_inieuc_d[li_reproduce].*LET g_inieuc_d[li_reproduce_target].inieucseq = NULLEND IF#170920-00028 --- modify end ---ELSECALL FGL_SET_ARR_CURR(g_inieuc_d.getLength()+1)LET lb_reproduce = TRUELET li_reproduce = l_acLET li_reproduce_target = g_inieuc_d.getLength()+1END IF#(ver:84) ---start---#add-point:input段單身複製  name="input.body.controlo"#end add-point#(ver:84) --- end ---#ON ACTION cancel#   LET INT_FLAG = 1#   LET g_detail_idx = 1#   EXIT DIALOG END INPUT{</section>}{<section id="cint112.input.other" type="s" >}#add-point:自定義input name="input.more_input"#end add-pointBEFORE DIALOG #CALL cl_err_collect_init()    #add-point:input段before dialog name="input.before_dialog"#end add-point    #重新導回資料到正確位置上CALL DIALOG.setCurrentRow("s_detail1",g_idx_group.getValue("'1',"))      #新增時強制從單頭開始填IF p_cmd = 'a' THEN#add-point:input段next_field name="input.next_field"#end add-point  NEXT FIELD iniducdocno #170906-00011#1ELSECASE g_awWHEN "s_detail1"NEXT FIELD inieucseq #170906-00011#1#add-point:input段modify_detail  name="input.modify_detail.other"#end add-point  END CASEEND IFAFTER DIALOG#add-point:input段after_dialog name="input.after_dialog"#end add-point    ON ACTION controlfCALL cl_set_focus_form(ui.Interface.getRootNode()) RETURNING g_fld_name,g_frm_nameCALL cl_fldhelp(g_frm_name,g_fld_name,g_lang)ON ACTION controlrCALL cl_show_req_fields()ON ACTION controlsIF g_header_hidden THENCALL gfrm_curr.setElementHidden("vb_master",0)CALL gfrm_curr.setElementImage("controls","small/arr-u.png")LET g_header_hidden = 0     #visibleELSECALL gfrm_curr.setElementHidden("vb_master",1)CALL gfrm_curr.setElementImage("controls","small/arr-d.png")LET g_header_hidden = 1     #hidden     END IFON ACTION accept#add-point:input段accept  name="input.accept"#end add-point    ACCEPT DIALOGON ACTION cancel      #在dialog button (放棄)#add-point:input段cancel name="input.cancel"#end add-point  LET INT_FLAG = TRUE LET g_detail_idx  = 1LET g_detail_idx2 = 1#各個page指標LET g_detail_idx_list[1] = 1 CALL g_curr_diag.setCurrentRow("s_detail1",1)    EXIT DIALOGON ACTION close       #在dialog 右上角 (X)#add-point:input段close name="input.close"#end add-point  LET INT_FLAG = TRUE EXIT DIALOGON ACTION exit        #toolbar 離開#add-point:input段exit name="input.exit"#end add-pointLET INT_FLAG = TRUE LET g_detail_idx  = 1LET g_detail_idx2 = 1#各個page指標LET g_detail_idx_list[1] = 1 CALL g_curr_diag.setCurrentRow("s_detail1",1)    EXIT DIALOG#交談指令共用ACTION&include "common_action.4gl" CONTINUE DIALOG END DIALOG#add-point:input段after input  name="input.after_input"#end add-point    END FUNCTION{</section>}{<section id="cint112.show" type="s" >}
#+ 單頭資料重新顯示及單身資料重抓
PRIVATE FUNCTION cint112_show()#add-point:show段define(客製用) name="show.define_customerization"#end add-point  DEFINE l_ac_t    LIKE type_t.num10#add-point:show段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="show.define"#end add-point  #add-point:Function前置處理 name="show.before"#end add-pointIF g_bfill = "Y" THENCALL cint112_b_fill() #單身填充CALL cint112_b_fill2('0') #單身填充END IF#帶出公用欄位reference值#應用 a12 樣板自動產生(Version:4)#顯示followup圖示#應用 a48 樣板自動產生(Version:3)CALL cint112_set_pk_array()#add-point:ON ACTION agendum name="show.follow_pic"#END add-pointCALL cl_user_overview_set_follow_pic()LET l_ac_t = l_ac#讀入ref值(單頭)#add-point:show段reference name="show.head.reference"#end add-point#遮罩相關處理LET g_iniduc_m_mask_o.* =  g_iniduc_m.*CALL cint112_iniduc_t_mask()LET g_iniduc_m_mask_n.* =  g_iniduc_m.*#將資料輸出到畫面上DISPLAY BY NAME g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001,g_iniduc_m.iniducstus, g_iniduc_m.iniducownid,g_iniduc_m.iniducownid_desc,g_iniduc_m.iniducowndp,g_iniduc_m.iniducowndp_desc, g_iniduc_m.iniduccrtid,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdp_desc, g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmodid_desc,g_iniduc_m.iniducmoddt, g_iniduc_m.iniduccnfid,g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid, g_iniduc_m.iniducpstid_desc,g_iniduc_m.iniducpstdt#顯示狀態(stus)圖片#應用 a21 樣板自動產生(Version:3)#根據當下狀態碼顯示圖片CASE g_iniduc_m.iniducstus WHEN "N"CALL gfrm_curr.setElementImage("statechange", "stus/32/unconfirmed.png")WHEN "Y"CALL gfrm_curr.setElementImage("statechange", "stus/32/confirmed.png")WHEN "S"CALL gfrm_curr.setElementImage("statechange", "stus/32/posted.png")WHEN "Z"CALL gfrm_curr.setElementImage("statechange", "stus/32/unposted.png")END CASE#讀入ref值(單身)FOR l_ac = 1 TO g_inieuc_d.getLength()#add-point:show段單身reference name="show.body.reference"#   INITIALIZE g_ref_fields TO NULL 
#   LET g_ref_fields[1] = g_iniduc_m.iniducdocno
#   LET g_ref_fields[2] = g_inieuc_d[l_ac].inieucseq
#   CALL ap_ref_array2(g_ref_fields," SELECT inicuc001,inicuc002 FROM inicuc_t WHERE inicucent = "||g_enterprise||" AND inicucdocno = ? AND inicucseq = ? ","") RETURNING g_rtn_fields 
#   LET g_inieuc_d[l_ac].inicuc001 = g_rtn_fields[1] 
#   LET g_inieuc_d[l_ac].inicuc002 = g_rtn_fields[2] 
#   DISPLAY BY NAME g_inieuc_d[l_ac].inicuc001,g_inieuc_d[l_ac].inicuc002#end add-pointEND FOR#add-point:show段other name="show.other"#end add-point  LET l_ac = l_ac_t#移動上下筆可以連動切換資料CALL cl_show_fld_cont()     CALL cint112_detail_show()#add-point:show段之後 name="show.after"#end add-pointEND FUNCTION{</section>}{<section id="cint112.detail_show" type="s" >}
#+ 第二階單身reference
PRIVATE FUNCTION cint112_detail_show()#add-point:detail_show段define(客製用) name="detail_show.define_customerization"#end add-point  #add-point:detail_show段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="detail_show.define"#end add-point  #add-point:Function前置處理 name="detail_show.before"#end add-point#add-point:detail_show段之後 name="detail_show.after"#end add-pointEND FUNCTION{</section>}{<section id="cint112.reproduce" type="s" >}
#+ 資料複製
PRIVATE FUNCTION cint112_reproduce()#add-point:reproduce段define(客製用) name="reproduce.define_customerization"#end add-point   DEFINE l_newno     LIKE iniduc_t.iniducdocno DEFINE l_oldno     LIKE iniduc_t.iniducdocno DEFINE l_master    RECORD LIKE iniduc_t.* #此變數樣板目前無使用DEFINE l_detail    RECORD LIKE inieuc_t.* #此變數樣板目前無使用DEFINE l_cnt       LIKE type_t.num10#add-point:reproduce段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="reproduce.define"#end add-point   #add-point:Function前置處理  name="reproduce.pre_function"#end add-point#切換畫面LET g_master_insert = FALSEIF g_iniduc_m.iniducdocno IS NULLTHENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "std-00003" LET g_errparam.popup = FALSE CALL cl_err()RETURNEND IFLET g_iniducdocno_t = g_iniduc_m.iniducdocnoLET g_iniduc_m.iniducdocno = ""CALL cl_set_head_visible("","YES")#公用欄位給予預設值#應用 a14 樣板自動產生(Version:5)    #公用欄位新增給值  LET g_iniduc_m.iniducownid = g_userLET g_iniduc_m.iniducowndp = g_deptLET g_iniduc_m.iniduccrtid = g_userLET g_iniduc_m.iniduccrtdp = g_dept LET g_iniduc_m.iniduccrtdt = cl_get_current()LET g_iniduc_m.iniducmodid = g_userLET g_iniduc_m.iniducmoddt = cl_get_current()LET g_iniduc_m.iniducstus = 'N'CALL s_transaction_begin()#add-point:複製輸入前 name="reproduce.head.b_input"#end add-point#顯示狀態(stus)圖片#應用 a21 樣板自動產生(Version:3)#根據當下狀態碼顯示圖片CASE g_iniduc_m.iniducstus WHEN "N"CALL gfrm_curr.setElementImage("statechange", "stus/32/unconfirmed.png")WHEN "Y"CALL gfrm_curr.setElementImage("statechange", "stus/32/confirmed.png")WHEN "S"CALL gfrm_curr.setElementImage("statechange", "stus/32/posted.png")WHEN "Z"CALL gfrm_curr.setElementImage("statechange", "stus/32/unposted.png")END CASE#清空key欄位的descCALL cint112_input("r")IF INT_FLAG AND NOT g_master_insert THENLET INT_FLAG = 0DISPLAY g_detail_cnt  TO FORMONLY.h_count    #總筆數DISPLAY g_current_idx TO FORMONLY.h_index    #當下筆數LET INT_FLAG = 0INITIALIZE g_iniduc_m.* TO NULLINITIALIZE g_inieuc_d TO NULL#add-point:複製取消後 name="reproduce.cancel"#end add-pointCALL cint112_show()CALL cint112_idx_chk()   #(ver:83)INITIALIZE g_errparam TO NULL LET g_errparam.extend = '' LET g_errparam.code = 9001 LET g_errparam.popup = FALSE CALL s_transaction_end('N','0')CALL cl_err()RETURNEND IF#根據資料狀態切換action狀態CALL cl_set_act_visible("statechange,modify,modify_detail,delete,reproduce", TRUE)CALL cint112_set_act_visible()   CALL cint112_set_act_no_visible()#將新增的資料併入搜尋條件中LET g_iniducdocno_t = g_iniduc_m.iniducdocno#組合新增資料的條件LET g_add_browse = " iniducent = " ||g_enterprise|| " AND iniducsite = '" ||g_site|| "' AND"," iniducdocno = '", g_iniduc_m.iniducdocno, "' "#填到最後面LET g_current_idx = g_browser.getLength() + 1CALL cint112_browser_fill("")DISPLAY g_browser_cnt TO FORMONLY.h_count    #總筆數DISPLAY g_current_idx TO FORMONLY.h_index    #當下筆數CALL cl_navigator_setting(g_current_idx, g_browser_cnt)#add-point:完成複製段落後 name="reproduce.after_reproduce"#end add-pointCALL cint112_idx_chk()LET g_data_owner = g_iniduc_m.iniducownid      LET g_data_dept  = g_iniduc_m.iniducowndpLET g_data_crtid = g_iniduc_m.iniduccrtid   #180201-00054LET g_data_crtdp = g_iniduc_m.iniduccrtdp   #180201-00054#功能已完成,通報訊息中心CALL cint112_msgcentre_notify('reproduce')END FUNCTION{</section>}{<section id="cint112.detail_reproduce" type="s" >}
#+ 單身自動複製
PRIVATE FUNCTION cint112_detail_reproduce()#add-point:delete段define(客製用) name="detail_reproduce.define_customerization"#end add-point    DEFINE ls_sql      STRINGDEFINE ld_date     DATETIME YEAR TO SECONDDEFINE l_detail    RECORD LIKE inieuc_t.* #此變數樣板目前無使用#add-point:delete段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="detail_reproduce.define"#end add-point    #add-point:Function前置處理  name="detail_reproduce.pre_function"#end add-pointCALL s_transaction_begin()LET ld_date = cl_get_current()DROP TABLE cint112_detail#add-point:單身複製前1 name="detail_reproduce.body.table1.b_insert"#end add-point#CREATE TEMP TABLESELECT * FROM inieuc_tWHERE inieucent = g_enterprise AND inieucsite = g_site AND inieucdocno = g_iniducdocno_tINTO TEMP cint112_detail#將key修正為調整後   UPDATE cint112_detail #更新key欄位SET inieucdocno = g_iniduc_m.iniducdocno#更新共用欄位#add-point:單身修改前 name="detail_reproduce.body.table1.b_update"#end add-point                                       #將資料塞回原table   INSERT INTO inieuc_t SELECT * FROM cint112_detailIF SQLCA.SQLCODE THEN#180110-00034 ---start---#add-point:錯誤時處理 name="detail_reproduce.body.table1.rollback"#end add-pointCALL s_transaction_end('N','0')#180110-00034 --- end ---INITIALIZE g_errparam TO NULL LET g_errparam.extend = "reproduce:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL cl_err()RETURNEND IF#add-point:單身複製中1 name="detail_reproduce.body.table1.m_insert"#end add-point#刪除TEMP TABLEDROP TABLE cint112_detail#add-point:單身複製後1 name="detail_reproduce.body.table1.a_insert"#end add-point#多語言複製段落#應用 a38 樣板自動產生(Version:8)#單身多語言複製DROP TABLE cint112_detail_lang#add-point:單身複製前1 name="detail_reproduce.body.lang0.b_insert"#end add-point#CREATE TEMP TABLE & INSERT SELECT * FROM inicuc_t WHERE inicucent = g_enterprise AND inicucdocno = g_iniducdocno_tINTO TEMP cint112_detail_lang#將key修正為調整後   UPDATE cint112_detail_lang #更新key欄位SET inicucdocno = g_iniduc_m.iniducdocno#add-point:單身修改前 name="detail_reproduce.body.lang0.b_update"#end add-point   #避免因殘留的新key資料影響寫入, 先進行刪除動作 DELETE FROM inicuc_tWHERE inicucent = g_enterprise AND inicucdocno = g_iniduc_m.iniducdocno#將資料塞回原table   INSERT INTO inicuc_t SELECT * FROM cint112_detail_langIF SQLCA.sqlcode THEN#180110-00034 ---start---#add-point:錯誤時處理 name="detail_reproduce.body.lang0.rollback"#end add-pointCALL s_transaction_end('N','0')#180110-00034 --- end ---INITIALIZE g_errparam TO NULL LET g_errparam.extend = "reproduce" LET g_errparam.code   = SQLCA.sqlcode LET g_errparam.popup  = TRUE CALL cl_err()RETURNEND IF#add-point:單身複製中1 name="detail_reproduce.lang0.table1.m_insert"#end add-point#刪除TEMP TABLEDROP TABLE cint112_detail_lang#add-point:單身複製後1 name="detail_reproduce.lang0.table1.a_insert"#end add-pointCALL s_transaction_end('Y','0')#已新增完, 調整資料內容(修改時使用)LET g_iniducdocno_t = g_iniduc_m.iniducdocnoEND FUNCTION{</section>}{<section id="cint112.delete" type="s" >}
#+ 資料刪除
PRIVATE FUNCTION cint112_delete()#add-point:delete段define(客製用) name="delete.define_customerization"#end add-point     DEFINE  l_var_keys      DYNAMIC ARRAY OF STRINGDEFINE  l_field_keys    DYNAMIC ARRAY OF STRINGDEFINE  l_vars          DYNAMIC ARRAY OF STRINGDEFINE  l_fields        DYNAMIC ARRAY OF STRINGDEFINE  l_var_keys_bak  DYNAMIC ARRAY OF STRING#add-point:delete段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="delete.define"#end add-point     #add-point:Function前置處理  name="delete.pre_function"#end add-pointIF g_iniduc_m.iniducdocno IS NULLTHENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "std-00003" LET g_errparam.popup = FALSE CALL cl_err()RETURNEND IFCALL s_transaction_begin()OPEN cint112_cl USING g_enterprise, g_site,g_iniduc_m.iniducdocnoIF SQLCA.SQLCODE THEN   #(ver:78)INITIALIZE g_errparam TO NULL LET g_errparam.extend = "OPEN cint112_cl:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE   #(ver:78)LET g_errparam.popup = TRUE CLOSE cint112_clCALL s_transaction_end('N','0')CALL cl_err()RETURNEND IF#顯示最新的資料EXECUTE cint112_master_referesh USING g_site,g_iniduc_m.iniducdocno INTO g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt, g_iniduc_m.iniduc001,g_iniduc_m.iniducstus,g_iniduc_m.iniducownid,g_iniduc_m.iniducowndp,g_iniduc_m.iniduccrtid, g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt,g_iniduc_m.iniduccnfid, g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid,g_iniduc_m.iniducpstdt,g_iniduc_m.iniducownid_desc, g_iniduc_m.iniducowndp_desc,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp_desc,g_iniduc_m.iniducmodid_desc, g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniducpstid_desc#檢查是否允許此動作IF NOT cint112_action_chk() THENCALL s_transaction_end('N','0')RETURNEND IF#遮罩相關處理LET g_iniduc_m_mask_o.* =  g_iniduc_m.*CALL cint112_iniduc_t_mask()LET g_iniduc_m_mask_n.* =  g_iniduc_m.*CALL cint112_show()#add-point:delete段before ask name="delete.before_ask"#end add-point IF cl_ask_del_master() THEN              #確認一下#add-point:單頭刪除前 name="delete.head.b_delete"#end add-point   #應用 a47 樣板自動產生(Version:4)#刪除相關文件CALL cint112_set_pk_array()#add-point:相關文件刪除前 name="delete.befroe.related_document_remove"#end add-point   CALL cl_doc_remove()  #資料備份LET g_iniducdocno_t = g_iniduc_m.iniducdocnoDELETE FROM iniduc_tWHERE iniducent = g_enterprise AND iniducsite = g_site AND iniducdocno = g_iniduc_m.iniducdocno#add-point:單頭刪除中 name="delete.head.m_delete"#end add-pointIF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = g_iniduc_m.iniducdocno,":",SQLERRMESSAGE  LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = FALSE CALL s_transaction_end('N','0')CALL cl_err()RETURNEND IF#add-point:單頭刪除後 name="delete.head.a_delete"IF NOT s_aooi200_del_docno(g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt) THENCALL s_transaction_end('N','0')RETURNEND IF#end add-point#add-point:單身刪除前 name="delete.body.b_delete"#end add-pointDELETE FROM inieuc_tWHERE inieucent = g_enterprise AND inieucsite = g_site AND inieucdocno = g_iniduc_m.iniducdocno#add-point:單身刪除中 name="delete.body.m_delete"#end add-pointIF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "inieuc_t:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = FALSE CALL s_transaction_end('N','0')CALL cl_err()RETURNEND IF    #add-point:單身刪除後 name="delete.body.a_delete"#end add-point#修改歷程記錄(刪除)LET g_log1 = util.JSON.stringify(g_iniduc_m)   #(ver:78)IF NOT cl_log_modified_record(g_log1,'') THEN    #(ver:78)CLOSE cint112_clCALL s_transaction_end('N','0')RETURNEND IFCLEAR FORMCALL g_inieuc_d.clear() CALL cint112_ui_browser_refresh()  #CALL cint112_ui_headershow()  #CALL cint112_ui_detailshow()#add-point:多語言刪除 name="delete.lang.before_delete"#end add-point#單頭多語言刪除#161130-00056 add#單身多語言刪除INITIALIZE l_var_keys_bak TO NULL INITIALIZE l_field_keys TO NULL INITIALIZE g_errparam TO NULL   #161130-00056LET l_field_keys[01] = 'inicucent'LET l_var_keys_bak[01] = g_enterpriseLET l_field_keys[02] = 'inicucsite'LET l_var_keys_bak[02] = g_siteLET l_field_keys[03] = 'inicucdocno'LET l_var_keys_bak[03] = g_iniduc_m.iniducdocnoCALL cl_multitable_delete(l_field_keys,l_var_keys_bak,'inicuc_t')#161130-00056 ---start---IF NOT cl_null(g_errparam.code) THENLET g_err_rec = 'Y'END IF#161130-00056 --- end ---#161130-00056 ---start---IF g_err_rec = 'Y' THENCALL s_transaction_end('N','0')LET g_err_rec = 'N'RETURNEND IF#161130-00056 --- end ---#161130-00056 add#add-point:多語言刪除 name="delete.lang.delete"#end add-point#清空單頭資料INITIALIZE g_iniduc_m.* TO NULL   #180420-00043IF g_browser_cnt > 0 THEN #CALL cint112_browser_fill("")CALL cint112_fetch('P')DISPLAY g_browser_cnt TO FORMONLY.h_count   #總筆數的顯示DISPLAY g_browser_cnt TO FORMONLY.b_count   #總筆數的顯示ELSECLEAR FORMEND IFCALL s_transaction_end('Y','0')ELSECALL s_transaction_end('N','0')END IFCLOSE cint112_cl#功能已完成,通報訊息中心CALL cint112_msgcentre_notify('delete')END FUNCTION{</section>}{<section id="cint112.b_fill" type="s" >}
#+ 單身陣列填充
PRIVATE FUNCTION cint112_b_fill()#add-point:b_fill段define(客製用) name="b_fill.define_customerization"#end add-point     DEFINE p_wc2      STRINGDEFINE li_idx     LIKE type_t.num10#add-point:b_fill段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="b_fill.define"#end add-point     #add-point:Function前置處理  name="b_fill.pre_function"#end add-point#清空第一階單身CALL g_inieuc_d.clear()#add-point:b_fill段sql_before name="b_fill.sql_before"#end add-point#判斷是否填充IF cint112_fill_chk(1) THEN#切換上下筆時不重組SQL#若有觸發條件(g_wc2)異動的任何行為都需添加在下方條件中,避免條件無正常刷新 ver:81IF (g_action_choice = "query" OR cl_null(g_action_choice) OR g_action_choice = "queryplan" OR g_action_choice = "insert" OR g_action_choice = "modify" OR g_action_choice = "reproduce" ) #ver:81 #ver:82#add-point:b_fill段long_sql_if name="b_fill.long_sql_if"#end add-pointTHENLET g_sql = "SELECT  DISTINCT inieucseq,inieuc001,inieuc002,inieuc003  FROM inieuc_t",   " INNER JOIN iniduc_t ON iniducent = " ||g_enterprise|| " AND iniducsite = '" ||g_site|| "' AND iniducdocno = inieucdocno ",#" LEFT JOIN inicuc_t ON inicucent = "||g_enterprise||" AND inicucsite = '"||g_site||"' AND iniducdocno = inicucdocno AND inieucseq = inicucseq"," LEFT JOIN inicuc_t ON inicucent = "||g_enterprise||" AND inicucsite = '"||g_site||"' AND iniducdocno = inicucdocno AND inieucseq = inicucseq",#下層單身所需的join條件" WHERE inieucent=? AND inieucdocno=? AND inieucsite=?"LET g_sql = cl_sql_add_mask(g_sql)              #遮蔽特定資料#add-point:b_fill段sql_before name="b_fill.body.fill_sql"## add by ky 20220413 startLET g_sql = "SELECT  DISTINCT inieucseq,inieuc001,inieuc002,inieuc003  FROM inieuc_t",   " INNER JOIN iniduc_t ON iniducent = " ||g_enterprise|| " AND iniducsite = '" ||g_site|| "' AND iniducdocno = inieucdocno ",#" LEFT JOIN inicuc_t ON inicucent = "||g_enterprise||" AND inicucsite = '"||g_site||"' AND iniducdocno = inicucdocno AND inieucseq = inicucseq"," LEFT JOIN inicuc_t ON inicucent = "||g_enterprise||" AND inicucsite = '"||g_site||"' AND iniducdocno = inicucdocno AND inieucseq = inicucseq",#下層單身所需的join條件" WHERE inieucent=? AND inieucsite=? AND inieucdocno=? "LET g_sql = cl_sql_add_mask(g_sql)              #遮蔽特定資料## add by ky 20220413 end#end add-pointIF NOT cl_null(g_wc2_table1) THENLET g_sql = g_sql CLIPPED, " AND ", g_wc2_table1 CLIPPEDEND IF#子單身的WCLET g_sql = g_sql, " ORDER BY inieuc_t.inieucseq"#add-point:單身填充控制 name="b_fill.sql"#end add-pointLET g_sql = cl_sql_add_mask(g_sql)              #遮蔽特定資料PREPARE cint112_pb FROM g_sqlDECLARE b_fill_cs CURSOR FOR cint112_pbEND IFLET g_cnt = l_acLET l_ac = 1#  OPEN b_fill_cs USING g_enterprise, g_site,g_iniduc_m.iniducdocno   #(ver:78)FOREACH b_fill_cs USING g_enterprise, g_site,g_iniduc_m.iniducdocno INTO g_inieuc_d[l_ac].inieucseq, g_inieuc_d[l_ac].inieuc001,g_inieuc_d[l_ac].inieuc002,g_inieuc_d[l_ac].inieuc003   #(ver:78) IF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "FOREACH:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL cl_err()EXIT FOREACHEND IF#add-point:b_fill段資料填充 name="b_fill.fill"## add by ky 20220413 startSELECT inicuc001,inicuc002 INTO g_inieuc_d[l_ac].inicuc001,g_inieuc_d[l_ac].inicuc002 FROM inicuc_t WHERE inicucent = g_enterprise AND inicucsite = g_siteAND inicucdocno = g_inieuc_d[l_ac].inieuc001 AND inicucseq = g_inieuc_d[l_ac].inieuc002## add by ky 20220413 end#end add-pointIF l_ac > g_max_rec THENIF g_error_show = 1 THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = l_acLET g_errparam.code = 9035 LET g_errparam.popup = TRUE CALL cl_err()END IFEXIT FOREACHEND IFLET l_ac = l_ac + 1END FOREACHLET g_error_show = 0END IF#add-point:browser_fill段其他table處理 name="browser_fill.other_fill"#end add-pointCALL g_inieuc_d.deleteElement(g_inieuc_d.getLength())LET l_ac = g_cntLET g_cnt = 0  FREE cint112_pbLET li_idx = l_ac#遮罩相關處理FOR l_ac = 1 TO g_inieuc_d.getLength()LET g_inieuc_d_mask_o[l_ac].* =  g_inieuc_d[l_ac].*CALL cint112_inieuc_t_mask()LET g_inieuc_d_mask_n[l_ac].* =  g_inieuc_d[l_ac].*END FORLET l_ac = li_idxCALL cl_ap_performance_next_end()END FUNCTION{</section>}{<section id="cint112.delete_b" type="s" >}
#+ 刪除單身後其他table連動
PRIVATE FUNCTION cint112_delete_b(ps_table,ps_keys_bak,ps_page)#add-point:delete_b段define(客製用) name="delete_b.define_customerization"#end add-point     DEFINE ps_table    STRINGDEFINE ps_page     STRINGDEFINE ps_keys_bak DYNAMIC ARRAY OF VARCHAR(500)DEFINE ls_group    STRINGDEFINE li_idx      LIKE type_t.num10#add-point:delete_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="delete_b.define"#end add-point     #add-point:Function前置處理  name="delete_b.pre_function"#end add-pointLET g_update = TRUE  #判斷是否是同一群組的tableLET ls_group = "'1',"IF ls_group.getIndexOf(ps_page,1) > 0 THEN#add-point:delete_b段刪除前 name="delete_b.b_delete"#end add-point    DELETE FROM inieuc_tWHERE inieucent = g_enterprise AND inieucsite = g_site ANDinieucdocno = ps_keys_bak[1] AND inieucseq = ps_keys_bak[2]#add-point:delete_b段刪除中 name="delete_b.m_delete"#end add-point    IF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = ":",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = FALSE CALL cl_err()RETURN FALSEEND IFLET li_idx = g_detail_idxIF ps_page <> "'1'" THEN CALL g_inieuc_d.deleteElement(li_idx) END IF END IF#add-point:delete_b段other name="delete_b.other"#end add-point  RETURN TRUEEND FUNCTION{</section>}{<section id="cint112.insert_b" type="s" >}
#+ 新增單身後其他table連動
PRIVATE FUNCTION cint112_insert_b(ps_table,ps_keys,ps_page)#add-point:insert_b段define(客製用) name="insert_b.define_customerization"#end add-point     DEFINE ps_table    STRINGDEFINE ps_page     STRINGDEFINE ps_keys     DYNAMIC ARRAY OF VARCHAR(500)DEFINE ls_group    STRINGDEFINE ls_page     STRINGDEFINE li_idx      LIKE type_t.num10#add-point:insert_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="insert_b.define"#end add-point     #add-point:Function前置處理  name="insert_b.pre_function"#end add-pointLET g_update = TRUE  #判斷是否是同一群組的tableLET ls_group = "'1',"IF ls_group.getIndexOf(ps_page,1) > 0 THEN#add-point:insert_b段資料新增前 name="insert_b.before_insert"#end add-point INSERT INTO inieuc_t(inieucent, inieucsite,inieucdocno,inieucseq,inieuc001,inieuc002,inieuc003) VALUES(g_enterprise, g_site,ps_keys[1],ps_keys[2],g_inieuc_d[g_detail_idx].inieuc001,g_inieuc_d[g_detail_idx].inieuc002,g_inieuc_d[g_detail_idx].inieuc003) #add-point:insert_b段資料新增中 name="insert_b.m_insert"#end add-point IF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "inieuc_t:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = FALSE CALL cl_err()END IFLET li_idx = g_detail_idxIF ps_page <> "'1'" THEN CALL g_inieuc_d.insertElement(li_idx) END IF #add-point:insert_b段資料新增後 name="insert_b.after_insert"#end add-point END IF#add-point:insert_b段other name="insert_b.other"#end add-point     END FUNCTION{</section>}{<section id="cint112.update_b" type="s" >}
#+ 修改單身後其他table連動
PRIVATE FUNCTION cint112_update_b(ps_table,ps_keys,ps_keys_bak,ps_page)#add-point:update_b段define(客製用) name="update_b.define_customerization"#end add-point   DEFINE ps_table         STRINGDEFINE ps_page          STRINGDEFINE ps_keys          DYNAMIC ARRAY OF VARCHAR(500)DEFINE ps_keys_bak      DYNAMIC ARRAY OF VARCHAR(500)DEFINE ls_group         STRINGDEFINE li_idx           LIKE type_t.num10 DEFINE lb_chk           BOOLEANDEFINE l_new_key        DYNAMIC ARRAY OF STRINGDEFINE l_old_key        DYNAMIC ARRAY OF STRINGDEFINE l_field_key      DYNAMIC ARRAY OF STRING#add-point:update_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="update_b.define"#end add-point   #add-point:Function前置處理  name="update_b.pre_function"#end add-pointLET g_update = TRUE   #判斷key是否有改變LET lb_chk = TRUEFOR li_idx = 1 TO ps_keys.getLength()IF ps_keys[li_idx] <> ps_keys_bak[li_idx] THENLET lb_chk = FALSEEXIT FOREND IFEND FOR#不需要做處理IF lb_chk THENRETURNEND IF#判斷是否是同一群組的tableLET ls_group = "'1',"IF ls_group.getIndexOf(ps_page,1) > 0 AND ps_table <> "inieuc_t" THEN#add-point:update_b段修改前 name="update_b.before_update"#end add-point #將遮罩欄位還原CALL cint112_inieuc_t_mask_restore('restore_mask_o')UPDATE inieuc_t SET (inieucdocno,inieucseq,inieuc001,inieuc002,inieuc003) = (ps_keys[1],ps_keys[2],g_inieuc_d[g_detail_idx].inieuc001,g_inieuc_d[g_detail_idx].inieuc002,g_inieuc_d[g_detail_idx].inieuc003)  WHERE inieucent = g_enterprise AND inieucsite = g_site AND inieucdocno = ps_keys_bak[1] AND inieucseq = ps_keys_bak[2]#add-point:update_b段修改中 name="update_b.m_update"#end add-point   CASEWHEN SQLCA.sqlerrd[3] = 0  #更新不到的處理INITIALIZE g_errparam TO NULL LET g_errparam.extend = "inieuc_t" LET g_errparam.code = "std-00009" LET g_errparam.popup = TRUE CALL s_transaction_end('N','0')CALL cl_err()WHEN SQLCA.SQLCODE #其他錯誤INITIALIZE g_errparam TO NULL LET g_errparam.extend = "inieuc_t:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL s_transaction_end('N','0')CALL cl_err()OTHERWISEEND CASE#將遮罩欄位進行遮蔽CALL cint112_inieuc_t_mask_restore('restore_mask_n')#add-point:update_b段修改後 name="update_b.after_update"#end add-point  END IF#子表處理IF ls_group.getIndexOf(ps_page,1) > 0 THENLET l_new_key[01] = g_enterprise
LET l_old_key[01] = g_enterprise
LET l_field_key[01] = 'inicucent'
LET l_new_key[02] = g_site
LET l_old_key[02] = g_site
LET l_field_key[02] = 'inicucsite'
LET l_new_key[03] = ps_keys[1] 
LET l_old_key[03] = ps_keys_bak[1] 
LET l_field_key[03] = 'inicucdocno'
LET l_new_key[04] = ps_keys[2] 
LET l_old_key[04] = ps_keys_bak[2] 
LET l_field_key[04] = 'inicucseq'
INITIALIZE g_errparam TO NULL   #161130-00056
CALL cl_multitable_key_upd(l_new_key, l_old_key, l_field_key, 'inicuc_t')
#161130-00056 ---start---
IF NOT cl_null(g_errparam.code) THENLET g_err_rec = 'Y'
END IF
#161130-00056 --- end ---
#161130-00056 ---start---
IF g_err_rec = 'Y' THENCALL s_transaction_end('N','0')LET g_err_rec = 'N'
END IF
#161130-00056 --- end ---END IF#add-point:update_b段other name="update_b.other"#end add-point  END FUNCTION{</section>}{<section id="cint112.key_update_b" type="s" >}
#+ 上層單身key欄位變動後, 連帶修正下層單身key欄位
PRIVATE FUNCTION cint112_key_update_b(ps_keys_bak,ps_table)#add-point:update_b段define(客製用) name="key_update_b.define_customerization"#end add-pointDEFINE ps_keys_bak       DYNAMIC ARRAY OF VARCHAR(500)DEFINE ps_table          STRINGDEFINE l_field_key       DYNAMIC ARRAY OF STRINGDEFINE l_var_keys_bak    DYNAMIC ARRAY OF STRINGDEFINE l_new_key         DYNAMIC ARRAY OF STRINGDEFINE l_old_key         DYNAMIC ARRAY OF STRING#add-point:update_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="key_update_b.define"#end add-point#add-point:Function前置處理  name="key_update_b.pre_function"#end add-pointEND FUNCTION{</section>}{<section id="cint112.key_delete_b" type="s" >}
#+ 上層單身刪除後, 連帶刪除下層單身key欄位
PRIVATE FUNCTION cint112_key_delete_b(ps_keys_bak,ps_table)#add-point:delete_b段define(客製用) name="key_delete_b.define_customerization"#end add-pointDEFINE ps_keys_bak       DYNAMIC ARRAY OF VARCHAR(500)DEFINE ps_table          STRINGDEFINE l_field_keys      DYNAMIC ARRAY OF STRINGDEFINE l_var_keys_bak    DYNAMIC ARRAY OF STRINGDEFINE l_new_key         DYNAMIC ARRAY OF STRINGDEFINE l_old_key         DYNAMIC ARRAY OF STRING#add-point:delete_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="key_delete_b.define"#end add-point#add-point:Function前置處理  name="key_delete_b.pre_function"#end add-pointRETURN TRUEEND FUNCTION{</section>}{<section id="cint112.lock_b" type="s" >}
#+ 連動lock其他單身table資料
PRIVATE FUNCTION cint112_lock_b(ps_table,ps_page)#add-point:lock_b段define(客製用) name="lock_b.define_customerization"#end add-point   DEFINE ps_page     STRINGDEFINE ps_table    STRINGDEFINE ls_group    STRING#add-point:lock_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="lock_b.define"#end add-point   #add-point:Function前置處理  name="lock_b.pre_function"#end add-point#先刷新資料#CALL cint112_b_fill()#鎖定整組table#LET ls_group = "'1',"#僅鎖定自身tableLET ls_group = "inieuc_t"IF ls_group.getIndexOf(ps_table,1) THENOPEN cint112_bcl USING g_enterprise, g_site,g_iniduc_m.iniducdocno,g_inieuc_d[g_detail_idx].inieucseq     IF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "cint112_bcl:",SQLERRMESSAGE LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUE CALL cl_err()RETURN FALSEEND IFEND IF#add-point:lock_b段other name="lock_b.other"#end add-point  RETURN TRUEEND FUNCTION{</section>}{<section id="cint112.unlock_b" type="s" >}
#+ 連動unlock其他單身table資料
PRIVATE FUNCTION cint112_unlock_b(ps_table,ps_page)#add-point:unlock_b段define(客製用) name="unlock_b.define_customerization"#end add-point  DEFINE ps_page     STRINGDEFINE ps_table    STRINGDEFINE ls_group    STRING#add-point:unlock_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="unlock_b.define"#end add-point  #add-point:Function前置處理  name="unlock_b.pre_function"#end add-pointLET ls_group = "'1',"IF ls_group.getIndexOf(ps_page,1) THENCLOSE cint112_bclEND IF#add-point:unlock_b段other name="unlock_b.other"#end add-point  END FUNCTION{</section>}{<section id="cint112.set_entry" type="s" >}
#+ 單頭欄位開啟設定
PRIVATE FUNCTION cint112_set_entry(p_cmd)#add-point:set_entry段define(客製用) name="set_entry.define_customerization"#end add-point       DEFINE p_cmd   LIKE type_t.chr1  #add-point:set_entry段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="set_entry.define"#end add-point       #add-point:Function前置處理  name="set_entry.pre_function"#end add-pointCALL cl_set_comp_entry("iniducdocno",TRUE)IF p_cmd = 'a' THENCALL cl_set_comp_entry("iniducdocno",TRUE)CALL cl_set_comp_entry("iniducdocdt",TRUE)#根據azzi850使用者身分開關特定欄位IF NOT cl_null(g_no_entry) THENCALL cl_set_comp_entry(g_no_entry,TRUE)END IF#add-point:set_entry段欄位控制 name="set_entry.field_control"#end add-point  END IF#add-point:set_entry段欄位控制後 name="set_entry.after_control"#end add-point END FUNCTION{</section>}{<section id="cint112.set_no_entry" type="s" >}
#+ 單頭欄位關閉設定
PRIVATE FUNCTION cint112_set_no_entry(p_cmd)#add-point:set_no_entry段define(客製用) name="set_no_entry.define_customerization"#end add-point     DEFINE p_cmd   LIKE type_t.chr1   #add-point:set_no_entry段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="set_no_entry.define"#end add-point     #add-point:Function前置處理  name="set_no_entry.pre_function"#end add-pointIF p_cmd = 'u' AND g_chkey = 'N' THENCALL cl_set_comp_entry("iniducdocno",FALSE)#根據azzi850使用者身分開關特定欄位IF NOT cl_null(g_no_entry) THENCALL cl_set_comp_entry(g_no_entry,FALSE)END IF#add-point:set_no_entry段欄位控制 name="set_no_entry.field_control"#end add-point END IF IF p_cmd = 'u' THEN  #docno,ld欄位確認是絕對關閉CALL cl_set_comp_entry("iniducdocno",FALSE)END IF #  IF p_cmd = 'u' THEN  #docdt欄位依照設定關閉(FALSE則為設定不同意修正) #(ver:78)IF NOT cl_chk_update_docdt() THENCALL cl_set_comp_entry("iniducdocdt",FALSE)END IF
#  END IF #add-point:set_no_entry段欄位控制後 name="set_no_entry.after_control"#end add-point END FUNCTION{</section>}{<section id="cint112.set_entry_b" type="s" >}
#+ 單身欄位開啟設定
PRIVATE FUNCTION cint112_set_entry_b(p_cmd)#add-point:set_entry_b段define(客製用) name="set_entry_b.define_customerization"#end add-point     DEFINE p_cmd   LIKE type_t.chr1   #add-point:set_entry_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="set_entry_b.define"#end add-point     #add-point:Function前置處理  name="set_entry_b.pre_function"#end add-pointIF p_cmd = 'a' THENCALL cl_set_comp_entry("",TRUE)#add-point:set_entry段欄位控制 name="set_entry_b.field_control"#end add-point  END IF#add-point:set_entry_b段 name="set_entry_b.set_entry_b"#end add-point  
END FUNCTION{</section>}{<section id="cint112.set_no_entry_b" type="s" >}
#+ 單身欄位關閉設定
PRIVATE FUNCTION cint112_set_no_entry_b(p_cmd)#add-point:set_no_entry_b段define(客製用) name="set_no_entry_b.define_customerization"#end add-point    DEFINE p_cmd   LIKE type_t.chr1   #add-point:set_no_entry_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="set_no_entry_b.define"#end add-point    #add-point:Function前置處理  name="set_no_entry_b.pre_function"#end add-pointIF p_cmd = 'u' AND g_chkey = 'N' THENCALL cl_set_comp_entry("",FALSE)#add-point:set_no_entry_b段欄位控制 name="set_no_entry_b.field_control"#end add-point END IF #add-point:set_no_entry_b段 name="set_no_entry_b.set_no_entry_b"#end add-point     
END FUNCTION{</section>}{<section id="cint112.set_act_visible" type="s" >}
#+ 單頭權限開啟
PRIVATE FUNCTION cint112_set_act_visible()#add-point:set_act_visible段define(客製用) name="set_act_visible.define_customerization"#end add-point   #add-point:set_act_visible段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="set_act_visible.define"#end add-point   #add-point:set_act_visible段 name="set_act_visible.set_act_visible"#end add-point   
END FUNCTION{</section>}{<section id="cint112.set_act_no_visible" type="s" >}
#+ 單頭權限關閉
PRIVATE FUNCTION cint112_set_act_no_visible()#add-point:set_act_no_visible段define(客製用) name="set_act_no_visible.define_customerization"#end add-point   #add-point:set_act_no_visible段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="set_act_no_visible.define"#end add-point   #add-point:set_act_no_visible段 name="set_act_no_visible.set_act_no_visible"#應用 a63 樣板自動產生(Version:2)IF g_iniduc_m.iniducstus NOT MATCHES "[NDR]" THEN   # N未確認/D抽單/R已拒絕允許修改CALL cl_set_act_visible("modify,delete,modify_detail", FALSE)END IF#end add-point   
END FUNCTION{</section>}{<section id="cint112.set_act_visible_b" type="s" >}
#+ 單身權限開啟
PRIVATE FUNCTION cint112_set_act_visible_b()#add-point:set_act_visible_b段define(客製用) name="set_act_visible_b.define_customerization"#end add-point   #add-point:set_act_visible_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="set_act_visible_b.define"#end add-point   #add-point:set_act_visible_b段 name="set_act_visible_b.set_act_visible_b"#end add-point   
END FUNCTION{</section>}{<section id="cint112.set_act_no_visible_b" type="s" >}
#+ 單身權限關閉
PRIVATE FUNCTION cint112_set_act_no_visible_b()#add-point:set_act_no_visible_b段define(客製用) name="set_act_no_visible_b.define_customerization"#end add-point   #add-point:set_act_no_visible_b段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="set_act_no_visible_b.define"#end add-point   #add-point:set_act_no_visible_b段 name="set_act_no_visible_b.set_act_no_visible_b"#end add-point   
END FUNCTION{</section>}{<section id="cint112.default_search" type="s" >}
#+ 外部參數搜尋
PRIVATE FUNCTION cint112_default_search()#add-point:default_search段define(客製用) name="default_search.define_customerization"#end add-point  DEFINE li_idx     LIKE type_t.num10DEFINE li_cnt     LIKE type_t.num10DEFINE ls_wc      STRINGDEFINE la_wc      DYNAMIC ARRAY OF RECORDtableid    STRING,wc         STRINGEND RECORDDEFINE ls_where   STRING#add-point:default_search段define(請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="default_search.define"#end add-point  #add-point:Function前置處理 name="default_search.before"#end add-point  LET g_pagestart = 1IF cl_null(g_order) THENLET g_order = "ASC"END IFIF NOT cl_null(g_argv[01]) THENLET ls_wc = ls_wc, " iniducdocno = '", g_argv[01], "' AND "END IF#add-point:default_search段after sql name="default_search.after_sql"#end add-point  IF NOT cl_null(ls_wc) THENLET g_wc = ls_wc.subString(1,ls_wc.getLength()-5)LET g_default = TRUEELSE#若無外部參數則預設為1=2LET g_default = FALSE#預設查詢條件CALL cl_qbe_get_default_qryplan() RETURNING ls_whereIF NOT cl_null(ls_where) THENCALL util.JSON.parse(ls_where, la_wc)INITIALIZE g_wc, g_wc2,g_wc2_table1,g_wc2_extend TO NULLFOR li_idx = 1 TO la_wc.getLength()CASEWHEN la_wc[li_idx].tableid = "iniduc_t" LET g_wc = la_wc[li_idx].wcWHEN la_wc[li_idx].tableid = "inieuc_t" LET g_wc2_table1 = la_wc[li_idx].wcWHEN la_wc[li_idx].tableid = "EXTENDWC"LET g_wc2_extend = la_wc[li_idx].wcEND CASEEND FORIF NOT cl_null(g_wc) OR NOT cl_null(g_wc2_table1) OR NOT cl_null(g_wc2_extend)THEN#組合g_wc2IF g_wc2_table1 <> " 1=1" AND NOT cl_null(g_wc2_table1) THENLET g_wc2 = g_wc2_table1END IFIF g_wc2_extend <> " 1=1" AND NOT cl_null(g_wc2_extend) THENLET g_wc2 = g_wc2 ," AND ", g_wc2_extendEND IFIF g_wc2.subString(1,5) = " AND " THENLET g_wc2 = g_wc2.subString(6,g_wc2.getLength())END IFEND IFEND IFIF cl_null(g_wc) AND cl_null(g_wc2) THENLET g_wc = " 1=2"END IFEND IF#add-point:default_search段結束前 name="default_search.after"#end add-point  IF g_wc.getIndexOf(" 1=2", 1) THENLET g_default = TRUEEND IFEND FUNCTION{</section>}{<section id="cint112.state_change" type="s" >}#應用 a09 樣板自動產生(Version:22)
#+ 確認碼變更 
PRIVATE FUNCTION cint112_statechange()#add-point:statechange段define(客製用) name="statechange.define_customerization"DEFINE l_sql  STRINGDEFINE l_inicucdocno    LIKE  inicuc_t.inicucdocnoDEFINE l_inicucseq    LIKE  inicuc_t.inicucseqDEFINE l_inicuc002    LIKE  inicuc_t.inicuc002DEFINE l_inieuc003    LIKE  inieuc_t.inieuc003#end add-point  DEFINE lc_state LIKE type_t.chr5#add-point:statechange段define(請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="statechange.define"#end add-point  #add-point:Function前置處理 name="statechange.before"#end add-point  ERROR ""     #清空畫面右下側ERROR區塊IF g_iniduc_m.iniducdocno IS NULLTHENINITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code   = "std-00003" LET g_errparam.popup = FALSE CALL cl_err()RETURNEND IFCALL s_transaction_begin()OPEN cint112_cl USING g_enterprise, g_site,g_iniduc_m.iniducdocnoIF SQLCA.SQLCODE THENCLOSE cint112_cl#  CALL s_transaction_end('N','0')   #(ver:19)INITIALIZE g_errparam TO NULL LET g_errparam.extend = "OPEN cint112_cl:",SQLERRMESSAGELET g_errparam.code   = SQLCA.SQLCODELET g_errparam.popup = TRUE CALL s_transaction_end('N','0')   #(ver:19)CALL cl_err()RETURNEND IF#顯示最新的資料EXECUTE cint112_master_referesh USING g_site,g_iniduc_m.iniducdocno INTO g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt, g_iniduc_m.iniduc001,g_iniduc_m.iniducstus,g_iniduc_m.iniducownid,g_iniduc_m.iniducowndp,g_iniduc_m.iniduccrtid, g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt,g_iniduc_m.iniduccnfid, g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid,g_iniduc_m.iniducpstdt,g_iniduc_m.iniducownid_desc, g_iniduc_m.iniducowndp_desc,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp_desc,g_iniduc_m.iniducmodid_desc, g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniducpstid_desc#檢查是否允許此動作IF NOT cint112_action_chk() THENCLOSE cint112_clCALL s_transaction_end('N','0')RETURNEND IF#將資料顯示到畫面上DISPLAY BY NAME g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001,g_iniduc_m.iniducstus, g_iniduc_m.iniducownid,g_iniduc_m.iniducownid_desc,g_iniduc_m.iniducowndp,g_iniduc_m.iniducowndp_desc, g_iniduc_m.iniduccrtid,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdp_desc, g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmodid_desc,g_iniduc_m.iniducmoddt, g_iniduc_m.iniduccnfid,g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid, g_iniduc_m.iniducpstid_desc,g_iniduc_m.iniducpstdtCASE g_iniduc_m.iniducstusWHEN "N"CALL gfrm_curr.setElementImage("statechange", "stus/32/unconfirmed.png")WHEN "Y"CALL gfrm_curr.setElementImage("statechange", "stus/32/confirmed.png")WHEN "S"CALL gfrm_curr.setElementImage("statechange", "stus/32/posted.png")WHEN "Z"CALL gfrm_curr.setElementImage("statechange", "stus/32/unposted.png")END CASE#add-point:資料刷新後 name="statechange.after_refresh"#end add-pointMENU "" ATTRIBUTES (STYLE="popup")BEFORE MENUHIDE OPTION "approved"HIDE OPTION "rejection"CASE g_iniduc_m.iniducstusWHEN "N"HIDE OPTION "unconfirmed"WHEN "Y"HIDE OPTION "confirmed"WHEN "S"HIDE OPTION "posted"WHEN "Z"HIDE OPTION "unposted"END CASE#add-point:menu前 name="statechange.before_menu"## add by ky 20220413 startCALL cl_set_act_visible("unconfirmed,confirmed,posted,unposted",TRUE)CASE g_iniduc_m.iniducstusWHEN "N"CALL cl_set_act_visible("unconfirmed,posted,unposted",FALSE)WHEN "Y"CALL cl_set_act_visible("confirmed,unposted",FALSE)WHEN "S"CALL cl_set_act_visible("unconfirmed,posted,confirmed",FALSE)WHEN "Z"CALL cl_set_act_visible("confirmed,posted",FALSE)END CASE## add by ky 20220413 end#end add-pointON ACTION unconfirmedIF cl_auth_chk_act("unconfirmed") THENLET lc_state = "N"#add-point:action控制 name="statechange.unconfirmed"#end add-pointEND IFEXIT MENUON ACTION confirmedIF cl_auth_chk_act("confirmed") THENLET lc_state = "Y"#add-point:action控制 name="statechange.confirmed"#end add-pointEND IFEXIT MENUON ACTION postedIF cl_auth_chk_act("posted") THENLET lc_state = "S"#add-point:action控制 name="statechange.posted"#end add-pointEND IFEXIT MENUON ACTION unpostedIF cl_auth_chk_act("unposted") THENLET lc_state = "Z"#add-point:action控制 name="statechange.unposted"#end add-pointEND IFEXIT MENU#add-point:stus控制 name="statechange.more_control"#end add-pointEND MENULET INT_FLAG=FALSE  #(ver.18)#確認被選取的狀態碼在清單中IF (lc_state <> "N" AND lc_state <> "Y"AND lc_state <> "S"AND lc_state <> "Z") OR g_iniduc_m.iniducstus = lc_state OR cl_null(lc_state) THENCLOSE cint112_clCALL s_transaction_end('N','0')RETURNEND IF#add-point:stus修改前 name="statechange.b_update"# add by ky 20220414 start 审核检查LET l_sql = " SELECT inieuc001,inieuc002,inicuc002,inieuc003 FROM inieuc_t,inicuc_t ", " WHERE inieuc001 = inicucdocno AND inieuc002 = inicucseq AND "," inieucent=inicucent AND inieucsite=inicucsite  "," AND inieucdocno = '",g_iniduc_m.iniducdocno,"' "," AND inieucent = ",g_enterprise," AND inieucsite = '",g_site,"' "PREPARE t112_pre01 FROM l_sqlDECLARE t112_cur01 CURSOR FOR t112_pre01IF lc_state = 'Y' THEN  FOREACH t112_cur01 INTO l_inicucdocno,l_inicucseq,l_inicuc002,l_inieuc003IF cl_null(l_inicucdocno) THEN EXIT FOREACH END IFLET l_inieuc003 = 0 SELECT SUM(inieuc003) INTO l_inieuc003 FROM inieuc_tWHERE inieucent = g_enterprise and inieucsite = g_siteAND inieuc001 = l_inicucdocno AND inieuc002 = l_inicucseqIF cl_null(l_inieuc003) THEN LET l_inieuc003 = 0 END IFIF l_inieuc003 > l_inicuc002 THENCLOSE cint112_clINITIALIZE g_errparam TO NULL LET g_errparam.extend = ""LET g_errparam.code   = "cin-00004"LET g_errparam.popup = TRUE CALL s_transaction_end('N','0')CALL cl_err()RETURNEND IFEND FOREACHEND IFIF lc_state = 'S' THENFOREACH t112_cur01 INTO l_inicucdocno,l_inicucseq,l_inicuc002,l_inieuc003IF cl_null(l_inicucdocno) THEN EXIT FOREACH END IFOPEN t112_cl01 USING l_inicucdocno,l_inicucseq,g_enterprise,g_siteIF SQLCA.SQLCODE THENCLOSE cint112_clCLOSE t112_cl01INITIALIZE g_errparam TO NULL LET g_errparam.extend = "t112_cl01:",SQLERRMESSAGELET g_errparam.code   = SQLCA.SQLCODELET g_errparam.popup = TRUE CALL s_transaction_end('N','0')   #(ver:19)CALL cl_err()RETURNEND IFUPDATE inicuc_t SET inicuc003 = inicuc003 + l_inieuc003WHERE inicucdocno = l_inicucdocno AND inicucseq = l_inicucseqAND inicucent = g_enterprise AND inicucsite = g_siteIF SQLCA.SQLCODE THENCLOSE cint112_clCLOSE t112_cl01CALL s_transaction_end('N','0')INITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = FALSE CALL cl_err()RETURNEND IFCLOSE cint112_clEND FOREACHEND IF# add by ky 20220414 end#end add-pointLET g_iniduc_m.iniducmodid = g_userLET g_iniduc_m.iniducmoddt = cl_get_current()LET g_iniduc_m.iniducstus = lc_state#異動狀態碼欄位/修改人/修改日期UPDATE iniduc_t SET (iniducstus,iniducmodid,iniducmoddt) = (g_iniduc_m.iniducstus,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmoddt)     WHERE iniducent = g_enterprise AND iniducsite = g_site AND iniducdocno = g_iniduc_m.iniducdocnoIF SQLCA.SQLCODE THEN#171011-00030 ---start---CLOSE cint112_clCALL s_transaction_end('N','0')#171011-00030 --- end ---INITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = FALSE CALL cl_err()#170801-00033 ---start---#  CLOSE cint112_cl   #171011-00030 mark#  CALL s_transaction_end('N','0')   #171011-00030 markRETURN#170801-00033 --- end ---ELSECASE lc_stateWHEN "N"CALL gfrm_curr.setElementImage("statechange", "stus/32/unconfirmed.png")WHEN "Y"CALL gfrm_curr.setElementImage("statechange", "stus/32/confirmed.png")WHEN "S"CALL gfrm_curr.setElementImage("statechange", "stus/32/posted.png")WHEN "Z"CALL gfrm_curr.setElementImage("statechange", "stus/32/unposted.png")END CASE#撈取異動後的資料EXECUTE cint112_master_referesh USING g_site,g_iniduc_m.iniducdocno INTO g_iniduc_m.iniducdocno, g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001,g_iniduc_m.iniducstus,g_iniduc_m.iniducownid,g_iniduc_m.iniducowndp, g_iniduc_m.iniduccrtid,g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid, g_iniduc_m.iniducmoddt,g_iniduc_m.iniduccnfid,g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid, g_iniduc_m.iniducpstdt,g_iniduc_m.iniducownid_desc,g_iniduc_m.iniducowndp_desc,g_iniduc_m.iniduccrtid_desc, g_iniduc_m.iniduccrtdp_desc,g_iniduc_m.iniducmodid_desc,g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniducpstid_desc #將資料顯示到畫面上DISPLAY BY NAME g_iniduc_m.iniducdocno,g_iniduc_m.iniducdocdt,g_iniduc_m.iniduc001,g_iniduc_m.iniducstus, g_iniduc_m.iniducownid,g_iniduc_m.iniducownid_desc,g_iniduc_m.iniducowndp,g_iniduc_m.iniducowndp_desc, g_iniduc_m.iniduccrtid,g_iniduc_m.iniduccrtid_desc,g_iniduc_m.iniduccrtdp,g_iniduc_m.iniduccrtdp_desc, g_iniduc_m.iniduccrtdt,g_iniduc_m.iniducmodid,g_iniduc_m.iniducmodid_desc,g_iniduc_m.iniducmoddt, g_iniduc_m.iniduccnfid,g_iniduc_m.iniduccnfid_desc,g_iniduc_m.iniduccnfdt,g_iniduc_m.iniducpstid, g_iniduc_m.iniducpstid_desc,g_iniduc_m.iniducpstdtEND IF#add-point:stus修改後 name="statechange.a_update"#end add-point#add-point:statechange段結束前 name="statechange.after"#end add-point  CLOSE cint112_clCALL s_transaction_end('Y','0')#(ver:20) ---start---#add-point:transaction結束後 name="statechange.transaction_after"#end add-point  #(ver:20) --- end --- #功能已完成,通報訊息中心CALL cint112_msgcentre_notify('statechange:'||lc_state)END FUNCTION{</section>}{<section id="cint112.idx_chk" type="s" >}
#+ 顯示正確的單身資料筆數
PRIVATE FUNCTION cint112_idx_chk()#add-point:idx_chk段define(客製用) name="idx_chk.define_customerization"#end add-point  #add-point:idx_chk段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="idx_chk.define"#end add-point  #add-point:Function前置處理  name="idx_chk.pre_function"#end add-pointLET g_curr_diag = ui.DIALOG.getCurrent()   #(ver:83)IF g_current_page = 1 THENLET g_detail_idx = g_curr_diag.getCurrentRow("s_detail1")IF g_detail_idx > g_inieuc_d.getLength() THENLET g_detail_idx = g_inieuc_d.getLength()END IFIF g_detail_idx = 0 AND g_inieuc_d.getLength() <> 0 THENLET g_detail_idx = 1END IFDISPLAY g_detail_idx TO FORMONLY.idxDISPLAY g_inieuc_d.getLength() TO FORMONLYtEND IF#add-point:idx_chk段other name="idx_chk.other"#end add-point  END FUNCTION{</section>}{<section id="cint112.b_fill2" type="s" >}
#+ 單身陣列填充2
PRIVATE FUNCTION cint112_b_fill2(pi_idx)#add-point:b_fill2段define(客製用) name="b_fill2.define_customerization"#end add-pointDEFINE pi_idx                 LIKE type_t.num10DEFINE li_ac                  LIKE type_t.num10DEFINE li_detail_idx_tmp      LIKE type_t.num10DEFINE ls_chk                 LIKE type_t.chr1#add-point:b_fill2段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="b_fill2.define"#end add-point#add-point:Function前置處理  name="b_fill2.pre_function"#end add-pointLET li_ac = l_ac IF g_detail_idx <= 0 THENRETURNEND IFLET li_detail_idx_tmp = g_detail_idx#add-point:單身填充後 name="b_fill2.after_fill"#end add-pointLET l_ac = li_acCALL cint112_detail_show()LET g_detail_idx = li_detail_idx_tmpEND FUNCTION{</section>}{<section id="cint112.fill_chk" type="s" >}
#+ 單身填充確認
PRIVATE FUNCTION cint112_fill_chk(ps_idx)#add-point:fill_chk段define(客製用) name="fill_chk.define_customerization"#end add-pointDEFINE ps_idx        LIKE type_t.chr10#add-point:fill_chk段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="fill_chk.define"#end add-point#add-point:Function前置處理 name="fill_chk.before_chk"#end add-point#此funtion功能暫時停用(2015/1/12)#無論傳入值為何皆回傳true(代表要填充該單身)#全部為1=1 or null時回傳trueIF (cl_null(g_wc2_table1) OR g_wc2_table1.trim() = '1=1') THEN#add-point:fill_chk段other_chk name="fill_chk.other_chk"#end add-pointRETURN TRUEEND IF#add-point:fill_chk段after_chk name="fill_chk.after_chk"#end add-pointRETURN TRUEEND FUNCTION{</section>}{<section id="cint112.status_show" type="s" >}
PRIVATE FUNCTION cint112_status_show()#add-point:status_show段define(客製用) name="status_show.define_customerization"#end add-point#add-point:status_show段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="status_show.define"#end add-point#add-point:status_show段status_show name="status_show.status_show"#end add-point
END FUNCTION{</section>}{<section id="cint112.mask_functions" type="s" >}
&include "erp/cin/cint112_mask.4gl"{</section>}{<section id="cint112.signature" type="s" >}{</section>}{<section id="cint112.set_pk_array" type="s" >}#應用 a51 樣板自動產生(Version:8)
#+ 給予pk_array內容
PRIVATE FUNCTION cint112_set_pk_array()#add-point:set_pk_array段define name="set_pk_array.define_customerization"#end add-point#add-point:set_pk_array段define(請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="set_pk_array.define"#end add-point#add-point:Function前置處理 name="set_pk_array.before"#end add-point  #若l_ac<=0代表沒有資料IF l_ac <= 0 THENRETURNEND IFCALL g_pk_array.clear()LET g_pk_array[1].values = g_iniduc_m.iniducdocnoLET g_pk_array[1].column = 'iniducdocno'#add-point:set_pk_array段之後 name="set_pk_array.after"#end add-point  END FUNCTION{</section>}{<section id="cint112.other_dialog" readonly="Y" type="s" >}{</section>}{<section id="cint112.msgcentre_notify" type="s" >}
#應用 a66 樣板自動產生(Version:6)
PRIVATE FUNCTION cint112_msgcentre_notify(lc_state)#add-point:msgcentre_notify段define name="msgcentre_notify.define_customerization"#end add-point   DEFINE lc_state LIKE type_t.chr80#add-point:msgcentre_notify段define(請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="msgcentre_notify.define"#end add-point#add-point:Function前置處理  name="msgcentre_notify.pre_function"#end add-pointINITIALIZE g_msgparam TO NULL#action-id與狀態填寫LET g_msgparam.state = lc_state#PK資料填寫CALL cint112_set_pk_array()#單頭資料填寫LET g_msgparam.data[1] = util.JSON.stringify(g_iniduc_m)#add-point:msgcentre其他通知 name="msgcentre_notify.process"#end add-point#呼叫訊息中心傳遞本關完成訊息CALL cl_msgcentre_notify()END FUNCTION{</section>}{<section id="cint112.action_chk" type="s" >}
#+ 修改/刪除前行為檢查(是否可允許此動作), 若有其他行為須管控也可透過此段落
PRIVATE FUNCTION cint112_action_chk()#add-point:action_chk段define(客製用) name="action_chk.define_customerization"#end add-point#add-point:action_chk段define (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="action_chk.define"#end add-point#add-point:action_chk段action_chk name="action_chk.action_chk"#end add-pointRETURN TRUEEND FUNCTION{</section>}{<section id="cint112.other_function" readonly="Y" type="s" >}{</section>}

更多推荐

四、T100双档开发,接上一章继续完善IT资产归还程序

本文发布于:2024-02-14 13:24:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763614.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:一章   资产   程序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!