Fertigung Aktionen

Fertigungs-Prozesse automatisieren.

Aktionen

Fertigungsauftrag abbrechen

Navigieren Sie nach Einstellungen > Technisch > Server Aktionen und erstellen Sie einen neuen Eintrag:

Name der Aktion: Fertigungsauftrag abbrechen
Modell: mrp.production
Folgeaktion: Python-Code ausführen

Kopieren Sie die folgenden Zeilen in das Feld Python Code:

for rec in records:  
  rec.write({'state': 'cancel'})

Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.

In der Liste der Fertigungsauftrag können Sie die Einträge markieren und Aktion > Fertigungsauftrag abbrechen auswählen.

Reload BoM

Navigieren Sie nach Einstellungen > Technisch > Server Aktionen und erstellen Sie einen neuen Eintrag:

Name der Aktion: Reload BoM
Modell: mrp.production
Folgeaktion: Python-Code ausführen

Kopieren Sie die folgenden Zeilen in das Feld Pythoncode:

for record in records:  
  record._compute_allowed_product_ids()  
  record._onchange_bom_id()  
  record._onchange_move_raw()  
  record._onchange_move_finished()  
  record._onchange_location()

Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.

Im Fertigungsauftrag erscheint nun in der Auswahl Aktion das Menu Reload BoM.

Aktion "Material-Reservationen entfernen" erstellen

Navigieren Sie nach Einstellungen > Technisch > Server Aktionen und erstellen Sie einen neuen Eintrag:

Name der Aktion: Material-Reservationen entfernen
Modell: mrp.production
Folgeaktion: Python-Code ausführen

Kopieren Sie die folgenden Zeilen in das Feld Pythoncode:

for production in records:  
  production.move_line_raw_ids.unlink()

Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.

Im Fertigungsauftrag erscheint nun in der Auswahl Aktion das Menu Material-Reservation entfernen.

Aktion "Material-Reservationen erstellen" erstellen

Navigieren Sie nach Einstellungen > Technisch > Server Aktionen und erstellen Sie einen neuen Eintrag:

Name der Aktion: Material-Reservationen erstellen
Modell: mrp.production
Folgeaktion: Python-Code ausführen

Kopieren Sie die folgenden Zeilen in das Feld Pythoncode:

for production in records:  
  production.action_assign()

Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.

Im Fertigungsauftrag erscheint nun in der Auswahl Aktion das Menu Material-Reservation entfernen.

Automatisierte Aktionen

Lot-Nummer generieren

Mit dieser automatischen Aktion wird bei der Bestätigung des Fertigungsauftrag automatisch eine Seriennummmer für das zu fertigende Produkt generiert.

Erstellen Sie unter Einstellungen > Technisch > Automation > Automatisierte Aktionen einen Eintrag mit diesen Werten:

Name der Aktion: Lot-Nummer generieren
Modell: mrp.production
Auslöser: Beim Aktualisieren
Trigger-Felder: state
Anzuwenden auf:

["&",["state","in",["confirmed","progress"]],["lot_producing_id","=",False]]

Python Code:

record.action_generate_serial()

Beispiel für eine automatische Aktion:

Geplante Aktionen

Material-Reservationen entfernen

Diese geplante Aktion entfernt regelmässig Material-Reservationen auf Fertigungsaufträgen.

Navigieren Sie nach Einstellungen > Technisch > Geplante Aktionen und erstellen Sie einen neuen Eintrag:

Name der Aktion: Material-Reservationen entfernen
Modell: ir.actions.server
Ausführen alle: 3 Stunden
Nächstes Ausführungsdatum: DD.MM.YYYY 09:00:00
Anzahl der Anrufe: -1
Folgeaktion: Python-Code ausführen

Kopieren Sie die folgenden Zeilen in das Feld Python Code:

# Lookup unfinished manufacturing orders
production_ids = env['mrp.production'].search([
  ('state', 'in', ['draft', 'confirmed', 'progress', 'to_close']),
  ('reservation_state', 'in', ['assigned']),
])

# raise Warning(production_ids.mapped('name'))

# Unreserve material
messages = []
error_messages = []
for production in production_ids:
  try:
    messages.append('Unreserve materials for %s.' % (production.name))
    production.move_line_raw_ids.unlink()
  except:
    error_messages.append('While unlinking move lines for %s an error occured.' % (production.name))

if messages and not error_messages:
  log(' '.join(messages))
if error_messages:
  log(' '.join(error_messages), level='error')

📝 Edit on GitHubopen in new window