35
EasydoMySQL 第十七章 進銷存管理系統 第十七章 進銷存管理系統 17.1 系統規畫 2 17.2 資料表 3 17.3 關聯資料表定義 12 17.4 資料處理分析 12 17.5 資料建檔 13 17.5.1 基本資料建檔 13 17.5.2 日常資料建檔 15 17.6 資料轉檔 20 17.7 帳款處理 25 17.8 月結 30 17.9 實績分析 33 17.10 年結 34 回目錄 1

第十七章 進銷存管理系統 - web.nuu.edu.twweb.nuu.edu.tw/~carlu/html/eBook/EasydoMySQL/CH17.pdf · 本章將以實務界使用非常普及的資訊系統 - 進銷存管理系統當範例,展

  • Upload
    others

  • View
    42

  • Download
    0

Embed Size (px)

Citation preview

  • EasydoMySQL 第十七章 進銷存管理系統

    第十七章 進銷存管理系統 17.1 系統規畫 2 17.2 資料表 3 17.3 關聯資料表定義 12 17.4 資料處理分析 12 17.5 資料建檔 13 17.5.1 基本資料建檔 13 17.5.2 日常資料建檔 15 17.6 資料轉檔 20 17.7 帳款處理 25 17.8 月結 30 17.9 實績分析 33 17.10 年結 34 回目錄

    1

  • EasydoMySQL 第十七章 進銷存管理系統

    第十七章 進銷存管理系統 本章將以實務界使用非常普及的資訊系統 - 進銷存管理系統當範例,展

    示如何使用 EasyDoMySQL 來發展一個實務應用系統。此範例除了可當教學範例外,也可以導入在實務應用上。

    17.1 系統規畫

    在規畫應用系統時,我們可以試著從管理人員或資料處理人員的角度來瞭解

    他們如何記錄資料、如何使用這些資料,以及這些資料如何產生,進而分析這些

    資料的相互關係,應如何儲存,以及需要保留多久等。這些資料可進一步的來規

    畫相關的資料表,以及所需的資料處理程序。

    就一個進銷存系統而言,當一個企業某項產品開發成功後,首先他要面對的

    核心問題就是市場開拓,亦即需要找尋客戶,並向他們報價。當客戶接受報價條

    件後,接著客戶可能下單並指定出貨之相關條件與約定。此時業務人員應針對該

    客戶建立客戶資料、報價資料,以及訂單和出貨資料,而會計人員也須就該客戶

    建立應收帳款統御帳戶等。

    為了適時提供合乎客戶需求之產品,採購人員必須就業務人員交辦之訂單,

    尋找合適的供應商,採購所需之零組件或產品組合。這些作業過程就如同開發市

    場一樣,需要針對供應商來建立供應商、報價、採購單、應付帳款等資料。

    接近客戶指定之出貨日期前,採購人員必須催促供應商如期交貨。當供應商

    交貨時,應就交貨資料登錄相關的進貨資料。進貨若有不良,則須予以退貨,並

    記錄退貨明細資料。有足夠數量之產品可供出貨時,業務人員立即接手辦理出貨

    事項,出貨資料則記錄在銷貨資料檔。出貨若有不良,客戶退貨時,退貨資料則

    須記錄在退貨資料檔。

    為了應付緊急訂單,或是針對一些標準規格之產品,可採行批次採購以取得

    價格優勢,此時需要一個倉庫來調節進出貨,所有進出貨資料也須適時記錄在庫

    存異動檔。

    當業務人員收到客戶貨款時,應將收款資料記錄在收款資料檔。同理,採購

    人員也須按供應商之約定來支付進貨之貨款。

    月底時(也可視需要採行當日處理原則),前述例行性之異動資料須轉至對

    應主控檔案。其中,進貨數量應轉至採購訂單,而進貨金額、退貨金額及付款資

    料結則轉至應付帳款。同時,銷貨數量須轉至銷貨訂單,而銷貨金額、退貨金額

    及收款資料結則轉至應收帳款,進出庫數量則須轉至庫存檔。此外,為了能分析

    客戶、供應商及產品別之實績,可將各類進出貨資料轉至實績分析檔,以 ↑H

    2

  • EasydoMySQL 第十七章 進銷存管理系統

    便提供高階管理人制訂決策。

    各類異動檔資料完成轉檔作業後,必須將處理完的資料清除,以供次月繼續

    使用這些檔案,通常這些工作都在月底進行,此類處理過程稱之為月結。在年底

    時,各類實績分析檔使用後,也須將之清除以供來年使用,此類處理過程稱之為

    年結。

    經過前述的情境分析(Scenarios Analysis)之後,即可著手設計所需的資料表及資料處理程序。實務上,若能取得企業內各種工作表單或憑證,將有助於系

    統規畫工作。有關本模擬系統之規畫過程,詳述於下。

    17.2 資料表

    本模擬系統使用之資料表與用途,請見表 17.1 之說明,資料庫取名為MySAL。

    表 17.1 模擬系統資料表

    資料表 用 途 使用時機 Bkicbl 進貨退回單 退回進貨貨品-主表 Bkiclog 進貨退回明細表 退回進貨貨品-子表 Bkspbl 銷貨退回單 退回銷貨貨品-主表 Bksplog 銷貨退回明細 退回銷貨貨品-子表 Cuinfo 客戶資料表 登錄客戶資料 Cuquoat 客戶報價資料表 登錄客戶報價資料 Cuspinfo 客戶銷貨年結檔 客戶別銷貨實績分析用 Icbill 進貨單 登錄進貨資料-主表 Iclist 進貨明細表 登錄進貨資料-子表 Icodlst 請購明細表 登錄請購資料-子表 Icorder 請購訂單 登錄請購資料-主表 Icquoat 供應商報價資料表 登錄供應商報價資料 Iostock 庫存異動檔 登錄庫存進出資料 Padtl 付款檔 登錄付款明細 Pdicinfo 產品進貨年結檔 年結及實績分析用 Pdspinfo 產品銷貨年結檔,實績分析用 年結及實績分析用 Pdstock 庫存檔 成品庫存控管 Rcdtl 收款檔 登錄客戶收款明細 Rcpay 應收帳款檔 應收帳款主控檔 Rppay 應付帳款檔 應付帳款主控檔 Spbill 出貨單 登錄銷貨資料-主表 Splist 出貨明細表 登錄銷貨資料-子表 Spodlst 銷貨訂單明細表 登錄銷貨訂單明細-子表

    3

  • EasydoMySQL 第十七章 進銷存管理系統

    Sporder 銷貨訂單 登錄銷貨訂單明細-主表 TxRate 稅率資料 設定發票稅率 Vdicinfo 供應商年結檔 年結及實績分析用 Vendor 供應商資料表 登錄供應商資料

    (1) bkicbl 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 BK_Blno VARCHAR(6)

    NOT NULL Yes 退貨單號

    1 CU_No VARCHAR(10) NOT NULL

    No vendor, cu_no, cu_name

    供應商

    2 BK_Date DATE No 退貨日期 3 DL_Name VARCHAR(26) No 送貨公司

    (2) bkiclog 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註

    0 BK_Blno VARCHAR(6) NOT NULL

    Yes Bkicbl, bk_blno,cu_no

    退貨單號

    1 PD_No VARCHAR(12) NOT NULL

    Yes icquoat, pd_no, cu_no pd no c no

    產品編號

    2 BK_Qty INT DEFAULT 0 No 1 數量

    3 BK_Amt BIGINT DEFAULT 0

    No 0 金額

    4 TX_Amt BIGINT DEFAULT 0

    No 0 稅額

    5 PS_Rest CHAR(1) No B,G,R 處理判定 B:不良/ G:良/ R:整修

    6 PS_Stat CHAR(1) No N,T 處理狀態 N: 未處理, T: 已處理

    7 TR_Note Varchar(2) No 轉檔註記 N: 未轉檔, T: 已轉檔

    8 UP_Time TIMESTAMP No 時戳

    (3) bkspbl 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 BK_Blno VARCHAR(6)

    NOT NULL Yes 退貨單號

    1 CU_No VARCHAR(10) NOT NULL

    No cuinfo, cu_no, cu_name

    客戶編號

    2 BK_Date DATE No 退貨日期 3 DL_Name VARCHAR(26) No 送貨公司

    ↑H

    4

  • EasydoMySQL 第十七章 進銷存管理系統

    (4) bksplog 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 BK_Blno VARCHAR(6)

    NOT NULL Yes Bkspbl,

    bk_blno,cu_no退貨單號

    1 PD_No VARCHAR(12) NOT NULL

    Yes cuquoat, pd_no, cu_no

    產品編號

    2 BK_Qty INT DEFAULT 0 No 1 數量 3 BK_Amt BIGINT

    DEFAULT 0 No 0 金額

    4 TX_Amt BIGINT DEFAULT 0

    No 0 稅額

    5 PS_Rest CHAR(1) No B,G,R 處理判定 B:不良/ G:良/ R:整修

    6 PS_Stat CHAR(1) No N,T 處理狀態 N: 未處理, T: 已處理

    7 TR_Note CHAR(1) No 轉檔註記 N: 未轉檔, T: 已轉檔

    8 UP_Time TIMESTAMP No 時戳

    (5) cuinfo 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 CU_No VARCHAR(10)

    NOT NULL Yes 客戶編號

    1 CU_Name VARCHAR(26) NOT NULL

    No 公司名稱

    2 CU_Tel VARCHAR(12) NOT NULL

    No 電話

    3 CU_Mtel VARCHAR(12) No 行動電話 4 CU_Email VARCHAR(35) No E-mail 5 CU_Staf VARCHAR(20)

    NOT NULL No 聯絡人

    6 CU_Adrs VARCHAR(60) NOT NULL

    No 地址

    7 CU_Txno VARCHAR(10) No 統一編號 8 ML_Type CHAR(3) No NIL,TXT,XLS

    ,RTF,XML,REC,RPT,TPL

    傳送類型

    (6) cuquoat 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 CU_No VARCHAR(10)

    NOT NULL Yes cuinfo, cu_no,

    cu_name 客戶編號

    1 PD_No VARCHAR(12) NOT NULL

    Yes Pdstock, PD_No

    產品編號

    2 CU_Pdno VARCHAR(15) NOT NULL

    No 客戶品號

    3 UN_Price DOUBLE DEFAULT 0.0

    No 0 單價

    4 IC_Tax ENUM('T','F' ) DEFAULT 'T'

    No F,T 含稅 True/False

    5 CS_Cur VARCHAR(8) No 幣別

    5

  • EasydoMySQL 第十七章 進銷存管理系統

    6 QT_Date DATE No 報價日期 7 QT_Note TINYTEXT No 備註 8 PD_Spec TEXT No 規格說明

    (7) cuspinfo 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 CU_No VARCHAR(10)

    NOT NULL Yes 客戶編號

    1 Month TinyINT Default 12

    No 月份

    2 SP_Amt BIGINT DEFAULT 0

    No 0 銷貨金額

    3 EF_Grade DOUBLE DEFAULT 0.0

    No 0 影響度

    4 CL_ABC CHAR(1) No A,B,C 重要度 A, B, C 5 UP_Time TIMESTAMP No 時戳

    (8) icbill 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 SP_Blno VARCHAR(6)

    NOT NULL Yes 進貨單號

    1 OD_Blno VARCHAR(6) NOT NULL

    No icorder,od_blno, cu_no

    訂單編號

    2 CU_No VARCHAR(10) NOT NULL

    No icorder, cu_no, od_blno

    供應商

    3 SP_Date DATE No 出貨日期 4 DL_Name VARCHAR(26) No 送貨公司 5 CL_Note CHAR(1) No N,T 結案 T: 已結案,

    N: 未結案 6 UP_Time TIMESTAMP No 時戳

    (9) iclist 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 SP_Blno VARCHAR(6)

    NOT NULL Yes Icbill,

    sp_blno,cu_no進貨單號

    1 PD_No VARCHAR(12) NOT NULL

    Yes icodlst, pd_no, od_blno

    產品編號

    2 SP_Qty INT DEFAULT 0 No 1 數量 3 SP_Lot INT DEFAULT 0 No 1 件數 4 SP_Amt BIGINT

    DEFAULT 0 No 0 金額

    5 TX_Amt BIGINT DEFAULT 0

    No 0 稅額

    6 ST_Note CHAR(1) No 轉庫存 7 TR_Note CHAR(1) No 轉檔註記 N: 未轉檔,

    T: 已轉檔 8 CL_Note CHAR(1) No N,T 結案 T: 已結案,

    N: 未結案 9 UP_Time TIMESTAMP No 時戳

    ↑H

    6

  • EasydoMySQL 第十七章 進銷存管理系統

    (10) icodlst 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 OD_Blno VARCHAR(6)

    NOT NULL Yes Icorder,

    od_blno,cu_no訂單編號

    1 PD_No Varchar(10) Not Null

    Yes icquoat, pd_no, cu_no

    產品編號

    2 OD_Qty INT DEFAULT 1 No 1 訂貨數量 3 RQ_Date DATE No 交貨日期 4 IC_Qty INT DEFAULT 0 No 0 進貨數量 5 TR_Note CHAR(1) No 轉庫存 N: 未轉檔,

    T: 已轉檔 6 CL_Note CHAR(1) No 結案 T: 已結案,

    N: 未結案 7 UP_Time TIMESTAMP No 時戳

    (11) icorder 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 OD_Blno VARCHAR(6)

    NOT NULL Yes 訂單編號

    1 CU_No VARCHAR(12) NOT NULL

    No vendor, cu_no, cu_name

    供應商

    2 OD_Date DATE No 訂貨日期 3 OD_Note VARCHAR(20) No 備註

    (12) icquoat 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 CU_No VARCHAR(10)

    NOT NULL Yes vendor, cu_no,

    cu_name 供應商

    1 PD_No VARCHAR(12) NOT NULL

    Yes Pdstock,PD_No 產品編號

    2 CU_Pdno VARCHAR(15) NOT NULL

    No 客戶品號

    3 UN_Price DOUBLE DEFAULT 0.0

    No 0 單價

    4 IC_Tax ENUM('T','F' ) DEFAULT 'T'

    No F,T 含稅 True/False

    5 CS_Cur VARCHAR(8) No 幣別 6 QT_Date DATE No 報價日期 7 QT_Note TINYTEXT No 備註 8 PD_Spec TEXT No 規格說明

    (13) iostock 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 IO_Blno VARCHAR(6)

    NOT NULL Yes 異動單號

    1 PD_No VARCHAR(12) NOT NULL

    Yes Pdstock, PD_No

    產品編號

    2 IN_Qty DOUBLE DEFAULT 0.0

    No 0 入庫數量

    7

  • EasydoMySQL 第十七章 進銷存管理系統

    3 OT_Qty DOUBLE DEFAULT 0.0

    No 出庫數量

    4 IO_Date Date No 0 異動日期 5 ST_Note CHAR(1) No 轉庫存 6 UP_Time TIMESTAMP No 時戳

    (14) padtl 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 PA_Blno VARCHAR(10)

    NOT NULL Yes 付款單號

    1 CU_No VARCHAR(10) NOT NULL

    No vendor, cu_no, cu_name

    供應商

    2 PA_Date DATE No 付款日期 3 PA_Amt BIGINT

    DEFAULT 0 No 0 金額

    4 RD_Amt BIGINT DEFAULT 0

    No 0 折讓

    5 PA_Type VARCHAR(6) No CK,CS 付款方式 支票/現金 6 PC_Blno VARCHAR(16) No 付款憑證 7 Ck_Date DATE No 兌現日期 8 PA_Note VARCHAR(20) No 備註 9 TR_Note CHAR(1) No N,T 轉應付 N: 未轉檔,

    T: 已轉檔 10 UP_Time TIMESTAMP No 時戳

    (15) pdicinfo 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 PD_No VARCHAR(12)

    NOT NULL Yes 產品編號

    1 Month TinyINT Default 12

    No 月份

    2 SP_Amt BIGINT DEFAULT 0

    No 進貨金額

    3 EF_Grade DOUBLE DEFAULT 0.0

    No 0 影響度

    4 CL_ABC CHAR(1) No A,B,C 重要度 A, B, C 5 UP_Time TIMESTAMP No 時戳

    (16) pdspinfo 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 PD_No VARCHAR(12)

    NOT NULL Yes 產品編號

    1 Month TinyINT Default 12

    No 月份

    2 SP_Amt BIGINT DEFAULT 0

    No 銷貨金額

    3 EF_Grade DOUBLE DEFAULT 0.0

    No 0 影響度

    4 CL_ABC CHAR(1) No A,B,C 重要度 A, B, C 5 UP_Time TIMESTAMP No 時戳

    8

  • EasydoMySQL 第十七章 進銷存管理系統

    (17) pdstock 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 PD_No VARCHAR(12)

    NOT NULL Yes 產品編號

    1 ST_Qty DOUBLE DEFAULT 0.0

    No 0 庫存總量

    2 ST_Place VARCHAR(20) No 分配儲位 3 ST_Value BIGINT

    DEFAULT 0 No 0 庫存總值

    4 PR_Cdate DATE No 盤點日期 盤點日期 5 IS_Qty DOUBLE

    DEFAULT 0.0 No 0 撥用庫存

    6 UP_Time TIMESTAMP No 時戳

    (18) rcdtl 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 CS_Blno VARCHAR(6)

    NOT NULL Yes 收款單號

    1 CU_No VARCHAR(10) NOT NULL

    No cuinfo, cu_no, cu_name

    客戶編號

    2 CS_Date DATE No 收款日期 3 CS_Amt BIGINT

    DEFAULT 0 No 0 金額

    4 RD_Amt BIGINT DEFAULT 0

    No 0 折讓

    5 CS_Ckno VARCHAR(16) No 支票號碼 6 TR_Note CHAR(1) No N,T 轉應收 N: 未轉檔,

    T: 已轉檔 7 UP_Time TIMESTAMP No 時戳

    (19) rcpay 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 CU_No VARCHAR(10)

    NOT NULL Yes cuinfo, cu_no,

    cu_name 客戶編號

    1 PR_Upamt BIGINT DEFAULT 0

    No 0 前期結欠

    2 CR_Spamt BIGINT DEFAULT 0

    No 0 本期出貨

    3 CR_Bkamt BIGINT DEFAULT 0

    No 0 本期退貨

    4 CR_Csamt BIGINT DEFAULT 0

    No 0 本期收款

    5 CR_Rdamt BIGINT DEFAULT 0

    No 0 本期折讓

    6 CR_Upamt BIGINT DEFAULT 0

    No 0 累計結欠

    7 UP_Time TIMESTAMP No 時戳 ↑H

    9

  • EasydoMySQL 第十七章 進銷存管理系統

    (20) rppay 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註

    0 CU_No VARCHAR(10) NOT NULL

    Yes vendor, cu_no,cu_name

    供應商

    1 PR_Upamt BIGINT DEFAULT 0

    No 0 前期結欠

    2 CR_Spamt BIGINT DEFAULT 0

    No 0 本期進貨

    3 CR_Bkamt BIGINT DEFAULT 0

    No 0 本期退貨

    4 CR_Csamt BIGINT DEFAULT 0

    No 0 本期付款

    5 CR_Rdamt BIGINT DEFAULT 0

    No 0 本期折讓

    6 CR_Upamt BIGINT DEFAULT 0

    No 0 累計結欠

    7 UP_Time TIMESTAMP No 時戳

    (21) spbill 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 SP_Blno VARCHAR(6)

    NOT NULL Yes 出貨單號

    1 OD_Blno VARCHAR(6) NOT NULL

    No sporder, od_blno, cu_no

    訂單編號

    2 CU_No VARCHAR(10) NOT NULL

    No sporder, cu_no, od_blno

    客戶編號

    3 SP_Date DATE No 出貨日期 4 DL_Name VARCHAR(26) No 送貨公司 5 CL_Note CHAR(1) No N,T 結案 T: 已結案,

    N: 未結案 6 UP_Time TIMESTAMP No 時戳

    (22) splist 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 SP_Blno VARCHAR(6)

    NOT NULL Yes Spbill,

    sp_blno,cu_no出貨單號

    1 PD_No VARCHAR(12) NOT NULL

    Yes spodlst, pd_no, od_blno

    產品編號

    2 SP_Qty INT DEFAULT 0 No 1 數量 3 SP_Lot INT DEFAULT 0 No 1 件數 4 SP_Amt BIGINT

    DEFAULT 0 No 0 金額

    5 TX_Amt BIGINT DEFAULT 0

    No 0 稅額

    6 ST_Note CHAR(1) No 轉庫存

    10

  • EasydoMySQL 第十七章 進銷存管理系統

    7 TR_Note CHAR(1) No N,T 轉檔註記 N: 未轉檔, T: 已轉檔

    8 CL_Note CHAR(1) No N,T 結案 T: 已結案, N: 未結案

    9 UP_Time TIMESTAMP No 時戳

    (23) spodlst 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 OD_Blno VARCHAR(6)

    NOT NULL Yes Sporder,

    od_blno,cu_no訂單編號

    1 PD_No Varchar(10) Not Null

    Yes cuquoat, pd_no, cu_no

    PD_No

    2 CU_Pdno VARCHAR(10) NOT NULL

    No 客戶品號

    3 OD_Qty INT DEFAULT 1 No 1 訂貨數量 4 RQ_Date DATE No 交貨日期 5 SP_Qty INT DEFAULT 0 No 0 出貨數量 6 TR_Note CHAR(1) No N,T 轉生產 N: 未轉檔,

    T: 已轉檔 7 CL_Note CHAR(1) No N,T 結案 N: 未轉檔,

    T: 已轉檔 8 UP_Time TIMESTAMP No 時戳

    (24) sporder 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 OD_Blno VARCHAR(6)

    NOT NULL Yes 訂單編號

    1 CU_Odno VARCHAR(12) NOT NULL

    No 客戶訂單

    2 CU_No VARCHAR(12) NOT NULL

    No cuinfo, cu_no, cu_name

    客戶編號

    3 OD_Date DATE No 訂貨日期 4 OD_Note CHAR(20) No 備註

    (25) vdicinfo 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 CU_No VARCHAR(10)

    NOT NULL Yes 供應商

    1 Month TinyINT Default 12

    Yes 月份

    2 SP_Amt BIGINT DEFAULT 0

    No 0 進貨金額

    3 EF_Grade DOUBLE DEFAULT 0.0

    No 0 影響度

    4 CL_ABC CHAR(1) No A,B,C 重要度 A, B, C 5 UP_Time TIMESTAMP No 時戳

    ↑H

    11

  • EasydoMySQL 第十七章 進銷存管理系統

    (26) vendor 資料結構

    序 欄名 欄位型態 主索引 預設值 中文欄名 備註 0 CU_No VARCHAR(10)

    NOT NULL Yes 供應商

    1 CU_Name VARCHAR(26) NOT NULL

    No 公司名稱

    2 CU_Tel VARCHAR(12) NOT NULL

    No 電話

    3 CU_Mtel VARCHAR(12) No 行動電話 4 CU_Email VARCHAR(35) No E-mail 5 CU_Staf VARCHAR(20)

    NOT NULL No 聯絡人

    6 CU_Adrs VARCHAR(60) NOT NULL

    No 地址

    7 CU_Txno VARCHAR(10) No 統一編號 8 ML_Type CHAR(3) No NIL,TXT,XLS

    ,RTF,XML,REC,RPT,TPL

    傳送類型

    17.3 關聯資料表定義

    具有主從關係資料表之關聯定義摘述於表 17.2。

    表 17.2 關聯定義

    主表 子表 主鍵 1 子鍵 1 主鍵 2 子鍵 2

    bkicbl bkiclog BK_Blno BK_Blno

    bkspbl bksplog BK_Blno BK_Blno

    cuinfo rcpay CU_No CU_No

    icbill iclist SP_Blno SP_Blno

    icorder icodlst OD_Blno OD_Blno

    spbill splist SP_Blno SP_Blno

    sporder spodlst OD_Blno OD_Blno

    vendor rppay CU_No CU_No

    17.4 資料處理分析

    有關本模擬系統之主要作業,可分為基本資料建檔、日常作業、異動資料轉

    帳、帳款處理、月結及年結。各項作業之內容及功能說明如下: (1) 基本資料建檔:包括客戶資料、銷貨報價資料、應收帳款設帳、供應商資料、

    進貨報價資料、應付帳款設帳、發票稅率,以及庫存資料。 (2) 日常作業:包括銷貨訂單建檔、進貨訂單建檔、出貨資料登錄、進貨資料登

    錄、銷貨退回登錄、進貨退回登錄、庫存異動資料登錄等。 ↑H

    12

  • EasydoMySQL 第十七章 進銷存管理系統

    3) 異動資料轉帳:將各類進出貨及退貨紀錄結轉至庫存檔、應收帳及應付帳。 (4) 月結及年結:將相關檔案之資料清除,以供次月或來年繼續使用。

    17.5 資料建檔

    各類資料之輸入介面請見下述表格,各個輸入表單之提示畫面及注意事項詳

    述於後。

    17.5.1 基本資料建檔

    (1) 客戶資料登錄畫面

    圖 17.1 客戶資料登錄畫面

    (2) 客戶報價資料登錄畫面

    圖 17.2 客戶報價資料登錄畫面

    ↑H

    13

  • EasydoMySQL 第十七章 進銷存管理系統

    (3) 供應商資料建檔畫面

    (4) 供應商報價資料登錄畫面

    說明: 供應商欄可下拉選取資料,資料來源為 “vendor”。 產品編號欄可下拉選取資料,資料來源為 “pdstock”。

    圖 17.4 供應商報價資料登錄畫面

    圖 17.3 供應商資料登錄畫面

    (5) 應收帳款設帳畫面

    說明: ↑H

    14

  • EasydoMySQL 第十七章 進銷存管理系統

    客戶欄可下拉選取資料,資料來源為 “cuinfo”。

    圖 17.5 應收帳款設帳

    (6) 應付帳款設帳畫面

    說明: 供應商欄可下拉選取資料,資料來源為 “vendor”。

    (7) 庫存資料登帳畫面

    圖 17.5 應付帳款設帳

    圖 17.7 庫存資料登帳畫面

    17.5.2 日常資料建檔 ↑H

    15

  • EasydoMySQL 第十七章 進銷存管理系統

    (1) 銷貨訂單建檔畫面

    說明: 此介面使用父子表單形式,主表單處理 “sporder”,子表單處理 “spodlst”。 客戶編號欄可下拉選取資料,資料來源為 “cuquoat”。 已建報價檔者才能選入銷貨訂單。

    圖 17.8 銷貨訂單建檔畫面

    (2) 出貨資料登錄畫面

    說明: 此介面使用父子表單形式,主表單處理 “spbill”,子表單處理 “splist”。 訂單編號欄可下拉選取資料,資料來源為 “sporder”。

    (3) 收款資料登帳畫面

    圖 17.9 出貨單登錄畫面

    說明: 此介面使用父子表單形式,主表單用於查閱 “rcpay”,子表單用於新增

    “rcdtl”。 ↑H

    16

  • EasydoMySQL 第十七章 進銷存管理系統

    圖 17.10 新增收款資料畫面

    此作業亦可單獨開啟“rcdtl”表單。

    圖 17.11 新增收款資料畫面

    (4) 客戶退貨處理畫面

    說明: 此介面使用父子表單形式,主表單處理 “bkspbl”,子表單處理 “bksplog”。 客戶編號欄可下拉選取資料,資料來源為 “cuinfo”。 產品編號欄可下拉選取資料,資料來源為 “cuquoat”

    ↑H

    17

    圖 17.12 退貨單登錄畫面

  • EasydoMySQL 第十七章 進銷存管理系統

    (5) 請購訂單登錄畫面

    說明: 此介面使用父子表單形式,主表單處理 “icorder”,子表單處理 “icodlst”。 客戶編號欄可下拉選取資料,資料來源為 “vendor”。 產品編號欄可下拉選取資料,資料來源為 “icquoat”。 已建報價檔者才能選入訂單檔。

    圖 17.13 請購訂單登錄畫面

    (6) 進貨資料登錄作畫面

    說明: 此介面使用父子表單形式,主表單處理 “icbill”,子表單處理 “iclist”。 訂單編號欄可下拉選取資料,資料來源為 “icorder”。 客戶編號欄可下拉選取資料,資料來源為 “icorder”。 產品編號欄可下拉選取資料,資料來源為 “icodlst”。

    圖 17.14 進貨資料登錄畫面

    (7) 付款資料登帳畫面

    說明: ↑H

    18

  • EasydoMySQL 第十七章 進銷存管理系統

    此介面使用父子表單形式,主表單用於查閱 “rppay”,子表單用於新增 “padtl”。

    圖 17.15 收款資料登錄畫面

    此作業亦可單獨開啟“padtl”表單。

    圖 17.16 收款資料登錄畫面

    (8) 供應商退貨處理畫面 說明:

    此介面使用父子表單形式,主表單處理 “bkicbl”,子表單處理 “bkiclog”。 客戶編號欄可下拉選取資料,資料來源為 “vendor”。 產品編號欄可下拉選取資料,資料來源為 “icquoat”。

    ↑H

    19

    圖 17.17 退貨單登錄畫面

  • EasydoMySQL 第十七章 進銷存管理系統

    (9) 庫存異動資料登錄畫面

    說明: 產品編號欄可下拉選取資料,資料來源為 “pdstock”。 入庫時,請將入庫數量登錄在 [入庫數量] 欄。 出庫時,請將出庫數量登錄在 [出庫數量] 欄。

    圖 17.18 庫存異動資料登錄畫面

    17.6 資料轉檔

    本節提示之各項轉檔作業均包含備份指令,乃使用本應用系統之BackupTBL巨集指令來備份相關資料表,用戶若不需要備份資料表,可在對應指令前加上註

    解符號//。轉檔前,系統會先將異動檔紀錄依鍵值予以小計,再將小計資料轉入暫存檔 updTable,接著將 updTable 資料轉入主控檔。異動檔轉檔對像均設定為轉檔註紀欄標記為"T",轉檔後則予以更新為="T"。

    若須檢查異動檔與主控檔鍵值是否有不吻合之情形者,可加入下述指令範例

    來檢查兩造鍵值。

    Insert Into 主控檔 (鍵值欄) Select 鍵值欄 From updTable Where (鍵值欄) Not In (Select 鍵值欄 From 主控檔 As objTable);

    (1) 出貨轉銷貨訂單檔

    搭配 SQL 專案代號 PRJ-0001,SQL 指令如下: BackupTBL SQL From splist; BackupTBL SQL From spodlst;

    Create Temporary Table updTable Select spbill.OD_Blno, splist.PD_No, Sum(splist.SP_Qty) As SP_Qty From spbill

    Join splist Where spbill.SP_Blno=splist.SP_Blno And splist.CL_Note"T" Group By spbill.OD_Blno, splist.PD_No; ↑H

    20

  • EasydoMySQL 第十七章 進銷存管理系統

    Lock Table updTable Read, spodlst Write, splist Write;

    Update spodlst join updTable On spodlst.OD_Blno= updTable.OD_Blno And spodlst.PD_No= updTable.PD_No Set spodlst.sp_qty = spodlst.sp_qty + updTable.sp_qty;

    Update splist Set splist.CL_Note ="T" Where splist.CL_Note"T"; Unlock Tables; Drop Temporary Table updTable;

    (2) 出貨轉庫存檔

    搭配 SQL 專案代號 PRJ-0002,SQL 指令如下: BackupTBL SQL From splist; BackupTBL SQL From pdstock;

    Create Temporary Table updTable Select splist.PD_No, Sum(splist.SP_Qty) As SP_Qty From splist Where splist.ST_Note"T" Group By splist.PD_No;

    Lock Tables updTable Write, pdstock Write, splist Write;

    Update pdstock, updTable Set pdstock.ST_Qty= pdstock.ST_Qty - updTable.sp_qty Where pdstock.PD_No=

    updTable.PD_No ;

    Update splist Set splist.ST_Note="T" Where splist.ST_Note"T"; Unlock Tables; Drop Temporary Table updTable;

    (3) 出貨轉客戶年結檔

    搭配 SQL 專案代號 PRJ-0013,SQL 指令如下: BackupTBL SQL From cuspinfo;

    Create Temporary Table updTable Select spbill.CU_No, Month(spbill.SP_Date) As Month, Sum(splist.SP_Amt + splist.TX_Amt) AS Amount From spbill Join splist On spbill.SP_Blno = splist.SP_Blno And splist.TR_Note"T" Group By spbill.CU_No, Month;

    Lock Tables updTable Write, cuspinfo Write, spbill Write, splist Write, cuspinfo As objTable Write; ↑H

    21

  • EasydoMySQL 第十七章 進銷存管理系統

    Insert Into cuspinfo (CU_No, Month) Select CU_No, Month From updTable Where (CU_No, Month) Not In (Select CU_No, Month From cuspinfo As objTable);

    Update cuspinfo, updTable Set cuspinfo.SP_Amt= cuspinfo.SP_Amt + updTable.Amount Where cuspinfo.CU_No= updTable.CU_No

    And cuspinfo.Month= updTable.Month;

    Unlock Tables; Drop Temporary Table updTable;

    (4) 出貨轉產品年結檔

    搭配 SQL 專案代號 PRJ-0014,SQL 指令如下: BackupTBL SQL From pdspinfo;

    Create Temporary Table updTable Select splist.PD_No, Month(spbill.SP_Date) As Month, Sum(splist.SP_Amt + splist.TX_Amt) AS Amount From spbill Join splist On spbill.SP_Blno = splist.SP_Blno And splist.TR_Note"T" Group By splist.PD_No,Month;

    Lock Tables updTable Write, pdspinfo Write, spbill Write, splist Write, pdspinfo As objTable Write;

    Insert Into pdspinfo (PD_No,Month) Select PD_No,Month From updTable Where (PD_No,Month) Not In (Select PD_No,Month From pdspinfo As objTable);

    Update pdspinfo,updTable Set pdspinfo.SP_Amt= pdspinfo.SP_Amt + updTable.Amount Where

    pdspinfo.PD_No= updTable.PD_No And pdspinfo.Month= updTable.Month;

    Unlock Tables; Drop Temporary Table updTable;

    (5) 進貨轉請購訂單檔

    搭配 SQL 專案代號 PRJ-0015,SQL 指令如下: BackupTBL SQL From iclist; BackupTBL SQL From icodlst;

    Create Temporary Table updTable ↑H Select icbill.OD_Blno, iclist.PD_No, Sum(iclist.SP_Qty) As SP_Qty From

    22

  • EasydoMySQL 第十七章 進銷存管理系統

    icbill Join iclist Where icbill.SP_Blno=iclist.SP_Blno And iclist.CL_Note"T" Group By icbill.OD_Blno, iclist.PD_No;

    Lock Table updTable Read, iclist Write, icodlst Write;

    Update icodlst join updTable On icodlst.OD_Blno= updTable.OD_Blno And icodlst.PD_No= updTable.PD_No Set icodlst.IC_qty = icodlst.IC_qty + updTable.sp_qty;

    Update iclist Set iclist.CL_Note ="T" Where iclist.CL_Note"T" ;

    Unlock Tables; Drop Temporary Table updTable;

    (6) 進貨轉庫存檔

    搭配 SQL 專案代號 PRJ-0016,SQL 指令如下: BackupTBL SQL From iclist; BackupTBL SQL From pdstock;

    Create Temporary Table updTable Select iclist.PD_No, Sum(iclist.SP_Qty) As SP_Qty From iclist Where iclist.ST_Note"T" Group By iclist.PD_No;

    Lock Tables updTable Write, pdstock Write, iclist Write; Update pdstock, updTable

    Set pdstock.ST_Qty= pdstock.ST_Qty + updTable.sp_qty Where pdstock.PD_No= updTable.PD_No ;

    Update iclist Set iclist.ST_Note="T" Where iclist.ST_Note"T";

    Unlock Tables; Drop Temporary Table updTable;

    (7) 進貨轉供應商年結檔

    搭配 SQL 專案代號 PRJ-0017,SQL 指令如下: BackupTBL SQL From vdicinfo;

    Create Temporary Table updTable Select icbill.CU_No, Month(icbill.SP_Date) As Month, Sum(iclist.SP_Amt + iclist.TX_Amt) AS Amount From icbill Join iclist On icbill.SP_Blno = iclist.SP_Blno And iclist.TR_Note"T" Group By icbill.CU_No, Month; ↑H

    23

  • EasydoMySQL 第十七章 進銷存管理系統

    Lock Tables updTable Write, vdicinfo Write, icbill Write, iclist Write, vdicinfo As objTable Write;

    Insert Into vdicinfo (CU_No, Month) Select CU_No, Month From updTable Where (CU_No, Month) Not In (Select CU_No, Month From vdicinfo As objTable);

    Update vdicinfo, updTable Set vdicinfo.SP_Amt= vdicinfo.SP_Amt + updTable.Amount Where

    vdicinfo.CU_No= updTable.CU_No And vdicinfo.Month= updTable.Month;

    Unlock Tables; Drop Temporary Table updTable;

    (8) 進貨轉產品年結檔

    搭配 SQL 專案代號 PRJ-0018,SQL 指令如下: BackupTBL SQL From pdicinfo;

    Create Temporary Table updTable Select iclist.PD_No, Month(icbill.SP_Date) As Month, Sum(iclist.SP_Amt + iclist.TX_Amt) AS Amount From icbill Join iclist On icbill.SP_Blno = iclist.SP_Blno And iclist.TR_Note"T"" Group By iclist.PD_No, Month;

    Lock Tables updTable Write, pdicinfo Write, icbill Write, iclist Write, pdicinfo As objTable Write;

    Insert Into pdicinfo (PD_No, Month) Select PD_No, Month From updTable Where (PD_No, Month) Not In (Select PD_No, Month From pdicinfo As objTable);

    Update pdicinfo, updTable Set pdicinfo.SP_Amt= pdicinfo.SP_Amt + updTable.Amount Where

    pdicinfo.PD_No= updTable.PD_No And pdicinfo.Month= updTable.Month;

    Unlock Tables; Drop Temporary Table updTable;

    (9) 庫存異動檔轉庫存檔

    搭配 SQL 專案代號 PRJ-0019,SQL 指令如下: BackupTBL SQL From pdstock; BackupTBL SQL From iostock;

    Create Temporary Table updTable ↑H Select iostock.PD_No, Sum(iostock.IN_Qty) AS IQ, Sum(iostock.OT_Qty) As

    24

  • EasydoMySQL 第十七章 進銷存管理系統

    OQ From iostock Where iostock.ST_Note "T" Group By iostock.PD_No;

    Lock Tables updTable Write, pdstock Write, iostock Write, pdstock As objTable Write;

    Insert Into pdstock (PD_No) Select PD_No From updTable Where (PD_No) Not In (Select PD_No From pdstock As objTable);

    Update pdstock, updTable Set pdstock.ST_Qty= pdstock.ST_Qty + updTable.IQ-updTable.OQ Where

    pdstock.PD_No= updTable.PD_No;

    Update iostock Set iostock.ST_Note ="T" Where iostock.ST_Note"T";

    Unlock Tables; Drop Temporary Table updTable;

    17.7 帳款處理

    (1) 銷貨金額計算

    搭配 SQL 專案代號 PRJ-0003,SQL 指令如下: Lock Tables spbill write, splist write, cuquoat write, txrate write;

    Update spbill Join splist On spbill.SP_Blno = splist.SP_Blno Join cuquoat On spbill.CU_No = cuquoat.CU_No And splist.PD_No =

    cuquoat.PD_No Join txrate On cuquoat.IC_Tax = txrate.IC_Tax Set splist.SP_Amt = splist.SP_Qty* If(cuquoat.IC_Tax="T",

    cuquoat.UN_Price/(1+txRate.TX_Rate), cuquoat.UN_Price), splist.TX_Amt = splist.SP_Qty * If(cuquoat.IC_Tax="T",

    cuquoat.UN_Price/(1+txRate.TX_Rate), cuquoat.UN_Price) * txRate.TX_Rate;

    Unlock Tables; 註 1:報價檔若含稅者,將統一轉為不含稅,然後以外加方式處理貨款。稅率在

    txrate 資料表內定義。 註 2:指令內之 If(cuquoat.IC_Tax="T", cuquoat.UN_Price/(1+txRate.TX_Rate),其

    中 IF 為 MySQL 專用函數,詳細用法請參看 MySQL 專用函數說明。

    (2) 客戶退貨金額計算

    搭配 SQL 專案代號 PRJ-0004,SQL 指令如下: Lock Tables bkspbl write, bksplog write,cuquoat write, txrate write; ↑H

    25

  • EasydoMySQL 第十七章 進銷存管理系統

    Update bkspbl Join bksplog On bkspbl.BK_Blno=bksplog.BK_Blno Join cuquoat On bkspbl.CU_No=cuquoat.CU_No And bksplog.PD_No=cuquoat.PD_No

    Join txrate On cuquoat.IC_Tax = txrate.IC_Tax Set bksplog.BK_Amt= bksplog.BK_Qty* If(cuquoat.IC_Tax="T",

    cuquoat.UN_Price/(1+txRate.TX_Rate), cuquoat.UN_Price), bksplog.TX_Amt=bksplog.BK_Qty * If(cuquoat.IC_Tax="T", cuquoat.UN_Price/(1+txRate.TX_Rate), cuquoat.UN_Price) * txRate.TX_Rate;

    Unlock Tables;

    (3) 進貨金額計算

    搭配 SQL 專案代號 PRJ-0005,SQL 指令如下: Lock Tables icbill write, iclist write, icquoat write, txrate write;

    Update icbill Join iclist On icbill.SP_Blno=iclist.SP_Blno Join icquoat On icbill.CU_No = icquoat.CU_No And iclist.PD_No=icquoat.PD_No Join txrate On icquoat.IC_Tax = txrate.IC_Tax Set iclist.SP_Amt = iclist.SP_Qty* If(icquoat.IC_Tax="T",

    icquoat.UN_Price/(1+txRate.TX_Rate),icquoat.UN_Price), iclist.TX_Amt = iclist.SP_Qty * If(icquoat.IC_Tax="T", icquoat.UN_Price /(1+txRate.TX_Rate), icquoat.UN_Price)* txRate.TX_Rate;

    Unlock Tables;

    (4) 進貨退回金額計算

    搭配 SQL 專案代號 PRJ-0006,SQL 指令如下: Lock Tables bkicbl write, bkiclog write,icquoat write, txrate write;

    Update bkicbl Join bkiclog On bkicbl.BK_Blno=bkiclog.BK_Blno Join icquoat On bkicbl.CU_No = icquoat.CU_No And bkiclog.PD_No =

    icquoat.PD_No Join txrate On icquoat.IC_Tax = txrate.IC_Tax Set bkiclog.BK_Amt = bkiclog.BK_Qty* If(icquoat.IC_Tax="T",

    icquoat.UN_Price/(1+txRate.TX_Rate), icquoat.UN_Price),bkiclog.TX_Amt = bkiclog.BK_Qty * If(icquoat.IC_Tax="T",icquoat.UN_Price/(1+txRate.TX_Rate), icquoat.UN_Price)* txRate.TX_Rate;

    Unlock Tables;

    (5) 出貨轉應收帳 ↑H

    26

  • EasydoMySQL 第十七章 進銷存管理系統

    搭配 SQL 專案代號 PRJ-0007,SQL 指令如下: BackupTBL SQL From splist; BackupTBL SQL From rcpay;

    Create Temporary Table updTable Select spbill.CU_No, Sum(splist.SP_Amt + splist.TX_Amt) AS Amount,

    splist.TR_Note From spbill Join splist Where spbill.SP_Blno = splist.SP_Blno And splist.TR_Note"T" Group By spbill.CU_No;

    Lock Tables updTable write, spbill write, splist write,rcpay Write, rcpay As objTable Write;

    Insert Into rcpay (CU_No) Select CU_No From updTable Where (CU_No) Not In (Select CU_No From rcpay As objTable);

    Update rcpay, updTable Set rcpay.CR_Spamt = rcpay.CR_Spamt + updTable.Amount Where rcpay.CU_No=

    updTable.CU_No;

    Update splist Set splist.TR_Note ="T" Where splist.TR_Note"T";

    Unlock Tables; Drop Temporary Table updTable;

    (6) 收款轉應收帳

    搭配 SQL 專案代號 PRJ-0008,SQL 指令如下: BackupTBL SQL From rcdtl ; BackupTBL SQL From rcpay;

    Create Temporary Table updTable Select rcdtl.CU_No, Sum(rcdtl.CS_Amt) As Csamt, Sum(rcdtl.RD_Amt) As RdAmt,

    rcdtl.TR_Note From rcdtl Where rcdtl.TR_Note"T" Group By rcdtl.CU_No; Lock Tables updTable write, rcdtl write,rcpay Write;

    Update rcpay, updTable Set rcpay.CR_Csamt = rcpay.CR_Csamt + updTable.Csamt,rcpay.CR_Rdamt =

    rcpay.CR_Rdamt + updTable.Rdamt Where rcpay.CU_No = updTable.CU_No;

    Update rcdtl Set rcdtl.TR_Note="T" Where rcdtl.TR_Note"T";

    Unlock Tables; Drop Temporary Table updTable;

    (7) 銷貨退回轉應收帳 ↑H

    27

  • EasydoMySQL 第十七章 進銷存管理系統

    搭配 SQL 專案代號 PRJ-0009,SQL 指令如下: BackupTBL SQL From bksplog; BackupTBL SQL From rcpay;

    Create Temporary Table updTable Select bkspbl.CU_No, Sum(bksplog.BK_Amt + bksplog.TX_Amt) AS BkAmt,

    bksplog.TR_Note From bkspbl Join bksplog Where bkspbl.BK_Blno = bksplog.BK_Blno And

    bksplog.TR_Note"T" Group By bkspbl.CU_No;

    Lock Tables updTable write, bkspbl write, bksplog write, rcpay Write;

    Update rcpay, updTable Set rcpay.CR_Bkamt = rcpay.CR_Bkamt + updTable.Bkamt Where rcpay.CU_No = updTable.CU_No;

    Update bksplog Set bksplog.TR_Note="T" Where bksplog.TR_Note"T";

    Unlock Tables; Drop Temporary Table updTable;

    (8) 進貨轉應付帳

    搭配 SQL 專案代號 PRJ-0010,SQL 指令如下: BackupTBL SQL From iclist; BackupTBL SQL From rppay;

    Create Temporary Table updTable Select icbill.CU_No, Sum(iclist.SP_Amt + iclist.TX_Amt) AS Amount,

    iclist.TR_Note From icbill Join iclist Where icbill.SP_Blno = iclist.SP_Blno And iclist.TR_Note"T" Group By icbill.CU_No;

    Lock Tables updTable write, icbill write, iclist write,rppay Write, rppay As objTable Write;

    Insert Into rppay (CU_No) Select CU_No From updTable Where (CU_No) Not In (Select CU_No From rppay As objTable);

    Update rppay, updTable Set rppay.CR_Spamt = rppay.CR_Spamt + updTable.Amount Where rppay.CU_No

    = updTable.CU_No;

    Update iclist Set iclist.TR_Note ="T" Where iclist.TR_Note"T"; ↑H

    28

  • EasydoMySQL 第十七章 進銷存管理系統

    Unlock Tables; Drop Temporary Table updTable;

    (9) 付款轉應付帳

    搭配 SQL 專案代號 PRJ-0011,SQL 指令如下: BackupTBL SQL From padtl; BackupTBL SQL From rppay;

    Create Temporary Table updTable Select padtl.CU_No, Sum(padtl.PA_Amt) As Paamt, Sum(padtl.RD_Amt) As

    RdAmt, padtl.TR_Note From padtl Where padtl.TR_Note"T" Group By padtl.CU_No;

    Lock Tables updTable write, padtl write,rppay Write;

    Update rppay, updTable Set rppay.CR_Csamt = rppay.CR_Csamt + updTable.Paamt,rppay.CR_Rdamt =

    rppay.CR_Rdamt + updTable.Rdamt Where rppay.CU_No = updTable.CU_No;

    Update padtl Set padtl.TR_Note="T" Where padtl.TR_Note"T"; Update rppay Set CR_Upamt = PR_Upamt + CR_Spamt- CR_Bkamt- CR_Csamt-

    CR_Rdamt;

    Unlock Tables; Drop Temporary Table updTable;

    (10). 進貨退回轉應付帳

    搭配 SQL 專案代號 PRJ-0012,SQL 指令如下: BackupTBL SQL From bkiclog; BackupTBL SQL From rppay;

    Create Temporary Table updTable Select bkicbl.CU_No, Sum(bkiclog.BK_Amt + bkiclog.TX_Amt) AS BkAmt,

    bkiclog.TR_Note From bkicbl Join bkiclog Where bkicbl.BK_Blno = bkiclog.BK_Blno And

    bkiclog.TR_Note"T" Group By bkicbl.CU_No;

    Lock Tables updTable write, bkicbl write, bkiclog write, rppay Write;

    Update rppay, updTable Set rppay.CR_Bkamt = rppay.CR_Bkamt + updTable.Bkamt Where rppay.CU_No = updTable.CU_No; ↑H

    29

  • EasydoMySQL 第十七章 進銷存管理系統

    Update bkiclog Set bkiclog.TR_Note="T" Where bkiclog.TR_Note"T";

    Unlock Tables; Drop Temporary Table updTable;

    (11)累計應收整理

    搭配 SQL 專案代號 SQL-0034,SQL 指令如下: Update rcpay Set rcpay.CR_Upamt = rcpay.PR_Upamt +r cpay.CR_Spamt –r

    cpay.CR_Bkam t- rcpay.CR_Csamt - rcpay.CR_Rdamt;

    (12)累計應付整理

    搭配 SQL 專案代號 SQL-0035,SQL 指令如下:

    Update rppay Set rppay.CR_Upamt = rppay.PR_Upamt + rppay.CR_Spamt - rppay.CR_Bkamt - rppay.CR_Csamt - rppay.CR_Rdamt;

    17.8 月結

    (1) 銷貨訂單月結:交貨完畢或已結案部份

    搭配 SQL 專案代號 PRJ-0020,SQL 指令如下: BackupTBL SQL From sporder; BackupTBL SQL From spodlst;

    Lock Tables sporder Write, spodlst Write;

    Delete sporder, spodlst From sporder Join spodlst On sporder.OD_Blno = spodlst.OD_Blno And (spodlst.SP_Qty >=spodlst.OD_Qty Or spodlst.CL_Note="T");

    Delete From sporder Where sporder.OD_Blno Not In (Select OD_Blno From spodlst);

    Unlock Tables;

    (2) 出貨檔月結:已轉帳部份

    搭配 SQL 專案代號 PRJ-0021,SQL 指令如下: BackupTBL SQL From spbill; BackupTBL SQL From splist;

    Lock Tables spbill Write, splist Write;

    Delete spbill, splist From spbill ↑H

    30

  • EasydoMySQL 第十七章 進銷存管理系統

    Join splist On sp bill.SP_Blno = splist.SP_Blno And splist.TR_Note="T";

    Delete From spbill Where spbill.SP_Blno Not In (Select SP_Blno From splist); Unlock Tables;

    (3) 銷貨退回月結:已轉帳部份

    搭配 SQL 專案代號 PRJ-0022,SQL 指令如下: BackupTBL SQL From bkspbl; BackupTBL SQL From bksplog;

    Lock Tables bkspbl Write, bksplog Write;

    Delete bkspbl, bksplog From bkspbl Join bksplog On bkspbl.BK_Blno = bksplog.BK_Blno And bksplog.TR_Note="T";

    Delete From bkspbl Where bkspbl.BK_Blno Not In (Select BK_Blno From bksplog); Unlock Tables;

    (4) 請購訂單月結:交貨完畢或已結案部份

    搭配 SQL 專案代號 PRJ-0023,SQL 指令如下: BackupTBL SQL From icorder; BackupTBL SQL From icodlst;

    Lock Tables icorder Write, icodlst Write;

    Delete icorder, icodlst From icorder Join icodlst On icorder.OD_Blno =icodlst.OD_Blno Where (icodlst.IC_Qty >=OD_Qty Or icodlst.CL_Note="T");

    Delete From icorder Where icorder.OD_Blno Not In (Select OD_Blno From icodlst); Unlock Tables;

    (5) 進貨檔月結:已轉帳部份

    搭配 SQL 專案代號 PRJ-0024,SQL 指令如下: BackupTBL SQL From icbill; BackupTBL SQL From iclist;

    Lock Tables icbill Write, iclist Write;

    Delete icbill, iclist From icbill Join iclist On icbill.SP_Blno = iclist.SP_Blno And iclist.TR_Note="T";

    Delete From icbill Where (icbill.SP_Blno) Not In (Select SP_Blno From iclist); ↑H

    31

  • EasydoMySQL 第十七章 進銷存管理系統

    Unlock Tables;

    (6) 進貨退回月結:已轉帳部份

    搭配 SQL 專案代號 PRJ-0025,SQL 指令如下: BackupTBL SQL From bkicbl; BackupTBL SQL From bkiclog;

    Lock Tables bkicbl Write, bkiclog Write;

    Delete bkicbl,bkiclog From bkicbl Join bkiclog On bkicbl.BK_Blno = bkiclog.BK_Blno And bkiclog.TR_Note="T";

    Delete From bkicbl Where bkicbl.BK_Blno Not In (Select BK_Blno From bkiclog); Unlock Tables;

    (7) 庫存異動檔月結:已轉帳部份

    搭配 SQL 專案代號 PRJ-0026,SQL 指令如下: BackupTBL SQL From iostock;

    Lock Tables iostock Write;

    Delete From iostock Where iostock.ST_Note="T"; Unlock Tables;

    (8) 收款檔月結:已轉帳部份

    搭配 SQL 專案代號 PRJ-0027,SQL 指令如下: BackupTBL SQL From rcdtl;

    Lock Tables rcdtl Write;

    Delete From rcdtl Where rcdtl.TR_Note="T"; Unlock Tables;

    (9) 付款檔月結:已轉帳部份

    搭配 SQL 專案代號 PRJ-0028,SQL 指令如下: BackupTBL SQL From padtl;

    Lock Tables padtl Write;

    Delete From padtl Where padtl.TR_Note="T"; Unlock Tables;

    (10) 應收帳款月底沖轉 ↑H

    32

  • EasydoMySQL 第十七章 進銷存管理系統

    搭配 SQL 專案代號 PRJ-0029,SQL 指令如下: BackupTBL SQL From rcpay;

    Lock Tables rcpay Write;

    Update rcpay Set rcpay.CR_Upamt=rcpay.PR_Upamt+rcpay.CR_Spamt-rcpay.CR_Bkamt- rcpay.CR_Csamt-rcpay.CR_Rdamt,

    rcpay.PR_Upamt = rcpay.CR_Upamt, rcpay.CR_Spamt = 0, rcpay.CR_Bkamt = 0, rcpay.CR_Csamt= 0, rcpay.CR_Rdamt = 0;

    Unlock Tables;

    (11) 應付帳款月底沖轉

    搭配 SQL 專案代號 PRJ-0030,SQL 指令如下: BackupTBL SQL From rppay;

    Lock Tables rppay Write;

    Update rppay Set rppay.CR_Upamt=rppay.PR_Upamt+rppay.CR_Spamt-rppay.CR_Bkamt-rppay.CR_Csamt-rppay.CR_Rdamt,

    rppay.PR_Upamt = rppay.CR_Upamt, rppay.CR_Spamt = 0, rppay.CR_Bkamt = 0, rppay.CR_Csamt= 0, rppay.CR_Rdamt = 0;

    Unlock Tables;

    17.9 實績分析

    (1) 客戶別銷貨 ABC 分析

    搭配 SQL 專案代號 PRJ-0031,SQL 指令如下: AbcData CU_No, SP_Amt From cuspinfo With 0.7, 0.9 ;

    (2) 產品別銷貨 ABC 分析

    搭配 SQL 專案代號 PRJ-0032,SQL 指令如下: AbcData PD_No, SP_Amt From pdspinfo With 0.7, 0.9 ;;

    (3) 供應商進貨 ABC 分析

    搭配SQL專案代號 PRJ-0033,SQL指令如下: ↑H

    33

  • EasydoMySQL 第十七章 進銷存管理系統

    AbcData CU_No, SP_Amt From vdicinfo With 0.7, 0.9 ;

    (4) 產品別進貨 ABC 分析

    搭配 SQL 專案代號 PRJ-0034,SQL 指令如下: AbcData PD_No, SP_Amt From pdicinfo With 0.7, 0.9 ;

    17.10 年結

    (1) 客戶別銷貨檔年結

    搭配 SQL 專案代號 PRJ-0035,SQL 指令如下: BackupTBL SQL From cuspinfo;

    Lock Tables cuspinfo;

    Delete From cuspinfo; Unlock Tables;

    (2) 產品別銷貨檔年結

    搭配 SQL 專案代號 PRJ-0036,SQL 指令如下: BackupTBL SQL From pdspinfo;

    Lock Tables pdspinfo;

    Delete From pdspinfo; Unlock Tables;

    (3) 供應商進貨檔年結

    搭配 SQL 專案代號 PRJ-0037,SQL 指令如下: BackupTBL SQL From vdicinfo;

    Lock Tables vdicinfo;

    Delete From vdicinfo; Unlock Tables;

    (4) 產品別進銷貨檔年結

    搭配 SQL 專案代號 PRJ-0038,SQL 指令如下: ↑H

    34

  • EasydoMySQL

    35

    第十七章 進銷存管理系統

    課後習題

    1. 請依本章範例,重建一個進銷存管理系統。 2. 新增下列用戶:

    Incomer:進貨管理員,負責進貨處理工作。 Saler:銷貨管理員,負責銷貨處理工作。 Stocker:庫存管理員,負責庫存處理工作。 Accounter:帳務管理員,負責應收帳款、應付帳款及結帳處理工作。

    3. 將相關作業分別指派給上述人員。 4. 各資料表分別輸入數筆紀錄,然後練習使用各資料處理功能來處理及分析資

    料。 ↑H 回目錄