制造企业产品成本核算功能设计实例
制造企業(yè)產(chǎn)品成本核算是成長(zhǎng)控制、成本決策、銷售決策的基礎(chǔ)。如何快速、準(zhǔn)確地完成成本核算,是企業(yè)應(yīng)用中的高級(jí)部分,是在存貨管理已經(jīng)正常進(jìn)行,已經(jīng)做到賬實(shí)一致、及時(shí)反映、信息完善的前提下才能進(jìn)行的,還要有及時(shí)的會(huì)計(jì)總賬核算結(jié)果(期間費(fèi)用等),在充分 滿足一些基礎(chǔ)條件后,就可以開展成長(zhǎng)核算的業(yè)務(wù)處理了。本例基于存貨總線概念,是整套ERP系統(tǒng)中的一個(gè)組成部分,核算結(jié)果可直接用于成本控制和成本決策。本文講述業(yè)務(wù)邏輯及后臺(tái)編程。
一、確定成本核算對(duì)象:成本核算單
1、成本核算單需要填制、審核、登記。成本核算單是成本核算目標(biāo)對(duì)象,可以直接填制所有成本核算單,不必等到前面的核算完成再填制后面的。
2、成本核算單主要核算對(duì)象包括:外協(xié)物料、半成品物料、產(chǎn)成品物料。
3、本例分為四個(gè)階段:外協(xié)品、初級(jí)半成品(機(jī)箱)、二級(jí)半成品(祼機(jī))、產(chǎn)成品。
4、其中,外協(xié)品只分配發(fā)出的材料(直接材料)。不分配人工及制造費(fèi)用。
5、初級(jí)半成品分配直接材料、直接人工、制造費(fèi)用(鈑金車間)。
6、二級(jí)半成品分配直接材料、直接人工、制造費(fèi)用(組裝車間)。
7、產(chǎn)成品分配直接材料、直接人工、制造費(fèi)用(檢測(cè)車間)、管理費(fèi)用。
8、本例共填制四張成本核算單,來(lái)自于委外入庫(kù)數(shù)據(jù)和三個(gè)車間的完工入庫(kù)數(shù)據(jù)。
9、產(chǎn)品入庫(kù)時(shí),已經(jīng)按計(jì)劃價(jià)格入庫(kù),因此在查詢時(shí)是可以看到價(jià)格的,成本核算時(shí)將替換原有一價(jià)格,核算不正確時(shí),可以重復(fù)進(jìn)行,直到正確為止。
10、下面內(nèi)容是要邊歸集邊分配邊核算。即必需是前面的分配并核算完成后,再分配核算后面的,因?yàn)楹竺娴臍w集數(shù)據(jù)來(lái)自于前面的分配核算結(jié)果。成本核算單可一次全部填制完成,歸集單要等到上一步核算完成后才能填制。
11、會(huì)計(jì)核算要將制造費(fèi)用內(nèi)容核算完畢。
二、成本歸集與核算:成本歸集單
成本歸集、分配、核算要按產(chǎn)品層次依次進(jìn)行,實(shí)際應(yīng)用中,根據(jù)真實(shí)的層次確定核算的層次,就是說(shuō)要前一層次核算產(chǎn)生結(jié)果后,用于后面層次的計(jì)算。
(一)、外協(xié)品成本核算
1、成本歸集,只有一張單據(jù),來(lái)源是委外出庫(kù)單數(shù)據(jù)。填制、審核、登記。
2、成本分配(業(yè)務(wù)處理)。成本分配的結(jié)果被存儲(chǔ)在djcbgjs表中,并在單據(jù)頭中加上是否分配的標(biāo)記。
3、成本核算。將分配結(jié)果更新到成本核算單,再由成本核算單更新到入庫(kù)單。成本核算時(shí)自動(dòng)存貨核算,不需要單獨(dú)操作。
4、成本分配與成本核算可以重復(fù)進(jìn)行。
5、成本歸集單允許反登記。
6、成本核算單允許反登記。反登記將清除原有分配的結(jié)果。但更新到入庫(kù)單上的入庫(kù)金額將無(wú)法恢復(fù),直到重新計(jì)算出正確的結(jié)果后再更新。當(dāng)然可以在后臺(tái)用語(yǔ)句或建立業(yè)務(wù)處理功能,將其他恢復(fù)為計(jì)劃成本價(jià)格。
7、使用成本賬項(xiàng)查詢功能,查詢并核對(duì)核算結(jié)果的正確性。
8、查詢核算后的入庫(kù)單。
9、查詢存貨賬項(xiàng)。
(二)、初級(jí)半成品成本核算
1、核算鈑金車間生產(chǎn)的機(jī)箱的入庫(kù)成本。
2、成本歸集:直接材料、直接人工、制造費(fèi)用。審核登記。
3、需要先行在會(huì)計(jì)核算中核算制造費(fèi)用,因此我們回到會(huì)計(jì)核算。
4、成本分配。
5、成本核算。
6、單據(jù)查詢:成本歸集單、成本核算單。
7、賬項(xiàng)查詢:成本類賬項(xiàng)。核實(shí)分配結(jié)果的正確性。
(三)、次級(jí)半成品成本核算
1、核算組裝車間生產(chǎn)的祼機(jī)的入庫(kù)成本。
2、成本歸集:直接材料、直接人工、制造費(fèi)用。審核登記。
3、成本分配。
4、成本核算。
5、單據(jù)查詢:成本歸集單、成本核算單。
6、賬項(xiàng)查詢:成本類賬項(xiàng)。核實(shí)分配結(jié)果的正確性。
(四)產(chǎn)成品成本核算
1、核算檢測(cè)車間生產(chǎn)的產(chǎn)成品的入庫(kù)成本。
2、成本歸集:直接材料、直接人工、制造費(fèi)用、管理費(fèi)用。審核登記。
3、成本分配。
4、成本核算。
5、單據(jù)查詢:成本歸集單、成本核算單。
三、成本核算原則
1、決策導(dǎo)向。分配標(biāo)準(zhǔn)以不影響銷售決策為準(zhǔn)。即售價(jià)較高的產(chǎn)品可以多攤成本,反之少攤成本。
2、訂單決策。以訂單決策為目標(biāo),而不是單一產(chǎn)品決策。即只要某一訂單滿足毛利指標(biāo)要求即可,不求其中每一種產(chǎn)品都是滿足要求的。
3、及時(shí)完成。在沒有實(shí)際成本時(shí),以標(biāo)準(zhǔn)成本或計(jì)劃成本為依據(jù)完成計(jì)算。
4、本期完工的成本核算對(duì)象承擔(dān)間接成本和期間費(fèi)用。
5、完全成本。期間費(fèi)用分配到產(chǎn)成品成本,不分配給半成品。
四、主要數(shù)據(jù)表結(jié)構(gòu)
-- 成本核算單單據(jù)頭 djcbhso字段列表: oid varchar 30 單據(jù)號(hào) textread djmc varchar 60 單據(jù)名稱 textread ny bpchar 6 年月 textread dqbz varchar 40 當(dāng)前步驟 textread rq date 0 日期 dateedit yyyy-MM-dd scbm varchar 100 生產(chǎn)部門 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 -- 成本核算單單據(jù)體,存儲(chǔ)成本核算對(duì)象和核算結(jié)果 djcbhsm字段列表: mid int4 32 序號(hào) textread oid varchar 30 單據(jù)號(hào) textread djmc varchar 60 單據(jù)名稱 textread ny bpchar 6 年月 textread dqbz varchar 40 當(dāng)前步驟 textread chxh varchar 20 貨號(hào) buttonedit chdh varchar 30 存貨代號(hào) notenter chmc varchar 100 存貨名稱 notenter xh1 varchar 100 型號(hào) textread xh2 varchar 100 規(guī)格 textread xh3 varchar 400 參數(shù) textedit gg1 varchar 200 顏色 textedit gg2 varchar 200 材質(zhì) textread gg3 varchar 200 圖號(hào) textread jldw varchar 20 單位 notenter scbm varchar 100 生產(chǎn)部門 textedit wldw varchar 100 往來(lái)單位 textedit hssl numeric 16 核算數(shù)量 textedit n2 xsje numeric 16 銷售金額 textedit n2 dwcb numeric 16 單位成本 textedit n2 cpcb numeric 16 產(chǎn)品成本 textedit n2 dwml numeric 16 單位毛利 textedit n2 cpml numeric 16 產(chǎn)品毛利 textedit n2 bz varchar 100 備注 textedit mhh int4 32 行號(hào) textedit zjcl numeric 16 直接材料 textedit n2 zjrg numeric 16 直接人工 textedit n2 jjcl numeric 16 間接材料 textedit n2 jjrg numeric 16 間接人工 textedit n2 zzfy numeric 16 制造費(fèi)用 textedit n2 glfy numeric 16 管理費(fèi)用 textedit n2 sfsh bool 0 是否審核 checkedit sfdj bool 0 是否登記 checkedit -- 成本歸集單單據(jù)頭 djcbgjo字段列表: oid varchar 30 單據(jù)號(hào) textread djmc varchar 60 單據(jù)名稱 textread ny bpchar 8 年月 textread dqbz varchar 40 當(dāng)前步驟 textread rq date 0 日期 dateedit yyyy-MM-dd scbm varchar 100 生產(chǎn)部門 textedit xmdh varchar 12 項(xiàng)目代號(hào) buttonedit xmmc varchar 100 項(xiàng)目名稱 textread xmlx varchar 60 項(xiàng)目類型 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 -- 成本歸集單單據(jù)體 djcbgjm字段列表: mid int4 32 序號(hào) textread oid varchar 30 單據(jù)號(hào) textread djmc varchar 60 單據(jù)名稱 textread ny bpchar 6 年月 textread dqbz varchar 40 當(dāng)前步驟 textread cbmc varchar 150 成本名稱 buttonedit jldw varchar 12 單位 textread select gjsl numeric 16 歸集數(shù)量 textedit n2 cbdj numeric 16 成本單價(jià) textedit n2 cbje numeric 16 成本金額 textedit n2 fpje numeric 16 分配金額 textedit n2 cbyt varchar 20 成本用途 textedit 00000 scbm varchar 100 生產(chǎn)部門 listedit wldw varchar 200 往來(lái)單位 textedit lyxh varchar 20 來(lái)源貨號(hào) textedit bz varchar 100 備注 textedit mhh int4 32 行號(hào) textedit sfsh bool 0 是否審核 checkedit sfdj bool 0 是否登記 checkedit sffp bool 0 是否分配 checkedit -- 成本歸集單分配結(jié)果 djcbgjs字段列表: id int4 32 鍵號(hào) textedit ny bpchar 6 年月 textread djmc varchar 60 單據(jù)名稱 textread oid varchar 30 單據(jù)號(hào) textread mid int4 32 序號(hào) textread cbmc varchar 100 成本名稱 textedit jldw varchar 12 單位 buttonedit gjsl numeric 16 歸集數(shù)量 textedit n2 cbdj numeric 16 成本單價(jià) textedit n2 cbje numeric 16 成本金額 textedit n2 cbyt varchar 20 成本用途 textedit hsoid varchar 30 textedit bz varchar 100 備注 textedit xmdh varchar 12 項(xiàng)目代號(hào) buttonedit xmmc varchar 100 項(xiàng)目名稱 textread xmlx varchar 20 項(xiàng)目類型 comboedit scbm varchar 100 生產(chǎn)部門 listedit wldw varchar 200 往來(lái)單位 buttonedit sfdj bool 0 是否登記 checkread五、關(guān)鍵代碼
本例使用plpgsql語(yǔ)言編寫。
(一)、成本分配
將歸集好的成本,分配到具體的成本核算對(duì)像。
CREATE OR REPLACE FUNCTION public.x9_cbfp_gj(dqyh character varying,djoid character varying)RETURNS booleanLANGUAGE 'plpgsql'COST 100VOLATILE PARALLEL UNSAFE AS $BODY$-- Description: 成本分配 登記當(dāng)前歸集單(一張) DECLAREssmsg text;ssdet text;sstname text;sshint text;ssctt text; --錯(cuò)誤處理rs boolean;ssfpny varchar(6);ssfpfw varchar(500); -- 年月ssxmdh varchar(12);ssxmmc varchar(50);ssxmlx varchar(30);ssfpblsl decimal(16,6); -- 分配比率數(shù)量ssfpblje decimal(16,6); -- 分配比率金額sshjfpje decimal(16,2); -- 合計(jì)分配金額sshjsl decimal(16,6); -- 合計(jì)產(chǎn)品數(shù)量 成本核算單中符合條件的行ssmaxid INT; -- 數(shù)量最大的分配行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;-- 成本項(xiàng)目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);-- 本例根據(jù)物料清單定額數(shù)量進(jìn)行分配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 = '未能分配,未找到貨號(hào)' WHERE mid = rd.mid;END IF;ELSEUPDATE djcbgjm SET sffp = false,bz = '未能分配,請(qǐng)指定貨號(hào)' 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 = '未能分配,未找到貨號(hào)' WHERE mid = rd.mid;END IF;ELSEUPDATE djcbgjm SET sffp = false,bz = '未能分配,請(qǐng)指定貨號(hào)' 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 = '未能分配,沒有符合條件的產(chǎn)品' WHERE mid = rd.mid;END IF;END IF;IF ssxmlx = '制造費(fèi)用' 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 = '未能分配,沒有符合條件的產(chǎn)品' WHERE mid = rd.mid;END IF;-- 管理費(fèi)用直接分配到檢測(cè)車間入庫(kù)的產(chǎn)品中 ,直接在代碼中加工作中心名稱進(jìn)行限制END IF;IF ssxmlx = '管理費(fèi)用' THENrd.scbm:='檢測(cè)車間';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 = '未能分配,沒有符合條件的產(chǎn)品' WHERE mid = rd.mid;END IF;END IF;END LOOP;CLOSE cs_gj;-- 歸集單標(biāo)記為已分配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;(二)、成本核算
將分配好的數(shù)據(jù),匯總更新到成本核算單。
成本核算單的結(jié)果再更新到入庫(kù)單中,通過(guò)存貨核算程序,再將入庫(kù)成本重新更新的存貨總賬中。
六、結(jié)果輸出
1、成本總賬
2、成本明細(xì)賬
3、成本因素分析
4、成本利潤(rùn)分析
七、總結(jié)
綜上所述,完成了自制品和外協(xié)品的入庫(kù)成本的核算。
在當(dāng)今激烈的市場(chǎng)競(jìng)爭(zhēng)環(huán)境中,能夠做到這些還是很重要的。在實(shí)際業(yè)務(wù)中,可以將核算結(jié)果或預(yù)測(cè)結(jié)果應(yīng)用到訂單編輯中和其他業(yè)務(wù)環(huán)節(jié)中,成為重要的參考信息。
總結(jié)
以上是生活随笔為你收集整理的制造企业产品成本核算功能设计实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCB走线和过孔载流问题详解
- 下一篇: MongoDB数据库创建用户及常用命令