1) Je GDPR povinné pro každý e-shop?

Ano, od 25. 5. 2018 je nutné dodržovat GDPR prakticky v každém Prestashopu. Tedy práva zákazníka jako jsou právo na výmaz, právo být zapomenut, právo na přenositelnost, apod.

2) Jak vyřešit GDPR v Prestashopu?

Nejlehčí a nejlevnější variantou je využít naše moduly, které jsme pro tyto účely vytvořili:

Oba moduly jsou kompatiblní s PS verzemi 1.5, 1.6 a 1.7.

A) https://psmoduly.cz/gdpr-general-data-protection-regulation-195/prestashop-1-6-1-5.htm
Modul, který řeší GDPR po všech stránkách, bližší informace na uvedeném odkazu.

B) https://psmoduly.cz/souhlas-s-eu-cookies-gdpr-povinne-prakticky-pro-vsechny-e-shopy-104/prestashop-1-6-1-5.htm
Modul, který informuje zákazníka o použití a sběru Cookies.


3) Doplnění odstavce do obchodních podmínek

Zde je pouze příklad, jak by to cca mohlo vypadat, každý si samozřejmě upravte, či vytvořte dle vlastního uvážení:

XYZ. BEZPEČNOST A OCHRANA INFORMACÍ A OSOBNÍCH ÚDAJŮ

Provozovatel e-shopu jako správce osobních údajů (dále jen „Správce“) tímto v souladu s ustanovením čl. 13 Nařízení Evropského parlamentu a Rady (EU) č. 2016/679 ze dne 27. dubna 2016, obecného nařízení o ochraně osobních údajů (dále jen „Nařízení“), informuje své zákazníky (dále jednotlivě jen „Subjekt údajů“) o tom, že:
1. Osobní údaje Subjektu údajů, které budou Správci odevzdány při odeslání objednávky, budou zpracovány za účelem uzavření kupní smlouvy a jejího následného plnění, a to včetně vyřizování případných nároků Subjektu údajů z vadného plnění. Právním základem pro zpracování osobních údajů Subjektu údajů je tedy plnění kupní smlouvy založené objednávkou Subjektu údajů a současně také plnění zákonných povinností Správce dle právních předpisů upravujících práva a povinnosti v souvislosti s ochranou spotřebitele a vedením účetnictví.

2. Důvodem poskytnutí osobních údajů Subjektu údajů Správci je identifikace smluvních stran nezbytná pro uzavření a plnění kupní smlouvy, což by bez poskytnutí těchto údajů nebylo možné.

3. Osobní údaje Subjektu údajů budou zpracovány po dobu, po kterou je Správce povinen tyto údaje uchovávat dle obecně závazných právních předpisů, minimálně tedy po dobu 5 let dle zákona o účetnictví nebo po dobu 10 let dle zákona o DPH.

4. Při zpracování osobních údajů Subjektu údajů nebude docházet k automatizovanému rozhodování ani k profilování.

5. Správce nejmenoval pověřence pro ochranu osobních údajů ani neurčil zástupce pro plnění povinností ve smyslu Nařízení. Osobní údaje Subjektu údajů mohou být pro účely řádného vyřízení objednávky poskytnuty poskytovateli doručovacích služeb zvolenému Subjektem údajů, a dále osobám, které Správci poskytují právní a účetní služby v zájmu zajištění řádného plnění povinností stanovených obecně závaznými právními předpisy. Správce nemá v úmyslu předat osobní údaje Subjektu údajů do třetí země, mezinárodní organizaci nebo jiným, než výše uvedeným třetím osobám.

6. Subjekt údajů má právo požadovat od Správce přístup ke svým osobním údajům, jejich opravu nebo výmaz, popřípadě omezení zpracování, a vznést námitku proti zpracování, má právo na přenositelnost těchto údajů k jinému správci, jakož i právo podat stížnost u Úřadu pro ochranu osobních údajů, má-li za to, že Správce při zpracování osobních údajů postupuje v rozporu s Nařízením.

4) Souhlas při nákupu bez registrace není povinný

Často se klienti ptají, proč je povinný souhlas při registraci, respektive proč není povinný při nákupu bez registrace. Tady je vysvětletní:
V eshopu jsou dvě možnosti nákupu. Jako registrovaný/přihlášený a neregistrovaný/nepřihlášený uživatel. Status přihlášení rozhoduje o udělení Souhlasu se zpracováním osobních údajů.

Souhlas se zpracováním osobních údajů musí být udělen v případě, že zákazník se registruje/přihlašuje v eshopu. Po udělení Souhlasu může správce osobní data zpracovávat a využívat k obchodním účelům. Zpracovávání Osobních údajů se potom řídí uděleným souhlasem.

