给定时间内物体的价格由公式给出:“库存总价/库存总数”.
要实现此目的,您需要执行两个查询:
>第一个知道销售商品数量(总价格和数量):
SQL:
SELECT SUM(row_total) sale_total_cost, SUM(quantity_ordered) sale_total_number
FROM sales_order_item soi
JOIN sales_order so ON soi.sales_order_id=so.id
WHERE so.purchase_date
AND soi.product_id=4160;
>第二个知道你买了多少产品
SQL:
SELECT SUM(pop.cost * pop.quantity) purchase_total_price, SUM(pop.quantity) purchase_total_number
FROM purchase_order_products pop
JOIN purchase_order po ON pop.purchase_order_id=po.id
WHERE po.created_at
AND pop.product_id=4160;
>在2017-02-01 14:23:35,产品4160的价格是:
(purchase_total_price – sale_total_cost)/(purchase_total_number – sale_total_number)
问题是你的“sales_order”表在2017-02-01 14:23:35开始,而你的“purchase_order”表在2017-06-07 08:55:48开始.因此,只要您无法从一开始就跟踪所有购买,结果就会不连贯.
编辑:
如果您可以修改表结构,并且只对将来的销售感兴趣.
添加purchase_order_products表中销售的商品数量
您必须修改purchase_order_products以获得每种产品的消耗:
更改表`purchase_order_products`添加列sold_items INT DEFAULT 0;
初始化数据
为了使其工作,您必须使sold_items列反映您的真实库存
您应该使用以下请求初始化表
更新`purchase_order_products` SET sold_items =数量;
然后使用您的每个产品的确切库存手动更新表格(这意味着quantity_ordered-sold_items必须反映您的实际库存.
这只需要进行一次.
将购买价格添加到sales_order_item表
ALTER TABLE sales_order_item ADD total_purchase_price INT DEFAULT NULL
输入新的销售订单
输入新的销售订单时,您必须使用以下命令获取包含剩余项目的最早的采购订单:
SELECT * FROM`sourcing_order_products` WHERE quantity!= sold_items其中product_id = 4160 ORDER BY`seasure_order_id` LIMIT 1;
然后,您将增加sold_items值,并计算总购买价格(总和)以填充total_purchase_price列.
计算保证金
可以使用sales_order_item表中row_total和total_purchase_price之间的差异轻松计算保证金