Initial commit: OCA Edi packages (42 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:05 +02:00
commit df976c03db
2184 changed files with 571602 additions and 0 deletions

View file

@ -0,0 +1,2 @@
from . import wamas_ubl_wiz_check
from . import wamas_ubl_wiz_simulate

View file

@ -0,0 +1,59 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# Copyright 2023 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import json
from base64 import b64decode
from odoo import _, api, fields, models
class WamasUblWizCheck(models.TransientModel):
_name = "wamas.ubl.wiz.check"
_description = "Check WAMAS File Wizard"
wamas_file = fields.Binary(
"WAMAS File",
required=True,
)
wamas_filename = fields.Char("WAMAS Filename")
output = fields.Text()
supported_telegram = fields.Text(
default=lambda self: ", ".join(
self.env["base.wamas.ubl"].get_supported_telegram()
)
)
@api.onchange("wamas_filename")
def _onchange_wamas_filename(self):
self.output = False
def btn_check(self):
self.ensure_one()
wamas_file_decoded = b64decode(self.wamas_file).decode("iso-8859-1")
bwu_obj = self.env["base.wamas.ubl"]
try:
wamas_type = bwu_obj.get_wamas_type(wamas_file_decoded)
data = bwu_obj.wamas2dict(wamas_file_decoded)
self.output = (
_(
"""- WAMAS Type: %(wamas_type)s
- Data: %(data)s"""
)
% dict(
wamas_type=wamas_type,
data=json.dumps(data, indent=4, sort_keys=False),
)
)
except Exception as e:
self.output = _("""- Error: %s""") % (e)
return {
"view_mode": "form",
"res_model": "wamas.ubl.wiz.check",
"res_id": self.id,
"type": "ir.actions.act_window",
"target": "new",
}

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="wamas_ubl_wiz_check_form" model="ir.ui.view">
<field name="name">wamas.ubl.wiz.check.form</field>
<field name="model">wamas.ubl.wiz.check</field>
<field name="arch" type="xml">
<form string="Check WAMAS File">
<group>
<div class="alert alert-info" role="alert" col="1" colspan="2">
This wizard will help you extract data of a WAMAS file into:
<ul>
<li>WAMAS Type</li>
<li>Telegram Type</li>
<li>Data</li>
</ul>
Only supports telegram type(s) bellow:
<field name="supported_telegram" readonly="1" />
</div>
</group>
<group>
<field name="wamas_file" filename="wamas_filename" />
<field name="wamas_filename" invisible="1" />
<field
name="output"
attrs="{'invisible': [('output', '=', False)], 'readonly':[('output', '!=', False)]}"
/>
</group>
<footer>
<button
name="btn_check"
type="object"
class="oe_highlight"
string="Check"
/>
<button special="cancel" string="Cancel" class="oe_link" />
</footer>
</form>
</field>
</record>
<record id="wamas_ubl_wiz_check_action" model="ir.actions.act_window">
<field name="name">Check WAMAS File</field>
<field name="res_model">wamas.ubl.wiz.check</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="context">{}</field>
</record>
</odoo>

View file

@ -0,0 +1,63 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# Copyright 2023 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from base64 import b64decode, b64encode
from odoo import _, api, fields, models
class WamasUblWizSimulate(models.TransientModel):
_name = "wamas.ubl.wiz.simulate"
_description = "Simulate WAMAS File Wizard"
wamas_file = fields.Binary(
"WAMAS File",
required=True,
)
wamas_filename = fields.Char("WAMAS Filename")
output_wamas_file = fields.Binary("Output WAMAS File")
output_wamas_filename = fields.Char("Output WAMAS Filename")
output = fields.Text()
supported_telegram = fields.Text(
default=lambda self: self._default_supported_telegram()
)
@api.model
def _default_supported_telegram(self):
bwu_obj = self.env["base.wamas.ubl"]
dict_telegram = bwu_obj.get_supported_telegram_w2w()
res = ""
for from_telegram, to_telegrams in dict_telegram.items():
res += "- %(from_telegram)s => %(to_telegram)s\n" % {
"from_telegram": from_telegram,
"to_telegram": ", ".join(to_telegrams),
}
return res
@api.onchange("wamas_filename")
def _onchange_wamas_filename(self):
self.output_wamas_file = False
self.output_wamas_filename = False
self.output = False
def btn_simulate(self):
self.ensure_one()
wamas_file_decoded = b64decode(self.wamas_file).decode("iso-8859-1")
try:
bwu_obj = self.env["base.wamas.ubl"]
output_wamas = bwu_obj.wamas2wamas(wamas_file_decoded).encode("iso-8859-1")
self.output_wamas_file = b64encode(output_wamas)
self.output_wamas_filename = "OUTPUT_" + self.wamas_filename
except Exception as e:
self.output = _("""- Error: %s""") % (e)
return {
"view_mode": "form",
"res_model": "wamas.ubl.wiz.simulate",
"res_id": self.id,
"type": "ir.actions.act_window",
"target": "new",
}

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="wamas_ubl_wiz_simulate_form" model="ir.ui.view">
<field name="name">wamas.ubl.wiz.simulate.form</field>
<field name="model">wamas.ubl.wiz.simulate</field>
<field name="arch" type="xml">
<form string="Simulate WAMAS File">
<group>
<div class="alert alert-info" role="alert" col="1" colspan="2">
<div
>This wizard will help you generate (simulating) a new WAMAS file from an existing WAMAS file.</div>
<div
>Only supports FROM telegram type TO telegram type(s) bellow:</div>
<field name="supported_telegram" readonly="1" />
</div>
</group>
<group>
<field name="wamas_file" filename="wamas_filename" />
<field name="wamas_filename" invisible="1" />
<field
name="output_wamas_file"
filename="output_wamas_filename"
attrs="{'invisible': [('output_wamas_file', '=', False)], 'readonly':[('output_wamas_file', '!=', False)]}"
/>
<field name="output_wamas_filename" invisible="1" />
<field
name="output"
attrs="{'invisible': [('output', '=', False)], 'readonly':[('output', '!=', False)]}"
/>
</group>
<footer>
<button
name="btn_simulate"
type="object"
class="oe_highlight"
string="Simulate"
/>
<button special="cancel" string="Cancel" class="oe_link" />
</footer>
</form>
</field>
</record>
<record id="wamas_ubl_wiz_simulate_action" model="ir.actions.act_window">
<field name="name">Simulate WAMAS File</field>
<field name="res_model">wamas.ubl.wiz.simulate</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="context">{}</field>
</record>
</odoo>