日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

制造企业产品成本核算功能设计实例

發布時間:2023/12/31 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 制造企业产品成本核算功能设计实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

制造企業產品成本核算是成長控制、成本決策、銷售決策的基礎。如何快速、準確地完成成本核算,是企業應用中的高級部分,是在存貨管理已經正常進行,已經做到賬實一致、及時反映、信息完善的前提下才能進行的,還要有及時的會計總賬核算結果(期間費用等),在充分 滿足一些基礎條件后,就可以開展成長核算的業務處理了。本例基于存貨總線概念,是整套ERP系統中的一個組成部分,核算結果可直接用于成本控制和成本決策。本文講述業務邏輯及后臺編程。

一、確定成本核算對象:成本核算單

1、成本核算單需要填制、審核、登記。成本核算單是成本核算目標對象,可以直接填制所有成本核算單,不必等到前面的核算完成再填制后面的。
2、成本核算單主要核算對象包括:外協物料、半成品物料、產成品物料。
3、本例分為四個階段:外協品、初級半成品(機箱)、二級半成品(祼機)、產成品。
4、其中,外協品只分配發出的材料(直接材料)。不分配人工及制造費用。
5、初級半成品分配直接材料、直接人工、制造費用(鈑金車間)。
6、二級半成品分配直接材料、直接人工、制造費用(組裝車間)。
7、產成品分配直接材料、直接人工、制造費用(檢測車間)、管理費用。
8、本例共填制四張成本核算單,來自于委外入庫數據和三個車間的完工入庫數據。
9、產品入庫時,已經按計劃價格入庫,因此在查詢時是可以看到價格的,成本核算時將替換原有一價格,核算不正確時,可以重復進行,直到正確為止。
10、下面內容是要邊歸集邊分配邊核算。即必需是前面的分配并核算完成后,再分配核算后面的,因為后面的歸集數據來自于前面的分配核算結果。成本核算單可一次全部填制完成,歸集單要等到上一步核算完成后才能填制。
11、會計核算要將制造費用內容核算完畢。

二、成本歸集與核算:成本歸集單

成本歸集、分配、核算要按產品層次依次進行,實際應用中,根據真實的層次確定核算的層次,就是說要前一層次核算產生結果后,用于后面層次的計算。

(一)、外協品成本核算

1、成本歸集,只有一張單據,來源是委外出庫單數據。填制、審核、登記。
2、成本分配(業務處理)。成本分配的結果被存儲在djcbgjs表中,并在單據頭中加上是否分配的標記。
3、成本核算。將分配結果更新到成本核算單,再由成本核算單更新到入庫單。成本核算時自動存貨核算,不需要單獨操作。
4、成本分配與成本核算可以重復進行。
5、成本歸集單允許反登記。
6、成本核算單允許反登記。反登記將清除原有分配的結果。但更新到入庫單上的入庫金額將無法恢復,直到重新計算出正確的結果后再更新。當然可以在后臺用語句或建立業務處理功能,將其他恢復為計劃成本價格。
7、使用成本賬項查詢功能,查詢并核對核算結果的正確性。
8、查詢核算后的入庫單。
9、查詢存貨賬項。

(二)、初級半成品成本核算

1、核算鈑金車間生產的機箱的入庫成本。
2、成本歸集:直接材料、直接人工、制造費用。審核登記。
3、需要先行在會計核算中核算制造費用,因此我們回到會計核算。
4、成本分配。
5、成本核算。
6、單據查詢:成本歸集單、成本核算單。
7、賬項查詢:成本類賬項。核實分配結果的正確性。

(三)、次級半成品成本核算

1、核算組裝車間生產的祼機的入庫成本。
2、成本歸集:直接材料、直接人工、制造費用。審核登記。
3、成本分配。
4、成本核算。
5、單據查詢:成本歸集單、成本核算單。
6、賬項查詢:成本類賬項。核實分配結果的正確性。

(四)產成品成本核算

1、核算檢測車間生產的產成品的入庫成本。
2、成本歸集:直接材料、直接人工、制造費用、管理費用。審核登記。
3、成本分配。
4、成本核算。
5、單據查詢:成本歸集單、成本核算單。

