{{ t('containers') }}

{{ it.code || t('noCode') }} {{ t(it.status === 'done' ? 'statusDone' : 'statusDraft') }}
{{ it.container_no || '—' }} · {{ it.date || '' }}
{{ it.customer }}
{{ fmtInt(it.boxes) }} {{ u('boxUnit') }} {{ fmt2(it.weight) }} kg ฿{{ fmt2(it.grand) }} ¥{{ fmt2(it.rmb) }}
{{ it.updated_by }} · {{ fmtTime(it.updated_at) }}

{{ t('emptyList') }}

{{ cur.doc.header.code || cur.doc.header.container_no || t('newContainer') }}

{{ t('save_' + saveState) }}
{{ t('basicInfo') }} {{ cur.doc.header.container_no }} {{ cur.doc.header.container_type }} {{ headerOpen ? '▾' : '▸' }}
{{ t('containerType') }}

{{ t('details') }} {{ cur.doc.batches.length }} {{ u('batchUnit') }}

{{ bi + 1 }}. {{ b.brand || t('noBrand') }}
{{ b.variety }} · {{ b.date }}
{{ fmtInt(bc(b).boxes) }} {{ u('boxUnit') }} · {{ fmt2(bc(b).weight) }} kg
฿{{ fmt2(bc(b).total) }}
{{ t('payAmount') }} ฿{{ fmt2(bc(b).pay) }} = {{ fmtNum(b.pay_price) }} × {{ fmtNum(b.pay_weight) }}kg
{{ u('graded') }} {{ fmt2(bc(b).weight) }}kg({{ u('weighDiff') }} {{ fmtNum(weighGap(b)) }}kg)
{{ cls }} {{ fmt2(p) }}−{{ b.diffs[cls] }}
{{ t('priceNegative') }}
{{ ln.strap || '—' }} {{ ln.grade || '—' }} {{ fmtInt(ln.boxes) }}{{ u('boxUnit') }} × {{ fmtNum(ln.weight) }}kg
{{ fmt2(lc(ln).total_weight) }}kg × {{ fmt2(lc(ln).price) }} {{ fmt2(lc(ln).total) }}{{ u('manual') }}

{{ t('fees') }}

{{ fmt2(fc(f)) }}

{{ t('feeQtyHint') }}

{{ t('summary') }}

{{ t('totalBoxes') }}{{ fmtInt(totals.boxes) }}
{{ t('totalWeight') }}{{ fmt2(totals.weight) }} kg
{{ t('goodsCost') }}฿{{ fmt2(totals.goods) }}
{{ f.name || t('feeName') }}฿{{ fmt2(fc(f)) }}
{{ t('grandTotal') }}฿{{ fmt2(totals.grand) }}
{{ t('exchangeRate') }}
{{ t('rmbAmount') }}{{ totals.rmb ? '¥' + fmt2(totals.rmb) : '—' }}

{{ t('lastSaved') }} {{ cur.updated_by }} · {{ fmtTime(cur.updated_at) }}

{{ fmtInt(totals.boxes) }}{{ u('boxUnit') }} · {{ fmt2(totals.weight) }}kg ฿{{ fmt2(totals.grand) }} ¥{{ fmt2(totals.rmb) }}

{{ t('history') }}

{{ fmtTime(v.updated_at) }}{{ v.user }}
{{ fmtInt(v.boxes) }} {{ u('boxUnit') }}฿{{ fmt2(v.grand) }} {{ t(v.status === 'done' ? 'statusDone' : 'statusDraft') }}
{{ v.note }}

{{ t('settings') }}

{{ me.display_name }}({{ me.username }}){{ me.role === 'admin' ? t('roleAdmin') : t('roleStaff') }}
{{ t('language') }}
{{ t('changePassword') }}

{{ t('batch') }} {{ batchEdit.index + 1 }}

{{ t('brand') }}
{{ t('variety') }}
{{ t('backCalc') }}
{{ t('payAmount') }}{{ batchEditPay ? '฿' + fmt2(batchEditPay) : '—' }}

{{ t('backCalcHint') }}

{{ cur.doc.batches[lineEdit.bi].brand }} · {{ cur.doc.batches[lineEdit.bi].date }} #{{ lineEdit.li + 1 }}

{{ t('strap') }}
{{ t('grade') }}
{{ t('totalWeight') }} {{ fmt2(lineEditCalc.total_weight) }} kg {{ t('lineTotal') }} {{ t('lineTotal') }} {{ fmt2(lineEditCalc.total) }}

{{ lineEditDerived ? t('backCalcHint') : t('overrideHint') }}

{{ toast }}