3.6 KiB
3.6 KiB
PDF Mapping Registry
This document is the source of truth for active quotation PDF field ownership.
| PDF Field | Source Path | Transform | Example Value |
|---|---|---|---|
customer_name |
customer.name |
direct | ALLA Demo Customer |
customer_addr |
customer.address |
direct multiline | 99/9 Rama IX Road, Bangkok 10310 |
customer_tel |
customer.phone |
direct | 02-000-1000 |
customer_email |
customer.email |
direct | demo-customer@local.test |
customer_att |
quotation.attention |
direct | Task H.1 Contact |
project_name |
quotation.projectName |
direct | Task H.5 Audit Fixture |
site_location |
quotation.projectLocation |
direct multiline | Bangkok HQ |
tel_label |
pdfme.labels.tel |
static label | Tel |
email_label |
pdfme.labels.email |
static label | Email |
att_label |
pdfme.labels.att |
static label | Att |
project_label |
pdfme.labels.project |
static label | Project |
site_label |
pdfme.labels.location |
static label | Location |
quotation_date |
pdfme.quotation_date |
formatPdfDate() canonical alias |
16 Jun 2026 |
quotation_date_data |
pdfme.quotation_date |
active-template field-name mapping | 16 Jun 2026 |
quotation_code |
quotation.code |
direct canonical alias | QT-H5-AUDIT |
quotation_code_data |
quotation.code |
active-template field-name mapping | QT-H5-AUDIT |
quotation_price_data |
pdfme.quotation_price_data |
buildPdfPriceTableData() |
[["Price (Exclude VAT)", "฿125,000.00", " ", "THB"]] |
quotation_price |
pdfme.quotation_price |
compatibility scalar | THB 125,000.00 |
currency |
quotation.currency |
compatibility scalar | THB |
app1 |
signatures.preparedBy.name |
direct | Task H.1 Admin |
app1_position |
signatures.preparedBy.position |
position resolver | Sales Manager |
app2 |
signatures.approvedBy.name |
direct | Task H.1 Admin |
app2_position |
signatures.approvedBy.position |
position resolver | Sales Manager |
app3 |
signatures.authorizedBy.name |
direct | Task H.1 Admin |
app3_position |
signatures.authorizedBy.position |
position resolver | Sales Manager |
topic |
dynamic topic engine | runtime schema clone | topic label table |
data_topic |
dynamic topic engine | runtime schema clone | topic item table |
topic_* |
documentData.topics.all[*].topicType |
runtime generated | Scope |
item_topic_* |
documentData.topics.all[*].items |
formatTopicItems() |
topic rows |
Version Remap Rules
- template JSON changes must create a new
crm_document_template_versionsrow instead of patching the old version in place - active mappings are rebuilt only for fields or placeholder tokens that still exist in the new version
- previous approved snapshots may keep referencing retained inactive versions
- deleted fields from the previous version, such as
exclusion_dataandexclusion_label, must not remain active mappings on the new version
Alias Notes
- current PDFME schema uses field containers named
quotation_date_dataandquotation_code_data - runtime normalization publishes both canonical aliases (
quotation_date,quotation_code) and the active field-name mappings so preview, audit, and render stay aligned quotation_price_datais the canonical price table contractquotation_priceandcurrencyremain compatibility scalars because the active table content still embeds those placeholder tokens- static labels are runtime-driven through
documentData.pdfme.labels.*, not designer-only hardcoded text