V případě, že zákazník neprovede registraci/přihlášení, ale pouze nákup, tak Souhlas se zpracováním udělovat nemusí. Dále ale budou zpracovávána jeho Osobní data, která jsou nutná pro realizaci platebního styku a zaúčtování daňových dokladů. Tyto údaje v tomto případě nepodléhají udělení Souhlasu se zpracováním osobních údajů. Zároveň je nelze zpracovávat a využívat např. k odesílání newsletterů a podobně.

5) Fungování našeho GDPR modulu s OPC modulem OnePageCheckout

Fungování je v pořádku po úpravě 1 souboru, bohužel modulově ani nijak jinak to není možné provést, jedině ruční úpravou. Jiné řešení bohužel není.

Tato úprava zajistí, že souhlas s ochranou osobních údajů a jejich zpracování bude povinný (pokud to bude zapnuto v nastavení modulu GDPR). Bez této úpravy souhlas není nutné zaškrnout a zákazník může pokračovat dále v objednávce i bez zaškrnutí těchto údajů, což nemusí být žádoucí. Toto se týká pouze tohoto modulu. V jiných modulech a defaultním objednávkovém procesu je to v základu v pořádku.

Pokud chcete, můžeme Vám úpravy provést zdarma v rámci ceny našeho GDPR modulu. Pokud chcete úpravy provést na vlastní pěst, zde je jejich soupis:
(Po provedení úprav nezapomeňte smazat cache v administrace v "Konfigurace" -> "Výkon")

A) Úprava 1/1: (/modules/onepagecheckout/views/js/order-opc.js)
if (tos_nok) {
errors = '<b>' + txtTOSIsNotAccepted + '</b>';
$('#opc_tos_errors').html(errors).slideUp('fast').slideDown('slow');
$.fn.scrollToElement('#opc_tos_errors', 600);
processing_payment = false;// Enable payment buttons again
return false;
}
ZMĚNIT NA:
if (tos_nok) {
errors = '<b>' + txtTOSIsNotAccepted + '</b>';
$('#opc_tos_errors').html(errors).slideUp('fast').slideDown('slow');
$.fn.scrollToElement('#opc_tos_errors', 600);
processing_payment = false;// Enable payment buttons again
return false;
}
// openservis GDPR - begin //
var error_ochrana = ($("#passwd").length >= 1 && $("#passwd").val().length >= 1 && typeof souhlas_required_srsly != 'undefined' && souhlas_required_srsly == 1 && $("#passwd").is(':visible') &&!$('input[name="shaim_gdpr_active"]').is(':checked'));
if (error_ochrana) {
errors = '<b>Souhlas se zpracováním osobních údajů je nutný pro vyřízení Vaší objednávky.</b>';
$('#opc_ochrana_errors').html(errors).slideUp('fast').slideDown('slow');
$.fn.scrollToElement('#opc_ochrana_errors', 600);
processing_payment = false;// Enable payment buttons again
return false;
}else{
$('#opc_ochrana_errors').slideUp('slow');
}
// openservis GDPR - end //

6) Fungování našeho GDPR modulu s OPC modulem AdvancedCheckout

Fungování je v pořádku po úpravách 4 souborů, jedná se o 8 úprav, bohužel modulově ani nijak jinak to není možné provést, jedině ruční úpravou. Jiné řešení bohužel není.

Tyto úpravy zajistí, že souhlas s ochranou osobních údajů a jejich zpracování bude povinný (pokud to bude zapnuto v nastavení modulu GDPR). Bez této úpravy souhlas není nutné zaškrnout a zákazník může pokračovat dále v objednávce i bez zaškrnutí těchto údajů, což nemusí být žádoucí. Toto se týká pouze tohoto modulu. V jiných modulech a defaultním objednávkovém procesu je to v základu v pořádku.

Pokud chcete, můžeme Vám úpravy provést zdarma v rámci ceny našeho GDPR modulu. Pokud chcete úpravy provést na vlastní pěst, zde je jejich soupis:
(Po provedení úprav nezapomeňte smazat cache v administrace v "Konfigurace" -> "Výkon")

A) Úprava 1/8: (/modules/advancedcheckout/views/js/main.js)

var term_select = $('input[name="cgv_accept"]').is(':checked');
ZMĚNIT NA:
var term_select = $('input[name="cgv_accept"]').is(':checked');
// openservis GDPR - begin //
var ochrana_select = $('input[name="shaim_gdpr_active"]').is(':checked');
// openservis GDPR - end //

B) Úprava 2/8: (/modules/advancedcheckout/views/js/main.js)
var error_term = false;
ZMĚNIT NA:
var error_term = false;
// openservis GDPR - begin //
var error_ochrana = false;
// openservis GDPR - end //

