⌕
Summary = Paid − Declared per sub-contract (your Contracts Summary). Trust this for the penalty.
Engine = greedy oldest-first closure per contract, base-level. Cross-check.
⬛ PAYMENT rows show the full original payment; ↳ decl rows show each customs match and repeat the original amount for reconciliation.
Methodology
Currency conversion: every amount is converted at the official CBAR rate on the payment / customs date for internal calculations. Amounts are displayed in the payment's original currency (USD or EUR). 20% penalty is on the unclosed balance as of today.
• Authoritative view = Summary (Paid − Declared per sub-contract, from your Contracts Summary). Engine is the greedy oldest-first cross-check.
• Reclassification queue (Custom Code): code meaning — 100=full advance before delivery; 110=advance + partial (after delivery / when material ready); 120=payment made after delivery, settled against the declarations (post-declaration is correct & intended). The mistake is a 120 declaration matched/closed by a payment dated before the declaration = an advance/prepayment wrongly absorbed into a 120 → it must become 110. Capture date = that advance payment's date (evidence of the mistake). Valid 120 rows (pending, or matched only post-delivery) are excluded — nothing to change. • Unallocated payments carry no contract reference — assign them in the source.
• Match Ledger shows a PAYMENT row (full original amount) for every payment that has declarations, followed by its declaration matches — each declaration row also repeats the parent payment's original amount so it can be matched to your other sheet directly.
• All computation runs locally in your browser; your data is embedded in this file and never leaves this machine.
• To add new payments later, you can re-open an updated copy of this dashboard (manual entry or a future import) — the original provided data stays intact here.
• Authoritative view = Summary (Paid − Declared per sub-contract, from your Contracts Summary). Engine is the greedy oldest-first cross-check.
• Reclassification queue (Custom Code): code meaning — 100=full advance before delivery; 110=advance + partial (after delivery / when material ready); 120=payment made after delivery, settled against the declarations (post-declaration is correct & intended). The mistake is a 120 declaration matched/closed by a payment dated before the declaration = an advance/prepayment wrongly absorbed into a 120 → it must become 110. Capture date = that advance payment's date (evidence of the mistake). Valid 120 rows (pending, or matched only post-delivery) are excluded — nothing to change. • Unallocated payments carry no contract reference — assign them in the source.
• Match Ledger shows a PAYMENT row (full original amount) for every payment that has declarations, followed by its declaration matches — each declaration row also repeats the parent payment's original amount so it can be matched to your other sheet directly.
• All computation runs locally in your browser; your data is embedded in this file and never leaves this machine.
• To add new payments later, you can re-open an updated copy of this dashboard (manual entry or a future import) — the original provided data stays intact here.