Closed BigOHenry closed 12 months ago
Pěkný, to je pro mě celkem šibeniční termín. S tím abych to nastudoval a zajistil zpětnou kompatibilitu.
Ten jeden měsíc je za mě nepochopitelnej. Nevím proč tak spěchají.
Vývoj je ve větvi 3.x
Prosím, v jakém stádiu je vývoj? Je to již nějak použitelné v alpha režimu? Pracuji na nové aplikaci, kde ARES využijeme, tak bych byl early adopter nové verze a mohl nějak pomoci s vychytáváním much 😄 .
Teď jsem to dodělal do stavu, že to implementuju do aplikace a nechám to tak týden běžet. Takže pokud chceš, můžeš
composer require h4kuna/ares:3.x-dev
Příklad v dokumentaci je funkční.
Tak oficiálně je to připravené na alfa testování, není tam nic co bych chtěl implementovat.
Díky. Vypadá to že základ funguje. Jen ještě otázka, máš v plánu implementovat další endpointy? (RES, VR, atd.). Aspoň jako obecnou metodu kam člověk dá ičo, zvolí endpoint a vrátí to raw JSON
EDIT: Dobrý, už jsem našel :-)
Narazil jsem na jednu věc. Plátce DPH.
$data->tin = Strings::trimNull($json->dic ?? null);
$data->vat_payer = (bool) $data->tin;
To, že má osoba DIČ ještě neznamená že je plátce DPH. Může být jen jako identifikovaná osoba. Hodnota atributu vat_payer je tedy za mě špatně.
Hodnota plátce DPH vrací pouze ekonomicke-subjekty-szr -> zaznamSzr -> platceDPH
To znamená udělat dotaz na další endpoint... tomu jsem se chtěl vyhnout
@BigOHenry To je hloupost, ekonomicke-subjekty-szr je endpoint pro Záznamy Zemědělského registru. Firmy a živnostníci tam nebudou. Obávám se, že ARES vůbec informaci o plátcovství DPH nezná. Na ověření plátce DPH slouží VIES.
@h4kuna V changelogu píšeš:
zmizela metoda isGroupVat() ARES již vrací DIČ pro skupinové DPH
Jenže ARES vrací DIČ pro skupinové DPH chybně...
Viz např.: https://ares.gov.cz/ekonomicke-subjekty-v-be/rest/ekonomicke-subjekty/02445344 - ARES vrací DIČ 02445344, ale správné DIČ subjektu je CZ699004845 nebo: https://ares.gov.cz/ekonomicke-subjekty-v-be/rest/ekonomicke-subjekty/49240901 - ARES vrací DIČ 49240901, ale správné DIČ subjektu je CZ699003154
Psal jsem před chvílí na aresmfcr@mfcr.cz s dotazem, jestli bude ARES vracet správná DIČ v případě skupinových registrací k DPH. Uvidíme co odpoví, jestli odpoví...
@hubipe Co je hloupost? Vyhodnocení plátce DPH je špatně implementované. Nepsal jsem že szr vrací vše, jen jsem napsal který endpoint to vrací :-)
Jinak máš pravdu, ARES (žádný endpoint) tedy nevrací plátce DPH pro všechny subjekty.
Také potvrzuji špatné skupinové DIČ. Díky a dej pak prosím vědět až odpoví (jestli) :-)
@h4kuna Bude to tedy spíše o tom atribut vat_payer úplně vyhodit.
Vyhazovat se nemusí, ale místo ano/ne to bude možná/ne
@mabar Informace "možná" je poměrně málo použitelná.
Správné je nevracet info o plátcovství DPH, protože ho Ares neposkytuje.
Dedukovat nepřesné informace je asi mimo scope této knihovny.
@hubipe to jsem napsal. Měl jsem IČO v testech, který začalo dávat správný data, ale hlavní důvod je že odebrali parametr psu
, kde to bylo extra uvedený. Navíc vraceli místo DIČ text Skupinove_DPH
to taky už není. V tuto chvíli nevím čeho se chytit.
@SvatoplukHus nemyslím si že je to mimo scope knihovny. Obecně ARES knihovnu použiješ aby si doplnil fakturační údaje a potřebuješ identifikaci i o DPH :)
Co se týče jak evidovat typ DPH, tak bych šel jak to má ISDOC (a my interně).
case ValueAddedTax = 'VAT';
case TaxIdentificationNumber = 'TIN';
nebo null.
:)
@SvatoplukHus má podle mě pravdu. @pionl Jenže to že má někdo DIČ, neznamená vůbec nic. Já třeba DIČ mám, ale plátce DPH nejsem (identifikovaná osoba). Je hromada případů kdy DIČ osoby mají a plátci nejsou. A jak psal @hubipe "Na ověření plátce DPH slouží VIES." A my ho také na to používáme. Za mě není důvod, aby si tahle super knihovna vymýšlela data :-)
A né každý používá tuto knihovnu na doplnění fakturačních údajů. Někdo ji třeba používá i v jiném prostředí, kde ty data MUSÍ být správná.
Říkám si zda by se nedalo chytit, zda je plátce DPH či není seznamRegistraci { "stavZdrojeDph":"AKTIVNI"}
@BigOHenry jaký máš IČO?
Z historických důvodů jsem držel kompatibilitu a ponechal některé možnosti. Je potřeba mít možnost třídu Data vyměnitelnou za vlastní entitu?
Je potřeba mít možnost ovlivnit plnění entity?
@h4kuna Hele to je otázka. Možná by tam cesta byla. Moje ičo je: 05560438
@BigOHenry cesta tam není :) u tebe jako identifikované osoby je uveden "stavZdrojeDph":"AKTIVNI"
viz https://ares.gov.cz/ekonomicke-subjekty-v-be/rest/ekonomicke-subjekty/05560438
@h4kuna Taky jsem koukal. Bohužel není.
@BigOHenry @h4kuna Koukám na to tvé DIČ. Na stránkách MFČR je v registru DPH skutečně tvoje DIČ uvedeno, jako identifikovaná osoba: narozdíl třeba ode mě, kde je uvedeno plátce:
VIES však tvé DIČ potvrdí, jako plátce:
Tedy z mého pohledu, když by knihovna zachovala příznak _vatpayer, pak je za mě validní, aby v případě identifikovaných osob vracela TRUE. (Protože pokud někomu vystavuješ fakturu, přidáváš na ni DPH, které si může plátce DPH odpočítat, je to tak?) Ale stále nejsem přesvědčen o tom, že by knihovna pro vytahování dat z ARESu měla vůbec tuto property vracet. Stejně to není směrodatné a důležité je to, co vrací VIES.
@hubipe Právě že DPH nepřidávám. Identifikovanou osobou jsem proto, protože kupiji služby z jiných členských států EU (reklamy Meta, Google, atd.) a oni když vystavují fakturu, tak ji vystavují bez DPH. Já pak toto DPH musím dopočítat z té částky a odvést za ně. To je vše. Když vystavuji fakturu jako dodavatel, tak ji mám bez DPH (s informací že nejsem plátce DPH) a nedělám ani kontrolní hlášení.
@BigOHenry Aha, takže pro zahraniční plátce se identifikovaná osoba chová jako plátce DPH (vystavují faktury v režimu přenesené daňové povinnosti), ale v tuzemském styku identifikovaná osoba nevystupuje jako plátce DPH, takže potenciální příjemce tvých služeb si DPH odpočítat nemůže.
Koukám ještě do starého ARESu, a tam v tagu PSU jsi také označen příznakem A pro registr DPH. Tzn. vlastně nový ARES vrací to stejné, co starý ARES a to stejné, co VIES — jen to, jestli jsi nebo nejsi v registru DPH, nikoliv v jakém režimu tam jsi. Takže ve dvojkové verzi knihovny jsi (nejspíš) taky označen jako _vatpayer.
Takže pokud @h4kuna příznak v ARES _vatpayer ponechá, pak mi přijde, že by se měl chovat stejně, jako ve dvojkové verzi - tzn. vracet TRUE, pokud existuje záznam v registru DPH, tedy "stavZdrojeDph":"AKTIVNI"
. Ale je pravdou, že pro identifikované osoby je to zavádějící.
@hubipe Ano, ve dvojkové verzi jsem označen jako vat_payer.
No ona je pak další otázka, jestli nejsou nějaké případy, kdy osoba má DIČ, ale z nějakého důvodu plátce není. Například že byl a již plátce není, ale DIČ mu zůstává. Ale to jsou hypotetické scénáře, u kterých netuším jestli jsou reálné. To by se dalo případně kombinovat se stavZdrojeDph
jak píšeš.
Stav zdroje jsem upravil. Jestli jsi nebo nejsi identifikovaná osoba už nejde zjistit. Vlastnosti jsem označil jako deprecated, ale zatím je neplánuju odebrat. K vlastnostem jsem napsal info.
Identifikovaná osoba půjde zjistit z API (alespoň doufám) to bych chtěl dodělat. Fór je v tom že tam je SOAP, problém to není, jen co služba to jiná technologie. Pokud by chtěl někdo na tom začít dělat, bylo by to fajn :)
Pokud bych napojil i VIES, tak bych mohl dát dohromady všechny relevantní data :) K tomu aby se správně předvyplňoval formulář pro našeptávání. Jen nevím jak vyřešit staré DIČ? viz ARES vrací DIČ 49240901, ale správné DIČ subjektu je CZ699003154
@BigOHenry na starých datech máš taky DIČ https://wwwinfo.mfcr.cz/cgi-bin/ares/darv_bas.cgi?ico=05560438 takže jsi byl vždy vat_payer podle knihovny. Ta detekce se chovala stejně i předtím. Jen to nikdo N let neřešil :)
@h4kuna Je to tak a navíc DIČ mám tak max rok, takže jsem to předtím neřešil (a nic moc jsem o tom ani nevěděl) :)
Ono v 90-95% případů budou data správně.
@h4kuna Tady jsem vyhrabal starou a basic, ale funkční implementaci ADIS. Nevím jestli ti k něčemu bude ale dám ji sem :)
$xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<StatusNespolehlivyPlatceRequest xmlns="http://adis.mfcr.cz/rozhraniCRPDPH/">
<dic>'.$dic.'</dic>
</StatusNespolehlivyPlatceRequest>
</soapenv:Body>
</soapenv:Envelope>';
$request = curl_init();
$url = 'http://adisrws.mfcr.cz/adistc/axis2/services/rozhraniCRPDPH.rozhraniCRPDPHSOAP';
curl_setopt($request, CURLOPT_URL, $url);
curl_setopt($request, CURLOPT_CAINFO, $this->wwwDir . "/../resources/API/cacert.pem");
if($this->serviceModel->isProxy()) {
curl_setopt($request, CURLOPT_USERPWD, $this->domain_user['user'] . ":" . $this->domain_user['password']);
curl_setopt($request, CURLOPT_PROXY, $this->https_proxy['host'].':'.$this->https_proxy['port']);
}
$headers = array(
'Content-Type:text/xml',
);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_CONNECTTIMEOUT ,400);
curl_setopt($request, CURLOPT_TIMEOUT, 400);
curl_setopt( $request, CURLOPT_POST, true );
curl_setopt($request, CURLOPT_POSTFIELDS, $xml);
$result_main = curl_exec($request);
$result = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $result_main);
$saved = libxml_use_internal_errors(true);
$xml = simplexml_load_string($result);
$errors = libxml_get_errors();
libxml_use_internal_errors($saved);
if ($xml === false) {
if(count($errors) > 0) {
// log $errors
} else if (curl_errno($request)) {
// log curl_error($request)
} else {
// log $result_main
}
curl_close($request);
} else {
if (curl_errno($request)) {
// log curl_errno($request)
} else {
$json = json_encode($xml);
$data = json_decode($json, true);
// $data obsahují data z response jako pole
}
}
@h4kuna Potvrzuju; teď jsem zkoušel ten SOAP, a typ registrace jde vytáhnout za předpokladu, že známe DIČ:
$soap = new SoapClient('https://adisrws.mfcr.cz/dpr/axis2/services/rozhraniCRPDPH.rozhraniCRPDPHSOAP');
dumpe($soap->getStatusNespolehlivySubjektRozsireny(['dic' => '8702080024']));
v response je pak typSubjektu, který podle dokumentace může nabývat hodnot:
<xsd:enumeration value="PLATCE_DPH"/>
<xsd:enumeration value="IDENTIFIKOVANA_OSOBA"/>
<xsd:enumeration value="NENALEZEN"/>
Ale stejně to neřeší skupinové DPH, u kterého prostě z ARESu DIČ skupiny nedostaneme. A i kdyby, tak ho SOAP API nespolehlivých plátců neověří... Pěknej bordel v té státní správě mají.
Dobrá zpráva, odepsali mi z MFČR:
Dobrý den, o požadavku na Skupinové DPH víme a pracujeme na tom. Snažíme se o to, aby se vracelo DIČ skupiny nikoliv pouze text „Skupinove_DPH“. Tyto údaje přebíráme z Generálního finančního ředitelství, které nám již zaslalo testovací dávku, kterou nyní analyzujeme a snažíme se najít vhodné řešení.
S pozdravem Jan Sádlík oddělení Informační systémy |Information Systems MINISTERSTVO FINANCÍ | MINISTRY OF FINANCE Letenská 15, 118 10 Praha | Prague – Czech Republic
Přidal jsem ADIS jako další službu s tím že to zatím nijak neovlivňuje výsledky z ARESu. @BigOHenry použil jsem pro inspiraci ten kód, protože lze pak použít PSR standardy, namísto nativní SoapClient.
Doplnil jsem, aby ADIS validoval výsledky z ARESu. Přehledná tabulka
FYI
Na základě zpětné vazby jsme se rozhodli prodloužit souběžný provoz původního a modernizovaného informačního systému ARES do 31. 10. 2023.
Pokud používáte již tuto alfa verzi, doporučuji aktualizovat, změnili vstupní data a knihovna se chová špatně. Již opraveno #35 odebral jsem vlastnost Data::$vat_id
Jen pro info – vypnutí starého ARESu se odkládá na konec roku. Co se týče skupinových registrací k DPH, tak to v novém ARESu ještě pořád neimplementovali.
FIY: DIČ má u nás každý subjekt, získáváš ho při registraci na FÚ k dani z příjmu a je to identifikátor se kterým se s FÚ komunikuje i jako neplátce DPH. Takže úplně správně by ho měl vracet každý kontakt, ale jak víme, mají v tom registru bordel hlavně oni :)
Je to pravda, ale já ten DIČ pro neplátce nedostanu... Viz. https://ares.gov.cz/ekonomicke-subjekty-v-be/rest/ekonomicke-subjekty/08975884
Dobrá zpráva, odepsali mi z MFČR:
Dobrý den, o požadavku na Skupinové DPH víme a pracujeme na tom. Snažíme se o to, aby se vracelo DIČ skupiny nikoliv pouze text „Skupinove_DPH“. Tyto údaje přebíráme z Generálního finančního ředitelství, které nám již zaslalo testovací dávku, kterou nyní analyzujeme a snažíme se najít vhodné řešení. S pozdravem Jan Sádlík oddělení Informační systémy |Information Systems MINISTERSTVO FINANCÍ | MINISTRY OF FINANCE Letenská 15, 118 10 Praha | Prague – Czech Republic
Vypadá to že vše funguje, již dostávám skupinové DIČ.
Nový ares (REST API): zdroj