2007-12-19
对于生产类的日记账如prod pick ,prod route, report as finish等日记账其实跟库存类的日记账的操作是一样的。都是利用功能类来实现的。 对于生产日记账其功能类就是:ProdJournalCheckPost。 对于要用代码过账日记账的需求一般也是用代码产生日记账的数据。对日记账的数据可以对每个字段进行赋值的。但是如果是单对每个字段进行赋值的话容易出错,更何况系统本身提供了日记账产生数据赋值的功能类。如Report as finish日记账的产生功能类就是: ProdJournalTable(表头),ProdJournalProd(表身)。 //sample wo: WF0626-0199-17 //only warehouse:P-SGS1,inventDimId = 50 //function : auto posting report as finish journal for production order static void YXQ_PostProdFinishJournal(Args _args) { ProdJournalTableprodJournalTable; ProdJournalProd prodJournalProd; ProdJournalTableDatajournalTableData; ProdJournalTransDataProdJournalTransProd; ProdJournalCheckPostjournaltCheckPost; ; 用代码过账生产入库日记账: try { 用代码过账生产入库日记账: ttsBegin; //set journal table infomation journalTableData = new ProdJournalTableData(ProdJournalTable); journalTableData.initBuffer("FPD","WF0626-0199-17",ProdJournalType::ReportFinished); journalTableData.initJournalId(); //set journal trans prod infomation JournalTransProd = new ProdJournalTransDataProd(prodJournalProd,journalTableData); JournalTransProd.initFromJournalTable(); prodJournalProd.initValue(); prodJournalProd.initFromProdJournalTable(prodJournalTable); prodJournalProd.InventDimId = "50"; prodJournalProd.QtyGood = 2.2; prodJournalProd.LineNum = 1; prodJournalProd.insert(); journalTableData.initTotal(); ProdJournalTable.insert(); journalTableData.updateBlock(JournalBlockLevel::None,JournalBlockLevel::System,false); journaltCheckPost = ProdJournalCheckPostProd::newJournalCheckPost(false,true,JournalCheckPostType::Post,tableNum(ProdJournalTable),prodJournalTable.JournalId); journaltCheckPost.run(); journalTableData.updateBlock(JournalBlockLevel::System,JournalBlockLevel::None,false); 用代码过账生产入库日记账: ttsCommit; } catch (exception::Error) { } }
|