@jwikman/bc-code-intelligence-mcp 1.5.7-dev.1
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.
- package/LICENSE +21 -0
- package/README.md +165 -0
- package/dist/cache/cache-manager.d.ts +95 -0
- package/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/cache/cache-manager.js +328 -0
- package/dist/cache/cache-manager.js.map +1 -0
- package/dist/cli/bc-code-intel-cli.d.ts +9 -0
- package/dist/cli/bc-code-intel-cli.d.ts.map +1 -0
- package/dist/cli/bc-code-intel-cli.js +440 -0
- package/dist/cli/bc-code-intel-cli.js.map +1 -0
- package/dist/config/config-loader.d.ts +28 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +497 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-validator.d.ts +84 -0
- package/dist/config/config-validator.d.ts.map +1 -0
- package/dist/config/config-validator.js +608 -0
- package/dist/config/config-validator.js.map +1 -0
- package/dist/config/test-config-loader.d.ts +10 -0
- package/dist/config/test-config-loader.d.ts.map +1 -0
- package/dist/config/test-config-loader.js +135 -0
- package/dist/config/test-config-loader.js.map +1 -0
- package/dist/config/test-enhanced-layer-service.d.ts +7 -0
- package/dist/config/test-enhanced-layer-service.d.ts.map +1 -0
- package/dist/config/test-enhanced-layer-service.js +104 -0
- package/dist/config/test-enhanced-layer-service.js.map +1 -0
- package/dist/config/test-git-layer.d.ts +7 -0
- package/dist/config/test-git-layer.d.ts.map +1 -0
- package/dist/config/test-git-layer.js +68 -0
- package/dist/config/test-git-layer.js.map +1 -0
- package/dist/dev/hot-reload.d.ts +91 -0
- package/dist/dev/hot-reload.d.ts.map +1 -0
- package/dist/dev/hot-reload.js +358 -0
- package/dist/dev/hot-reload.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1211 -0
- package/dist/index.js.map +1 -0
- package/dist/layers/base-layer.d.ts +133 -0
- package/dist/layers/base-layer.d.ts.map +1 -0
- package/dist/layers/base-layer.js +290 -0
- package/dist/layers/base-layer.js.map +1 -0
- package/dist/layers/embedded-layer.d.ts +130 -0
- package/dist/layers/embedded-layer.d.ts.map +1 -0
- package/dist/layers/embedded-layer.js +612 -0
- package/dist/layers/embedded-layer.js.map +1 -0
- package/dist/layers/git-layer.d.ts +77 -0
- package/dist/layers/git-layer.d.ts.map +1 -0
- package/dist/layers/git-layer.js +529 -0
- package/dist/layers/git-layer.js.map +1 -0
- package/dist/layers/index.d.ts +12 -0
- package/dist/layers/index.d.ts.map +1 -0
- package/dist/layers/index.js +11 -0
- package/dist/layers/index.js.map +1 -0
- package/dist/layers/layer-service.d.ts +135 -0
- package/dist/layers/layer-service.d.ts.map +1 -0
- package/dist/layers/layer-service.js +586 -0
- package/dist/layers/layer-service.js.map +1 -0
- package/dist/layers/project-layer.d.ts +58 -0
- package/dist/layers/project-layer.d.ts.map +1 -0
- package/dist/layers/project-layer.js +286 -0
- package/dist/layers/project-layer.js.map +1 -0
- package/dist/monitoring/production-monitor.d.ts +148 -0
- package/dist/monitoring/production-monitor.d.ts.map +1 -0
- package/dist/monitoring/production-monitor.js +463 -0
- package/dist/monitoring/production-monitor.js.map +1 -0
- package/dist/performance/performance-monitor.d.ts +99 -0
- package/dist/performance/performance-monitor.d.ts.map +1 -0
- package/dist/performance/performance-monitor.js +253 -0
- package/dist/performance/performance-monitor.js.map +1 -0
- package/dist/sdk/bc-code-intel-client.d.ts +175 -0
- package/dist/sdk/bc-code-intel-client.d.ts.map +1 -0
- package/dist/sdk/bc-code-intel-client.js +380 -0
- package/dist/sdk/bc-code-intel-client.js.map +1 -0
- package/dist/search/intelligent-search.d.ts +97 -0
- package/dist/search/intelligent-search.d.ts.map +1 -0
- package/dist/search/intelligent-search.js +358 -0
- package/dist/search/intelligent-search.js.map +1 -0
- package/dist/security/access-control.d.ts +110 -0
- package/dist/security/access-control.d.ts.map +1 -0
- package/dist/security/access-control.js +353 -0
- package/dist/security/access-control.js.map +1 -0
- package/dist/services/code-analysis-service.d.ts +72 -0
- package/dist/services/code-analysis-service.d.ts.map +1 -0
- package/dist/services/code-analysis-service.js +818 -0
- package/dist/services/code-analysis-service.js.map +1 -0
- package/dist/services/enhanced-prompt-service.d.ts +56 -0
- package/dist/services/enhanced-prompt-service.d.ts.map +1 -0
- package/dist/services/enhanced-prompt-service.js +165 -0
- package/dist/services/enhanced-prompt-service.js.map +1 -0
- package/dist/services/knowledge-service.d.ts +90 -0
- package/dist/services/knowledge-service.d.ts.map +1 -0
- package/dist/services/knowledge-service.js +342 -0
- package/dist/services/knowledge-service.js.map +1 -0
- package/dist/services/methodology-service.d.ts +91 -0
- package/dist/services/methodology-service.d.ts.map +1 -0
- package/dist/services/methodology-service.js +423 -0
- package/dist/services/methodology-service.js.map +1 -0
- package/dist/services/multi-content-layer-service.d.ts +198 -0
- package/dist/services/multi-content-layer-service.d.ts.map +1 -0
- package/dist/services/multi-content-layer-service.js +991 -0
- package/dist/services/multi-content-layer-service.js.map +1 -0
- package/dist/services/roleplay-engine.d.ts +161 -0
- package/dist/services/roleplay-engine.d.ts.map +1 -0
- package/dist/services/roleplay-engine.js +994 -0
- package/dist/services/roleplay-engine.js.map +1 -0
- package/dist/services/session-storage/file-storage.d.ts +30 -0
- package/dist/services/session-storage/file-storage.d.ts.map +1 -0
- package/dist/services/session-storage/file-storage.js +229 -0
- package/dist/services/session-storage/file-storage.js.map +1 -0
- package/dist/services/session-storage/in-memory-storage.d.ts +31 -0
- package/dist/services/session-storage/in-memory-storage.d.ts.map +1 -0
- package/dist/services/session-storage/in-memory-storage.js +142 -0
- package/dist/services/session-storage/in-memory-storage.js.map +1 -0
- package/dist/services/specialist-discovery.d.ts +98 -0
- package/dist/services/specialist-discovery.d.ts.map +1 -0
- package/dist/services/specialist-discovery.js +387 -0
- package/dist/services/specialist-discovery.js.map +1 -0
- package/dist/services/specialist-loader.d.ts +101 -0
- package/dist/services/specialist-loader.d.ts.map +1 -0
- package/dist/services/specialist-loader.js +256 -0
- package/dist/services/specialist-loader.js.map +1 -0
- package/dist/services/specialist-session-manager.d.ts +76 -0
- package/dist/services/specialist-session-manager.d.ts.map +1 -0
- package/dist/services/specialist-session-manager.js +255 -0
- package/dist/services/specialist-session-manager.js.map +1 -0
- package/dist/services/workflow-service.d.ts +146 -0
- package/dist/services/workflow-service.d.ts.map +1 -0
- package/dist/services/workflow-service.js +409 -0
- package/dist/services/workflow-service.js.map +1 -0
- package/dist/setup/post-install.d.ts +12 -0
- package/dist/setup/post-install.d.ts.map +1 -0
- package/dist/setup/post-install.js +81 -0
- package/dist/setup/post-install.js.map +1 -0
- package/dist/streamlined-handlers.d.ts +94 -0
- package/dist/streamlined-handlers.d.ts.map +1 -0
- package/dist/streamlined-handlers.js +665 -0
- package/dist/streamlined-handlers.js.map +1 -0
- package/dist/test-enhanced-mcp-server.d.ts +7 -0
- package/dist/test-enhanced-mcp-server.d.ts.map +1 -0
- package/dist/test-enhanced-mcp-server.js +177 -0
- package/dist/test-enhanced-mcp-server.js.map +1 -0
- package/dist/tools/config-diagnostic-tools.d.ts +234 -0
- package/dist/tools/config-diagnostic-tools.d.ts.map +1 -0
- package/dist/tools/config-diagnostic-tools.js +887 -0
- package/dist/tools/config-diagnostic-tools.js.map +1 -0
- package/dist/tools/core-tools.d.ts +26 -0
- package/dist/tools/core-tools.d.ts.map +1 -0
- package/dist/tools/core-tools.js +241 -0
- package/dist/tools/core-tools.js.map +1 -0
- package/dist/tools/handoff-tools.d.ts +37 -0
- package/dist/tools/handoff-tools.d.ts.map +1 -0
- package/dist/tools/handoff-tools.js +265 -0
- package/dist/tools/handoff-tools.js.map +1 -0
- package/dist/tools/index.d.ts +61 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +75 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/onboarding-tools.d.ts +43 -0
- package/dist/tools/onboarding-tools.d.ts.map +1 -0
- package/dist/tools/onboarding-tools.js +353 -0
- package/dist/tools/onboarding-tools.js.map +1 -0
- package/dist/tools/specialist-discovery-tools.d.ts +27 -0
- package/dist/tools/specialist-discovery-tools.d.ts.map +1 -0
- package/dist/tools/specialist-discovery-tools.js +275 -0
- package/dist/tools/specialist-discovery-tools.js.map +1 -0
- package/dist/tools/specialist-tools.d.ts +43 -0
- package/dist/tools/specialist-tools.d.ts.map +1 -0
- package/dist/tools/specialist-tools.js +372 -0
- package/dist/tools/specialist-tools.js.map +1 -0
- package/dist/tools/workspace-tools.d.ts +96 -0
- package/dist/tools/workspace-tools.d.ts.map +1 -0
- package/dist/tools/workspace-tools.js +188 -0
- package/dist/tools/workspace-tools.js.map +1 -0
- package/dist/types/bc-knowledge.d.ts +303 -0
- package/dist/types/bc-knowledge.d.ts.map +1 -0
- package/dist/types/bc-knowledge.js +69 -0
- package/dist/types/bc-knowledge.js.map +1 -0
- package/dist/types/config-types.d.ts +186 -0
- package/dist/types/config-types.d.ts.map +1 -0
- package/dist/types/config-types.js +109 -0
- package/dist/types/config-types.js.map +1 -0
- package/dist/types/enhanced-layer-types.d.ts +193 -0
- package/dist/types/enhanced-layer-types.d.ts.map +1 -0
- package/dist/types/enhanced-layer-types.js +9 -0
- package/dist/types/enhanced-layer-types.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/layer-types.d.ts +173 -0
- package/dist/types/layer-types.d.ts.map +1 -0
- package/dist/types/layer-types.js +27 -0
- package/dist/types/layer-types.js.map +1 -0
- package/dist/types/roleplay-types.d.ts +156 -0
- package/dist/types/roleplay-types.d.ts.map +1 -0
- package/dist/types/roleplay-types.js +8 -0
- package/dist/types/roleplay-types.js.map +1 -0
- package/dist/types/session-types.d.ts +127 -0
- package/dist/types/session-types.d.ts.map +1 -0
- package/dist/types/session-types.js +8 -0
- package/dist/types/session-types.js.map +1 -0
- package/dist/utils/path-utils.d.ts +5 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +14 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/dist/workflows/domain-workflows.d.ts +8 -0
- package/dist/workflows/domain-workflows.d.ts.map +1 -0
- package/dist/workflows/domain-workflows.js +360 -0
- package/dist/workflows/domain-workflows.js.map +1 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
- package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
- package/embedded-knowledge/AGENTS.md +178 -0
- package/embedded-knowledge/CONTRIBUTING.md +58 -0
- package/embedded-knowledge/LICENSE +21 -0
- package/embedded-knowledge/README.md +32 -0
- package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
- package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
- package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
- package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
- package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
- package/embedded-knowledge/domains/alex-architect/delegating-to-github-copilot-agents.md +371 -0
- package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
- package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
- package/embedded-knowledge/domains/alex-architect/object-id-ninja-integration.md +281 -0
- package/embedded-knowledge/domains/alex-architect/recommend-object-id-ninja.md +248 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
- package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
- package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
- package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
- package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
- package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
- package/embedded-knowledge/domains/alex-architect/samples/testability-design-patterns.md +223 -0
- package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
- package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
- package/embedded-knowledge/domains/alex-architect/testability-design-patterns.md +77 -0
- package/embedded-knowledge/domains/casey-copilot/long-running-session-instructions.md +263 -0
- package/embedded-knowledge/domains/casey-copilot/samples/long-running-session-instructions.md +323 -0
- package/embedded-knowledge/domains/chris-config/configuration-file-discovery.md +846 -0
- package/embedded-knowledge/domains/chris-config/configuration-file-formats.md +595 -0
- package/embedded-knowledge/domains/chris-config/content-types-structure.md +421 -0
- package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +437 -0
- package/embedded-knowledge/domains/chris-config/layer-system-fundamentals.md +257 -0
- package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +302 -0
- package/embedded-knowledge/domains/chris-config/workspace-detection-solutions.md +336 -0
- package/embedded-knowledge/domains/dean-debug/bc-telemetry-buddy-integration.md +453 -0
- package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +360 -0
- package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
- package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
- package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
- package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
- package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
- package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
- package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
- package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
- package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
- package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
- package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
- package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
- package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
- package/embedded-knowledge/domains/dean-debug/recommend-bc-telemetry-buddy.md +160 -0
- package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
- package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
- package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
- package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
- package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
- package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
- package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
- package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
- package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
- package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
- package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
- package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
- package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
- package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
- package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
- package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
- package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
- package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
- package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
- package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
- package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
- package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
- package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
- package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
- package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
- package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
- package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
- package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
- package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
- package/embedded-knowledge/domains/eva-errors/codeunit-run-pattern.md +159 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
- package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
- package/embedded-knowledge/domains/eva-errors/samples/codeunit-run-pattern.md +239 -0
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
- package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
- package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
- package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
- package/embedded-knowledge/domains/eva-errors/samples/try-function-usage.md +195 -0
- package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
- package/embedded-knowledge/domains/eva-errors/try-function-usage.md +129 -0
- package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
- package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
- package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
- package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
- package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
- package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
- package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
- package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
- package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
- package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
- package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
- package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
- package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
- package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
- package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
- package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
- package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
- package/embedded-knowledge/domains/morgan-market/partner-readiness-analysis.md +201 -0
- package/embedded-knowledge/domains/morgan-market/samples/partner-readiness-checklist.md +288 -0
- package/embedded-knowledge/domains/parker-pragmatic/README.md +39 -0
- package/embedded-knowledge/domains/parker-pragmatic/proposal-workflows/creating-effective-proposals.md +583 -0
- package/embedded-knowledge/domains/parker-pragmatic/trust-building/working-with-ai-skeptics.md +587 -0
- package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
- package/embedded-knowledge/domains/quinn-tester/isolation-testing-patterns.md +82 -0
- package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
- package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
- package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
- package/embedded-knowledge/domains/quinn-tester/samples/isolation-testing-patterns.md +424 -0
- package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
- package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
- package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
- package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
- package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
- package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
- package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
- package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
- package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
- package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
- package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
- package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
- package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
- package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
- package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
- package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
- package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
- package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
- package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
- package/embedded-knowledge/domains/roger-reviewer/samples/testability-code-smells.md +256 -0
- package/embedded-knowledge/domains/roger-reviewer/testability-code-smells.md +67 -0
- package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
- package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
- package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
- package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
- package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
- package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
- package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
- package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
- package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
- package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
- package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
- package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
- package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
- package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
- package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
- package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
- package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
- package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
- package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
- package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
- package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
- package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
- package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
- package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
- package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
- package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
- package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
- package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
- package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
- package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
- package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
- package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
- package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
- package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
- package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
- package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
- package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +146 -0
- package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
- package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
- package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
- package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
- package/embedded-knowledge/indexes/domain-catalog.json +106 -0
- package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
- package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
- package/embedded-knowledge/indexes/tags/access-control.json +1 -0
- package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
- package/embedded-knowledge/indexes/tags/actions.json +1 -0
- package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/advanced.json +1 -0
- package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
- package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
- package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
- package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
- package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
- package/embedded-knowledge/indexes/tags/analytics.json +1 -0
- package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
- package/embedded-knowledge/indexes/tags/api-design.json +1 -0
- package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
- package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
- package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
- package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
- package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
- package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
- package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
- package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
- package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
- package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
- package/embedded-knowledge/indexes/tags/api.json +1 -0
- package/embedded-knowledge/indexes/tags/architecture.json +1 -0
- package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
- package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
- package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
- package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
- package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
- package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
- package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
- package/embedded-knowledge/indexes/tags/binding.json +1 -0
- package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/blocks.json +1 -0
- package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
- package/embedded-knowledge/indexes/tags/branching.json +1 -0
- package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
- package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
- package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
- package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
- package/embedded-knowledge/indexes/tags/business-process.json +1 -0
- package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
- package/embedded-knowledge/indexes/tags/caching.json +1 -0
- package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/case.json +1 -0
- package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
- package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
- package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
- package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
- package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
- package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
- package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
- package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
- package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
- package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
- package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/code-style.json +1 -0
- package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
- package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
- package/embedded-knowledge/indexes/tags/comments.json +1 -0
- package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
- package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
- package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
- package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
- package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
- package/embedded-knowledge/indexes/tags/conditional.json +1 -0
- package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
- package/embedded-knowledge/indexes/tags/consistency.json +1 -0
- package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
- package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
- package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
- package/embedded-knowledge/indexes/tags/correlation.json +1 -0
- package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
- package/embedded-knowledge/indexes/tags/data-access.json +1 -0
- package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
- package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
- package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
- package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
- package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
- package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
- package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/database.json +1 -0
- package/embedded-knowledge/indexes/tags/debugging.json +1 -0
- package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
- package/embedded-knowledge/indexes/tags/declaration.json +1 -0
- package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
- package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
- package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
- package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
- package/embedded-knowledge/indexes/tags/deployment.json +1 -0
- package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
- package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
- package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
- package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
- package/embedded-knowledge/indexes/tags/documentation.json +1 -0
- package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
- package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
- package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
- package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
- package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
- package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
- package/embedded-knowledge/indexes/tags/error-text.json +1 -0
- package/embedded-knowledge/indexes/tags/etag.json +1 -0
- package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
- package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
- package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
- package/embedded-knowledge/indexes/tags/events.json +1 -0
- package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
- package/embedded-knowledge/indexes/tags/expressions.json +1 -0
- package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
- package/embedded-knowledge/indexes/tags/extensions.json +1 -0
- package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
- package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
- package/embedded-knowledge/indexes/tags/field-control.json +1 -0
- package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
- package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
- package/embedded-knowledge/indexes/tags/field-state.json +1 -0
- package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
- package/embedded-knowledge/indexes/tags/fields.json +1 -0
- package/embedded-knowledge/indexes/tags/filtering.json +1 -0
- package/embedded-knowledge/indexes/tags/filters.json +1 -0
- package/embedded-knowledge/indexes/tags/formatting.json +1 -0
- package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
- package/embedded-knowledge/indexes/tags/http-status.json +1 -0
- package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/implementation.json +1 -0
- package/embedded-knowledge/indexes/tags/indentation.json +1 -0
- package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
- package/embedded-knowledge/indexes/tags/indexing.json +1 -0
- package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
- package/embedded-knowledge/indexes/tags/integration.json +1 -0
- package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
- package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
- package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
- package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
- package/embedded-knowledge/indexes/tags/isolation.json +1 -0
- package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
- package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
- package/embedded-knowledge/indexes/tags/keywords.json +1 -0
- package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
- package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
- package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
- package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
- package/embedded-knowledge/indexes/tags/localization.json +1 -0
- package/embedded-knowledge/indexes/tags/logging.json +1 -0
- package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
- package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
- package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
- package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/memory.json +1 -0
- package/embedded-knowledge/indexes/tags/message-design.json +1 -0
- package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
- package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
- package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
- package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
- package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
- package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
- package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
- package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
- package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
- package/embedded-knowledge/indexes/tags/naming.json +1 -0
- package/embedded-knowledge/indexes/tags/navigation.json +1 -0
- package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
- package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
- package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
- package/embedded-knowledge/indexes/tags/no-series.json +1 -0
- package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
- package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
- package/embedded-knowledge/indexes/tags/odata.json +1 -0
- package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
- package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
- package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
- package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
- package/embedded-knowledge/indexes/tags/operators.json +1 -0
- package/embedded-knowledge/indexes/tags/optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/order.json +1 -0
- package/embedded-knowledge/indexes/tags/organization.json +1 -0
- package/embedded-knowledge/indexes/tags/pages.json +1 -0
- package/embedded-knowledge/indexes/tags/parameters.json +1 -0
- package/embedded-knowledge/indexes/tags/patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/performance.json +1 -0
- package/embedded-knowledge/indexes/tags/placement.json +1 -0
- package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
- package/embedded-knowledge/indexes/tags/posting.json +1 -0
- package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
- package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
- package/embedded-knowledge/indexes/tags/privacy.json +1 -0
- package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
- package/embedded-knowledge/indexes/tags/production.json +1 -0
- package/embedded-knowledge/indexes/tags/productivity.json +1 -0
- package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
- package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
- package/embedded-knowledge/indexes/tags/ranges.json +1 -0
- package/embedded-knowledge/indexes/tags/readability.json +1 -0
- package/embedded-knowledge/indexes/tags/record-access.json +1 -0
- package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
- package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
- package/embedded-knowledge/indexes/tags/reference.json +1 -0
- package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
- package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
- package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
- package/embedded-knowledge/indexes/tags/runtime.json +1 -0
- package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
- package/embedded-knowledge/indexes/tags/security.json +1 -0
- package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
- package/embedded-knowledge/indexes/tags/serialization.json +1 -0
- package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
- package/embedded-knowledge/indexes/tags/session.json +1 -0
- package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
- package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
- package/embedded-knowledge/indexes/tags/sift.json +1 -0
- package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
- package/embedded-knowledge/indexes/tags/spacing.json +1 -0
- package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
- package/embedded-knowledge/indexes/tags/standards.json +1 -0
- package/embedded-knowledge/indexes/tags/statements.json +1 -0
- package/embedded-knowledge/indexes/tags/streaming.json +1 -0
- package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
- package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
- package/embedded-knowledge/indexes/tags/structure.json +1 -0
- package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
- package/embedded-knowledge/indexes/tags/switch.json +1 -0
- package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
- package/embedded-knowledge/indexes/tags/syntax.json +1 -0
- package/embedded-knowledge/indexes/tags/systemid.json +1 -0
- package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
- package/embedded-knowledge/indexes/tags/table-events.json +1 -0
- package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
- package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
- package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
- package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
- package/embedded-knowledge/indexes/tags/template-method.json +1 -0
- package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
- package/embedded-knowledge/indexes/tags/testfield.json +1 -0
- package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
- package/embedded-knowledge/indexes/tags/triggers.json +1 -0
- package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
- package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
- package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
- package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
- package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
- package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
- package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
- package/embedded-knowledge/indexes/tags/validation.json +1 -0
- package/embedded-knowledge/indexes/tags/variables.json +1 -0
- package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
- package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
- package/embedded-knowledge/indexes/tags/web-services.json +1 -0
- package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
- package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
- package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
- package/embedded-knowledge/indexes/tags/workspace.json +1 -0
- package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
- package/embedded-knowledge/indexes/topic-relationships.json +128 -0
- package/embedded-knowledge/methodologies/index.json +81 -0
- package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
- package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
- package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
- package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
- package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
- package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
- package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
- package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
- package/embedded-knowledge/methodologies/phases/performance.md +211 -0
- package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
- package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
- package/embedded-knowledge/methodologies/phases/verification.md +146 -0
- package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
- package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
- package/embedded-knowledge/methodologies/workflows/proposal-review-workflow.md +535 -0
- package/embedded-knowledge/specialists/alex-architect.md +305 -0
- package/embedded-knowledge/specialists/casey-copilot.md +314 -0
- package/embedded-knowledge/specialists/chris-config.md +226 -0
- package/embedded-knowledge/specialists/dean-debug.md +365 -0
- package/embedded-knowledge/specialists/eva-errors.md +291 -0
- package/embedded-knowledge/specialists/jordan-bridge.md +291 -0
- package/embedded-knowledge/specialists/logan-legacy.md +265 -0
- package/embedded-knowledge/specialists/maya-mentor.md +299 -0
- package/embedded-knowledge/specialists/morgan-market.md +281 -0
- package/embedded-knowledge/specialists/parker-pragmatic.md +564 -0
- package/embedded-knowledge/specialists/quinn-tester.md +323 -0
- package/embedded-knowledge/specialists/roger-reviewer.md +317 -0
- package/embedded-knowledge/specialists/sam-coder.md +342 -0
- package/embedded-knowledge/specialists/seth-security.md +290 -0
- package/embedded-knowledge/specialists/taylor-docs.md +312 -0
- package/embedded-knowledge/specialists/uma-ux.md +291 -0
- package/package.json +82 -0
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
# Case Statement Multiple Conditions and Ranges - Code Samples
|
|
2
|
+
|
|
3
|
+
## Multiple Value Conditions
|
|
4
|
+
|
|
5
|
+
```al
|
|
6
|
+
codeunit 50102 "Case Multiple Conditions"
|
|
7
|
+
{
|
|
8
|
+
// Example 1: Multiple discrete values for same action
|
|
9
|
+
procedure GetBusinessHoursMessage(DayOfWeek: Integer; Hour: Integer): Text
|
|
10
|
+
begin
|
|
11
|
+
case DayOfWeek of
|
|
12
|
+
1, 2, 3, 4, 5: // Monday through Friday
|
|
13
|
+
case Hour of
|
|
14
|
+
8, 9, 10, 11, 12, 13, 14, 15, 16, 17: // 8 AM to 5 PM
|
|
15
|
+
exit('We are open - business hours');
|
|
16
|
+
18, 19: // 6 PM to 7 PM
|
|
17
|
+
exit('Extended hours - limited service');
|
|
18
|
+
else
|
|
19
|
+
exit('We are closed - business day but outside hours');
|
|
20
|
+
end;
|
|
21
|
+
6: // Saturday
|
|
22
|
+
case Hour of
|
|
23
|
+
9, 10, 11, 12, 13: // 9 AM to 1 PM
|
|
24
|
+
exit('Saturday hours - limited service');
|
|
25
|
+
else
|
|
26
|
+
exit('We are closed - Saturday outside hours');
|
|
27
|
+
end;
|
|
28
|
+
7: // Sunday
|
|
29
|
+
exit('We are closed - Sunday');
|
|
30
|
+
end;
|
|
31
|
+
end;
|
|
32
|
+
|
|
33
|
+
// Example 2: Multiple country codes for regional processing
|
|
34
|
+
procedure GetRegionalTaxRate(CountryCode: Code[10]): Decimal
|
|
35
|
+
begin
|
|
36
|
+
case CountryCode of
|
|
37
|
+
'US', 'CA', 'MX': // North America
|
|
38
|
+
exit(CalculateNorthAmericaTax());
|
|
39
|
+
'GB', 'FR', 'DE', 'IT', 'ES', 'NL', 'BE': // Western Europe
|
|
40
|
+
exit(CalculateEUTax());
|
|
41
|
+
'JP', 'CN', 'KR', 'SG', 'AU': // Asia Pacific
|
|
42
|
+
exit(CalculateAsiaPacificTax());
|
|
43
|
+
'BR', 'AR', 'CL', 'CO': // South America
|
|
44
|
+
exit(CalculateSouthAmericaTax());
|
|
45
|
+
else
|
|
46
|
+
exit(CalculateDefaultTax());
|
|
47
|
+
end;
|
|
48
|
+
end;
|
|
49
|
+
|
|
50
|
+
// Example 3: Multiple product categories with shared logic
|
|
51
|
+
procedure ApplyCategoryDiscount(ItemCategoryCode: Code[20]): Decimal
|
|
52
|
+
var
|
|
53
|
+
DiscountPercent: Decimal;
|
|
54
|
+
begin
|
|
55
|
+
case ItemCategoryCode of
|
|
56
|
+
'ELECTRONICS', 'COMPUTERS', 'SOFTWARE':
|
|
57
|
+
DiscountPercent := 5.0; // Technology discount
|
|
58
|
+
'CLOTHING', 'SHOES', 'ACCESSORIES':
|
|
59
|
+
DiscountPercent := 15.0; // Fashion discount
|
|
60
|
+
'BOOKS', 'EDUCATION', 'TRAINING':
|
|
61
|
+
DiscountPercent := 10.0; // Educational discount
|
|
62
|
+
'FOOD', 'BEVERAGE', 'ORGANIC':
|
|
63
|
+
DiscountPercent := 8.0; // Food & beverage discount
|
|
64
|
+
else
|
|
65
|
+
DiscountPercent := 0.0; // No category discount
|
|
66
|
+
end;
|
|
67
|
+
exit(DiscountPercent);
|
|
68
|
+
end;
|
|
69
|
+
|
|
70
|
+
local procedure CalculateNorthAmericaTax(): Decimal
|
|
71
|
+
begin
|
|
72
|
+
exit(7.5); // Example rate
|
|
73
|
+
end;
|
|
74
|
+
|
|
75
|
+
local procedure CalculateEUTax(): Decimal
|
|
76
|
+
begin
|
|
77
|
+
exit(20.0); // Example VAT rate
|
|
78
|
+
end;
|
|
79
|
+
|
|
80
|
+
local procedure CalculateAsiaPacificTax(): Decimal
|
|
81
|
+
begin
|
|
82
|
+
exit(10.0); // Example rate
|
|
83
|
+
end;
|
|
84
|
+
|
|
85
|
+
local procedure CalculateSouthAmericaTax(): Decimal
|
|
86
|
+
begin
|
|
87
|
+
exit(12.0); // Example rate
|
|
88
|
+
end;
|
|
89
|
+
|
|
90
|
+
local procedure CalculateDefaultTax(): Decimal
|
|
91
|
+
begin
|
|
92
|
+
exit(5.0); // Default rate
|
|
93
|
+
end;
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Range-Based Conditions
|
|
98
|
+
|
|
99
|
+
```al
|
|
100
|
+
codeunit 50103 "Case Range Conditions"
|
|
101
|
+
{
|
|
102
|
+
// Example 1: Quantity-based pricing tiers
|
|
103
|
+
procedure CalculateVolumeDiscount(Quantity: Decimal): Decimal
|
|
104
|
+
var
|
|
105
|
+
DiscountPercent: Decimal;
|
|
106
|
+
begin
|
|
107
|
+
case Quantity of
|
|
108
|
+
0:
|
|
109
|
+
DiscountPercent := 0.0; // No discount for zero quantity
|
|
110
|
+
1..9:
|
|
111
|
+
DiscountPercent := 0.0; // No volume discount
|
|
112
|
+
10..49:
|
|
113
|
+
DiscountPercent := 5.0; // Small volume discount
|
|
114
|
+
50..99:
|
|
115
|
+
DiscountPercent := 10.0; // Medium volume discount
|
|
116
|
+
100..499:
|
|
117
|
+
DiscountPercent := 15.0; // Large volume discount
|
|
118
|
+
500..999:
|
|
119
|
+
DiscountPercent := 20.0; // Enterprise discount
|
|
120
|
+
else
|
|
121
|
+
DiscountPercent := 25.0; // Maximum discount for 1000+
|
|
122
|
+
end;
|
|
123
|
+
exit(DiscountPercent);
|
|
124
|
+
end;
|
|
125
|
+
|
|
126
|
+
// Example 2: Amount-based shipping calculations
|
|
127
|
+
procedure CalculateShippingCost(OrderAmount: Decimal; Weight: Decimal): Decimal
|
|
128
|
+
var
|
|
129
|
+
ShippingCost: Decimal;
|
|
130
|
+
begin
|
|
131
|
+
// First check order amount for free shipping
|
|
132
|
+
case OrderAmount of
|
|
133
|
+
100..999.99:
|
|
134
|
+
ShippingCost := CalculateWeightBasedShipping(Weight) * 0.5; // 50% discount
|
|
135
|
+
1000..9999.99:
|
|
136
|
+
ShippingCost := 0; // Free shipping
|
|
137
|
+
else
|
|
138
|
+
ShippingCost := CalculateWeightBasedShipping(Weight); // Full rate
|
|
139
|
+
end;
|
|
140
|
+
|
|
141
|
+
exit(ShippingCost);
|
|
142
|
+
end;
|
|
143
|
+
|
|
144
|
+
// Example 3: Date-based seasonal pricing
|
|
145
|
+
procedure GetSeasonalMultiplier(OrderDate: Date): Decimal
|
|
146
|
+
var
|
|
147
|
+
Month: Integer;
|
|
148
|
+
Multiplier: Decimal;
|
|
149
|
+
begin
|
|
150
|
+
Month := Date2DMY(OrderDate, 2); // Extract month
|
|
151
|
+
|
|
152
|
+
case Month of
|
|
153
|
+
12, 1, 2: // Winter months
|
|
154
|
+
Multiplier := 1.1; // 10% winter surcharge
|
|
155
|
+
3, 4, 5: // Spring months
|
|
156
|
+
Multiplier := 1.0; // Standard pricing
|
|
157
|
+
6, 7, 8: // Summer months
|
|
158
|
+
Multiplier := 1.15; // 15% peak season surcharge
|
|
159
|
+
9, 10, 11: // Fall months
|
|
160
|
+
Multiplier := 0.95; // 5% off-season discount
|
|
161
|
+
end;
|
|
162
|
+
|
|
163
|
+
exit(Multiplier);
|
|
164
|
+
end;
|
|
165
|
+
|
|
166
|
+
// Example 4: Age-based service categories
|
|
167
|
+
procedure DetermineServiceLevel(CustomerAge: Integer): Text
|
|
168
|
+
begin
|
|
169
|
+
case CustomerAge of
|
|
170
|
+
0..17:
|
|
171
|
+
exit('Youth Service - Parental approval required');
|
|
172
|
+
18..24:
|
|
173
|
+
exit('Student Service - Education discounts available');
|
|
174
|
+
25..54:
|
|
175
|
+
exit('Standard Service - Full access');
|
|
176
|
+
55..64:
|
|
177
|
+
exit('Pre-Senior Service - Early retirement benefits');
|
|
178
|
+
65..150:
|
|
179
|
+
exit('Senior Service - Senior citizen discounts');
|
|
180
|
+
else
|
|
181
|
+
exit('Invalid Age - Please verify information');
|
|
182
|
+
end;
|
|
183
|
+
end;
|
|
184
|
+
|
|
185
|
+
// Example 5: Complex range conditions with business logic
|
|
186
|
+
procedure AssignSalesTerritory(PostalCode: Code[10]): Code[20]
|
|
187
|
+
var
|
|
188
|
+
NumericCode: Integer;
|
|
189
|
+
begin
|
|
190
|
+
// Convert postal code to numeric for range evaluation
|
|
191
|
+
if Evaluate(NumericCode, CopyStr(PostalCode, 1, 5)) then
|
|
192
|
+
case NumericCode of
|
|
193
|
+
00001..09999:
|
|
194
|
+
exit('NORTHEAST');
|
|
195
|
+
10000..19999:
|
|
196
|
+
exit('MID_ATLANTIC');
|
|
197
|
+
20000..29999:
|
|
198
|
+
exit('SOUTHEAST');
|
|
199
|
+
30000..39999:
|
|
200
|
+
exit('SOUTH_CENTRAL');
|
|
201
|
+
40000..49999:
|
|
202
|
+
exit('MIDWEST');
|
|
203
|
+
50000..59999:
|
|
204
|
+
exit('MOUNTAIN_WEST');
|
|
205
|
+
60000..79999:
|
|
206
|
+
exit('SOUTHWEST');
|
|
207
|
+
80000..99999:
|
|
208
|
+
exit('WEST_COAST');
|
|
209
|
+
else
|
|
210
|
+
exit('INTERNATIONAL');
|
|
211
|
+
end
|
|
212
|
+
else
|
|
213
|
+
exit('UNKNOWN'); // Non-numeric postal codes
|
|
214
|
+
end;
|
|
215
|
+
|
|
216
|
+
local procedure CalculateWeightBasedShipping(Weight: Decimal): Decimal
|
|
217
|
+
begin
|
|
218
|
+
case Weight of
|
|
219
|
+
0..1:
|
|
220
|
+
exit(5.99);
|
|
221
|
+
1.01..5:
|
|
222
|
+
exit(9.99);
|
|
223
|
+
5.01..10:
|
|
224
|
+
exit(14.99);
|
|
225
|
+
10.01..25:
|
|
226
|
+
exit(19.99);
|
|
227
|
+
else
|
|
228
|
+
exit(29.99);
|
|
229
|
+
end;
|
|
230
|
+
end;
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Advanced Multiple Condition Patterns
|
|
235
|
+
|
|
236
|
+
```al
|
|
237
|
+
codeunit 50104 "Advanced Case Patterns"
|
|
238
|
+
{
|
|
239
|
+
// Example 1: Combining multiple conditions with calculated values
|
|
240
|
+
procedure DetermineCustomerRisk(CreditLimit: Decimal; DaysOverdue: Integer; PaymentHistory: Text): Text
|
|
241
|
+
var
|
|
242
|
+
RiskScore: Integer;
|
|
243
|
+
begin
|
|
244
|
+
// Calculate composite risk score
|
|
245
|
+
RiskScore := 0;
|
|
246
|
+
|
|
247
|
+
case CreditLimit of
|
|
248
|
+
0..999:
|
|
249
|
+
RiskScore += 3; // High risk - low credit limit
|
|
250
|
+
1000..4999:
|
|
251
|
+
RiskScore += 2; // Medium risk
|
|
252
|
+
5000..19999:
|
|
253
|
+
RiskScore += 1; // Low risk
|
|
254
|
+
else
|
|
255
|
+
RiskScore += 0; // Lowest risk - high credit limit
|
|
256
|
+
end;
|
|
257
|
+
|
|
258
|
+
case DaysOverdue of
|
|
259
|
+
0:
|
|
260
|
+
RiskScore += 0; // No overdue amount
|
|
261
|
+
1..30:
|
|
262
|
+
RiskScore += 1; // Slightly overdue
|
|
263
|
+
31..60:
|
|
264
|
+
RiskScore += 2; // Moderately overdue
|
|
265
|
+
61..90:
|
|
266
|
+
RiskScore += 3; // Seriously overdue
|
|
267
|
+
else
|
|
268
|
+
RiskScore += 4; // Severely overdue
|
|
269
|
+
end;
|
|
270
|
+
|
|
271
|
+
case PaymentHistory of
|
|
272
|
+
'EXCELLENT', 'GOOD':
|
|
273
|
+
RiskScore -= 1; // Reduce risk for good history
|
|
274
|
+
'POOR', 'TERRIBLE':
|
|
275
|
+
RiskScore += 2; // Increase risk for poor history
|
|
276
|
+
end;
|
|
277
|
+
|
|
278
|
+
// Final risk assessment based on composite score
|
|
279
|
+
case RiskScore of
|
|
280
|
+
0..2:
|
|
281
|
+
exit('LOW_RISK');
|
|
282
|
+
3..4:
|
|
283
|
+
exit('MEDIUM_RISK');
|
|
284
|
+
5..7:
|
|
285
|
+
exit('HIGH_RISK');
|
|
286
|
+
else
|
|
287
|
+
exit('EXTREME_RISK');
|
|
288
|
+
end;
|
|
289
|
+
end;
|
|
290
|
+
|
|
291
|
+
// Example 2: Multiple condition matching with enum combinations
|
|
292
|
+
procedure GetApprovalWorkflow(Amount: Decimal; Department: Option Finance,Sales,Operations,IT): Code[20]
|
|
293
|
+
var
|
|
294
|
+
AmountTier: Integer;
|
|
295
|
+
WorkflowCode: Code[20];
|
|
296
|
+
begin
|
|
297
|
+
// Determine amount tier
|
|
298
|
+
case Amount of
|
|
299
|
+
0..999.99:
|
|
300
|
+
AmountTier := 1;
|
|
301
|
+
1000..4999.99:
|
|
302
|
+
AmountTier := 2;
|
|
303
|
+
5000..24999.99:
|
|
304
|
+
AmountTier := 3;
|
|
305
|
+
else
|
|
306
|
+
AmountTier := 4;
|
|
307
|
+
end;
|
|
308
|
+
|
|
309
|
+
// Determine workflow based on department and amount tier
|
|
310
|
+
case Department of
|
|
311
|
+
Department::Finance:
|
|
312
|
+
case AmountTier of
|
|
313
|
+
1: WorkflowCode := 'FIN_STANDARD';
|
|
314
|
+
2: WorkflowCode := 'FIN_MANAGER';
|
|
315
|
+
3: WorkflowCode := 'FIN_DIRECTOR';
|
|
316
|
+
4: WorkflowCode := 'FIN_CFO';
|
|
317
|
+
end;
|
|
318
|
+
Department::Sales:
|
|
319
|
+
case AmountTier of
|
|
320
|
+
1, 2: WorkflowCode := 'SALES_STANDARD';
|
|
321
|
+
3: WorkflowCode := 'SALES_MANAGER';
|
|
322
|
+
4: WorkflowCode := 'SALES_VP';
|
|
323
|
+
end;
|
|
324
|
+
Department::Operations:
|
|
325
|
+
case AmountTier of
|
|
326
|
+
1: WorkflowCode := 'OPS_AUTO';
|
|
327
|
+
2, 3: WorkflowCode := 'OPS_MANAGER';
|
|
328
|
+
4: WorkflowCode := 'OPS_DIRECTOR';
|
|
329
|
+
end;
|
|
330
|
+
Department::IT:
|
|
331
|
+
case AmountTier of
|
|
332
|
+
1, 2: WorkflowCode := 'IT_STANDARD';
|
|
333
|
+
3, 4: WorkflowCode := 'IT_DIRECTOR';
|
|
334
|
+
end;
|
|
335
|
+
end;
|
|
336
|
+
|
|
337
|
+
exit(WorkflowCode);
|
|
338
|
+
end;
|
|
339
|
+
|
|
340
|
+
// Example 3: Dynamic range calculations
|
|
341
|
+
procedure CalculateDynamicPricing(BasePrice: Decimal; CustomerType: Code[10]; OrderDate: Date): Decimal
|
|
342
|
+
var
|
|
343
|
+
PriceMultiplier: Decimal;
|
|
344
|
+
DaysFromToday: Integer;
|
|
345
|
+
FinalPrice: Decimal;
|
|
346
|
+
begin
|
|
347
|
+
PriceMultiplier := 1.0; // Start with base multiplier
|
|
348
|
+
DaysFromToday := OrderDate - Today;
|
|
349
|
+
|
|
350
|
+
// Customer type adjustments
|
|
351
|
+
case CustomerType of
|
|
352
|
+
'GOLD', 'PLATINUM':
|
|
353
|
+
PriceMultiplier *= 0.85; // 15% discount
|
|
354
|
+
'SILVER', 'PREFERRED':
|
|
355
|
+
PriceMultiplier *= 0.90; // 10% discount
|
|
356
|
+
'BRONZE', 'STANDARD':
|
|
357
|
+
PriceMultiplier *= 1.0; // No discount
|
|
358
|
+
'NEW', 'TRIAL':
|
|
359
|
+
PriceMultiplier *= 1.05; // 5% markup
|
|
360
|
+
else
|
|
361
|
+
PriceMultiplier *= 1.10; // 10% markup for unknown types
|
|
362
|
+
end;
|
|
363
|
+
|
|
364
|
+
// Delivery date adjustments
|
|
365
|
+
case DaysFromToday of
|
|
366
|
+
-999..-1: // Rush orders (past due)
|
|
367
|
+
PriceMultiplier *= 1.25; // 25% rush charge
|
|
368
|
+
0..7: // Within a week
|
|
369
|
+
PriceMultiplier *= 1.10; // 10% expedite charge
|
|
370
|
+
8..30: // Standard delivery
|
|
371
|
+
PriceMultiplier *= 1.0; // No adjustment
|
|
372
|
+
31..90: // Future delivery
|
|
373
|
+
PriceMultiplier *= 0.95; // 5% discount for advance orders
|
|
374
|
+
else // Very far future
|
|
375
|
+
PriceMultiplier *= 0.90; // 10% discount for long advance orders
|
|
376
|
+
end;
|
|
377
|
+
|
|
378
|
+
FinalPrice := BasePrice * PriceMultiplier;
|
|
379
|
+
exit(FinalPrice);
|
|
380
|
+
end;
|
|
381
|
+
}
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
Related atomic topic: Case Statement Multiple Conditions and Ranges
|
|
385
|
+
Knowledge reference: al-fundamentals-index.json#case-statements-advanced
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Case Statement Syntax Structure Examples
|
|
2
|
+
|
|
3
|
+
## Basic Case Statement
|
|
4
|
+
```al
|
|
5
|
+
procedure ProcessDocumentType(DocumentType: Enum "Document Type")
|
|
6
|
+
begin
|
|
7
|
+
case DocumentType of
|
|
8
|
+
DocumentType::Quote:
|
|
9
|
+
ProcessQuote();
|
|
10
|
+
DocumentType::Order:
|
|
11
|
+
ProcessOrder();
|
|
12
|
+
DocumentType::"Credit Memo":
|
|
13
|
+
ProcessCreditMemo();
|
|
14
|
+
else
|
|
15
|
+
Error('Unsupported document type: %1', DocumentType);
|
|
16
|
+
end;
|
|
17
|
+
end;
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Case with Multiple Values
|
|
21
|
+
```al
|
|
22
|
+
procedure GetDocumentStatus(Status: Integer): Text
|
|
23
|
+
begin
|
|
24
|
+
case Status of
|
|
25
|
+
1, 2, 3:
|
|
26
|
+
exit('Draft');
|
|
27
|
+
4, 5:
|
|
28
|
+
exit('Pending Approval');
|
|
29
|
+
6:
|
|
30
|
+
exit('Approved');
|
|
31
|
+
else
|
|
32
|
+
exit('Unknown');
|
|
33
|
+
end;
|
|
34
|
+
end;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Case with Ranges
|
|
38
|
+
```al
|
|
39
|
+
procedure CategorizeAmount(Amount: Decimal): Text
|
|
40
|
+
begin
|
|
41
|
+
case true of
|
|
42
|
+
(Amount >= 0) and (Amount <= 1000):
|
|
43
|
+
exit('Small');
|
|
44
|
+
(Amount > 1000) and (Amount <= 10000):
|
|
45
|
+
exit('Medium');
|
|
46
|
+
Amount > 10000:
|
|
47
|
+
exit('Large');
|
|
48
|
+
else
|
|
49
|
+
exit('Invalid');
|
|
50
|
+
end;
|
|
51
|
+
end;
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Complex Case Logic
|
|
55
|
+
```al
|
|
56
|
+
procedure HandleInventoryPosting(ItemType: Enum "Item Type"; LocationCode: Code[10])
|
|
57
|
+
begin
|
|
58
|
+
case ItemType of
|
|
59
|
+
ItemType::Inventory:
|
|
60
|
+
begin
|
|
61
|
+
if LocationCode <> '' then
|
|
62
|
+
PostToLocation(LocationCode)
|
|
63
|
+
else
|
|
64
|
+
PostToDefaultLocation();
|
|
65
|
+
end;
|
|
66
|
+
ItemType::Service:
|
|
67
|
+
PostServiceItem();
|
|
68
|
+
ItemType::"Non-Inventory":
|
|
69
|
+
LogNonInventoryTransaction();
|
|
70
|
+
end;
|
|
71
|
+
end;
|
|
72
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# FieldError Syntax Usage Examples
|
|
2
|
+
|
|
3
|
+
## Basic FieldError Usage
|
|
4
|
+
```al
|
|
5
|
+
trigger OnValidate()
|
|
6
|
+
begin
|
|
7
|
+
if Quantity <= 0 then
|
|
8
|
+
FieldError(Quantity, 'Quantity must be greater than zero.');
|
|
9
|
+
end;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## FieldError with Business Context
|
|
13
|
+
```al
|
|
14
|
+
trigger OnValidate()
|
|
15
|
+
begin
|
|
16
|
+
if ("Starting Date" > "Ending Date") and ("Ending Date" <> 0D) then
|
|
17
|
+
FieldError("Starting Date", 'Starting date cannot be later than ending date.');
|
|
18
|
+
end;
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## FieldError in Complex Validation
|
|
22
|
+
```al
|
|
23
|
+
procedure ValidateInventoryPosting()
|
|
24
|
+
var
|
|
25
|
+
Location: Record Location;
|
|
26
|
+
begin
|
|
27
|
+
if "Location Code" <> '' then begin
|
|
28
|
+
if not Location.Get("Location Code") then
|
|
29
|
+
FieldError("Location Code", 'Location does not exist.');
|
|
30
|
+
|
|
31
|
+
if not Location."Require Shipment" and ("Bin Code" = '') then
|
|
32
|
+
FieldError("Bin Code", 'Bin code is required for this location.');
|
|
33
|
+
end;
|
|
34
|
+
end;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## FieldError with User Guidance
|
|
38
|
+
```al
|
|
39
|
+
trigger OnValidate()
|
|
40
|
+
begin
|
|
41
|
+
Customer.SetRange("No.", "Customer No.");
|
|
42
|
+
if not Customer.FindFirst() then
|
|
43
|
+
FieldError("Customer No.", 'Customer not found. Please select a valid customer from the lookup.');
|
|
44
|
+
|
|
45
|
+
if Customer.Blocked <> Customer.Blocked::" " then
|
|
46
|
+
FieldError("Customer No.", StrSubstNo('Customer %1 is blocked for %2.', Customer."No.", Customer.Blocked));
|
|
47
|
+
end;
|
|
48
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# TestField Basic Syntax Examples
|
|
2
|
+
|
|
3
|
+
## Simple Field Validation
|
|
4
|
+
```al
|
|
5
|
+
procedure ValidateCustomerData()
|
|
6
|
+
var
|
|
7
|
+
Customer: Record Customer;
|
|
8
|
+
begin
|
|
9
|
+
Customer.TestField("No.");
|
|
10
|
+
Customer.TestField(Name);
|
|
11
|
+
Customer.TestField("Customer Posting Group");
|
|
12
|
+
end;
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Field Value Validation
|
|
16
|
+
```al
|
|
17
|
+
procedure ValidateItemType()
|
|
18
|
+
var
|
|
19
|
+
Item: Record Item;
|
|
20
|
+
begin
|
|
21
|
+
Item.TestField(Type, Item.Type::Inventory);
|
|
22
|
+
Item.TestField("Inventory Posting Group");
|
|
23
|
+
end;
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Multiple Field Validation
|
|
27
|
+
```al
|
|
28
|
+
procedure ValidateVendorSetup()
|
|
29
|
+
var
|
|
30
|
+
Vendor: Record Vendor;
|
|
31
|
+
begin
|
|
32
|
+
Vendor.TestField("No.");
|
|
33
|
+
Vendor.TestField(Name);
|
|
34
|
+
Vendor.TestField("Vendor Posting Group");
|
|
35
|
+
Vendor.TestField("Payment Terms Code");
|
|
36
|
+
end;
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Conditional Field Validation
|
|
40
|
+
```al
|
|
41
|
+
procedure ValidateCustomerBalance()
|
|
42
|
+
var
|
|
43
|
+
Customer: Record Customer;
|
|
44
|
+
begin
|
|
45
|
+
Customer.CalcFields(Balance);
|
|
46
|
+
if Customer."Credit Limit (LCY)" > 0 then
|
|
47
|
+
Customer.TestField(Balance);
|
|
48
|
+
end;
|
|
49
|
+
```
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "TestField Basic Syntax and Usage"
|
|
3
|
+
domain: "maya-mentor"
|
|
4
|
+
difficulty: "beginner"
|
|
5
|
+
bc_versions: "14+"
|
|
6
|
+
tags: ["validation", "fields", "error-handling", "data-integrity"]
|
|
7
|
+
prerequisites: ["record-variables", "field-access"]
|
|
8
|
+
samples: "samples/testfield-basic-syntax.md"
|
|
9
|
+
---
|
|
10
|
+
# TestField Basic Syntax and Usage
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
TestField validates that a field contains a value before proceeding with business logic. It throws an error if the field is empty, preventing operations that require valid data. Essential for data integrity in BC applications.
|
|
15
|
+
|
|
16
|
+
**Core Pattern**: `Record.FieldName.TestField()` - Validates field has value, throws error if empty.
|
|
17
|
+
|
|
18
|
+
## Basic Syntax Forms
|
|
19
|
+
|
|
20
|
+
### Simple Value Validation
|
|
21
|
+
TestField validates that a field contains a non-empty value. Called on any field variable, it checks for empty strings, zero dates, or zero numeric values.
|
|
22
|
+
|
|
23
|
+
### Expected Value Validation
|
|
24
|
+
TestField can validate against specific expected values. Pass the expected value as a parameter to verify the field matches exactly.
|
|
25
|
+
|
|
26
|
+
### Variable-Based Expected Values
|
|
27
|
+
Expected values can be stored in variables before TestField validation, enabling dynamic validation scenarios.
|
|
28
|
+
|
|
29
|
+
## Field Type Considerations
|
|
30
|
+
|
|
31
|
+
### Text and Code Fields
|
|
32
|
+
Text fields test for non-empty strings. Empty string ('') triggers validation error.
|
|
33
|
+
|
|
34
|
+
### Option Fields
|
|
35
|
+
Option fields test against specific option values. Commonly used to verify workflow states.
|
|
36
|
+
|
|
37
|
+
### Boolean Fields
|
|
38
|
+
Boolean fields can be tested for specific true/false values to enforce business rules.
|
|
39
|
+
|
|
40
|
+
### Date and DateTime Fields
|
|
41
|
+
Date fields test for non-zero dates. 0D (undefined date) triggers validation error.
|
|
42
|
+
|
|
43
|
+
### Decimal and Integer Fields
|
|
44
|
+
Numeric fields test for non-zero values. Zero values trigger validation error.
|
|
45
|
+
|
|
46
|
+
## Common Usage Patterns
|
|
47
|
+
|
|
48
|
+
### Mandatory Field Validation
|
|
49
|
+
Group related TestField validations to ensure all required fields contain data before processing. Essential for maintaining data integrity in business processes.
|
|
50
|
+
|
|
51
|
+
### Status Verification
|
|
52
|
+
Use TestField with specific option values to verify records are in expected workflow states before proceeding with operations.
|
|
53
|
+
|
|
54
|
+
### Precondition Checks
|
|
55
|
+
Validate all prerequisite field data exists before executing complex business logic. Prevents processing failures and maintains consistent data state.
|
|
56
|
+
|
|
57
|
+
## Best Practices
|
|
58
|
+
|
|
59
|
+
### Field Validation Timing
|
|
60
|
+
Call TestField early in procedures before complex processing begins. This fails fast and provides clear error context.
|
|
61
|
+
|
|
62
|
+
### Logical Grouping
|
|
63
|
+
Group related TestField calls together for related validations. This creates clear validation blocks.
|
|
64
|
+
|
|
65
|
+
### User Experience
|
|
66
|
+
TestField provides system-generated error messages. For better UX, consider custom error handling for complex business rules.
|
|
67
|
+
|