Verdict
Valid comments, mostly already in code
The white text (customer questions + IF/AND/OR logic + reduced vs RFQ) was already there. The red text is the professional-side and Article 47 layer. That layer lives in professionalVatQuestions, article47Classification, exemptFromBelgianReverseCharge, and applyB2BInvoiceRule.
Spec spelling is “project dependant.” Code uses project_dependent. Same three-way choice. Do not rename the enum.
Follow-up on the current PRs
What still needed a patch
The booking wizard and invoices already used vatDecision. If that snapshot was missing or still in RFQ review, payment fell back to calculateVAT, which reverse-charged Belgian B2B even for movable work. That contradicts the red Belgium row.
Admin logic rules could not select the auto-injected article47_immovable field. The professional sees the question; the IF/AND/OR builder did not.
PRs: fixera#247 and fixera-server#219.
Against the screenshots
Each red comment
ServiceConfigurationManagement.tsx. Wizard:Step1BasicInfo.tsx. Schema:professionalVatQuestions.article47Classificationenum. Default immovable.withArticle47ProfessionalQuestion. Yes = immovable, No = movable.resolvePlaceOfSupplyCountryplus tests.applyB2BInvoiceRule. StripecalculateVATnow calls that rule instead of reverse-charging every non-CH/LI/NO/GR B2B.