风雨十年,感恩同行
查看: 381|回复: 0

[共享] 金蝶K3wise14.0全功能100站点软注册中发票已经收款收款单仍然能选择参照的解决方法

[复制链接]

该用户从未签到

发表于 2019-2-11 14:40:08 | 显示全部楼层 |阅读模式
金蝶发票已经收款收款单仍然能选择参照的解决方法金蝶K3wise14.0
金蝶KIS专业版,应收明细账和对账单不对
-------------------------------------
图001:
1.jpg

------------------------------------
图002:
2.jpg

------------------------------------

图003:
3.jpg

------------------------------------
图004:
4.jpg

------------------------------------
图005:
5.jpg

------------------------------------
图006:
6.jpg

------------------------------------
图007:
7.jpg

------------------------------------

图008:
8.jpg

------------------------------------
SQL代码如下:

--收款单主表(关联客户,部门,职员)
     select t_RP_RBill.FBillID as 主表ID  , t_RP_RBill.FCustomerID 客户内码  ,  t_RP_RBill.FDate as 收款日期  , t_RP_RBill.FClassTypeID as 会计科目_结算账户  , t_RP_RBill.FBillNo as 收款单单据号   ,  t_RP_RBill.FCurrencyID as 币别内码   ,  t_RP_RBill.FExchangeRate as 汇率   ,   t_RP_RBill.FSettleIdNo as 结算号   ,   t_RP_RBill.FAmountFor as 主表_原币收款金额   ,   t_RP_RBill.FReceiveAmountFor as 主表_原币折后金额   ,   t_RP_RBill.FAmount as  主表_本币收款金额   ,  t_RP_RBill.FReceiveAmount as 主表_本币折后金额    ,   t_RP_RBill.FDepartmentId as 部门内码   ,   t_RP_RBill.FEmployeeId as 业务员内码  , t_RP_RBill.FExplanation as 摘要   ,
            t_Organization.FNumber  As   客户代码 ,t_Organization.FName  As   客户名称  ,
            t_Department.FNumber  As   部门代码 , t_Department.FName  As   部门名称 ,
            t_Emp.FNumber  As   职员代码 , t_Emp.FName  As   姓名   
     from t_RP_RBill  
     left outer join t_Organization  on t_RP_RBill.FCustomerID = t_Organization.FItemID           --主表_客户表
     left outer join t_Department    on t_RP_RBill.FDepartmentId = t_Department.FItemID           --主表_部门表
     left outer join t_Emp           on t_RP_RBill.FEmployeeId = t_Emp.FItemID                    --主表_职员表
     where t_RP_RBill.FBillNo  like '#05%'

--收款单子表(关联主表,)
     select t_RP_RBillEntry.FBillID as 子表_主表ID  , t_RP_RBillEntry.FIndex as  子表行号  ,  t_RP_RBillEntry.FBillNo as 发票编号  , t_RP_RBillEntry.FBillDate as 发票日期  , t_RP_RBillEntry.FBillAmountFor as 发票原币   ,  t_RP_RBillEntry.FBillAmount as 发票本币   ,  t_RP_RBillEntry.FBillReceiveAmountFor as 已收原币   ,   t_RP_RBillEntry.FBillReceiveAmount as 已收本币  ,   t_RP_RBillEntry.FBillUnReceiveAmountFor as 未收原币   ,   t_RP_RBillEntry.FBillUnReceiveAmount as 未收本币   ,   t_RP_RBillEntry.FBillSettleAmountFor as  实收原币   ,  t_RP_RBillEntry.FBillSettleAmount as 实收本币   ,FBillCurrencyID as 币别   ,  t_RP_RBillEntry.FEntryExchangeRate as 汇率  ,  
            t_RP_RBill.FBillID as 主表_主表ID  , t_RP_RBill.FCustomerID 客户内码  ,  t_RP_RBill.FDate as 收款日期  , t_RP_RBill.FClassTypeID as 会计科目_结算账户  , t_RP_RBill.FBillNo as 收款单单据号   ,  t_RP_RBill.FCurrencyID as 币别内码   ,  t_RP_RBill.FExchangeRate as 汇率   ,   t_RP_RBill.FSettleIdNo as 结算号   ,   t_RP_RBill.FAmountFor as 主表_原币收款金额   ,   t_RP_RBill.FReceiveAmountFor as 主表_原币折后金额   ,   t_RP_RBill.FAmount as  主表_本币收款金额   ,  t_RP_RBill.FReceiveAmount as 主表_本币折后金额    ,   t_RP_RBill.FDepartmentId as 部门内码   ,   t_RP_RBill.FEmployeeId as 业务员内码  , t_RP_RBill.FExplanation as 摘要   ,
            t_Organization.FNumber  As   客户代码 ,t_Organization.FName  As   客户名称  ,
            t_Department.FNumber  As   部门代码 , t_Department.FName  As   部门名称 ,
            t_Emp.FNumber  As   职员代码 , t_Emp.FName  As   姓名   
    from t_RP_RBillEntry
    left outer join t_RP_RBill      on t_RP_RBillEntry.FBillID = t_RP_RBill.FBillID              --子表_主表
    left outer join t_Organization  on t_RP_RBill.FCustomerID = t_Organization.FItemID           --主表_客户表
    left outer join t_Department    on t_RP_RBill.FDepartmentId = t_Department.FItemID           --主表_部门表
    left outer join t_Emp           on t_RP_RBill.FEmployeeId = t_Emp.FItemID                    --主表_职员表
    where t_RP_RBill.FBillNo  like '#05%'

