Advanced: Actions and filters
Coming soon!
This part is under construction and will be enhanced with explanations for the actions and filters. Meanwhile it is still possible to use this post as some sort of a reference, it might still help you finding the right spot in the code!
Actions
do_action('fortnox_before_order_sync', array( $order ) );
do_action('wf_order_before_create_or_update', array( $order ) );
do_action('fortnox_after_order_sync', array( $order ));
do_action('wf_order_after_create_or_update', $order );
do_action( 'wetail_fortnox_after_product_price_update', $product->get_id(), $sku, $price_list );
do_action('wf_order_after_product_price_update', $product->get_id(), $sku, $price_list );
do_action('wf_order_after_refund', $order, $refunded_order );
Filters
$fortnox_customer = apply_filters('wf_customer_before_post', [ 'Email' => $address['email'], 'EmailInvoice' => $address['email'], 'Name' => ! empty( $address['company'] ) ? $address['company'] : $address['first_name'] . ' ' . $address['last_name'], 'Type' => ( ! empty( $address['company'] ) ? "COMPANY" : "PRIVATE" ), 'OrganisationNumber' => get_post_meta( $order->get_id(), '_billing_company_number', true ), 'Address1' => $order->get_billing_address_1() ? $order->get_billing_address_1() : $order->get_shipping_address_1(), 'Address2' => $order->get_billing_address_2() ? $order->get_billing_address_2() : $order->get_shipping_address_2(), 'ZipCode' => $order->get_billing_postcode() ? $order->get_billing_postcode() : $order->get_shipping_postcode(), 'City' => $order->get_billing_city() ? $order->get_billing_city() : $order->get_shipping_city(), 'CountryCode' => $order->get_billing_country() ? $order->get_billing_country() : $order->get_shipping_country(), 'DeliveryAddress1' => $order->get_shipping_address_1(), 'DeliveryAddress2' => $shipping_address2, 'DeliveryCity' => $order->get_shipping_city(), 'Currency' => $order->get_currency(), 'DeliveryCountryCode' => $order->get_shipping_country() ? $order->get_shipping_country() : $order->get_billing_country() , 'DeliveryName' => $order->get_shipping_first_name()." ".$order->get_shipping_last_name(), 'DeliveryZipCode' => $order->get_shipping_postcode(), 'Phone1' => $address['phone'], 'ShowPriceVATIncluded' => false, 'Active' => true, ], $order->get_user());
apply_filters('wetail_fortnox_sync_modify_customer', [ 'Email' => $address['email'], 'EmailInvoice' => $address['email'], 'Name' => ! empty( $address['company'] ) ? $address['company'] : $address['first_name'] . ' ' . $address['last_name'], 'Type' => ( ! empty( $address['company'] ) ? "COMPANY" : "PRIVATE" ), 'OrganisationNumber' => get_post_meta( $order->get_id(), '_billing_company_number', true ), 'Address1' => $order->get_billing_address_1() ? $order->get_billing_address_1() : $order->get_shipping_address_1(), 'Address2' => $order->get_billing_address_2() ? $order->get_billing_address_2() : $order->get_shipping_address_2(), 'ZipCode' => $order->get_billing_postcode() ? $order->get_billing_postcode() : $order->get_shipping_postcode(), 'City' => $order->get_billing_city() ? $order->get_billing_city() : $order->get_shipping_city(), 'CountryCode' => $order->get_billing_country() ? $order->get_billing_country() : $order->get_shipping_country(), 'DeliveryAddress1' => $order->get_shipping_address_1(), 'DeliveryAddress2' => $shipping_address2, 'DeliveryCity' => $order->get_shipping_city(), 'Currency' => $order->get_currency(), 'DeliveryCountryCode' => $order->get_shipping_country() ? $order->get_shipping_country() : $order->get_billing_country() , 'DeliveryName' => $order->get_shipping_first_name()." ".$order->get_shipping_last_name(), 'DeliveryZipCode' => $order->get_shipping_postcode(), 'Phone1' => $address['phone'], 'ShowPriceVATIncluded' => false, ], $order->get_user());
apply_filters( 'woocommerce_order_number', $order_id, $order )
apply_filters( 'wf_invoice_before_create_or_update', $invoice, $order );
apply_filters( 'wetail_fortnox_invoice_before_fortnox_submit', $invoice, $order );
apply_filters( 'woocommerce_order_number', $refunded_order->get_id(), $refunded_order )
apply_filters( 'woocommerce_order_number', $order->get_id(), $order );
apply_filters( 'wf_invoice_payment_before_create_or_update', [ "AmountCurrency" => $order->get_total(), "InvoiceNumber" => $response->Order->InvoiceReference, "PaymentDate" => substr( $order->get_date_created(), 0, 10 ), "ModeOfPaymentAccount" => self::get_payment_account( $order->get_payment_method() ) ], $order )
apply_filters( 'wetail_fortnox_invoice_payment', [ "AmountCurrency" => $order->get_total(), "InvoiceNumber" => $response->Order->InvoiceReference, "PaymentDate" => substr( $order->get_date_created(), 0, 10 ), "ModeOfPaymentAccount" => self::get_payment_account( $order->get_payment_method() ) ], $order )
apply_filters( 'woocommerce_order_number', $order_id, $order )
apply_filters( 'wf_order_payload_before_create_or_update', [ 'CustomerNumber' => $customer_number, 'DocumentNumber' => $order_number, 'YourOrderNumber' => apply_filters( 'woocommerce_order_number', $order_id, $order ), 'ExternalInvoiceReference1' => apply_filters( 'woocommerce_order_number', $order_id, $order ), 'OrderDate' => substr( $order->get_date_created(), 0, 10 ), # To cut off order time 'VATIncluded' => apply_filters( 'wf_order_vat_included', false ), 'Currency' => $order->get_currency(), ], $order )
apply_filters( 'woocommerce_order_number', $order_id, $order )
apply_filters( 'wf_order_vat_included', false )
apply_filters( 'wetail_fortnox_order', [ 'CustomerNumber' => $customer_number, 'DocumentNumber' => $order_number, 'YourOrderNumber' => apply_filters( 'woocommerce_order_number', $order_id, $order ), 'ExternalInvoiceReference1' => apply_filters( 'woocommerce_order_number', $order_id, $order ), 'OrderDate' => substr( $order->get_date_created(), 0, 10 ), # To cut off order time 'VATIncluded' => apply_filters( 'wetail_fortnox_sync_order_vat_included', false ), 'Currency' => $order->get_currency(), ], $order )
apply_filters( 'wetail_fortnox_sync_order_vat_included', false )
apply_filters( 'wf_order_row_payload_before_create_or_update', [ 'ArticleNumber' => WF_Products::sanitized_sku( $product->get_sku() ), 'Description' => WF_Products::sanitize_description( $product_name ), 'DeliveredQuantity' => $item->get_quantity(), 'OrderedQuantity' => $item->get_quantity(), 'Unit' => "st", 'Price' => $subtotal, 'Discount' => self::calculate_item_discount( $subtotal, $total, $item->get_quantity() ), 'DiscountType' => "AMOUNT", 'VAT' => self::get_tax( $order, $product, $customer ), ], $product, $item )
apply_filters( 'wetail_fortnox_sync_modify_order_row', [ 'ArticleNumber' => WF_Products::sanitized_sku( $product->get_sku() ), 'Description' => WF_Products::sanitize_description( $product_name ), 'DeliveredQuantity' => $item->get_quantity(), 'OrderedQuantity' => $item->get_quantity(), 'Unit' => "st", 'Price' => $subtotal, 'Discount' => self::calculate_item_discount( $subtotal, $total, $item->get_quantity() ), 'DiscountType' => "AMOUNT", 'VAT' => self::get_tax( $order, $product, $customer ), ], $product, $item )
apply_filters( 'wf_order_row_sales_account', false, $order, $item )
apply_filters( 'wetail_fortnox_modify_order_row_sales_account', false, $order, $item )
apply_filters( 'wf_order_shipping_account', $shipping_account, $order )
apply_filters( 'wetail_fortnox_shipping_account', $shipping_account, $order )
apply_filters( 'wf_custom_shipping',[ 'AccountNumber' => $shipping_account, 'Description' => $shipping_product->get_title(), 'DeliveredQuantity' => 1, 'OrderedQuantity' => 1, 'Unit' => "st", 'Price' => $order->get_total_shipping(),//TODO 'Discount' => 0, 'DiscountType' => "AMOUNT", 'VAT' => $tax_rate ], $order )
apply_filters( 'wf_order_way_of_delivery', array_key_exists('WayOfDelivery', $fortnox_order ) ? $fortnox_order['WayOfDelivery'] : '', $shipping )
apply_filters( 'wetail_fortnox_way_of_delivery', array_key_exists('WayOfDelivery', $fortnox_order ) ? $fortnox_order['WayOfDelivery'] : '', $shipping )
apply_filters( 'wf_order_terms_of_delivery', array_key_exists('TermsOfDelivery', $fortnox_order ) ? $fortnox_order['TermsOfDelivery'] : '' , $shipping )
apply_filters( 'wetail_fortnox_terms_of_delivery', array_key_exists('TermsOfDelivery', $fortnox_order ) ? $fortnox_order['TermsOfDelivery'] : '' , $shipping )
apply_filters( 'wf_product_payload_before_create_or_update', [ 'ArticleNumber' => $sku, 'Description' => self::get_formatted_title( $product ), 'Type' => $product->is_virtual() ? 'SERVICE' : 'STOCK', ])
apply_filters( 'wetail_fortnox_sync_product_article', [ 'ArticleNumber' => $sku, 'Description' => self::get_formatted_title( $product ), 'Type' => $product->is_virtual() ? 'SERVICE' : 'STOCK', ])
apply_filters( 'wf_order_payload_before_create_or_update', [ 'CustomerNumber' => $customer_number, 'DocumentNumber' => $order_number, 'YourOrderNumber' => $order_number, 'ExternalInvoiceReference1' => $order_number, 'OrderDate' => substr( $refunded_order->get_date_created(), 0, 10 ), # To cut off order time 'VATIncluded' => apply_filters( 'wf_order_vat_included', false ), 'Currency' => $refunded_order->get_currency(), ], $refunded_order )
apply_filters( 'wf_order_vat_included', false )
apply_filters( 'woocommerce_order_number', $refunded_order_id, $refunded_order )
apply_filters( 'wf_order_row_payload_before_create_or_update', [ 'ArticleNumber' => WF_Products::sanitized_sku( $product->get_sku() ), 'Description' => WF_Products::sanitize_description( $product_name ), 'DeliveredQuantity' => $item->get_quantity(), 'OrderedQuantity' => $item->get_quantity(), 'Unit' => "st", 'Price' => $subtotal, 'Discount' => WF_Orders::calculate_item_discount( $subtotal, $total, $item->get_quantity() ), 'DiscountType' => "AMOUNT", 'VAT' => WF_Orders::get_tax( $order, $product, $customer ), ], $product, $item )
apply_filters( 'wf_order_row_sales_account', false, $order, $item )
apply_filters( 'wf_order_shipping_account', $shipping_account, $order )