This is more of an abstract architectural question.
I'm working on an Inventory management system for pharmacy related area. I have all the usual components such as Product Definition(Product type, Category, etc.) Warehouse, Purchase Order, Goods Received Note, Sales Order, Product Pricing etc.
For each purchase, the product may carry a different costs (purchase cost + freight + additional cost) and should be able configure the selling price for each "batch" of purchase. When selling it should be possible to pick the BATCH based on FIFO or LIFO (it is configured in product definition)
How best we can accomplish this requirement? What are the properties of a "price"? Any general best practices are most welcome regarding this topic.