bc-code-intelligence-mcp 1.3.3 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/dist/config/test-enhanced-layer-service.js +10 -10
  2. package/dist/config/test-enhanced-layer-service.js.map +1 -1
  3. package/dist/dev/hot-reload.d.ts +2 -2
  4. package/dist/dev/hot-reload.d.ts.map +1 -1
  5. package/dist/dev/hot-reload.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +34 -38
  9. package/dist/index.js.map +1 -1
  10. package/dist/layers/index.d.ts +1 -1
  11. package/dist/layers/index.d.ts.map +1 -1
  12. package/dist/layers/index.js +1 -1
  13. package/dist/layers/index.js.map +1 -1
  14. package/dist/services/code-analysis-service.d.ts.map +1 -1
  15. package/dist/services/code-analysis-service.js +4 -0
  16. package/dist/services/code-analysis-service.js.map +1 -1
  17. package/dist/services/knowledge-service.d.ts +21 -10
  18. package/dist/services/knowledge-service.d.ts.map +1 -1
  19. package/dist/services/knowledge-service.js +71 -54
  20. package/dist/services/knowledge-service.js.map +1 -1
  21. package/dist/services/multi-content-layer-service.d.ts +90 -0
  22. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  23. package/dist/services/multi-content-layer-service.js +380 -0
  24. package/dist/services/multi-content-layer-service.js.map +1 -1
  25. package/dist/services/workflow-service.d.ts +11 -3
  26. package/dist/services/workflow-service.d.ts.map +1 -1
  27. package/dist/services/workflow-service.js +119 -78
  28. package/dist/services/workflow-service.js.map +1 -1
  29. package/dist/streamlined-handlers.d.ts +31 -2
  30. package/dist/streamlined-handlers.d.ts.map +1 -1
  31. package/dist/streamlined-handlers.js +151 -109
  32. package/dist/streamlined-handlers.js.map +1 -1
  33. package/dist/streamlined-tools.d.ts +12 -0
  34. package/dist/streamlined-tools.d.ts.map +1 -1
  35. package/dist/streamlined-tools.js +11 -6
  36. package/dist/streamlined-tools.js.map +1 -1
  37. package/package.json +13 -4
  38. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +0 -24
  39. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +0 -24
  40. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +0 -30
  41. package/embedded-knowledge/AGENTS.md +0 -178
  42. package/embedded-knowledge/CONTRIBUTING.md +0 -58
  43. package/embedded-knowledge/LICENSE +0 -21
  44. package/embedded-knowledge/README.md +0 -32
  45. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +0 -90
  46. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +0 -113
  47. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +0 -101
  48. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +0 -87
  49. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +0 -155
  50. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +0 -138
  51. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +0 -79
  52. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +0 -280
  53. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +0 -200
  54. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +0 -565
  55. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +0 -665
  56. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +0 -325
  57. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +0 -696
  58. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +0 -320
  59. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +0 -102
  60. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +0 -433
  61. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +0 -66
  62. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +0 -115
  63. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +0 -360
  64. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +0 -86
  65. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +0 -96
  66. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +0 -70
  67. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +0 -84
  68. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +0 -93
  69. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +0 -73
  70. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +0 -78
  71. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +0 -79
  72. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +0 -87
  73. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +0 -209
  74. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +0 -246
  75. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +0 -107
  76. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +0 -105
  77. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +0 -186
  78. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +0 -60
  79. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +0 -139
  80. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +0 -190
  81. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +0 -516
  82. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +0 -298
  83. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +0 -324
  84. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +0 -344
  85. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +0 -137
  86. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +0 -340
  87. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +0 -810
  88. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +0 -86
  89. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +0 -110
  90. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +0 -758
  91. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +0 -665
  92. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +0 -316
  93. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +0 -223
  94. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +0 -149
  95. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +0 -412
  96. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +0 -211
  97. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +0 -155
  98. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +0 -475
  99. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +0 -238
  100. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +0 -97
  101. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +0 -666
  102. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +0 -319
  103. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +0 -236
  104. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +0 -59
  105. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +0 -67
  106. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +0 -70
  107. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +0 -90
  108. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +0 -87
  109. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +0 -70
  110. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +0 -74
  111. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +0 -81
  112. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +0 -56
  113. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +0 -66
  114. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +0 -79
  115. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +0 -78
  116. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +0 -83
  117. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +0 -76
  118. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +0 -104
  119. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +0 -145
  120. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +0 -104
  121. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +0 -114
  122. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +0 -356
  123. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +0 -256
  124. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +0 -101
  125. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +0 -108
  126. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +0 -80
  127. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +0 -98
  128. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +0 -123
  129. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +0 -96
  130. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +0 -115
  131. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +0 -115
  132. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +0 -114
  133. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +0 -395
  134. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +0 -479
  135. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +0 -548
  136. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +0 -287
  137. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +0 -434
  138. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +0 -508
  139. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +0 -615
  140. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +0 -144
  141. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +0 -96
  142. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +0 -124
  143. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +0 -84
  144. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +0 -75
  145. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +0 -96
  146. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +0 -385
  147. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +0 -72
  148. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +0 -48
  149. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +0 -49
  150. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +0 -67
  151. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +0 -119
  152. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +0 -123
  153. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +0 -64
  154. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +0 -60
  155. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +0 -83
  156. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +0 -716
  157. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +0 -101
  158. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +0 -91
  159. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +0 -79
  160. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +0 -79
  161. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +0 -89
  162. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +0 -76
  163. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +0 -76
  164. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +0 -76
  165. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +0 -81
  166. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +0 -76
  167. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +0 -75
  168. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +0 -76
  169. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +0 -76
  170. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +0 -76
  171. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +0 -96
  172. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +0 -76
  173. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +0 -86
  174. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +0 -90
  175. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +0 -82
  176. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +0 -78
  177. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +0 -76
  178. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +0 -78
  179. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +0 -100
  180. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +0 -115
  181. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +0 -124
  182. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +0 -110
  183. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +0 -438
  184. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +0 -255
  185. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +0 -209
  186. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +0 -218
  187. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +0 -218
  188. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +0 -280
  189. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +0 -188
  190. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +0 -245
  191. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +0 -244
  192. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +0 -278
  193. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +0 -484
  194. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +0 -64
  195. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +0 -107
  196. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +0 -280
  197. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +0 -75
  198. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +0 -67
  199. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +0 -76
  200. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +0 -98
  201. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +0 -128
  202. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +0 -75
  203. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +0 -95
  204. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +0 -141
  205. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +0 -91
  206. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +0 -118
  207. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +0 -111
  208. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +0 -113
  209. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +0 -127
  210. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +0 -141
  211. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +0 -66
  212. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +0 -96
  213. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +0 -161
  214. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +0 -177
  215. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +0 -239
  216. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +0 -346
  217. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +0 -298
  218. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +0 -677
  219. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +0 -117
  220. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +0 -75
  221. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +0 -169
  222. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +0 -399
  223. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +0 -356
  224. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +0 -889
  225. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +0 -84
  226. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +0 -127
  227. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +0 -89
  228. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +0 -516
  229. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +0 -61
  230. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +0 -427
  231. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +0 -122
  232. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +0 -96
  233. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +0 -101
  234. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +0 -149
  235. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +0 -107
  236. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +0 -95
  237. package/embedded-knowledge/domains/seth-security/api-permission-model.md +0 -115
  238. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +0 -78
  239. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +0 -373
  240. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +0 -308
  241. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +0 -146
  242. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +0 -79
  243. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +0 -78
  244. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +0 -81
  245. package/embedded-knowledge/indexes/bc-version-matrix.json +0 -188
  246. package/embedded-knowledge/indexes/domain-catalog.json +0 -106
  247. package/embedded-knowledge/indexes/tags/abbreviations.json +0 -1
  248. package/embedded-knowledge/indexes/tags/abstraction.json +0 -1
  249. package/embedded-knowledge/indexes/tags/access-control.json +0 -1
  250. package/embedded-knowledge/indexes/tags/accessibility.json +0 -1
  251. package/embedded-knowledge/indexes/tags/actions.json +0 -1
  252. package/embedded-knowledge/indexes/tags/advanced-patterns.json +0 -1
  253. package/embedded-knowledge/indexes/tags/advanced.json +0 -1
  254. package/embedded-knowledge/indexes/tags/al-extension.json +0 -1
  255. package/embedded-knowledge/indexes/tags/al-generics.json +0 -1
  256. package/embedded-knowledge/indexes/tags/al-objects.json +0 -1
  257. package/embedded-knowledge/indexes/tags/al-syntax.json +0 -1
  258. package/embedded-knowledge/indexes/tags/algorithm-structure.json +0 -1
  259. package/embedded-knowledge/indexes/tags/alternatives.json +0 -1
  260. package/embedded-knowledge/indexes/tags/analytics.json +0 -1
  261. package/embedded-knowledge/indexes/tags/api-delegates.json +0 -1
  262. package/embedded-knowledge/indexes/tags/api-design.json +0 -1
  263. package/embedded-knowledge/indexes/tags/api-documentation.json +0 -1
  264. package/embedded-knowledge/indexes/tags/api-endpoints.json +0 -1
  265. package/embedded-knowledge/indexes/tags/api-extensibility.json +0 -1
  266. package/embedded-knowledge/indexes/tags/api-fieldsets.json +0 -1
  267. package/embedded-knowledge/indexes/tags/api-integration.json +0 -1
  268. package/embedded-knowledge/indexes/tags/api-interfaces.json +0 -1
  269. package/embedded-knowledge/indexes/tags/api-optimization.json +0 -1
  270. package/embedded-knowledge/indexes/tags/api-pages.json +0 -1
  271. package/embedded-knowledge/indexes/tags/api-patterns.json +0 -1
  272. package/embedded-knowledge/indexes/tags/api-permissions.json +0 -1
  273. package/embedded-knowledge/indexes/tags/api-responses.json +0 -1
  274. package/embedded-knowledge/indexes/tags/api-simplification.json +0 -1
  275. package/embedded-knowledge/indexes/tags/api.json +0 -1
  276. package/embedded-knowledge/indexes/tags/architecture.json +0 -1
  277. package/embedded-knowledge/indexes/tags/async-patterns.json +0 -1
  278. package/embedded-knowledge/indexes/tags/async-processing.json +0 -1
  279. package/embedded-knowledge/indexes/tags/automatic-registration.json +0 -1
  280. package/embedded-knowledge/indexes/tags/batch-operations.json +0 -1
  281. package/embedded-knowledge/indexes/tags/bc24-migration.json +0 -1
  282. package/embedded-knowledge/indexes/tags/begin-blocks.json +0 -1
  283. package/embedded-knowledge/indexes/tags/begin-end.json +0 -1
  284. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +0 -1
  285. package/embedded-knowledge/indexes/tags/best-practices.json +0 -1
  286. package/embedded-knowledge/indexes/tags/binding.json +0 -1
  287. package/embedded-knowledge/indexes/tags/block-structure.json +0 -1
  288. package/embedded-knowledge/indexes/tags/blocks.json +0 -1
  289. package/embedded-knowledge/indexes/tags/boolean-expressions.json +0 -1
  290. package/embedded-knowledge/indexes/tags/branching.json +0 -1
  291. package/embedded-knowledge/indexes/tags/breaking-changes.json +0 -1
  292. package/embedded-knowledge/indexes/tags/breakpoints.json +0 -1
  293. package/embedded-knowledge/indexes/tags/business-foundation.json +0 -1
  294. package/embedded-knowledge/indexes/tags/business-infrastructure.json +0 -1
  295. package/embedded-knowledge/indexes/tags/business-process.json +0 -1
  296. package/embedded-knowledge/indexes/tags/business-rules.json +0 -1
  297. package/embedded-knowledge/indexes/tags/caching.json +0 -1
  298. package/embedded-knowledge/indexes/tags/case-statements.json +0 -1
  299. package/embedded-knowledge/indexes/tags/case.json +0 -1
  300. package/embedded-knowledge/indexes/tags/code-analysis.json +0 -1
  301. package/embedded-knowledge/indexes/tags/code-clarity.json +0 -1
  302. package/embedded-knowledge/indexes/tags/code-comprehension.json +0 -1
  303. package/embedded-knowledge/indexes/tags/code-conversion.json +0 -1
  304. package/embedded-knowledge/indexes/tags/code-formatting.json +0 -1
  305. package/embedded-knowledge/indexes/tags/code-organization.json +0 -1
  306. package/embedded-knowledge/indexes/tags/code-patterns.json +0 -1
  307. package/embedded-knowledge/indexes/tags/code-quality.json +0 -1
  308. package/embedded-knowledge/indexes/tags/code-reuse.json +0 -1
  309. package/embedded-knowledge/indexes/tags/code-simplification.json +0 -1
  310. package/embedded-knowledge/indexes/tags/code-standards.json +0 -1
  311. package/embedded-knowledge/indexes/tags/code-structure.json +0 -1
  312. package/embedded-knowledge/indexes/tags/code-style.json +0 -1
  313. package/embedded-knowledge/indexes/tags/codeunit-design.json +0 -1
  314. package/embedded-knowledge/indexes/tags/command-queue.json +0 -1
  315. package/embedded-knowledge/indexes/tags/comments.json +0 -1
  316. package/embedded-knowledge/indexes/tags/compile-time-validation.json +0 -1
  317. package/embedded-knowledge/indexes/tags/complex-facade.json +0 -1
  318. package/embedded-knowledge/indexes/tags/complexity-hiding.json +0 -1
  319. package/embedded-knowledge/indexes/tags/complexity-management.json +0 -1
  320. package/embedded-knowledge/indexes/tags/compound-statements.json +0 -1
  321. package/embedded-knowledge/indexes/tags/concurrency.json +0 -1
  322. package/embedded-knowledge/indexes/tags/conditional-logic.json +0 -1
  323. package/embedded-knowledge/indexes/tags/conditional.json +0 -1
  324. package/embedded-knowledge/indexes/tags/conflict-resolution.json +0 -1
  325. package/embedded-knowledge/indexes/tags/consistency.json +0 -1
  326. package/embedded-knowledge/indexes/tags/contract-design.json +0 -1
  327. package/embedded-knowledge/indexes/tags/control-flow.json +0 -1
  328. package/embedded-knowledge/indexes/tags/conversion-guide.json +0 -1
  329. package/embedded-knowledge/indexes/tags/correlation.json +0 -1
  330. package/embedded-knowledge/indexes/tags/custom-messages.json +0 -1
  331. package/embedded-knowledge/indexes/tags/data-access.json +0 -1
  332. package/embedded-knowledge/indexes/tags/data-exposure.json +0 -1
  333. package/embedded-knowledge/indexes/tags/data-integrity.json +0 -1
  334. package/embedded-knowledge/indexes/tags/data-loading.json +0 -1
  335. package/embedded-knowledge/indexes/tags/data-manipulation.json +0 -1
  336. package/embedded-knowledge/indexes/tags/data-modeling.json +0 -1
  337. package/embedded-knowledge/indexes/tags/data-patterns.json +0 -1
  338. package/embedded-knowledge/indexes/tags/data-protection.json +0 -1
  339. package/embedded-knowledge/indexes/tags/data-validation.json +0 -1
  340. package/embedded-knowledge/indexes/tags/database.json +0 -1
  341. package/embedded-knowledge/indexes/tags/debugging.json +0 -1
  342. package/embedded-knowledge/indexes/tags/decision-making.json +0 -1
  343. package/embedded-knowledge/indexes/tags/declaration.json +0 -1
  344. package/embedded-knowledge/indexes/tags/default-messages.json +0 -1
  345. package/embedded-knowledge/indexes/tags/defensive-programming.json +0 -1
  346. package/embedded-knowledge/indexes/tags/deleteall.json +0 -1
  347. package/embedded-knowledge/indexes/tags/dependencies.json +0 -1
  348. package/embedded-knowledge/indexes/tags/deployment.json +0 -1
  349. package/embedded-knowledge/indexes/tags/developer-productivity.json +0 -1
  350. package/embedded-knowledge/indexes/tags/development-workflow.json +0 -1
  351. package/embedded-knowledge/indexes/tags/diagnostics.json +0 -1
  352. package/embedded-knowledge/indexes/tags/dimensions.json +0 -1
  353. package/embedded-knowledge/indexes/tags/documentation.json +0 -1
  354. package/embedded-knowledge/indexes/tags/early-exit.json +0 -1
  355. package/embedded-knowledge/indexes/tags/else-clauses.json +0 -1
  356. package/embedded-knowledge/indexes/tags/end-statements.json +0 -1
  357. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +0 -1
  358. package/embedded-knowledge/indexes/tags/entity-relationships.json +0 -1
  359. package/embedded-knowledge/indexes/tags/error-handling.json +0 -1
  360. package/embedded-knowledge/indexes/tags/error-messages.json +0 -1
  361. package/embedded-knowledge/indexes/tags/error-prevention.json +0 -1
  362. package/embedded-knowledge/indexes/tags/error-text.json +0 -1
  363. package/embedded-knowledge/indexes/tags/etag.json +0 -1
  364. package/embedded-knowledge/indexes/tags/event-bridge.json +0 -1
  365. package/embedded-knowledge/indexes/tags/event-payload.json +0 -1
  366. package/embedded-knowledge/indexes/tags/event-routing.json +0 -1
  367. package/embedded-knowledge/indexes/tags/events.json +0 -1
  368. package/embedded-knowledge/indexes/tags/execution-flow.json +0 -1
  369. package/embedded-knowledge/indexes/tags/expressions.json +0 -1
  370. package/embedded-knowledge/indexes/tags/extensibility.json +0 -1
  371. package/embedded-knowledge/indexes/tags/extensions.json +0 -1
  372. package/embedded-knowledge/indexes/tags/facade-composition.json +0 -1
  373. package/embedded-knowledge/indexes/tags/facade-pattern.json +0 -1
  374. package/embedded-knowledge/indexes/tags/field-control.json +0 -1
  375. package/embedded-knowledge/indexes/tags/field-exclusion.json +0 -1
  376. package/embedded-knowledge/indexes/tags/field-registration.json +0 -1
  377. package/embedded-knowledge/indexes/tags/field-state.json +0 -1
  378. package/embedded-knowledge/indexes/tags/field-validation.json +0 -1
  379. package/embedded-knowledge/indexes/tags/fielderror.json +0 -1
  380. package/embedded-knowledge/indexes/tags/fields.json +0 -1
  381. package/embedded-knowledge/indexes/tags/filtering.json +0 -1
  382. package/embedded-knowledge/indexes/tags/filters.json +0 -1
  383. package/embedded-knowledge/indexes/tags/formatting.json +0 -1
  384. package/embedded-knowledge/indexes/tags/generic-methods.json +0 -1
  385. package/embedded-knowledge/indexes/tags/http-status.json +0 -1
  386. package/embedded-knowledge/indexes/tags/if-statements.json +0 -1
  387. package/embedded-knowledge/indexes/tags/implementation.json +0 -1
  388. package/embedded-knowledge/indexes/tags/indentation.json +0 -1
  389. package/embedded-knowledge/indexes/tags/index-summary.json +0 -277
  390. package/embedded-knowledge/indexes/tags/indexing.json +0 -1
  391. package/embedded-knowledge/indexes/tags/inheritance.json +0 -1
  392. package/embedded-knowledge/indexes/tags/integration.json +0 -1
  393. package/embedded-knowledge/indexes/tags/integrity-checking.json +0 -1
  394. package/embedded-knowledge/indexes/tags/intellisense.json +0 -1
  395. package/embedded-knowledge/indexes/tags/interface-design.json +0 -1
  396. package/embedded-knowledge/indexes/tags/interface-segregation.json +0 -1
  397. package/embedded-knowledge/indexes/tags/isolation.json +0 -1
  398. package/embedded-knowledge/indexes/tags/job-processing.json +0 -1
  399. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +0 -1
  400. package/embedded-knowledge/indexes/tags/keywords.json +0 -1
  401. package/embedded-knowledge/indexes/tags/legacy-modernization.json +0 -1
  402. package/embedded-knowledge/indexes/tags/line-breaks.json +0 -1
  403. package/embedded-knowledge/indexes/tags/line-organization.json +0 -1
  404. package/embedded-knowledge/indexes/tags/line-positioning.json +0 -1
  405. package/embedded-knowledge/indexes/tags/localization.json +0 -1
  406. package/embedded-knowledge/indexes/tags/logging.json +0 -1
  407. package/embedded-knowledge/indexes/tags/loose-coupling.json +0 -1
  408. package/embedded-knowledge/indexes/tags/maintainability.json +0 -1
  409. package/embedded-knowledge/indexes/tags/memory-management.json +0 -1
  410. package/embedded-knowledge/indexes/tags/memory-optimization.json +0 -1
  411. package/embedded-knowledge/indexes/tags/memory.json +0 -1
  412. package/embedded-knowledge/indexes/tags/message-design.json +0 -1
  413. package/embedded-knowledge/indexes/tags/message-formatting.json +0 -1
  414. package/embedded-knowledge/indexes/tags/message-patterns.json +0 -1
  415. package/embedded-knowledge/indexes/tags/metadata-driven.json +0 -1
  416. package/embedded-knowledge/indexes/tags/method-comparison.json +0 -1
  417. package/embedded-knowledge/indexes/tags/module-architecture.json +0 -1
  418. package/embedded-knowledge/indexes/tags/module-validation.json +0 -1
  419. package/embedded-knowledge/indexes/tags/monitoring.json +0 -1
  420. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +0 -1
  421. package/embedded-knowledge/indexes/tags/multi-tenancy.json +0 -1
  422. package/embedded-knowledge/indexes/tags/multiple-values.json +0 -1
  423. package/embedded-knowledge/indexes/tags/naming-conventions.json +0 -1
  424. package/embedded-knowledge/indexes/tags/naming.json +0 -1
  425. package/embedded-knowledge/indexes/tags/navigation.json +0 -1
  426. package/embedded-knowledge/indexes/tags/nested-statements.json +0 -1
  427. package/embedded-knowledge/indexes/tags/no-series-conversion.json +0 -1
  428. package/embedded-knowledge/indexes/tags/no-series-validation.json +0 -1
  429. package/embedded-knowledge/indexes/tags/no-series.json +0 -1
  430. package/embedded-knowledge/indexes/tags/number-generation.json +0 -1
  431. package/embedded-knowledge/indexes/tags/object-documentation.json +0 -1
  432. package/embedded-knowledge/indexes/tags/odata.json +0 -1
  433. package/embedded-knowledge/indexes/tags/ondelete.json +0 -1
  434. package/embedded-knowledge/indexes/tags/onvalidate.json +0 -1
  435. package/embedded-knowledge/indexes/tags/operation-delegation.json +0 -1
  436. package/embedded-knowledge/indexes/tags/operation-safety.json +0 -1
  437. package/embedded-knowledge/indexes/tags/operators.json +0 -1
  438. package/embedded-knowledge/indexes/tags/optimization.json +0 -1
  439. package/embedded-knowledge/indexes/tags/order.json +0 -1
  440. package/embedded-knowledge/indexes/tags/organization.json +0 -1
  441. package/embedded-knowledge/indexes/tags/pages.json +0 -1
  442. package/embedded-knowledge/indexes/tags/parameters.json +0 -1
  443. package/embedded-knowledge/indexes/tags/patterns.json +0 -1
  444. package/embedded-knowledge/indexes/tags/performance-optimization.json +0 -1
  445. package/embedded-knowledge/indexes/tags/performance.json +0 -1
  446. package/embedded-knowledge/indexes/tags/placement.json +0 -1
  447. package/embedded-knowledge/indexes/tags/posting-codeunits.json +0 -1
  448. package/embedded-knowledge/indexes/tags/posting.json +0 -1
  449. package/embedded-knowledge/indexes/tags/preconditions.json +0 -1
  450. package/embedded-knowledge/indexes/tags/primary-key.json +0 -1
  451. package/embedded-knowledge/indexes/tags/privacy.json +0 -1
  452. package/embedded-knowledge/indexes/tags/process-automation.json +0 -1
  453. package/embedded-knowledge/indexes/tags/production.json +0 -1
  454. package/embedded-knowledge/indexes/tags/productivity.json +0 -1
  455. package/embedded-knowledge/indexes/tags/query-performance.json +0 -1
  456. package/embedded-knowledge/indexes/tags/queue-management.json +0 -1
  457. package/embedded-knowledge/indexes/tags/ranges.json +0 -1
  458. package/embedded-knowledge/indexes/tags/readability.json +0 -1
  459. package/embedded-knowledge/indexes/tags/record-access.json +0 -1
  460. package/embedded-knowledge/indexes/tags/record-methods.json +0 -1
  461. package/embedded-knowledge/indexes/tags/refactoring.json +0 -1
  462. package/embedded-knowledge/indexes/tags/reference.json +0 -1
  463. package/embedded-knowledge/indexes/tags/repeat-loops.json +0 -1
  464. package/embedded-knowledge/indexes/tags/repeat-statement.json +0 -1
  465. package/embedded-knowledge/indexes/tags/runtime-errors.json +0 -1
  466. package/embedded-knowledge/indexes/tags/runtime.json +0 -1
  467. package/embedded-knowledge/indexes/tags/safeguards.json +0 -1
  468. package/embedded-knowledge/indexes/tags/security.json +0 -1
  469. package/embedded-knowledge/indexes/tags/sequence-management.json +0 -1
  470. package/embedded-knowledge/indexes/tags/serialization.json +0 -1
  471. package/embedded-knowledge/indexes/tags/session-logmessage.json +0 -1
  472. package/embedded-knowledge/indexes/tags/session.json +0 -1
  473. package/embedded-knowledge/indexes/tags/setloadfields.json +0 -1
  474. package/embedded-knowledge/indexes/tags/shortcuts.json +0 -1
  475. package/embedded-knowledge/indexes/tags/sift.json +0 -1
  476. package/embedded-knowledge/indexes/tags/singleinstance.json +0 -1
  477. package/embedded-knowledge/indexes/tags/spacing.json +0 -1
  478. package/embedded-knowledge/indexes/tags/sql-translation.json +0 -1
  479. package/embedded-knowledge/indexes/tags/standards.json +0 -1
  480. package/embedded-knowledge/indexes/tags/statements.json +0 -1
  481. package/embedded-knowledge/indexes/tags/streaming.json +0 -1
  482. package/embedded-knowledge/indexes/tags/strong-typing.json +0 -1
  483. package/embedded-knowledge/indexes/tags/structural-patterns.json +0 -1
  484. package/embedded-knowledge/indexes/tags/structure.json +0 -1
  485. package/embedded-knowledge/indexes/tags/subscribers.json +0 -1
  486. package/embedded-knowledge/indexes/tags/switch.json +0 -1
  487. package/embedded-knowledge/indexes/tags/symbol-search.json +0 -1
  488. package/embedded-knowledge/indexes/tags/syntax.json +0 -1
  489. package/embedded-knowledge/indexes/tags/systemid.json +0 -1
  490. package/embedded-knowledge/indexes/tags/table-configuration.json +0 -1
  491. package/embedded-knowledge/indexes/tags/table-events.json +0 -1
  492. package/embedded-knowledge/indexes/tags/table-keys.json +0 -1
  493. package/embedded-knowledge/indexes/tags/table-safety.json +0 -1
  494. package/embedded-knowledge/indexes/tags/task-scheduler.json +0 -1
  495. package/embedded-knowledge/indexes/tags/telemetry.json +0 -1
  496. package/embedded-knowledge/indexes/tags/template-method.json +0 -1
  497. package/embedded-knowledge/indexes/tags/temporary-tables.json +0 -1
  498. package/embedded-knowledge/indexes/tags/testfield.json +0 -1
  499. package/embedded-knowledge/indexes/tags/tradeoffs.json +0 -1
  500. package/embedded-knowledge/indexes/tags/triggers.json +0 -1
  501. package/embedded-knowledge/indexes/tags/troubleshooting.json +0 -1
  502. package/embedded-knowledge/indexes/tags/type-safety.json +0 -1
  503. package/embedded-knowledge/indexes/tags/url-structure.json +0 -1
  504. package/embedded-knowledge/indexes/tags/user-experience.json +0 -1
  505. package/embedded-knowledge/indexes/tags/user-feedback.json +0 -1
  506. package/embedded-knowledge/indexes/tags/user-interface.json +0 -1
  507. package/embedded-knowledge/indexes/tags/validation-feedback.json +0 -1
  508. package/embedded-knowledge/indexes/tags/validation.json +0 -1
  509. package/embedded-knowledge/indexes/tags/variables.json +0 -1
  510. package/embedded-knowledge/indexes/tags/verbosity.json +0 -1
  511. package/embedded-knowledge/indexes/tags/vs-code.json +0 -1
  512. package/embedded-knowledge/indexes/tags/web-services.json +0 -1
  513. package/embedded-knowledge/indexes/tags/workflow-management.json +0 -1
  514. package/embedded-knowledge/indexes/tags/workflow-optimization.json +0 -1
  515. package/embedded-knowledge/indexes/tags/workflow-templates.json +0 -1
  516. package/embedded-knowledge/indexes/tags/workspace.json +0 -1
  517. package/embedded-knowledge/indexes/tags/xml-documentation.json +0 -1
  518. package/embedded-knowledge/indexes/topic-relationships.json +0 -128
  519. package/embedded-knowledge/methodologies/index.json +0 -81
  520. package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
  521. package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
  522. package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
  523. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
  524. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
  525. package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
  526. package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
  527. package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
  528. package/embedded-knowledge/methodologies/phases/performance.md +0 -211
  529. package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
  530. package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
  531. package/embedded-knowledge/methodologies/phases/verification.md +0 -146
  532. package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
  533. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
  534. package/embedded-knowledge/specialists/alex-architect.md +0 -216
  535. package/embedded-knowledge/specialists/casey-copilot.md +0 -226
  536. package/embedded-knowledge/specialists/chris-config.md +0 -267
  537. package/embedded-knowledge/specialists/dean-debug.md +0 -222
  538. package/embedded-knowledge/specialists/eva-errors.md +0 -235
  539. package/embedded-knowledge/specialists/jordan-bridge.md +0 -235
  540. package/embedded-knowledge/specialists/logan-legacy.md +0 -209
  541. package/embedded-knowledge/specialists/maya-mentor.md +0 -211
  542. package/embedded-knowledge/specialists/morgan-market.md +0 -226
  543. package/embedded-knowledge/specialists/quinn-tester.md +0 -235
  544. package/embedded-knowledge/specialists/roger-reviewer.md +0 -234
  545. package/embedded-knowledge/specialists/sam-coder.md +0 -359
  546. package/embedded-knowledge/specialists/seth-security.md +0 -235
  547. package/embedded-knowledge/specialists/taylor-docs.md +0 -257
  548. package/embedded-knowledge/specialists/uma-ux.md +0 -235
