intial version of open workshop v13.0
This commit is contained in:
parent
d120089c0b
commit
9ae8b095da
|
|
@ -1,28 +1,20 @@
|
||||||
{
|
{
|
||||||
'name': 'Open Workshop',
|
'name': 'POS Open Workshop',
|
||||||
'version': '1.0',
|
'license': 'AGPL-3',
|
||||||
'author': 'Dein Name / Deine Organisation',
|
'version': '13.0.1.0.0',
|
||||||
'category': 'Custom',
|
'summary': 'Erstellt Maschinenfreigaben basierend auf POS-Einweisungsprodukten',
|
||||||
'summary': 'Verwaltung von Maschinen & Einweisungen in einer offenen Werkstatt',
|
'depends': ['point_of_sale'],
|
||||||
'description': """
|
'author': 'matthias.lotz',
|
||||||
Dieses Modul fügt zwei neue Modelle hinzu:
|
'category': 'Point of Sale',
|
||||||
- Maschinen (mit Metadaten)
|
|
||||||
- Maschineneinweisungen (Verknüpfung zwischen Partner und Maschine)
|
|
||||||
|
|
||||||
Außerdem wird das Partnerformular erweitert, damit man direkt sieht,
|
|
||||||
für welche Maschinen ein Partner bereits eingewiesen ist.
|
|
||||||
""",
|
|
||||||
'depends': [
|
|
||||||
'base',
|
|
||||||
'point_of_sale',
|
|
||||||
],
|
|
||||||
'data': [
|
'data': [
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
'views/open_workshop_machine_views.xml',
|
'views/machine_area_views.xml',
|
||||||
'views/open_workshop_training_views.xml',
|
'views/machine_views.xml', # <--- diese Zeile hinzufügen
|
||||||
'views/res_partner_views.xml',
|
'views/res_partner_view.xml',
|
||||||
|
'views/menu_views.xml',
|
||||||
|
],
|
||||||
|
'demo': [
|
||||||
|
'demo/demo_data.xml', # <--- DEMO-DATEN HINZUGEFÜGT
|
||||||
],
|
],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
'application': True,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
154
data/demo_data.xml
Normal file
154
data/demo_data.xml
Normal file
|
|
@ -0,0 +1,154 @@
|
||||||
|
<odoo noupdate="1">
|
||||||
|
|
||||||
|
<!-- Bereiche -->
|
||||||
|
<record id="area_fablab" model="ows.machine.area">
|
||||||
|
<field name="name">Fablab</field>
|
||||||
|
<field name="color">3</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="area_holz" model="ows.machine.area">
|
||||||
|
<field name="name">Holzbereich</field>
|
||||||
|
<field name="color">1</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="area_metall" model="ows.machine.area">
|
||||||
|
<field name="name">Metallbereich</field>
|
||||||
|
<field name="color">2</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="area_elektronik" model="ows.machine.area">
|
||||||
|
<field name="name">Elektronikbereich</field>
|
||||||
|
<field name="color">4</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Maschinen im Fablab -->
|
||||||
|
<record id="machine_sabako_laser" model="ows.machine">
|
||||||
|
<field name="name">Sabako Laser</field>
|
||||||
|
<field name="code">sabako_laser</field>
|
||||||
|
<field name="area_id" ref="area_fablab"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_prusa" model="ows.machine">
|
||||||
|
<field name="name">Prusa</field>
|
||||||
|
<field name="code">prusa</field>
|
||||||
|
<field name="area_id" ref="area_fablab"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_prusa_mmu" model="ows.machine">
|
||||||
|
<field name="name">Prusa MMU</field>
|
||||||
|
<field name="code">prusa_mmu</field>
|
||||||
|
<field name="area_id" ref="area_fablab"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_3d_delta" model="ows.machine">
|
||||||
|
<field name="name">3D Delta</field>
|
||||||
|
<field name="code">3d_delta</field>
|
||||||
|
<field name="area_id" ref="area_fablab"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_cnc_beamicon" model="ows.machine">
|
||||||
|
<field name="name">CNC Beamicon</field>
|
||||||
|
<field name="code">cnc_beamicon</field>
|
||||||
|
<field name="area_id" ref="area_fablab"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Maschinen im Holzbereich -->
|
||||||
|
<record id="machine_formatkreissaege" model="ows.machine">
|
||||||
|
<field name="name">Formatkreissäge</field>
|
||||||
|
<field name="code">formatkreissaege</field>
|
||||||
|
<field name="area_id" ref="area_holz"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_bandsaege_holz" model="ows.machine">
|
||||||
|
<field name="name">Bandsäge</field>
|
||||||
|
<field name="code">bandsaege_holz</field>
|
||||||
|
<field name="area_id" ref="area_holz"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_abrichte" model="ows.machine">
|
||||||
|
<field name="name">Abricht Dickenhobel</field>
|
||||||
|
<field name="code">dickenhobel</field>
|
||||||
|
<field name="area_id" ref="area_holz"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_drechselbank" model="ows.machine">
|
||||||
|
<field name="name">Drechselbank</field>
|
||||||
|
<field name="code">drechselbank</field>
|
||||||
|
<field name="area_id" ref="area_holz"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_festool_domino" model="ows.machine">
|
||||||
|
<field name="name">Festool Domino Fräse</field>
|
||||||
|
<field name="code">festool_domino</field>
|
||||||
|
<field name="area_id" ref="area_holz"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_maffel_duo" model="ows.machine">
|
||||||
|
<field name="name">Maffel Duo Dübler</field>
|
||||||
|
<field name="code">maffel_duo</field>
|
||||||
|
<field name="area_id" ref="area_holz"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_lamello" model="ows.machine">
|
||||||
|
<field name="name">Lamello Zeta P2</field>
|
||||||
|
<field name="code">lamello_zeta_p2</field>
|
||||||
|
<field name="area_id" ref="area_holz"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Maschinen im Metallbereich -->
|
||||||
|
<record id="machine_kreissaege_metall" model="ows.machine">
|
||||||
|
<field name="name">Kreissäge</field>
|
||||||
|
<field name="code">kreissaege_metall</field>
|
||||||
|
<field name="area_id" ref="area_metall"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_bandsaege_metall" model="ows.machine">
|
||||||
|
<field name="name">Bandsäge</field>
|
||||||
|
<field name="code">bandsaege_metall</field>
|
||||||
|
<field name="area_id" ref="area_metall"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_mig_mag" model="ows.machine">
|
||||||
|
<field name="name">MIG/MAG Schweißgeräte</field>
|
||||||
|
<field name="code">mig_mag</field>
|
||||||
|
<field name="area_id" ref="area_metall"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_wig" model="ows.machine">
|
||||||
|
<field name="name">WIG Schweißgerät</field>
|
||||||
|
<field name="code">wig</field>
|
||||||
|
<field name="area_id" ref="area_metall"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_schweissen" model="ows.machine">
|
||||||
|
<field name="name">Schweißen allgemein</field>
|
||||||
|
<field name="code">schweissen_allgemein</field>
|
||||||
|
<field name="area_id" ref="area_metall"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_drehbank" model="ows.machine">
|
||||||
|
<field name="name">Drehbank</field>
|
||||||
|
<field name="code">drehbank</field>
|
||||||
|
<field name="area_id" ref="area_metall"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_fraese" model="ows.machine">
|
||||||
|
<field name="name">Fräse</field>
|
||||||
|
<field name="code">fraese</field>
|
||||||
|
<field name="area_id" ref="area_metall"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="machine_abkantbank" model="ows.machine">
|
||||||
|
<field name="name">Abkantbank</field>
|
||||||
|
<field name="code">abkantbank</field>
|
||||||
|
<field name="area_id" ref="area_metall"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Maschine im Elektronikbereich -->
|
||||||
|
<record id="machine_loetkolben" model="ows.machine">
|
||||||
|
<field name="name">Lötkolben</field>
|
||||||
|
<field name="code">loetkolben</field>
|
||||||
|
<field name="area_id" ref="area_elektronik"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
Name,Maschinen-Code,Standort,Active,Beschreibung
|
|
||||||
Standbohrmaschine,M-0001,Allgemein,1,Beschreibung 1
|
|
||||||
Kantenschleifer,M-0001,Holz,1,Beschreibung 1
|
|
||||||
Tischfräse,M-0001,Holz,1,Beschreibung 1
|
|
||||||
Felder Kreissäge,M-0001,Holz,1,Beschreibung 1
|
|
||||||
Felder Abricht-Dickenhobel,M-0001,Holz,1,Beschreibung 1
|
|
||||||
Felder Fräse,M-0001,Holz,1,Beschreibung 1
|
|
||||||
Felder Bandsäge,M-0001,Holz,1,Beschreibung 1
|
|
||||||
Drechselbank,M-0001,Holz,1,Beschreibung 1
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from . import machine
|
from . import ows_models
|
||||||
from . import training
|
from . import pos_order
|
||||||
from . import res_partner
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
from odoo import models, fields, api
|
|
||||||
|
|
||||||
class OpenWorkshopMachine(models.Model):
|
|
||||||
_name = 'open.workshop.machine'
|
|
||||||
_description = 'Open Workshop Machine'
|
|
||||||
|
|
||||||
name = fields.Char(string='Name', required=True)
|
|
||||||
code = fields.Char(string='Maschinen-Code', help='Interner Code oder Inventar-Nr.')
|
|
||||||
location = fields.Char(string='Standort')
|
|
||||||
description = fields.Text(string='Beschreibung')
|
|
||||||
active = fields.Boolean(default=True)
|
|
||||||
|
|
||||||
65
models/ows_models.py
Normal file
65
models/ows_models.py
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
class OwsMachineArea(models.Model):
|
||||||
|
_name = 'ows.machine.area'
|
||||||
|
_table = "ows_machine_area"
|
||||||
|
_description = 'OWS: Maschinenbereich'
|
||||||
|
_order = 'name'
|
||||||
|
|
||||||
|
name = fields.Char(required=True, translate=True)
|
||||||
|
color = fields.Integer(string="Farbe")
|
||||||
|
|
||||||
|
|
||||||
|
class OwsMachine(models.Model):
|
||||||
|
_name = 'ows.machine'
|
||||||
|
_table = 'ows_machine'
|
||||||
|
_description = 'OWS: Maschine'
|
||||||
|
|
||||||
|
name = fields.Char(required=True, translate=True)
|
||||||
|
code = fields.Char(required=True, help="Eindeutiger Kurzcode, z.B. 'lasercutter'")
|
||||||
|
description = fields.Text()
|
||||||
|
active = fields.Boolean(default=True)
|
||||||
|
|
||||||
|
area_id = fields.Many2one('ows.machine.area', string='Bereich')
|
||||||
|
|
||||||
|
_sql_constraints = [
|
||||||
|
('code_unique', 'unique(code)', 'Maschinencode muss eindeutig sein.')
|
||||||
|
]
|
||||||
|
|
||||||
|
def name_get(self):
|
||||||
|
return [(rec.id, f"{rec.name} ({rec.code})") for rec in self]
|
||||||
|
|
||||||
|
|
||||||
|
class OwsMachineAccess(models.Model):
|
||||||
|
_name = 'ows.machine.access'
|
||||||
|
_table = 'ows_machine_access'
|
||||||
|
_description = 'OWS: Maschinenfreigabe'
|
||||||
|
_order = 'partner_id, machine_id'
|
||||||
|
|
||||||
|
partner_id = fields.Many2one('res.partner', required=True, ondelete='cascade')
|
||||||
|
machine_id = fields.Many2one('ows.machine', required=True)
|
||||||
|
date_granted = fields.Date(default=fields.Date.today)
|
||||||
|
date_expiry = fields.Date(string="Ablaufdatum")
|
||||||
|
granted_by_pos = fields.Boolean(default=True)
|
||||||
|
|
||||||
|
_sql_constraints = [
|
||||||
|
('partner_machine_unique', 'unique(partner_id, machine_id)', 'Der Kunde hat diese Freigabe bereits.')
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class OwsMachineProduct(models.Model):
|
||||||
|
_name = 'ows.machine.product'
|
||||||
|
_table = 'ows_machine_product'
|
||||||
|
_description = 'OWS: Zurordnung Produkt der Einweisung zur die Maschine'
|
||||||
|
|
||||||
|
product_id = fields.Many2one('product.product', required=True, domain=[('available_in_pos', '=', True)], ondelete='cascade')
|
||||||
|
machine_id = fields.Many2one('ows.machine', required=True, ondelete='cascade')
|
||||||
|
|
||||||
|
class ResPartner(models.Model):
|
||||||
|
_inherit = 'res.partner'
|
||||||
|
|
||||||
|
machine_access_ids = fields.One2many(
|
||||||
|
'ows.machine.access',
|
||||||
|
'partner_id',
|
||||||
|
string='Maschinenfreigaben'
|
||||||
|
)
|
||||||
51
models/pos_order.py
Normal file
51
models/pos_order.py
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
from odoo import models, fields, api
|
||||||
|
|
||||||
|
import debugpy
|
||||||
|
import logging
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
_logger.info("✅ pos_order.py geladen")
|
||||||
|
|
||||||
|
debugpy.listen(("0.0.0.0", 5678))
|
||||||
|
print("✅ debugpy wartet auf Verbindung (Port 5678) ...")
|
||||||
|
# Optional: Starte erst, wenn VS Code verbunden ist
|
||||||
|
#debugpy.wait_for_client()
|
||||||
|
|
||||||
|
class PosOrder(models.Model):
|
||||||
|
_inherit = 'pos.order'
|
||||||
|
|
||||||
|
def _process_order(self, order, draft, existing_order):
|
||||||
|
pos_order_id = super(PosOrder, self)._process_order(order, draft, existing_order)
|
||||||
|
pos_order = self.browse(pos_order_id)
|
||||||
|
|
||||||
|
training_products = self.env['ows.machine.product'].search([])
|
||||||
|
product_map = {
|
||||||
|
tp.product_id.product_tmpl_id.id: tp.machine_id.id
|
||||||
|
for tp in training_products
|
||||||
|
}
|
||||||
|
|
||||||
|
partner = pos_order.partner_id
|
||||||
|
if not partner:
|
||||||
|
_logger.info("🟡 POS-Bestellung ohne Partner – keine Freigabe möglich")
|
||||||
|
return pos_order_id
|
||||||
|
|
||||||
|
for line in pos_order.lines:
|
||||||
|
product_tmpl_id = line.product_id.product_tmpl_id.id
|
||||||
|
machine_id = product_map.get(product_tmpl_id)
|
||||||
|
|
||||||
|
_logger.info("🔍 Prüfe Produkt %s → Maschine ID: %s", line.product_id.display_name, machine_id)
|
||||||
|
|
||||||
|
if machine_id:
|
||||||
|
already_exists = self.env['ows.machine.access'].search([
|
||||||
|
('partner_id', '=', partner.id),
|
||||||
|
('machine_id', '=', machine_id)
|
||||||
|
])
|
||||||
|
if not already_exists:
|
||||||
|
self.env['ows.machine.access'].create({
|
||||||
|
'partner_id': partner.id,
|
||||||
|
'machine_id': machine_id,
|
||||||
|
'granted_by_pos': True
|
||||||
|
})
|
||||||
|
_logger.info("✅ Maschinenfreigabe erstellt: %s für %s", machine_id, partner.name)
|
||||||
|
|
||||||
|
return pos_order_id
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
from odoo import models, fields
|
|
||||||
|
|
||||||
class ResPartner(models.Model):
|
|
||||||
_inherit = 'res.partner'
|
|
||||||
|
|
||||||
machine_training_ids = fields.One2many(
|
|
||||||
'open.workshop.machine.training',
|
|
||||||
'partner_id',
|
|
||||||
string='Maschineneinweisungen'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
from odoo import models, fields, api
|
|
||||||
|
|
||||||
class OpenWorkshopMachineTraining(models.Model):
|
|
||||||
_name = 'open.workshop.machine.training'
|
|
||||||
_description = 'Machine Training for Partners'
|
|
||||||
|
|
||||||
partner_id = fields.Many2one(
|
|
||||||
'res.partner',
|
|
||||||
string='Partner',
|
|
||||||
required=True,
|
|
||||||
ondelete='cascade'
|
|
||||||
)
|
|
||||||
machine_id = fields.Many2one(
|
|
||||||
'open.workshop.machine',
|
|
||||||
string='Maschine',
|
|
||||||
required=True,
|
|
||||||
ondelete='restrict'
|
|
||||||
)
|
|
||||||
training_date = fields.Datetime(
|
|
||||||
string='Datum der Einweisung',
|
|
||||||
default=fields.Datetime.now
|
|
||||||
)
|
|
||||||
notes = fields.Text(string='Notizen')
|
|
||||||
|
|
||||||
trainer_id = fields.Many2one(
|
|
||||||
'res.users',
|
|
||||||
string='Einweiser/In'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_open_workshop_machine_user,access_open_workshop_machine_user,model_open_workshop_machine,base.group_user,1,1,1,1
|
access_ows_machine_access_user,ows.machine.access,model_ows_machine_access,base.group_user,1,1,1,1
|
||||||
access_open_workshop_training_user,access_open_workshop_training_user,model_open_workshop_machine_training,base.group_user,1,1,1,1
|
access_ows_machine_user,ows.machine,model_ows_machine,base.group_user,1,1,1,1
|
||||||
|
access_ows_machine_product_user,ows.machine.product,model_ows_machine_product,base.group_user,1,1,1,1
|
||||||
|
access_ows_machine_area,ows.machine.area,model_ows_machine_area,base.group_user,1,1,1,1
|
||||||
|
|
|
||||||
|
37
views/machine_area_views.xml
Normal file
37
views/machine_area_views.xml
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
<odoo>
|
||||||
|
<!-- Action zum Anzeigen der Bereiche -->
|
||||||
|
<record id="action_machine_area_list" model="ir.actions.act_window">
|
||||||
|
<field name="name">Maschinenbereiche</field>
|
||||||
|
<field name="res_model">ows.machine.area</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Menüpunkt unter Maschinen > Konfiguration -->
|
||||||
|
<menuitem id="menu_machine_area" name="Bereiche" parent="menu_machine_config" action="open_workshop.action_machine_area_list" sequence="30"/>
|
||||||
|
|
||||||
|
<!-- Listenansicht -->
|
||||||
|
<record id="view_machine_area_tree" model="ir.ui.view">
|
||||||
|
<field name="name">ows.machine.area.tree</field>
|
||||||
|
<field name="model">ows.machine.area</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="color" widget="color_picker"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Formularansicht -->
|
||||||
|
<record id="view_machine_area_form" model="ir.ui.view">
|
||||||
|
<field name="name">ows.machine.area.form</field>
|
||||||
|
<field name="model">ows.machine.area</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Maschinenbereich">
|
||||||
|
<group>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="color" widget="color_picker"/>
|
||||||
|
</group>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
34
views/machine_views.xml
Normal file
34
views/machine_views.xml
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
<odoo>
|
||||||
|
<!-- Maschinen Listenansicht -->
|
||||||
|
<record id="view_machine_tree" model="ir.ui.view">
|
||||||
|
<field name="name">ows.machine.tree</field>
|
||||||
|
<field name="model">ows.machine</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="code"/>
|
||||||
|
<field name="area_id" widget="many2one_color"/>
|
||||||
|
<field name="active"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Maschinen Formularansicht -->
|
||||||
|
<record id="view_machine_form" model="ir.ui.view">
|
||||||
|
<field name="name">ows.machine.form</field>
|
||||||
|
<field name="model">ows.machine</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Maschine">
|
||||||
|
<sheet>
|
||||||
|
<group>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="code"/>
|
||||||
|
<field name="area_id"/>
|
||||||
|
<field name="active"/>
|
||||||
|
<field name="description"/>
|
||||||
|
</group>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
46
views/menu_views.xml
Normal file
46
views/menu_views.xml
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
<odoo>
|
||||||
|
<!-- Maschinenliste -->
|
||||||
|
<record id="action_machine_list" model="ir.actions.act_window">
|
||||||
|
<field name="name">Maschinen</field>
|
||||||
|
<field name="res_model">ows.machine</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Trainingsprodukt-Liste -->
|
||||||
|
<record id="action_training_product_list" model="ir.actions.act_window">
|
||||||
|
<field name="name">Einweisungs-Produkte</field>
|
||||||
|
<field name="res_model">ows.machine.product</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Menüstruktur -->
|
||||||
|
<menuitem id="menu_machine_root" name="Maschinen" sequence="10"/>
|
||||||
|
<menuitem id="menu_machine_config" name="Konfiguration" parent="menu_machine_root" sequence="10"/>
|
||||||
|
<menuitem id="menu_machine_list" name="Maschinen" parent="menu_machine_config" action="open_workshop.action_machine_list" sequence="10"/>
|
||||||
|
<menuitem id="menu_training_product" name="Einweisungs-Produkte" parent="menu_machine_config" action="open_workshop.action_training_product_list" sequence="20"/>
|
||||||
|
|
||||||
|
<!-- List & Form Views für training.product -->
|
||||||
|
<record id="view_training_product_tree" model="ir.ui.view">
|
||||||
|
<field name="name">ows.machine.product.tree</field>
|
||||||
|
<field name="model">ows.machine.product</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree>
|
||||||
|
<field name="product_id"/>
|
||||||
|
<field name="machine_id"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_training_product_form" model="ir.ui.view">
|
||||||
|
<field name="name">ows.machine.product.form</field>
|
||||||
|
<field name="model">ows.machine.product</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Einweisungs-Produkt">
|
||||||
|
<group>
|
||||||
|
<field name="product_id"/>
|
||||||
|
<field name="machine_id"/>
|
||||||
|
</group>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
<record id="action_open_workshop_machine" model="ir.actions.act_window">
|
|
||||||
<field name="name">Maschinen</field>
|
|
||||||
<field name="res_model">open.workshop.machine</field>
|
|
||||||
<field name="view_mode">list,form</field>
|
|
||||||
<field name="help">Verwaltung aller Maschinen in der offenen Werkstatt</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="open_workshop_main_menu"
|
|
||||||
name="Offene Werkstatt"
|
|
||||||
sequence="10"/>
|
|
||||||
|
|
||||||
<menuitem id="open_workshop_menu_machine"
|
|
||||||
name="Maschinen"
|
|
||||||
parent="open_workshop_main_menu"
|
|
||||||
action="action_open_workshop_machine"
|
|
||||||
sequence="20"/>
|
|
||||||
|
|
||||||
<record id="view_open_workshop_machine_tree" model="ir.ui.view">
|
|
||||||
<field name="name">open.workshop.machine.tree</field>
|
|
||||||
<field name="model">open.workshop.machine</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<list string="Maschinen">
|
|
||||||
<field name="name"/>
|
|
||||||
<field name="code"/>
|
|
||||||
<field name="description"/>
|
|
||||||
<field name="location"/>
|
|
||||||
<field name="active"/>
|
|
||||||
</list>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="view_open_workshop_machine_form" model="ir.ui.view">
|
|
||||||
<field name="name">open.workshop.machine.form</field>
|
|
||||||
<field name="model">open.workshop.machine</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Maschine">
|
|
||||||
<sheet>
|
|
||||||
<group>
|
|
||||||
<field name="name"/>
|
|
||||||
<field name="code"/>
|
|
||||||
<field name="location"/>
|
|
||||||
<field name="active"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="description"/>
|
|
||||||
</group>
|
|
||||||
</sheet>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
</odoo>
|
|
||||||
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
<record id="action_open_workshop_training" model="ir.actions.act_window">
|
|
||||||
<field name="name">Maschineneinweisungen</field>
|
|
||||||
<field name="res_model">open.workshop.machine.training</field>
|
|
||||||
<field name="view_mode">list,form</field>
|
|
||||||
<field name="help">Verwaltung aller Maschineneinweisungen (Partner -> Maschine)</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="open_workshop_menu_training"
|
|
||||||
name="Einweisungen"
|
|
||||||
parent="open_workshop_main_menu"
|
|
||||||
action="action_open_workshop_training"
|
|
||||||
sequence="30"/>
|
|
||||||
|
|
||||||
<record id="view_open_workshop_training_tree" model="ir.ui.view">
|
|
||||||
<field name="name">open.workshop.machine.training.tree</field>
|
|
||||||
<field name="model">open.workshop.machine.training</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<list string="Maschineneinweisungen">
|
|
||||||
<field name="partner_id"/>
|
|
||||||
<field name="machine_id"/>
|
|
||||||
<field name="training_date"/>
|
|
||||||
</list>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="view_open_workshop_training_form" model="ir.ui.view">
|
|
||||||
<field name="name">open.workshop.machine.training.form</field>
|
|
||||||
<field name="model">open.workshop.machine.training</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Maschineneinweisung">
|
|
||||||
<sheet>
|
|
||||||
<group>
|
|
||||||
<field name="partner_id"/>
|
|
||||||
<field name="machine_id"/>
|
|
||||||
<field name="training_date"/>
|
|
||||||
<field name="trainer_id"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="notes"/>
|
|
||||||
</group>
|
|
||||||
</sheet>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
</odoo>
|
|
||||||
|
|
||||||
21
views/res_partner_view.xml
Normal file
21
views/res_partner_view.xml
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
<odoo>
|
||||||
|
<record id="view_partner_form_inherit_open_workshop" model="ir.ui.view">
|
||||||
|
<field name="name">res.partner.form.ows.machine.access</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<notebook position="inside">
|
||||||
|
<page string="Maschinenfreigaben">
|
||||||
|
<field name="machine_access_ids">
|
||||||
|
<tree>
|
||||||
|
<field name="machine_id"/>
|
||||||
|
<field name="date_granted"/>
|
||||||
|
<field name="date_expiry"/>
|
||||||
|
<field name="granted_by_pos"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</page>
|
||||||
|
</notebook>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
<record id="view_partner_form_open_workshop_inherit" model="ir.ui.view">
|
|
||||||
<field name="name">res.partner.form.open.workshop.inherit</field>
|
|
||||||
<field name="model">res.partner</field>
|
|
||||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//notebook" position="inside">
|
|
||||||
<page string="Maschineneinweisungen">
|
|
||||||
<field name="machine_training_ids">
|
|
||||||
<list editable="bottom">
|
|
||||||
<field name="machine_id"/>
|
|
||||||
<field name="training_date"/>
|
|
||||||
<field name="trainer_id"/>
|
|
||||||
</list>
|
|
||||||
<form>
|
|
||||||
<group>
|
|
||||||
<field name="machine_id"/>
|
|
||||||
<field name="training_date"/>
|
|
||||||
<field name="trainer_id"/>
|
|
||||||
<field name="notes"/>
|
|
||||||
</group>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</page>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
</odoo>
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user