存货核算报表的后台数据表原创
金蝶云社区-破折号
破折号
17人赞赏了该文章 357次浏览 未经作者许可,禁止转载编辑于2022年7月7日 13:56:43

导读:

  • 存货核算模块的报表都是动态表单,过滤界面的条件不同的话后台取数表也不同,所以报表是没有固定的取数SQL的。

  • 存货模块的报表,比如存货收发存汇总表、存货收发存明细表,在数据库里都不能直接关联物料表(T_BD_MATERIAL)查询,按库存维度显示就需要关联库存维度表,再通过库存维度表关联物料表查询。按核算维度显示就需要关联核算维度表,再通过核算维度表关联物料表。


一、物料维度的关联关系

1.0、基础资料物料的物料维度页签的5个库存属性

  • 仓库、仓位、BOM版本、批号、计划跟踪号,这个5个属性可以启用、影响出库成本。

image.png

  • 启用某个库存属性意味着单据录入时需录入物料相关的对应的内容,获取单据相关维度信息时就会记录到T_HS_INIVSTOCKDIMENSION

  • 勾选影响成本,就会记录到T_HS_STOCKDIMENSION,影响成本的意思是不同该属性的值属于不同的核算维度,需要分别核算,成本是可以不一致的,比如仓库不影响成本时,加权平均法的话,物料MAT1ABC三个仓库库存维度会有三条记录分别记录该物料的维度,仓库分别为ABC,但核算维度只会有一条信息,仓库值为0,核算时会按照该一条维度信息把对应单据一起核算,出库成本都是一个价,如果仓库影响成本,核算维度就会有三条记录,核算会按照每一条维度信息把对应单据一起核算,三个维度的出库成本是可以不一样的。


1.1、库存维度表

T_HS_INIVSTOCKDIMENSION 内码FENTRYID  ,记录实际业务发生的维度信息,和核算维度表存在多对一的关系,通过FDIMEENTRYID和核算维度表FENTRYID关联。

image.png


1.2、核算维度表

T_HS_STOCKDIMENSION 内码FENTRYID,记录影响成本的维度信息。

image.png


1.3、库存维度余额表

T_HS_INIVBALANCE(历史表T_HS_INIVBALANCE_H),FDIMEENTRYID和库存维度表内码关联,FACCTGDIMEENTRYID和核算维度表内码关联。库存维度余额表有库存维度、存货维度。

  • 库存维度余额表记录了物料在库存维度的成本。

  • 库存维度包括物料、货主类型、货主、、库存组织、仓库、仓位、批号、辅助属性、BOM版本、计划跟踪号、库存状态、项目编号(上方1.1表定义),即时库存和库存单据上都有这些信息。

  • 成本信息包括物料的期初数量/金额、期末数量/金额、本期收入数量/金额、本期发出数量/金额,本年累计收入/发出的数量/金额。

image.png


1.4、核算维度余额表

T_HS_BALANCE(历史表T_HS_BALANCE_H),FDIMEENTRYID和核算维度表内码关联,与库存维度余额表有一对多的关系,按核算维度内码合并时,库存维度余额表合计后等于核算维度余额表。核算维度余额表只有核算维度。

image.png


1.5、出入库序列表

T_HS_OUTINSTOCKSEQ(历史表T_HS_OUTINSTOCKSEQ _H),所有参与核算的单据信息汇总,FDIMEENTRYID和库存维度表内码关联,FACCTGDIMEENTRYID和核算维度表内码关联。

  • 出入库序列表可以理解为客户端的【核算单据查询】菜单,存货当前期间和历史期间的数据存在视图V_HS_OUTINSTOCKSEQ

image.png


1.6、物料与核算组织的关联

可能存在多会计核算体系的情况,物料的同一张库存单据在多个会计核算体系里核算,所以需要按照 物料编码+会计核算体系+会计政策+核算组织 查询物料的核算维度、库存维度。

