ceske-sluzby icon indicating copy to clipboard operation
ceske-sluzby copied to clipboard

WooCommerce a EET

Open pavelevap opened this issue 8 years ago • 42 comments

Teoreticky by to nemělo být extra složité, ale ještě jsem to detailně nestudoval :-)

Bude potřeba zprovoznit certifikát a při každé platbě kartou nebo v hotovosti odeslat příslušné informace Velkému bratrovi :-) Společně s fakturou to pak chce také vytisknout EET účtenku a při odeslání přidat do balíčku.

https://www.souki.cz/jak-eet-skutecne-dopadne-na-eshopy http://www.etrzby.cz/assets/cs/prilohy/EET_popis_rozhrani_v3.0.pdf

  • Pokud půjde o platbu kartou, tak bude potřeba zjistit, zda platba proběhla, tedy v rámci platební brány.

  • Pokud půjde o platbu v hotovosti, tak to bude stačit ručně odkliknout v administraci ehopu.

  • Napojení na různé pokladny asi nebude potřeba?

Pokud to někdo upřesní, tak to uvítám...

pavelevap avatar Nov 07 '16 20:11 pavelevap

Bude nakonec EET pro eshopy nebo ne?

Zajímavý článek s dostupnými PHP knihovnami: https://www.evid.cz/open-source-implementace-eet-v-php/

Knihovna pro PHP 5.3: https://github.com/zdenekgebauer/eet

pavelevap avatar Jan 11 '17 18:01 pavelevap

Takže EET bude pro platby kartou. Nepochopitelné. Teď jak to řešit?

  • [ ] Samostatný modul, který se napojí na zvolené platební brány ?
  • [ ] Ke každé platební bráně EET připrogramovat?

První možnost by asi byla lepší, odchytit placenou částku a poslat Babišovi.

novetrendy avatar Jan 13 '17 17:01 novetrendy

Asi by to neměl být žádný zásadní problém, udělal bych to asi tak, že tam bude políčko, kde si uživatel zvolí pro jaké platby se to bude posílat ze všech dostupných plateb (např. platba na pobočce, libovolná platba kartou, atd). A po úspěšně provedené platbě (nezajímá nás o jakou šlo konkrétně platební bránu) už bude jenom stačit doplnit do emailu/faktury kód EET (nevím, jestli musí být vůbec vytištěný). Už jsem viděl několik PHP implementací, které by šlo asi vcelku snadno použít (jen se zavolají po provedené platbě). Problém bude spíše s případnými změnami objednávek (na základě telefonátu), vrácení zboží do 30 dnů, atd :-)

pavelevap avatar Jan 13 '17 19:01 pavelevap

  • [x] Bude potřeba trochu vymyslet UI, patrně něco ve stylu funkce sledování zásilek.
  • [ ] Správa účtenek (aneb kde je ukládat s příslušnými kódy + přehledně zobrazit).
  • [x] Obecné (globální) nastavení (DIČ, atd).
  • [x] Možnost nahrát/uložit certifikát do nějakého adresáře (automaticky generované jméno).
  • [x] Možnost vynechat odeslání účtenky :-) Ano, mnoho uživatelů má ve WooCommerce sklad a když "prodává" známým, tak to prostě pro Babiše evidovat nechce, ale skladové zásoby chce mít v pořádku.
  • [x] Možnost nastavení, zda bude EET použito pro konkrétní platební metodu (patrně na úrovni této metody).
  • [ ] Napojení na nejznámější fakturační pluginy.
  • [x] Možnost refundace (vrácení zboží do 30 dnů).
  • [ ] Implementace vhodné knihovny pro komunikaci s finanční správou (nechce se mi psát vlastní).
  • [ ] Optimalizovat databázové dotazy (metoda get_items() na přehledu objednávek).
  • [x] Umožnit nastavení pro doručovací metody (v kombinaci s platebními metodami).
  • [ ] Opravit daně u částečného storna.
  • [ ] Při aktualizaci objednávky by to chtělo aktualizovat i hodnotu účtenky (JS).
  • [ ] Doplnit zaokrouhlování při platbě v hotovosti (dopočet daně).
  • [ ] Doplnit formát účtenky - samostatný email (s nastavením).
  • [ ] Přehledná tabulka s konkrétním nastavením (!).

Pokud někoho napadne něco dalšího, tak sem s tím, usnadní to budoucí možnosti :-) Uvítám pomoc i případné připomínky.

Ano, pokud se to podaří včas dokončit, tak bude i EET součástí pluginu České služby, a to zcela zdarma.

pavelevap avatar Jan 24 '17 17:01 pavelevap

Zdravím Pavle, chtěl jsem se zeptat, bude funkcionalita k EET hotová do 1.3.? Díky moc za Vás plugin!

Albycz avatar Feb 09 '17 11:02 Albycz

