From 8a841e7534d964837ad7d7fbb653366bf3fc457a Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Mon, 20 Apr 2026 13:07:15 -0400 Subject: [PATCH] changes --- fusion_accounting_assets/__manifest__.py | 3 +- .../static/src/scss/_variables.scss | 59 +++---- .../static/src/scss/assets.scss | 119 +++++++++------ .../static/src/scss/dark_mode.scss | 32 ---- fusion_accounting_bank_rec/__manifest__.py | 3 +- .../static/src/scss/_variables.scss | 80 ++-------- .../static/src/scss/ai_suggestion.scss | 48 +++--- .../static/src/scss/bank_reconciliation.scss | 96 ++++++------ .../static/src/scss/dark_mode.scss | 63 -------- fusion_accounting_followup/__manifest__.py | 3 +- .../static/src/scss/_variables.scss | 40 +---- .../static/src/scss/dark_mode.scss | 27 ---- .../static/src/scss/followup.scss | 144 ++++++++++++------ fusion_accounting_l10n_ca/__manifest__.py | 2 +- .../migrations/19.0.1.1.1/pre-migration.py | 48 ++++++ .../views/menu_views.xml | 10 +- .../console-2026-04-20T05-17-37-081Z.log | 2 + .../console-2026-04-20T05-18-25-869Z.log | 2 + .../fusion_plating_notifications/__init__.py | 1 + 19 files changed, 345 insertions(+), 437 deletions(-) delete mode 100644 fusion_accounting_assets/static/src/scss/dark_mode.scss delete mode 100644 fusion_accounting_bank_rec/static/src/scss/dark_mode.scss delete mode 100644 fusion_accounting_followup/static/src/scss/dark_mode.scss create mode 100644 fusion_accounting_l10n_ca/migrations/19.0.1.1.1/pre-migration.py create mode 100644 fusion_plating/.playwright-mcp/console-2026-04-20T05-17-37-081Z.log create mode 100644 fusion_plating/.playwright-mcp/console-2026-04-20T05-18-25-869Z.log diff --git a/fusion_accounting_assets/__manifest__.py b/fusion_accounting_assets/__manifest__.py index 2d9b49ab..b9289ec0 100644 --- a/fusion_accounting_assets/__manifest__.py +++ b/fusion_accounting_assets/__manifest__.py @@ -1,6 +1,6 @@ { 'name': 'Fusion Accounting Assets', - 'version': '19.0.1.1.0', + 'version': '19.0.1.1.1', 'category': 'Accounting/Accounting', 'summary': 'AI-augmented asset management with depreciation schedules.', 'description': """ @@ -47,7 +47,6 @@ menu hides; the engine + AI tools remain available for the chat. 'web.assets_backend': [ 'fusion_accounting_assets/static/src/scss/_variables.scss', 'fusion_accounting_assets/static/src/scss/assets.scss', - 'fusion_accounting_assets/static/src/scss/dark_mode.scss', 'fusion_accounting_assets/static/src/services/assets_service.js', 'fusion_accounting_assets/static/src/views/asset_dashboard/asset_dashboard.js', 'fusion_accounting_assets/static/src/views/asset_dashboard/asset_dashboard.xml', diff --git a/fusion_accounting_assets/static/src/scss/_variables.scss b/fusion_accounting_assets/static/src/scss/_variables.scss index c25f8d20..a2b85a3c 100644 --- a/fusion_accounting_assets/static/src/scss/_variables.scss +++ b/fusion_accounting_assets/static/src/scss/_variables.scss @@ -1,40 +1,25 @@ -// Fusion assets design tokens (extends Phase 1+2's tokens for consistency). +// Fusion assets design tokens. +// COLOR uses BS5 CSS custom properties (--bs-*) declared inline in +// assets.scss so dark mode flips automatically. SCSS vars below are +// for spacing/typography only. -$asset-bg-primary: #ffffff; -$asset-bg-secondary: #f9fafb; -$asset-bg-tertiary: #f3f4f6; -$asset-border: #e5e7eb; -$asset-text-primary: #111827; -$asset-text-secondary: #6b7280; -$asset-text-muted: #9ca3af; -$asset-accent: #3b82f6; -$asset-accent-bg: #eff6ff; +// Spacing +$asset-space-1: 0.25rem; +$asset-space-2: 0.5rem; +$asset-space-3: 0.75rem; +$asset-space-4: 1rem; +$asset-space-5: 1.25rem; +$asset-space-6: 1.5rem; +$asset-space-8: 2rem; -// State colors -$asset-state-draft: #6b7280; -$asset-state-running: #10b981; -$asset-state-paused: #f59e0b; -$asset-state-disposed: #ef4444; +// Typography +$asset-font-size-xs: 0.75rem; +$asset-font-size-sm: 0.875rem; +$asset-font-size-base: 1rem; +$asset-font-size-lg: 1.125rem; +$asset-font-size-xl: 1.25rem; -// Severity colors (mirrors phase 2) -$asset-severity-high: #ef4444; -$asset-severity-high-bg: #fef2f2; -$asset-severity-medium: #f59e0b; -$asset-severity-medium-bg: #fffbeb; -$asset-severity-low: #10b981; -$asset-severity-low-bg: #ecfdf5; - -$asset-space-1: 0.25rem; -$asset-space-2: 0.5rem; -$asset-space-3: 0.75rem; -$asset-space-4: 1rem; -$asset-space-6: 1.5rem; - -$asset-font-size-xs: 0.75rem; -$asset-font-size-sm: 0.875rem; -$asset-font-size-base: 1rem; -$asset-font-size-lg: 1.125rem; -$asset-font-size-xl: 1.25rem; - -$asset-border-radius: 0.375rem; -$asset-border-radius-md: 0.5rem; +// Borders + radii +$asset-border-radius: 0.375rem; +$asset-border-radius-md: 0.5rem; +$asset-border-radius-lg: 0.75rem; diff --git a/fusion_accounting_assets/static/src/scss/assets.scss b/fusion_accounting_assets/static/src/scss/assets.scss index d0bd458d..190426c0 100644 --- a/fusion_accounting_assets/static/src/scss/assets.scss +++ b/fusion_accounting_assets/static/src/scss/assets.scss @@ -1,37 +1,59 @@ -// Variables come from _variables.scss via manifest concatenation order. -// (V19 forbids cross-file SCSS imports; rely on bundle order instead.) +// Variables (spacing/typography) come from _variables.scss via manifest order. +// COLOR uses BS5 CSS custom properties so dark mode flips automatically. + +:root { + --fusion-asset-accent: #3b82f6; + --fusion-asset-accent-bg: rgba(59, 130, 246, 0.10); + --fusion-asset-state-draft: #6b7280; + --fusion-asset-state-draft-bg: rgba(107, 114, 128, 0.12); + --fusion-asset-state-running: #10b981; + --fusion-asset-state-running-bg: rgba(16, 185, 129, 0.12); + --fusion-asset-state-paused: #f59e0b; + --fusion-asset-state-paused-bg: rgba(245, 158, 11, 0.12); + --fusion-asset-state-disposed: #ef4444; + --fusion-asset-state-disposed-bg:rgba(239, 68, 68, 0.12); + --fusion-asset-severity-high: #ef4444; + --fusion-asset-severity-high-bg: rgba(239, 68, 68, 0.12); + --fusion-asset-severity-medium: #f59e0b; + --fusion-asset-severity-medium-bg:rgba(245, 158, 11, 0.12); + --fusion-asset-severity-low: #10b981; + --fusion-asset-severity-low-bg: rgba(16, 185, 129, 0.12); +} .o_fusion_assets { - background: $asset-bg-secondary; + background: var(--bs-body-bg); + color: var(--bs-body-color); min-height: 100vh; &_header { - background: $asset-bg-primary; - border-bottom: 1px solid $asset-border; + background: var(--bs-body-bg); + color: var(--bs-emphasis-color); + border-bottom: 1px solid var(--bs-border-color); padding: $asset-space-4 $asset-space-6; display: flex; justify-content: space-between; align-items: center; - h1 { font-size: $asset-font-size-xl; margin: 0; } + h1 { font-size: $asset-font-size-xl; margin: 0; color: inherit; } .o_fusion_assets_summary { display: flex; gap: $asset-space-6; font-size: $asset-font-size-sm; - color: $asset-text-secondary; + color: var(--bs-secondary-color); .summary-value { font-weight: 600; - color: $asset-text-primary; + color: var(--bs-emphasis-color); margin-left: $asset-space-1; } } } &_card { - background: $asset-bg-primary; - border: 1px solid $asset-border; + background: var(--bs-body-bg); + color: var(--bs-body-color); + border: 1px solid var(--bs-border-color); border-radius: $asset-border-radius-md; padding: $asset-space-4; margin-bottom: $asset-space-3; @@ -39,13 +61,13 @@ transition: all 200ms ease-in-out; &:hover { - border-color: $asset-accent; + border-color: var(--fusion-asset-accent); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); } &.selected { - border-color: $asset-accent; - background: $asset-accent-bg; + border-color: var(--fusion-asset-accent); + background: var(--fusion-asset-accent-bg); } &_header { @@ -58,6 +80,7 @@ .asset-name { font-weight: 600; font-size: $asset-font-size-base; + color: var(--bs-emphasis-color); } .asset-state-badge { @@ -67,10 +90,10 @@ font-weight: 500; text-transform: uppercase; - &[data-state="draft"] { background: lighten($asset-state-draft, 40%); color: $asset-state-draft; } - &[data-state="running"] { background: lighten($asset-state-running, 45%); color: $asset-state-running; } - &[data-state="paused"] { background: lighten($asset-state-paused, 35%); color: $asset-state-paused; } - &[data-state="disposed"] { background: lighten($asset-state-disposed, 35%); color: $asset-state-disposed; } + &[data-state="draft"] { background: var(--fusion-asset-state-draft-bg); color: var(--fusion-asset-state-draft); } + &[data-state="running"] { background: var(--fusion-asset-state-running-bg); color: var(--fusion-asset-state-running); } + &[data-state="paused"] { background: var(--fusion-asset-state-paused-bg); color: var(--fusion-asset-state-paused); } + &[data-state="disposed"] { background: var(--fusion-asset-state-disposed-bg); color: var(--fusion-asset-state-disposed); } } .asset-numbers { @@ -78,69 +101,64 @@ grid-template-columns: 1fr 1fr; gap: $asset-space-2; font-size: $asset-font-size-sm; - color: $asset-text-secondary; + color: var(--bs-secondary-color); - .label { - font-weight: 500; - margin-right: $asset-space-2; - } - .value { - color: $asset-text-primary; - font-weight: 500; - } + .label { font-weight: 500; margin-right: $asset-space-2; } + .value { color: var(--bs-emphasis-color); font-weight: 500; } } } &_table { - background: $asset-bg-primary; + background: var(--bs-body-bg); + color: var(--bs-body-color); border-radius: $asset-border-radius-md; overflow: hidden; font-size: $asset-font-size-sm; - table { width: 100%; border-collapse: collapse; } + table { width: 100%; border-collapse: collapse; color: inherit; } th { - background: $asset-bg-tertiary; + background: var(--bs-tertiary-bg); padding: $asset-space-3; text-align: left; font-weight: 600; - color: $asset-text-secondary; - border-bottom: 1px solid $asset-border; + color: var(--bs-secondary-color); + border-bottom: 1px solid var(--bs-border-color); } td { padding: $asset-space-2 $asset-space-3; - border-bottom: 1px solid lighten($asset-border, 5%); + border-bottom: 1px solid var(--bs-border-color); + color: var(--bs-body-color); } - tr.posted { background: $asset-bg-secondary; } - tr.due-now { background: $asset-severity-medium-bg; } - .text-end { text-align: right; } + tr.posted { background: var(--bs-secondary-bg); } + tr.due-now { background: var(--fusion-asset-severity-medium-bg); } + .text-end { text-align: right; } } .btn_asset { padding: $asset-space-2 $asset-space-4; border-radius: $asset-border-radius; - background: $asset-bg-primary; - border: 1px solid $asset-border; - color: $asset-text-primary; + background: var(--bs-body-bg); + border: 1px solid var(--bs-border-color); + color: var(--bs-body-color); font-size: $asset-font-size-sm; cursor: pointer; - &:hover { background: $asset-bg-tertiary; } + &:hover { background: var(--bs-tertiary-bg); } &.primary { - background: $asset-accent; - border-color: $asset-accent; - color: white; - - &:hover { background: darken($asset-accent, 8%); } + background: var(--fusion-asset-accent); + border-color: var(--fusion-asset-accent); + color: #ffffff; + &:hover { filter: brightness(0.92); } } &.danger { - background: $asset-severity-high; - border-color: $asset-severity-high; - color: white; + background: var(--fusion-asset-severity-high); + border-color: var(--fusion-asset-severity-high); + color: #ffffff; } } } @@ -151,8 +169,9 @@ border-radius: $asset-border-radius; border: 1px solid; font-size: $asset-font-size-sm; + color: var(--bs-body-color); - &[data-severity="high"] { background: $asset-severity-high-bg; border-color: $asset-severity-high; } - &[data-severity="medium"] { background: $asset-severity-medium-bg; border-color: $asset-severity-medium; } - &[data-severity="low"] { background: $asset-severity-low-bg; border-color: $asset-severity-low; } + &[data-severity="high"] { background: var(--fusion-asset-severity-high-bg); border-color: var(--fusion-asset-severity-high); } + &[data-severity="medium"] { background: var(--fusion-asset-severity-medium-bg); border-color: var(--fusion-asset-severity-medium); } + &[data-severity="low"] { background: var(--fusion-asset-severity-low-bg); border-color: var(--fusion-asset-severity-low); } } diff --git a/fusion_accounting_assets/static/src/scss/dark_mode.scss b/fusion_accounting_assets/static/src/scss/dark_mode.scss deleted file mode 100644 index 41b06eb7..00000000 --- a/fusion_accounting_assets/static/src/scss/dark_mode.scss +++ /dev/null @@ -1,32 +0,0 @@ -// Variables come from _variables.scss via manifest concatenation order. - -[data-color-scheme="dark"] .o_fusion_assets { - background: #1f2937; color: #f9fafb; - - &_header, &_card, &_table { background: #111827; border-color: #374151; } - - &_card { - &:hover { border-color: #60a5fa; } - &.selected { background: #1e3a8a; border-color: #60a5fa; } - .asset-numbers .label { color: #9ca3af; } - .asset-numbers .value { color: #f9fafb; } - } - - &_table { - th { background: #1f2937; color: #d1d5db; } - td { border-color: #374151; } - tr.posted { background: #1f2937; } - } - - .btn_asset { - background: #374151; border-color: #4b5563; color: #f9fafb; - &:hover { background: #4b5563; } - &.primary { background: #3b82f6; } - } - - .o_fusion_anomaly_strip { - &[data-severity="high"] { background: rgba(239, 68, 68, 0.15); } - &[data-severity="medium"] { background: rgba(245, 158, 11, 0.15); } - &[data-severity="low"] { background: rgba(16, 185, 129, 0.15); } - } -} diff --git a/fusion_accounting_bank_rec/__manifest__.py b/fusion_accounting_bank_rec/__manifest__.py index 2c872d78..347e0b8c 100644 --- a/fusion_accounting_bank_rec/__manifest__.py +++ b/fusion_accounting_bank_rec/__manifest__.py @@ -1,6 +1,6 @@ { 'name': 'Fusion Accounting — Bank Reconciliation', - 'version': '19.0.1.1.0', + 'version': '19.0.1.1.1', 'category': 'Accounting/Accounting', 'sequence': 28, 'summary': 'Native V19 bank reconciliation widget with AI confidence scoring + behavioural learning.', @@ -42,7 +42,6 @@ Built by Nexa Systems Inc. 'fusion_accounting_bank_rec/static/src/scss/_variables.scss', 'fusion_accounting_bank_rec/static/src/scss/bank_reconciliation.scss', 'fusion_accounting_bank_rec/static/src/scss/ai_suggestion.scss', - 'fusion_accounting_bank_rec/static/src/scss/dark_mode.scss', 'fusion_accounting_bank_rec/static/src/services/bank_reconciliation_service.js', 'fusion_accounting_bank_rec/static/src/views/kanban/bank_rec_kanban_controller.js', 'fusion_accounting_bank_rec/static/src/views/kanban/bank_rec_kanban_renderer.js', diff --git a/fusion_accounting_bank_rec/static/src/scss/_variables.scss b/fusion_accounting_bank_rec/static/src/scss/_variables.scss index 96cf0d68..81a78b94 100644 --- a/fusion_accounting_bank_rec/static/src/scss/_variables.scss +++ b/fusion_accounting_bank_rec/static/src/scss/_variables.scss @@ -1,91 +1,43 @@ // Fusion bank reconciliation design tokens. -// -// Mirrors Enterprise's color/spacing scale where it makes sense, with -// fusion-specific additions for AI confidence bands and the suggestion -// strip. All values can be overridden in dark_mode.scss. +// COLOR uses BS5 CSS custom properties (--bs-*) declared inline in +// bank_reconciliation.scss / ai_suggestion.scss so dark mode flips +// automatically. SCSS vars below are for spacing/typography only. -// ============================================================ -// Colors — semantic -// ============================================================ -$fusion-color-bg-primary: #ffffff; -$fusion-color-bg-secondary: #f9fafb; -$fusion-color-bg-tertiary: #f3f4f6; -$fusion-color-border: #e5e7eb; -$fusion-color-border-strong: #d1d5db; - -$fusion-color-text-primary: #111827; -$fusion-color-text-secondary: #6b7280; -$fusion-color-text-muted: #9ca3af; -$fusion-color-text-inverse: #ffffff; - -$fusion-color-accent: #3b82f6; // primary brand blue -$fusion-color-accent-hover: #2563eb; -$fusion-color-accent-bg: #eff6ff; - -// ============================================================ -// AI Confidence band colors -// ============================================================ -$fusion-confidence-high: #10b981; // green -$fusion-confidence-high-bg: #ecfdf5; -$fusion-confidence-medium: #f59e0b; // amber -$fusion-confidence-medium-bg: #fffbeb; -$fusion-confidence-low: #ef4444; // red -$fusion-confidence-low-bg: #fef2f2; -$fusion-confidence-none: #9ca3af; // gray -$fusion-confidence-none-bg: #f3f4f6; - -// ============================================================ -// Reconciliation state colors -// ============================================================ -$fusion-state-pending-bg: #fef3c7; // amber-100 -$fusion-state-reconciled-bg: #d1fae5; // emerald-100 -$fusion-state-partial-bg: #fde68a; // amber-200 - -// ============================================================ // Spacing scale (4px increments) -// ============================================================ -$fusion-space-1: 0.25rem; // 4px -$fusion-space-2: 0.5rem; // 8px -$fusion-space-3: 0.75rem; // 12px -$fusion-space-4: 1rem; // 16px -$fusion-space-5: 1.25rem; // 20px -$fusion-space-6: 1.5rem; // 24px -$fusion-space-8: 2rem; // 32px +$fusion-space-1: 0.25rem; +$fusion-space-2: 0.5rem; +$fusion-space-3: 0.75rem; +$fusion-space-4: 1rem; +$fusion-space-5: 1.25rem; +$fusion-space-6: 1.5rem; +$fusion-space-8: 2rem; -// ============================================================ // Typography -// ============================================================ $fusion-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; -$fusion-font-size-xs: 0.75rem; // 12px -$fusion-font-size-sm: 0.875rem; // 14px -$fusion-font-size-base: 1rem; // 16px -$fusion-font-size-lg: 1.125rem; // 18px -$fusion-font-size-xl: 1.25rem; // 20px +$fusion-font-size-xs: 0.75rem; +$fusion-font-size-sm: 0.875rem; +$fusion-font-size-base: 1rem; +$fusion-font-size-lg: 1.125rem; +$fusion-font-size-xl: 1.25rem; $fusion-font-weight-normal: 400; $fusion-font-weight-medium: 500; $fusion-font-weight-semibold: 600; $fusion-font-weight-bold: 700; -// ============================================================ // Borders + radii -// ============================================================ $fusion-border-radius-sm: 0.25rem; $fusion-border-radius: 0.375rem; $fusion-border-radius-md: 0.5rem; $fusion-border-radius-lg: 0.75rem; -// ============================================================ -// Shadows -// ============================================================ +// Shadows (alpha-based; works in light + dark) $fusion-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); $fusion-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); $fusion-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1); $fusion-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); -// ============================================================ // Animation -// ============================================================ $fusion-transition-fast: 150ms ease-in-out; $fusion-transition-base: 200ms ease-in-out; $fusion-transition-slow: 300ms ease-in-out; diff --git a/fusion_accounting_bank_rec/static/src/scss/ai_suggestion.scss b/fusion_accounting_bank_rec/static/src/scss/ai_suggestion.scss index 58d7ee6f..a534f15f 100644 --- a/fusion_accounting_bank_rec/static/src/scss/ai_suggestion.scss +++ b/fusion_accounting_bank_rec/static/src/scss/ai_suggestion.scss @@ -1,8 +1,7 @@ -// Variables come from _variables.scss via manifest concatenation order. +// AI Suggestion strip + alternatives panel. +// Confidence colors are brand-meaningful (red/amber/green) and stay +// consistent across themes; surfaces use BS5 vars for theme-tracking. -// ============================================================ -// AI Suggestion strip (inline, on each statement line card) -// ============================================================ .o_fusion_ai_suggestion { margin-top: $fusion-space-3; padding: $fusion-space-3; @@ -12,30 +11,27 @@ align-items: center; gap: $fusion-space-3; font-size: $fusion-font-size-sm; + color: var(--bs-body-color); transition: all $fusion-transition-base; - // Confidence bands — apply via [data-band="..."] attribute &[data-band="high"] { - background: $fusion-confidence-high-bg; - border-color: $fusion-confidence-high; - - .o_fusion_confidence_value { color: $fusion-confidence-high; } + background: var(--fusion-confidence-high-bg); + border-color: var(--fusion-confidence-high); + .o_fusion_confidence_value { color: var(--fusion-confidence-high); } } &[data-band="medium"] { - background: $fusion-confidence-medium-bg; - border-color: $fusion-confidence-medium; - - .o_fusion_confidence_value { color: $fusion-confidence-medium; } + background: var(--fusion-confidence-medium-bg); + border-color: var(--fusion-confidence-medium); + .o_fusion_confidence_value { color: var(--fusion-confidence-medium); } } &[data-band="low"] { - background: $fusion-confidence-low-bg; - border-color: $fusion-confidence-low; - - .o_fusion_confidence_value { color: $fusion-confidence-low; } + background: var(--fusion-confidence-low-bg); + border-color: var(--fusion-confidence-low); + .o_fusion_confidence_value { color: var(--fusion-confidence-low); } } &[data-band="none"] { - background: $fusion-confidence-none-bg; - border-color: $fusion-confidence-none; + background: var(--fusion-confidence-none-bg); + border-color: var(--fusion-confidence-none); opacity: 0.7; } @@ -47,10 +43,10 @@ .o_fusion_suggestion_text { flex: 1; - color: $fusion-color-text-primary; + color: var(--bs-body-color); .o_fusion_reasoning { - color: $fusion-color-text-secondary; + color: var(--bs-secondary-color); font-style: italic; margin-top: $fusion-space-1; } @@ -62,20 +58,18 @@ } } -// ============================================================ -// Alternatives panel (expandable list of other suggestions) -// ============================================================ .o_fusion_alternatives_panel { margin-top: $fusion-space-2; padding: $fusion-space-3; - background: $fusion-color-bg-secondary; - border: 1px solid $fusion-color-border; + background: var(--bs-secondary-bg); + color: var(--bs-body-color); + border: 1px solid var(--bs-border-color); border-radius: $fusion-border-radius; font-size: $fusion-font-size-sm; .o_fusion_alternative { padding: $fusion-space-2 0; - border-bottom: 1px solid $fusion-color-border; + border-bottom: 1px solid var(--bs-border-color); display: flex; justify-content: space-between; align-items: center; diff --git a/fusion_accounting_bank_rec/static/src/scss/bank_reconciliation.scss b/fusion_accounting_bank_rec/static/src/scss/bank_reconciliation.scss index 97485caf..d449c139 100644 --- a/fusion_accounting_bank_rec/static/src/scss/bank_reconciliation.scss +++ b/fusion_accounting_bank_rec/static/src/scss/bank_reconciliation.scss @@ -1,19 +1,32 @@ -// Variables come from _variables.scss via manifest concatenation order. -// (V19 forbids cross-file SCSS imports; rely on bundle order instead.) +// Variables (spacing/typography) come from _variables.scss via manifest order. +// COLOR uses BS5 CSS custom properties so dark mode flips automatically. + +// Brand-meaningful colors (semantic, identical in light + dark themes). +:root { + --fusion-bank-accent: #3b82f6; + --fusion-bank-accent-hover: #2563eb; + --fusion-bank-accent-bg: rgba(59, 130, 246, 0.10); + + --fusion-confidence-high: #10b981; + --fusion-confidence-high-bg: rgba(16, 185, 129, 0.12); + --fusion-confidence-medium: #f59e0b; + --fusion-confidence-medium-bg: rgba(245, 158, 11, 0.12); + --fusion-confidence-low: #ef4444; + --fusion-confidence-low-bg: rgba(239, 68, 68, 0.12); + --fusion-confidence-none: #9ca3af; + --fusion-confidence-none-bg: rgba(156, 163, 175, 0.12); +} -// ============================================================ -// Bank reconciliation kanban container -// ============================================================ .o_fusion_bank_rec { - background: $fusion-color-bg-secondary; + background: var(--bs-body-bg); min-height: 100vh; font-family: $fusion-font-family; - color: $fusion-color-text-primary; + color: var(--bs-body-color); - // Header bar with stats &_header { - background: $fusion-color-bg-primary; - border-bottom: 1px solid $fusion-color-border; + background: var(--bs-body-bg); + color: var(--bs-emphasis-color); + border-bottom: 1px solid var(--bs-border-color); padding: $fusion-space-4 $fusion-space-6; display: flex; justify-content: space-between; @@ -23,26 +36,27 @@ font-size: $fusion-font-size-xl; font-weight: $fusion-font-weight-semibold; margin: 0; + color: inherit; } .o_fusion_stats { display: flex; gap: $fusion-space-6; font-size: $fusion-font-size-sm; - color: $fusion-color-text-secondary; + color: var(--bs-secondary-color); .stat-value { font-weight: $fusion-font-weight-semibold; - color: $fusion-color-text-primary; + color: var(--bs-emphasis-color); margin-left: $fusion-space-1; } } } - // Statement line cards (kanban tile) &_line { - background: $fusion-color-bg-primary; - border: 1px solid $fusion-color-border; + background: var(--bs-body-bg); + color: var(--bs-body-color); + border: 1px solid var(--bs-border-color); border-radius: $fusion-border-radius-md; padding: $fusion-space-4; margin-bottom: $fusion-space-3; @@ -51,13 +65,13 @@ position: relative; &:hover { - border-color: $fusion-color-accent; + border-color: var(--fusion-bank-accent); box-shadow: $fusion-shadow-md; } &.o_fusion_selected { - border-color: $fusion-color-accent; - background: $fusion-color-accent-bg; + border-color: var(--fusion-bank-accent); + background: var(--fusion-bank-accent-bg); } &_header { @@ -69,84 +83,80 @@ .o_fusion_amount { font-size: $fusion-font-size-lg; font-weight: $fusion-font-weight-semibold; + color: var(--bs-emphasis-color); - &.negative { - color: $fusion-confidence-low; - } + &.negative { color: var(--fusion-confidence-low); } } .o_fusion_date { font-size: $fusion-font-size-sm; - color: $fusion-color-text-secondary; + color: var(--bs-secondary-color); } } &_body { font-size: $fusion-font-size-sm; - color: $fusion-color-text-secondary; + color: var(--bs-secondary-color); .o_fusion_partner { font-weight: $fusion-font-weight-medium; - color: $fusion-color-text-primary; + color: var(--bs-emphasis-color); margin-right: $fusion-space-2; } .o_fusion_memo { font-style: italic; - color: $fusion-color-text-muted; + color: var(--bs-tertiary-color); } } - // Attachment count badge .o_fusion_attachments_badge { position: absolute; top: $fusion-space-2; right: $fusion-space-2; - background: $fusion-color-bg-tertiary; + background: var(--bs-tertiary-bg); border-radius: $fusion-border-radius; padding: $fusion-space-1 $fusion-space-2; font-size: $fusion-font-size-xs; - color: $fusion-color-text-secondary; + color: var(--bs-secondary-color); } } - // Detail/edit panel (right side) &_detail { - background: $fusion-color-bg-primary; - border-left: 1px solid $fusion-color-border; + background: var(--bs-body-bg); + color: var(--bs-body-color); + border-left: 1px solid var(--bs-border-color); padding: $fusion-space-6; h2 { font-size: $fusion-font-size-lg; font-weight: $fusion-font-weight-semibold; margin: 0 0 $fusion-space-4; + color: var(--bs-emphasis-color); } } - // Action buttons .btn_fusion { padding: $fusion-space-2 $fusion-space-4; border-radius: $fusion-border-radius; font-size: $fusion-font-size-sm; font-weight: $fusion-font-weight-medium; - border: 1px solid $fusion-color-border; - background: $fusion-color-bg-primary; - color: $fusion-color-text-primary; + border: 1px solid var(--bs-border-color); + background: var(--bs-body-bg); + color: var(--bs-body-color); cursor: pointer; transition: all $fusion-transition-fast; - &:hover { - background: $fusion-color-bg-tertiary; - } + &:hover { background: var(--bs-tertiary-bg); } &.btn_fusion_primary { - background: $fusion-color-accent; - border-color: $fusion-color-accent; - color: $fusion-color-text-inverse; + background: var(--fusion-bank-accent); + border-color: var(--fusion-bank-accent); + color: #ffffff; &:hover { - background: $fusion-color-accent-hover; - border-color: $fusion-color-accent-hover; + background: var(--fusion-bank-accent-hover); + border-color: var(--fusion-bank-accent-hover); } } } diff --git a/fusion_accounting_bank_rec/static/src/scss/dark_mode.scss b/fusion_accounting_bank_rec/static/src/scss/dark_mode.scss deleted file mode 100644 index 8131b3a8..00000000 --- a/fusion_accounting_bank_rec/static/src/scss/dark_mode.scss +++ /dev/null @@ -1,63 +0,0 @@ -// Variables come from _variables.scss via manifest concatenation order. -// Activated via [data-color-scheme="dark"] on body or any ancestor. -// Mirrors Odoo's standard dark-mode trigger pattern. - -[data-color-scheme="dark"] .o_fusion_bank_rec { - background: #1f2937; - color: #f9fafb; - - &_header, - &_line, - &_detail { - background: #111827; - border-color: #374151; - color: #f9fafb; - } - - &_line { - &:hover { border-color: #60a5fa; } - &.o_fusion_selected { - background: #1e3a8a; - border-color: #60a5fa; - } - - &_header .o_fusion_date, - &_body { color: #d1d5db; } - - .o_fusion_attachments_badge { - background: #374151; - color: #d1d5db; - } - } - - .btn_fusion { - background: #374151; - border-color: #4b5563; - color: #f9fafb; - - &:hover { background: #4b5563; } - - &.btn_fusion_primary { - background: #3b82f6; - border-color: #3b82f6; - - &:hover { - background: #2563eb; - border-color: #2563eb; - } - } - } - - // AI suggestion strip — soften background colors for dark mode - .o_fusion_ai_suggestion { - &[data-band="high"] { background: rgba(16, 185, 129, 0.1); } - &[data-band="medium"] { background: rgba(245, 158, 11, 0.1); } - &[data-band="low"] { background: rgba(239, 68, 68, 0.1); } - &[data-band="none"] { background: rgba(156, 163, 175, 0.1); } - } - - .o_fusion_alternatives_panel { - background: #1f2937; - border-color: #374151; - } -} diff --git a/fusion_accounting_followup/__manifest__.py b/fusion_accounting_followup/__manifest__.py index 7bfab96e..69574205 100644 --- a/fusion_accounting_followup/__manifest__.py +++ b/fusion_accounting_followup/__manifest__.py @@ -1,6 +1,6 @@ { 'name': 'Fusion Accounting Follow-up', - 'version': '19.0.1.1.0', + 'version': '19.0.1.1.1', 'category': 'Accounting/Accounting', 'summary': 'AI-augmented customer follow-ups (dunning) for unpaid invoices.', 'description': """ @@ -44,7 +44,6 @@ menu hides; the engine + AI tools remain available for the chat. 'web.assets_backend': [ 'fusion_accounting_followup/static/src/scss/_variables.scss', 'fusion_accounting_followup/static/src/scss/followup.scss', - 'fusion_accounting_followup/static/src/scss/dark_mode.scss', 'fusion_accounting_followup/static/src/services/followup_service.js', 'fusion_accounting_followup/static/src/views/followup_dashboard/followup_dashboard.js', 'fusion_accounting_followup/static/src/views/followup_dashboard/followup_dashboard.xml', diff --git a/fusion_accounting_followup/static/src/scss/_variables.scss b/fusion_accounting_followup/static/src/scss/_variables.scss index cb3d8f85..9951e632 100644 --- a/fusion_accounting_followup/static/src/scss/_variables.scss +++ b/fusion_accounting_followup/static/src/scss/_variables.scss @@ -1,39 +1,7 @@ -// Fusion follow-up design tokens (extends Phases 1-3 tokens for consistency). - -$fu-bg-primary: #ffffff; -$fu-bg-secondary: #f9fafb; -$fu-bg-tertiary: #f3f4f6; -$fu-border: #e5e7eb; -$fu-text-primary: #111827; -$fu-text-secondary: #6b7280; -$fu-text-muted: #9ca3af; -$fu-accent: #3b82f6; -$fu-accent-bg: #eff6ff; - -// Status colors -$fu-status-no-action: #6b7280; -$fu-status-action-due: #f59e0b; -$fu-status-paused: #6366f1; -$fu-status-blocked: #ef4444; -$fu-status-with-credit: #8b5cf6; - -// Risk band colors -$fu-risk-low: #10b981; -$fu-risk-low-bg: #ecfdf5; -$fu-risk-medium: #f59e0b; -$fu-risk-medium-bg: #fffbeb; -$fu-risk-high: #ef4444; -$fu-risk-high-bg: #fef2f2; -$fu-risk-critical: #b91c1c; -$fu-risk-critical-bg: #fef2f2; - -// Aging bucket colors (escalating intensity) -$fu-bucket-current: #10b981; -$fu-bucket-1-30: #fbbf24; -$fu-bucket-31-60: #f59e0b; -$fu-bucket-61-90: #ef4444; -$fu-bucket-91-120: #dc2626; -$fu-bucket-120-plus: #7f1d1d; +// Fusion follow-up design tokens. +// COLOR uses BS5 CSS custom properties (--bs-*) declared inline in +// followup.scss so dark mode flips automatically. SCSS vars below are +// for spacing/typography only. $fu-space-1: 0.25rem; $fu-space-2: 0.5rem; diff --git a/fusion_accounting_followup/static/src/scss/dark_mode.scss b/fusion_accounting_followup/static/src/scss/dark_mode.scss deleted file mode 100644 index 25950570..00000000 --- a/fusion_accounting_followup/static/src/scss/dark_mode.scss +++ /dev/null @@ -1,27 +0,0 @@ -// Variables come from _variables.scss (loaded first in the asset bundle). - -[data-color-scheme="dark"] .o_fusion_followup { - background: #1f2937; color: #f9fafb; - - &_header, &_card, .fu-ai-text-panel { - background: #111827; border-color: #374151; color: #f9fafb; - } - - &_card { - &:hover { border-color: #60a5fa; } - &.selected { background: #1e3a8a; border-color: #60a5fa; } - .partner-numbers .label { color: #9ca3af; } - .partner-numbers .value { color: #f9fafb; } - } - - .btn_fu { - background: #374151; border-color: #4b5563; color: #f9fafb; - &:hover { background: #4b5563; } - &.primary { background: #3b82f6; } - } - - .fu-ai-text-panel { - .ai-subject { background: #1e3a8a; } - .ai-body { background: #1f2937; } - } -} diff --git a/fusion_accounting_followup/static/src/scss/followup.scss b/fusion_accounting_followup/static/src/scss/followup.scss index 8962e3dd..6a94bd1e 100644 --- a/fusion_accounting_followup/static/src/scss/followup.scss +++ b/fusion_accounting_followup/static/src/scss/followup.scss @@ -1,36 +1,72 @@ -// Variables come from _variables.scss (loaded first in the asset bundle). +// Variables (spacing/typography) come from _variables.scss via manifest order. +// COLOR uses BS5 CSS custom properties so dark mode flips automatically. + +:root { + --fusion-fu-accent: #3b82f6; + --fusion-fu-accent-bg: rgba(59, 130, 246, 0.10); + + --fusion-fu-status-no-action: #6b7280; + --fusion-fu-status-no-action-bg: rgba(107, 114, 128, 0.12); + --fusion-fu-status-action-due: #f59e0b; + --fusion-fu-status-action-due-bg: rgba(245, 158, 11, 0.14); + --fusion-fu-status-paused: #6366f1; + --fusion-fu-status-paused-bg: rgba(99, 102, 241, 0.14); + --fusion-fu-status-blocked: #ef4444; + --fusion-fu-status-blocked-bg: rgba(239, 68, 68, 0.14); + --fusion-fu-status-with-credit: #8b5cf6; + --fusion-fu-status-with-credit-bg:rgba(139, 92, 246, 0.14); + + --fusion-fu-risk-low: #10b981; + --fusion-fu-risk-low-bg: rgba(16, 185, 129, 0.12); + --fusion-fu-risk-medium: #f59e0b; + --fusion-fu-risk-medium-bg: rgba(245, 158, 11, 0.12); + --fusion-fu-risk-high: #ef4444; + --fusion-fu-risk-high-bg: rgba(239, 68, 68, 0.12); + --fusion-fu-risk-critical: #b91c1c; + --fusion-fu-risk-critical-bg:rgba(185, 28, 28, 0.18); + + --fusion-fu-bucket-current: #10b981; + --fusion-fu-bucket-1-30: #fbbf24; + --fusion-fu-bucket-31-60: #f59e0b; + --fusion-fu-bucket-61-90: #ef4444; + --fusion-fu-bucket-91-120: #dc2626; + --fusion-fu-bucket-120-plus: #7f1d1d; +} .o_fusion_followup { - background: $fu-bg-secondary; + background: var(--bs-body-bg); + color: var(--bs-body-color); min-height: 100vh; &_header { - background: $fu-bg-primary; - border-bottom: 1px solid $fu-border; + background: var(--bs-body-bg); + color: var(--bs-emphasis-color); + border-bottom: 1px solid var(--bs-border-color); padding: $fu-space-4 $fu-space-6; display: flex; justify-content: space-between; align-items: center; - h1 { font-size: $fu-font-size-xl; margin: 0; } + h1 { font-size: $fu-font-size-xl; margin: 0; color: inherit; } .summary { display: flex; gap: $fu-space-6; font-size: $fu-font-size-sm; - color: $fu-text-secondary; + color: var(--bs-secondary-color); .summary-value { font-weight: 600; - color: $fu-text-primary; + color: var(--bs-emphasis-color); margin-left: $fu-space-1; } } } &_card { - background: $fu-bg-primary; - border: 1px solid $fu-border; + background: var(--bs-body-bg); + color: var(--bs-body-color); + border: 1px solid var(--bs-border-color); border-radius: $fu-border-radius-md; padding: $fu-space-4; margin-bottom: $fu-space-3; @@ -38,13 +74,13 @@ transition: all 200ms ease-in-out; &:hover { - border-color: $fu-accent; + border-color: var(--fusion-fu-accent); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); } &.selected { - border-color: $fu-accent; - background: $fu-accent-bg; + border-color: var(--fusion-fu-accent); + background: var(--fusion-fu-accent-bg); } &_header { @@ -56,6 +92,7 @@ .partner-name { font-weight: 600; font-size: $fu-font-size-base; + color: var(--bs-emphasis-color); } } @@ -64,26 +101,34 @@ grid-template-columns: 1fr 1fr; gap: $fu-space-2; font-size: $fu-font-size-sm; - color: $fu-text-secondary; + color: var(--bs-secondary-color); .label { font-weight: 500; margin-right: $fu-space-2; } - .value { color: $fu-text-primary; font-weight: 500; } + .value { color: var(--bs-emphasis-color); font-weight: 500; } } } .btn_fu { padding: $fu-space-2 $fu-space-4; border-radius: $fu-border-radius; - background: $fu-bg-primary; - border: 1px solid $fu-border; - color: $fu-text-primary; + background: var(--bs-body-bg); + border: 1px solid var(--bs-border-color); + color: var(--bs-body-color); font-size: $fu-font-size-sm; cursor: pointer; - &:hover { background: $fu-bg-tertiary; } - &.primary { background: $fu-accent; border-color: $fu-accent; color: white; - &:hover { background: darken($fu-accent, 8%); } } - &.danger { background: $fu-status-blocked; border-color: $fu-status-blocked; color: white; } + &:hover { background: var(--bs-tertiary-bg); } + &.primary { + background: var(--fusion-fu-accent); + border-color: var(--fusion-fu-accent); + color: #ffffff; + &:hover { filter: brightness(0.92); } + } + &.danger { + background: var(--fusion-fu-status-blocked); + border-color: var(--fusion-fu-status-blocked); + color: #ffffff; + } } } @@ -94,11 +139,11 @@ font-weight: 500; text-transform: uppercase; - &[data-status="no_action"] { background: lighten($fu-status-no-action, 40%); color: $fu-status-no-action; } - &[data-status="action_due"] { background: lighten($fu-status-action-due, 35%); color: $fu-status-action-due; } - &[data-status="paused"] { background: lighten($fu-status-paused, 35%); color: $fu-status-paused; } - &[data-status="blocked"] { background: lighten($fu-status-blocked, 35%); color: $fu-status-blocked; } - &[data-status="with_credit_team"] { background: lighten($fu-status-with-credit, 35%); color: $fu-status-with-credit; } + &[data-status="no_action"] { background: var(--fusion-fu-status-no-action-bg); color: var(--fusion-fu-status-no-action); } + &[data-status="action_due"] { background: var(--fusion-fu-status-action-due-bg); color: var(--fusion-fu-status-action-due); } + &[data-status="paused"] { background: var(--fusion-fu-status-paused-bg); color: var(--fusion-fu-status-paused); } + &[data-status="blocked"] { background: var(--fusion-fu-status-blocked-bg); color: var(--fusion-fu-status-blocked); } + &[data-status="with_credit_team"] { background: var(--fusion-fu-status-with-credit-bg); color: var(--fusion-fu-status-with-credit); } } .fu-risk-badge { @@ -109,10 +154,10 @@ font-weight: 600; font-size: $fu-font-size-xs; - &[data-band="low"] { background: $fu-risk-low-bg; color: $fu-risk-low; } - &[data-band="medium"] { background: $fu-risk-medium-bg; color: $fu-risk-medium; } - &[data-band="high"] { background: $fu-risk-high-bg; color: $fu-risk-high; } - &[data-band="critical"] { background: $fu-risk-critical-bg; color: $fu-risk-critical; font-weight: 700; } + &[data-band="low"] { background: var(--fusion-fu-risk-low-bg); color: var(--fusion-fu-risk-low); } + &[data-band="medium"] { background: var(--fusion-fu-risk-medium-bg); color: var(--fusion-fu-risk-medium); } + &[data-band="high"] { background: var(--fusion-fu-risk-high-bg); color: var(--fusion-fu-risk-high); } + &[data-band="critical"] { background: var(--fusion-fu-risk-critical-bg); color: var(--fusion-fu-risk-critical); font-weight: 700; } } .fu-aging-strip { @@ -126,28 +171,34 @@ .bucket { height: 100%; - &[data-name="current"] { background: $fu-bucket-current; } - &[data-name="1_30"] { background: $fu-bucket-1-30; } - &[data-name="31_60"] { background: $fu-bucket-31-60; } - &[data-name="61_90"] { background: $fu-bucket-61-90; } - &[data-name="91_120"] { background: $fu-bucket-91-120; } - &[data-name="120_plus"] { background: $fu-bucket-120-plus; } + &[data-name="current"] { background: var(--fusion-fu-bucket-current); } + &[data-name="1_30"] { background: var(--fusion-fu-bucket-1-30); } + &[data-name="31_60"] { background: var(--fusion-fu-bucket-31-60); } + &[data-name="61_90"] { background: var(--fusion-fu-bucket-61-90); } + &[data-name="91_120"] { background: var(--fusion-fu-bucket-91-120); } + &[data-name="120_plus"] { background: var(--fusion-fu-bucket-120-plus); } } } .fu-ai-text-panel { - background: $fu-bg-primary; - border: 1px solid $fu-border; + background: var(--bs-body-bg); + color: var(--bs-body-color); + border: 1px solid var(--bs-border-color); border-radius: $fu-border-radius-md; padding: $fu-space-4; - h5 { margin: 0 0 $fu-space-2; font-size: $fu-font-size-base; } + h5 { + margin: 0 0 $fu-space-2; + font-size: $fu-font-size-base; + color: var(--bs-emphasis-color); + } .ai-subject { font-weight: 600; margin-bottom: $fu-space-2; padding: $fu-space-2; - background: $fu-accent-bg; + background: var(--fusion-fu-accent-bg); + color: var(--bs-body-color); border-radius: $fu-border-radius; } @@ -156,7 +207,8 @@ font-family: monospace; font-size: $fu-font-size-sm; padding: $fu-space-3; - background: $fu-bg-secondary; + background: var(--bs-secondary-bg); + color: var(--bs-body-color); border-radius: $fu-border-radius; max-height: 300px; overflow-y: auto; @@ -165,7 +217,7 @@ .key-points { margin-top: $fu-space-3; font-size: $fu-font-size-sm; - color: $fu-text-secondary; + color: var(--bs-secondary-color); ul { margin: 0; padding-left: $fu-space-4; } } @@ -174,17 +226,19 @@ .fu-history-table { width: 100%; font-size: $fu-font-size-sm; + color: var(--bs-body-color); th { - background: $fu-bg-tertiary; + background: var(--bs-tertiary-bg); padding: $fu-space-2 $fu-space-3; text-align: left; font-weight: 600; - color: $fu-text-secondary; + color: var(--bs-secondary-color); } td { padding: $fu-space-2 $fu-space-3; - border-bottom: 1px solid lighten($fu-border, 5%); + border-bottom: 1px solid var(--bs-border-color); + color: var(--bs-body-color); } } diff --git a/fusion_accounting_l10n_ca/__manifest__.py b/fusion_accounting_l10n_ca/__manifest__.py index fafa7cca..3f28841b 100644 --- a/fusion_accounting_l10n_ca/__manifest__.py +++ b/fusion_accounting_l10n_ca/__manifest__.py @@ -1,6 +1,6 @@ { 'name': 'Fusion Accounting — Canadian Reports', - 'version': '19.0.1.1.0', + 'version': '19.0.1.1.1', 'category': 'Accounting/Localizations/Reporting', 'summary': 'Canadian-specific report definitions and tax return templates for Fusion Accounting.', 'description': """ diff --git a/fusion_accounting_l10n_ca/migrations/19.0.1.1.1/pre-migration.py b/fusion_accounting_l10n_ca/migrations/19.0.1.1.1/pre-migration.py new file mode 100644 index 00000000..13451806 --- /dev/null +++ b/fusion_accounting_l10n_ca/migrations/19.0.1.1.1/pre-migration.py @@ -0,0 +1,48 @@ +"""Pre-migration: convert legacy act_window Canadian report actions. + +Sibling of fusion_accounting_reports/migrations/19.0.1.1.2/pre-migration.py. +See that file for the full rationale. +""" + +import logging + +_logger = logging.getLogger(__name__) + + +LEGACY_XIDS = ( + 'action_fusion_report_ca_pnl', + 'action_fusion_report_ca_bs', +) + + +def migrate(cr, version): + if not version: + return + deleted = 0 + for name in LEGACY_XIDS: + cr.execute( + """ + SELECT id, model, res_id + FROM ir_model_data + WHERE module = 'fusion_accounting_l10n_ca' AND name = %s + """, + (name,), + ) + row = cr.fetchone() + if not row: + continue + ir_md_id, model, res_id = row + if model != 'ir.actions.act_window': + continue + cr.execute("DELETE FROM ir_act_window WHERE id = %s", (res_id,)) + cr.execute("DELETE FROM ir_actions WHERE id = %s", (res_id,)) + cr.execute("DELETE FROM ir_model_data WHERE id = %s", (ir_md_id,)) + deleted += 1 + _logger.info("Dropped legacy act_window for fusion_accounting_l10n_ca.%s", name) + + if deleted: + _logger.info( + "fusion_accounting_l10n_ca pre-migration: dropped %d legacy " + "act_window records to make way for ir.actions.client variants.", + deleted, + ) diff --git a/fusion_accounting_l10n_ca/views/menu_views.xml b/fusion_accounting_l10n_ca/views/menu_views.xml index 8f3786d8..33625892 100644 --- a/fusion_accounting_l10n_ca/views/menu_views.xml +++ b/fusion_accounting_l10n_ca/views/menu_views.xml @@ -7,17 +7,15 @@ come from the Canadian definitions seeded in this module. --> - + Profit and Loss (Canada) - fusion.report - fusion_reports + fusion_reports {'default_report_type': 'pnl', 'default_report_code': 'ca_profit_loss', 'default_comparison': 'previous_year'} - + Balance Sheet (Canada) - fusion.report - fusion_reports + fusion_reports {'default_report_type': 'balance_sheet', 'default_report_code': 'ca_balance_sheet', 'default_comparison': 'previous_period'} diff --git a/fusion_plating/.playwright-mcp/console-2026-04-20T05-17-37-081Z.log b/fusion_plating/.playwright-mcp/console-2026-04-20T05-17-37-081Z.log new file mode 100644 index 00000000..bdc4662b --- /dev/null +++ b/fusion_plating/.playwright-mcp/console-2026-04-20T05-17-37-081Z.log @@ -0,0 +1,2 @@ +[ 1415ms] [ERROR] The following modules are needed by other modules but have not been defined, they may not be present in the correct asset bundle: [web.public.widget, web.ajax] @ http://odoo-westin-dev.orb.local/web/assets/1/e30f6b7/web.assets_frontend_minimal.min.js:33 +[ 1415ms] [ERROR] The following modules could not be loaded because they have unmet dependencies, this is a secondary error which is likely caused by one of the above problems: [@fusion_authorizer_portal/js/portal_search, @fusion_authorizer_portal/js/assessment_form, @fusion_authorizer_portal/js/signature_pad] @ http://odoo-westin-dev.orb.local/web/assets/1/e30f6b7/web.assets_frontend_minimal.min.js:35 diff --git a/fusion_plating/.playwright-mcp/console-2026-04-20T05-18-25-869Z.log b/fusion_plating/.playwright-mcp/console-2026-04-20T05-18-25-869Z.log new file mode 100644 index 00000000..431bbf2d --- /dev/null +++ b/fusion_plating/.playwright-mcp/console-2026-04-20T05-18-25-869Z.log @@ -0,0 +1,2 @@ +[ 117ms] [ERROR] The following modules are needed by other modules but have not been defined, they may not be present in the correct asset bundle: [web.public.widget, web.ajax] @ http://odoo-westin-dev.orb.local/web/assets/1/e30f6b7/web.assets_frontend_minimal.min.js:33 +[ 117ms] [ERROR] The following modules could not be loaded because they have unmet dependencies, this is a secondary error which is likely caused by one of the above problems: [@fusion_authorizer_portal/js/portal_search, @fusion_authorizer_portal/js/assessment_form, @fusion_authorizer_portal/js/signature_pad] @ http://odoo-westin-dev.orb.local/web/assets/1/e30f6b7/web.assets_frontend_minimal.min.js:35 diff --git a/fusion_plating/fusion_plating_notifications/__init__.py b/fusion_plating/fusion_plating_notifications/__init__.py index 3c90fa80..cd4eb613 100644 --- a/fusion_plating/fusion_plating_notifications/__init__.py +++ b/fusion_plating/fusion_plating_notifications/__init__.py @@ -4,3 +4,4 @@ # Part of the Fusion Plating product family. from . import models +from .hooks import post_init_hook