技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 45297
|
以下是我在年初寫的, 在用友ERP8.5的數(shù)據(jù)庫基礎(chǔ)上進(jìn)行按照BOM分層次的成本核算的后臺SQL代碼,。
用這些SQL代碼實(shí)現(xiàn)了95%的功能, 前臺完全是對這些過程的調(diào)用,所以我最初前臺用ACCESS來做的,后來又用VB.NET來寫, 很快就完成了。
所有的代碼都是我在潔凈開發(fā)環(huán)境中完成,未參考任何第三方的資料。在匯總過程中沒有使用遞歸。
主要步驟是
1。構(gòu)造一個(gè)自己的BOM
2。從材料領(lǐng)用表中取出材料消耗數(shù)量和金額
3。顯示材料領(lǐng)取與BOM標(biāo)準(zhǔn)的差異
4。手工錄入各層次的制造工時(shí)。手工錄入總制造費(fèi)用,總?cè)斯べM(fèi)用。
5。按照制造工時(shí),分?jǐn)傊圃熨M(fèi)用和人工費(fèi)用
6。按層次向上匯總制造費(fèi)用,人工費(fèi)用和材料費(fèi)用。
這里主要考慮了,
1。同一物料(主要指非直接材料)可能一部分自制,一部分是外購,外購部分是不會產(chǎn)生制造和人工費(fèi)用的,外購部分直接成為葉子,不再有子孫。
2。一個(gè)物料可能用在BOM不同層次組成不同父物料。
3。這里是按批號計(jì)算的,而且一個(gè)一批實(shí)際上只有一件,這個(gè)產(chǎn)品很特殊 :-)
4。這里的名詞稱謂不是ERP標(biāo)準(zhǔn),按照樹的稱呼,例如把沒有下級的物料,稱為葉子
-----------------建立兩張表-------------------------------
-- goodidea(朱彥志) 2005/02/25 16:33
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AddInBomRoot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AddInBomRoot]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AddInBomTree]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AddInBomTree]
GO
CREATE TABLE [dbo].[AddInBomRoot] (
[cBatch] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[cPSPCode] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[cInvName] [varchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
[cInvStd] [varchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
[iQty] [money] NOT NULL ,
[bComplatedWhenCompute] [bit] NULL ,
[mMateCostAdd] [money] NOT NULL ,
[mProcCostAdd] [money] NOT NULL ,
[mPayCostAdd] [money] NOT NULL ,
[dInputTime] [datetime] NULL ,
[cInputer] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[dModifyTime] [datetime] NULL ,
[cModifier] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[saved] [bit] NOT NULL ,
[iStatus] [smallint] NOT NULL ,
[cUnit] [varchar] (4) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[AddInBomTree] (
[cPSCode] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[iPSQuantity] [money] NULL ,
[cPSPCode] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[iPSPOrder] [int] NOT NULL ,
[iLevel] [int] NULL ,
[iOrder] [int] NOT NULL ,
[cInvName] [varchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
[cInvStd] [varchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
[bIsLeafage] [bit] NOT NULL ,
[cBatch] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[bComplated] [bit] NULL ,
[cRootCode] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[mProcHour] [money] NOT NULL ,
[mQtyInTree] [money] NOT NULL ,
[mQtyInFact] [money] NOT NULL ,
[mPrice] [money] NOT NULL ,
[mMateCost] [money] NOT NULL ,
[mProcCost] [money] NOT NULL ,
[mPayCost] [money] NOT NULL ,
[mMateCostAdd] [money] NOT NULL ,
[mProcCostAdd] [money] NOT NULL ,
[mPayCostAdd] [money] NOT NULL ,
[dInputTime] [datetime] NULL ,
[cInputer] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[dModifyTime] [datetime] NULL ,
[cModifier] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[bIsPurchase] [bit] NOT NULL ,
[AutoId] [bigint] IDENTITY (1, 1) NOT NULL ,
[bPrintFlag] [bit] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[AddInBomRoot] WITH NOCHECK ADD
CONSTRAINT [PK_AddInBomRoot] PRIMARY KEY CLUSTERED
(
[cBatch]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[AddInBomTree] WITH NOCHECK ADD
CONSTRAINT [PK_AddInBomTree] PRIMARY KEY CLUSTERED
(
[AutoId]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[AddInBomRoot] ADD
CONSTRAINT [DF_AddInBomRoot_iQty] DEFAULT (0) FOR [iQty],
CONSTRAINT [DF_AddInBomRoot_bComplatedWhenCompute] DEFAULT (0) FOR [bComplatedWhenCompute],
CONSTRAINT [DF_AddInBomRoot_mMateCostAdd] DEFAULT (0) FOR [mMateCostAdd],
CONSTRAINT [DF_AddInBomRoot_mProcCostAdd] DEFAULT (0) FOR [mProcCos |
|