----------------------查询某个物料在会计核算体系+会计政策+核算组织下的核算维度、库存维度
-------T_HS_StockDimension.FENTRYID是核算维度内码,T_HS_INIVSTOCKDIMENSION.FENTRYID是库存维度内码。
SELECT HSTX.FNAME 会计核算体系,KJZC.FNAME 会计政策,HSZZ.FNAME 核算组织,MAT.FNUMBER 物料编码,MAT_L.FNAME 物料名称,HSWD .*,KCWD .*
FROM T_HS_StockDimension HSWD  LEFT JOIN T_HS_INIVSTOCKDIMENSION KCWD ON HSWD.FENTRYID =KCWD.FDIMEENTRYID 
INNER JOIN t_bd_Material MAT ON HSWD.FMASTERID = MAT.FMATERIALID   --T_HS_StockDimension 核算维度, t_bd_Material 物料编码
LEFT OUTER JOIN t_bd_Material_l MAT_L ON ((MAT.FMATERIALID = MAT_L.FMATERIALID AND MAT.FUSEORGID = MAT_L.FUSEORGID) AND MAT_L.FLOCALEID = 2052)  ---t_bd_Material_l 物料名称
INNER JOIN T_HS_ACCTGRANGE RAG ON HSWD.FACCTGRANGEID = RAG.FACCTGRANGEID  ---T_HS_ACCTGRANGE 核算范围
LEFT OUTER JOIN t_BD_Stock STOCK ON STOCK.FSTOCKID = KCWD.FSTOCKID   --t_BD_Stock 仓库
LEFT OUTER JOIN T_BD_LOTMASTER  PH ON PH.FLOTID = KCWD.FLOT   --T_BD_LOTMASTER 批号主档
INNER JOIN T_ORG_ACCOUNTSYSTEM_L HSTX  ON RAG.FACCTGSYSTEMID=HSTX.FACCTSYSTEMID   and  HSTX.FLOCALEID =2052  ---T_ORG_ACCOUNTSYSTEM_L 核算体系名称
INNER JOIN T_FA_ACCTPOLICY_L KJZC  ON RAG.FACCTPOLICYID=KJZC.FACCTPOLICYID   and  KJZC.FLOCALEID =2052   --T_FA_ACCTPOLICY_L  会计政策名称
INNER JOIN T_ORG_ORGANIZATIONS_L HSZZ  ON RAG.FACCTGORGID=HSZZ.FORGID   and  HSZZ.FLOCALEID =2052   ---T_ORG_ORGANIZATIONS_L 核算组织名称
WHERE MAT.FNUMBER = N'物料编码' AND  HSTX.FNAME ='会计核算体系名称' AND KJZC.FNAME='会计政策名称' AND HSZZ.FNAME='核算组织名称'


1.7、核算组织与期间的关联

存货成本是按会计核算体系+会计政策+核算组织+某年+期间核算,每期核算都会记录一个出库核算内码,就是出库核算表T_HS_OUTACCTG的FID字段。

---按会计核算体系+会计政策+核算组织+某年+期间核算查询核算内码
SELECT	 A.FID ,HSTX.FNAME '会计核算体系名称' , KJZC.FNAMe'FNAME'  , HSZZ.FNAME '核算组织名称'  , A.FYEAR '年' , A.FPERIOD '期'
FROM T_HS_OUTACCTG  A  INNER JOIN T_HS_CALDIMENSIONS B ON A.FDIMENSIONID =B.FDIMENSIONID
INNER JOIN T_ORG_ACCOUNTSYSTEM_L HSTX  ON B.FACCTSYSTEMID=HSTX.FACCTSYSTEMID   and  HSTX.FLOCALEID =2052  ---T_ORG_ACCOUNTSYSTEM_L 核算体系名称
INNER JOIN T_FA_ACCTPOLICY_L KJZC  ON B.FACCTPOLICYID=KJZC.FACCTPOLICYID   and  KJZC.FLOCALEID =2052   --T_FA_ACCTPOLICY_L  会计政策名称
INNER JOIN T_ORG_ORGANIZATIONS_L HSZZ  ON B.FFINORGID=HSZZ.FORGID   and  HSZZ.FLOCALEID =2052   ---T_ORG_ORGANIZATIONS_L 核算组织名称
WHERE   HSTX.FNAME ='会计核算体系名称' AND KJZC.FNAME='会计政策名称' AND HSZZ.FNAME='核算组织名称'  AND A.FYEAR ='某年' AND A.FPERIOD ='某期'


二、物料与存货成本

