FUNCTION i901_z()
   IF g_votea.tc_votea01 IS NULL THEN RETURN END IF
    SELECT * INTO g_votea.* FROM tc_votea_file WHERE tc_votea01=g_votea.tc_votea01
   IF g_votea.tc_voteaconf='X' THEN CALL cl_err(g_votea.tc_voteaconf,'9024',0) RETURN END IF
   IF g_votea.tc_voteaconf='N' THEN RETURN END IF
   IF NOT cl_confirm('axm-109') THEN RETURN END IF
   BEGIN WORK
   OPEN i901_cl USING g_votea_rowid
   #--Add exception check during OPEN CURSOR
   IF STATUS THEN
      CALL cl_err("OPEN i255_cl:", STATUS, 1)
      CLOSE i901_cl
      ROLLBACK WORK
      RETURN
   END IF
   FETCH i901_cl INTO g_votea.*               # 鎖住將被更改或取消的資料
   
   IF SQLCA.SQLCODE THEN
      CALL cl_err(g_votea.tc_votea01,SQLCA.SQLCODE,0)          #資料被他人LOCK
      ROLLBACK WORK
      RETURN
   END IF
   LET g_success = 'Y'
   LET g_votea.tc_votea03 = 'U'
    UPDATE tc_votea_file SET tc_voteaconf='N',tc_votea03  = g_votea.tc_votea03
    WHERE tc_votea01 = g_votea.tc_votea01
 
   IF SQLCA.sqlcode OR SQLCA.sqlerrd[3]=0 THEN
      CALL cl_err3("upd","tc_votea_file",g_votea.tc_votea01,"","apm-266","","upd tc_votea_file",1)  #No.FUN-660129
      LET g_success='N'
   END IF
 
   IF g_success = 'Y' THEN
      LET g_votea.tc_voteaconf='N'
      COMMIT WORK
      DISPLAY BY NAME g_votea.tc_voteaconf
      DISPLAY BY NAME g_votea.tc_votea03
   ELSE
      LET g_votea.tc_voteaconf='Y'
      DISPLAY BY NAME g_votea.tc_voteaconf
      DISPLAY BY NAME g_votea.tc_votea03
      ROLLBACK WORK
   END IF
   
   IF g_votea.tc_voteaconf='X' THEN LET g_chr='Y'  ELSE LET g_chr='N' END IF  #No.MOD-480339
   IF g_votea.tc_votea03='R'   THEN LET g_chr2='Y' ELSE LET g_chr2='N' END IF
   CALL cl_set_field_pic(g_votea.tc_voteaconf,g_chr2,"","",g_chr,"")             #No.MOD-480339
   ### END  No.MOD-4A0344
