描述:
物流费应付实付差异对比明细表
场景:
物流费事后分摊到每一张应收发票单中
需求说明:
SBO标准功能是事中,发生时运费记录到每一张单据中,但现实业务环境有些是月结算模式,和物流乘运商签订的协议合同,当某些条件满足时运费不同,如
运单量到5000单时,每单会有折扣,运费金额超过多少会有奖励等等。这就需要将事后物流乘运商结算明细导入到系统。
解决方案:建用户自定义字段:预算本单运费、预算保险费、实际本单运费
预算本单运费根据规则在发生时可以自动生成,实际本单运费Excel导入。以方便财务对运费预算和控制。
报表如下:
DECLARE @Carrier nvarchar(20),@BeginDate DATETIME,@EndDate DATETIME
SET @Carrier = /* DISTINCT FROM OINV T2 WHERE T2.U_YSS= */ '[%2]'
SET @BeginDate =/* FROM OFLT T0 WHERE T0.FromDate >= */ '[%0]'
SET @EndDate = /* FROM OFLT T1 WHERE T1.ToDate <= */ '[%1]'
SET @Carrier=CASE
WHEN @Carrier='' THEN '速尔延保'
WHEN @Carrier='EMS' THEN 'EMS'
ELSE '%'+@Carrier+'%' END
SELECT
单据类型=YS.单据类型
,单据编号=YS.单据编号
,CC预订单号=YS.CC预订单号
,银行订单号=YS.银行订单号
,过账日期=YS.日期
,承运商名称=YS.承运商名称
,提送类型=YS.提送类型
,重量=YS.重量
,区域划分=YS.区域划分
,金额=YS.金额
,运费增值税=case when YS.承运商名称='宅急送' then (YS.预算保险费+YS.预算本单运费)*0.07 else 0 end
,附加费=YS.附加费
,预算保险费=YS.预算保险费
,预算本单运费=YS.预算本单运费
,导入本单运费=YS.导入本单运费
,导入本单运费含保费=YS.导入本单运费+YS.预算保险费
,预算运费含保费=YS.预算保险费+YS.预算本单运费
,实际本单运费=YS.实际本单运费
,预算与实际运费差异=YS.预算本单运费+YS.预算保险费-isnull(YS.实际本单运费,0)
,运单号=YS.运单号
,签收时间=YS.签收时间
FROM (SELECT 单据类型='DN',
单据编号=T0.[DocNum],
日期=T0.[DocDate],
承运商名称=T0.[U_YSS],
区域划分=T0.U_type,
金额=T0.DOCtotal,
提送类型=case when T0.TrnspCode=1 then '积分' else '邮购' end,
重量=isnull(T0.[U_Weightss],0),
CC预订单号=T0.U_ccNo ,
银行订单号=T0.U_Bank_ID ,
--保险费=U_Insurance,
附加费=isnull(U_Agnomen,0),
运单号=U_YDH,
签收时间=isnull(U_QSSJ,''),
导入本单运费=isnull(T0.[U_Carriesfee],0),
预算保险费=(T0.[DocTotal]-T0.[TotalExpns])* isnull((select top 1 本单保险费率=M0.U_Premium from [@AVA_TRANSPORTS] M0 where M0.Name= T0.[U_YSS] and M0.U_AreaLevel=T0.U_type and M0.U_BusinessType=T0.trnspcode),0)/100,
预算本单运费= case
--顺丰快递
when T0.[U_YSS]='顺丰快递' then isnull(
(select top 1 本单运费=M0.U_FWeight_Fee*M0.U_DiscPrcnt from [@AVA_TRANSPORTS] M0 where M0.Name= T0.[U_YSS] and M0.U_AreaLevel=T0.U_type and M0.U_BusinessType=T0.trnspcode and M0.U_FWeight>=T0.[U_Weightss] order by M0.U_FWeight )
,(select top 1 本单运费=M0.U_FWeight_Fee+(cast((T0.[U_Weightss]-M0.U_FWeight) as int)+(case
when (T0.[U_Weightss]-M0.U_FWeight)- cast((T0.[U_Weightss]-M0.U_FWeight) as int)>0.799 then 1
when (T0.[U_Weightss]-M0.U_FWeight)- cast((T0.[U_Weightss]-M0.U_FWeight) as int)>0.299 then 0.5
else 0 end))/M0.U_SWeight*M0.U_SWeight_Fee*M0.U_DiscPrcnt from [@AVA_TRANSPORTS] M0
where M0.Name= T0.[U_YSS] and M0.U_AreaLevel=T0.U_type and M0.U_BusinessType=T0.trnspcode
and M0.U_FWeight <T0.[U_Weightss] order by M0.U_FWeight desc))
--速尔延保
when T0.[U_YSS] = '速尔延保' then 8
--速尔延保-EMS
when T0.[U_YSS] = '速尔延保-EMS' then 12
--韵达快递
when T0.[U_YSS] = '韵达快递' then (isnull(
(select top 1 本单运费=M0.U_FWeight_Fee*M0.U_DiscPrcnt from [@AVA_TRANSPORTS] M0 where M0.Name= T0.[U_YSS] and M0.U_AreaLevel=T0.U_type and M0.U_BusinessType=T0.trnspcode and M0.U_FWeight>=T0.[U_Weightss] order by M0.U_FWeight ),
(select top 1 本单运费=(M0.U_FWeight_Fee+ceiling((T0.[U_Weightss]-M0.U_FWeight)/M0.U_SWeight)*M0.U_SWeight_Fee)*M0.U_DiscPrcnt
from [@AVA_TRANSPORTS] M0 where M0.Name= T0.[U_YSS] and M0.U_AreaLevel=T0.U_type and M0.U_BusinessType=T0.trnspcode
and M0.U_FWeight <T0.[U_Weightss] order by M0.U_FWeight desc)))
--乐捷递
when T0.[U_YSS] = '乐捷递' then (isnull(
(select top 1 本单运费=M0.U_FWeight_Fee*M0.U_DiscPrcnt
from [@AVA_TRANSPORTS] M0 where M0.Name= T0.[U_YSS] and M0.U_AreaLevel=T0.U_type and M0.U_BusinessType=T0.trnspcode and M0.U_FWeight>=T0.[U_Weightss] order by M0.U_FWeight),
(select top 1 本单运费=(M0.U_FWeight_Fee+ceiling((T0.[U_Weightss]-M0.U_FWeight)/M0.U_SWeight)*M0.U_SWeight_Fee)*M0.U_DiscPrcnt
from [@AVA_TRANSPORTS] M0 where M0.Name= T0.[U_YSS] and M0.U_AreaLevel=T0.U_type and M0.U_BusinessType=T0.trnspcode
and M0.U_FWeight <T0.[U_Weightss] order by M0.U_FWeight desc)) +9)--返单费
else
--EMS/宅急送/速尔快递/环球博亚/天天快递
isnull((select top 1 本单运费=M0.U_FWeight_Fee*M0.U_DiscPrcnt from [@AVA_TRANSPORTS] M0 where M0.Name= T0.[U_YSS] and M0.U_AreaLevel=T0.U_type and M0.U_BusinessType=T0.trnspcode
and M0.U_FWeight>=T0.[U_Weightss] order by M0.U_FWeight),
(select top 1 本单运费=(M0.U_FWeight_Fee+ceiling((T0.[U_Weightss]-M0.U_FWeight)/M0.U_SWeight)*M0.U_SWeight_Fee)*M0.U_DiscPrcnt
from [@AVA_TRANSPORTS] M0 where M0.Name= T0.[U_YSS] and M0.U_AreaLevel=T0.U_type and M0.U_BusinessType=T0.trnspcode
and M0.U_FWeight <T0.[U_Weightss] order by M0.U_FWeight desc)
)end,
实际本单运费=isnull(T0.[U_Fee],0)
FROM OINV T0
WHERE (T0.[U_YSS] like @Carrier) and T0.[DocDate]>=@BeginDate and T0.[DocDate]< =@EndDate) YS