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;
}