2012-04-06 34 views
11

Tôi đang cố tạo hệ thống quản lý điểm bán hàng và khoảng không quảng cáo cơ bản.Địa chỉ điểm bán hàng và lược đồ cơ sở dữ liệu khoảng không quảng cáo

Một số điều cần đưa vào tài khoản:

  • Các sản phẩm luôn luôn giống nhau (cùng một ID) thông qua toàn bộ hệ thống, nhưng hàng tồn kho (đơn vị có sẵn để bán cho mỗi sản phẩm) là duy nhất cho mỗi vị trí. Vị trí Y và Z có thể đều có đơn vị bán sản phẩm X, nhưng nếu, ví dụ: hai đơn vị được bán từ vị trí Y, khoảng không quảng cáo của vị trí Z sẽ không bị ảnh hưởng. đơn vị còn lại của nó vẫn còn nguyên vẹn.
  • Bán một (1) đơn vị sản phẩm X từ vị trí Y, có nghĩa là khoảng không quảng cáo của vị trí Y nên trừ một đơn vị khỏi khoảng không quảng cáo của nó.

Từ đó, tôi nghĩ đến các bảng:

  • địa điểm

    • id
    • tên sản phẩm
    • id
    • tên
  • giao dịch

    • id
    • mô tả
  • inventories_header

    • id
    • location_id
    • product_id
  • inventories_detail

    • inventories_id
    • TRANSACTION_ID
    • unit_cost
    • unit_price
    • lượng
  • orders_header

    • id
    • ngày
    • tổng
    • (được tính từ số lượng orders_detail * giá; chỉ để xác nhận dữ liệu trong tương lai)
  • orders_detail

    • order_id
    • TRANSACTION_ID
    • product_id
    • lượng
    • giá

Được rồi, vì vậy, có bất kỳ câu hỏi nào không? Tất nhiên.

  1. Làm cách nào để theo dõi thay đổi về chi phí đơn vị? Nếu một ngày nào đó tôi bắt đầu trả nhiều hơn cho một sản phẩm nhất định, tôi sẽ cần theo dõi tiện ích cận biên ((cost*quantity) - (price*quantity) = marginal utility) một cách nào đó. Tôi nghĩ về inventories_detail chủ yếu cho việc này. Tôi sẽ không có quan tâm khác.
  2. Các mối quan hệ có được thiết lập tốt không? Tôi vẫn còn có một thời gian khó khăn suy nghĩ nếu các địa điểm có hàng tồn kho, hoặc nếu hàng tồn kho có một số địa điểm. Thật là buồn.
  3. Làm cách nào để bạn biết/nắm giữ các mức cổ phiếu hiện tại của mình? Vì tôi đã phải tách bảng kiểm kê để cập nhật các bản cập nhật chi phí, tôi đoán tôi sẽ chỉ phải thêm tất cả các số lượng được nêu trong Inventories_detail.
  4. Bạn có muốn chia sẻ bất kỳ đề xuất nào không?

Tôi chắc chắn tôi vẫn có một số câu hỏi, nhưng đây là những thứ tôi cần giải quyết. Ngoài ra, vì tôi đang sử dụng Ruby on Rails lần đầu tiên, thực tế, là một trải nghiệm học tập, thật đáng tiếc khi dừng lại ở thiết kế, không cho phép tôi thực hiện nhanh hơn, nhưng tôi đoán đó là cách thực hiện.

Xin cảm ơn trước.

+0

cũng đã hoàn thành câu hỏi hay của mình –

Trả lời

17

Phần khó khăn ở đây là bạn đang thực sự làm nhiều hơn một giải pháp POS. Bạn cũng đang thực hiện quản lý khoảng không quảng cáo & hệ thống kế toán chi phí cơ bản.

Kịch bản đầu tiên bạn cần giải quyết là phương pháp kế toán bạn sẽ sử dụng để xác định chi phí của bất kỳ mặt hàng nào được bán. Các tùy chọn phổ biến nhất sẽ là FIFO, LIFO hoặc Định danh cụ thể (tất cả các cụm từ có thể được Googled).

Trong tất cả 3 trường hợp, bạn nên ghi lại việc mua hàng hóa của mình trong cấu trúc dữ liệu (thường được gọi là PurchaseOrder, nhưng trong trường hợp này tôi sẽ gọi nó là SourcingOrder để phân biệt với bảng đơn đặt hàng của bạn trong câu hỏi gốc).

