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: Admin → Lokální administrace → Oznámení /spouštěče (triggery) událostí.

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“.

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.

Poté šablonu uložte.

Při ukládání potvrďte ve vyskakovacím okně, že chcete uložit také kontext šablony.

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***