三、成本核算原則

1、決策導向。分配標準以不影響銷售決策為準。即售價較高的產品可以多攤成本,反之少攤成本。
2、訂單決策。以訂單決策為目標,而不是單一產品決策。即只要某一訂單滿足毛利指標要求即可,不求其中每一種產品都是滿足要求的。
3、及時完成。在沒有實際成本時,以標準成本或計劃成本為依據完成計算。
4、本期完工的成本核算對象承擔間接成本和期間費用。
5、完全成本。期間費用分配到產成品成本,不分配給半成品。

四、主要數據表結構

-- 成本核算單單據頭 djcbhso字段列表: oid varchar 30 單據號 textread djmc varchar 60 單據名稱 textread ny bpchar 6 年月 textread dqbz varchar 40 當前步驟 textread rq date 0 日期 dateedit yyyy-MM-dd scbm varchar 100 生產部門 textedit hslb varchar 40 核算類別 comboedit edit bz varchar 300 備注 textedit tzr varchar 20 填制人 textedit shr varchar 20 審核人 textedit djr varchar 20 登記人 textedit sfhs bool 0 是否核算 checkedit -- 成本核算單單據體,存儲成本核算對象和核算結果 djcbhsm字段列表: mid int4 32 序號 textread oid varchar 30 單據號 textread djmc varchar 60 單據名稱 textread ny bpchar 6 年月 textread dqbz varchar 40 當前步驟 textread chxh varchar 20 貨號 buttonedit chdh varchar 30 存貨代號 notenter chmc varchar 100 存貨名稱 notenter xh1 varchar 100 型號 textread xh2 varchar 100 規格 textread xh3 varchar 400 參數 textedit gg1 varchar 200 顏色 textedit gg2 varchar 200 材質 textread gg3 varchar 200 圖號 textread jldw varchar 20 單位 notenter scbm varchar 100 生產部門 textedit wldw varchar 100 往來單位 textedit hssl numeric 16 核算數量 textedit n2 xsje numeric 16 銷售金額 textedit n2 dwcb numeric 16 單位成本 textedit n2 cpcb numeric 16 產品成本 textedit n2 dwml numeric 16 單位毛利 textedit n2 cpml numeric 16 產品毛利 textedit n2 bz varchar 100 備注 textedit mhh int4 32 行號 textedit zjcl numeric 16 直接材料 textedit n2 zjrg numeric 16 直接人工 textedit n2 jjcl numeric 16 間接材料 textedit n2 jjrg numeric 16 間接人工 textedit n2 zzfy numeric 16 制造費用 textedit n2 glfy numeric 16 管理費用 textedit n2 sfsh bool 0 是否審核 checkedit sfdj bool 0 是否登記 checkedit -- 成本歸集單單據頭 djcbgjo字段列表: oid varchar 30 單據號 textread djmc varchar 60 單據名稱 textread ny bpchar 8 年月 textread dqbz varchar 40 當前步驟 textread rq date 0 日期 dateedit yyyy-MM-dd scbm varchar 100 生產部門 textedit xmdh varchar 12 項目代號 buttonedit xmmc varchar 100 項目名稱 textread xmlx varchar 60 項目類型 comboedit fpfw varchar 500 分配范圍 buttontextedit bz varchar 300 備注 textedit tzr varchar 20 填制人 textedit shr varchar 20 審核人 textedit djr varchar 20 登記人 textedit sffp bool 0 是否分配 checkedit -- 成本歸集單單據體 djcbgjm字段列表: mid int4 32 序號 textread oid varchar 30 單據號 textread djmc varchar 60 單據名稱 textread ny bpchar 6 年月 textread dqbz varchar 40 當前步驟 textread cbmc varchar 150 成本名稱 buttonedit jldw varchar 12 單位 textread select gjsl numeric 16 歸集數量 textedit n2 cbdj numeric 16 成本單價 textedit n2 cbje numeric 16 成本金額 textedit n2 fpje numeric 16 分配金額 textedit n2 cbyt varchar 20 成本用途 textedit 00000 scbm varchar 100 生產部門 listedit wldw varchar 200 往來單位 textedit lyxh varchar 20 來源貨號 textedit bz varchar 100 備注 textedit mhh int4 32 行號 textedit sfsh bool 0 是否審核 checkedit sfdj bool 0 是否登記 checkedit sffp bool 0 是否分配 checkedit -- 成本歸集單分配結果 djcbgjs字段列表: id int4 32 鍵號 textedit ny bpchar 6 年月 textread djmc varchar 60 單據名稱 textread oid varchar 30 單據號 textread mid int4 32 序號 textread cbmc varchar 100 成本名稱 textedit jldw varchar 12 單位 buttonedit gjsl numeric 16 歸集數量 textedit n2 cbdj numeric 16 成本單價 textedit n2 cbje numeric 16 成本金額 textedit n2 cbyt varchar 20 成本用途 textedit hsoid varchar 30 textedit bz varchar 100 備注 textedit xmdh varchar 12 項目代號 buttonedit xmmc varchar 100 項目名稱 textread xmlx varchar 20 項目類型 comboedit scbm varchar 100 生產部門 listedit wldw varchar 200 往來單位 buttonedit sfdj bool 0 是否登記 checkread

