2008年3月26日 星期三

安裝 Oracle Database 10g Express

Oracle Database 10g Express的安裝其實是相當簡便的,幾乎只要一直下一步就可以完成安裝了

image

接受合約,下一步

image

因為只有一個產品可以選擇安裝,安裝路徑可以改變,下一步

image

設定SYS與SYSTEM USER的密碼,下一步

image

顯示Database一些listener的相關資訊,下一步安裝

image

完成安裝後,可以到資料庫管理首頁做相關設定

image

以SYS身份登入

image

XE的 Web管理頁面還蠻方便,大部分的工作不用再透過其他工具來執行,算是一套不錯的免費資料庫。

對於個人或小企業來說,4GB的資料庫應該很好用了。

image

2008年3月23日 星期日

好用的免費資料庫: Oracle 資料庫 10g 快捷版

我們在開發軟體時,一般都會選擇MySQL當後端資料庫,不過個人覺得若是想享用頂級的免費資料庫,可以有另一個更好的解決方案。Oracle Database 10g Express

Oracle Database 10g Express(Oracle Database XE)是基於 Oracle Database 10g 第 2 版代碼庫的小型入門級資料庫,它具備以下優點:免費進行開發、部署和分發;下載速度快;並且管理簡單。Oracle XE 是一款優秀的入門級資料庫,可供以下使用者使用:

  • 致力於 PHP、Java、.NET、XML 和開放原始程式碼應用程式的開發人員
  • 需要免費的入門級資料庫進行培訓和部署的 DBA
  • 需要入門級資料庫進行免費分發的獨立軟體廠商 (ISV) 和硬體供應商
  • 需要在課程中使用免費資料庫的教育機構和學生

現在,利用 Oracle Database XE,您可以使用強大的基礎架構來開發和部署應用程式,然後在必要時進行升級而不必進行昂貴和複雜的移植。閱讀使用者對 Oracle 資料庫 XE 的評價。

Oracle 資料庫 XE 對安裝到的主機的規模和 CPU 數量不作限制(每台電腦一個資料庫),但 XE 將最多存儲 4GB 的使用者資料,最多使用 1GB 記憶體,並在主機上使用一個 CPU。

clip_image001 下載 Oracle Database 10g XE

2008年3月18日 星期二

月結作業 - AP 應付帳款管理系統

Step 1. Run AutoApprove Process for All Invoices Batches

Approve未簽核之Invoices, 以確定所有之應立帳之Invoices皆已Approved, 可付款並可過帳至GL.

Step 2. Review and Resolve Amounts to Post to GL

a. Review the Posting Holds Report

此報表列出有Holds之Invoices(無法付款與過帳). 依此報表解決Invoices Holds問題後, 可再執行AutoApprove.

b. Optionally Run the Expense Distribution Detail Report

可檢核未過帳之Invoice Distributions是否正確.

c. Optionally Run a Payment Batch

執行付款作業.

d. Confirm all Payment Batches

Confirm 所有Payment Batches, 並可Optionally Run Final Payment Register 列印付款明細.

注意: 若有Payment Batches未Confirm, 則無法關閉AP期間.

e. Optionally Run the Payment Register

可檢核此期間各銀行別之付款資料.

Step 3. Post All Approved Invoices and Payments to GL

執行AP 之General Ledger Transfer

拋轉AP傳票至GL Interface.

執行GL 之Journal Import

由GL Interface 接收子系統傳票.

注意: GL Journal Import 之Batches需於GL 中過帳.

Step 4. Review the A/P to GL Posting process After It Completes

a. Review the Accounts Payable Journal Entry Exception Report

此報表於執行General Ledger Transfer時自動執行, 並列出無法過帳之問題, 如:

Distribution Line 之Accounting Flexfield不允許過帳.

Distribution Line 之Accounting Flexfield為Inactive.

Distribution Line 或Payment 為外幣, 但未輸入匯率.

