Buchungssatz-Erstellungslogik ändern

Normale Funktionsweise: Buchungen werden bei Bestellstatus "abgeschlossen" erstellt

Das WooCommerce DATEV-Format Export-Plugin erstellt standardmäßig Buchungssätze, sobald eine Bestellung auf "abgeschlossen" gestellt wird. Hintergrund: Ab diesem Zeitpunkt erlaubt WooCommerce keine Änderungen in der Bestellungmaske/Bestellbearbeitung mehr.

Diese Logik kann angepasst werden. Das kann zum Beispiel notwendig sein, wenn:

  • Dein Shop Änderungen an der Bestelllogik vorgenommen hat
  • Buchungssätze regelmäßig unabhängig vom Bestellfluss erstellt werden sollen, um den Shop zu entlasten
  • uvm.

Die "reguläre" Logik findest du - nur zum Überblick - in includes/system/orders/order-status-observer.php.

Die reguläre Logik kann deaktiviert werden. Setze dazu unter Buchhaltung > Einstellungen die Option "Buchungssatzerstellungs-Modus (Verhalten bei Mehrfachbuchungen)" auf "Ausschließlich manueller Export".

Buchungssätze bei anderem Status erstellen

Mit etwas Custom Code kannst du Buchungssätze zum Beispiel bei einem anderen Status erstellen lassen. Du musst dann aber sicherstellen, dass die Bestellungen ab diesem Bestellstatus nicht mehr geändert werden können! Eine Übersicht über die WooCommerce-Bestellstatus (das ist der Plural ;-)) findest du in der offiziellen WooCommerce-Dokumentation.

Es gibt z.B. noch folgende Hooks:

  • woocommerce_order_status_on-hold
  • woocommerce_order_status_processing
add_action( 'woocommerce_order_status_processing', 'wcdtvfe_customizations_on_order_processing_listener', 10, 2 );

function wcdtvfe_customizations_on_order_processing_listener( $order_id ) {
    $order = wc_get_order( $order_id );
    $previous_accounting_records = (new \WooCommerce_DATEV_Format_Export\Accounting_Records_Repository())->get_by_order_id( $order_id );

    // keine doppelte Erstellung von Buchungssätzen erlauben
    if ( count ( $previous_accounting_records ) > 0 ) {
        return;
    }

    $accounting_records = (new \WooCommerce_DATEV_Format_Export\Order_Accounting_Records_Factory())->create( $order ); 
    (new \WooCommerce_DATEV_Format_Export\Accounting_Records_Repository())->save_several( $accounting_records );
}

Buchungssätze regelmäßig per Cron Job erstellen

Du willst deinen Shop zusätzlich entlasten und Buchungssätze nur nachts erstellen? Du kannst die o.g. Funktion auch einfach mit einem Cron-Job ansprechen.

Sie haben Fragen oder möchten ein Angebot anfordern?

Jetzt Kontakt aufnehmen
crosslist