Obsah

Bezhotovostní platební převody čtenářů

Evergreen počítá s možností online plateb kartou nebo PayPal apod., která však vyžadují náročnější technická řešení. Níže popsané postup pro možnost evidence bezhotovostních platebních transakcí byl vytvořen pro potřeby Knihovny Jabok v rámci projektu VIKS 2014. Protože nevyžaduje složitá technická řešení, ale zároveň vyžaduje manuální zásah knihovníka pro dokončení evidence platby v Evergreenu, je vhodný spíše pro menší knihovny. Řešení bylo navrženo pro verzi Evergreenu 2.6, je však univerzálně použitelné i pro jiné verze, které využívají TPAC (tj. současnou verzi online katalogu vytvořenou pomocí nástroje Template Toolkit).

Pro využívání uvedeného postupu je nutné vyřešit následující oblasti:

Dávkový program pro automatickou extrakci údajů o platbách z bankovních výpisů

K identifikac plateb čtenářů je využíván variabilní symbol. Ten je tvořen volitelným pětimístným předčíslím (zde je pro zjednodušení použito předčíslí 11111) pro identifikaci platby čtenáře mezi ostatními platbami organizace a pětimístným číslem tvořeným ID čtenáře v databázi Evergreenu (user.id), které identifikuje konkrétního čtenáře. Na základě předčíslí variabilního symbolu jsou z bankovního výpisu extrahovány údaje o platbách čtenářů a jsou uloženy do souboru, který je odeslán knihovně k dalšímu zpracování. Pro případnou potřebu kontroly je po čtenáři při zadání bankovního příkazu požadován nejen variabilní symbol, ale také uvádění jména a příjmení v poznámce k platbě.

V případě Knihovny Jabok program zpracovává textový výpis posílaný e-mailem z Reifeisenbank, který zpracovává výpisy na základě variabilního symbolu indentifikujícího platby knihovny.

Poznámka: Pro jiné typy výpisů (např. výpisy ve formátu ABO apod.) je nutné dávkový program upravit.

Zobrazení údajů pro bezhotovostní platby ve čtenářském kontě v online katalogu.

