Stormware Pohoda: Porovnání verzí

Z Wiki UnArt Slavičín
Skočit na navigaciSkočit na vyhledávání
 
Řá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" "c:\Program Files\EasyPHP 3.0\www\radky.php" %%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!