Bug 633674: [Subcontracting] Subcontracting Type field and enum captions are unclear — rename to Component Supply Method#8073
Conversation
There was a problem hiding this comment.
AL Documentation Audit
Documentation gaps were detected in the following apps:
- Subcontracting-Test: 0% documentation coverage
- Subcontracting: 0% documentation coverage
To generate documentation, run /al-docs init or /al-docs update using GitHub Copilot CLI or Claude Code.
This review is for awareness to help keep documentation in sync with code changes. It is okay to dismiss this request.
…Subcontracting/633674-RenameSubcontractingType
…entSupplyMethod.Enum.al Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…tractingUITest.Codeunit.al Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Transfer header lookup ignores purchase order scopeThe filter Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Transfer order lookup missing purchase order filterThe Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Transfer order lookup missing purchase-order filterThe filter Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
…Subcontracting/633674-RenameSubcontractingType
Public procedure renamed; breaking API change
Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Planning Component field renamed without obsolescenceField 99001524 on Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Production BOM Line field renamed without obsolescenceField 99001522 on Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
…33674-RenameSubcontractingType # Conflicts: # src/Apps/W1/Subcontracting/App/src/Process/Tableextensions/Manufacturing/SubcPlanningCompExt.TableExt.al # src/Apps/W1/Subcontracting/App/src/Process/Tableextensions/Manufacturing/SubcProdBOMLineExt.TableExt.al # src/Apps/W1/Subcontracting/App/src/Process/Tableextensions/Manufacturing/SubcProdOrderCompExt.TableExt.al
…nts page Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reservation quantity hardcoded to zeroThe Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Partial transfer reservation guard removedThe check Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Reservation quantity parameter changed to 0The TransferReservations call changed the quantity parameter from TransferLine."Quantity (Base)" to 0. This will cause incorrect reservation transfers from production order components to transfer lines, potentially leading to reservation data corruption. Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Removed reservation validation allows invalid statesRemoved ComponentHasExcessReservations validation that prevented creating transfer orders when reserved quantity exceeded transfer quantity. This check and the associated error message were deleted, allowing transfers to be created with invalid reservation states that could cause runtime errors later. Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
…Subcontracting/633674-RenameSubcontractingType
| ProductionBOMLine: Record "Production BOM Line"; | ||
| Item: Record Item; | ||
| begin | ||
| // [SCENARIO 624295] Setting Subcontracting Type = Purchase on a Production BOM Line with a Non-Inventory item must succeed (only Transfer is blocked). |
There was a problem hiding this comment.
Comments still use old enum member name 'Purchase'
Scenario comments at lines 86 and 92 say "Component Supply Method = Purchase" and "Setting Component Supply Method to Purchase" — "Purchase" was the old AL member identifier, not the new name "Vendor-Supplied".
Recommendation:
- Update comments to use the new enum member identifier
"Vendor-Supplied"to accurately describe what the test exercises.
| // [SCENARIO 624295] Setting Subcontracting Type = Purchase on a Production BOM Line with a Non-Inventory item must succeed (only Transfer is blocked). | |
| // [SCENARIO 624295] Setting Component Supply Method = Vendor-Supplied on a Production BOM Line with a Non-Inventory item must succeed (only Transfer to Vendor is blocked). | |
| ... | |
| // [WHEN] Setting Component Supply Method to Vendor-Supplied on the BOM line |
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why
| Qty: Decimal; | ||
| begin | ||
| // [SCENARIO] When posting a subcontracting purchase order where the BOM has a component | ||
| // with Subcontracting Type = "Purchase with Service" and Flushing Method = Backward, |
There was a problem hiding this comment.
Stale scenario comments reference old enum caption
Four comments at lines 198, 200, 202, and 237 still reference "Purchase with Service" — the Caption of the deleted Purchase enum value — rather than "Vendor-Supplied", which is the Caption of the replacement "Vendor-Supplied" value. This mismatches the actual code under test.
Recommendation:
- Replace all occurrences of "Purchase with Service" in these scenario comments with "Vendor-Supplied" to reflect the new enum caption.
| // with Subcontracting Type = "Purchase with Service" and Flushing Method = Backward, | |
| // with Component Supply Method = "Vendor-Supplied" and Flushing Method = Backward, | |
| // BOM: 1 component item (Component Supply Method = Vendor-Supplied, linked to Routing Line 100). | |
| // Purchase order has 2 lines: Finished Good (output) + Component (Vendor-Supplied). | |
| // [GIVEN] A production BOM with one component, Component Supply Method = Vendor-Supplied |
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why
| end; | ||
|
|
||
| [Test] | ||
| procedure CheckCustCtrl_PagePlanningComponentSubcontractingType() |
There was a problem hiding this comment.
Test procedure name has redundant 'Component'
CheckCustCtrl_PagePlanningComponentComponentSupplyMethod contains "Component" twice consecutively, making it harder to read and search. This happened because the old suffix "SubcontractingType" was replaced with the full new concept name.
Recommendation:
- Rename to
CheckCustCtrl_PagePlanningCompComponentSupplyMethodorCheckCustCtrl_PagePlanningComponentSupplyMethodto eliminate the duplication.
| procedure CheckCustCtrl_PagePlanningComponentSubcontractingType() | |
| procedure CheckCustCtrl_PagePlanningCompComponentSupplyMethod() |
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why
Public procedures renamed without obsolescence
Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Stale enum value name in scenario commentThe scenario description at line 84 was partially updated and now reads Recommendation:
Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why |
Bug Summary
The Subcontracting Type wording was unclear in Subcontracting pages and enum captions. The labels implied a subcontracting classification instead of the actual intent: how components are supplied to the subcontractor.
Root Cause
User-facing names and captions did not reflect the functional meaning of the field and enum values, which caused confusion in UI interpretation and setup decisions.
Fix
Test Added
Validation
AB#633674