In WooCommerce kun je eenvoudig extra kosten toevoegen aan een bestelling, bijvoorbeeld betaalkosten of verpakkingskosten. Deze worden als fees opgeslagen in de order.
Wanneer je de bestelling doorstuurt naar King, is het handig om ook deze toeslagen als aparte orderregels mee te sturen. Op die manier blijft je administratie compleet en sluit het factuurbedrag altijd naadloos aan bij wat de klant daadwerkelijk betaald heeft.
Met een eenvoudig filter kun je dit realiseren. Het idee is als volgt:
Loop door de fees van de order in WooCommerce.
Lees de naam, het bedrag en de btw uit.
Voeg voor elke fee een nieuwe orderregel toe die meegestuurd wordt naar King.
Een voorbeeld:
add_filter( "plus_orders_after_order_lines", "add_fee_lines_to_king_order", 20, 2 );
function add_fee_lines_to_king_order( $king_order, $woo_order_array, $orderregel_properties ) {
if ( isset( $woo_order_array['id'] ) ) {
// Laad de order
$order = wc_get_order( $woo_order_array['id'] );
if ( $order ) {
// Zoek alle toeslagregels
foreach ( $order->get_items( 'fee' ) as $item_id => $item ) {
// Haal de details van de toeslagregel
$fee_name = $item->get_name();
$fee_total = $item->get_total();
$fee_tax = $item->get_total_tax();
$fee_incl = $fee_total + $fee_tax;
// Maak een nieuwe orderregel aan voor King
$new_orderregel = new \stdClass();
// Een extern orderregelnummer mag alleen uit cijfers bestaan.
// Als de order aan King wordt aangeboden, wordt dit regelnummer gebruikt om de regel te herkennen.
// De regel wordt bijgewerkt als het regelnummer al bestaat in de order.
// Bestaat het regelnummer niet of is het regelnummer onjuist? Dan wordt de regel als nieuwe regel toegevoegd aan de order.
$new_orderregel->orr_externorderregelnummer = $order->get_id() . $item_id;
// Artikel (ART) of tarief (TAR) in King
$new_orderregel->orr_soort = 'TAR';
// Het artikelnummer of tariefcode
$new_orderregel->orr_artikelnummer = 'fee';
$new_orderregel->orr_aantalbesteld = 1;
// Prijs excl BTW (gebruik $fee_incl voor inclusief BTW)
$new_orderregel->orr_prijs = wc_format_decimal( $fee_total, 2 );
// Tekst op factuur
$new_orderregel->orr_tekstopfactuur = $fee_name;
// De nieuwe orderregel toevoegen aan de order
$king_order->orderregels[] = $new_orderregel;
}
}
}
return $king_order;
}
Resultaat
Met deze snippet zorg je ervoor dat alle WooCommerce-toeslagen netjes als orderregels in King terechtkomen. Denk bijvoorbeeld aan:
Betaalkosten
Administratie- of verpakkingskosten
Eventuele andere handmatige fees
Zo blijft je facturatie en rapportage in King altijd volledig en correct.