FUNCTION i901_delall()
   SELECT COUNT(*) INTO g_cnt FROM tc_voteb_file
    WHERE tc_voteb01 = g_votea.tc_votea01
   IF g_cnt = 0 THEN                   # 未輸入單身資料, 是否取消單頭資料
      CALL cl_getmsg('9044',g_lang) RETURNING g_msg
      ERROR g_msg CLIPPED
      DELETE FROM tc_votea_file WHERE tc_votea01 = g_votea.tc_votea01
   END IF
END FUNCTION
 
FUNCTION i901_b_askkey()
    DEFINE l_wc2           STRING
    CONSTRUCT l_wc2 ON tc_voteb02,tc_voteb03,tc_voteb04,tc_votebacti,tc_votebuser,tc_votebmodu,tc_votebdate
            FROM s_voteb[1].tc_voteb02,s_voteb[1].tc_voteb03,s_voteb[1].tc_voteb04,
                 s_voteb[1].tc_votebacti,s_voteb[1].tc_votebuser,
                 s_voteb[1].tc_votebmodu,s_voteb[1].tc_votebdate
              #No:FUN-580031 --start--     HCN
              BEFORE CONSTRUCT
                 CALL cl_qbe_init()
              #No:FUN-580031 --end--       HCN
      #FUN-650191 add--begin
      { ON ACTION controlp
          CASE
            WHEN INFIELD(tc_voteb02) 
              CALL cl_init_qry_var()
              LET g_qryparam.state = 'c'
              LET g_qryparam.form ="q_voteb"
              CALL cl_create_qry() RETURNING g_qryparam.multiret
              DISPLAY g_qryparam.multiret TO tc_voteb02
              NEXT FIELD tc_voteb02
           END CASE
      }
      #FUN-650191 add--end
       ON IDLE g_idle_seconds
          CALL cl_on_idle()
          CONTINUE CONSTRUCT
 
      ON ACTION about         #MOD-4C0121
         CALL cl_about()      #MOD-4C0121
 
      ON ACTION help          #MOD-4C0121
         CALL cl_show_help()  #MOD-4C0121
 
      ON ACTION controlg      #MOD-4C0121
         CALL cl_cmdask()     #MOD-4C0121
 
 
                #No:FUN-580031 --start--     HCN
                 ON ACTION qbe_select
                   CALL cl_qbe_select()
                 ON ACTION qbe_save
                   CALL cl_qbe_save()
                #No:FUN-580031 --end--       HCN
    END CONSTRUCT
    IF INT_FLAG THEN
       LET INT_FLAG = 0
       RETURN
    END IF
    CALL i901_b_fill(l_wc2)
END FUNCTION
FUNCTION i901_b_fill(p_wc2)
   DEFINE p_wc2   STRING
   LET g_sql = "SELECT tc_voteb02,tc_voteb03,tc_voteb04,tc_votebacti,tc_votebuser,tc_votebmodu,tc_votebdate",
               " FROM tc_voteb_file",    #No:FUN-550019
               " WHERE tc_voteb01 ='",g_votea.tc_votea01,"' "   #單頭
   #No:9506
   IF NOT cl_null(p_wc2) THEN
      LET g_sql=g_sql CLIPPED," AND ",p_wc2 CLIPPED
   END IF
   LET g_sql=g_sql CLIPPED," ORDER BY 1 "
   #No:9506
   DISPLAY g_sql
   PREPARE i901_pb FROM g_sql
   DECLARE voteb_cs CURSOR FOR i901_pb
   CALL g_voteb.clear()
   LET g_cnt = 1
   FOREACH voteb_cs INTO g_voteb[g_cnt].*   #單身 ARRAY 填充
       IF SQLCA.sqlcode THEN
          CALL cl_err('foreach:',SQLCA.sqlcode,1)
          EXIT FOREACH
       END IF
   
       LET g_cnt = g_cnt + 1
       IF g_cnt > g_max_rec THEN
          CALL cl_err( '', 9035, 0 )
          EXIT FOREACH
       END IF
   END FOREACH
   CALL g_voteb.deleteElement(g_cnt)
 
   LET g_rec_b=g_cnt-1
   DISPLAY g_rec_b TO FORMONLY.cn2
   LET g_cnt = 0
