解决方案: |
一、首先对于计划价计价法的说明:
1、平时发出存货时,一律按照计划成本核算,期末处理时计算出各类发出存货应分担的材料成本差异,进行分摊。
2、如果存货入库单价与存货的计划单价不同,则根据两者之差产生差异,记入差异明细账。
3、如果出库单存货没有填写单价,则记账时按照计划单价计算出库成本;如果填写了出库单价,记账以后,出库单仍按照计划单价填写出库成本,另外按照实际出库金额与计划金额的差生成差异,实际成本大于计划成本为贷方差异正值,实际成本小于计划成本为贷方差异负值。
4、单据记账完毕后,必须经过期末处理,才能将差异/差价分配到存货的出库成本上。
二、其次查询具体单据,如04年11月份的材料出库单0000005034:
查询出库单在收发记录主子表中信息――》
select ccode as 出库单据,cinvcode as 存货,iquantity as 出库数量,iunitcost as 出库单价 ,ipunitcost as 计划价,
iprice 出库金额,ipprice 计划金额,cvouchcode 对应入库单autoid
from rdrecord a
join rdrecords b on a.id=b.id
where a.ccode='0000005034'
--查询对应入库单入库单价等信息――》
select c.cinvcode as 存货,c.iquantity as 入库数量,c.iunitcost as 入库单价,c.ipunitcost as 计划价,
c.iprice 入库金额,c.ipprice 计划金额
from rdrecord a
join rdrecords b on a.id=b.id
join rdrecords c on b.cvouchcode=c.autoid
where a.ccode='0000005034'
--根据查询结果,出库单价与入库单价相符;下一步查询存货明细帐ia_subsidiary――》
select cvoucode as 出库单据,c.cinvcode as 存货,iaoutquantity as 出库数量,ioutcost as '发出单 价(计划价)',
iaoutprice as 发出金额,icreditdifcost as 贷方差异,icreditdifcost/iquantity+ioutcost as 出库单单价
from rdrecord a
join rdrecords b on a.id=b.id
join ia_subsidiary c on b.autoid=c.id
where a.ccode='0000005034'
--此处符合上述原则3,出库单已有单价时,单据记帐,存货明细帐仍按照计划单价填写出库成本,按照实际出库金额与计划金额的差生成差异,实际成本大于计划成本为贷方差异正值,实际成本小于计划成本为贷方差异负值。
--上面存在问题的是入库单价与计划价差别较大,如存货01150020100001入库单价612,计划价1137。查询分析如下――》
(入库单)存货 数量 单价 计划价 01150020080001 20.0 889.20000000000005 846.0 01150020100001 20.0 612.0 1137.0 01150230150001 2.0 20950.0 22050.0 01150280080001 6.0 6100.0 8200.0
--查询单据0000005034所对应的入库单明细帐信息:
select cinvcode,iainquantity,iincost as 收入单价,iainprice 收入金额,idebitdifcost as 借方差异,
icreditdifcost as 贷方差异
from ia_subsidiary
where id in (
select c.autoid
from rdrecord a
join rdrecords b on a.id=b.id
join rdrecords c on b.cvouchcode=c.autoid
where a.ccode='0000005034')
(明细帐)存货 数量 单价 收入金额 借方差异 贷方差异 01150020080001 20.0 846.0 16920.0000 864.0000 NULL 01150020100001 20.0 1137.0 22740.0000 NULL 10500.0000 01150230150001 2.0 22050.0 44100.0000 NULL 2200.0000 01150280080001 6.0 8200.0 49200.0000 NULL 12600.0000 注:此处符合上述原则2:单据记帐时,实际入库单价(rdrecords.iunitcost)与计划价不相等,计算差异等差异明细帐。 另此处关联、对应到选项‘入库差异按超支(借方)、节约(贷方)登记’,用户数据选择了该选项,按超支入库差异记借方(如存货01150020080001),节约入库差异记贷方(如其他3个存货)(否则所有入库差异全部记借方)。 Rdrecord为原始单据,其上的入库单价iunitcost来源有两种:手工填写或系统自动带入; 用户数据: 库存选项中入库单自动带入单价,入库成本取参考成本;查询存货档案均无参考成本! 故其入库单价为手工录入!
对于单据0000002288,对应入库单及明细帐记录――》
select ccode as 出库单据,cinvcode as 存货,iquantity as 出库数量,iunitcost as 出库单价,ipunitcost as 计划价,iprice 出库金额,ipprice 计划金额,cvouchcode 对应入库单autoid from rdrecord a join rdrecords b on a.id=b.id where a.ccode='0000002288' order by cinvcode (出库单)存货 发出数量 单价 计划价 01160023255001 22.0 75.0 76.689999999999998 01160023255001 30.0 460.13999999999999 76.689999999999998 01160023255001 100.0 75.0 76.689999999999998 01160023255001 28.0 76.689999999999998 76.689999999999998 select c.autoid,c.cinvcode as 存货,c.iquantity as 入库数量,c.iunitcost as 入库单价,c.ipunitcost as 计划价,c.iprice 入库金额,c.ipprice 计划金额 from rdrecord a join rdrecords b on a.id=b.id join rdrecords c on b.cvouchcode=c.autoid where a.ccode='0000002288' (入库单)存货 数量 单价 计划价 01160023255001 40.0 75.0 76.689999999999998 01160023255001 30.0 0.0 76.689999999999998 01160023255001 100.0 75.0 76.689999999999998 01160023255001 200.0 76.689999999999998 76.689999999999998 select cinvcode,iainquantity,iincost as 收入单价,iainprice 收入金额,idebitdifcost as 借方差异,icreditdifcost as 贷方差异 from ia_subsidiary where id in (select c.autoid from rdrecord a join rdrecords b on a.id=b.id join rdrecords c on b.cvouchcode=c.autoid where a.ccode='0000002288') (明细帐)存货 数量 单价 收入金额 借方差异 贷方差异 01160023255001 40.0 76.689999999999998 3067.6000 NULL 67.6000 01160023255001 30.0 76.689999999999998 2300.7000 NULL 2300.7000 01160023255001 100.0 76.689999999999998 7669.0000 NULL 169.0000 01160023255001 200.0 76.689999999999998 15338.0000 NULL .0000 有笔入库单价为0,产生贷方差异(较大);同上可根据库存选项判断该入库单价为手工录入; 对应出库单价为460.14: 库存系统填制出库单时,出库单价根据用户库存选项(出库成本取计划单价)自动带出存货计划单价;如是出库跟踪入库存货,选择对应入库单后,当对应入库单价不为0时出库单更新带入对应入库单价,否则不变,此时可手工调整予以保存!此处Rd中远大于计划单价的记录应是手工录入! 在当前的用户数据中,如用户不进行手工调整,出库单价要么等于对应入库单价,要么等于计划单价的! 可在出库单记帐时选择‘出库单上系统自动填写的金额记账时重新计算’,系统将出库单上的出库单价、出库金额全部清空后再记账,即当做用户未填成本的状态下记账。 另外注意一点入库单rdrecords上iunitcost=0和=null是两码事!0表示是有成本,只是是零成本而已,而null表示成本空。 |