[IMP] open_workshop: add machine access overview to partner form
Added a read-only HTML view to the contact form showing all available machines grouped by area, including the access status, grant date, and expiry date for the selected partner. The overview provides a complete matrix view, even for machines without existing access records.
This commit is contained in:
parent
b749464fde
commit
3057f0cf80
|
|
@ -168,24 +168,21 @@ class ResPartner(models.Model):
|
|||
def _compute_machine_access_html(self):
|
||||
areas = self.env['ows.machine.area'].search([], order="name")
|
||||
for partner in self:
|
||||
html = "<div class='tab-content'><div class='tab-pane active' id='machine_access_tab'>"
|
||||
html += "<div class='o_group'>"
|
||||
|
||||
html = ""
|
||||
for area in areas:
|
||||
html += "<table class='o_group o_inner_group o_group_col_6'><tbody>"
|
||||
|
||||
# Bereichsüberschrift
|
||||
html += f"""
|
||||
<div class="o_form_sheet">
|
||||
<h3 class="o_form_label">{area.name}</h3>
|
||||
<table class="table table-sm table-bordered o_form_table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td colspan="3" style="width: 100%;">
|
||||
<div class="o_horizontal_separator">{area.name}</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="o_td_label"><label class="o_form_label"></label></td>
|
||||
<td class="o_td_label"><label class="o_form_label">Datum</label></td>
|
||||
<td class="o_td_label"><label class="o_form_label">Gültig bis</label></td>
|
||||
<th>Maschine</th>
|
||||
<th>Status</th>
|
||||
<th>Datum</th>
|
||||
<th>Gültig bis</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
"""
|
||||
|
||||
machines = self.env['ows.machine'].search([('area_id', '=', area.id)], order="name")
|
||||
|
|
@ -195,25 +192,26 @@ class ResPartner(models.Model):
|
|||
('partner_id', '=', partner.id),
|
||||
('machine_id', '=', machine.id),
|
||||
], limit=1)
|
||||
icon = "<span class='fa fa-check text-success'></span>" if access else "<span class='fa fa-times text-danger'></span>"
|
||||
icon = '<span class="text-success fa fa-check"/>' if access else '<span class="text-danger fa fa-times"/>'
|
||||
date_granted = access.date_granted.strftime('%Y-%m-%d') if access and access.date_granted else "-"
|
||||
date_expiry = access.date_expiry.strftime('%Y-%m-%d') if access and access.date_expiry else "-"
|
||||
|
||||
html += f"""
|
||||
<tr>
|
||||
<td class="o_td_label"><label class="o_form_label">{icon} {machine.name}</label></td>
|
||||
<td class="o_td_field">{date_granted}</td>
|
||||
<td class="o_td_field">{date_expiry}</td>
|
||||
<td>{machine.name}</td>
|
||||
<td>{icon}</td>
|
||||
<td>{date_granted}</td>
|
||||
<td>{date_expiry}</td>
|
||||
</tr>
|
||||
"""
|
||||
|
||||
html += "</tbody></table>"
|
||||
html += "</tbody></table></div>"
|
||||
|
||||
html += "</div></div></div>"
|
||||
partner.machine_access_html = html
|
||||
|
||||
|
||||
|
||||
|
||||
@api.model
|
||||
def migrate_existing_partners(self):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="machine_id"/>
|
||||
<field name="training_id" domain="[('categ_id.name', '=', 'Einweisungen')]"/>
|
||||
<field name="training_id" domain="[('categ_id.name', 'in', ['Einweisungen', 'Kurse'])]"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
<page string="Einweisungsprodukte">
|
||||
<field name="training_ids" context="{'default_machine_id': active_id}">
|
||||
<tree editable="bottom">
|
||||
<field name="training_id" domain="[('categ_id.name', '=', 'Einweisungen')]" />
|
||||
<field name="training_id" domain="[('categ_id.name', 'in', ['Einweisungen', 'Kurse'])]" />
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
|
|
|
|||
|
|
@ -1,34 +1,22 @@
|
|||
<odoo>
|
||||
<!-- Zentrale View für alle drei Tabs in garantierter Reihenfolge -->
|
||||
<record id="view_partner_form_inherit_open_workshop_tabs" model="ir.ui.view">
|
||||
<record id="view_partner_form_inherit_open_workshop_tabs" model="ir.ui.view">
|
||||
<field name="name">res.partner.form.ows.tabs</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//page[@name='sales_purchases']" position="before">
|
||||
|
||||
<!-- Tab 1: HOBBYHIMMEL Basis -->
|
||||
<page name="ows_basic" string="HOBBYHIMMEL Basis">
|
||||
<group name="container_row_2">
|
||||
<group string="Sicherheit">
|
||||
<page name="ows_machine_access" string="Offene Werkstatt (Hobbyhimmel)">
|
||||
<!-- EINWEISUNG: Zwei Felder nebeneinander -->
|
||||
<group name="container_row_2" string="Sicherheitseinweisung" col="2">
|
||||
<field name="security_briefing"/>
|
||||
<field name="security_id"/>
|
||||
</group>
|
||||
<group string="Zugang">
|
||||
<field name="rfid_card"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
|
||||
<!-- Tab 2: HOBBYHIMMEL Einweisungen (HTML) -->
|
||||
<page name="ows_machine_access_html" string="HOBBYHIMMEL Einweisungen">
|
||||
<field name="machine_access_html" readonly="1" widget="html"/>
|
||||
</page>
|
||||
|
||||
<!-- Tab 3: Einweisungen (Liste) -->
|
||||
<page name="ows_machine_access_list" string="Einweisungen (Liste)">
|
||||
<field name="machine_access_ids">
|
||||
<!-- MASCHINENFREIGABEN: Volle Breite -->
|
||||
<group string="Maschinenfreigaben" col="2">
|
||||
<field name="machine_access_ids" colspan="2" context="{'default_partner_id': id}" nolabel="1">
|
||||
<tree>
|
||||
<field name="machine_id"/>
|
||||
<field name="date_granted"/>
|
||||
|
|
@ -36,11 +24,16 @@
|
|||
<field name="granted_by_pos"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
</group>
|
||||
|
||||
<!-- ÜBERSICHT: Volle Breite -->
|
||||
<group string="Maschinenfreigaben Übersicht" >
|
||||
<field name="machine_access_html" colspan="2" readonly="1" widget="html" nolabel="1"/>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
<!-- Geburtstag direkt nach der USt-ID -->
|
||||
<record id="view_partner_form_inherit_ows_birthday" model="ir.ui.view">
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user