2011年2月28日

多角貿易拋轉多倉儲批出貨收貨入庫單的問題

應該都知道出貨單可以多倉儲批出貨吧~
但收貨和入庫單是否可以多倉儲批呢?
當然是不行啦~ 只有出貨才能多筆倉儲批的數量合併成出貨單的同一項次.
所以拋轉到收貨單時變成了倉儲批的欄位是空白的. (那多角貿易就不能確保批號一致了)

問題來了, 這樣多角貿易不就不能用多倉儲批出貨了嗎?
難道要在出貨單一筆一筆 key 要出貨的資訊 ?
如果是鼎新的標準程式, 這是必然的, 必須出貨單產生多項才能避免此問題發生.
因為出貨單的項次和拋轉後的收貨入庫單項次是鎖死的. 必須要一致.
唉~

不過我們可以做以下的修改, 修改 saxmp900.4gl 的程式,
多抓 ogc_file ,並項次能夠是依 ogc_file 排序來自動編號, 這樣不就好了嗎?

1. 首先需要增加抓取 ogc_file 的資訊, 並只在中斷點的時候才做拆多倉儲批控管.

 2. 再來就是自動編號和產生多倉儲批的資訊囉~

3. 試拋看看吧. 看似很難其實很簡單吧.

要注意喔~ 修改確認段時, 就要注意取消確認段, 當然拋轉的程式也要注意拋轉還原囉~
所以記得也要改拋轉還原的程式啦~ 不然標準程式可是會拋轉還原失敗的.

2011年2月22日

請採購部門費用預算管控機制

相信每一家公司都是以營利為目的是吧?
不止要開源-增加訂單和出貨量,節流-控制部門的花費也是必要的管理手段.

如何讓 TIPTOP 實現公司部門費用的預算管理機制呢?
其實只是把功能打開就可以用囉~~
不過最重要的還是: 請購人員需要知道購買何種商品或是服務,
需要入到那一個費用的"會計科目",
入錯費用或是隨意輸入的話,當然就沒有管控的意義啦~

再來就是預算是以"年"為單位,
所以跨年度的預算的請購單, 當然最好是重 key 囉~ (有寫入年度的欄位就不能再續用了.)

如何開啟預算的呢?

1. 先匯入部門預算的資料. (相信應該原本就有在維護了吧~)

2. 會計科目開啟部門預算的控管.

3. 再來就是針對單別來做預算的功能開啟.

4. 之後就是各單位請購單, 記得在單身要維護部門的預算資料囉~~

PS : 部門費用預算的管制, 流程上會有一些程序上的問題,
       盡量能夠保有管控的機制才有意義.

2011年2月21日

如何查詢 TIPTOP 系統的所有欄位的內容和定義

我們在維護 TIPTOP 程式的時候, 會發現 SQL 指令要查詢那一個欄位.
用 p_zta 實在是不方便, 工作效率也不佳.

TIPTOP 在資料庫有紀錄欄位定義的 Table ,
以後只要查詢這一個 Table 就好啦~ 就可以快速查到你要的欄位定義和內容了.

範例參考 :
select * from ds.gaq_file
where gaq02 = '0'   --語言別
and gaq01 like '%ima%'   --Table 的代號
order by 1

是不是就方便許多了呢?

依不同國家的使用者設定不同時區

因 TIPTOP 系統是屬於 Clinet-Server 的架構, 如圖所示 :

也就是說, 所有的使用者端都是連線到伺服端裡面來執行程式,
伺服端執行完成後, 再把執行的結果的畫面傳回到使用者端,
所以 TIPTOP 登入的時間也就不是使用者本機的設定了,
而是 TIPTOP 主機 User profile 的設定.

要如何針對使用者讓顯示的時間是正確的呢?
很簡單, 只要針對 user 在 .profile 檔裡,
加入一行 export TZ=GST+8 就可以了 (以美國西岸為例) ,
再看時區為何來調整要加減多少.

但要注意喔~ .profile 檔不能是 link 的 file , 不然就所有使用者全部跟著改啦~
所以 .profile 檔要先移除 ln 再重新建立.

