新增报表如何获取产品成本原创
6人赞赏了该文章
342次浏览
编辑于2021年07月26日 10:16:10
星空中有专门的产品成本核算专题专题(https://vip.kingdee.com/knowledge/specialDetail/43477746610405376)。产品的成本是在标准报表中的《产成品还原对比分析》体现出来,具体的计算公式(https://vip.kingdee.com/article/12105)和计算逻辑(https://vip.kingdee.com/article/10990)社区都有具体的说明。
但在实际开发中客户可能需要在其他报表上带出产品的成本,这边提供一个临时的解决方案。在成本还原对比分析表,进行扩展,二开一个服务插件。在BuilderReportSqlAndTempTable方法中,根据查询条件的判断,将返回的结果插入到二开自定义的数据表中。然后其他报表就可以获取到产品的成本。
if (FIsUseDevReport == 1 && FSHOWWAY == "1" && FISSHOWMATERIA == 1 && ISSHOWDETAIL == 1 && GETLASTDATA == 1) { List<string> sqlArray = new List<string>(); string sqlStr_temp_del = string.Format(@"/*dialect*/delete from demo where fyear = '{0}'and fmonth = '{1}' ", Year, Period); string sqlStr_temp = string.Format(@"/*dialect*/insert into demo( FYear ,FMonth ,FItemModel ,FMaterialId ,FItemName ,FCURRCOSTAMOUNT ,FMaterialIdChild ,FChildItemName ,FCURRUSEDHOUR ,FCURRPRICE ) select '{1}' as FYear ,'{2}' FMonth ,b.FSPECIFICATION as FItemModel ,b.FNUMBER as FMaterialId ,b.FNAME as FItemName ,a.FCURRCOSTAMOUNT ,c.FMaterialIdChild ,c.FChildItemName ,c.FCURRUSEDHOUR ,c.FCURRPRICE from {0} a inner join (select b.FSPECIFICATION,a.FMATERIALID,a.FNUMBER,b.FNAME from T_BD_MATERIAL a inner join T_BD_MATERIAL_L b on a.FMATERIALID = b.FMATERIALID and b.FLOCALEID = 2052) b on a.FPRODUCTID = b.FMATERIALID inner join ( select a.FPRODUCTID ,b.FNUMBER as FMaterialIdChild ,b.FNAME as FChildItemName ,a.FCURRUSEDHOUR ,a.FCURRPRICE from {0} a inner join (select b.FSPECIFICATION,a.FMATERIALID,a.FNUMBER,b.FNAME from T_BD_MATERIAL a inner join T_BD_MATERIAL_L b on a.FMATERIALID = b.FMATERIALID and b.FLOCALEID = 2052) b on a.FMATERIALID = b.FMATERIALID where FMATERIALFIELD_FNAME <> '' ) c on a.FPRODUCTID = c.FPRODUCTID where FCOSTITEMID_FNAME = '直接材料' ", tableName, Year, Period); sqlArray.Add(sqlStr_temp_del); sqlArray.Add(sqlStr_temp); if (sqlArray.Count > 0) { DBUtils.ExecuteBatch(this.Context, sqlArray, 100); }
说明:1.查询过后的报表才会显示成本。2.如果不是全部物料,请在条件里面, 缺少一个条件(比如更新还原表)。
赞 6
6人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读