- InlineField component + useInlineEdit composable for Odoo-style dblclick editing - Client search by name, account ID, and legacy_customer_id (or_filters) - SMS/Email notification panel on ContactCard via n8n webhooks - Ticket reply thread via Communication docs - All migration scripts (51 files) now tracked - Client portal and field tech app added to monorepo - README rewritten with full feature list, migration summary, architecture - CHANGELOG updated with all recent work - ROADMAP updated with current completion status - Removed hardcoded tokens from docs (use $ERP_SERVICE_TOKEN) - .gitignore updated (docker/, .claude/, exports/, .quasar/) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
25 lines
596 B
JavaScript
25 lines
596 B
JavaScript
export function useFormatters () {
|
|
function formatDate (d) {
|
|
if (!d) return ''
|
|
return new Date(d).toLocaleDateString('fr-CA', {
|
|
year: 'numeric', month: 'long', day: 'numeric',
|
|
})
|
|
}
|
|
|
|
function formatShortDate (d) {
|
|
if (!d) return ''
|
|
return new Date(d).toLocaleDateString('fr-CA', {
|
|
year: 'numeric', month: '2-digit', day: '2-digit',
|
|
})
|
|
}
|
|
|
|
function formatMoney (v) {
|
|
if (v == null) return ''
|
|
return Number(v).toLocaleString('fr-CA', {
|
|
style: 'currency', currency: 'CAD',
|
|
})
|
|
}
|
|
|
|
return { formatDate, formatShortDate, formatMoney }
|
|
}
|