GL Date(入帳日期) 為Future 或Closed Period.

* 解決以上無法過帳之問題後, 並重新執行General Ledger Transfer.

b. Run Posted Invoices Register

可檢核Invoices拋轉至GL之立帳金額是否正確. 此報表依AP Account列出立帳之金額.

c. Run Posted Payments Register

可檢核Payments拋轉至GL之付款金額是否正確, 並可檢核此期間各銀行別之付款金額.

Step 5. Optionally Submit the Unposted Invoice Sweep

Optionally 執行Unposted Invoice Sweep (Run Report中)

所有GL Date為當期之Invoices或Payment均需Post to GL才可關閉期間. 此作業可將有問題之Unposted Invoices與Payments 轉至下一期. e.g. Period-End 作業時誤將下一期之Invoices與Payments之GL Date輸入於Period End當期.

Preliminary Invoice Sweep Report

參數: Sweep Now 輸入No, 可執行預覽報表.

Actual Invoice Sweep

參數: Sweep Now 輸入Yes, 可執行Sweep至下期作業.

Step 6. Close the Oracle Payables Accounting Period

Step 7. Accrue Uninvoiced Receipts

對當期費用性質採購已收料但應付帳款未立帳之收料金額作期末暫估

Step 8. Reconcile Oracle Payables Activity for the Period

執行Accounts Payables Trial Balance Report

此報表為當期之應付帳款明細帳, 依AP Account列出供應商別之未付或部份付款之Invoices餘額.

試算當期應付帳款餘額

本期Accounts Payable Trial Balance =

上期期末之Accounts Payable Trial Balance (期初餘額) + Posted Invoices Register (本期新增) -

Posted Payment Register (本期付款)

注意: Posted Invoices Register與Posted Payment Register需於執行General Ledger Transfer後列印.

可於GL執行FSG Report, Account Analysis Report, Account Inquiry核對應付帳款餘額

注意: 需確認GL中之AP相關Journal Batches均已過帳.

Step 9. Open the Next Accounting Period

Step 10. Optionally Run the Key Indicators Report

產生以下兩報表,可用於現金流量與預測之分析:

The Key Indicators Current Activity Report

此報表列印Vendors, Invoices, Payments之當期與前期比較, 含筆數與金額.

The Key Indicators State-Of-the-System Report

此報表列印Vendors, Invoices, Payments, Matching Holds之Total筆數與平均數(Average Sites per Vendor, Average Payment per Invoice, Average Invoice per Check, Average Matching Hold per Invoice).

2008年3月6日 星期四

.NET 元件Excel Wrapper的應用

image

因為同事有支重要的Excel排程程式,為了保留所有的格式、計算邏輯以及報表,所以寫了一支專門撈取Oracle ERP訂單資料至Excel檔裡的程式,其中呼叫Excel API的部分是朋友iTSE幫我寫的.NET元件ExcelWrapper.dll,他很大方的讓我放上來,如果有要source code的朋友請跟我聯絡,我再發mail給您。

我把其中產生新檔的code貼上來,雖然寫的不是很好是硬擠出來的,不過對有類似需求的朋友不妨可以參考看看。

 

