InventSum is needed to recalculate sometimes.We should use InventSumRecalcItem class in Dynamics AX.
Sample Code :
// CODE BEGIN ****************************
InventSumRecalcItem InventSumRecalcItem;
;
InventSumRecalcItem = new InventSumRecalcItem("ITEM001", true, checkfix::fix);
InventSumRecalcItem.updatenow();
// CODE END ******************************
First parameter : ItemId
Second parameter : Show errors
Third parameter : Fix or only check
If you want to calculate for all items :
// CODE BEGIN ****************************
InventTable InventTable;
InventSumRecalcItem InventSumRecalcItem;
;
WHILE SELECT InventTable
WHERE (InventTable.ItemType == ItemType::Item) || (InventTable.ItemType == ItemType::BOM)
{
InventSumRecalcItem = new InventSumRecalcItem(InventTable.ItemId, true, checkfix::fix);
InventSumRecalcItem.updatenow();
}
// CODE END ******************************
Reduce SSRS deployment time for static reports in AX2012
Are you wasting minutes deploying and redeploying static SSRS reports in all the languages provided with AX2012? If you only need a handful of them, you might just as well consider disabling the licenses for the unwanted languages. You can enable them back if you need them later.
Now disabling one language at a time manually might not be your cup of tea, so I would like to share a small job that disables all languages except the ones you want to keep enabled. Just create a new job and paste in the code below. Use at own risk of course, take backups and backups of the backups etc (you know the drill).
Allow for a synchronization to run through after the licenses are modified. Remember that this may impact the database schema, but if you really do not want the (ie.) Norwegian language to be enabled, it should be safe to disable. Thanks for reading!
Now disabling one language at a time manually might not be your cup of tea, so I would like to share a small job that disables all languages except the ones you want to keep enabled. Just create a new job and paste in the code below. Use at own risk of course, take backups and backups of the backups etc (you know the drill).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
| // Remove licence codes for unwanted languages static void AdLanguageRemover(Args _args) { SysConfig sysConfig; SysRemoveLicense remLic; Query query; QueryBuildDataSource qbd; QueryBuildRange qbr; QueryRun queryRun; FormRun confirmForm; Set languagesToKeep = new Set(Types::String); Set licenseCodeSet = new Set(Types::Integer); SetEnumerator it; int confCount = 0; boolean licenseChanged = false ; Args args = new Args(formStr(SysLicenseCompareForm)); boolean proceed = false ; SysLicenseCodeDescription codeDescription; str currentLanguageId; int pos, sysConfigId; // List of languages to keep. Add, remove, change to fit your preference languagesToKeep.add( 'nb-no' ); languagesToKeep.add( 'en-us' ); languagesToKeep.add( 'sv' ); languagesToKeep.add( 'nl' ); languagesToKeep.add( 'fr' ); languagesToKeep.add( 'da' ); languagesToKeep.add( 'de' ); query = new Query(); qbd = query.addDataSource(tableNum(sysConfig)); qbr = qbd.addRange(fieldNum(SysConfig,ConfigType)); qbr.value(enum2Value(ConfigType::AccessCodes)); qbr = qbd.addRange(fieldNum(SysConfig,Id)); qbr.value(SysLicenseCodeReadFile::rangeLanguage()); queryRun = new QueryRun(query); delete_from remLic; while (queryRun.next()) { if (queryRun.changed(tableNum(sysConfig))) { sysConfig = queryRun. get (tableNum(sysConfig)); } codeDescription = SysLicenseCodeReadFile::codeDescription(sysConfig.Id); pos = strFind(codeDescription, '(' ,strLen(codeDescription),-strLen(codeDescription)); currentLanguageId = subStr(codeDescription,pos+1,strLen(codeDescription)-pos-1); if (!languagesToKeep. in (currentLanguageId)) { warning(strFmt( 'Removing language %1' ,SysLicenseCodeReadFile::codeDescription(sysConfig.Id))); licenseCodeSet.add(sysConfig.Id); remLic.clear(); remLic.LicenseCode = sysConfig.Id; remLic.Description = SysLicenseCodeReadFile::codeDescription(sysConfig.Id); remLic.insert(); } else { info(strFmt( 'Keeping language %1' ,SysLicenseCodeReadFile::codeDescription(sysConfig.Id))); } } if (licenseCodeSet.elements()) { // if not valid code, then we should display the warning confCount = SysLicenseCodeReadFile::findConfigKeysFromLicenseCodeSet(licenseCodeSet); confirmForm = classfactory.formRunClass(args); confirmForm.init(); confirmForm.run(); confirmForm.wait(); if (confirmForm.closedOk()) { it = licenseCodeSet.getEnumerator(); while (it.moveNext()) { sysConfigId = it.current(); update_recordSet sysConfig setting value = '' where sysConfig.id == sysConfigId; } SysLicenseCodeReadFile::codesModified(); } } } |
Allow for a synchronization to run through after the licenses are modified. Remember that this may impact the database schema, but if you really do not want the (ie.) Norwegian language to be enabled, it should be safe to disable. Thanks for reading!
Subscribe to:
Posts (Atom)