diff --git a/fusion_accounting_bank_rec/__manifest__.py b/fusion_accounting_bank_rec/__manifest__.py index 2c9101ed..b9149793 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.0.14', + 'version': '19.0.1.0.15', 'category': 'Accounting/Accounting', 'sequence': 28, 'summary': 'Native V19 bank reconciliation widget with AI confidence scoring + behavioural learning.', @@ -75,6 +75,11 @@ Built by Nexa Systems Inc. 'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/search_dialog/search_dialog.xml', 'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/search_dialog/search_dialog_list.js', 'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/search_dialog/search_dialog_list.xml', + # Batch 4 (Task 33) — auxiliary components + 'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.js', + 'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.xml', + 'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/chatter/chatter.js', + 'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/file_uploader/file_uploader.js', ], }, 'installable': True, diff --git a/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/chatter/chatter.js b/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/chatter/chatter.js new file mode 100644 index 00000000..a56f40d5 --- /dev/null +++ b/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/chatter/chatter.js @@ -0,0 +1,16 @@ +/** @odoo-module **/ + +/** + * Mirrored from `account_accountant/.../chatter/chatter.js`. + * Phase 1 structural parity. + */ + +import { Chatter } from "@mail/chatter/web_portal/chatter"; + +export class BankRecChatter extends Chatter { + static props = [...Chatter.props, "statementLine?"]; + + async reloadParentView() { + await this.props.statementLine?.load(); + } +} diff --git a/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/file_uploader/file_uploader.js b/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/file_uploader/file_uploader.js new file mode 100644 index 00000000..5e5a1846 --- /dev/null +++ b/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/file_uploader/file_uploader.js @@ -0,0 +1,29 @@ +/** @odoo-module **/ + +/** + * Mirrored from + * `account_accountant/.../file_uploader/file_uploader.js`. + * Phase 1 structural parity. + */ + +import { DocumentFileUploader } from "@account/components/document_file_uploader/document_file_uploader"; + +export class BankRecFileUploader extends DocumentFileUploader { + /** + * Extends `DocumentFileUploader.getExtraContext` to add the + * `statement_line_id` to the context, used by + * `account.bank.statement.line.create_document_from_attachment` to link + * the uploaded bill back to the originating statement line. + */ + getExtraContext() { + const extraContext = super.getExtraContext(); + return { + ...extraContext, + statement_line_id: this.props.record.statementLineId, + }; + } + + getResModel() { + return "account.bank.statement.line"; + } +} diff --git a/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.js b/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.js new file mode 100644 index 00000000..619ed4e4 --- /dev/null +++ b/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.js @@ -0,0 +1,41 @@ +/** @odoo-module **/ + +/** + * Mirrored from `account_accountant/.../quick_create/quick_create.js`. + * Phase 1 structural parity. + */ + +import { + KanbanRecordQuickCreate, + KanbanQuickCreateController, +} from "@web/views/kanban/kanban_record_quick_create"; + +export class BankRecQuickCreateController extends KanbanQuickCreateController { + static template = "fusion_accounting_bank_rec.BankRecQuickCreateController"; +} + +export class BankRecQuickCreate extends KanbanRecordQuickCreate { + static template = "fusion_accounting_bank_rec.BankRecQuickCreate"; + static props = { + ...KanbanRecordQuickCreate.props, + resModel: { type: String }, + context: { type: Object }, + group: { type: Object, optional: true }, + }; + static components = { BankRecQuickCreateController }; + + /** + * Overridden — quick-create flow always works against a synthetic group + * built from the resModel + context props (rather than relying on a + * caller-provided group), matching Enterprise behaviour. + */ + async getQuickCreateProps(props) { + await super.getQuickCreateProps({ + ...props, + group: { + resModel: props.resModel, + context: props.context, + }, + }); + } +} diff --git a/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.xml b/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.xml new file mode 100644 index 00000000..389e0d5a --- /dev/null +++ b/fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.xml @@ -0,0 +1,23 @@ + + + + + + + +
+ +
+ + + +
+
+
+