Zum Inhalt

← Dokumente

Dokumente Aktionen

Arbeitsflüsse mit Dokumenten automatisieren.

Aktionen

Dokumente aus Wareneingang taggen

Diese Serveraktion erfordert die Installation von Stock Lot Traceability List oder Stock MRP Traceability List. Die Aktion führt diese Schritte aus:

  • Für die ausgewählte Seriennummern die Traceability List anzeigen
  • Alle Wareneingänge aus der Traceability List filtern
  • Alle Dokument mit Verknüpfung auf einen gefilterten Wareneingang anzeigen
  • Diese Dokumente mit "Dokumente aus Wareneingang" taggen
flowchart TD
    A[Seriennummer] -->|in| B(Traceability List)
    B -->|enthält| C(Wareneingänge)
    E(Dokumente Wareingang) -->|tag| D[Dokumente]
    D -->|verknüpft| C

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

  • Name: Dokumente aus Wareneingang taggen
  • Modell: stock.lot oder mrp.production
  • Typ: Code ausführen
  • Code:
tag_name ='Dokumente aus Wareneingang'
document_tag = env['documents.tag'].search([('name', '=', tag_name)], limit=1)

# Remove tag from tagged documents
tagged_documents = env['documents.document'].search([('tag_ids', '=', document_tag.id)])
for tagged_document in tagged_documents:
      tagged_document.write({
      'tag_ids': tagged_document.tag_ids - document_tag
    })

for rec in records:

  # Get incoming picking ids
  traceability_lines = rec.traceability_line_ids
  incoming_lines = traceability_lines.filtered(lambda l: l.picking_id.picking_type_id.code == 'incoming' and l.product_id.tracking in ['serial', 'lot'])
  incoming_picking_ids = list(set(incoming_lines.mapped('picking_id.id')))

  # Search document linked to the picking ids
  documents = env['documents.document'].search([('res_model', '=', 'stock.picking'), ('res_id', 'in', incoming_picking_ids)])

  # Tag these documents
  for document in documents:
    document.write({
      'tag_ids': document.tag_ids + document_tag
    })

  message = 'Tagged %s documents with tag "%s".' % (len(documents), tag_name)

  action = {
    'type': 'ir.actions.client',
    'tag': 'display_notification',
    'params': {
      'message': message,
      'sticky': True
    }
  }

Die Aktion mit Kontextuelle Aktion Erstellen bestätigen.

Geplante Aktionen

Dokumente an Wareneingang zuordnen

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

  • Name: Dokumente an Wareneingang zuordnen
  • Modell: ir.actions.server
  • Ausführen alle: 1 Tage
  • Nächstes Ausführungsdatum: DD.MM.YYYY 06:00:00
  • Anzahl der Anrufe: -1
  • Typ: Code ausführen
  • Code:
tag = env['documents.tag'].search([ ('name','=','WE zugeordnet') ],limit=1)
folder = env['documents.document'].search([ ('name','=','Wareneingang') ],limit=1)
documents = env['documents.document'].search([ ('folder_id','=',folder.id),('res_model','=','documents.document') ])
pickings = env['stock.picking'].search([ ('picking_type_code', '=', 'incoming'),('state','in',['done']) ])

messages = []
for document in documents:
  name = document.name.replace('_','/').replace('.pdf','')
  picking = pickings.filtered(lambda p: p.name == name)
  if picking:
    document.write({
      'res_model': 'stock.picking',
      'res_id': picking[0].id,
      'tag_ids': [tag.id]
    })
    messages.append('Assigned document %s to stock picking %s.' % (document.name, picking.name))

if messages:
  log(' '.join(messages))

📝 Edit on GitHub