博客:www.jiaopengzi.com

焦棚子的文章目录

请点击下载附件

一、背景

双十二回来后遇到一个比较有意思的计算销售额和利润率的需求(见下文说明)。

先看下效果。


结果

说明:

1、订单表中不体现销售价格,如上图《出库》。

2、销售价格单独管理,如上图《价格表》;

说明:价格是不断调整的,以上图红色填充的sku1为例,

2018/12/1至2018/12/10销售价:592,

2018/12/11至2018/12/13销售价:581,

2018/12/14后销售价:500。

3、库存每月1号给出一个当月期初库存如上图《期初库存》,包含成本价和数量

4、入库商品的成本价是浮动的如上图中黄色填充sku1,

2018/12/1期初成本价:201,

2018/12/10入库成本价:201,

2018/12/11入库成本价:211,

约定:成本价按照加权平均求得

以sku1为例:

总成本=201100+201100+211*200=82400

总数量=100+100+200=400

成本单价=82400/400=206

二、数据源

1、出库

2、期初库存

3、入库

4、价格表

5、关系

三、上度量值

1、订单数量

订单数量:=DISTINCTCOUNT('出库'[订单id])

2、出库

出库:=SUM('出库'[数量])

3、期初

期初:=SUM('期初库存'[数量])

4、入库

入库:=SUM('入库'[数量])

5、销售价

销售价:=SUM('价格表'[售价])

6、库存

库存:=
VAR TF1 =
IF ( MAX ( '出库'[日期] ) < MAX ( '日期表'[date] ), FALSE (), TRUE () )
VAR TF2 =
ISFILTERED ( '日期表'[date] )
RETURN
SWITCH (
TRUE (),
TF1 && TF2, CALCULATE ( '度量值'[期初], DATESMTD ( '日期表'[date] ) )
+ CALCULATE ( '度量值'[入库], DATESMTD ( '日期表'[date] ) )
- CALCULATE ( '度量值'[出库], DATESMTD ( '日期表'[date] ) ),
TF2 = FALSE (), CALCULATE ( '度量值'[期初], DATESMTD ( '日期表'[date] ) )
+ CALCULATE ( '度量值'[入库], DATESMTD ( '日期表'[date] ) )
- CALCULATE ( '度量值'[出库], DATESMTD ( '日期表'[date] ) )
)

7、销售额

销售额:=
SUMX (
ADDCOLUMNS (
'出库',
"单价", CALCULATE (
[销售价],
FILTER (
ALL ( '价格表' ),
'价格表'[日期] <= '出库'[日期]
&& '价格表'[日期]
>= TOPN (
1,
CALCULATETABLE (
VALUES ( '价格表'[日期] ),
FILTER ( ALL ( '价格表' ), '价格表'[日期] <= '出库'[日期] && '价格表'[sku] = '出库'[sku] )
),
'价格表'[日期], DESC
)
&& '价格表'[sku] = '出库'[sku]
)
)
),
'出库'[数量] * [单价]
)

8、成本

成本:=
VAR DS =
STARTOFMONTH ( '出库'[日期] )
VAR DE =
ENDOFMONTH ( '出库'[日期] )
VAR T1 =
DATESBETWEEN ( '日期表'[date], DS, DE )
VAR T2 =
SUMMARIZE (
sku,
sku[sku],
"CC", DIVIDE (
SUMX (
CALCULATETABLE ( '期初库存', DS, ALL ( '日期表'[date] ) ),
'期初库存'[成本价] * '期初库存'[数量]
)
+ SUMX ( CALCULATETABLE ( '入库', T1, ALL ( '日期表'[date] ) ), '入库'[成本价] * '入库'[数量] ),
SUMX ( CALCULATETABLE ( '期初库存', DS, ALL ( '日期表'[date] ) ), '期初库存'[数量] )
+ SUMX ( CALCULATETABLE ( '入库', T1, ALL ( '日期表'[date] ) ), '入库'[数量] )
)
)
RETURN
SUMX (
ADDCOLUMNS ( '出库', "成本单价", SUMX ( FILTER ( T2, [sku] = '出库'[sku] ), [CC] ) ),
[成本单价] * [数量]
)

9、利润率

利润率:=DIVIDE('度量值'[销售额]-'度量值'[成本],'度量值'[销售额])

四、总结

1、根据业务创建相关度量值上下文;

2、本案例中难点主要在度量值6、销售额和7、成本;

3、销售额中价格巧妙使用TOPN,成本中对加权求平均dax的转换。

4、如有先进先出的需求,体现在批次管理即可,本案例不是先进先出的案例。

by焦棚子

焦棚子的文章目录