五、關鍵代碼

本例使用plpgsql語言編寫。

(一)、成本分配

將歸集好的成本,分配到具體的成本核算對像。

CREATE OR REPLACE FUNCTION public.x9_cbfp_gj(dqyh character varying,djoid character varying)RETURNS booleanLANGUAGE 'plpgsql'COST 100VOLATILE PARALLEL UNSAFE AS $BODY$-- Description: 成本分配 登記當前歸集單(一張) DECLAREssmsg text;ssdet text;sstname text;sshint text;ssctt text; --錯誤處理rs boolean;ssfpny varchar(6);ssfpfw varchar(500); -- 年月ssxmdh varchar(12);ssxmmc varchar(50);ssxmlx varchar(30);ssfpblsl decimal(16,6); -- 分配比率數量ssfpblje decimal(16,6); -- 分配比率金額sshjfpje decimal(16,2); -- 合計分配金額sshjsl decimal(16,6); -- 合計產品數量 成本核算單中符合條件的行ssmaxid INT; -- 數量最大的分配行ssqdchxh varchar(20);ssqdcpxh varchar(20);rd record; --記錄cs_gj CURSOR FORSELECT mid,cbmc,jldw,gjsl,cbdj,cbje,cbyt,scbm,wldw,lyxhFROM djcbgjm WHERE (oid = $2); BEGINrs:=false;SELECT ny,fpfw INTO ssfpny,ssfpfw FROM djcbgjo WHERE oid = $2;UPDATE djcbgjo SET sffp = false WHERE oid = $2;DELETE FROM djcbgjs WHERE oid = $2;-- 成本項目SELECT xmdh,xmmc,xmlx INTO ssxmdh,ssxmmc,ssxmlx FROM djcbgjo WHERE oid = $2;OPEN cs_gj;LOOPFETCH cs_gj INTO rd;EXIT WHEN NOT FOUND;IF ssxmlx = '直接材料' THENIF rd.cbyt <> '' THENSELECT sum(m.hssl) INTO sshjslFROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND (ssfpfw LIKE '%' || o.oid || '%' OR ssfpfw = '') AND m.chxh = rd.cbytAND (rd.scbm = '' OR m.scbm = rd.scbm) AND (rd.wldw = '' OR m.wldw = rd.wldw);-- 本例根據物料清單定額數量進行分配SELECT chxh,min(cpchxh) INTO ssqdchxh,ssqdcpxh FROM mlqdWHERE chxh = rd.cbyt GROUP BY chxh;WITH cpqd (cpchxh,chxh,jgdh,jc) AS(SELECT cpchxh,chxh,jgdh,jc FROM mlqd WHERE cpchxh = ssqdcpxh AND chxh = ssqdchxh)SELECT round(cl.desl * (1 + (cl.desh / 100)),6) INTO ssfpblsl FROMcpqd AS cp INNER JOIN mlqd cl ON cp.cpchxh = cl.cpchxh AND cp.jc + 1 = cl.jcAND cl.jgdh LIKE cp.jgdh || '%'WHERE cl.cpchxh = ssqdcpxh AND cl.chxh = rd.lyxh;ssfpblje:=round(ssfpblsl * rd.cbdj,6);IF sshjsl > 0 AND (ssfpblsl IS NOT NULL) AND (ssfpblje IS NOT NULL) THENINSERT INTO djcbgjs(ny,oid,mid,cbmc,jldw,gjsl,cbdj,cbje,cbyt,hsoid,xmdh,xmmc,xmlx,scbm,wldw)SELECT o.ny AS ny,$2 AS oid,rd.mid AS id,rd.cbmc AS cbmc,rd.jldw AS jldw,m.hssl * ssfpblsl AS gjsl,rd.cbdj AS cbdj,m.hssl * ssfpblje AS cbje,rd.cbyt AS cbyt,o.oid,ssxmdh AS xmdh, ssxmmc AS xmmc, ssxmlx AS xmlx,rd.scbm,rd.wldwFROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND (ssfpfw LIKE '%' || o.oid || '%' OR ssfpfw = '') AND m.chxh = rd.cbytAND (rd.scbm = '' OR m.scbm = rd.scbm) AND (rd.wldw = '' OR m.wldw = rd.wldw);SELECT sum(cbje) INTO sshjfpje FROM djcbgjs WHERE (mid = rd.mid);UPDATE djcbgjm SET fpje = sshjfpje,sffp = TRUE,bz = '' WHERE mid = rd.mid;IF (sshjfpje - rd.cbje) / rd.cbje < 0.005 THENSELECT id INTO ssmaxid FROM djcbgjs WHERE (mid = rd.mid)ORDER BY cbje DESC LIMIT 1;UPDATE djcbgjs SET cbje = cbje + (rd.cbje - sshjfpje) WHERE (mid = rd.mid) AND id = ssmaxid;UPDATE djcbgjm SET fpje = rd.cbje,sffp = TRUE,bz = '' WHERE mid = rd.mid;END IF;ELSEUPDATE djcbgjm SET sffp = false,bz = '未能分配,未找到貨號' WHERE mid = rd.mid;END IF;ELSEUPDATE djcbgjm SET sffp = false,bz = '未能分配,請指定貨號' WHERE mid = rd.mid;END IF;END IF;IF ssxmlx = '直接人工' THENIF rd.cbyt <> '' THENSELECT sum(m.hssl) INTO sshjslFROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND (ssfpfw LIKE '%' || o.oid || '%' OR ssfpfw = '') AND m.chxh = rd.cbytAND (rd.scbm = '' OR m.scbm = rd.scbm) AND (rd.wldw = '' OR m.wldw = rd.wldw) ;IF sshjsl > 0 THENssfpblsl:=round(rd.gjsl / sshjsl,6);ssfpblje:=round(rd.cbje / sshjsl,6);INSERT INTO djcbgjs(ny,oid,mid,cbmc,jldw,gjsl,cbdj,cbje,cbyt,hsoid,xmdh,xmmc,xmlx,scbm,wldw)SELECT o.ny AS ny, $2 AS oid, rd.mid AS id, rd.cbmc AS cbmc, rd.jldw AS jldw,m.hssl * ssfpblsl AS gjsl, rd.cbdj AS cbdj, m.mid * ssfpblje AS cbje, rd.cbyt AS cbyt,o.oid,ssxmdh AS xmdh, ssxmmc AS xmmc, ssxmlx AS xmlx,rd.scbm,rd.wldwFROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND (ssfpfw LIKE '%' || o.oid || '%' OR ssfpfw = '') AND m.chxh = rd.cbytAND (rd.scbm = '' OR m.scbm = rd.scbm) AND (rd.wldw = '' OR m.wldw = rd.wldw) ;SELECT sum(cbje) INTO sshjfpje FROM djcbgjs WHERE (mid = rd.mid);IF sshjfpje - rd.cbje <> 0 THENSELECT id INTO ssmaxid FROM djcbgjs WHERE (mid = rd.mid)ORDER BY cbje DESC LIMIT 1;UPDATE djcbgjs SET cbje = cbje + (rd.cbje - sshjfpje) WHERE (mid = rd.mid) AND id = ssmaxid;END IF;UPDATE djcbgjm SET fpje = rd.cbje,sffp = TRUE,bz = '' WHERE mid = rd.mid;ELSEUPDATE djcbgjm SET sffp = false,bz = '未能分配,未找到貨號' WHERE mid = rd.mid;END IF;ELSEUPDATE djcbgjm SET sffp = false,bz = '未能分配,請指定貨號' WHERE mid = rd.mid;END IF;END IF;IF ssxmlx = '間接材料' OR ssxmlx = '間接人工' THENSELECT sum(m.hssl) INTO sshjsl FROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND (rd.scbm = '' OR m.scbm = rd.scbm) AND (rd.wldw = '' OR m.wldw = rd.wldw) ;IF sshjsl > 0 THENssfpblsl:=round(rd.gjsl / sshjsl,6);ssfpblje:=round(rd.cbje / sshjsl,6);INSERT INTO djcbgjs (ny,oid,mid,cbmc,jldw,gjsl,cbdj,cbje,cbyt,hsoid,xmdh,xmmc,xmlx,scbm,wldw)SELECT ssfpny AS ny,$2 AS oid,rd.mid AS id,rd.cbmc AS cbmc,rd.jldw AS jldw,m.hssl * ssfpblsl AS gjsl, rd.cbdj AS cbdj, m.hssl * ssfpblje AS cbje,m.chxh AS cbyt,o.oid, ssxmdh AS xmdh, ssxmmc AS xmmc, ssxmlx AS xmlx,rd.scbm,rd.wldwFROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND (rd.scbm = '' OR m.scbm = rd.scbm) AND (rd.wldw = '' OR m.wldw = rd.wldw) ;SELECT sum(cbje) INTO sshjfpje FROM djcbgjs WHERE (mid = rd.mid);IF sshjfpje - rd.cbje <> 0 THENSELECT id INTO ssmaxid FROM djcbgjs WHERE (mid = rd.mid) ORDER BY cbje DESC LIMIT 1;UPDATE djcbgjs SET cbje = cbje + (rd.cbje - sshjfpje) WHERE (mid = rd.mid) AND id = ssmaxid;END IF;UPDATE djcbgjm SET fpje = rd.cbje,sffp = TRUE,bz = '' WHERE mid = rd.mid;ELSEUPDATE djcbgjm SET sffp = false,bz = '未能分配,沒有符合條件的產品' WHERE mid = rd.mid;END IF;END IF;IF ssxmlx = '制造費用' THENSELECT sum(m.hssl) INTO sshjslFROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND (rd.scbm = '' OR m.scbm = rd.scbm) AND (rd.wldw = '' OR m.wldw = rd.wldw) ;IF sshjsl > 0 THENssfpblsl := round(rd.gjsl / sshjsl,6);ssfpblje := round(rd.cbje / sshjsl,6);INSERT INTO djcbgjs (ny,oid,mid,cbmc,jldw,gjsl,cbdj,cbje,cbyt,hsoid,xmdh,xmmc,xmlx,scbm,wldw)SELECT ssfpny AS ny, $2 AS oid, rd.mid AS id, rd.cbmc AS cbmc, rd.jldw AS jldw,m.hssl * ssfpblsl AS gjsl, rd.cbdj AS dj, m.hssl * ssfpblje AS cbje,m.chxh AS cbyt,o.oid, ssxmdh AS xmdh, ssxmmc AS xmmc, ssxmlx AS xmlx,rd.scbm,rd.wldwFROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND (rd.scbm = '' OR m.scbm = rd.scbm) AND (rd.wldw = '' OR m.wldw = rd.wldw) ;SELECT sum(cbje) INTO sshjfpje FROM djcbgjs WHERE (mid = rd.mid);IF sshjfpje - rd.cbje <> 0 THENSELECT id INTO ssmaxid FROM djcbgjs WHERE (mid = rd.mid) ORDER BY cbje DESC LIMIT 1;UPDATE djcbgjs SET cbje = cbje + (rd.cbje - sshjfpje) WHERE (mid = rd.mid) AND id = ssmaxid;END IF ;UPDATE djcbgjm SET fpje = rd.cbje,sffp = TRUE,bz = '' WHERE mid = rd.mid;ELSEUPDATE djcbgjm SET sffp = false,bz = '未能分配,沒有符合條件的產品' WHERE mid = rd.mid;END IF;-- 管理費用直接分配到檢測車間入庫的產品中 ,直接在代碼中加工作中心名稱進行限制END IF;IF ssxmlx = '管理費用' THENrd.scbm:='檢測車間';SELECT sum(m.hssl) INTO sshjslFROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND m.scbm = rd.scbm;IF sshjsl > 0 THENssfpblsl:=round(rd.gjsl / sshjsl,6);ssfpblje:=round(rd.cbje / sshjsl,6);INSERT INTO djcbgjs (ny,oid,mid,cbmc,jldw,gjsl,cbdj,cbje,cbyt,hsoid,xmdh,xmmc,xmlx,scbm,wldw)SELECT ssfpny AS ny, $2 AS oid, rd.mid AS id, rd.cbmc AS cbmc, rd.jldw AS jldw,m.hssl * ssfpblsl AS gjsl, rd.cbdj AS dj, m.hssl * ssfpblje AS cbje,m.chxh AS cbyt, o.oid,ssxmdh AS xmdh, ssxmmc AS xmmc, ssxmlx AS xmlx,rd.scbm as scbm,rd.wldwFROM djcbhso o INNER JOIN djcbhsm m ON o.oid = m.oidWHERE o.ny = ssfpny AND o.djr <> '' AND m.xsje > 0AND m.scbm = rd.scbm;SELECT sum(cbje) INTO sshjfpje FROM djcbgjs WHERE (mid = rd.mid);IF sshjfpje - rd.cbje <> 0 THENSELECT id INTO ssmaxid FROM djcbgjs WHERE (mid = rd.mid) ORDER BY cbje DESC LIMIT 1;UPDATE djcbgjs SET cbje = cbje + (rd.cbje - sshjfpje) WHERE (mid = rd.mid) AND id = ssmaxid;END IF;UPDATE djcbgjm SET fpje = rd.cbje,sffp = TRUE,bz = '' WHERE mid = rd.mid;ELSEUPDATE djcbgjm SET sffp = false,bz = '未能分配,沒有符合條件的產品' WHERE mid = rd.mid;END IF;END IF;END LOOP;CLOSE cs_gj;-- 歸集單標記為已分配UPDATE djcbgjo SET sffp = TRUE WHERE oid = $2;rs:=true;RETURN rs;EXCEPTION WHEN others THENGET stacked DIAGNOSTICS ssmsg = MESSAGE_TEXT,ssdet = pg_exception_detail,sstname = TABLE_NAME, sshint = pg_exception_hint, ssctt = pg_exception_context;CALL x9_jlproc(ssmsg, ssdet, sstname, sshint, ssctt);RETURN FALSE; END; $BODY$; ALTER FUNCTION public.x9_cbfp_gj(character varying, character varying)OWNER TO postgres;

