Fejlesztőknek

Számla és nyugtakészítés előtt a WordPress rendszerből ismert filterekkel lehet módosítani a számla adatait, amit a számlázz.hu rendszerébe küld a bővítmény. Ezek a filterek érhetők el:

  • wc_szamlazz_xml – Végszámla, díjbekérő vagy előlegszámla módosítására
  • wc_szamlazz_xml_kifiz – A teljesítettnek jelölés módosítására
  • wc_szamlazz_xml_void – A sztornó számla módosítására
  • wc_szamlazz_xml_receipt – A nyugta módosítására
  • wc_szamlazz_xml_receipt_send – A nyugtaértesítő módosítására
  • wc_szamlazz_xml_void_receipt – A nyugta sztornó módosítására
  • wc_szamlazz_xml_proform_delete – Díjbekérő törlése

A fent említett filterek mindegyike két paraméterrel rendelkezik, $xml és $order. Előbbi a számlázz.hu felé küldendő XML fájl, utóbbi az éppen aktuális rendelés adatai. A wc_szamlazz_xml filternél egy harmadik típus is elérhető, ami a dokumentum típusát jelöli. Egy példa a számlán megjelenő számlaszám módosítására:

add_filter('wc_szamlazz_xml','wc_szamlazz_xml_bank_account',10,2);
function wc_szamlazz_xml_lang($xml,$order) {

	//Change bank account number for EUR
	if($order->get_currency() == 'EUR') {
		$xml->elado->bank = 'OTPVHUHB';
		$xml->elado->bankszamlaszam = 'IBANSZÁM';
	}

	return $xml;
}

A számlán megjelenő tételeket is lehet módosítani a wc_szamlazz_invoice_line_item filterrel. Ennek négy paramétere van. Az első $tetel, ami a tételre vonatkozó XML objektum(ezt kell módosítva visszaadni). A második eg WC_Order_Item class, a harmadik a rendelés, a negyedik pedig a teljes XML számla. Egy példa a tétel nevének módosítására:

add_filter('wc_szamlazz_invoice_line_item', 'wc_szamlazz_invoice_line_item_rounding', 10, 4);
function wc_szamlazz_invoice_line_item_rounding($tetel, $order_item, $order, $szamla) {
	$tetel->megnevezes = 'Új tétel név';
	return $tetel;
}

A wc_szamlazz_bulk_generate_defer_limit filterrel módosítható az az érték, hogy csoportos számlakészítésnél hány számlától kezdve generálja a sázmlákat a háttérben. Az alapértelmezett érték 2, tehát ha kettőnél több rendeléshez készítesz számlát a csoportos műveletek segítségével, akkor a háttérben indul el a folyamat. Így módosíthatod az értéket:

add_filter('wc_szamlazz_bulk_generate_defer_limit', function(){
    return 5;
});

Ha szeretnél új beállítások mezőt hozzáadni, akkor a wc_szamlazz_settings_fields filtert használhatod. Például:

add_filter('wc_szamlazz_settings_fields' function($settings){
	$settings_custom = array(
		'egyedi_szamlazz_beallitas' => array(
			'title' => 'Egyedi számlázz beállítás szekció',
			'type' => 'wc_szamlazz_settings_title', //ez indít egy új szekciót
		),
		'egyedi_szamlazz_beallitas_ertek_1' => array(
			'type' => 'text',
			'title' => 'Szövegmező',
		),
	);
	return array_merge($settings, $settings_custom);
});

Az elmentett értéket pedig lekérheted így:

$ertek = WC_Szamlazz()->get_option('egyedi_szamlazz_beallitas_ertek_1', 'alapértelmezett érték');

A wc_szamlazz_need_delivery_note filterrel ellenőrizheted, hogy az adott rendeléshez kell e szállítólevelet készíteni. Például:

add_filter('wc_szamlazz_need_delivery_note', function($need_delivery_note, $order){
    if($order->get_currency() == 'EUR') {
        $need_delivery_note = false;
    }
    return $need_delivery_note;
}, 10, 2)

A wc_szamlazz_should_generate_auto_invoice filterrel ellenőrizheted, hogy az adott rendeléshez kell e automatán számlát készíteni, vagy nem. Például:

add_filter('wc_szamlazz_should_generate_auto_invoice', function($should_generate_auto_invoice, $order_id){
    $order = wc_get_order($order_id);
    if($order && $order->get_currency() == 'EUR') {
        $should_generate_auto_invoice = false;
    }
    return $should_generate_auto_invoice;
}, 10, 2)

A wc_szamlazz_download_link filterrel módosíthatod a számla letöltési linkjét(például ha CDN-t használsz hozzá, vagy valamilyen extra paramétert szeretnél hozzáadni naplózás miatt):

add_filter('wc_szamlazz_download_link', function($pdf_file_url, $order){
    return $pdf_file_url.'?param=test';
}, 10, 2);

A wc_szamlazz_document_types filterrel tudod módosítani a dokumentumok nevét(például ha más nyelven kell):

add_filter('wc_szamlazz_document_types', function($document_types){
	/*
	array(
		'deposit' => __('Előlegszámla','wc-szamlazz'),
		'proform' => __('Díjbekérő','wc-szamlazz'),
		'invoice' => __('Számla','wc-szamlazz'),
		'receipt' => __('Nyugta','wc-szamlazz'),
		'delivery' => __('Szállítólevél','wc-szamlazz'),
		'void' => __('Sztornó számla','wc-szamlazz'),
		'void_receipt' => __('Sztornó nyugta','wc-szamlazz'),
		'corrected' => __('Helyesbítő számla','wc-szamlazz')
	)
	*/
	$document_types['invoice'] = 'Invoice';
	return $document_types;
});

A wc_billingo_plus_pdf_file_name filter segítségével tudod módosítani a generált PDF fájl nevét, amit a wp-content/uploads/wc-billingo-plus mappában tárol. Két paramétere van, a dokumentum típusa és a rendelés azonosító. Egy pdf fájlnevet kell visszaadnod, .pdf kiterjesztéssel. Például:

add_filter('wc_szamlazz_pdf_file_name', function($pdf_file_name, $document_type, $order_id){
	$order = wc_get_order($order_id);
	if($order) {
		$pdf_file_name = sanitize_title(implode('-', array($document_type, $order->get_order_number(), $order->get_billing_last_name(), $order->get_billing_first_name()))).'.pdf';
	}
	return $pdf_file_name;
}, 10, 3);

Van néhány action is:

do_action('wc_szamlazz_after_invoice_error', $order, $xml_response);
do_action('wc_szamlazz_after_invoice_success', $order, $response);
do_action( 'wc_szamlazz_document_created', array('order_id' => $order->get_id(), 'document_type' => $type));
do_action('wc_szamlazz_after_invoice_complete_success', $order, $response);
do_action('wc_szamlazz_after_invoice_void_error', $order, $response);
do_action('wc_szamlazz_after_invoice_void_success', $order, $response);
do_action('wc_szamlazz_after_proform_delete_error', $order, $response);
do_action('wc_szamlazz_after_proform_delete_success', $order, $response);
do_action('wc_szamlazz_after_receipt_error', $order, $response);
do_action('wc_szamlazz_after_receipt_success', $order, $response);
do_action('wc_szamlazz_after_receipt_void_error', $order, $response);
do_action('wc_szamlazz_after_receipt_void_success', $order, $response);
do_action('wc_szamlazz_after_receipt_send_error', $order, $xml_response);
do_action('wc_szamlazz_after_receipt_send_success', $order, $xml_response);
do_action('wc_szamlazz_before_ipn_process', $order);
do_action('wc_szamlazz_after_ipn_process', $order);

Van egy Számlázz.hu dokumentum létrehozva webhook is. A válaszban az alábbi adatok szerepelnek:

$payload = array(
    'order_id' => 123,
    'document_type' => 'invoice', //receipt, delivery_note, proform, deposit, receipt, void, void_receipt
    'document_url' => 'http://test.com/szamlaz.pdf',
    'document_number' => 'Számla sorszáma'
);

Ha REST API-n keresztül lekéred a rendeléseket, akkor a wc_szamlazz paraméterben megtalálod a rendeléshez készült dokumentumok adatait egy tömbben:

'wc_szamlazz' => array(
  array(
    'document_type' => 'invoice',
    'document_url' => 'invoice.pdf',
    'document_number' => 'dokumentum neve, sorszáma'
  )
)

Bővítmény információk

Verziószám: 5.9
Legutóbb frissítve: 2024. 02. 08.
Változási napló: Megtekint

WooCommerce Számlázz.hu