END FUNCTION
FUNCTION i901_copy()
   DEFINE l_newno     LIKE tc_votea_file.tc_votea01,
  l_newdate   LIKE tc_votea_file.tc_voteadate,
          l_oldno     LIKE tc_votea_file.tc_votea01,
          l_old_votea01     LIKE tc_votea_file.tc_votea01,
          l_old_votea02     LIKE tc_votea_file.tc_votea02,
          l_old_votea03     LIKE tc_votea_file.tc_votea03
   DEFINE li_result   LIKE type_file.num5    #No.FUN-680136 SMALLINT
   DEFINE l_sql STRING
   IF s_shut(0) THEN RETURN END IF
   IF g_votea.tc_votea01 IS NULL THEN
      CALL cl_err('',-400,0)
      RETURN
   END IF
  
   LET l_newdate = g_today
   LET g_before_input_done = FALSE
   
   CALL i901_set_entry('a')
   CALL cl_set_head_visible("","YES")           #No.FUN-6B0032 
   INPUT l_newno FROM tc_votea01
        #No:MOD-540182 --start--
       BEFORE INPUT
          CALL cl_set_docno_format("tc_votea01")
        #No:MOD-540182 ---end---
       AFTER FIELD tc_votea01
            #No:MOD-540182 --start--
           CALL s_check_no("apm",l_newno,"","6","tc_votea_file","tc_votea01","") RETURNING li_result,l_newno
      
           DISPLAY l_newno TO tc_votea01
           
           IF (NOT li_result) THEN
              LET g_votea.tc_votea01 = g_votea_o.tc_votea01
              NEXT FIELD tc_votea01
           END IF
    {
         #DISPLAY g_smy.smydesc TO smydesc           #單據名稱
         #No:MOD-540182 ---end---
         AFTER FIELD tc_votea02
          
           IF cl_null(l_old_votea02) THEN
              NEXT FIELD tc_votea02
           END IF
          # DISPLAY l_old_votea02 TO tc_votea02
 AFTER FIELD tc_votea03
        
           IF cl_null(l_old_votea03) THEN
              NEXT FIELD tc_votea03
           END IF
}
BEGIN WORK #No:7857
           CALL s_auto_assign_no("cxx",l_newno,l_newdate,"","tc_votea_file","tc_votea01","","","") RETURNING li_result,l_newno
           IF (NOT li_result) THEN
              NEXT FIELD tc_votea01
           END IF
           DISPLAY l_newno TO tc_votea01
    LET l_sql =" SELECT CASE WHEN sno < 10                 THEN substr('",g_votea.tc_votea01 CLIPPED,"',1,12)||'00'||to_char(sno) ",
           "                   WHEN sno > 10  AND sno < 100  THEN substr('",g_votea.tc_votea01 CLIPPED,"',1,12)|| '0'||to_char(sno) ",
           "               ELSE substr('",g_votea.tc_votea01 CLIPPED,"',1,12)||to_char(sno) ",
           "               END sno ",
           " FROM ( ",
           " SELECT TO_NUMBER(SUBSTR(NVL(MAX(tc_votea01),'XPUBX-'||to_char(sysdate,'yymmdd')||'000'),-3,3))+1 sno ",
   " FROM ds.tc_votea_file WHERE tc_votea01 LIKE substr('",g_votea.tc_votea01 CLIPPED,"',1,12)||'%' )"
     
    #MESSAGE l_sql
    PREPARE i901_snoc FROM l_sql                # RUNTIME 編譯
    IF STATUS THEN CALL cl_err('i901_snoc',STATUS,0) END IF
    #end No:FUN-550019
    DECLARE i901_cs_snoc                        # CURSOR
        CURSOR FOR i901_snoc
    FOREACH i901_cs_snoc INTO l_newno
        IF SQLCA.sqlcode THEN
            CALL cl_err('foreach:',SQLCA.sqlcode,1)
            EXIT FOREACH
            END IF
    END FOREACH
    MESSAGE l_newno
    DISPLAY l_newno TO tc_votea01
          # DISPLAY l_old_votea03 TO tc_votea03
       ON ACTION controlp
          CASE
             WHEN INFIELD(tc_votea01) #單據編號
                 LET g_t1=s_get_doc_no(l_newno)         #No:MOD-540182
                 CALL q_smycust(FALSE,FALSE,g_t1,'APM','6') RETURNING g_t1 #TQC-670008
                 LET l_newno=g_t1                       #No:MOD-540182
                DISPLAY BY NAME l_newno
                NEXT FIELD tc_votea01
              OTHERWISE EXIT CASE
           END CASE
 
      ON IDLE g_idle_seconds
         CALL cl_on_idle()
         CONTINUE INPUT
 
     ON ACTION about         #MOD-4C0121
        CALL cl_about()      #MOD-4C0121
 
     ON ACTION help          #MOD-4C0121
        CALL cl_show_help()  #MOD-4C0121
 
     ON ACTION controlg      #MOD-4C0121
        CALL cl_cmdask()     #MOD-4C0121
 
 
   END INPUT
   IF INT_FLAG THEN
      LET INT_FLAG = 0
      DISPLAY BY NAME g_votea.tc_votea01
       #No:MOD-540182 --start--
      ROLLBACK WORK
       #No:MOD-540182 ---end---
      RETURN
   END IF
   DROP TABLE y
   SELECT * FROM tc_votea_file         #單頭複製
       WHERE tc_votea01 = g_votea.tc_votea01
       INTO TEMP y
   UPDATE y
       SET tc_votea01   = l_newno,  #新的鍵值
 #  tc_votea02   = '',  #新的鍵值
   tc_votea03   = 'U',  #新的鍵值
           tc_voteauser = g_user,   #資料所有者
           tc_voteamodu = NULL,     #資料修改者
           tc_voteadate = g_today,  #資料建立日期
           tc_voteaacti = 'Y',       #有效資料
   tc_voteaconf = 'N'       #有效資料
   INSERT INTO tc_votea_file SELECT * FROM y
   #No:MOD-540182 --start--
   IF SQLCA.SQLCODE THEN
      CALL cl_err3("ins","tc_votea_file","","",SQLCA.SQLCODE,"","",1)  #No.FUN-660129
      ROLLBACK WORK
      RETURN
   ELSE
      COMMIT WORK
   END IF
   #No:MOD-540182 ---end---
   DROP TABLE x
   SELECT * FROM tc_voteb_file         #單身複製
       WHERE tc_voteb01 = g_votea.tc_votea01
       INTO TEMP x
   IF SQLCA.SQLCODE THEN
      CALL cl_err3("ins","x","","",SQLCA.SQLCODE,"","",1)  #No.FUN-660129
      RETURN
   END IF
   UPDATE x SET tc_voteb01 = l_newno
   INSERT INTO tc_voteb_file SELECT * FROM x
   IF SQLCA.SQLCODE THEN
      ROLLBACK WORK #No:7857
      CALL cl_err3("ins","tc_voteb_file","","",SQLCA.SQLCODE,"","",1)  #No.FUN-660129
      RETURN
   ELSE
       COMMIT WORK #No:7857
   END IF
   LET g_cnt=SQLCA.SQLERRD[3]
   MESSAGE '(',g_cnt USING '##&',') ROW of (',l_newno,') O.K'
 
   LET l_oldno = g_votea.tc_votea01
   SELECT ROWID,tc_votea_file.* INTO g_votea_rowid,g_votea.* FROM tc_votea_file WHERE tc_votea01 = l_newno
   CALL i901_u()
   CALL i901_b()
   SELECT ROWID,tc_votea_file.* INTO g_votea_rowid,g_votea.* FROM tc_votea_file WHERE tc_votea01 = l_oldno
   CALL i901_show()
END FUNCTION

 

arrow
arrow
    全站熱搜

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