天天看點

進銷存中多計量機關解決方法

一、 

我覺得這個問題可以從微軟關于貨币的字段類型得到一些啟發。微軟的貨币型字段其實和數字的一個差別就是可以按照不同國家的币種進行數值轉換。

你看,不管是什麼方式,都作為一個屬性來看待,但是這個屬性值可以不一樣,而且可以用一個函數,根據不同的參數進行轉化。

1 用一個表儲存所有的機關(不管是計價還是計量,還是其他的機關)

2 再用一個表儲存不同機關之間的換算關系(如果有必要的話,其實是否可以用一個全局常量基本确定下來?)

3 然後用一個函數去搞定,什麼地方需要不一樣的資料你就傳入不同的參數好了。

這樣做的好處是通用性很強,維護性好,擴充性好。

二、

機關太多的解決方案:

建立一個“機關換算表”,其中一個是主計量機關,其它的機關是換算到該機關的換算率,

再建立一個“品種檔案”儲存“采購主計量機關”,“生産主計量機關”,“BOM主計量機關”,各子產品的單據中采用各自的主計量機關進行出入庫或者使用的機關,

做帳表統計和查詢的時候按照換算關系進行運算。

在使用者想做查詢的時候,系統可以自動按照是屬于哪個部門,然後把機關換算到該部門所

對應的主計量機關後再進行運算,并顯示出來。

三、

計量機關:至少支援銷售,生産計量,最好采購也支援,主要看你什麼行業了;有時同一個計量機關間的換算是不一樣的,比如:兩種針劑,第一種 1盒 = 10支;地二種 1盒 = 5支;這樣計量機關換算關系要把物料編号包括進去;而且換算關系是不能随便改動的,否則帳本對不起來很正常

四、

1、可以在使用者輸入時彈出一個下拉選框,例如輸入一個“加”就把所有“加”開頭的都列出來,接着輸了“拿大”,就把所有“加拿大”開頭的列出來,供使用者選擇。這樣對使用者來說也友善快捷。

2、原料編号可以做成字元串,随使用者怎麼定義,隻要保證不重複就行了。但是千萬不要把原料編号作為關鍵字,唯一性并不是關鍵字的充分條件,還必須具有不變性。比如說,你的系統已經使用一段時間,在庫存、工藝等表裡都是使用原料編号,突然使用者覺得現有的編号體系不好,想改一改,你就會頭痛了。就算不是大改,平常的增加删除,要是不注意,都會弄出很多問題。比如說,通常編号總是按順序的,使用者删除一種原料後,再增加新原料時,可能會使用原先被删除的編号,但是如果原先删除該原料編号時倉庫裡還有這種原料,而你程式疏忽了,沒做檢查,那你現在就死定了,而且這種錯誤讓你摸不着頭緒。是以原料還得有個系統編号,這是一個内部的流水号,對使用者不可見的,這個才是關鍵字

五、肯定可以支援不同的機關呀。而且在機關之間還可以互相轉換呢!

每一種物料都一有一個基本機關,其餘可能是什麼轉換機關或輔助機關之類的,每個轉換機關或輔助機關都與基本機關有一個轉換比率。

但有一點就是你必須注意,與庫存、成本等打交道的資料都應該要用基本機關進行計算,否則出錯了還不知道錯在哪裡。

關于機關的問題也是一個比較難以處理的問題,有的使用者在開了單之後,還要求對機關進行自由轉換,也就是你所說的那樣。

不過我在處理這些問題還是沒有遇到什麼大問題,因為如果你的資料庫設計的好的話,這些問題還是比較好處理的。 

六、我一點也不覺得你的客戶的要求離譜啊。我以前做的系統就是物料編碼是20位的,物料名稱30位,物料規格30位,和你客戶的要求一樣(不會他們以前用的是我以前公司的産品吧);而且也支援多機關,計量機關和計價機關可以不同。我們的做法是:在物料表中共有3個機關,這3個機關中有一個是基本機關,另外兩個是換算機關,并在換算機關和基本機關之間定義換算率(換算率還包括固定換算率和變動換算率的區分),在庫存系統中包括兩個機關:基本機關(小機關)和一個換算機關(大機關)。比如說物料A,可在庫存系統中定義他的基本機關是‘隻’,換算機關是‘盒’,在定義它們的換算率:10隻/盒,這樣在庫存進、出料的時候就可以發X盒Y隻,而不需換算成隻來做;其他的系統也可支援兩個機關,一個作為基本機關(不一定和庫存的基本機關一緻),另一個是換算機關。例如在采購系統中,對物料A的采購的計價機關是‘盒’,計價的大機關可以是‘箱’,10盒/箱。采購時就可以用N箱M盒來采購,付款依據盒數來付,銷售系統的定義的方法也是一樣

下一篇: 面試算法題