END FUNCTION
FUNCTION i901_x()
   IF s_shut(0) THEN
      RETURN
   END IF
   IF g_votea.tc_votea01 IS NULL THEN
      CALL cl_err("",-400,0)
      RETURN
   END IF
   BEGIN WORK
   OPEN i901_cl USING g_votea_rowid
   IF STATUS THEN
      CALL cl_err("OPEN i901_cl:", STATUS, 1)
      CLOSE i901_cl
      ROLLBACK WORK
      RETURN
   END IF
   FETCH i901_cl INTO g_votea.*               # 鎖住將被更改或取消的資料
   IF SQLCA.sqlcode THEN
      CALL cl_err(g_votea.tc_votea01,SQLCA.sqlcode,0)          #資料被他人LOCK
      ROLLBACK WORK
      RETURN
   END IF
   LET g_success = 'Y'
   CALL i901_show()
   IF cl_exp(0,0,g_votea.tc_voteaacti) THEN                   #確認一下
      LET g_chr=g_votea.tc_voteaacti
      IF g_votea.tc_voteaacti = 'Y' THEN
         LET g_votea.tc_voteaacti = 'N'
         LET g_votea.tc_voteaconf='X'
      ELSE
         LET g_votea.tc_voteaacti = 'Y'
 LET g_votea.tc_voteaconf='N'
      END IF
      UPDATE tc_votea_file SET tc_voteaacti = g_votea.tc_voteaacti,tc_voteamodu=g_user,tc_voteadate=g_today,tc_voteaconf = g_votea.tc_voteaconf
      WHERE tc_votea01 = g_votea.tc_votea01
      IF SQLCA.sqlcode OR SQLCA.SQLERRD[3]=0 THEN
         CALL cl_err3("upd","t_votea_file",g_votea.tc_votea01,"",SQLCA.sqlcode,"","",1)  #No.FUN-660129
         LET g_votea.tc_voteaacti = g_chr
         LET g_success='N'
      END IF
   END IF
   CLOSE i901_cl
   IF g_success = 'Y' THEN
      COMMIT WORK
      DISPLAY BY NAME g_votea.tc_voteaconf
      DISPLAY BY NAME g_votea.tc_votea03
   ELSE
      LET g_votea.tc_voteaconf = g_votea_t.tc_voteaconf
      LET g_votea.tc_votea03   = g_votea_t.tc_votea03
      DISPLAY BY NAME g_votea.tc_voteaconf
      DISPLAY BY NAME g_votea.tc_votea03
      ROLLBACK WORK
   END IF
   SELECT tc_voteaacti,tc_voteamodu,tc_voteadate,tc_voteaconf
     INTO g_votea.tc_voteaacti,g_votea.tc_voteamodu,g_votea.tc_voteadate,g_votea.tc_voteaconf FROM tc_votea_file
    WHERE tc_votea01 = g_votea.tc_votea01
   DISPLAY BY NAME g_votea.tc_voteaacti,g_votea.tc_voteamodu,g_votea.tc_voteadate,g_votea.tc_voteaconf
 
   IF g_votea.tc_voteaconf ='X' THEN LET g_chr='Y'  ELSE LET g_chr='N'  END IF
   IF g_votea.tc_votea03 ='R'   THEN LET g_chr2='Y' ELSE LET g_chr2='N' END IF
   CALL cl_set_field_pic(g_votea.tc_voteaconf,g_chr2,"","",g_chr,"")             #No.MOD-480339
END FUNCTION
FUNCTION i901_r()
   IF s_shut(0) THEN
      RETURN
   END IF
   IF g_votea.tc_votea01 IS NULL THEN
      CALL cl_err("",-400,0)
      RETURN
   END IF
   SELECT * INTO g_votea.* FROM tc_votea_file
    WHERE tc_votea01 = g_votea.tc_votea01
  #FUN-730060  --begin--------
  #IF g_votea.tc_voteaacti ='N' THEN    #檢查資料是否為無效
  #   CALL cl_err(g_votea.tc_votea01,'mfg1000',0)
  #   RETURN
  #END IF
  #FUN-730060  --end----------
   BEGIN WORK
   OPEN i901_cl USING g_votea_rowid
   IF STATUS THEN
      CALL cl_err("OPEN i901_cl:", STATUS, 1)
      CLOSE i901_cl
      ROLLBACK WORK
      RETURN
   END IF
   FETCH i901_cl INTO g_votea.*               # 鎖住將被更改或取消的資料
   IF SQLCA.sqlcode THEN
      CALL cl_err(g_votea.tc_votea01,SQLCA.sqlcode,0)          #資料被他人LOCK
      ROLLBACK WORK
      RETURN
   END IF
   CALL i901_show()
   IF cl_delh(0,0) THEN                   #確認一下
      DELETE FROM tc_votea_file WHERE tc_votea01 = g_votea.tc_votea01
      DELETE FROM tc_voteb_file WHERE tc_voteb01 = g_votea.tc_votea01
      CLEAR FORM
      CALL g_voteb.clear()
      OPEN i901_count
      FETCH i901_count INTO g_row_count
      DISPLAY g_row_count TO FORMONLY.cnt
      OPEN i901_cs
      IF g_curs_index = g_row_count + 1 THEN
         LET g_jump = g_row_count
         CALL i901_fetch('L')
      ELSE
         LET g_jump = g_curs_index
         LET mi_no_ask = TRUE      #No:FUN-6A0067
         CALL i901_fetch('/')
      END IF
   END IF
   CLOSE i901_cl
   COMMIT WORK