--收款单子表(对发票编号汇总,对已经实际收款的金额做求和汇总)
     select FBillNo as 发票编号  ,    sum(FBillSettleAmountFor ) as  实收原币   ,  sum(FBillSettleAmount) as 实收本币   
     from t_RP_RBillEntry
     where   FBillNo= '7016517'      --7016517(错误)/  5016062/  5016459(全部收款正确) /7016685(从未收款正确)    已经完全收款完毕的发票
     group by FBillNo

--收款单子表的数据和销售发票主表上数据的关联关系
     --已经有过收款记录的销售发票(先开票后收款的情况)(收款单的单据体为选单的发票信息)
    select ICSale.FBillNo as 单据编号, ICSale.FInvoiceAmountFor  As   原币发票金额 , ICSale.FReceiveAmountFor  As   已收金额 , ICSale.FUnReceiveAmount  As   未知15 , ICSale.FUnReceiveAmountFor  As   应收金额
    from ICSale
    where FBillNo = '7016517'
--比较数据库中那些记录可能存在问题
          select A.发票编号 as 收款子表_发票编号 ,  A.实收原币 as 收款单子表_实收原币汇总  ,  B.原币发票金额  as 发票主表_发票金额  , B.已收金额 as 发票主表_已收金额, B.应收金额 as 发票主表_应收金额  ,
               ( A.实收原币 - B.原币发票金额 ) as 错误1_实收汇总减发票金额_应该小于等于0  ,          --如果大于0,说明收款单做多了,处理方法,需要删除该发票号对应的收款单(过滤源单编号 = 发票编号,然后删除即可)
               ( A.实收原币 - B.已收金额 ) as 错误2_实收汇总减已收金额_应该等于0  ,                 --说明收款单的实收金额,没有写入到发票主表中的已收金额和扣除相同数值的应收金额
               ( B.已收金额 + B.应收金额 - B.原币发票金额 ) as 错误3_已收加应收减发票金额_应该等于0  --
          from
               (
                 select  t_RP_RBillEntry.FBillNo as 发票编号  ,    sum(t_RP_RBillEntry.FBillSettleAmountFor ) as  实收原币   ,  sum(t_RP_RBillEntry.FBillSettleAmount) as 实收本币   
                 from t_RP_RBillEntry
                 group by   t_RP_RBillEntry.FBillNo
               ) as A
          left outer join
              (
                 select ICSale.FBillNo as 单据编号, ICSale.FInvoiceAmountFor  As   原币发票金额 , ICSale.FReceiveAmountFor  As   已收金额 , ICSale.FUnReceiveAmount  As   未知15 , ICSale.FUnReceiveAmountFor  As   应收金额
                 from ICSale
               )  as B
          on   A.发票编号 = B.单据编号
          where  ( A.实收原币 - B.原币发票金额 ) >0 or
                 ( A.实收原币 - B.已收金额 )  <> 0   or
                 ( B.已收金额 + B.应收金额 - B.原币发票金额 ) <> 0