Cấu trúc bên dưới giả định rằng mỗi dòng đặt hàng sẽ là một vị trí (nếu không mọi thứ trở nên phức tạp hơn). Nói cách khác, nếu tôi mua 2 widget cho cửa hàng A và 2 cho cửa hàng B, tôi muốn thêm 2 dòng để các đơn đặt hàng với số lượng 2 cho mỗi, không một dòng với số lượng 4.

SourcingOrder 
- order_number 
- order_date 

SourcingOrderLine 
- product_id 
- unit_cost 
- quantity 
- location_id 

tồn kho có thể một cấp ...

InventoryTransaction 
- product_id 
- quantity 
- sourcing_order_line_id 
- order_line_id 
- location_id 
- source_inventory_transaction_id 

Mỗi lần một SourcingOrderLine nhận được tại một cửa hàng, bạn sẽ tạo một InventoryTransaction với số lượng tích cực và tài liệu tham khảo FK đến sourcing_order_line_id, product_idlocation_id.

Mỗi khi bán hàng được thực hiện, bạn sẽ tạo một InventoryTransaction với số lượng âm và tham chiếu FK tới số order_line_id, product_idlocation_id, source_inventory_transaction_id.

source_inventory_transaction_id sẽ là một liên kết từ số lượng âm InventoryTransaction trở lại số lượng postiive InventoryTransaction được tính bằng cách sử dụng phương pháp kế toán bạn chọn.

Khoảng không quảng cáo hiện tại cho một vị trí sẽ là SELECT sum(quantity) FROM inventory_transactions WHERE product_id = ? and location_id = ? GROUP BY product_id, location_id.

Chi phí cận biên sẽ được tính bằng cách truy tìm lại từ bán hàng, thông qua 2 giao dịch khoảng không quảng cáo có liên quan đến dòng SourcingOrder.

LƯU Ý: Bạn phải xử lý trường hợp bạn phân bổ một dòng đơn hàng trên 2 giao dịch khoảng không quảng cáo vì số lượng đặt hàng lớn hơn số còn lại trong giao dịch khoảng không quảng cáo tiếp theo. Cấu trúc dữ liệu này sẽ xử lý điều này, nhưng bạn sẽ cần phải làm việc logic và truy vấn chính mình.

+0

Heck, các phương pháp kế toán khiến mọi việc khó theo dõi hơn. Tôi biết rằng "chi phí đơn vị" bổ sung cuối cùng chắc chắn không phải là một ý tưởng tốt ... Cảm ơn câu trả lời. Tôi sẽ tiếp tục đọc nó với sự chú ý đặc biệt. –

+0

Xin chào! Nếu tôi sử dụng FIFO, tôi sẽ liên kết các lĩnh vực như thế nào? Nếu tôi chỉ bán được hai mặt hàng, tôi sẽ trừ đi thứ tự cũ nhất (order_date) SourceOrder, đúng không? Xin lỗi, chỉ cố gắng liên kết thông tin. Cảm ơn! Ồ, nhân tiện, nếu tôi xử lý đơn hàng/khoảng không quảng cáo riêng lẻ của vị trí, không nên location_id đi vào SourceOrder thay vì SourceOrderLine? –

+0

Có, về các câu hỏi của FIFO. Trên SourceOrder vs SourceOrderLine, bạn có thể đi theo một trong hai cách. Tôi sẽ đặt nó ở cấp độ dòng để tăng tính linh hoạt sau này nếu bạn muốn phát hành một đơn đặt hàng cho nhiều cửa hàng. Ngoài ra, vui lòng chấp nhận câu trả lời. –

2

Brian là chính xác. Chỉ cần thêm thông tin bổ sung. Nếu bạn đang làm việc trong một hệ thống hoàn chỉnh cho doanh nghiệp hoặc khách hàng của bạn. Tôi sẽ đề nghị bạn bắt đầu làm việc ở cấp độ tổ chức xuống để xử lý POS và kế toán. Điều đó sẽ làm cho trải nghiệm cơ sở dữ liệu của bạn rộng hơn ...: P Trong kinh nghiệm của tôi trong việc phát triển hệ thống, mô-đun khoảng không quảng cáo luôn bắt đầu với việc lấy chứng khoán + (trả lại mua hàng) = SKU có sẵn để bán. POS không được gắn trực tiếp vào mô-đun Kiểm kê mà thay vào đó sẽ được người giám sát bán hàng điều chỉnh hàng ngày. Tổng số lượng bán hàng hàng ngày sau đó sẽ được khấu trừ vào SKU có sẵn để bán. bạn cũng sẽ tìm ra các mô-đun chi phí và định giá. Việc chuẩn hóa đúng cơ sở dữ liệu luôn là điều bắt buộc.

Các vấn đề liên quan