@Albycz: Doufám, že se během příštího týdne podaří zveřejnit testovací verzi. Pro jaké účely ji budete chtít používat a jaké by se nejvíce hodilo řešení? Pro platební karty to nakonec nebude potřeba (řešit to budou přímo provozovatelé), takže bude priorita pro platby v hotovosti evidované v rámci WooCommerce. Když bude chtít někdo zaplatit v hotovosti, tak budete mít možnost u objednávky zaškrtnout, zda chcete odeslat i EET (a přidat na fakturu, vytisknout či poslat emailem). Nebo máte i nějaký další příklad, jak by to šlo používat?

pavelevap avatar Feb 09 '17 11:02 pavelevap

Testovací verzi budu posílat do speciální branche. Jakmile to bude ve stavu vhodném k otestování, tak to sem napíšu...

pavelevap avatar Feb 15 '17 10:02 pavelevap

@pavelevap díky moc! Nakonec se nám podařilo odesílání EET vyřešit jinak. Nakonec to bude řešit účetní sw u klienta. Ale rád to vyzkouším na jiných projektech.

Albycz avatar Feb 15 '17 10:02 Albycz

Přesně tak, naprostá většina lidí to ani nebude potřebovat :-) Buď to řeší účetní software nebo platební brána. Pokud se nepletu, tak pro plugin zbývá použití u hotovostních plateb a ještě k tomu pouze v případě, že nemá na fyzické prodejně dodatečnou pokladnu. Takže vlastně jen v případě, že si můžete zboží vyzvednout na provozovně eshopu a zaplatit za něj v hotovosti. Potom to chce při předávání zboží nějak získat i účtenku (email, přidat na fakturu). A další možností je pak ještě PayPal. Nic dalšího mě ale nenapadá nebo máte někdo nějaký další příklad?

pavelevap avatar Feb 15 '17 10:02 pavelevap

Kdyby České služby řešily EET a PayPal, tak by to hodně lidem vytrhlo trn z paty :) Ale i na to již jsou placené alternativy.

Albycz avatar Feb 15 '17 10:02 Albycz

Tak nakonec jsem zatím žádnou knihovnu nepoužil, protože jsou většinou funkční od PHP 5.6, což bohužel zatím není standard :-(

image

Ještě bude potřeba dodělat mnoho drobností, ale odesílání funguje :-)

image

Začátkem příštího týdne začneme testovat. Sice už existuje několik placených pluginů, ale to vůbec nevadí, třeba se to bude někomu hodit a alespoň jsem trochu prozkoumal protokol SOAP a podepisování pomocí certifikátů :-)

pavelevap avatar Feb 17 '17 18:02 pavelevap

Certifikát bohužel nešlo nahrát, musel jsem přidat do wp-config.php define( 'ALLOW_UNFILTERED_UPLOADS', true ); Taky nepomohlo do function.php

function my_myme_types($mime_types){
    $mime_types['p12'] = 'application/application/x-pkcs12'; 
    return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);

Všiml jsem si, že tam máte na to funkci, ale bohužel nefunguje (čistá instalace WP+WC) I když jsem nahrál testovací certifikát EET_CA1_Playground-CZ00000019.p12 a zadal DIČ CZ00000019 ID provozovny 11 ID pokladny 111 Heslo eet tak se mi u objednávek žádné EET nezobrazí (ani metabox)

novetrendy avatar Feb 22 '17 19:02 novetrendy

@novetrendy: Díky za otestování! Zkoušel jsem to před chvílí na dvou webech a nahrávání mi funguje bez problémů. Máte zaškrtnuté povolení EET v hlavním nastavení? Mohlo by to být také v konfliktu s přidanou funkcí ve functions.php. Případně prosím o přístupy, prověřím...

Metabox se nezobrazuje, protože jsem ještě neodeslal související soubor :-) Trochu ho ještě předělávám, k dispozici bude během zítřka.

pavelevap avatar Feb 22 '17 19:02 pavelevap

@pavelevap Ano EET mám povolené (jinak bych neměl aktivní nastavení EET). Tu funkci jsem tam přidal, protože mi to nechtělo certifikát nahrát. Super, zítra vyzkouším, pokud bude problém, můžu Vám přístupy poslat, je to ještě rozpracovaný web.

novetrendy avatar Feb 22 '17 19:02 novetrendy

V nové verzi je ta funkce trochu přesunutá, což by teoreticky mohlo nějak ovlivnit, uvidíme. P.S. Testovací certifikát je v nové verzi také součástí pluginu, takže stačí v nastavení zadat DIČ CZ1212121218 a bude automaticky použit pro testování (doplnil jsem to i do nápovědy na stránce s nastavením).

pavelevap avatar Feb 23 '17 10:02 pavelevap

Super, je to v tomto branchi - https://github.com/pavelevap/ceske-sluzby/tree/122-eet ? Nebo již součásti master ?

novetrendy avatar Feb 23 '17 13:02 novetrendy