END FUNCTION
#單身
FUNCTION i901_b()
DEFINE
    l_ac_t          LIKE type_file.num5,                #未取消的ARRAY CNT  #No.FUN-680136 SMALLINT
    l_n             LIKE type_file.num5,                #檢查重複用  #No.FUN-680136 SMALLINT
    l_cnt           LIKE type_file.num5,                #檢查重複用  #No.FUN-680136 SMALLINT
    l_lock_sw       LIKE type_file.chr1,                #單身鎖住否  #No.FUN-680136 VARCHAR(1)
    p_cmd           LIKE type_file.chr1,                #處理狀態  #No.FUN-680136 VARCHAR(1)
    l_misc          LIKE gef_file.gef01,                #No.FUN-680136 VARCHAR(04)
    l_allow_insert  LIKE type_file.num5,                #可新增否  #No.FUN-680136 SMALLINT
    l_allow_delete  LIKE type_file.num5                 #可刪除否  #No.FUN-680136 SMALLINT
    LET g_action_choice = ""
    IF s_shut(0) THEN
       RETURN
    END IF
    IF g_votea.tc_votea01 IS NULL THEN
       RETURN
    END IF
    SELECT * INTO g_votea.* FROM tc_votea_file
     WHERE tc_votea01=g_votea.tc_votea01
    IF g_votea.tc_voteaacti ='N' THEN    #檢查資料是否為無效
     CALL cl_err(g_votea.tc_votea01,'mfg1000',0)
     RETURN
    END IF
    IF g_votea.tc_voteaconf ='X' THEN    #檢查資料是否為作廢
      CALL cl_err(g_votea.tc_voteaconf,'9024',0)
     RETURN
    END IF
    CALL cl_opmsg('b')
    LET g_forupd_sql = " SELECT tc_voteb02,tc_voteb03,tc_voteb04,tc_votebacti,tc_votebuser,tc_votebmodu,tc_votebdate",
                       " FROM tc_voteb_file",
                       " WHERE tc_voteb01 = ? AND tc_voteb02 = ? FOR UPDATE NOWAIT "
    DECLARE i901_bcl CURSOR FROM g_forupd_sql      # LOCK CURSOR
    LET l_allow_insert = cl_detail_input_auth("insert")
    LET l_allow_delete = cl_detail_input_auth("delete")
    INPUT ARRAY g_voteb WITHOUT DEFAULTS FROM s_voteb.*
          ATTRIBUTE(COUNT=g_rec_b,MAXCOUNT=g_max_rec,UNBUFFERED,
                    INSERT ROW=l_allow_insert,DELETE ROW=l_allow_delete,
                    APPEND ROW=l_allow_insert)
        BEFORE INPUT
           DISPLAY "BEFORE INPUT!"
           IF g_rec_b != 0 THEN
              CALL fgl_set_arr_curr(l_ac)
           END IF
        BEFORE ROW
           DISPLAY "BEFORE ROW!"
           LET p_cmd = ''
           LET l_ac = ARR_CURR()
           LET l_lock_sw = 'N'            #DEFAULT
           LET l_n  = ARR_COUNT()
           BEGIN WORK
           OPEN i901_cl USING g_votea_rowid
           IF STATUS THEN
              CALL cl_err("OPEN i901_cl:", STATUS, 1)
              CLOSE i901_cl
              ROLLBACK WORK
              RETURN
           END IF
           FETCH i901_cl INTO g_votea.*            # 鎖住將被更改或取消的資料
           IF SQLCA.sqlcode THEN
              CALL cl_err(g_votea.tc_votea01,SQLCA.sqlcode,0)      # 資料被他人LOCK
              CLOSE i901_cl
              ROLLBACK WORK
              RETURN
           END IF
           IF g_rec_b >= l_ac THEN
              LET p_cmd='u'
              LET g_voteb_t.* = g_voteb[l_ac].*  #BACKUP
              LET g_voteb_o.* = g_voteb[l_ac].*  #BACKUP
              OPEN i901_bcl USING g_votea.tc_votea01,g_voteb_t.tc_voteb02
              IF STATUS THEN
                 CALL cl_err("OPEN i901_bcl:", STATUS, 1)
                 LET l_lock_sw = "Y"
              ELSE
                 FETCH i901_bcl INTO g_voteb[l_ac].*
                 IF SQLCA.sqlcode THEN
                    CALL cl_err(g_voteb_t.tc_voteb02,SQLCA.sqlcode,1)
                    LET l_lock_sw = "Y"
                 END IF
              END IF
              CALL cl_show_fld_cont()     #FUN-550037(smin)
              CALL i901_set_entry_b(p_cmd)    #No.FUN-610018
              CALL i901_set_no_entry_b(p_cmd) #No.FUN-610018
           END IF
        BEFORE INSERT
           DISPLAY "BEFORE INSERT!"
           LET l_n = ARR_COUNT()
           LET p_cmd='a'
           
           INITIALIZE g_voteb[l_ac].* TO NULL     
           LET g_voteb[l_ac].tc_voteb03 = ''           #Body default
           LET g_voteb[l_ac].tc_voteb04 = ''           #Body default
           LET g_voteb[l_ac].tc_votebacti = 'Y'           #Body default
           LET g_voteb[l_ac].tc_votebuser = g_user           #Body default
           LET g_voteb[l_ac].tc_votebmodu = g_user           #Body default
           LET g_voteb[l_ac].tc_votebdate = g_today           #Body default
           LET g_voteb_t.* = g_voteb[l_ac].*         #新輸入資料
           LET g_voteb_o.* = g_voteb[l_ac].*         #新輸入資料
           IF l_ac > 1 THEN # 修改日期初始值
              LET g_voteb[l_ac].tc_votebdate = g_voteb[l_ac-1].tc_votebdate
           ELSE
              LET g_voteb[l_ac].tc_votebdate = g_votea.tc_voteadate
           END IF
           CALL cl_show_fld_cont()         #FUN-550037(smin)
           CALL i901_set_entry_b(p_cmd)    #No.FUN-610018
           CALL i901_set_no_entry_b(p_cmd) #No.FUN-610018
           
        NEXT FIELD tc_voteb02 # 開始進入單身輸入欄位
        AFTER INSERT
           DISPLAY "AFTER INSERT!"
           IF INT_FLAG THEN
              CALL cl_err('',9001,0)
              LET INT_FLAG = 0
              CANCEL INSERT
           END IF
          #-----No:FUN-670099-----
          # IF cl_null(g_voteb[l_ac].voteb03) THEN
          #    LET g_voteb[l_ac].voteb03 = " "
          # END IF
          #-----No:FUN-670099 END-----
           INSERT INTO tc_voteb_file(tc_voteb01,tc_voteb02,tc_voteb03,tc_voteb04,tc_votebacti,tc_votebuser,tc_votebmodu,tc_votebdate)  
           VALUES(g_votea.tc_votea01,g_voteb[l_ac].tc_voteb02,g_voteb[l_ac].tc_voteb03,g_voteb[l_ac].tc_voteb04,
                  g_voteb[l_ac].tc_votebacti,g_voteb[l_ac].tc_votebuser,g_voteb[l_ac].tc_votebmodu,g_voteb[l_ac].tc_votebdate)
           IF SQLCA.sqlcode THEN
              CALL cl_err3("ins","tc_voteb_file",g_votea.tc_votea01,g_voteb[l_ac].tc_voteb02,SQLCA.sqlcode,"","",1)  #No.FUN-660129
              CANCEL INSERT
           ELSE
              MESSAGE 'INSERT O.K'
              COMMIT WORK
              LET g_rec_b=g_rec_b+1
              DISPLAY g_rec_b TO FORMONLY.cn2
           END IF
        BEFORE FIELD tc_voteb02                       #default 序號
           IF g_voteb[l_ac].tc_voteb02 IS NULL OR g_voteb[l_ac].tc_voteb02 = 0 THEN
             
                SELECT MAX(tc_voteb02)+1
                INTO g_voteb[l_ac].tc_voteb02
                FROM tc_voteb_file
               WHERE tc_voteb01 = g_votea.tc_votea01
              IF g_voteb[l_ac].tc_voteb02 IS NULL THEN
                 LET g_voteb[l_ac].tc_voteb02 = 1
              END IF
           END IF
        AFTER FIELD tc_voteb02                        #check 序號是否重複
           IF NOT cl_null(g_voteb[l_ac].tc_voteb02 ) THEN
              IF g_voteb[l_ac].tc_voteb02  != g_voteb_t.tc_voteb02 
                 OR g_voteb_t.tc_voteb02  IS NULL THEN
                 SELECT count(*)
                   INTO l_n
                   FROM tc_voteb_file
                  WHERE tc_voteb01 = g_votea.tc_votea01
                    AND tc_voteb02 = g_voteb[l_ac].tc_voteb02 
                 IF l_n > 0 THEN
                    CALL cl_err('',-239,0)
                    LET g_voteb[l_ac].tc_voteb02 = g_voteb_t.tc_voteb02 
                    NEXT FIELD tc_voteb02 
                 END IF
              END IF
           END IF
    #FUN-650191 --begin--begin
      AFTER FIELD tc_voteb03                      #廠商編號
         IF cl_null(g_voteb[l_ac].tc_voteb03) THEN    
                  NEXT FIELD tc_voteb03 
         END IF
            LET g_voteb_o.tc_voteb03  = g_voteb[l_ac].tc_voteb03 
         
    #FUN-650191 --add--end
        BEFORE FIELD tc_voteb04
           CALL i901_set_entry_b(p_cmd)
 
        AFTER FIELD tc_voteb04                
           IF cl_null(g_voteb[l_ac].tc_voteb03) THEN  
                 NEXT FIELD tc_voteb03  
           END IF
           LET g_voteb_o.tc_voteb04 = g_voteb[l_ac].tc_voteb04  
              
         AFTER FIELD tc_votebacti    #保稅否
            IF g_voteb[l_ac].tc_votebacti NOT MATCHES '[YyNn]' THEN
               NEXT FIELD tc_votebacti
            END IF
            LET g_voteb_o.tc_voteb03 = g_voteb[l_ac].tc_votebacti
