zpracování dat z ARESu – prosba o radu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MW
Člen | 626
+
0
-

Prosím, má někdo zkušenost nebo radu, jak by šlo zpracovat data z ARESu?
Vystup ze zadane URL je bud v XML nebo HTML…

Co by jste na to nejlépe pouzili?

Potrebuji to nacist a pripadne ulozit do db.

Predem dekuji za radu.

pekelnik
Člen | 462
+
0
-

Prosím, má někdo zkušenost nebo radu, jak by šlo opravit motor z auta?
Motor ze zadaneho auta je bud benzin nebo diesel…

Co by jste na to nejlépe pouzili?

Potrebuji to opravit a pripadne odvezt do garaze.

Predem dekuji za radu.

Editoval pekelnik (8. 3. 2013 14:53)

enumag
Člen | 2118
+
0
-

Nejlépe nějaký XML parser, co taky jiného. Na webu jich je hromada a jeden je i přímo v PHP.

Nalej tam benzin nebo naftu, podle toho co tvé auto chce. Na čerpacích stanicích máš i na výběr. :-)

stefi023
Člen | 71
+
0
-

Kdysi jsem to zkousel nejak takto…

	private function getCompanyData($ico) {
		$path = 'http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_bas.cgi?ico=%ico';
		$path = str_replace('%ico', $ico, $path);

		if ($path)
			try {
				$xml = @new \SimpleXMLElement($path, null, true);

				$a = array();
				if ($xml) {
					$ns = $xml->getDocNamespaces();
					$data = $xml->children($ns['are']);
					$el = $data->children($ns['D'])->VBAS;
					if (strval($el->ICO) == $ico) {
						$a['ic'] = strval($el->ICO);
						$a['dic'] = strval($el->DIC);
						$a['firma'] = strval($el->OF);
						if($el->AA) {
							$a['ulice'] = strval($el->AA->NU) . ' ' . strval($el->AA->CO);
							$a['mesto'] = strval($el->AA->N);
							$a['psc'] = strval($el->AA->PSC);
						}
						else {
							$a['ulice'] = '';
							$a['mesto'] = '';
							$a['psc'] = '';
						}
						return $a;
					} else
						return null;
				} else
					return false;
			} catch (\Exception $e) {
				return false;
			}
	}

Bude to ale potreba trochu poucesat, poladit, pripadne vychytat spravne vyjimky atd… nehlede na to ze by to mohla byt krasna sluzba dle vzoru DI

A kdyz nemas benzin, ani naftu, dej tam treba kecup :)

Editoval stefi023 (8. 3. 2013 15:43)

MW
Člen | 626
+
0
-

pekelnik napsal(a):

Prosím, má někdo zkušenost nebo radu, jak by šlo opravit motor z auta?
Motor ze zadaneho auta je bud benzin nebo diesel…

Co by jste na to nejlépe pouzili?

Potrebuji to opravit a pripadne odvezt do garaze.

Predem dekuji za radu.

Nebylo to trochu zbytecny ;)
Prece kdyz nevis na co jsem se ptal nebo nechces odpovedet tak neodpovidej.

h4kuna
Backer | 740
+
0
-

Ares viz readme

MW
Člen | 626
+
0
-

Diky moc! vyzkousim …

buffus
Člen | 101
+
0
-

PHP/5.3.18 | Nette Framework 2.0.10 | h4kuna/ares

Ahoj, prosím o začátečnickou radu. Přidal jsem do aplikace h4kuna/ares, (velmi pěkné, díky), ale neumím získat data z pole data objektu \h4kuna\Ares\Data, patrně proto, že je objekt v jiném jmenném prostoru.

$ares = new \h4kuna\Ares();
$answer = $ares->loadData('27074358'); // return object \h4kuna\Ares\Data
dump($answer);

vrátí

h4kuna\Ares\Data(1) {
   data private => array(10) {
      in => "27074358" (8)
      tin => "CZ27074358" (10)
      vat_pay => "1"
      city => "Praha" (5)
      company => "Asseco Central Europe, a.s." (27)
      street => "Budějovická 778" (17)
      zip => "14000" (5)
      active => TRUE
      file_number => "B 8525" (6)
      court => "Městský soud v Praze" (22)
   }
}

