Initial commit

This commit is contained in:
gsinghpal
2026-02-22 01:22:18 -05:00
commit 5200d5baf0
2394 changed files with 386834 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
"""
Fusion Accounting - EDI Import Wizard
Provides a transient model that lets users upload a UBL 2.1 or CII XML
file and create a draft invoice from its contents.
Original implementation by Nexa Systems Inc.
"""
import base64
import logging
from odoo import api, fields, models, _
from odoo.exceptions import UserError
_log = logging.getLogger(__name__)
class FusionEDIImportWizard(models.TransientModel):
"""
File-upload wizard for importing electronic invoices in UBL 2.1 or
UN/CEFACT CII format.
"""
_name = "fusion.edi.import.wizard"
_description = "Import EDI Invoice"
xml_file = fields.Binary(
string="XML File",
required=True,
help="Select a UBL 2.1 or CII XML invoice file to import.",
)
xml_filename = fields.Char(
string="File Name",
)
move_type = fields.Selection(
selection=[
("out_invoice", "Customer Invoice"),
("out_refund", "Customer Credit Note"),
("in_invoice", "Vendor Bill"),
("in_refund", "Vendor Credit Note"),
],
string="Document Type",
default="out_invoice",
help=(
"Fallback document type if the XML does not specify one. "
"The parser may override this based on the XML content."
),
)
def action_import(self):
"""Parse the uploaded XML and create a draft invoice.
Returns:
dict: A window action opening the newly created invoice.
"""
self.ensure_one()
if not self.xml_file:
raise UserError(_("Please select an XML file to import."))
xml_bytes = base64.b64decode(self.xml_file)
AccountMove = self.env["account.move"].with_context(
default_move_type=self.move_type,
)
move = AccountMove.create_invoice_from_xml(xml_bytes)
return {
"type": "ir.actions.act_window",
"name": _("Imported Invoice"),
"res_model": "account.move",
"res_id": move.id,
"view_mode": "form",
"target": "current",
}