CALL i901_set_no_entry_b(p_cmd)
        BEFORE DELETE                      #是否取消單身
           DISPLAY "BEFORE DELETE"
           IF g_voteb_t.tc_voteb02 > 0 AND g_voteb_t.tc_voteb02 IS NOT NULL THEN
              IF NOT cl_delb(0,0) THEN
                 CANCEL DELETE
              END IF
              IF l_lock_sw = "Y" THEN
                 CALL cl_err("", -263, 1)
                 CANCEL DELETE
              END IF
              DELETE FROM tc_voteb_file
               WHERE tc_voteb01 = g_votea.tc_votea01
                 AND tc_voteb02 = g_voteb_t.tc_voteb02
              IF SQLCA.sqlcode THEN
                 CALL cl_err3("del","tc_voteb_file",g_votea.tc_votea01,g_voteb_t.tc_voteb02,SQLCA.sqlcode,"","",1)  #No.FUN-660129
                 ROLLBACK WORK
                 CANCEL DELETE
              END IF
              LET g_rec_b=g_rec_b-1
              DISPLAY g_rec_b TO FORMONLY.cn2
           END IF
           COMMIT WORK
        ON ROW CHANGE
           IF INT_FLAG THEN
              CALL cl_err('',9001,0)
              LET INT_FLAG = 0
              LET g_voteb[l_ac].* = g_voteb_t.*
              CLOSE i901_bcl
              ROLLBACK WORK
              EXIT INPUT
           END IF
           IF l_lock_sw = 'Y' THEN
              CALL cl_err(g_voteb[l_ac].tc_voteb02,-263,1)
              LET g_voteb[l_ac].* = g_voteb_t.*
           ELSE
              #-----No:FUN-670099-----
             # IF cl_null(g_voteb[l_ac].pmx10) THEN
             #    LET g_voteb[l_ac].pmx10 = " "
             # END IF
              #-----No:FUN-670099 END-----
              UPDATE tc_voteb_file SET 
