Přeskočit na obsah

Akce před odesláním požadavku

Tento obsah zatím není dostupný ve vašem jazyce.

Plugin poskytuje několik akcí, které jsou spuštěny těsně před odesláním požadavku do Fakturoid API. Tyto akce umožňují provést dodatečné operace nebo logování.

Před odesláním požadavku na objednávku

Section titled “Před odesláním požadavku na objednávku”
do_action( 'wpify_woo_fakturoid_before_order_request', $order, $wc_order );
ParametrTypPopis
$orderOrderModelModel objednávky s Fakturoid daty
$wc_orderWC_OrderWooCommerce objednávka

Před odesláním požadavku na vytvoření kontaktu

Section titled “Před odesláním požadavku na vytvoření kontaktu”
do_action( 'wpify_woo_fakturoid_before_subject_request', $data, $order, $wc_order );
ParametrTypPopis
$dataarrayData kontaktu k odeslání
$orderOrderModelModel objednávky s Fakturoid daty
$wc_orderWC_OrderWooCommerce objednávka

Před odesláním požadavku na vytvoření dokumentu

Section titled “Před odesláním požadavku na vytvoření dokumentu”
do_action( 'wpify_woo_fakturoid_before_invoice_request', $data, $order, $wc_order, $document_type );
ParametrTypPopis
$dataarrayData dokumentu k odeslání
$orderOrderModelModel objednávky s Fakturoid daty
$wc_orderWC_OrderWooCommerce objednávka
$document_typestringTyp dokumentu: proforma, invoice, correction

Pro debugování komunikace s Fakturoid API.

/**
* Log all Fakturoid API requests
*
* @param OrderModel $order Order model
* @param WC_Order $wc_order WC order
*
* @return void
*/
function log_fakturoid_order_request( $order, $wc_order ): void {
error_log( sprintf(
'Fakturoid: Processing order #%s',
$wc_order->get_order_number()
) );
}
add_action( 'wpify_woo_fakturoid_before_order_request', 'log_fakturoid_order_request', 10, 2 );
/**
* Log subject data before sending to Fakturoid
*
* @param array $data Subject data
* @param OrderModel $order Order model
* @param WC_Order $wc_order WC order
*
* @return void
*/
function log_subject_request( $data, $order, $wc_order ): void {
error_log( sprintf(
'Fakturoid: Creating subject for order #%s: %s',
$wc_order->get_order_number(),
wp_json_encode( $data )
) );
}
add_action( 'wpify_woo_fakturoid_before_subject_request', 'log_subject_request', 10, 3 );

Logování dat dokumentu před odesláním

Section titled “Logování dat dokumentu před odesláním”
/**
* Log invoice data before sending to Fakturoid
*
* @param array $data Document data
* @param OrderModel $order Order model
* @param WC_Order $wc_order WC order
* @param string $document_type Document type
*
* @return void
*/
function log_invoice_request( $data, $order, $wc_order, $document_type ): void {
error_log( sprintf(
'Fakturoid: Creating %s for order #%s: %s',
$document_type,
$wc_order->get_order_number(),
wp_json_encode( $data )
) );
}
add_action( 'wpify_woo_fakturoid_before_invoice_request', 'log_invoice_request', 10, 4 );
/**
* Validate order before Fakturoid request
*
* @param OrderModel $order Order model
* @param WC_Order $wc_order WC order
*
* @return void
* @throws Exception When validation fails
*/
function validate_before_fakturoid( $order, $wc_order ): void {
// Zkontrolovat povinná pole
if ( empty( $wc_order->get_billing_email() ) ) {
throw new Exception( 'Order is missing billing email' );
}
if ( empty( $wc_order->get_billing_first_name() ) ) {
throw new Exception( 'Order is missing billing name' );
}
}
add_action( 'wpify_woo_fakturoid_before_order_request', 'validate_before_fakturoid', 10, 2 );
/**
* Update external system before invoice creation
*
* @param array $data Document data
* @param OrderModel $order Order model
* @param WC_Order $wc_order WC order
* @param string $document_type Document type
*
* @return void
*/
function update_erp_before_invoice( $data, $order, $wc_order, $document_type ): void {
// Označit objednávku v ERP jako zpracovávanou
wp_remote_post( 'https://api.your-erp.com/orders/' . $wc_order->get_id() . '/processing', array(
'body' => wp_json_encode( array(
'status' => 'invoicing',
'document_type' => $document_type,
) ),
'headers' => array(
'Content-Type' => 'application/json',
),
) );
}
add_action( 'wpify_woo_fakturoid_before_invoice_request', 'update_erp_before_invoice', 10, 4 );

Vlastní funkci můžete vložit buď do tzv. child šablony nebo pomocí pluginu Code Snippets.