5b2d5b65a4ca3ee0f1906b3465ce74ef3ce7ff20
Each revision (R00, R01, R02) is now an independent trackable unit: invoiceVersionRules: add deriveVersionStatus, buildInvoiceStatusByKey, parseVersionFromItemDescription for per-version status derivation Tasks.jsx + ProjectDetail.jsx: - Fetch invoice_items joined with invoice.status (team only) - allRows/rows now flatMap per version (one row per R##) - Status derived from: invoice_items > past version > task.status - R00 paid shows as paid; R01 in_progress shows separately - tr keys use rowKey (taskId:version) to avoid duplicate key warnings Invoice lifecycle (TeamInvoiceDetail, TeamInvoices, TeamCreateInvoice): - Remove task.status sync on invoice paid/sent/created - Keep invoiced:true flag for double-billing prevention - Task work status (not_started → client_approved) stays work-flow only ProjectDetail completion bar uses task.status === client_approved only (no longer polluted by invoiced/paid status from invoice sync) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Description
Portal for Fourge Branding
Languages
JavaScript
82.3%
CSS
5%
TypeScript
4.4%
PLpgSQL
4.2%
HTML
4.1%