Stormware Pohoda: Porovnání verzí
(Není zobrazena jedna mezilehlá verze od stejného uživatele.) | |||
Řádek 9: | Řádek 9: | ||
Pokud máme HTML soubory s výpisy v několika (mnoha) souborech, musíme si z nich nejdříve udělat jeden velký soubor, a to například takto: | Pokud máme HTML soubory s výpisy v několika (mnoha) souborech, musíme si z nich nejdříve udělat jeden velký soubor, a to například takto: | ||
(Pro UNIX) | (Pro UNIX) | ||
#!bin/bash | #!bin/bash | ||
Řádek 15: | Řádek 16: | ||
(Pro Windows) | (Pro Windows) | ||
FOR %%F IN (%1) DO "c:\Program Files\EasyPHP 3.0\php\php.exe" %%F >> %2 | del tmp.html | ||
del %2 | |||
FOR %%F IN (%1) DO "c:\Program Files\EasyPHP 3.0\php\php.exe" "c:\Program Files\EasyPHP 3.0\www\radky.php" %%F >> tmp.html | |||
copy "c:\Program Files\EasyPHP 3.0\www\hlavicka.html" %2 | |||
type tmp.html>>%2 | |||
Přičemž soubor radky.php bude obsahovat toto: | Přičemž soubor radky.php bude obsahovat toto: | ||
Aktuální verze z 16. 4. 2009, 16:23
Import bankovních výpisů
Pohoda sice obsahuje funkci pro komunikaci s bankou přes ABO soubory a tyhle soubory není problém generovat (na to su expert), jenomže import z ABO souboru se odklikává položku po položce, u každé položky je potřeba nakliknout předkontaci, typ (příjem - výdej), atd., takže u 5000 položek to je práce pro sebevraha.
Naštěstí Pohoda umí naimportovat data i hromadně - buď přes formát mdb, nebo přes formát DBF.
U formátu mdb není žádná možnost, jak jej vytvořit ze skriptovacího ne-MS jazyka. Takže jsem šel cestou DBF, protože ten lze vytvořit v PHP pomocí extension dBase.
Příprava HTML dat
Pokud máme HTML soubory s výpisy v několika (mnoha) souborech, musíme si z nich nejdříve udělat jeden velký soubor, a to například takto:
(Pro UNIX)
#!bin/bash rm vysledek.htm for i in $( ls *htm* ); do php -f radky.php $i >>vysledek.htm; done
(Pro Windows)
del tmp.html del %2 FOR %%F IN (%1) DO "c:\Program Files\EasyPHP 3.0\php\php.exe" "c:\Program Files\EasyPHP 3.0\www\radky.php" %%F >> tmp.html copy "c:\Program Files\EasyPHP 3.0\www\hlavicka.html" %2 type tmp.html>>%2
Přičemž soubor radky.php bude obsahovat toto:
<?php foreach ($_SERVER["argv"] as $argc=>$argv) if ($argc>0 && file_exists($argv)) { $str=file_get_contents($argv, "r"); $last_table_start=strripos($str, "<table"); $first_row_start=stripos($str, "<tr",$last_table_start+6); $second_row_start=stripos($str, "<tr",$first_row_start+3); $last_row_end=strripos($str, "</tr"); $str=substr($str, $second_row_start, $last_row_end+5-$second_row_start); echo ($str); } ?>
K výslednému souboru vysledek.html je ještě potřeba přidat hlavičku a patičku, abychom dostali korektní HTML. Třeba takto:
cat vysledek.htm >> head.html cat end.html >> head.html
Konverze HTML do dBase
Pro konverzi HTML do dBase slouží PHP skript Html2dbf, viz Soubor:Html2dbf.zip. Je v něm první verze parseru, který jsem později kompletně přepsal pro potřeby Freenetisu, plus generování DBF databáze z výsledků HTML parsování.
Bohužel, PHP extension php5-dbase není v Debianu, bylo by nutné ji dokompilovat spolu s celým PHP. Nejjednodušší řešení je proto asi provozovat konverzi na Windows, kde např. balík EasyPHP extension dBase má.
Příprava dBase pro načtení do Pohoda Stormware
Další zrada: Pohoda Stormware neumí DBF soubory vyrobené extension-em dBase načíst přímo. Proto je nutné DBF soubory otevřít v Calc-u OpenOffice - při tom je důležité vybrat v import dialogu správně kódování (Východní Evropa, CP852). Pak soubor bez jakékoli změny uložíme přes "Save as" klidně pod stejným jménem, díky čemuž se v DBF souboru něco stane a Pohoda už ho bez problémů načte.
Příprava do Pohoda Stormware
Html2dbf vytvoří 4 soubory:
- neco-urok.dbf - položky úroků. Při importu tohoto souboru do Pohody nastavte předkontaci pro "úroky", typ dokladu nastavte na Příjem
- neco-popl.dbf - typ dokladu "Příjem", předkontace - bankovní poplatky
- neco-ostat.dbf - všechny ostatní výdaje (typ = Výdej), předkontace = úhrada faktury
- neco-prisp.dbf - členské příspěvky. Typ = Příjem, předkontace = příspěvky
Import souboru s 2000 položkami trvá několik minut, nelekejte se!