114_Power Pivot 销售订单之销售额、成本、利润率相关的更多相关文章

  1. 112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 经过了一个双十一后,天天面对的都是订单.于是有了关于销售订单按sku类型分类的需求. 说明:(暂且不讨论这样分类 ...

  2. 113_Power Pivot 销售订单之重复购买率及购买间隔天数相关

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 在论坛中看到朋友在提复购率(重复购买率)等相关问题,今天把结果贴出来. 问题原贴:计算订单中的老顾客复购率 感谢 ...

  3. [SAP ABAP开发技术总结]SD销售订单定价过程

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. 转载]SAP囚徒 - 通过销售订单领用到成本中心,FI替代

    转载]SAP囚徒 - 通过销售订单领用到成本中心,FI替代   原文地址:SAP囚徒 - 通过销售订单领用到成本中心,FI替代实现不同成本中心记账科目不同作者:SAP囚徒 物品领用通常是库存管理的范畴 ...

  5. SAP 销售订单交货对成本中心记账

    销售订单发货不计入主营业务成本,而是直接接入费用科目,与成本中心挂钩的业务经常发生.不少公司只是简单地处理交货,计入主营业务成本,然后财务再手工将成本归结到相关的成本中心.其实SAP系统是支持销售订单 ...

  6. VA01销售订单批导问题解决

    1业务场景 事务代码:VA01创建销售订单,VA02修改销售订单 可以通过BAPI_SALESORDER_CREATEFROMDAT2批量创建 可以通过BAPI_SALESORDER_CHANGE批量 ...

  7. sap 中怎样把非限制库存转为销售订单库存?

    把非限制库存转为销售订单库存: MB1B 移动类型413 把销售订单库存转为非限制库存: MB1B移动类型411 E 切记!

  8. Netsharp快速入门(之11) 销售管理(开发销售订单工作区)

    作者:秋时 杨昶   时间:2014-02-15  转载须说明出处 4.3     销售订单开发 4.3.1  部件工作区设置 1.创建部件工作区,建工作区向导中要注意勾选组合并系部分.具体要建立的部 ...

  9. Netsharp快速入门(之13) 销售管理(单据流转 销售订单生成发货单)

    作者:秋时 杨昶   转载须说明出处 4.5     单据流转 4.5.1  单据流转的目的 单据流转主要为了实现业务关系的流转,并记录相互之间的关系.例如从销售订单生成销货单,两张单据之间有对应的关 ...

随机推荐

  1. 语言算子&模糊推理

    一.语言算子 语言算子分为三类: ①语气算子 ②模糊化算子 ③判定化算子 (1)语气算子 "集中化算子":--"很"."极"."非 ...

  2. 体验javascript之美6:如果你觉得什么都会了或者不知道js学什么了看这里-面向对象编程

    概述 当大家已经把js的语言基础理解了,然后能够写出一些简单的例子了,这个时候基本上达到了一年工作经验的水平,而自己能够独立的写一些小功能,完成一些小效果,或者临摹修改一些比较复杂的插件的时候差不多就 ...

  3. canvas系列教程03-柱状图项目1

    弄了一堆线方块和函数,感觉挺玄乎,然并卵.我们直接写个项目看看. canvas一个比较拽的应用就是图表和游戏,我们从浅入深,先玩图表,图表我们今天说一个最简单柱状图. 柱状图很多人用百度的echars ...

  4. ES6-11学习笔记--数组遍历

    ES5中数组遍历方式: for循环 forEach():没有返回值,只是针对每个元素调用func map():返回新的Array,每个元素为调用func的结果 filter():返回符合func条件的 ...

  5. 【转载】【zabbix】自定义监控项key值

    [转载]https://www.cnblogs.com/zhenglisai/p/6547402.html [zabbix]自定义监控项key值   说明: zabbix自带的默认模版里包括了很多监控 ...

  6. QGIS源码编译步骤详解——官方新方案

    目录 源码下载 环境下载 Cygwin64 OSGeo4W CMAKE Visual Studio 2017 环境配置 配置 编译   方案详细可见源码文件中INSTALL.md. 源码下载   QG ...

  7. Redis快速入门到精通

    Redis Redis是一个开源的使用ANSI C语言编写.支持网络. 可基于内存亦可持久化的日志型.Key-Value型 NoSQL数据库,并提供多种语言的API.从2010年3 月15日起,Red ...

  8. 在线操作word和在线预览查找的资料记录

    在线操作word和在线预览查找的资料记录 在线操作word查找的资料记录 富文本操作 http://fex.baidu.com/ueditor/ 控件类 通过 js 调用控件操作 word 文档 1. ...

  9. Java三大结构

    Java三大结构 顺序结构(基本结构) 选择结构 循环结构 1. 顺序结构 平时一般语句都默认遵循顺序结构 2. 选择结构 2.1 if单选择结构 语法 if(布尔表达式){ //布尔表达式为true ...

  10. Sqlalchemy异步操作不完全指北

    异步SQLAlchemy SQLAlchemy作为一款通用的Python Orm工具,在最近的版本也支持了异步操作.但网上很多资料都不是很齐全,API也不是很好查询的情况下,我便有了整理一份基础文档的 ...