C) Úprava 3/8: (/modules/advancedcheckout/views/js/main.js)
if (trm == 1 && !term_select)
var error_term = true;
ZMĚNIT NA:
if (trm == 1 && !term_select)
var error_term = true;
// openservis GDPR - begin //
if (!ochrana_select && $("#passwd").length>=1 && $("#passwd").val().length>=1 && typeof souhlas_required_srsly != 'undefined' && souhlas_required_srsly == 1 && $("#passwd").is(':visible'))
var error_ochrana = true;
// openservis GDPR - end //

D) Úprava 4/8: (/modules/advancedcheckout/views/js/main.js)
if (error_carrier || error_payment || error_term || error_cart || error_pickup || error_ajax) {
ZMĚNIT NA:
// openservis GDPR //
if (error_carrier || error_payment || error_term || error_ochrana || error_cart || error_pickup || error_ajax) {

E) Úprava 5/8: (/modules/advancedcheckout/views/js/main.js)
if (error_term) {
payment_exec = false;
var source_term = $('input[name="cgv_accept"]').parents('.opc-form-group').first();
$(source_term).addClass('opc-has-error');
blinkForm(source_term, 2);
}
ZMĚNIT NA:
if (error_term) {
payment_exec = false;
var source_term = $('input[name="cgv_accept"]').parents('.opc-form-group').first();
$(source_term).addClass('opc-has-error');
blinkForm(source_term, 2);
}
// openservis GDPR - begin //
if (error_ochrana) {
payment_exec = false;
var source_term = $('input[name="shaim_gdpr_active"]').parents('.opc-form-group').first();
$(source_term).addClass('opc-has-error');
blinkForm(source_term, 2);
}
// openservis GDPR - end //

F) Úprava 6/8: (/modules/advancedcheckout/views/templates/front/order.tpl)
<a data-original = "{l s='Place order!' mod='advancedcheckout'}" data-loading = '<i class="fa fa-spinner fa-spin"></i>' class="flr opc-btn opc-btn-sky place_order">
ZMĚNIT NA:
{* openservis GDPR - begin *}
{$HOOK_CREATE_ACCOUNT_FORM}
{* openservis GDPR - end *}
<a data-original = "{l s='Place order!' mod='advancedcheckout'}" data-loading = '<i class="fa fa-spinner fa-spin"></i>' class="flr opc-btn opc-btn-sky place_order">

G) Úprava 7/8: (/modules/advancedcheckout/override/controllers/front/OrderOpcController.php)
$customer->addGroups(array((int)$group));
ZMĚNIT NA:
$customer->addGroups(array((int)$group));
// openservis GDPR - begin //
  Hook::exec('actionCustomerAccountAdd', array(
'_POST' => $_POST,
'newCustomer' => $customer
));
// openservis GDPR - end //

H) Úprava 8/8: (/override/controllers/front/OrderOpcController.php)
$customer->addGroups(array((int)$group));
ZMĚNIT NA:
$customer->addGroups(array((int)$group));
// openservis GDPR - begin //
  Hook::exec('actionCustomerAccountAdd', array(
'_POST' => $_POST,
'newCustomer' => $customer
));
// openservis GDPR - end //

7) Fungování našeho GDPR modulu s OPC modulem SuperCheckout

Fungování je v pořádku po úpravách 3 souborů, jedná se o 4 úpravy, bohužel modulově ani nijak jinak to není možné provést, jedině ruční úpravou. Jiné řešení bohužel není.

Tyto úpravy zajistí, že souhlas s ochranou osobních údajů a jejich zpracování bude povinný (pokud to bude zapnuto v nastavení modulu GDPR). Bez této úpravy souhlas není nutné zaškrnout a zákazník může pokračovat dále v objednávce i bez zaškrnutí těchto údajů, což nemusí být žádoucí. Toto se týká pouze tohoto modulu. V jiných modulech a defaultním objednávkovém procesu je to v základu v pořádku.

Pokud chcete, můžeme Vám úpravy provést zdarma v rámci ceny našeho GDPR modulu. Pokud chcete úpravy provést na vlastní pěst, zde je jejich soupis:
(Po provedení úprav nezapomeňte smazat cache v administrace v "Konfigurace" -> "Výkon")

A) Úprava 1/6: (/modules/supercheckout/views/templates/front/supercheckout.tpl)
<div id='order-shipping-extra'>
ZMĚNIT NA:
<div id='order-shipping-extra'>
{* openservis GDPR - begin *}
{$HOOK_CREATE_ACCOUNT_FORM}
{* openservis GDPR - end *}