ale když přidám:

$onlycity = $answer->data['city'];

hlásí laděnka
Cannot read an undeclared property h4kuna\Ares\Data::$data.

Zkoušel jsem přidat use h4kuna\Ares\Data;, ale nepomohlo.

enumag
Člen | 2118
+
0
-

Zřejmě se má použít toto:

$answer = $ares->loadData('27074358')->toArray();
h4kuna
Backer | 740
+
0
-

Přesně tak :)

EDIT

enumag napsal(a):

Zřejmě se má použít toto:

Editoval h4kuna (14. 1. 2014 20:01)

h4kuna
Backer | 740
+
0
-

ArrayAccess bych mohl dodělat. Jde o to že né každý využije klíčové pojmenování které tam je, takže toArray má parametr do kterého si definuješ překladové pole (‚original‘ ⇒ ‚nový klíč‘) a zároveň to funguje jako průnik tvého pole a toho co to vrací.

Editoval h4kuna (16. 3. 2013 6:40)

buffus
Člen | 101
+
0
-

jasně, funguje, Já už to zkoušel a čert ví, proč mi to nešlo. Díky moc!

h4kuna
Backer | 740
+
0
-

ArrayAccess je přidaný už to bude makat.

$onlycity = $answer['city'];

EDIT: + Bugísek co jsem si všimnul :)

Editoval h4kuna (16. 3. 2013 11:36)

MW
Člen | 626
+
0
-

Funguje bezvadne ! Diky !

buffus
Člen | 101
+
0
-

Přidávám si do $street v Get.php za lomítko ještě číslo orientační. Může se někomu hodit.

$street = strval($el->AD->UC);
if (is_numeric($street)) {
	$street = $el->AA->NCO . ' ' . $street;
}
if (isset($el->AA->CO)) {
	$street = $street . '/' . $el->AA->CO;
}
h4kuna
Backer | 740
+
0
-

Přidal jsem, je do zatím jen v master větvi

buffus
Člen | 101
+
0
-

Super. Dík. Ještě jsem si taky v Get podmínil

...
->setTIN($el->DIC)
...

aby se u vraceného pole negenerovaly klíče tin a vat_pay s prázdnou hodnotou, pokud subjekt není plátce a výstupní chování bylo stejné jako u subjektů nezapsaných v obchodním rejstříku (tj. negenerují se klíče file_number atd.). Ale to je taky asi co jak komu vyhovuje.

h4kuna
Backer | 740
+
0
-

Pošli pull request.

walkercz
Člen | 9
+
0
-

Bylo by možné nahodit i verzi pro nette bez namespace pro php 5.2 s prexify? Snažím se to předělat, ale bohužel zasekl sem se na kousíčku v get.php

81 $this->IN = new \h4kuna\Int($inn);

kde i po odstranění \h4kuna\ class Int() nějak ne a ne existovat :D Věřím, že by to netrvalo moc dlouho. Díky předem za snahu/rady.

norbe
Backer | 408
+
0
-

To nemá s namespace nette nic společného. Knihovna má závislosti, které požaduje ke svému běhu definované pomocí composeru

Editoval norbe (30. 4. 2013 15:14)

h4kuna
Backer | 740
+
0
-

Přesně tak, závislosti jsou danné. Omlouvám se pro Php 5.2 to psát nebudu.

Editoval h4kuna (1. 5. 2013 7:00)

raketoplan2005
Člen | 147
+
0
-

Ahoj, stáhl jsem si aktuální master a dostávám chybu na řádce 79 v \vendor\h4kuna\ares\Ares\Data.php, konkrétně:

Recoverable Error
Object of class DateTime could not be converted to string

Čistý sandbox nette, jen přes composer stažena aktuální verze doplňku.

h4kuna
Backer | 740
+
0
-

Díky, opraveno.

raketoplan2005
Člen | 147
+
0
-

Já děkuji.