2011年2月17日

TIPTOP 主機定期備份 Oracle 資料 & TIPTOP 程式, 備份篇

相信 TIPTOP 主機的備份, 大多還是都存在 /u1/backup 目錄裡面,
而且只放一週的資料而已吧~~備份資料還有包含在正式區的測試資料庫...等。
再加上 TIPTOP GP 5.x 開始, 報表轉為 Crysal Report ,
需另外新增一台 IIS Web Service 的 CR 報表伺服器,
備份資料變的分散無法集中,再加上 Linux 沒有開啟 Samba 的服務,  (也比較安全一點)
備份上更是難以管理和紀錄.

好加在還有 FTP 的功能,提供資料上傳和下載的工具將資料移轉到另一台主機.
方便的做法當然是利用 CR 主機的 IIS 服務, 另外再加掛 ftp server 的功能囉~~
這樣備份就變的輕鬆而完整啦~~

TIPTOPGP 主機 --------經由 ftp-------->  CR 主機 ----------> 磁帶或遠端儲存媒體.
 (tar 程式 + exp Oracle DB)              (cr 報表檔)          (可以利用 rar 進行壓縮)

隨著時代不斷的進步,硬碟容量也比以前大很多囉,所以備份到硬碟也是可行的方法之一.
以下就是我的備份方式.皆用排程的方式來自動執行.省時又省力.

1. 上傳 ftp 的指令

2. 自動備份 Oracle 的匯出指令,首先要載入環境變數,讓排程會自動執行

3. 備份資料,可以排除一些 patch 和比較沒有用的資料檔, 節省備份時間和空間

4. 再來就是設定工作排程囉~~用 root 帳號登入後, 執行 crontab -e 來設定排程作業,
    範例說明是設定為早上 7 點自動執行.

5. 再補充一個 rar 的指令,讓資料能夠壓縮起來,資料庫的檔案大小可是差異很大的喔~~~
    可以壓縮大概 80% 的容量...100 MB 壓縮起來剩 20 MB 的磁碟空間大小.

當然囉~~市面上也有很多備份工具可以提供完整的 solution, 不過經濟又實惠的作法也是值得參考的.


2011年2月1日

如何用一個 SQL 來查 BOM -- 遞迴查詢

常常在設計連結資料庫程式的時候, 階層式架構的 Table 大致上都是母子在同一行的樣式來設計,                

資料庫 Table 是容易設計,不過呢? 要把所有的階層展開時,程式就不容易寫,且執行效能也低落,
其實 SQL 是可以做遞迴查詢的,不但不用寫程式一直 WHILE 跑迴圈 , 而且執行效率更快.

以下是 TIPTOP 5.x 的多階 BOM 的 Oracle 範例:

select level,bmb02,bmb01,bmb03,bmb04,bmb05 from bmb_file,bma_file,ima_file
where (bmb05 > sysdate or bmb05 is null)
  and (bmb04 < sysdate or bmb04 is null)
  and bma01 = bmb01 and bmaacti = 'Y'
  and bma01 = ima01
connect by  bmb01 = prior bmb03 and (bmb05 > sysdate or bmb05 is null) and (bmb04 < sysdate or bmb04 is null) and bmaacti = 'Y'
start with ima01 = '料件編號' and (bmb05 > sysdate or bmb05 is null) and (bmb04 < sysdate or bmb04 is null) and bmaacti = 'Y'

抓取最新的 BOM , 有生失效日的判斷 , 重點是還有階層數喔~~
可以試試看.

再提供一些相關的指令:
LEVEL:階數
SYS_CONNECT_BY_PATH(欄位,符號):可以列出整個路徑出來,符號用 -> 會比較清楚
CONNECT_BY_ISLEAF:可以判斷是不是最底層
CONNECT_BY_ROOT(欄位):顯示最上層的資料欄位
CONNECT_BY_ISCYCLE:判斷是否有迴圈
NOCYCLE:加在 CONNECT BY 後面有迴圈的就不繼續往下,可配合 CONNECT_BY_ISCYCLE 使用