Skip to content

feat(account): turkish MERSIS No / KDV and the "other" category - #23263

Open
jmalnuit wants to merge 5 commits into
masterfrom
feat/f1onManagerTurkiye
Open

jmalnuit wants to merge 5 commits into
masterfrom
feat/f1onManagerTurkiye

Conversation

@jmalnuit

@jmalnuit jmalnuit commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Description

F1 Turkey and e-invoicing compliance, for accounts whose address country is TR
(the API country code; the specification writes "TK", which is Tokelau).
Turkish customers belong to the FR subsidiary.

Account edition form (@ovh-ux/manager-account)

US1 - MERSIS No and KDV

  • MERSIS No (stored in companyNationalIdentificationNumber) shown and mandatory for
    corporation, personalcorporation, association and administration, even without an
    API rule; 16 digits (the API regularExpression wins, the pattern is a fallback).
  • VAT relabelled "Numéro de KDV", 10 digits.
  • "Je dispose d'un numéro de TVA" checkbox: ticked => KDV mandatory; ticked on load
    when a KDV is stored. Form state only, never sent to PUT /me nor /newAccount/rules.

US2 - "Autre" category (reuses MANAGER-22014)

  • The existing "Autre" controls (error under the select, blocked save, company-data
    warning) now also apply to Turkey (OTHER_CATEGORY_COUNTRIES = FR + DROM + TR).
  • These controls are no longer behind the account:fr-e-invoicing-other-category
    flag: they are a lasting rule. The flag now only gates the temporary home reminder.
  • The generic FR validation warning gives way to the company-data warning instead of
    repeating it.

Container (@ovh-ux/manager-container-app)

US2 - "Autre" category reminder (OtherCategoryModal, MANAGER-22014)

  • Also shown to Turkish accounts; still behind account:fr-e-invoicing-other-category.
  • Shown once per browser session (RG1 "at every login") instead of on every page load.
  • Turkish accounts get the same request without the French e-invoicing reform wording
    and its economie.gouv.fr link.

US3 - missing CNIN reminder (MissingCninModal, new)

  • FR/TR accounts carrying the missingCNIN certificate (provisional value, still to be
    confirmed), queued right after OtherCategoryModal.
  • At most once an hour (preference + server time), CTA to the CNIN field of the account
    edition (SIRET search in FR, MERSIS No in TR); the description names the local
    identifier.

Account creation (@ovh-ux/manager-account-creation-app)

US1 - same MERSIS No / KDV / checkbox rules on the details step; the VAT label is
looked up by country for Turkey ("KDV"), Turkey not being a subsidiary.

Impact on MANAGER-22014 (FR)

  • The form controls apply to FR accounts without the feature flag.
  • The home reminder is shown once per session instead of on every page load.

Notes

  • Wording is a draft; only Messages_fr_FR.json is added (translations follow the
    usual flow).
  • Unit tests: container (OtherCategoryModal, MissingCninModal, queue) and
    account-creation (turkeyHelper). The AngularJS edition form module has no spec
    suite; it was tested manually.

Related

  • ref: MANAGER-22369

jmalnuit and others added 3 commits October 1, 2026 15:27
F1 Turkey - accounts whose address country is TR get a mandatory
MERSIS No (16 digits) for company legal forms, the VAT field
relabelled "Numéro de KDV" (10 digits) and an "I have a VAT number"
checkbox that makes the KDV mandatory.

The e-invoicing "Autre" category controls (MANAGER-22014, behind the
account:fr-e-invoicing-other-category flag) now also apply to Turkey,
and the generic FR validation warning gives way to the category switch
warning instead of repeating it.

Signed-off-by: jmalnuit <jonathan.malnuit@ovhcloud.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The "Autre" category reminder (OtherCategoryModal) now also applies to
Turkish accounts. A new missing-CNIN reminder is queued right after it,
for FR/TR accounts carrying the missingCNIN certificate (provisional
value, still to be confirmed): at most once an hour, with a CTA to the
CNIN field of the account edition; its description names the local
identifier (SIRET in France, MERSIS No in Turkey).

Signed-off-by: jmalnuit <jonathan.malnuit@ovhcloud.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
For a TR address, the MERSIS No is mandatory (16 digits) for company
legal forms, the VAT label is looked up by country ("KDV", Turkey not
being a subsidiary) and an "I have a VAT number" checkbox makes the
KDV (10 digits) mandatory.

Signed-off-by: jmalnuit <jonathan.malnuit@ovhcloud.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jmalnuit added 2 commits October 2, 2026 09:55
The e-invoicing "Autre" controls of the account edition form (error,
blocked save, company-data warning) now always apply to FR and TR
customers: they are a lasting rule. The
account:fr-e-invoicing-other-category flag only gates the temporary
home reminder (OtherCategoryModal).

Signed-off-by: jmalnuit <jonathan.malnuit@ovhcloud.com>
RG1 asks for the reminder "at every login": once dismissed, it now stays
closed for the rest of the browser session instead of coming back on
every page load. Turkish accounts get the same request without the
French e-invoicing reform wording and its economie.gouv.fr link.

Signed-off-by: jmalnuit <jonathan.malnuit@ovhcloud.com>
* one and `OtherCategoryModal`). The specification writes "TK"
* for Turkey; the API country code is `TR` (`TK` is Tokelau).
*/
export const COMPLIANCE_MODAL_COUNTRIES = ['FR', 'TR'];

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we have this on feature flipping side ? We can utilise it same on V8 as well.

} from './complianceReminderModal.constants';

export const isComplianceModalCountry = (country?: string | null) =>
COMPLIANCE_MODAL_COUNTRIES.includes((country ?? '').toUpperCase());

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: TO have a feature flipping check.

* the MERSIS No in Turkey (the only two countries the reminder is shown in).
*/
export const missingCninDescriptionKey = (country?: string | null) =>
(country ?? '').toUpperCase() === 'FR'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: See if you can keep it on feature flipping or atlease if have same contry check for both missingCninDescriptionKey and missingCninFieldToFocus we can keep "FR" on constant file.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants