# Szövegek és saját mezők a számlán

> A számla szövegeinek módosítása szűrőkkel, saját beállítási mező, általános szerződési feltételek, bankszámlaadatok és egyedi számlázási mezők.

A példák kódját a téma `functions.php` fájljába írd. Ha új cimkét használsz, tedd be a `template.php`-ba is (lásd [Sablon: cimkék és az alap szerkezet](https://hub.hellowp.io/hu/plugins/woocommerce-pdf-invoice/fejlesztoknek-sablon-cimkek/)).

## A számla szövegeinek átírása

A bővítmény teljesen lefordítható, de ha csak egy-két kiírt szöveget akarsz megváltoztatni, szűrőt is használhatsz. A szűrők a sablonban a szövegek köré vannak téve:

| Szűrő | Alapszöveg |
|---|---|
| `pdf_template_invoice_number_text` | Invoice No. : |
| `pdf_template_order_number_text` | Order No. : |
| `pdf_template_invoice_date_text` | Invoice Date : |
| `pdf_template_order_date_text` | Order Date : |
| `pdf_template_payment_method_text` | Payment Method : |
| `pdf_template_shipping_method_text` | Shipping Method : |
| `pdf_template_payment_status_text` | Payment Status : |
| `pdf_template_billing_details_text` | Billing Details |
| `pdf_template_shipping_details_text` | Shipping Details |
| `pdf_template_registered_name_text` | Registered Name : |
| `pdf_template_registered_office_text` | Registered Office : |
| `pdf_template_company_number_text` | Company Number : |
| `pdf_template_vat_number_text` | VAT Number : |

Példa: az adószám feliratának átírása „Adószám: ”-ra.

```php
add_filter( 'pdf_template_vat_number_text', 'custom_pdf_template_vat_number_text' );
function custom_pdf_template_vat_number_text() {
    return 'Adószám: ';
}
```

Ezeket a szűrőket ritkán érdemes használni: ha csak fordítani akarsz, és nem akarsz a sablonhoz nyúlni, a fordítást egy fordítóbővítménnyel (például Loco Translate) egyszerűbb elvégezni.

## A „PDF-számla” gomb felirata a Rendeléseim oldalon

A vásárló fiókjában, a rendelések listáján megjelenő gomb alapfelirata a **PDF Invoice** (a fordításban az ennek megfelelő magyar szöveg). A feliratot a `woocommerce_pdf_my_account_button_label` szűrővel írhatod át:

```php
add_filter( 'woocommerce_pdf_my_account_button_label', 'custom_pdf_my_account_button_label' );
function custom_pdf_my_account_button_label() {
    return 'Számla letöltése';
}
```

## Új mező a beállítóoldal aljára

A `woocommerce_pdf_invoice_additional_fields_admin` akcióval új beállítási mezőt tehetsz a **WooCommerce → PDF-számla** beállítóoldal aljára. Más helyre nem lehet új mezőt beszúrni.

Az alábbi kód egy `custom_text` nevű szövegmezőt ad az űrlaphoz:

```php
add_action( 'woocommerce_pdf_invoice_additional_fields_admin', 'custom_woocommerce_pdf_admin_field' );
function custom_woocommerce_pdf_admin_field() {
    $woocommerce_pdf_invoice_options = get_option( 'woocommerce_pdf_invoice_settings' );
    ?>
    <tr valign="top">
        <th scope="row" class="titledesc">
            <label for="woocommerce_pdf_invoice_settings[custom_text]">Egyedi szöveg a számlára</label>
        </th>
        <td class="forminp forminp-number">
            <input id="woocommerce_pdf_invoice_settings[custom_text]"
                   name="woocommerce_pdf_invoice_settings[custom_text]"
                   type="text"
                   value="<?php if ( isset( $woocommerce_pdf_invoice_options['custom_text'] ) ) { echo esc_attr( $woocommerce_pdf_invoice_options['custom_text'] ); } ?>"
                   placeholder="" style="width: 350px;"/>
        </td>
    </tr>
    <?php
}
```

A mező értéke a `woocommerce_pdf_invoice_settings` beállítás tömbjében, a mező nevével (itt `custom_text`) tárolódik.

A mező tartalmát a számlára egy saját cimkével viheted ki. Tedd a `template.php`-ba a `[[CUSTOMFIELD]]` cimkét a kívánt helyre, majd cseréld le a `pdf_content_additional_content` szűrővel:

```php
add_action( 'pdf_content_additional_content', 'custom_pdf_additional_content' );
function custom_pdf_additional_content( $content ) {
    $woocommerce_pdf_invoice_options = get_option( 'woocommerce_pdf_invoice_settings' );

    $content = str_replace( '[[CUSTOMFIELD]]', $woocommerce_pdf_invoice_options['custom_text'], $content );

    return $content;
}
```

## Általános szerződési feltételek a számlán

Ez a példa egy többsoros **Invoice Terms and Conditions** mezőt ad a beállításokhoz, a szövegét pedig a `[[PDFTERMSCONDITIONS]]` cimke helyére írja a számlán. A lépések:

1. Tedd a `[[PDFTERMSCONDITIONS]]` cimkét a `template.php`-ba a kívánt helyre.
2. Add a kódot a téma `functions.php` fájljához.
3. Írd be a szöveget a PDF-számla beállításaiban az új mezőbe.

```php
add_action( 'woocommerce_pdf_invoice_additional_fields_admin', 'additional_fields_admin_terms' );
function additional_fields_admin_terms() {
    $woocommerce_pdf_invoice_options = get_option( 'woocommerce_pdf_invoice_settings' );
    ?>
    <tr valign="top">
        <th scope="row" class="titledesc">
            <label for="woocommerce_pdf_invoice_settings[invoice_terms]">Invoice Terms and Conditions</label>
        </th>
        <td class="forminp forminp-number">
            <textarea id="woocommerce_pdf_invoice_settings[invoice_terms]"
                      name="woocommerce_pdf_invoice_settings[invoice_terms]"
                      placeholder="" style="width: 350px;"><?php if ( isset( $woocommerce_pdf_invoice_options['invoice_terms'] ) ) { echo esc_textarea( $woocommerce_pdf_invoice_options['invoice_terms'] ); } ?></textarea>
        </td>
    </tr>
    <?php
}

add_filter( 'pdf_content_additional_content', 'pdf_additional_content_terms' );
function pdf_additional_content_terms( $content ) {
    $woocommerce_pdf_invoice_options = get_option( 'woocommerce_pdf_invoice_settings' );
    if ( isset( $woocommerce_pdf_invoice_options['invoice_terms'] ) ) {
        $content = str_replace( '[[PDFTERMSCONDITIONS]]', $woocommerce_pdf_invoice_options['invoice_terms'], $content );
    }
    return $content;
}
```

Ha az általános szerződési feltételeket egy WordPress-oldalról akarod venni, a `pdf_invoice_terms_page_id` szűrővel módosíthatod, melyik oldal azonosítóját használja a bővítmény (például a rendelés nyelve vagy a rendelt termékek alapján másik oldalt adhatsz meg). Az oldal tartalma a szokásos `the_content` szűrőn megy át.

## Bankszámlaadatok a számlán

A WooCommerce **Közvetlen banki átutalás** (BACS) fizetési módjának adatait ki lehet írni a számlára a `[[PDFBANKDETAILS]]` cimkével. A cimkét a `template.php`-ban a kívánt helyre (például a láblécbe vagy a megjegyzések alá) kell tenni, a kódot a `functions.php`-be, a végén pedig ellenőrizni kell az elrendezést, és szükség esetén a sablon CSS-ét módosítani.

A következő változat a WooCommerce több bankszámláját is kezeli (`woocommerce_bacs_accounts` beállítás), és ha nincs kitöltött adat, a cimkét üresre cseréli:

```php
add_filter( 'pdf_content_additional_content', 'pdf_additional_content_bank_details_footer', 10, 2 );
function pdf_additional_content_bank_details_footer( $content, $order_id ) {

    $has_details  = false;
    $bacs_accounts = get_option( 'woocommerce_bacs_accounts' );
    $account_html = '';

    if ( ! empty( $bacs_accounts ) ) {
        $account_html = '<table>';

        foreach ( $bacs_accounts as $bacs_account ) {
            $bacs_account = (object) $bacs_account;

            if ( $bacs_account->account_name ) {
                $account_html .= '<tr><td>' . wp_kses_post( wp_unslash( $bacs_account->account_name ) ) . ':</td>';
            }

            $account_fields = array(
                'bank_name'      => array( 'label' => 'Bank',          'value' => $bacs_account->bank_name ),
                'account_number' => array( 'label' => 'Számlaszám',    'value' => $bacs_account->account_number ),
                'sort_code'      => array( 'label' => 'Bankkód',       'value' => $bacs_account->sort_code ),
                'iban'           => array( 'label' => 'IBAN',          'value' => $bacs_account->iban ),
                'bic'            => array( 'label' => 'BIC',           'value' => $bacs_account->bic ),
            );

            foreach ( $account_fields as $field_key => $field ) {
                if ( ! empty( $field['value'] ) ) {
                    $account_html .= '<td class="' . esc_attr( $field_key ) . '">' . esc_html( $field['label'] ) . ': <strong><br />' . esc_html( $field['value'] ) . '</strong></td>';
                    $has_details = true;
                }
            }

            $account_html .= '</tr>';
        }

        $account_html .= '</table>';
    }

    if ( $has_details ) {
        $pdfbankdetails = '<section>Bankszámlaadataink' . $account_html . '</section>';
        $content = str_replace( '[[PDFBANKDETAILS]]', $pdfbankdetails, $content );
    } else {
        $content = str_replace( '[[PDFBANKDETAILS]]', '', $content );
    }

    return $content;
}
```

Egyszerűbb, egy bankszámlás megoldás is használható: a `woocommerce_bacs_settings` beállításból olvassa az `account_name`, `account_number`, `sort_code`, `bank_name`, `iban` és `bic` értékeket, és ezeket egy kétoszlopos táblázatba írja a `[[PDFBANKDETAILS]]` helyére. Ugyanúgy a `pdf_content_additional_content` szűrőn keresztül fut.

## Egyedi pénztármező a számlán (például mobilszám)

Ha a pénztárhoz saját mezőt adtál (például mobilszámot), azt a számlára is kiviheted. Ehhez kell egy cimke a sablonban, például `[[PDFBILLINGMOBILE]]`, és egy függvény, amely a számla előállításakor lecseréli:

```php
add_filter( 'pdf_content_additional_content', 'custom_pdf_content_additional_content', 10, 2 );
function custom_pdf_content_additional_content( $content, $order_id ) {
    $content = str_replace( '[[PDFBILLINGMOBILE]]', get_post_meta( $order_id, 'mobile', true ), $content );
    return $content;
}
```

## Megszólítás (titulus) a számlázási és szállítási címben

A példa feltételezi, hogy a pénztárban már van a rendeléshez mentett mező (például a WooCommerce Checkout Field Editor bővítménnyel létrehozva), amelynek neve `billing_title`, illetve `shipping_title`. A kód a megszólítást a cím és a név elé teszi:

```php
add_filter( 'woocommerce_order_formatted_billing_address', 'pdf_invoice_woocommerce_order_formatted_billing_address', 10, 2 );
function pdf_invoice_woocommerce_order_formatted_billing_address( $address, $order ) {
    $billing_title = get_post_meta( $order->get_id(), 'billing_title', true );
    $address = array( 'billing_title' => $billing_title ) + $address;
    return $address;
}

add_filter( 'woocommerce_formatted_address_replacements', 'pdf_invoice_add_woocommerce_formatted_address_replacements', 10, 2 );
function pdf_invoice_add_woocommerce_formatted_address_replacements( $replace, $args ) {
    $replace['{title}'] = $args['title'];
    $replace['{name}']  = $args['title'] . ' ' . $args['first_name'] . ' ' . $args['last_name'];
    return $replace;
}
```

A szállítási címhez ugyanezt a `woocommerce_order_formatted_shipping_address` szűrővel kell megcsinálnod. Mindkét cím szűrőjében az alábbi mezőket kell feltölteni a rendelésből (`get_billing_<mező>()`, illetve `get_shipping_<mező>()`): `title`, `first_name`, `last_name`, `company`, `address_1`, `address_2`, `city`, `state`, `postcode`, `country`.