Ještě to tam není, pořád to trochu ladím :-) Ještě během dneška to ale snad bude (spíše večer)... Je tam ještě pár věcí k diskuzi (co všechno ukládat - request i response, v původní XML podobě nebo pouze potřebná data, kam to nejlépe ukládat), sice jsem to nějak udělal, ale pořád o tom ještě trochu přemýšlím...

pavelevap avatar Feb 23 '17 14:02 pavelevap

Mělo by to být v branchi, můžete zkoušet. Zatím není povoleno produkční prostředí, takže se nemusíte bát zkoušet ani vlastní DIČ a certifikát, nikam by se to oficiálně nemělo dostat :-) V rámci testovacího prostředí je možné účtenky vytvářet i mazat, v produkčním prostředí mazat nepůjde (kvůli evidenci), pouze stornovat (v podstatě další účtenka se zápornou částkou). U objednávek je informační metabox, v případě odeslané účtenky se objeví detaily pod produkty a dopravou v rámci objednávky. Odeslat a mazat účtenky je možné pomocí akcí objednávky (rozevírací menu s akcemi u každé objednávky). Další informace jsem doplnil na stránku s hlavním nastavením. Ještě zkouším storna a produkční prostředí, to už pak jenom zapneme. Následně bude možné odesílat účtenky i automaticky (např. PayPal), ale nevím, kam dát nejlépe nastavení (většinou se to bude používat pouze pro platby v hotovosti a PayPal, karty to většinou řeší samy).

pavelevap avatar Feb 23 '17 20:02 pavelevap

@pavelevap Když dám Akce objednávky -> Získat EET účtenku, tak mě to přesměruje na /post.php a bohužel nic se neděje, jen white screen.

novetrendy avatar Feb 24 '17 08:02 novetrendy

Našlo by se něco v logu? Bílá obrazovka je fatal error, který se nezobrazuje (vypnuté zobrazování chyb). Vypadá to na nějaký problém s chybějící PHP knihovnou (soap, SimpleXML, OpenSSL - ještě není hotová automatická detekce a většinou je to vždy dostupné), jaký máte hosting? Ale může to být cokoli jiného, chtělo by to konkrétní chybovou hlášku...

pavelevap avatar Feb 24 '17 08:02 pavelevap

V logu nic není, zapnul jsem wpdebug, ale taky nic. Webhosting máme vlastní. (PHP 7.0.7, memory limit 256 MB, OpenSSL/1.0.1t, SimpleXML, SOAP ... )

novetrendy avatar Feb 24 '17 08:02 novetrendy

Tak teď se mi to na jednom z webů objevilo také, zkoumám to...

pavelevap avatar Feb 24 '17 09:02 pavelevap

Super!

novetrendy avatar Feb 24 '17 09:02 novetrendy

@novetrendy: Hloupá chyba :-( Mělo by to být opraveno.

pavelevap avatar Feb 24 '17 11:02 pavelevap

@pavelevap Vyzkoušeno, funguje, díky! FIK asi v testovacím prostředí není ?

novetrendy avatar Feb 24 '17 12:02 novetrendy

image

Fik by tam měl být (pokud je vše v pořádku, v testovacím prostředí má koncovku -ff). Ještě tam nemám zapnuté zobrazování chyb místo účtenky (za chvíli doplním), ale pokud používáte testovací DIČ, tak je asi potřeba mít i správnou (zaregistrovanou) provozovnu (273)?

Co nahrávání certifikátu?

pavelevap avatar Feb 24 '17 12:02 pavelevap

EET_CA1_Playground-CZ1212121218.p12
Tento typ souboru bohužel není z bezpečnostních důvodů povolen.
Elektronická účtenka (EET):
DIČ: CZ1212121218 - Číslo účtenky: 1
Provozovna: 273 - Pokladna: 1
Datum: 24.2.2017 - Čas: 13:46:06
Celková částka: 100Kč - Režim tržby: běžný
FIK: 
BKP: 530a3bc3-3fafb9e0-57f5d906-d36ed956-e81b087d

A jak se prosím dají účtenky mazat?

novetrendy avatar Feb 24 '17 12:02 novetrendy

Na nahrávání se ještě podívám, ale zatím se nepovedlo nikde nasimulovat. Mazat účtenky lze zase v menu Akce - Objednávky.

Pokud tam není FIK, tak tam asi po cestě došlo k nějaké chybce (možná formát zprávy). Až účtenku smažete, tak se v horním metaboxu objeví kontrolní údaje pro odeslání, jak tam máte naformátovanou částku tržby? Tady je formát 100Kč trochu podivný (měla by tam být asi mezera, ale asi to nehraje roli, počítá se s tím). Nemohl bych to vyzkoušet?

pavelevap avatar Feb 24 '17 13:02 pavelevap

Poslal jsem Vám přístupy na email. Po odeslání EET, již nemám v menu Akce objednávky nic k EET.

novetrendy avatar Feb 24 '17 13:02 novetrendy

Tak @pavelevap vše zprovoznil, v testovacím prostředí funguje jak má. Díky ! :+1:

novetrendy avatar Feb 27 '17 15:02 novetrendy