--比较数据库中那些记录可能存在问题(增加关联关系)
   create view yqy_view_ShouKuanDan_01_He_FaPiao_DuiBuShang
   as
       (  
         select    D.收款单单据号 as 收款单单号 , D.收款日期  as 收款单日期  ,  t_Organization.FNumber  As  客户代码 ,t_Organization.FName  As   客户名称  ,   t_Department.FNumber  As   部门代码 , t_Department.FName  As   部门名称   , t_Emp.FNumber  As   职员代码 , t_Emp.FName  As   姓名   ,   D.主表_主表ID  as 收款单主表_主表ID ,
                   C.子表_主表ID AS 收款单子表_主表ID , A.发票编号 as 收款子表_发票编号  ,  A.实收原币 as 收款单子表_实收原币汇总  ,  
                   B.原币发票金额  as 发票主表_发票金额  , B.已收金额 as 发票主表_已收金额, B.应收金额 as 发票主表_应收金额  ,
                 ( A.实收原币 - B.原币发票金额 ) as 错误1_实收汇总减发票金额_应该小于等于0  ,          --如果大于0,说明收款单做多了,处理方法,需要删除该发票号对应的收款单(过滤源单编号 = 发票编号,然后删除即可)
                 ( A.实收原币 - B.已收金额 ) as 错误2_实收汇总减已收金额_应该等于0  ,                 --说明收款单的实收金额,没有写入到发票主表中的已收金额和扣除相同数值的应收金额
                 ( B.已收金额 + B.应收金额 - B.原币发票金额 ) as 错误3_已收加应收减发票金额_应该等于0  --
         from               --以下为收款单的子表,根据发票编号分组(对实收金额汇总求和),
                 (
                   select  t_RP_RBillEntry.FBillNo as 发票编号  ,    sum(t_RP_RBillEntry.FBillSettleAmountFor ) as  实收原币   ,  sum(t_RP_RBillEntry.FBillSettleAmount) as 实收本币   
                   from t_RP_RBillEntry
                   group by   t_RP_RBillEntry.FBillNo
                 ) as A
         left outer join   --以下为销售发票主表的字段,将收款的子表汇总后,和销售发票主表对行对比
                (
                   select ICSale.FBillNo as 单据编号, ICSale.FInvoiceAmountFor  As   原币发票金额 , ICSale.FReceiveAmountFor  As   已收金额 , ICSale.FUnReceiveAmount  As   未知15 , ICSale.FUnReceiveAmountFor  As   应收金额
                   from ICSale
                 )  as B
         on   A.发票编号 = B.单据编号  
         left outer join  --收款单的子表(调出收款单子表的主表ID,将收款的子表汇总后的表A,连接收款子表,用来检索出收款单的  主表ID
                (
                  select  t_RP_RBillEntry.FBillNo as 发票编号  , t_RP_RBillEntry.FBillID as 子表_主表ID  
                  FROM t_RP_RBillEntry
                 )  AS C
         on   A.发票编号 = C.发票编号  
         left outer join    --收款单的主表(调出收款单子表的主表ID,收款单的客户内码,收款单的单据日期,收款单的单据号码)--用来关联客户,部门,职员
                (
                  select t_RP_RBill.FBillID as 主表_主表ID  , t_RP_RBill.FCustomerID 客户内码  ,  t_RP_RBill.FDepartmentId as 部门内码   ,   t_RP_RBill.FEmployeeId as 业务员内码  , t_RP_RBill.FExplanation as 摘要   ,  t_RP_RBill.FDate as 收款日期  ,  t_RP_RBill.FBillNo as 收款单单据号
                  from t_RP_RBill
                ) as D
         ON  C.子表_主表ID = D.主表_主表ID
         left outer join t_Organization  on D.客户内码 = t_Organization.FItemID           --主表_客户表
         left outer join t_Department    on D.部门内码 = t_Department.FItemID             --主表_部门表
         left outer join t_Emp           on D.业务员内码 = t_Emp.FItemID                  --主表_职员表
         where  ( A.实收原币 - B.原币发票金额 ) >0 or
                ( A.实收原币 - B.已收金额 )  <> 0   or
                ( B.已收金额 + B.应收金额 - B.原币发票金额 ) <> 0


      )
---查询收款单和发票对不上的存在问题的记录
      select * from yqy_view_ShouKuanDan_01_He_FaPiao_DuiBuShang
---解决方案:
   --1.记录下错误1的收款单
   --2.在金蝶--应收管理--删除---错误1造成的收款单
   --3.在后台数据库,更新销售发票的这4个字段
   --ICSale.FReceiveAmountFor as 原币已收 , ICSale.FReceiveAmount  as 本币已收 ,ICSale.FUnReceiveAmountFor as 原币未收  ,ICSale.FUnReceiveAmount  as 本币未收
   --原币已收,本币已收  更新为 零;/  原币应收  本币应收,更新为发票上的汇总金额
   --注意:可能只要更新<原币>就可以了


--更新销售发票主表中的,已收金额和未收金额即可(只修改原币已收和原币未收即可(FReceiveAmountFor/FUnReceiveAmountFor),本币字段不用做任何调整,默认都是0)
--在执行更新前,请首先备份帐套
    update ICSale
    set FReceiveAmountFor = 7000   ,  --更新发票主表(ICSale)中的原币已收金额(FReceiveAmountFor)   = 收款单子表(t_RP_RBillEntry)中的-汇总后的实收原币金额(FBillSettleAmountFor)
        FUnReceiveAmountFor = 0       --更新发票主表(ICSale)中的原币未收金额(FUnReceiveAmountFor) = 发票主表(ICSale)中的-发票金额(FInvoiceAmountFor)-原币已收金额(FReceiveAmountFor)
    where FBillNo = '7016527'          --更新的关键词(发票号码)


--
--
      select ICSale.FBillNo  ,   ICSale.FReceiveAmountFor as 原币已收 , ICSale.FReceiveAmount  as 本币已收 ,   
                                 ICSale.FUnReceiveAmountFor as 原币未收  ,ICSale.FUnReceiveAmount  as 本币未收
      from ICSale
      where  ICSale.FBillNo = '7016685'


金蝶K3wise14.0全功能100站点软注册文件:


金蝶K3wise14.0全功能100站点软注册.rar (72.91 KB, 下载次数: 69)

相关技术服务需求,请联系管理员和客服QQ:619920289或QQ:592439202
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:592439202

服务时间 9:00-22:00

金蝶用友易助管家婆深度服务
快速回复 返回顶部 返回列表