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,438 +0,0 @@
1
- # AL Begin/End Block Structure - Code Examples
2
-
3
- ## Object Trigger Structure
4
-
5
- ### Table Trigger Pattern
6
- ```al
7
- table 50100 "Sales Order Processing"
8
- {
9
- fields
10
- {
11
- field(1; "Order No."; Code[20])
12
- {
13
- Caption = 'Order No.';
14
- }
15
- field(2; "Customer No."; Code[20])
16
- {
17
- Caption = 'Customer No.';
18
- TableRelation = Customer;
19
-
20
- trigger OnValidate()
21
- begin
22
- if "Customer No." <> '' then begin
23
- Customer.Get("Customer No.");
24
- "Customer Name" := Customer.Name;
25
- ValidateCustomerCredit();
26
- end;
27
- end;
28
- }
29
- }
30
-
31
- var
32
- Customer: Record Customer;
33
-
34
- trigger OnInsert()
35
- begin
36
- TestField("Customer No.");
37
-
38
- if "Order No." = '' then begin
39
- NoSeriesManagement.InitSeries(GetNoSeriesCode(), xRec."No. Series", 0D, "Order No.", "No. Series");
40
- end;
41
- end;
42
-
43
- trigger OnModify()
44
- begin
45
- if xRec."Customer No." <> "Customer No." then begin
46
- if OrderLineExists() then begin
47
- if not Confirm('Customer changed. Update order lines?') then begin
48
- Error('Customer change cancelled');
49
- end;
50
- UpdateOrderLines();
51
- end;
52
- end;
53
- end;
54
- }
55
- ```
56
-
57
- ### Page Trigger Structure
58
- ```al
59
- page 50100 "Sales Order Card"
60
- {
61
- PageType = Card;
62
- SourceTable = "Sales Order Processing";
63
-
64
- layout
65
- {
66
- area(Content)
67
- {
68
- group(General)
69
- {
70
- field("Order No."; "Order No.")
71
- {
72
- ApplicationArea = All;
73
-
74
- trigger OnAssistEdit()
75
- begin
76
- if AssistEdit(xRec) then begin
77
- CurrPage.Update();
78
- end;
79
- end;
80
- }
81
- }
82
- }
83
- }
84
-
85
- actions
86
- {
87
- area(Processing)
88
- {
89
- action(ProcessOrder)
90
- {
91
- Caption = 'Process Order';
92
-
93
- trigger OnAction()
94
- begin
95
- if ValidateOrderData() then begin
96
- if ConfirmProcessing() then begin
97
- ProcessOrderLines();
98
- SendConfirmationEmail();
99
- Message('Order processed successfully');
100
- end else begin
101
- Message('Order processing cancelled');
102
- end;
103
- end else begin
104
- Error('Order validation failed');
105
- end;
106
- end;
107
- }
108
- }
109
- }
110
-
111
- trigger OnOpenPage()
112
- begin
113
- SetDefaultFilters();
114
- UpdateVisibility();
115
-
116
- if IsNewRecord() then begin
117
- InitializeNewOrder();
118
- end;
119
- end;
120
- }
121
- ```
122
-
123
- ## Procedure Organization Patterns
124
-
125
- ```al
126
- codeunit 50100 "Order Management"
127
- {
128
- procedure CreateSalesOrder(CustomerNo: Code[20]; OrderDate: Date): Code[20]
129
- var
130
- SalesHeader: Record "Sales Header";
131
- OrderNo: Code[20];
132
- begin
133
- OrderNo := GetNextOrderNumber();
134
-
135
- SalesHeader.Init();
136
- SalesHeader."Document Type" := SalesHeader."Document Type"::Order;
137
- SalesHeader."No." := OrderNo;
138
- SalesHeader."Sell-to Customer No." := CustomerNo;
139
- SalesHeader."Order Date" := OrderDate;
140
- SalesHeader.Insert(true);
141
-
142
- exit(OrderNo);
143
- end;
144
-
145
- procedure ProcessBulkOrders(var TempOrderBuffer: Record "Order Buffer" temporary)
146
- var
147
- OrderNo: Code[20];
148
- ProcessedCount: Integer;
149
- ErrorCount: Integer;
150
- begin
151
- if TempOrderBuffer.IsEmpty() then begin
152
- Message('No orders to process');
153
- exit;
154
- end;
155
-
156
- TempOrderBuffer.FindSet();
157
- repeat
158
- if ValidateOrderBuffer(TempOrderBuffer) then begin
159
- if CreateOrderFromBuffer(TempOrderBuffer, OrderNo) then begin
160
- ProcessedCount += 1;
161
- TempOrderBuffer."Status" := TempOrderBuffer."Status"::Processed;
162
- TempOrderBuffer."Order No." := OrderNo;
163
- end else begin
164
- ErrorCount += 1;
165
- TempOrderBuffer."Status" := TempOrderBuffer."Status"::Error;
166
- end;
167
- end else begin
168
- ErrorCount += 1;
169
- TempOrderBuffer."Status" := TempOrderBuffer."Status"::"Validation Error";
170
- end;
171
-
172
- TempOrderBuffer.Modify();
173
- until TempOrderBuffer.Next() = 0;
174
-
175
- Message('Processing complete. Processed: %1, Errors: %2', ProcessedCount, ErrorCount);
176
- end;
177
- }
178
- ```
179
-
180
- ## Control Flow Nesting Patterns
181
-
182
- ```al
183
- codeunit 50101 "Advanced Control Flow"
184
- {
185
- procedure DetermineShippingMethod(SalesHeader: Record "Sales Header"): Code[10]
186
- begin
187
- if SalesHeader."Sell-to Country/Region Code" = 'US' then begin
188
- if SalesHeader."Order Date" = Today() then begin
189
- if SalesHeader.Amount > 1000 then begin
190
- exit('RUSH-PREMIUM');
191
- end else begin
192
- exit('RUSH-STANDARD');
193
- end;
194
- end else begin
195
- if SalesHeader.Amount > 500 then begin
196
- exit('DOMESTIC-FREE');
197
- end else begin
198
- exit('DOMESTIC-PAID');
199
- end;
200
- end;
201
- end else begin
202
- if SalesHeader.Amount > 2000 then begin
203
- exit('INTL-EXPRESS');
204
- end else begin
205
- if GetShippingDistance(SalesHeader."Sell-to Country/Region Code") <= 5000 then begin
206
- exit('INTL-STANDARD');
207
- end else begin
208
- exit('INTL-ECONOMY');
209
- end;
210
- end;
211
- end;
212
- end;
213
-
214
- procedure ProcessOrderByType(OrderType: Enum "Order Type")
215
- begin
216
- case OrderType of
217
- OrderType::Standard:
218
- begin
219
- ValidateInventory();
220
- CreateShipment();
221
- SendConfirmation();
222
- end;
223
- OrderType::DropShip:
224
- begin
225
- ValidateVendor();
226
- CreatePurchaseOrder();
227
- NotifyCustomer();
228
- end;
229
- OrderType::Transfer:
230
- begin
231
- ValidateLocations();
232
- CreateTransferOrder();
233
- UpdateInventory();
234
- end;
235
- else begin
236
- Error('Unsupported order type: %1', OrderType);
237
- end;
238
- end;
239
- end;
240
- }
241
- ```
242
-
243
- ## Variable Scope Examples
244
-
245
- ```al
246
- codeunit 50102 "Variable Scope Examples"
247
- {
248
- var
249
- GlobalCounter: Integer;
250
- GlobalCustomer: Record Customer;
251
-
252
- procedure DemonstrateVariableScope()
253
- var
254
- LocalCounter: Integer;
255
- Customer: Record Customer;
256
- i: Integer;
257
- begin
258
- LocalCounter := 0;
259
-
260
- for i := 1 to 10 do begin
261
- LocalCounter += 1;
262
- GlobalCounter += 1;
263
-
264
- if i mod 2 = 0 then begin
265
- Customer.SetRange("No.", Format(i));
266
- if Customer.FindFirst() then begin
267
- ProcessCustomer(Customer);
268
- end;
269
- end;
270
- end;
271
-
272
- Message('Local: %1, Global: %2', LocalCounter, GlobalCounter);
273
- end;
274
-
275
- procedure ProcessCustomerOrders(CustomerNo: Code[20]; ProcessDate: Date)
276
- var
277
- SalesHeader: Record "Sales Header";
278
- OrderCount: Integer;
279
- TotalAmount: Decimal;
280
- begin
281
- OrderCount := 0;
282
- TotalAmount := 0;
283
-
284
- SalesHeader.SetRange("Sell-to Customer No.", CustomerNo);
285
- SalesHeader.SetRange("Order Date", ProcessDate);
286
-
287
- if SalesHeader.FindSet() then begin
288
- repeat
289
- OrderCount += 1;
290
- SalesHeader.CalcFields(Amount);
291
- TotalAmount += SalesHeader.Amount;
292
-
293
- if SalesHeader.Amount > 1000 then begin
294
- ApplyVIPProcessing(SalesHeader);
295
- end;
296
-
297
- until SalesHeader.Next() = 0;
298
- end;
299
-
300
- UpdateCustomerStatistics(CustomerNo, OrderCount, TotalAmount);
301
- end;
302
- }
303
- ```
304
-
305
- ## Exception Handling Patterns
306
-
307
- ```al
308
- codeunit 50103 "Exception Handling Examples"
309
- {
310
- procedure SafeOrderProcessing(OrderNo: Code[20]): Boolean
311
- var
312
- SalesHeader: Record "Sales Header";
313
- ProcessingResult: Boolean;
314
- begin
315
- ProcessingResult := false;
316
-
317
- if SalesHeader.Get(SalesHeader."Document Type"::Order, OrderNo) then begin
318
- if ValidateOrderForProcessing(SalesHeader) then begin
319
- if ProcessOrderSafely(SalesHeader) then begin
320
- ProcessingResult := true;
321
- end;
322
- end;
323
- end;
324
-
325
- exit(ProcessingResult);
326
- end;
327
-
328
- local procedure ProcessOrderSafely(var SalesHeader: Record "Sales Header"): Boolean
329
- begin
330
- if not Codeunit.Run(Codeunit::"Sales-Post", SalesHeader) then begin
331
- LogProcessingError(SalesHeader."No.", GetLastErrorText());
332
- ClearLastError();
333
- exit(false);
334
- end;
335
-
336
- exit(true);
337
- end;
338
-
339
- procedure BatchProcessOrders(var TempOrderList: Record "Order Processing Queue" temporary)
340
- var
341
- ProcessedCount: Integer;
342
- ErrorCount: Integer;
343
- CurrentOrder: Code[20];
344
- begin
345
- ProcessedCount := 0;
346
- ErrorCount := 0;
347
-
348
- if TempOrderList.FindSet() then begin
349
- repeat
350
- CurrentOrder := TempOrderList."Order No.";
351
-
352
- if ProcessSingleOrder(CurrentOrder) then begin
353
- ProcessedCount += 1;
354
- TempOrderList.Status := TempOrderList.Status::Completed;
355
- end else begin
356
- ErrorCount += 1;
357
- TempOrderList.Status := TempOrderList.Status::Error;
358
- TempOrderList."Error Message" := GetLastErrorText();
359
- ClearLastError();
360
- end;
361
-
362
- TempOrderList.Modify();
363
-
364
- until TempOrderList.Next() = 0;
365
- end;
366
-
367
- Message('Batch processing complete.\Processed: %1\Errors: %2', ProcessedCount, ErrorCount);
368
- end;
369
- }
370
- ```
371
-
372
- ## Anti-Pattern Examples
373
-
374
- ```al
375
- // ❌ ANTI-PATTERN: Poor block structure
376
- procedure BadExample()
377
- var
378
- Customer: Record Customer;
379
- begin
380
- // Missing begin/end for multi-statement block
381
- if Customer.FindFirst() then
382
- Customer.CalcFields(Balance);
383
- UpdateCustomerStatus(Customer); // This always executes!
384
-
385
- // Inconsistent block structure
386
- repeat
387
- ProcessCustomer();
388
- until Customer.Next() = 0; // Should be in begin/end block
389
- end;
390
-
391
- // ❌ ANTI-PATTERN: Poor variable scope
392
- procedure BadVariableScope()
393
- begin
394
- if SomeCondition then begin
395
- Customer: Record Customer; // SYNTAX ERROR - can't declare here
396
- Customer.FindFirst();
397
- end;
398
- end;
399
-
400
- // ✅ CORRECT: Proper block structure
401
- procedure GoodExample()
402
- var
403
- Customer: Record Customer;
404
- begin
405
- if Customer.FindFirst() then begin
406
- Customer.CalcFields(Balance);
407
- UpdateCustomerStatus(Customer);
408
- end;
409
-
410
- if Customer.FindSet() then begin
411
- repeat
412
- ProcessCustomer();
413
- until Customer.Next() = 0;
414
- end;
415
- end;
416
- ```
417
-
418
- ## Best Practices Summary
419
-
420
- ### Block Structure Guidelines
421
- 1. **Always use begin/end** for multi-statement blocks
422
- 2. **Consistent indentation** - use 4 spaces per level
423
- 3. **Clear nesting** - avoid deeply nested structures
424
- 4. **Logical grouping** - group related statements
425
- 5. **Single responsibility** - each block has clear purpose
426
-
427
- ### Variable Scope Best Practices
428
- 1. **Declare at procedure level** for maximum flexibility
429
- 2. **Initialize variables** before use
430
- 3. **Use meaningful names** indicating scope and purpose
431
- 4. **Minimize global variables** - prefer parameters
432
-
433
- ### Error Handling Standards
434
- 1. **Check return values** from system functions
435
- 2. **Use ClearLastError()** after handling errors
436
- 3. **Provide meaningful messages** with context
437
- 4. **Implement graceful degradation** where possible
438
- 5. **Log errors appropriately** for troubleshooting
@@ -1,255 +0,0 @@
1
- # AL Binary Operator Spacing - Code Examples
2
-
3
- ## Good Examples
4
-
5
- ### Arithmetic Operators with Proper Spacing
6
- ```al
7
- procedure CalculateOrderTotals(BaseAmount: Decimal; TaxRate: Decimal; DiscountPct: Decimal): Decimal
8
- var
9
- TaxAmount: Decimal;
10
- DiscountAmount: Decimal;
11
- NetAmount: Decimal;
12
- FinalTotal: Decimal;
13
- begin
14
- // Arithmetic operations with consistent spacing
15
- TaxAmount := BaseAmount * TaxRate / 100;
16
- DiscountAmount := BaseAmount * DiscountPct / 100;
17
- NetAmount := BaseAmount - DiscountAmount;
18
- FinalTotal := NetAmount + TaxAmount;
19
-
20
- // Complex calculations with proper spacing
21
- FinalTotal := (BaseAmount * (1 - DiscountPct / 100)) * (1 + TaxRate / 100);
22
-
23
- exit(FinalTotal);
24
- end;
25
- ```
26
-
27
- ### Comparison Operators with Consistent Spacing
28
- ```al
29
- procedure ValidateCustomerData(var Customer: Record Customer): Boolean
30
- var
31
- ValidationResult: Boolean;
32
- begin
33
- ValidationResult := true;
34
-
35
- // Comparison operations with proper spacing
36
- if Customer."No." = '' then
37
- ValidationResult := false;
38
-
39
- if Customer."Credit Limit (LCY)" <= 0 then
40
- ValidationResult := false;
41
-
42
- if Customer."Balance (LCY)" >= Customer."Credit Limit (LCY)" then
43
- ValidationResult := false;
44
-
45
- if Customer."Last Date Modified" <> Today then
46
- Customer."Last Date Modified" := Today;
47
-
48
- // Complex comparison with proper spacing
49
- if (Customer."Balance (LCY)" > 0) and (Customer."Credit Limit (LCY)" > 0) then
50
- if Customer."Balance (LCY)" / Customer."Credit Limit (LCY)" > 0.8 then
51
- Message('Customer approaching credit limit');
52
-
53
- exit(ValidationResult);
54
- end;
55
- ```
56
-
57
- ### Logical Operators with Clear Spacing
58
- ```al
59
- procedure ProcessOrderLogic(var SalesHeader: Record "Sales Header"): Boolean
60
- var
61
- CanProcess: Boolean;
62
- Customer: Record Customer;
63
- begin
64
- Customer.Get(SalesHeader."Sell-to Customer No.");
65
-
66
- // Logical operations with proper spacing
67
- CanProcess := (SalesHeader.Status = SalesHeader.Status::Open) and
68
- (not Customer.Blocked) and
69
- (SalesHeader."Order Date" <> 0D);
70
-
71
- // Complex logical expressions with clear spacing
72
- if (Customer."Credit Limit (LCY)" > 0) and
73
- (Customer."Balance (LCY)" < Customer."Credit Limit (LCY)") and
74
- ((SalesHeader."Amount Including VAT" + Customer."Balance (LCY)") <= Customer."Credit Limit (LCY)") then
75
- CanProcess := true
76
- else
77
- CanProcess := false;
78
-
79
- // Multiple condition checks with proper spacing
80
- if (SalesHeader."Shipment Date" <> 0D) or
81
- (SalesHeader."Requested Delivery Date" <> 0D) or
82
- (SalesHeader."Promised Delivery Date" <> 0D) then
83
- SalesHeader."Has Delivery Date" := true;
84
-
85
- exit(CanProcess);
86
- end;
87
- ```
88
-
89
- ### Assignment Operators with Consistent Formatting
90
- ```al
91
- procedure UpdateCustomerInformation(var Customer: Record Customer; NewCredit: Decimal)
92
- var
93
- PreviousCredit: Decimal;
94
- CreditIncrease: Decimal;
95
- begin
96
- // Assignment operations with proper spacing
97
- PreviousCredit := Customer."Credit Limit (LCY)";
98
- Customer."Credit Limit (LCY)" := NewCredit;
99
- CreditIncrease := NewCredit - PreviousCredit;
100
-
101
- // Complex assignments with proper spacing
102
- Customer."Credit Available (LCY)" := Customer."Credit Limit (LCY)" - Customer."Balance (LCY)";
103
-
104
- // Multiple assignments maintaining consistency
105
- Customer."Last Date Modified" := Today;
106
- Customer."Last Time Modified" := Time;
107
- Customer."Modified By" := UserId;
108
-
109
- Customer.Modify();
110
- end;
111
- ```
112
-
113
- ### Mixed Operators in Complex Expressions
114
- ```al
115
- procedure CalculateComplexPricing(ItemNo: Code[20]; Quantity: Decimal; CustomerNo: Code[20]): Decimal
116
- var
117
- Item: Record Item;
118
- Customer: Record Customer;
119
- BasePrice: Decimal;
120
- VolumeDiscount: Decimal;
121
- CustomerDiscount: Decimal;
122
- FinalPrice: Decimal;
123
- begin
124
- Item.Get(ItemNo);
125
- Customer.Get(CustomerNo);
126
-
127
- BasePrice := Item."Unit Price";
128
-
129
- // Complex calculations with consistent operator spacing
130
- if Quantity >= 100 then
131
- VolumeDiscount := 0.15
132
- else if Quantity >= 50 then
133
- VolumeDiscount := 0.10
134
- else if Quantity >= 20 then
135
- VolumeDiscount := 0.05
136
- else
137
- VolumeDiscount := 0.00;
138
-
139
- // Customer type discount calculation
140
- if Customer."Customer Price Group" = 'VIP' then
141
- CustomerDiscount := 0.20
142
- else if Customer."Customer Price Group" = 'PREMIUM' then
143
- CustomerDiscount := 0.10
144
- else
145
- CustomerDiscount := 0.00;
146
-
147
- // Final price calculation with proper spacing
148
- FinalPrice := BasePrice * Quantity * (1 - VolumeDiscount) * (1 - CustomerDiscount);
149
-
150
- exit(FinalPrice);
151
- end;
152
- ```
153
-
154
- ## Bad Examples
155
-
156
- ### Cramped Arithmetic Operations
157
- ```al
158
- procedure BadArithmeticSpacing(Amount: Decimal; Tax: Decimal): Decimal
159
- var
160
- Result: Decimal;
161
- begin
162
- Result:=Amount*Tax/100; // Bad: no spaces around operators
163
- Result:=Amount+Result; // Bad: no spaces around operators
164
- Result:=(Amount*1.1)+Tax-5; // Bad: inconsistent spacing
165
- exit(Result);
166
- end;
167
- ```
168
-
169
- ### Inconsistent Comparison Spacing
170
- ```al
171
- procedure BadComparisonSpacing(Customer: Record Customer): Boolean
172
- begin
173
- if Customer."No."='' then // Bad: no spaces around =
174
- exit(false);
175
-
176
- if Customer."Credit Limit (LCY)" <=0 then // Bad: no space before <=
177
- exit(false);
178
-
179
- if Customer."Balance (LCY)">= Customer."Credit Limit (LCY)" then // Bad: inconsistent spacing around >=
180
- exit(false);
181
-
182
- exit(true);
183
- end;
184
- ```
185
-
186
- ### Poor Logical Operator Spacing
187
- ```al
188
- procedure BadLogicalSpacing(SalesHeader: Record "Sales Header"): Boolean
189
- var
190
- Customer: Record Customer;
191
- begin
192
- Customer.Get(SalesHeader."Sell-to Customer No.");
193
-
194
- // Bad logical operator spacing
195
- if(SalesHeader.Status=SalesHeader.Status::Open)and(not Customer.Blocked)and(SalesHeader."Order Date"<>0D)then // Bad: no spaces
196
- exit(true);
197
-
198
- if (Customer."Credit Limit (LCY)">0)and (Customer."Balance (LCY)"<Customer."Credit Limit (LCY)")then // Bad: inconsistent spacing
199
- exit(true);
200
-
201
- exit(false);
202
- end;
203
- ```
204
-
205
- ### Cramped Assignment Operations
206
- ```al
207
- procedure BadAssignmentSpacing(var Customer: Record Customer)
208
- var
209
- NewCredit: Decimal;
210
- begin
211
- NewCredit:=5000; // Bad: no spaces around :=
212
- Customer."Credit Limit (LCY)":=NewCredit; // Bad: no spaces around :=
213
- Customer."Credit Available (LCY)":=Customer."Credit Limit (LCY)"-Customer."Balance (LCY)"; // Bad: no spaces around operators
214
- end;
215
- ```
216
-
217
- ### Mixed Spacing Inconsistency
218
- ```al
219
- procedure InconsistentSpacing(Amount: Decimal; Discount: Decimal): Decimal
220
- var
221
- Result: Decimal;
222
- begin
223
- Result := Amount * (1-Discount/100); // Bad: inconsistent spacing (some operators have spaces, others don't)
224
- Result:= Result+10; // Bad: space only on one side of :=
225
- Result=Result *1.1; // Bad: wrong assignment operator and poor spacing
226
-
227
- if Result> 1000 then // Bad: space only on one side of >
228
- Result := Result- 50; // Bad: space only on one side of -
229
-
230
- exit(Result);
231
- end;
232
- ```
233
-
234
- ### Extremely Cramped Complex Expressions
235
- ```al
236
- procedure CrampedComplexExpressions(Item: Record Item; Qty: Decimal; Customer: Record Customer): Decimal
237
- var
238
- Price: Decimal;
239
- begin
240
- Price:=Item."Unit Price"*Qty*(1-GetVolumeDiscount(Qty)/100)*(1-GetCustomerDiscount(Customer."No.")/100); // Bad: no spacing in complex expression
241
-
242
- if(Item."Unit Price">0)and(Qty>0)and(Customer."Credit Limit (LCY)">Customer."Balance (LCY)")then // Bad: cramped logical expression
243
- Price:=Price*1.1; // Bad: no spaces
244
-
245
- exit(Price);
246
- end;
247
- ```
248
-
249
- ## Best Practices
250
-
251
- 1. **Single space before and after** all binary operators (+, -, *, /, =, <>, <, >, <=, >=, :=)
252
- 2. **Consistent spacing** throughout all expressions and assignments
253
- 3. **Clear separation** in complex expressions with parentheses and spacing
254
- 4. **Maintain spacing** in multi-line expressions for readability
255
- 5. **Use consistent patterns** across entire codebase for professional appearance