2.1、物料的成本按会计核算体系+会计政策+核算组织+某年+期间核算,每个期间的核算单据查询里有参与核算的单据。


2.2、存货收发存汇总/明细表有三栏:期初数量、期初金额,收入数量、收入金额,发出数量、发出金额,结存数量、结存金额。这里是金额都是指成本金额,也就是核算单据查询里的成本金额。涉及到的后台表是上方的1.1--1.7。

期初数量+收入数量-发出数量=结存数量,

期初金额+收入金额-发出金额=结存金额。


2.3、如果需要查询某个物料的成本,首先要确定:会计核算体系+会计政策+核算组织+某年+期间(见第1.7的后台查询语句)。

2.3.1)如果要查询期初或者期末的数量和成本金额,用核算内码(T_HS_OUTACCTG.FID)关联余额表的内码(比如库存维度余额表T_HS_INIVBALANCE.FID,其他余额表也是关联FID字段),再根据余额表的库存维度内码关联库存维度表,库存维度表最终关联到物料(参考1.6的后台查询语句)。

----- 简易示范
SELECT	 A.FID ,HSTX.FNAME '会计核算体系名称' , KJZC.FNAMe'FNAME'  , HSZZ.FNAME '核算组织名称'  , A.FYEAR '年' , A.FPERIOD '期',TM.FNUMBER '物料编码' , kczz.FNUMBER '库存组织编码'
,KCWD.* ,BL.*
FROM  T_HS_OUTACCTG  A  INNER JOIN T_HS_CALDIMENSIONS B ON A.FDIMENSIONID =B.FDIMENSIONID
INNER JOIN T_ORG_ACCOUNTSYSTEM_L HSTX  ON B.FACCTSYSTEMID=HSTX.FACCTSYSTEMID   and  HSTX.FLOCALEID =2052  ---T_ORG_ACCOUNTSYSTEM_L 核算体系名称
INNER JOIN T_FA_ACCTPOLICY_L KJZC  ON B.FACCTPOLICYID=KJZC.FACCTPOLICYID   and  KJZC.FLOCALEID =2052   --T_FA_ACCTPOLICY_L  会计政策名称
INNER JOIN T_ORG_ORGANIZATIONS_L HSZZ  ON B.FFINORGID=HSZZ.FORGID   and  HSZZ.FLOCALEID =2052   ---T_ORG_ORGANIZATIONS_L 核算组织名称
INNER JOIN T_HS_INIVBALANCE  BL on BL.FID =A.FID  ---存货现在期间的库存维度余额。如果要查询历史期间的用T_HS_INIVBALANCE_H
LEFT OUTER JOIN T_HS_INIVSTOCKDIMENSION  KCWD on BL.FDIMEENTRYID =KCWD.FENTRYID -- 库存维度表,里面有仓库仓位批号等信息
LEFT OUTER JOIN T_BD_MATERIAL  TM on kcwd.FMATERIALID =tm.FMATERIALID  --物料
LEFT OUTER JOIN T_ORG_ORGANIZATIONS KCZZ on KCWD.FSTOCKORGID =KCZZ.FORGID --组织
WHERE   HSTX.FNAME ='会计核算体系名称' AND KJZC.FNAME='会计政策名称' AND HSZZ.FNAME='核算组织名称'  AND A.FYEAR ='某年' AND A.FPERIOD ='某期' and TM.FNUMBER ='物料编码' and KCZZ.FNUMBER ='库存组织编码'


