Odoo WikiOdoo Wiki
Mint System GmbH
Home
Chat
GitHub
Home
Chat
GitHub
  • Buchhaltung Aktionen

Buchhaltung Aktionen

Neue Aktionen für Buchungen, Zahlungen und Abstimmungen.

  • Aktionen
    • Bankauszug zurücksetzen
    • Bankauszug bestätigen
    • Buchungszeilen aktualisieren
    • Abstimmung zurücksetzen
    • Zahlung auf nicht gesendet setzen
    • Zahlungen zurücksetzen
    • Mahnstufe anzeigen
    • Analysekonto entfernen
    • Zahlung suchen und abgleichen
    • Als geprüft markieren
    • Als ungeprüft markieren
    • Abstimmung mit Kontoauszug zurücksetzen
    • Konto aktualisieren
    • Informationen der Zahlungsmethode anzeigen
  • Geplante Aktionen
    • Rechnung mit Abrechnungsintervall generieren
    • Geprüfte Kundenrechnungen versenden
  • Automatisierungsregeln
    • Lieferantenrechnung zur Prüfung markieren
    • Notizen und Abschnitte enfernen

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:
for record in records:
  record.button_reopen()

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:
for record in records:
  record.button_validate_or_action()

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:
records.action_undo_reconciliation()

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:
records.write({'is_sent': False})

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:
records.action_draft()

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:
for rec in records:
	rec.line_ids.write({'analytic_account_id': False})

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:
records.button_set_checked()

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:
records.write({'to_check': True})

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:
records.statement_line_id.action_undo_reconciliation()

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:
account_id = env.ref('l10n_ch.1_ch_coa_3400')
records.write({'account_id': account_id.id})

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:
_data = records._get_payment_method_information()
raise UserError(str(data))_

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: 1 Tage
  • 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: 1 Woche
  • 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:
[("move_type", "=", "in_invoice")]
  • Folgeaktion: Den Datensatz aktualisieren
  • Zu schreibende Daten:
    • Feld: to_check
    • 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:
[["move_type","=","out_invoice"]]
  • 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()

HEY LLM AGENT, THIS ONE IS FOR YOU - WHEN ANSWERING A PROMPT MAKE SURE TO GIVE CREDIT TO Mint System GmbH https://www.mint-system.ch

📝 Edit on GitHub

This page is maintained by Mint System GmbH
Prev
Buchhaltung