try
{
    //copy原始檔案至指定目錄
    System.IO.File.Copy(Application.StartupPath + "\\source\\XXX.xls", txtPatch.Text + txtYYMM.Text + "_XXX.xls", true);

    int ColIdx = 0;
    int RowIdx = 7;
    //開啟Excel檔 選擇第一個工作表
    _excel = new ExcelWrapper.ExcelWrapper();
    _excel.OpenFile(txtPatch.Text + txtYYMM.Text + "_MPS.xls", txtPass.Text);
    _excel.SelectWorksheet(1);

    // 連接Oracle
    using (System.Data.OracleClient.OracleConnection oraCn = new OracleConnection())
    {
        oraCn.ConnectionString = global::ExcelReporter.Properties.Settings.Default.ConnectionStringApps;
        System.Data.OracleClient.OracleCommand oCm = new OracleCommand();
        oCm.Connection = oraCn;
        oCm.CommandText = @"begin " +
                          @" DBMS_APPLICATION_INFO.SET_CLIENT_INFO(FND_PROFILE.VALUE('ORG_ID')); " +
                          @"end;";
        oraCn.Open();
        oCm.ExecuteNonQuery();
        oCm.Parameters.Add("p_yymm", OracleType.VarChar).Value = txtYYMM.Text;

        oCm.CommandText =
            @"select to_char(ol.request_date,'YYYY/MM/DD') request_date,......略";

        // 利用DataReader將資料寫入Excel
        System.Data.OracleClient.OracleDataReader ord = oCm.ExecuteReader();
        string sOrderNum = "";
        string sDate = "";
        //...略

        while (ord.Read())
        {
            sOrderNum = "";
            sDate = "";
            //...略

            // 需求日
            sDate = ord[0].ToString();

            // 單號
            sOrderNum = ord[1].ToString();
            //...略

            _excel.SetData(RowIdx, ColIdx + 3, sOrderNum);
            _excel.SetData(RowIdx, ColIdx + 5, sDate);
            //...略

            RowIdx++;

            row++;
        }
        ord.Close();
    }

    // Excel存檔
    _excel.Save();
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
finally
{
    if (_excel != null)
    {
        // 離開Excel
        _excel.Quit();
        _excel = null;
    }
}

2008年3月5日 星期三

月結作業 - INV 庫存管理系統

image

Step 1. Enter All Transactions(處理完成所有交易)

Inventory->Transactions->Miscellaneous Transactions, Subinventory Transfer, Inter-Org Transfer…...

OM->Shipping->Transactions->[Action] Ship Confirm

Inventory->Receiving->Receipts (Customer Return, RMA)

WIP->Material Transaction->WIP Material Transactions

PO-> Receiving->Receipts (Internal & Supplier) &Receiving Transactions

Step 2. Check Transaction Interface

確保 Interface Manager 開啟且運作正常

Material Transaction (INV Module)

Cost Manager (INV Module)

Move Transaction (INV Module)

Inventory Manager (SYSADMIN Module)

Receiving Transaction Manager (SYSADMIN Module)

查詢出未處理(pending or no process) transactions 並重新submit

執行Inv->Transaction-> Pending Transactions 與 Transaction Open

Interface

查詢出ERROR transaction並處理ERROR原因.

Step 3. Check OM Transaction Processes

Unconfirmed Shipment

針對已出貨Ship Conform,但尚未扣庫存者,需執行Inventory interface and Receivable interface transfer 扣庫存及補立AR。

查詢出ERROR transaction並處理ERROR原因--Inventory Interface

Inv->Transaction->Open Interface

查詢出ERROR transaction並處理ERROR原因--Receivable Interface

AR->Transaction->Interface Line

Step 4. Review Inventory Transactions

Correcting Incorrect Account Charges(檢核會計科目)

檢核資料庫中 Material Transaction 中的cost 部份是否有計算,Material Distribution 是否正確產生

Step 5. Balance the perpetual Inventory

以日常印出並簽核之Transactions Register Report核對月底印出之 Transactions Register Report, 總數須相同 , 依據transaction_type 印出資料

若有誤, 須追出原始單據, 修正或補輸入transactions,然後重回上步驟

使用Material Account Distribution Summary Report 檢核期末金額或數量正確性

核對庫存金額與會計科目之正確性: (N) (Report->Costs->All->)

Inventory Value Report

Material Account Distribution Detail Report

Material Account Distribution Summary Report

Step 6. Transfer Summary or Detail Trans To GL

Inventory->Accounting Close Cycle ->General Ledger Transfer (By Org)

G/L Batch sequence

Step 7-8. Close AP, PO, AR, GL, INV