B) Úprava 2/4: (/modules/supercheckout/controllers/front/supercheckout.php)
Pro PS 1.5/1.6
$this->nb_products = $this->context->cart->nbProducts();
ZMĚNIT NA:
// openservis GDPR - begin //
$this->context->smarty->assign(array(
'HOOK_CREATE_ACCOUNT_FORM' => Hook::exec('displayCustomerAccountForm')
));
// openservis GDPR - end //
$this->nb_products = $this->context->cart->nbProducts();
Pro PS 1.7
$page_data = array();
ZMĚNIT NA:
// openservis GDPR - begin //
$this->context->smarty->assign(array(
'HOOK_CREATE_ACCOUNT_FORM' => Hook::exec('displayCustomerAccountForm')
));
// openservis GDPR - end //
$page_data = array();


C) Úprava 3/4: (/modules/supercheckout/controllers/front/supercheckout.php)
Pro PS 1.5/1.6
unset($_POST);
ZMĚNIT NA:
unset($_POST);
// openservis GDPR - begin //
$_POST['shaim_gdpr_active'] = (isset($posted_data['shaim_gdpr_active'])) ? $posted_data['shaim_gdpr_active'] : 0;
// openservis GDPR - end //
Pro PS 1.7
Hook::exec('actionCustomerAccountAdd', array(
ZMĚNIT NA:
// openservis GDPR - begin //
$_POST['shaim_gdpr_active'] = (isset($posted_data['shaim_gdpr_active'])) ? $posted_data['shaim_gdpr_active'] : 0;
// openservis GDPR - end //
Hook::exec('actionCustomerAccountAdd', array(


D) Úprava 4/4: (/modules/supercheckout/views/js/front/supercheckout.js)
if ($('#supercheckout-comment_order').length) {
ZMĚNIT NA:
 // openservis GDPR - begin //
var error_ochrana = (typeof souhlas_required_srsly != 'undefined' && souhlas_required_srsly == 1 && !$('input[name="shaim_gdpr_active"]').is(':checked'));
console.log('error_ochrana - ' +error_ochrana);
if (error_ochrana) {
extrasError = true;
$('.shaim_gdpr_checkbox').after('<span id="gdpr_souhlas_error" class="errorsmall">Souhlas se zpracováním osobních údajů je nutný pro vyřízení Vaší objednávky.</span>');
}else {
$("#gdpr_souhlas_error").remove();
}
// openservis GDPR - end //
if ($('#supercheckout-comment_order').length) {


Poznámka:
V modulu supercheckout je bug, že i v případě, že je zvolen nákup bez registrace, tak reálně zákazníkovi je vytvořen účet. Z toho důvodu tato úprava reflektuje tento stav a je tedy vždy vyžadováno zaškrnutí souhlasu se zpracováním osobních údajů i pro "neregistrované". Toto je bohužel problém modulu supercheckout, který nejde nijak lehce změnit - je nutno napsat autorovi tohoto modulu, aby tuto chybu opravil.

8) Fungování našeho GDPR modulu s OPC modulem OnePageCheckoutPS

Fungování je v pořádku po úpravách 1 souboru, jedná se o 1 úpravu, bohužel modulově ani nijak jinak to není možné provést, jedině ruční úpravou. Jiné řešení bohužel není.

Tyto úpravy zajistí, že souhlas s ochranou osobních údajů a jejich zpracování bude povinný (pokud to bude zapnuto v nastavení modulu GDPR). Bez této úpravy souhlas není nutné zaškrnout a zákazník může pokračovat dále v objednávce i bez zaškrnutí těchto údajů, což nemusí být žádoucí. Toto se týká pouze tohoto modulu. V jiných modulech a defaultním objednávkovém procesu je to v základu v pořádku.

Pokud chcete, můžeme Vám úpravy provést zdarma v rámci ceny našeho GDPR modulu. Pokud chcete úpravy provést na vlastní pěst, zde je jejich soupis:
(Po provedení úprav nezapomeňte smazat cache v administrace v "Konfigurace" -> "Výkon")

A) Úprava 1/1: (/modules/onepagecheckout/views/templates/front/js/onepagecheckoutps.js)
//terminos y condiciones
ZMĚNIT NA:
// openservis GDPR - begin //
var error_ochrana = ($("#customer_passwd").length >= 1 && $("#customer_passwd").val().length >= 1 && typeof souhlas_required_srsly != 'undefined' && souhlas_required_srsly == 1 && $("#customer_passwd").is(':visible') &&!$('input[name="shaim_gdpr_active"]').is(':checked'));
if (error_ochrana) {
alert('Souhlas se zpracováním osobních údajů je nutný pro vyřízení Vaší objednávky.');
$('#btn_place_order').removeClass('disabled');
return false;
}
// openservis GDPR - end //
//terminos y condiciones