1.3.2)如果要查询某期的参与核算单据的数量和成本金额,用核算内码(T_HS_OUTACCTG.FID)关联出入库序列表的核算内码(T_HS_OUTINSTOCKSEQ.FACCTGID,再出入库序列表的库存维度内码关联库存维度表,库存维度表最终关联到物料(参考1.6的后台查询语句)。

-----简易示范
SELECT	 A.FID ,HSTX.FNAME '会计核算体系名称' , KJZC.FNAMe'FNAME'  , HSZZ.FNAME '核算组织名称'  , A.FYEAR '年' , A.FPERIOD '期',TM.FNUMBER '物料编码' , kczz.FNUMBER '库存组织编码'
,KCWD.* ,SEQ.*
FROM  T_HS_OUTACCTG  A  INNER JOIN T_HS_CALDIMENSIONS B ON A.FDIMENSIONID =B.FDIMENSIONID
INNER JOIN T_ORG_ACCOUNTSYSTEM_L HSTX  ON B.FACCTSYSTEMID=HSTX.FACCTSYSTEMID   and  HSTX.FLOCALEID =2052  ---T_ORG_ACCOUNTSYSTEM_L 核算体系名称
INNER JOIN T_FA_ACCTPOLICY_L KJZC  ON B.FACCTPOLICYID=KJZC.FACCTPOLICYID   and  KJZC.FLOCALEID =2052   --T_FA_ACCTPOLICY_L  会计政策名称
INNER JOIN T_ORG_ORGANIZATIONS_L HSZZ  ON B.FFINORGID=HSZZ.FORGID   and  HSZZ.FLOCALEID =2052   ---T_ORG_ORGANIZATIONS_L 核算组织名称
INNER JOIN T_HS_OUTINSTOCKSEQ  SEQ on SEQ.FACCTGID =A.FID  ---存货现在期间的出入库序列表。如果要查询历史期间的用T_HS_OUTINSTOCKSEQ_H
LEFT OUTER JOIN T_HS_INIVSTOCKDIMENSION  KCWD on SEQ.FDIMEENTRYID =KCWD.FENTRYID -- 库存维度表,里面有仓库仓位批号等信息
LEFT OUTER JOIN T_BD_MATERIAL  TM on kcwd.FMATERIALID =tm.FMATERIALID  --物料
LEFT OUTER JOIN T_ORG_ORGANIZATIONS KCZZ on KCWD.FSTOCKORGID =KCZZ.FORGID --组织
WHERE   HSTX.FNAME ='会计核算体系名称' AND KJZC.FNAME='会计政策名称' AND HSZZ.FNAME='核算组织名称'  AND A.FYEAR ='某年' AND A.FPERIOD ='某期' and TM.FNUMBER ='物料编码' and KCZZ.FNUMBER ='库存组织编码'


1.3.3)如果物料存在业务类型是期末余额调整 或者是出库核算生成的成本调整单,存货收发存报表的收发还需要统计满足这两个条件成本调整单。

--FBUSINESSTYPE=0 业务类型=期末余额调整 或者 FISACCTGGENERATE=1 是否为出库核算生成=是
select HSTX.FNAME '会计核算体系名称' , KJZC.FNAMe'FNAME'  , HSZZ.FNAME '核算组织名称',T.FBILLNO ,T.FDATE  ,T.FBUSINESSTYPE ,T.FISACCTGGENERATE ,T.FDOCUMENTSTATUS , TM.FNUMBER  '物料编码',TE.FDIMEENTRYID ,FACCTGDIMEENTRYID,TE.*
from T_HS_ADJUSTMENTBILL  T  INNER JOIN T_HS_ADJUSTMENTBILLENTRY  TE ON T.FID =TE.FID   
INNER JOIN T_ORG_ACCOUNTSYSTEM_L HSTX  ON T.FACCTGSYSTEMID=HSTX.FACCTSYSTEMID   and  HSTX.FLOCALEID =2052  ---T_ORG_ACCOUNTSYSTEM_L 核算体系名称
INNER JOIN T_FA_ACCTPOLICY_L KJZC  ON T.FACCTPOLICYID=KJZC.FACCTPOLICYID   and  KJZC.FLOCALEID =2052   --T_FA_ACCTPOLICY_L  会计政策名称
INNER JOIN T_ORG_ORGANIZATIONS_L HSZZ  ON T.FACCTORGID=HSZZ.FORGID   and  HSZZ.FLOCALEID =2052   ---T_ORG_ORGANIZATIONS_L 核算组织名称
LEFT OUTER JOIN T_BD_MATERIAL  TM on TE.FMATERIALID =tm.FMATERIALID  --物料
WHERE  (T.FBUSINESSTYPE=0 OR T.FISACCTGGENERATE=1)   AND  HSTX.FNAME ='会计核算体系名称' AND KJZC.FNAME='会计政策名称' AND HSZZ.FNAME='核算组织名称'  AND  TM.FNUMBER ='物料编码'


17