tc_voteb02=g_voteb[l_ac].tc_voteb02,
tc_voteb03=g_voteb[l_ac].tc_voteb03,
tc_voteb04=g_voteb[l_ac].tc_voteb04,
tc_votebacti=g_voteb[l_ac].tc_votebacti,
tc_votebuser=g_voteb[l_ac].tc_votebuser,
tc_votebmodu=g_voteb[l_ac].tc_votebmodu,
tc_votebdate=g_voteb[l_ac].tc_votebdate
               WHERE tc_voteb01=g_votea.tc_votea01
                 AND tc_voteb02=g_voteb_t.tc_voteb02
              IF SQLCA.sqlcode OR SQLCA.sqlerrd[3] = 0 THEN
                 CALL cl_err3("upd","tc_voteb_file",g_votea.tc_votea01,g_voteb_t.tc_voteb02,SQLCA.sqlcode,"","",1)  #No.FUN-660129
                 LET g_voteb[l_ac].* = g_voteb_t.*
              ELSE
                 MESSAGE 'UPDATE O.K'
                 COMMIT WORK
              END IF
           END IF
        AFTER ROW
           DISPLAY  "AFTER ROW!!"
           LET l_ac = ARR_CURR()
           LET l_ac_t = l_ac
           IF INT_FLAG THEN
              CALL cl_err('',9001,0)
              LET INT_FLAG = 0
              IF p_cmd = 'u' THEN
                 LET g_voteb[l_ac].* = g_voteb_t.*
              END IF
              CLOSE i901_bcl
              ROLLBACK WORK
              EXIT INPUT
           END IF
           CLOSE i901_bcl
           COMMIT WORK
        ON ACTION CONTROLO                        #沿用所有欄位
           IF INFIELD(pmx02) AND l_ac > 1 THEN
              LET g_voteb[l_ac].* = g_voteb[l_ac-1].*
              LET g_voteb[l_ac].tc_voteb02 = g_rec_b + 1
              NEXT FIELD tc_voteb02
           END IF
        ON ACTION CONTROLZ
           CALL cl_show_req_fields()
        ON ACTION CONTROLG
           CALL cl_cmdask()
        ON ACTION controlp
        {   CASE
           #FUN-650191 add--begin
             WHEN INFIELD(tc_voteb03) 
               CALL cl_init_qry_var()
               LET g_qryparam.form ="q_voteb" #MOD-530533
               LET g_qryparam.default1 = g_voteb[l_ac].tc_voteb03
               CALL cl_create_qry() RETURNING g_voteb[l_ac].tc_voteb03
               DISPLAY BY NAME g_voteb[l_ac].tc_voteb03
               NEXT FIELD tc_voteb03
               OTHERWISE EXIT CASE
            END CASE
       }
      ON ACTION CONTROLF
         CALL cl_set_focus_form(ui.Interface.getRootNode()) RETURNING g_fld_name,g_frm_name #Add on 040913
         CALL cl_fldhelp(g_frm_name,g_fld_name,g_lang) #Add on 040913
 
      ON IDLE g_idle_seconds
         CALL cl_on_idle()
         CONTINUE INPUT
 
      ON ACTION about         #MOD-4C0121
         CALL cl_about()      #MOD-4C0121
 
      ON ACTION help          #MOD-4C0121
         CALL cl_show_help()  #MOD-4C0121
 
      ON ACTION controls                           #No.FUN-6B0032             
         CALL cl_set_head_visible("","AUTO")       #No.FUN-6B0032
    END INPUT
   #start FUN-5B0136
    LET g_votea.tc_voteamodu = g_user
    LET g_votea.tc_voteadate = g_today
    UPDATE tc_votea_file SET tc_voteamodu = g_votea.tc_voteamodu,tc_voteadate = g_votea.tc_voteadate
     WHERE tc_votea01 = g_pmw.tc_votea01
    DISPLAY BY NAME g_votea.tc_voteamodu,g_votea.tc_voteadate
   #end FUN-5B0136
    CLOSE i901_bcl
    COMMIT WORK
    CALL i901_delall()
END FUNCTION

 

 

arrow
arrow
    全站熱搜

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