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.

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

Name der Aktion: Dokumente aus Wareneingang taggen
Modell: stock.lot oder mrp.production
Folgeaktion: Python-Code ausführen

Kopieren Sie die folgenden Zeilen in das Feld Python-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 > Geplante Aktionen und erstellen Sie einen neuen Eintrag:

Name der Aktion: 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
Folgeaktion: Python-Code ausführen

Kopieren Sie die folgenden Zeilen in das Feld Python Code:

tag = env['documents.tag'].search([ ('name','=','WE zugeordnet') ],limit=1)
folder = env['documents.folder'].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 GitHubopen in new window