(二)、成本核算

將分配好的數據,匯總更新到成本核算單。
成本核算單的結果再更新到入庫單中,通過存貨核算程序,再將入庫成本重新更新的存貨總賬中。

CREATE OR REPLACE FUNCTION public.x9_cbhs(ssdqyh character varying,sshsny character,ssscbm character varying)RETURNS character varyingLANGUAGE 'plpgsql'COST 100VOLATILE PARALLEL UNSAFE AS $BODY$-- description: 成本分配之后,更新成本核算單 DECLAREssmsg text;ssdet text;sstname text;sshint text;ssctt text; --錯誤處理rs varchar;rd record;sshjcb decimal(16,2);sscbce decimal(16,2);ssrkid int;cs_cbhs refcursor; BEGINWITH cbgj (hsoid,cbyt,cpcb,zjcl,jjcl,zjrg,jjrg,zzfy,glfy) AS(SELECT hsoid,cbyt,sum(cbje) AS cpcb,sum(CASE xmlx WHEN '直接材料' THEN cbje ELSE 0 END) AS zjcl,sum(CASE xmlx WHEN '間接材料' THEN cbje ELSE 0 END) AS jjcl,sum(CASE xmlx WHEN '直接人工' THEN cbje ELSE 0 END) AS zjrg,sum(CASE xmlx WHEN '間接人工' THEN cbje ELSE 0 END) AS jjrg,sum(CASE xmlx WHEN '制造費用' THEN cbje ELSE 0 END) AS zzfy,sum(CASE xmlx WHEN '管理費用' THEN cbje ELSE 0 END) AS glfyFROM djcbgjsWHERE ny = $2 AND scbm = $3GROUP BY hsoid, cbyt)UPDATE djcbhsm m SET cpcb = cbgj.cpcb,zjcl = cbgj.zjcl,zjrg = cbgj.zjrg,jjcl = cbgj.jjcl,jjrg = cbgj.jjrg,zzfy = cbgj.zzfy,glfy = cbgj.glfyFROM cbgj where m.oid = cbgj.hsoid AND m.chxh = cbgj.cbyt and (m.ny = $2) AND m.scbm = $3 AND (m.sfdj = true);UPDATE djcbhsm SET cpml = xsje - cpcb WHERE (ny = $2) AND scbm = $3 AND (sfdj = true);UPDATE djcbhsm SET dwcb = cpcb / hssl,dwml = cpml / hsslWHERE hssl > 0 AND (ny = $2) AND scbm = $3 AND (sfdj = true);--更新入庫成本OPEN cs_cbhs FORSELECT m.chxh,m.dwcb,m.cpcb,o.hslb FROM djcbhsm m INNER JOIN djcbhso o ON o.oid = m.oidWHERE o.ny = $2 AND o.scbm = $3;LOOPFETCH cs_cbhs INTO rd;EXIT WHEN NOT FOUND;UPDATE djchm SET rkdj = rd.dwcb,rkje = rd.dwcb * rkslWHERE ny = $2 AND chxh = rd.chxh AND djmc = rd.hslb;SELECT sum(rkje) INTO sshjcb FROM djchm WHERE ny = $2 AND chxh = rd.chxh ;sscbce:=rd.cpcb - sshjcb;IF sscbce <> 0 THENssrkid = -1;SELECT mid INTO ssrkid FROM djchmWHERE ny = $2 AND chxh = rd.chxh AND djmc = rd.hslb ORDER BY rkje DESC LIMIT 1;IF ssrkid > -1 THENUPDATE djchm SET rkje = rkje + sscbce WHERE mid = ssrkid;END IF;END IF;-- 更新委外入庫單IF $3 = '' AND rd.hslb = '委外入庫單' THENUPDATE djchm SET rkje = rkje + jgje,rkdj = (rkje + jgje) / rkslWHERE ny = $2 AND chxh = rd.chxh AND djmc = rd.hslb and sfdj=true;END IF;-- into rd.chxh,rd.dwcb,rd.cpcb,rd.hslb ;END LOOP;CLOSE cs_cbhs;-- 存貨核算rs:=x9_hsch($2,$1);IF position('存貨核算完成' in rs) > 0 THENRETURN '成本核算完成!';ELSERETURN rs;END IF; EXCEPTION WHEN others THENGET stacked DIAGNOSTICS ssmsg = MESSAGE_TEXT,ssdet = pg_exception_detail,sstname = TABLE_NAME, sshint = pg_exception_hint, ssctt = pg_exception_context;CALL x9_jlproc(ssmsg, ssdet, sstname, sshint, ssctt);RETURN ssmsg; END; $BODY$; ALTER FUNCTION public.x9_cbhs(character varying, character, character varying)OWNER TO postgres;

六、結果輸出

1、成本總賬

2、成本明細賬

3、成本因素分析

4、成本利潤分析

七、總結

綜上所述,完成了自制品和外協品的入庫成本的核算。
在當今激烈的市場競爭環境中,能夠做到這些還是很重要的。在實際業務中,可以將核算結果或預測結果應用到訂單編輯中和其他業務環節中,成為重要的參考信息。

總結

以上是生活随笔為你收集整理的制造企业产品成本核算功能设计实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。