Replaces Enterprise's documents_account with a Fusion-native bridge. When a PDF/image lands in the Documents app, users can convert it into a draft vendor bill via a wizard that copies the document's binary onto the new account.move and posts a chatter note linking back to the source document. Adds: - documents.document.move_id (Many2one to the linked invoice) - documents.document.is_invoice_candidate (computed; True for unlinked PDF/image binaries) - documents.document.action_create_invoice() opens the wizard - account.move.source_document_ids reverse linkage + statinfo button - fusion.create.invoice.from.document.wizard (TransientModel + form) - ir.actions.server bound to documents.document so the workflow appears in the kanban/list Actions menu (the Documents app has no regular form view to inherit from in v19) The wizard: - defaults to the company's first purchase journal - supports vendor bill or vendor credit note - copies the source attachment onto the new move - posts a chatter note linking back - marks the document linked so it stops appearing as a candidate Auto-installs when documents + fusion_accounting_core are both present. 8 unit tests cover the candidate flag, wizard happy path, attachment copy, reverse linkage, already-linked guard, non-PDF guard, and credit-note creation. Made-with: Cursor
26 lines
1.0 KiB
XML
26 lines
1.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<!--
|
|
Server action bound to documents.document so the
|
|
"Create Vendor Invoice" workflow appears in the cog/Actions
|
|
menu of the Documents kanban + list views.
|
|
|
|
We dispatch through ``action_create_invoice`` so the same
|
|
validation runs whether the user clicks the action or calls
|
|
the method programmatically.
|
|
-->
|
|
<record id="action_create_invoice_from_document" model="ir.actions.server">
|
|
<field name="name">Create Vendor Invoice (Fusion)</field>
|
|
<field name="model_id" ref="documents.model_documents_document"/>
|
|
<field name="binding_model_id" ref="documents.model_documents_document"/>
|
|
<field name="binding_view_types">list,kanban</field>
|
|
<field name="state">code</field>
|
|
<field name="code">
|
|
if records and len(records) == 1:
|
|
action = records.action_create_invoice()
|
|
else:
|
|
raise UserError(_("Select exactly one document to convert into a vendor invoice."))
|
|
</field>
|
|
</record>
|
|
</odoo>
|