Buchhaltung Aktionen¶
![]()
Neue Aktionen für Buchungen, Zahlungen und Abstimmungen.
Aktionen¶
Bankauszug zurücksetzen¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Bankauszug zurücksetzen - Modell:
account.bank.statement - Typ:
Code ausführen - Code:
Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.
In der Liste der Belege erscheint nun in der Auswahl Aktion das Menu Bankauszug zurücksetzen.
Bankauszug bestätigen¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Bankauszug bestätigen - Modell:
account.bank.statement - Typ:
Code ausführen - Code:
Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.
In der Liste der Belege erscheint nun in der Auswahl Aktion das Menu Bankauszug bestätigen.

Buchungszeilen aktualisieren¶
Gilt bis Odoo15.
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Buchungszeilen aktualisieren - Modell:
account.move - Typ:
Code ausführen - Code:
for rec in records.filtered(lambda r: r.state == 'draft'):
rec.with_context(check_move_validity=False)._move_autocomplete_invoice_lines_values()
Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.
In der Liste der Buchungssätze erscheint nun in der Auswahl Aktion das Menu Buchungszeilen aktualisieren.

Abstimmung zurücksetzen¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Abstimmung zurücksetzen - Modell:
account.bank.statement.line - Typ:
Code ausführen - Code:
Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.
In der Liste der Vorgänge erscheint nun in der Auswahl Aktion das Menu Abstimmung zurücksetzen.
Zahlung auf nicht gesendet setzen¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Zahlung auf nicht gesendet setzen - Modell:
account.payment - Typ:
Code ausführen - Code:
Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.
In der Liste der Zahlung erscheint nun in der Auswahl Aktion das Menu Zahlung gesendet zurücksetzen.
Zahlungen zurücksetzen¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Zahlungen zurücksetzen - Modell:
account.payment - Typ:
Code ausführen - Code:
Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.
Mahnstufe anzeigen¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Mahnstufe anzeigen - Modell:
res.partner - Typ:
Code ausführen - Code:
records.ensure_one()
followup_level = records._query_followup_level()
raise UserError(followup_level.items())
Die Aktion mit dem Knopf Kontextuelle Aktion erstellen bestätigen und dann speichern.
Analysekonto entfernen¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Analysekonto entfernen - Modell:
account.move - Typ:
Code ausführen - Code:
Die Aktion speichern und mit dem Knopf Kontextuelle Aktion erstellen bestätigen.
Zahlung suchen und abgleichen¶
Diese Aktion sucht anhand der Zahlungsreferenz der Rechnung eine Zahlung und gleich diese ab.
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Anhang entfernen - Modell:
account.move - Typ:
Code ausführen - Code:
moves_reconciled = []
moves_without_payment = []
for move in records.filtered(lambda m: m.payment_state == 'not_paid'):
payment = env['account.payment'].search([('ref', '=', move.payment_reference)], limit=1)
if payment:
move_line = move.line_ids.filtered(lambda l: l.name == move.payment_reference)[:1]
payment_line = payment.line_ids.filtered(lambda l: l.account_id == move_line.account_id)[:1]
if move_line and payment_line:
lines = move_line + payment_line
lines.reconcile()
moves_reconciled.append(move.name)
else:
moves_without_payment.append(move.name)
# else:
# raise UserError('No move lines found to reconcile for %s and %s' % (move_line, payment_line))
# else:
# raise UserError('No payment found for %s with payment ref %s' % (move.name, move.payment_reference))
if moves_reconciled:
action = {
'type': 'ir.actions.client',
'tag': 'display_notification',
'params': {
'type': 'success',
'message': str(len(moves_reconciled)) + ' invoices have been reconciled: ' + ', '.join(moves_reconciled),
'sticky': True
}
}
Die Aktion speichern und mit dem Knopf Kontextuelle Aktion erstellen bestätigen.
Als geprüft markieren¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Als geprüft markieren - Modell:
account.move - Typ:
Code ausführen - Code:
Die Aktion speichern und mit dem Knopf Kontextuelle Aktion erstellen bestätigen.
Als ungeprüft markieren¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Als geprüft markieren - Modell:
account.move - Typ:
Code ausführen - Code:
Die Aktion speichern und mit dem Knopf Kontextuelle Aktion erstellen bestätigen.
Abstimmung mit Kontoauszug zurücksetzen¶
Mit dieser Aktion können Sie die Abstimmungen auf der Listenansicht der Buchungszeilen aufheben.
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Abstimmung mit Kontoauszug zurücksetzen - Modell:
account.move.line - Typ:
Code ausführen - Code:
Die Aktion speichern und mit dem Knopf Kontextuelle Aktion erstellen bestätigen.
Konto aktualisieren¶
Mit dieser Aktion können Sie das Konto für ausgewählte Buchungszeilen aktualisieren.
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Konto aktualisieren - Modell:
account.move.line - Typ:
Code ausführen - Code:
Die Aktion speichern und mit dem Knopf Kontextuelle Aktion erstellen bestätigen.
Informationen der Zahlungsmethode anzeigen¶
Navigieren Sie nach Einstellungen > Technisch > Serveraktionen und erstellen Sie einen neuen Eintrag:
- Name:
Informationen der Zahlungsmethode anzeigen - Modell:
account.payment.method - Typ:
Code ausführen - Code:
Die Aktion speichern und mit dem Knopf Kontextuelle Aktion erstellen bestätigen.
Geplante Aktionen¶
Rechnung mit Abrechnungsintervall generieren¶
Das ist eine einfach Lösung um wiederholende Rechnung zu generieren. Mit dem zusätzlichen Feld x_recurring_inverval wird geprüft ob die Rechnung wieder fällig ist.
Navigieren Sie nach Einstellungen > Technisch > Automatisierungsregeln und erstellen Sie einen neuen Eintrag:
- Name:
Rechnung mit Abrechnungsintervall generieren - Modell:
ir.actions.server - Ausführen alle:
1Tage - Nächstes Ausführungsdatum:
DD.MM.YYYY 06:00:00 - Anzahl der Anrufe:
-1 - Typ:
Code ausführen - Code:
today = datetime.datetime.today()
def add_month(date):
# Determine the year and month for the new date
new_year = date.year + (date.month + 1) // 12
new_month = (date.month % 12) + 1
# Return the new date
return datetime.date(new_year, new_month, date.day)
def subtract_month(date):
# Determine the year and month for the new date
new_year = date.year - 1 if date.month == 1 else date.year
new_month = 12 if date.month == 1 else date.month - 1
# Return the new date
# Find the number of days in the previous month to handle edge cases
days_in_previous_month = (date.replace(day=1) - datetime.timedelta(days=1)).day
new_day = min(date.day, days_in_previous_month)
return datetime.date(new_year, new_month, new_day)
# Get posted invoices with recurring interval within the last 40 days
invoice_ids = env['account.move'].search([
('x_recurring_inverval', 'in', ['monthly']),
('invoice_date', '>=', (today - datetime.timedelta(days=35)).strftime('%Y-%m-%d'))
], order='invoice_date desc')
# Foreach invoice check if is due
refs = []
for invoice in invoice_ids:
if invoice.x_recurring_inverval == 'monthly' and invoice.ref not in refs:
# Update ref list to avoid multiple duplicates
refs.append(invoice.ref)
# Duplicate invoice
invoice_date = invoice.invoice_date
last_date = subtract_month(today)
if invoice_date <= last_date:
new_invoice = invoice.copy({
'invoice_date': add_month(invoice_date),
'ref': invoice.ref,
})
env.cr.commit()
# raise UserError([invoice.name, refs, invoice_date, last_date, invoice_date <= last_date, add_month(invoice_date)])
Geprüfte Kundenrechnungen versenden¶
Diese geplante Aktion versendet alle gebuchten und geprüften Rechnungen mit der Standard-E-Mail-Vorlage.
Navigieren Sie nach Einstellungen > Technisch > Automatisierungsregeln und erstellen Sie einen neuen Eintrag:
- Name:
Geprüfte Kundenrechnungen versenden - Modell:
ir.actions.server - Ausführen alle:
1Woche - Nächstes Ausführungsdatum:
DD.MM.YYYY 06:00:00 - Anzahl der Anrufe:
-1 - Typ:
Code ausführen - Code:
# Settings
template_id = env.ref('account.email_template_edi_invoice')
# Get all checked, posted and not sent customer invoices
invoices = env['account.move'].search([
('to_check','=',False),
('move_type','=','out_invoice'),
('state','=','posted'),
('is_move_sent','=',False),
('payment_state','in',['not_paid','partial'])
])
# raise UserError(invoices)
# Send customer invoices using the default template
invoices_sent = []
try:
for invoice in invoices:
invoice.with_context(lang=invoice.partner_id.lang, mail_notify_force_send=True).message_post_with_template(template_id.id)
invoice.write({'is_move_sent': True})
invoices_sent += invoice.mapped('name')
log('Invoice has been sent: ' + invoice.name)
env.cr.commit()
except Exception as err:
message = 'Sending of the checked invoices failed, the following error occured: ' + str(err)
log(message, level='error')
env['mail.mail'].create({
'subject': 'Error while sending checked invoices',
'body_html': message,
'email_to': 'sysadmin@sozlialinfo.ch',
}).send()
message = 'These checked invoices have been sent: ' + ', '.join(invoices_sent) if invoices_sent else 'No checked invoices have been sent'
log(message)
# action = {
# 'type': 'ir.actions.client',
# 'tag': 'display_notification',
# 'params': {
# 'type': 'success',
# 'message': message,
# 'sticky': True
# }
# }
Automatisierungsregeln¶
Lieferantenrechnung zur Prüfung markieren¶
Mit dieser automatischen Aktion wird die Option Zum Überprüfen bei der Erstellung einer Lieferantenrechnung aktiviert.
Erstellen Sie unter Einstellungen > Technisch > Automation > Automatisierungsregeln einen Eintrag mit diesen Werten:
- Name:
Lieferantenrechnung zur Prüfung markieren - Modell:
account.move - Auslöser: Bei Erstellung
- Anzuwenden auf:
- Folgeaktion: Den Datensatz aktualisieren
- Zu schreibende Daten:
- Feld:
to_check
- Feld:
- Wert:
True
Notizen und Abschnitte enfernen¶
Mit dieser automatischen Aktion werden beim Erstellen einer Kundenrechnung alle Notiz- und Abschnittszeilen entfernt.
Erstellen Sie unter Einstellungen > Technisch > Automation > Automatisierungsregeln einen Eintrag mit diesen Werten:
- Name:
Notizen und Abschnitte enfernen - Modell:
account.move - Auslöser: Bei Erstellung
- Anzuwenden auf:
- Folgeaktion: Python-Code ausführen
- Code:
for rec in records:
line_note_ids = rec.invoice_line_ids.filtered(lambda l: l.display_type in ['line_section', 'line_note'])
line_note_ids.unlink()