php – 计算销售订单和采购订单的确切保证金
我试图生成一个报告,从下面的数据库计算边际.问题是产品的成本(存在于purchase_order_products表中)可能会发生变化.
2017-06-08的ID为4022的产品成本为1110,但2017-07-25的成本为1094.这令人困惑.我无法获得每种产品的确切成本. 我写了一个PHP算法,它循环遍历所有订单和采购订单,并使用最旧的成本到最新的成本.但该算法具有非常高的时间复杂度.这可以只使用mysql查询吗? 请检查以下场景: 公司在第1天创建了产品X的采购订单:数量3,成本10. 客户购买2件产品X售价:第1天12件(库存中仍有1件,成本10件) 公司为产品X创建了采购订单:数量4,成本9.第2天 客户购买3件产品X售价:第2天12件 客户购买2件产品X售价:第3天12件 公司在第3天创建了产品X的采购订单:数量2,成本11. 客户购买2件产品X售价:第3天12件 那个报告: 第1天: 第2天: 利润:1 *(12 – 10)2 *(12 – 9) 第3天: 卖2件产品X买12,成本11,利润:2 *(12 – 11) 因此,新销售产品的利润使用其相应的成本计算.希望你明白我的意思. 数据库结构: 4个产品来自数据库 产品购买以上产品的订单 已售产品 Dump File Attached here
给定时间内物体的价格由公式给出:“库存总价/库存总数”.
要实现此目的,您需要执行两个查询: >第一个知道销售商品数量(总价格和数量): 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<'2017-06-07 15:03:30' 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<'2017-06-07 15:03:30' 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列反映您的真实库存 您应该使用以下请求初始化表 然后使用您的每个产品的确切库存手动更新表格(这意味着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之间的差异轻松计算保证金 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |