SBO运费事后分摊

描述:
        物流费应付实付差异对比明细表
场景:
        物流费事后分摊到每一张应收发票单中
需求说明:
        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

你可能感兴趣的:(物流,休闲,成本,Sbo,运费事后分摊)