Informace pro čtenáře o bezhotovostních platbách jsou čtenářům sděleny v přehledu údajů v jejich čtenářském kontě na kartě „Osobní údaje“. Pro zobrazení těchto informací je nutné upravit šablonu /openil/var/custom-templates/opac/myopac/prefs.tt2 (namísto „custom-template“ doplňte jméno adresáře, kde jsou uloženy customizované šablony knihovny, viz též dokumentaci k úpravám TPACu http://docs.evergreen-ils.org/2.6/_how_to_override_templates.html)

V souboru prefs.tt2 vložte do tabulky s názvem „Account preferences“ tento kód - tím přidáte do přehledu účtu řádek tabulky, v němž se čtenáři vygenerují informace o bezhotovostních platbách (namísto řetšzce XXXX uveďte číslo účtu a název banky, namísto 11111 uveďte požadované předčíslí variabilního symbolu):

 	

         <tr>
	     
            <td class='color_4 light_border'>Informace k bezhotovostním platbám</td>
             
             <td class='light_border'> 
             <i> Číslo účtu: <br /></i> <b>XXXX </b>  XXXX <br />          
             </td>
	
             <td> <i> Do pole "variabilní symbol" uveďte:
             </i> 
             [% USE varsymbol = format('11111%05d') -%] 
             <b>
             [% varsymbol(ctx.user.id) | html %] 
             </b><br />
             <i>Do pole "poznámka" (příp. "popis platby" apod.) uveďte:</i> 
             <b>
             [% l(
                    HUMAN_NAME_FORMAT,
                    ctx.user.first_given_name,
                    ctx.user.family_name,
                ) | html %]
              </b><br /> <br />
             Upozornění: Platby za zpozdné prosím posílejte až po vrácení všech dokumentů s&nbsp;uplynulou výpůjční lhůtou!
            </td>
            
       </tr> 

Údaj potřebné pro platební převod se čtenáři zobrazí po přihlášení do čtenářského konta v přehledu osobních údajů čtenáře (viz obrázek).

Evidence platby ve čtenářském kontě

Protože v Evergreenu se s platebními převody s účtů primárně nepočítá, je nutné využít jiný typ platby. Jako vhodný typ se jeví např. platby „šekem“. Vzhledem k tomu, že se v českých podmínkách tento typ plateb víceméně nepoužívá, je možné upravit lokalizační šablonu tak, aby se místo typu „šekem“ zobrazoval typ: „platební převod“.

Úprava rozhraní Evergreenu:

Na servertu Evergreenu vytvořte kopii souboru /openils/var/web/opac/locale/cs-CZ/lang.dtd (pojmenujte ji např. lang.dtd-orig apod.). V souboru lang.dtd poté změňte překlady modulu pro platby šekem náhradou níže uvedených řetězců:

<!ENTITY staff.patron.bill_check_info.title "Informace o šeku">  
nahraďte: <!ENTITY staff.patron.bill_check_info.title "Informace platebním převodu">

<!ENTITY staff.patron.bill_check_info.check_info.label "Informace o šeku">  
nahraďte: <!ENTITY staff.patron.bill_check_info.check_info.label "Informace o platebním převodu">
<!ENTITY staff.patron.bill_check_info.check_number.value "Číslo šeku"> 
nahraďte: <!ENTITY staff.patron.bill_check_info.check_number.value "Číslo ">

<!ENTITY staff.patron.bills_overlay.check.label "Šekem"> 
Nahraďte: <!ENTITY staff.patron.bills_overlay.check.label "Převodem">

Po těchto úpravách uložte soubor lang.dtd a restartujte apache (vyžaduje příslušná práva administrátora serveru)

Upozornění:

Je nutné mít na paměti, že tyto nastavené změny se týkají pouze českého překladu. V systému zůstává typ platby stále jako platba šekem, tj. např. při vytváření statistických sestav, tiskových výstupů apod. je nutné použít databázová pole nebo označení pro platbu šekem. Také v rozhraní pro platby ve sloupci „Způsob platby“ se i v českém rozhraní Evergreenu zobrazuje „check_payment“. „Check payment“ zůstává zobrazeno i při volbě anglické (či dalších) lokalizací.

Dokončení evidence platby

Postup viz Evidence bezhotovostních plateb.

Tisk / zaslání dokladu o platbě ve čtenářskem kontě v online katalogu

Tisk dokladu o platbě standardně probíhá při platbě (tiskové výstupy se nastavují v Editoru šabon výpisu a potvrzení ve služebním klientu Evergreenu, (viz též Tiskové šablony)

Aby si také čtenář sám mohl po přihlášení do čtenářského konta vytisknout potvrzení o proběhlých platbách, je nutné nastavit šablony pro jejich tisk v v administrátorském rozhraní služebního klienta Evergreenu: AdminLokální administraceOznámení /spouštěče (triggery) událostí.

  1. V seznamu šablon najděte šablonu pro tisk potvrzení „money.payment_receipt.print“, označte jí pomocí zaškrtávacího pole vlevo a klikněte na tlačítko „Klonovat vybranou šablonu“.
  2. Otevře se editační režim šablony. Upravte název šablony (např. „money.payment_receipt.print-nove“), zaškrtně pole „aktivní“ a do části „template“ vložte níže uvedený kód. Namísto řetězců začínajících a končících třemi hvězdičkami doplňte údaje o své knihovně, případně upravte další části šablony podle potřeby.
  3. Poté šablonu uložte.
  4. Při ukládání potvrďte ve vyskakovacím okně, že chcete uložit také kontext šablony.
  5. V původní šabloně nastavte v zaškrtávacím poli šablonu jako neaktivní a uložte ji (pokud byste nechali „aktivní“ obě šablony, tisk potvrzení by nefungoval).

Stejny postup aplikujte na šablonu „money.payment_receipt.email“ pro zasílání potvrzení e-mailem.

Tiskový výstup potvrzení

Do části „template“ vložte tento kód:

***Nazev a adresa knihovny***
<hr/><br/>

DOKLAD O PLATBE

<br/>

[%- USE date(format = '%a %d-%b-%Y', locale = 'cz_CZ')    -%][%- SET user = target.0.xact.usr -%]
<div style="li { padding: 8px; margin 5px; }">
    Datum vytisteni dokladu: [% date.format(date.now, '%d %b %y %H:%M:%S' , 'cs_CZ') %]
    <br/>
    Jmeno ctenare: [% user.first_given_name %] [% user.family_name %] 
    <br/>
</div>
<br/>
<div>
    <ul>
    [% SET xact_mp_hash = {} %]
    [% FOR mp IN target %][%# Template is hooked around payments, but let us make the receipt focused on transactions %]
        [% SET xact_id = mp.xact.id %]
        [% IF ! xact_mp_hash.defined( xact_id ) %][% xact_mp_hash.$xact_id = { 'xact' => mp.xact, 'payments' => [] } %][% END %]
        [% xact_mp_hash.$xact_id.payments.push(mp) %]
    [% END %]
    [% FOR xact_id IN xact_mp_hash.keys.sort %]
        [% SET xact = xact_mp_hash.$xact_id.xact %]
        <li><u> Poplatek c.: [% xact_id %]</u><br/>
            [% IF xact.circulation %] 
Nazev titulu: 
[% helpers.get_copy_bib_basics(xact.circulation.target_copy).title %]
            [% ELSE %] Typ poplatku: Poplatky za zbozi a sluzby
            [% END %]
<br/>          
            [% SET mb_type_hash = {} %]
            [% FOR mb IN xact.billings %][%# Group billings by their btype %]
                [% IF mb.voided == 'f' %]
                    [% SET mb_type = mb.btype.id %]
                    [% IF ! mb_type_hash.defined( mb_type ) %][% mb_type_hash.$mb_type = { 'sum' => 0.00, 'billings' => [] } %][% END %]
                    [% IF ! mb_type_hash.$mb_type.defined( 'first_ts' ) %][% mb_type_hash.$mb_type.first_ts = mb.billing_ts %][% END %]
                    [% mb_type_hash.$mb_type.last_ts = mb.billing_ts %]
                    [% mb_type_hash.$mb_type.sum = mb_type_hash.$mb_type.sum + mb.amount %]
                    [% mb_type_hash.$mb_type.billings.push( mb ) %]
                [% END %]
            [% END %]
            [% FOR mb_type IN mb_type_hash.keys.sort %]
                [% IF mb_type == 1 %][%# Consolidated view of overdue billings %]
                    [% mb_type_hash.$mb_type.sum %] Kc - Platba za [% mb_type_hash.$mb_type.billings.0.btype.name %] <br/>
                        Vznik poplatku: [% mb_type_hash.$mb_type.first_ts | replace('T', ' ') FILTER truncate(17, ',') %] ukonceni: [% mb_type_hash.$mb_type.last_ts | replace('T', ' ') FILTER truncate(17, ' ') %]<br/>
                [% ELSE %][%# all other billings show individually %]
                   [% FOR mb IN mb_type_hash.$mb_type.billings %]
                        [% mb.amount %] Kc za [% mb.btype.name %] on [% mb.billing_ts %] [% mb.note %]
                    [% END %]
                [% END %]</li>
            [% END %]
            <br/> 
            <dl> 
	        <dd>
                <u>Informace o platbe: </u> <br/>
                [% FOR mp IN xact_mp_hash.$xact_id.payments %]
                    Interni cislo platby: [% mp.id %]<br/>
                    Vyse platby: [% mp.amount %] Kc <br/>
                    Zpusob platby: [% SWITCH mp.payment_type -%]
                            [% CASE "cash_payment" %]Hotovost
                            [% CASE "check_payment" %]Bezhotovostnim prevodem
                            [% CASE "credit_card_payment" %]kartou (
                                [%- SET cc_chunks = mp.credit_card_payment.cc_number.replace(' ','').chunk(4); -%]
                                [%- cc_chunks.slice(0, -1+cc_chunks.max).join.replace('\S','X') -%] 
                                [% cc_chunks.last -%]
                                exp [% mp.credit_card_payment.expire_month %]/[% mp.credit_card_payment.expire_year -%]
                                )
                            [% CASE "credit_payment" %]Ze zalohy
                            [% CASE "forgive_payment" %]Platba prominuta
                            [% CASE "goods_payment" %]Zbozim/vecnou nahradou
                            [% CASE "work_payment" %]Praci
                        [%- END %] 
                         <br/>
                      Datum provedeni platby: [% mp.payment_ts | replace('T', ' ') FILTER truncate(17, ' ') %] [% mp.note %]
                   </dd>
              </dl>
                [% END %]
        [% END %]
</div>
<br/>
***Informace o DPH (napr. "ceny jsou vcetne DPH" apod.)***
<hr/>
***Fakturacni adresa, ICO, DIC ***

E-mailový výstup potvrzení

Do části „template“ vložte tento kód:

[%- USE date -%]
[%- SET user = target.0.xact.usr -%]
To: [%- params.recipient_email || user.email %]
From: [%- params.sender_email || default_sender %]
Subject: Potvrzeni o platbe

***Adresa knihovny***
------------------
DOKLAD O PLATBE
[% date.format -%]
[%- SET xact_mp_hash = {} -%]
[%- FOR mp IN target %][%# Template is hooked around payments, but let us make the receipt focused on transactions -%]
    [%- SET xact_id = mp.xact.id -%]
    [%- IF ! xact_mp_hash.defined( xact_id ) -%][%- xact_mp_hash.$xact_id = { 'xact' => mp.xact, 'payments' => [] } -%][%- END -%]
    [%- xact_mp_hash.$xact_id.payments.push(mp) -%]
[%- END -%]
[%- FOR xact_id IN xact_mp_hash.keys.sort -%]
    [%- SET xact = xact_mp_hash.$xact_id.xact %]
Poplatek c.: [% xact_id %]
    [% IF xact.circulation %]
    Nazev titulu: [% helpers.get_copy_bib_basics(xact.circulation.target_copy).title %]
    [% ELSE %]Typ poplatku: Poplatky za zbozi a sluzby
    [% END %] 
        [%- SET mb_type_hash = {} -%]
        [%- FOR mb IN xact.billings %][%# Group billings by their btype -%]
            [%- IF mb.voided == 'f' -%]
                [%- SET mb_type = mb.btype.id -%]
                [%- IF ! mb_type_hash.defined( mb_type ) -%][%- mb_type_hash.$mb_type = { 'sum' => 0.00, 'billings' => [] } -%][%- END -%]
                [%- IF ! mb_type_hash.$mb_type.defined( 'first_ts' ) -%][%- mb_type_hash.$mb_type.first_ts = mb.billing_ts -%][%- END -%]
                [%- mb_type_hash.$mb_type.last_ts = mb.billing_ts -%]
                [%- mb_type_hash.$mb_type.sum = mb_type_hash.$mb_type.sum + mb.amount -%]
                [%- mb_type_hash.$mb_type.billings.push( mb ) -%]
            [%- END -%]
        [%- END -%]
        [%- FOR mb_type IN mb_type_hash.keys.sort -%]
            [%- IF mb_type == 1 %][%-# Consolidated view of overdue billings -%]
                [% mb_type_hash.$mb_type.sum %] Kc - platba za [% mb_type_hash.$mb_type.billings.0.btype.name %] 
                    Vznik poplatku: [% mb_type_hash.$mb_type.first_ts | replace('T', ' ') FILTER truncate(17, ',') %] ukonceni: [% mb_type_hash.$mb_type.last_ts | replace('T', ' ') FILTER truncate(17, ',') %]
            [%- ELSE -%][%# all other billings show individually %]
                [% FOR mb IN mb_type_hash.$mb_type.billings %]
                    Nauctovano: [% mb.amount %] za [% mb.btype.name %] dne [% mb.billing_ts | replace('T', ' ') FILTER truncate(17, ' ')  %] [% mb.note %]
                [% END %]
            [% END %]
        [% END %]
    Informace o platbe:
        [% FOR mp IN xact_mp_hash.$xact_id.payments %]
            Interni cislo platby: [% mp.id %]
                Vyse platby: [% mp.amount %] Kc  
                Zpusob platby: [% SWITCH mp.payment_type -%]
                    [% CASE "cash_payment" %]Hotovost
                    [% CASE "check_payment" %]Prevodem
                    [% CASE "credit_card_payment" %]Kartou (
                        [%- SET cc_chunks = mp.credit_card_payment.cc_number.replace(' ','').chunk(4); -%]
                        [%- cc_chunks.slice(0, -1+cc_chunks.max).join.replace('\S','X') -%] 
                        [% cc_chunks.last -%]
                        exp [% mp.credit_card_payment.expire_month %]/[% mp.credit_card_payment.expire_year -%]
                    )
                    [% CASE "credit_payment" %]Ze zalohy
                    [% CASE "forgive_payment" %]Platba prominuta
                    [% CASE "goods_payment" %]Vecnou nahradou
                    [% CASE "work_payment" %]Praci
                [%- END %] Datum provedeni platby [% mp.payment_ts  | replace('T', ' ') FILTER truncate(17, ',') %] 
                [% mp.note %]
        [% END %]
[% END %]

***Informace o platbe DPH (napr. ceny jsou uvedeny vcetne DPH).***
----------------------------
***Fakturacni adresa***
***ICO, DIC***