Projekt

Obecné

Profil

<?php
/**
* Main class for parsing bank account listings from czech bank "FIO banka".
* The listings are downloaded from the ebanking web application.
*
* Additional changes for Freenetis (Jiri Svitak 2011-08-18):
* added file import support
* changed code due to changed csv table header format
*
* @abstract Class for parsing bank account listings from czech bank "FIO banka".
* @author Petr Hruska, Lukas Turek, Jiri Svitak
* @copyright 2009-2011 Petr Hruska, Lukas Turek, o.s. CZF-Praha, Jiri Svitak, o.s. Unart
* @link http://www.praha12.net
* @license ??GPLv3 ??
* @version
*/

require_once dirname(__FILE__).'/FioConfig.php';
require_once dirname(__FILE__).'/FioConnection.php';
require_once dirname(__FILE__).'/FioParser.php';

class FioImport
{
/**
* Gets data from internet banking directly.
* @param <type> $fromDate
* @param <type> $username
* @param <type> $password
* @param <type> $accountNumber
* @param <type> $viewName
* @return <type>
*/
public static function getData($fromDate, $username, $password, $accountNumber, $viewName)
{
$downloadConfig = new FioConfig($username, $password, $accountNumber, $viewName);
$connection = new FioConnection($downloadConfig);
$csvData = $connection->getCSV($fromDate, null);
$csvData = iconv('cp1250', 'UTF-8', $csvData);
$data = FioParser::parseCSV($csvData);
self::cleanupData($data);
return $data;
}

/**
* Gets data from manully imported csv file.
* @author Jiri Svitak
* @param <type> $file
*/
public static function getDataFromFile($file)
{
if (($csvData = file_get_contents($file)) === false)
throw new FioException(__("Cannot open uploaded bank listing file!"));
$csvData = iconv('cp1250', "UTF-8", $csvData);
$data = FioParser::parseCSV($csvData);

// clean up from needless attributes is not necessary due to changing Fio csv format
self::cleanupData($data);

return $data;
}

/**
* Returns bank listing header information, information is provided only after parsing.
* @author Jiri Svitak
* @return <type>
*/
public static function getListingHeader()
{
return FioParser::getListingHeader();
}

/**
* Cleans bank item from needless attributes.
* @param <type> $data
*/
public static function cleanupData(&$data)
{
foreach ($data as &$row)
{
if ($row['mena'] != 'CZK')
throw new FioException("Unknown currency {$row['mena']}!");


// only transfer from Fio to Fio have 'nazev_protiuctu'
// for accounts in other banks we have to derive account name
if (!$row['nazev_protiuctu'] && $row['identifikace'])
$row['nazev_protiuctu'] = $row['identifikace'];

// convert from cents
$row['castka'] /= 100;

// unneccessary columns
unset($row['prevod']);
unset($row['provedl']);
}
}
}

class FioException extends Exception {}
(3-3/5)