How can I change the production status via code? (AX 2009)
-
26-10-2019 - |
Question
I have to change the production status via code, but not from the ProdTable form. The problem that I have is, that the class ProdMultiRelease expects to be run from the ProdTable form. (Line 10: RunBaseMultiParm::initFromForm(prodMultiRelease,args);)
Update: Here are some additional informations. First I tried it with something like this:
static void Job1(Args _args)
{
Args args;
ProdTable prodTable;
;
prodTable = ProdTable::find( 'PRD_00005166', true);
args = new Args();
args.record( prodTable );
new MenuFunction( menuitemactionstr( ProdRelease ), MenuItemType::Action ).run( args );
}
But it doesn't work.
Now I have something like this:
static void startprod(Args _args)
{
ProdTable prodTable;
ProdMultiStartUp ProdMultiStartUp;
;
prodTable.selectForUpdate(true);
select prodTable where prodTable.ProdId =='0267_074';
prodTable.ProdStatus = prodStatus::StartedUp;
prodTable.update();
info('done');
}
This works fine, but I don't know if there are problems with simply setting the status.
Update2: I think I'll do it with:
prodTable.autoUpdate(prodStatus::Released);
Solution
I think the best way is to do it with:
prodTable.autoUpdate(prodStatus::Released);
OTHER TIPS
I had a problem while executing this code. The following code worked for me:
static void setProdStatusStarted(Args _args)
{
ProdUpdStartUp prodUpdStartUp;
ProdParmStartUp prodParmStartUp;
ProdParametersDim prodParametersDim;
ProdTable prodTable;
ProdId prodId = "PROD-0001";
prodTable = ProdTable::find(prodId);
ttsBegin;
prodParmStartUp.initValue();
prodParmStartUp.initParmDefault();
prodParametersDim = ProdParametersDim::find(prodTable.InventDimId);
prodParmStartUp.initFromProdParametersDim(prodParametersDim);
prodParmStartUp.ProdId = prodTable.ProdId;
prodParmStartUp.PostNowBOM = NoYes::No;
//CompletePickListJournal property allows it to create additional picking list journals which are missing for the BOM.
prodParmStartUp.CompletePickListJournal = NoYes::Yes;
prodParmStartUp.insert();
ttsCommit;
prodUpdStartUp = ProdUpdStartUp::construct();
prodUpdStartUp.parmParmBuffer(prodParmStartUp);
prodUpdStartUp.run();
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow