mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 15:30:56 +00:00
They hold a TIN but no business licence, so there is no eTrade record to look their registration up in. A checkbox on the first wizard step marks them, and everything that assumed a trade licence bends around it: - The company step replaces the eTrade lookup with typed registration details — name, region, zone, woreda, kebele, house number — required exactly because they are now on screen. applyEtradeSourcedFields skips the lookup rather than failing it, so what the customer sends is what is stored. - No freight-forwarder role. Forwarding is licensed work, so the option is not offered, and the API refuses it at start-onboarding and at every later role-add rather than letting approval fail on a document they cannot produce. - No per-role business-licence upload, client-side or in the completion gate. - Their own document set (company_onboarding_documents_cooperative) merges on top of the nationality one, admin-managed like every other set. Nationality wins a fileKey collision so no slot renders twice, and the DARS paper is not injected into it — the set it merges onto already carries one. - The owner is typed in full; with no eTrade manager on file the licence comparison reports "nothing to compare against", which backoffice now explains rather than leaving as a bare dash. Stored as an attributes flag, not a column: everything it changes is behavioural, and nothing queries or joins on it.
61 lines
2.6 KiB
TypeScript
61 lines
2.6 KiB
TypeScript
import { FileUploadField } from "./entities/file-upload-field.entity";
|
|
|
|
/**
|
|
* The DARS delegation paper — the document that evidences a company's Power of
|
|
* Attorney (EDRFREIGHT-358).
|
|
*
|
|
* Every other onboarding document is admin-managed: the rows in
|
|
* `file_upload_fields` are edited from the backoffice file-settings editor and
|
|
* the seeder deliberately inserts none. This one is different — a company that
|
|
* names a PoA must produce a delegation paper authenticated by the Documents
|
|
* Authentication and Registration Service, and that is a legal requirement
|
|
* rather than a configuration choice. So the field is defined here in code and
|
|
* injected into the company onboarding sets on read: no row to forget to seed,
|
|
* and deleting one in the editor cannot silently switch the requirement off.
|
|
*/
|
|
|
|
/** FileRecord `code` (and upload field key) of the live delegation paper. */
|
|
export const POA_DELEGATION_FILE_KEY = "poa_delegation_letter";
|
|
|
|
/** Code for a delegation paper staged in an open change request (not yet live). */
|
|
export const POA_DELEGATION_PENDING_CODE = "poa_delegation_letter_pending";
|
|
|
|
/** Customer-facing name of the document, used by the API and both web apps. */
|
|
export const POA_DELEGATION_LABEL = "DARS Delegation Paper";
|
|
|
|
/** Prefix of the setting codes the field is injected into. */
|
|
export const COMPANY_ONBOARDING_CODE_PREFIX = "company_onboarding_documents_";
|
|
|
|
/**
|
|
* The co-operative onboarding set. Unlike the nationality sets it is ADDITIVE —
|
|
* merged on top of the company's `_ethiopian`/`_foreign` set rather than
|
|
* replacing it — which is why the delegation paper is not injected into it: the
|
|
* set it is merged onto already carries one.
|
|
*/
|
|
export const COOPERATIVE_ONBOARDING_CODE = `${COMPANY_ONBOARDING_CODE_PREFIX}cooperative`;
|
|
|
|
const POA_DELEGATION_HELP =
|
|
"Delegation paper issued by the Documents Authentication and Registration " +
|
|
"Service (DARS) delegating the representative named above. Upload the " +
|
|
"authenticated copy — a plain letter is not accepted.";
|
|
|
|
/**
|
|
* The field descriptor. `isRequired` stays false because the paper is only due
|
|
* once a PoA has actually been named (or the company operates as a freight
|
|
* forwarder) — a rule that spans form fields as well as files, so it is
|
|
* enforced in CompaniesService rather than by this flag.
|
|
*/
|
|
export function poaDelegationField(displayOrder: number): FileUploadField {
|
|
return {
|
|
fileKey: POA_DELEGATION_FILE_KEY,
|
|
fileLabel: POA_DELEGATION_LABEL,
|
|
helpText: POA_DELEGATION_HELP,
|
|
isRequired: false,
|
|
isMultiple: false,
|
|
maxFiles: 1,
|
|
allowedExtensions: ["pdf", "jpg", "jpeg", "png"],
|
|
maxSizeMb: 50,
|
|
displayOrder,
|
|
} as FileUploadField;
|
|
}
|