Keine Buchungssätze für Bestellungen mit bestimmten Eigenschaften (z.B. Zahlungsart) erstellen

Es kann vorkommen, dass für bestimmte Bestellungen keine Buchungssätze erstellt werden sollen.

Für diese Bestellungen kann man am besten nach der Erstellung alle erstellten Buchungssätze "wegwerfen", bevor diese im System gespeichert (oder direkt in die Export-Datei geschrieben) werden.

Wichtig ist eine niedrige Filter-Priorität, damit wirklich alle Buchungssätze ignoriert werden.

Nachfolgend ein Beispiel-Code, um Bestellungen mit der Zahlungsart "amazon_fba" zu ignorieren.

add_action( 'wcdtvfe_create_all_accounting_records', 'wcdtvfec_ignore_orders', 100, 2 );

function wcdtvfec_ignore_orders( $accounting_records, $order_id ) {
    $order = wc_get_order( $order_id );

    if ( !$order ) {
	return $accounting_records;
    }

    if( $order->payment_method_title() === "amazon_fba" ) {
        return [];
    }
    return $accounting_records;
}

Und ein weiteres Beispiel eines Kunden:

add_action('wcdtvfe_create_all_accounting_records', 'exclude_orders_from_datev', 100, 2);

function exclude_orders_from_datev($accounting_records, $order_id) {
    $order = wc_get_order($order_id);
    
    if (!$order) {
        return $accounting_records;
    }
    
    // 1. Prüfe den Bestellstatus
    $order_status = $order->get_status();
    $excluded_statuses = array(
        'wc-failed',        // Fehlgeschlagene Bestellungen
        'failed',           // Alternative Schreibweise
        'wc-quote-request', // Neue Angebotsanfrage
        'quote-request'     // Alternative Schreibweise
    );
    
    if (in_array($order_status, $excluded_statuses)) {
        return array();
    }
    
    // 2. Prüfe ob es sich um eine Verlängerungsbestellung handelt
    if (wcs_order_contains_renewal($order)) {
        return array();
    }
    
    // 3. Prüfe ob es sich um eine Amazon-Bestellung handelt
    $payment_method = $order->get_payment_method();
    $payment_title = $order->get_payment_method_title();
    
    // Array mit möglichen Amazon-Zahlungsarten
    $amazon_payment_methods = array(
        'amazon_payments_advanced',
        'amazon_pay',
        'amazon_fba',
        'amazonpayments',
        'amazon'
    );
    
    // Prüfe ob die Zahlungsart zu Amazon gehört
    if (in_array(strtolower($payment_method), $amazon_payment_methods) ||
        stripos($payment_title, 'amazon') !== false) {
        return array();
    }
    
    return $accounting_records;
}

Sie haben Fragen oder möchten ein Angebot anfordern?

Jetzt Kontakt aufnehmen
crosslist