@@ -1,346 +0,0 @@
1
- # Named Parameter Pattern - AL Code Examples
2
-
3
- ## Good Examples
4
-
5
- ### Self-Documenting Variable Names
6
- ```al
7
- procedure ProcessSalesOrder(DocumentNo: Code[20]): Boolean
8
- var
9
- OrderToProcess: Code[20];
10
- ProcessingResult: Boolean;
11
- CustomerValidationPassed: Boolean;
12
- InventoryCheckSuccessful: Boolean;
13
- begin
14
- OrderToProcess := DocumentNo;
15
-
16
- // Clear intent through descriptive variable names
17
- CustomerValidationPassed := ValidateCustomerCredit(OrderToProcess);
18
- if not CustomerValidationPassed then
19
- exit(false);
20
-
21
- InventoryCheckSuccessful := CheckInventoryAvailability(OrderToProcess);
22
- if not InventoryCheckSuccessful then
23
- exit(false);
24
-
25
- ProcessingResult := PostSalesOrder(OrderToProcess);
26
- exit(ProcessingResult);
27
- end;
28
- ```
29
-
30
- ### Complex Parameter Clarity
31
- ```al
32
- procedure CalculateItemCost(ItemNo: Code[20]; CalculationDate: Date; IncludeIndirectCosts: Boolean; UseFIFOMethod: Boolean): Decimal
33
- var
34
- ItemNumberToCalculate: Code[20];
35
- CostCalculationDate: Date;
36
- ShouldIncludeIndirectCosts: Boolean;
37
- ShouldUseFIFOCosting: Boolean;
38
- CalculatedUnitCost: Decimal;
39
- begin
40
- // Named variables make parameter usage crystal clear
41
- ItemNumberToCalculate := ItemNo;
42
- CostCalculationDate := CalculationDate;
43
- ShouldIncludeIndirectCosts := IncludeIndirectCosts;
44
- ShouldUseFIFOCosting := UseFIFOMethod;
45
-
46
- if ShouldUseFIFOCosting then
47
- CalculatedUnitCost := GetFIFOCost(ItemNumberToCalculate, CostCalculationDate)
48
- else
49
- CalculatedUnitCost := GetAverageCost(ItemNumberToCalculate, CostCalculationDate);
50
-
51
- if ShouldIncludeIndirectCosts then
52
- CalculatedUnitCost += GetIndirectCosts(ItemNumberToCalculate, CostCalculationDate);
53
-
54
- exit(CalculatedUnitCost);
55
- end;
56
- ```
57
-
58
- ### Boolean Parameter Documentation
59
- ```al
60
- procedure CreateCustomerStatement(CustomerNo: Code[20]; StartDate: Date; EndDate: Date; IncludeZeroBalances: Boolean; ShowDetailedEntries: Boolean; PrintImmediately: Boolean)
61
- var
62
- CustomerToProcess: Code[20];
63
- StatementStartDate: Date;
64
- StatementEndDate: Date;
65
- ShouldIncludeZeroBalanceItems: Boolean;
66
- ShouldShowDetailedLedgerEntries: Boolean;
67
- ShouldPrintStatementImmediately: Boolean;
68
- StatementReport: Report "Customer Statement";
69
- begin
70
- // Clear boolean intent through descriptive naming
71
- CustomerToProcess := CustomerNo;
72
- StatementStartDate := StartDate;
73
- StatementEndDate := EndDate;
74
- ShouldIncludeZeroBalanceItems := IncludeZeroBalances;
75
- ShouldShowDetailedLedgerEntries := ShowDetailedEntries;
76
- ShouldPrintStatementImmediately := PrintImmediately;
77
-
78
- StatementReport.SetTableView(CustomerToProcess, StatementStartDate, StatementEndDate);
79
-
80
- if ShouldIncludeZeroBalanceItems then
81
- StatementReport.SetIncludeZeroBalances();
82
-
83
- if ShouldShowDetailedLedgerEntries then
84
- StatementReport.SetShowDetails();
85
-
86
- if ShouldPrintStatementImmediately then
87
- StatementReport.Run()
88
- else
89
- StatementReport.RunModal();
90
- end;
91
- ```
92
-
93
- ### API Integration with Clear Parameters
94
- ```al
95
- procedure SyncWithExternalSystem(CustomerNo: Code[20]; SyncDirection: Option Import,Export,Bidirectional; ForceFullSync: Boolean; LogSyncActivity: Boolean): Boolean
96
- var
97
- CustomerToSync: Code[20];
98
- ChosenSyncDirection: Option Import,Export,Bidirectional;
99
- ShouldForceCompleteSync: Boolean;
100
- ShouldLogAllActivity: Boolean;
101
- SyncResult: Boolean;
102
- ExternalAPIClient: Codeunit "External API Client";
103
- begin
104
- // Parameter mapping with clear intent
105
- CustomerToSync := CustomerNo;
106
- ChosenSyncDirection := SyncDirection;
107
- ShouldForceCompleteSync := ForceFullSync;
108
- ShouldLogAllActivity := LogSyncActivity;
109
-
110
- if ShouldLogAllActivity then
111
- LogSyncStart(CustomerToSync, ChosenSyncDirection, ShouldForceCompleteSync);
112
-
113
- case ChosenSyncDirection of
114
- ChosenSyncDirection::Import:
115
- SyncResult := ExternalAPIClient.ImportCustomerData(CustomerToSync, ShouldForceCompleteSync);
116
- ChosenSyncDirection::Export:
117
- SyncResult := ExternalAPIClient.ExportCustomerData(CustomerToSync, ShouldForceCompleteSync);
118
- ChosenSyncDirection::Bidirectional:
119
- SyncResult := ExternalAPIClient.SyncCustomerBidirectional(CustomerToSync, ShouldForceCompleteSync);
120
- end;
121
-
122
- if ShouldLogAllActivity then
123
- LogSyncComplete(CustomerToSync, SyncResult);
124
-
125
- exit(SyncResult);
126
- end;
127
- ```
128
-
129
- ## Bad Examples
130
-
131
- ### Unclear Parameter Usage
132
- ```al
133
- procedure ProcessSalesOrder(DocumentNo: Code[20]): Boolean
134
- var
135
- Rec: Record "Sales Header";
136
- Result: Boolean;
137
- begin
138
- // BAD: Unclear what these boolean literals mean
139
- Result := ValidateOrder(DocumentNo, true, false, true);
140
- if not Result then
141
- exit(false);
142
-
143
- // BAD: Magic numbers and unclear parameters
144
- Result := CalculateCost(DocumentNo, 0, 1, true);
145
- if not Result then
146
- exit(false);
147
-
148
- // BAD: Multiple boolean parameters without context
149
- exit(PostOrder(DocumentNo, true, false, true, false));
150
- end;
151
- ```
152
-
153
- ### Confusing Boolean Chains
154
- ```al
155
- procedure CreateReport(CustomerNo: Code[20]; StartDate: Date; EndDate: Date): Boolean
156
- begin
157
- // BAD: What do these boolean values represent?
158
- if GenerateCustomerReport(CustomerNo, StartDate, EndDate, true, false, true, false, true) then
159
- exit(ProcessReportOutput(CustomerNo, true, false))
160
- else
161
- exit(HandleReportError(CustomerNo, false, true));
162
- end;
163
- ```
164
-
165
- ### Ambiguous Numeric Parameters
166
- ```al
167
- procedure SetupItemPosting(ItemNo: Code[20]): Boolean
168
- var
169
- Item: Record Item;
170
- begin
171
- // BAD: What do these numbers mean?
172
- if ConfigureItemSettings(ItemNo, 1, 0, 2, 5) then begin
173
- // BAD: More unclear parameters
174
- exit(ApplyPostingSettings(ItemNo, 3, 1, 0));
175
- end;
176
-
177
- exit(false);
178
- end;
179
- ```
180
-
181
- ## Best Practices
182
-
183
- ### Intermediate Variable Strategy
184
- ```al
185
- procedure ProcessPurchaseOrder(DocumentNo: Code[20]; ValidateVendor: Boolean; CheckInventory: Boolean; PostImmediately: Boolean): Boolean
186
- var
187
- OrderDocumentNumber: Code[20];
188
- ShouldValidateVendorCredit: Boolean;
189
- ShouldCheckInventoryLevels: Boolean;
190
- ShouldPostOrderImmediately: Boolean;
191
- ValidationSuccessful: Boolean;
192
- InventoryCheckPassed: Boolean;
193
- PostingSuccessful: Boolean;
194
- begin
195
- // Map parameters to descriptive variables
196
- OrderDocumentNumber := DocumentNo;
197
- ShouldValidateVendorCredit := ValidateVendor;
198
- ShouldCheckInventoryLevels := CheckInventory;
199
- ShouldPostOrderImmediately := PostImmediately;
200
-
201
- // Clear conditional logic
202
- if ShouldValidateVendorCredit then begin
203
- ValidationSuccessful := ValidateVendorCredit(OrderDocumentNumber);
204
- if not ValidationSuccessful then
205
- exit(false);
206
- end;
207
-
208
- if ShouldCheckInventoryLevels then begin
209
- InventoryCheckPassed := CheckInventoryAvailability(OrderDocumentNumber);
210
- if not InventoryCheckPassed then
211
- exit(false);
212
- end;
213
-
214
- if ShouldPostOrderImmediately then begin
215
- PostingSuccessful := PostPurchaseOrder(OrderDocumentNumber);
216
- exit(PostingSuccessful);
217
- end;
218
-
219
- exit(true);
220
- end;
221
- ```
222
-
223
- ### Option Parameter Clarity
224
- ```al
225
- procedure GenerateFinancialReport(ReportType: Option Summary,Detailed,Comparative; OutputFormat: Option PDF,Excel,XML; EmailDelivery: Boolean): Boolean
226
- var
227
- SelectedReportType: Option Summary,Detailed,Comparative;
228
- ChosenOutputFormat: Option PDF,Excel,XML;
229
- ShouldEmailReport: Boolean;
230
- ReportGenerator: Codeunit "Financial Report Generator";
231
- GenerationSuccessful: Boolean;
232
- begin
233
- // Clear option handling
234
- SelectedReportType := ReportType;
235
- ChosenOutputFormat := OutputFormat;
236
- ShouldEmailReport := EmailDelivery;
237
-
238
- case SelectedReportType of
239
- SelectedReportType::Summary:
240
- GenerationSuccessful := ReportGenerator.GenerateSummaryReport(ChosenOutputFormat);
241
- SelectedReportType::Detailed:
242
- GenerationSuccessful := ReportGenerator.GenerateDetailedReport(ChosenOutputFormat);
243
- SelectedReportType::Comparative:
244
- GenerationSuccessful := ReportGenerator.GenerateComparativeReport(ChosenOutputFormat);
245
- end;
246
-
247
- if GenerationSuccessful and ShouldEmailReport then
248
- EmailReport(SelectedReportType, ChosenOutputFormat);
249
-
250
- exit(GenerationSuccessful);
251
- end;
252
- ```
253
-
254
- ### Record Parameter Documentation
255
- ```al
256
- procedure UpdateCustomerAddress(var CustomerRecord: Record Customer; NewAddressLine1: Text[100]; NewAddressLine2: Text[50]; NewCity: Text[30]; NewPostCode: Code[20]; ValidateAddress: Boolean): Boolean
257
- var
258
- CustomerToUpdate: Record Customer;
259
- ProposedAddressLine1: Text[100];
260
- ProposedAddressLine2: Text[50];
261
- ProposedCity: Text[30];
262
- ProposedPostalCode: Code[20];
263
- ShouldValidateAddressWithPostalService: Boolean;
264
- AddressValidationSuccessful: Boolean;
265
- begin
266
- // Clear parameter intent
267
- CustomerToUpdate := CustomerRecord;
268
- ProposedAddressLine1 := NewAddressLine1;
269
- ProposedAddressLine2 := NewAddressLine2;
270
- ProposedCity := NewCity;
271
- ProposedPostalCode := NewPostCode;
272
- ShouldValidateAddressWithPostalService := ValidateAddress;
273
-
274
- // Validate address if requested
275
- if ShouldValidateAddressWithPostalService then begin
276
- AddressValidationSuccessful := ValidateAddressWithPostalService(
277
- ProposedAddressLine1,
278
- ProposedAddressLine2,
279
- ProposedCity,
280
- ProposedPostalCode
281
- );
282
-
283
- if not AddressValidationSuccessful then
284
- exit(false);
285
- end;
286
-
287
- // Apply address changes
288
- CustomerToUpdate.Address := ProposedAddressLine1;
289
- CustomerToUpdate."Address 2" := ProposedAddressLine2;
290
- CustomerToUpdate.City := ProposedCity;
291
- CustomerToUpdate."Post Code" := ProposedPostalCode;
292
- CustomerToUpdate.Modify(true);
293
-
294
- // Return updated record
295
- CustomerRecord := CustomerToUpdate;
296
- exit(true);
297
- end;
298
- ```
299
-
300
- ### Complex Calculation Clarity
301
- ```al
302
- procedure CalculateExtendedPrice(BasePrice: Decimal; DiscountPercent: Decimal; TaxRate: Decimal; IncludeTax: Boolean; RoundToNearestCent: Boolean): Decimal
303
- var
304
- ItemBasePrice: Decimal;
305
- ApplicableDiscountPercent: Decimal;
306
- ApplicableTaxRate: Decimal;
307
- ShouldIncludeTaxInCalculation: Boolean;
308
- ShouldRoundResultToNearestCent: Boolean;
309
- PriceAfterDiscount: Decimal;
310
- TaxAmount: Decimal;
311
- FinalCalculatedPrice: Decimal;
312
- begin
313
- // Parameter mapping for clarity
314
- ItemBasePrice := BasePrice;
315
- ApplicableDiscountPercent := DiscountPercent;
316
- ApplicableTaxRate := TaxRate;
317
- ShouldIncludeTaxInCalculation := IncludeTax;
318
- ShouldRoundResultToNearestCent := RoundToNearestCent;
319
-
320
- // Calculate discount
321
- PriceAfterDiscount := ItemBasePrice * (1 - (ApplicableDiscountPercent / 100));
322
-
323
- // Calculate tax if required
324
- if ShouldIncludeTaxInCalculation then begin
325
- TaxAmount := PriceAfterDiscount * (ApplicableTaxRate / 100);
326
- FinalCalculatedPrice := PriceAfterDiscount + TaxAmount;
327
- end else begin
328
- FinalCalculatedPrice := PriceAfterDiscount;
329
- end;
330
-
331
- // Round if requested
332
- if ShouldRoundResultToNearestCent then
333
- FinalCalculatedPrice := Round(FinalCalculatedPrice, 0.01);
334
-
335
- exit(FinalCalculatedPrice);
336
- end;
337
- ```
338
-
339
- ## Implementation Guidelines
340
-
341
- 1. **Use descriptive intermediate variables** - Map parameters to meaningful names immediately
342
- 2. **Apply consistent naming patterns** - Use prefixes like "Should", "Chosen", "Selected" for clarity
343
- 3. **Document boolean intent** - Make boolean parameter purpose clear through variable names
344
- 4. **Handle option parameters explicitly** - Use case statements with named option variables
345
- 5. **Group related parameters** - Organize parameter mapping logically in procedure start
346
- 6. **Validate parameter combinations** - Use clear variable names in validation logic
@@ -1,298 +0,0 @@
1
- # Record Find Early Exit - AL Code Examples
2
-
3
- ## Good Examples
4
-
5
- ### Early Exit with Find Pattern
6
- ```al
7
- procedure GetCustomerName(CustomerNo: Code[20]): Text[100]
8
- var
9
- Customer: Record Customer;
10
- begin
11
- // Early exit - avoid unnecessary processing
12
- if not Customer.Get(CustomerNo) then
13
- exit('');
14
-
15
- // Only execute if record found
16
- exit(Customer.Name);
17
- end;
18
- ```
19
-
20
- ### Complex Find with Early Validation
21
- ```al
22
- procedure ProcessActiveCustomerOrders(CustomerNo: Code[20]): Boolean
23
- var
24
- Customer: Record Customer;
25
- SalesHeader: Record "Sales Header";
26
- ProcessedCount: Integer;
27
- begin
28
- // Early exit for invalid customer
29
- if CustomerNo = '' then
30
- exit(false);
31
-
32
- // Early exit if customer doesn't exist
33
- if not Customer.Get(CustomerNo) then
34
- exit(false);
35
-
36
- // Early exit if customer is blocked
37
- if Customer.Blocked <> Customer.Blocked::" " then
38
- exit(false);
39
-
40
- // Process orders only after all validations pass
41
- SalesHeader.SetRange("Sell-to Customer No.", CustomerNo);
42
- SalesHeader.SetRange("Document Type", SalesHeader."Document Type"::Order);
43
- SalesHeader.SetRange(Status, SalesHeader.Status::Open);
44
-
45
- if not SalesHeader.FindSet() then
46
- exit(false);
47
-
48
- repeat
49
- if ProcessSalesOrder(SalesHeader."No.") then
50
- ProcessedCount += 1;
51
- until SalesHeader.Next() = 0;
52
-
53
- exit(ProcessedCount > 0);
54
- end;
55
- ```
56
-
57
- ### FindFirst with Early Exit
58
- ```al
59
- procedure GetLatestInvoiceAmount(CustomerNo: Code[20]): Decimal
60
- var
61
- SalesInvoiceHeader: Record "Sales Invoice Header";
62
- begin
63
- SalesInvoiceHeader.SetRange("Sell-to Customer No.", CustomerNo);
64
- SalesInvoiceHeader.SetCurrentKey("Posting Date");
65
- SalesInvoiceHeader.Ascending(false);
66
-
67
- // Early exit if no invoices found
68
- if not SalesInvoiceHeader.FindFirst() then
69
- exit(0);
70
-
71
- SalesInvoiceHeader.CalcFields("Amount Including VAT");
72
- exit(SalesInvoiceHeader."Amount Including VAT");
73
- end;
74
- ```
75
-
76
- ### Multiple Table Lookup Optimization
77
- ```al
78
- procedure ValidateItemAvailability(ItemNo: Code[20]; LocationCode: Code[10]; RequiredQty: Decimal): Boolean
79
- var
80
- Item: Record Item;
81
- Location: Record Location;
82
- ItemLedgerEntry: Record "Item Ledger Entry";
83
- AvailableQty: Decimal;
84
- begin
85
- // Early validation - item must exist
86
- if not Item.Get(ItemNo) then
87
- exit(false);
88
-
89
- // Early exit if item is blocked
90
- if Item.Blocked then
91
- exit(false);
92
-
93
- // Early validation - location must exist if specified
94
- if (LocationCode <> '') and (not Location.Get(LocationCode)) then
95
- exit(false);
96
-
97
- // Calculate available quantity only after validations
98
- ItemLedgerEntry.SetRange("Item No.", ItemNo);
99
- if LocationCode <> '' then
100
- ItemLedgerEntry.SetRange("Location Code", LocationCode);
101
- ItemLedgerEntry.CalcSums(Quantity);
102
- AvailableQty := ItemLedgerEntry.Quantity;
103
-
104
- exit(AvailableQty >= RequiredQty);
105
- end;
106
- ```
107
-
108
- ## Bad Examples
109
-
110
- ### Unnecessary Nesting After Find
111
- ```al
112
- procedure GetCustomerName(CustomerNo: Code[20]): Text[100]
113
- var
114
- Customer: Record Customer;
115
- begin
116
- if Customer.Get(CustomerNo) then begin
117
- // Unnecessary nesting - should return early on not found
118
- exit(Customer.Name);
119
- end else begin
120
- // Process all failure scenarios in else block
121
- if CustomerNo = '' then begin
122
- exit('Invalid Customer Number');
123
- end else begin
124
- exit('Customer Not Found');
125
- end;
126
- end;
127
- end;
128
- ```
129
-
130
- ### Processing in Nested Blocks
131
- ```al
132
- procedure ProcessCustomerOrders(CustomerNo: Code[20]): Boolean
133
- var
134
- Customer: Record Customer;
135
- SalesHeader: Record "Sales Header";
136
- ProcessedCount: Integer;
137
- begin
138
- if Customer.Get(CustomerNo) then begin
139
- if Customer.Blocked = Customer.Blocked::" " then begin
140
- SalesHeader.SetRange("Sell-to Customer No.", CustomerNo);
141
- SalesHeader.SetRange("Document Type", SalesHeader."Document Type"::Order);
142
- if SalesHeader.FindSet() then begin
143
- repeat
144
- if ProcessSalesOrder(SalesHeader."No.") then begin
145
- ProcessedCount += 1;
146
- end;
147
- until SalesHeader.Next() = 0;
148
- if ProcessedCount > 0 then begin
149
- exit(true);
150
- end else begin
151
- exit(false);
152
- end;
153
- end else begin
154
- exit(false);
155
- end;
156
- end else begin
157
- exit(false);
158
- end;
159
- end else begin
160
- exit(false);
161
- end;
162
- end;
163
- ```
164
-
165
- ### Inefficient Multiple Lookups
166
- ```al
167
- procedure GetItemDescription(ItemNo: Code[20]): Text[100]
168
- var
169
- Item: Record Item;
170
- ItemTranslation: Record "Item Translation";
171
- Description: Text[100];
172
- begin
173
- if Item.Get(ItemNo) then begin
174
- Description := Item.Description;
175
- // Inefficient: Could exit early with base description
176
- ItemTranslation.SetRange("Item No.", ItemNo);
177
- ItemTranslation.SetRange("Language Code", GlobalLanguage);
178
- if ItemTranslation.FindFirst() then begin
179
- if ItemTranslation.Description <> '' then begin
180
- Description := ItemTranslation.Description;
181
- end;
182
- end;
183
- exit(Description);
184
- end else begin
185
- exit('');
186
- end;
187
- end;
188
- ```
189
-
190
- ## Best Practices
191
-
192
- ### Guard Clause Pattern
193
- ```al
194
- procedure CalculateCustomerBalance(CustomerNo: Code[20]): Decimal
195
- var
196
- Customer: Record Customer;
197
- CustLedgerEntry: Record "Cust. Ledger Entry";
198
- begin
199
- // Guard clauses with early exits
200
- if CustomerNo = '' then
201
- exit(0);
202
-
203
- if not Customer.Get(CustomerNo) then
204
- exit(0);
205
-
206
- // Main logic only executes with valid data
207
- CustLedgerEntry.SetRange("Customer No.", CustomerNo);
208
- CustLedgerEntry.SetRange(Open, true);
209
- CustLedgerEntry.CalcSums("Remaining Amt. (LCY)");
210
- exit(CustLedgerEntry."Remaining Amt. (LCY)");
211
- end;
212
- ```
213
-
214
- ### Efficient Existence Check
215
- ```al
216
- procedure CustomerHasOpenOrders(CustomerNo: Code[20]): Boolean
217
- var
218
- SalesHeader: Record "Sales Header";
219
- begin
220
- // Early exit for invalid input
221
- if CustomerNo = '' then
222
- exit(false);
223
-
224
- // Efficient existence check with FindFirst
225
- SalesHeader.SetRange("Sell-to Customer No.", CustomerNo);
226
- SalesHeader.SetRange("Document Type", SalesHeader."Document Type"::Order);
227
- SalesHeader.SetRange(Status, SalesHeader.Status::Open);
228
-
229
- // Return boolean directly - no additional processing needed
230
- exit(not SalesHeader.IsEmpty);
231
- end;
232
- ```
233
-
234
- ### Optimized Filter Chain
235
- ```al
236
- procedure GetActiveItemCount(ItemCategoryCode: Code[20]): Integer
237
- var
238
- Item: Record Item;
239
- begin
240
- // Early exit for empty category
241
- if ItemCategoryCode = '' then
242
- exit(0);
243
-
244
- // Set filters before find operation
245
- Item.SetRange("Item Category Code", ItemCategoryCode);
246
- Item.SetRange(Blocked, false);
247
- Item.SetRange(Type, Item.Type::Inventory);
248
-
249
- // Early exit if no matching records
250
- if Item.IsEmpty then
251
- exit(0);
252
-
253
- exit(Item.Count);
254
- end;
255
- ```
256
-
257
- ### Resource Management Pattern
258
- ```al
259
- procedure ProcessItemBatch(var ItemFilter: Record Item): Integer
260
- var
261
- ProcessedCount: Integer;
262
- TempItem: Record Item temporary;
263
- begin
264
- // Early exit if no records to process
265
- if ItemFilter.IsEmpty then
266
- exit(0);
267
-
268
- // Copy to temporary for safe processing
269
- if ItemFilter.FindSet() then begin
270
- repeat
271
- TempItem := ItemFilter;
272
- TempItem.Insert();
273
- until ItemFilter.Next() = 0;
274
- end;
275
-
276
- // Early exit if copy failed
277
- if TempItem.IsEmpty then
278
- exit(0);
279
-
280
- // Process temporary records
281
- TempItem.FindSet();
282
- repeat
283
- if ProcessSingleItem(TempItem) then
284
- ProcessedCount += 1;
285
- until TempItem.Next() = 0;
286
-
287
- exit(ProcessedCount);
288
- end;
289
- ```
290
-
291
- ## Performance Guidelines
292
-
293
- 1. **Use early exits to avoid unnecessary database operations**
294
- 2. **Apply filters before Find operations to reduce record set**
295
- 3. **Check IsEmpty before iterating large record sets**
296
- 4. **Use FindFirst for existence checks instead of FindSet**
297
- 5. **Validate input parameters before database access**
298
- 6. **Group related validations for efficient early exits**