2012-03-26 102 views
0

我正在寫在MySQL/PHP(可能與某種訪問前的結束以及網絡接口)的庫存/發票系統。庫存數據庫(£X任意x)

的問題是,我想要的產品庫存,以便能夠應付該有數倍的折扣項目,如「任意兩個爲£10」。我想要發生的情況是,如果將10個項目添加到發票中,則可以解決這些項目中是否有任何項目符合「任何x對於x」的要求並應用折扣。增加的複雜性是任何項目都可以有不同的折扣,例如「任何2英鎊10英鎊」以及「任何3英鎊12英鎊」。基本上像超市所做的那樣 - 對於最終用戶來說很簡單。

它正常工作,如果我想進入到同一張發票行相同項目的任何X,但它需要比這更靈活。

有沒有人對我怎麼能做到這一點的任何想法?提前致謝。我是相當不錯的HTML/MySQL的/ PHP/JavaScript的等

回答

0

PHP與MySQL的工作,你可以有一個「折扣」表,其中保存的ID爲產品,產品,價格和名稱的數量的報價。 通過這種方式,用一個簡單的查詢,當您爲您覈對表中的發票來計算終值,如果每個產品的報價存在:

SELECT * FROM discounts WHERE product_id = x AND quantity >= y

所以,到最後,你有產品和價格表以及相關優惠表。

0

我會創造代表各種折扣的對象(我會使用C#語法)

public interface IOrderProcessor 
{ 
    bool CanBeApplied(OrderItem item); 
    void Apply(OrderItem item); 
} 

public class TwoForOneProcessor : IOrderProcessor 
{ 
    public bool CanApply(OrderItem item) 
    { 
     // check if the product is in 2 for 1 discount 
    } 

    public void Apply(OrderItem orderItem) 
    { 
     // apply the discount 
    } 
} 

和訂單處理,將採取一切優惠對象,它以應用到項目。對於處理器的數據可以被存儲在數據庫(即該產品可以應用於等)

0

您可能會需要建立某種形式保存有關折扣基本信息「折扣」表 - 如唯一的標識符和描述(這也可以鏈接到觸發此折扣所需的資格規則 - 例如促銷代碼)。

此表還需要爲您的示例創建折扣捆綁的規則,例如「觸發折扣所需的產品數量」和「捆綁價值」 - 爲了靈活性,這些字段應該是無效的,以便你不要要使用捆綁;您可以使用「產品折扣」表中確定的單個價格。

作爲一個基本的例子,你可能有這樣一個折扣表:

+----+-------------+----------------+--------------+------------+----------+ 
| id | description | units_required | bundle_price | start_date | end_date | 
+----+-------------+----------------+--------------+------------+----------+ 
| .. + ...   | ...   | ...   | ...  | ...  | 

...又像product_to_discount鏈接表:

+----+------------+-------------+----------------+------------+ 
| id | product_id | discount_id | units_required | unit_price | 
+----+------------+-------------+----------------+------------+ 
| .. | ...  | ...   | ...   | ...  | 

然後,您鏈接產品折扣,所以如果你有這樣的東西:「從這個範圍內購買任何3件商品只需10英鎊」,你需要將所有可能的合格產品鏈接到折扣並將units_required設置爲3 - 那麼如果這些商品中有3件是在「籃子」中應用bundle_price

你可能需要做一些過濾,以理清其捆綁優先,如果有一個以上的可能性(可能通過計算給出了最大的優惠)。

另一種可能性,像這樣的設置是,它可以讓你做簡單得多的折扣爲好。你可以簡單地離開units_requiredbundle_price作爲NULL和鏈接只是一個單一的產品折扣;可能多次在不同product_to_discount.units_required值不同的價格遊 - 這樣你就可以設置一個單一的產品折扣值,或每件更大的折扣較大的體積。

你也可以添加在一個領域像product_to_discount.product_is_discount,如果你想要做的東西,如「購買X,Y或Z並獲得Q免費」。

這是相當模糊的輪廓排序的,但我希望它可以幫助你指出「正確」的方向......

哦,一兩件事要記住,如果你的系統做任何會計你」會需要傳遞下來「折扣行」考慮到預期的產品價格和折扣一個之間的差異。