Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 433

Přidáno uživatelem Tomáš Dulík před asi 15 roky(ů)

Oprava importu z ebanky, nove features: automaticke zauctovani vyberu z bankomatu, automaticke zauctovani terminovanych vkladu a jejich uroku, kontrola duplicit.

Zobrazit rozdíly:

freenetis/trunk/kohana/application/models/bank_transfer.php
public static function get_duplicities($data) {
if (empty($data->variable_symbol)) $cond_vs="IS NULL";
else $cond_vs="=$data->variable_symbol";
if (!empty($data->number)) $cond_number="AND bt.number=$data->number";
else $cond_number="";
$q="SELECT t.datetime, t.creation_datetime, t.text, bt.*
FROM bank_transfers AS bt JOIN transfers AS t
ON bt.transfer_id=t.id
AND t.datetime='$data->date_time'
AND t.text='$data->comment'
AND t.text='$data->comment'
".$cond_number."
AND bt.variable_symbol $cond_vs";
return self::$db->query($q);
}
freenetis/trunk/kohana/application/controllers/import.php
switch($form_data['type'])
{
case self::$html_ebanka:
$this->parse_ebank_account(null, $form->listing->value);
$this->parse_ebank_account($id, $form->listing->value);
break;
case self::$csv_postovni_sporitelna:
//$this->parse_csv_file($id, $form_data['csv_template'], $form->listing->value);
......
// Vytvoříme transakci z 644000 nebo 655000 (uroky) na 221000
// a bankovní transakci z null na parsovaný účet. Přiřadíme ji sdružení (member_id=1)
if (empty($vs)) // běžný úrok? (644000)
$this->create_transfers($interests, $parsed_acc, $data->amount,
$this->create_transfers($bank_interests, $parsed_acc, $data->amount,
null, $this->parsed_bank_acc, $data, 1);
else // úrok z termínovaného vkladu (655000)
$this->create_transfers($time_deposit_interests, $parsed_acc, $data->amount,
$this->create_transfers($time_deposits_interests, $parsed_acc, $data->amount,
null, $this->parsed_bank_acc, $data, 1);
$this->stats->interests += $data->amount;
$this->stats->interests_nr++;
......
$ks=trim($data->constant_symbol);
$term_vklad = ($ks == "968");
$member_model->clear();
$member=$member_model;
if ($term_vklad) $member->id=1; // term. vklad vždy způsobuje samo sdružení
//u ostatních typů transakcí zkusíme najít původce:
else if ($data->amount>0 && !empty($vs)) {
// členský příspěvek nebo příjem z faktury odběrateli
$member=$member_model;
if (!$term_vklad && $data->amount>0 && !empty($vs)) { //u čl. příspěvků zkusíme najít původce:
// členský příspěvek nebo příjem z faktury odběrateli
// @todo zpracování jiných typů VS u člen. příspěvků (např. ID+CRC16)
// uvedl člen u teto platby jako variabilni symbol (VS) svůj telefon ?
$member=$member_model->find_member_by_phone($vs);
......
$this->stats->unasigned++;
}
}
// else { // platba přijaté faktury - majitele účtu najdeme dle VS na faktuře, až budeme mít modul přijatých faktur}
// else { // if platba přijaté faktury - majitele účtu najdeme dle VS na faktuře, až budeme mít modul přijatých faktur}
// ***Tady si vytvorime instanci účtu clena (nebo dodavatele) z prave nacteneho vypisu:
$bank_acc=$bank_acc_model->find_by_account_nr_and_bank_nr($data->account_nr, $data->account_bank_nr);
if (!$bank_acc->id) { // bank. ucet clena neexistuje, tak si ho vytvorime
$bank_acc->clear();
$bank_acc->member_id = $member->id;
$bank_acc->member_id = ($term_vklad ? 1 : $member->id); //term. vklad je vždy způsoben sdružením
$bank_acc->name = $data->name;
$bank_acc->account_nr = $data->account_nr;
$bank_acc->bank_nr = $data->account_bank_nr;
......
}
} else { // $data->amount > 0
if ($term_vklad) { // převod peněz na účet term. vkladu
$id=$this->create_transfers($parsed_acc, $time_deposits, $amount,
$this->parsed_bank_acc, $bank_acc, $data, $member->id, null);
$this->stats->time_deposits_drawn+=$amount;
$this->stats->time_deposits_drawn_nr++;
$id=$this->create_transfers($time_deposits, $parsed_acc, $data->amount,
$bank_acc, $this->parsed_bank_acc, $data, $member->id, null);
$this->stats->time_deposits+=$data->amount;
$this->stats->time_deposits_nr++;
} else {
// členský příspěvek - vytvoříme:
// - podvojnou transakci z 684000 na 221000
......
$bank_transfer->transfer_id = $transfer->id;
$bank_transfer->origin_id = isset($src_bank_acc)? $src_bank_acc->id : null;
$bank_transfer->destination_id = isset($dst_bank_acc)? $dst_bank_acc->id : null;
$bank_transfer->number = $data->number;
$bank_transfer->variable_symbol = $data->variable_symbol;
$bank_transfer->constant_symbol = $data->constant_symbol;
$bank_transfer->specific_symbol = $data->specific_symbol;
......
foreach ($this->stats as $key=>$value)
echo "<tr><td>$key</td><td>$value</td></tr>";
echo "</table>\n";
if (!isset($this->stats->time_deposits)) $this->stats->time_deposits=0;
if (!isset($this->stats->time_deposits_drawn)) $this->stats->time_deposits_drawn=0;
if (!isset($this->stats->invoices)) $this->stats->invoices=0;
if (!isset($this->stats->interests)) $this->stats->interests=0;
if (!isset($this->stats->bank_fees)) $this->stats->bank_fees=0;
if (!isset($this->stats->member_fees)) $this->stats->member_fees=0;
echo "Bank. poplatky = ". $this->stats->bank_fees;
echo "<br/>\nVýdaje = ". ($this->stats->bank_fees + $this->stats->invoices);
echo "<br/>\nPříjmy = ". ($this->stats->interests + $this->stats->member_fees);
echo "<br/>\nVýdaje = ". ($this->stats->bank_fees + $this->stats->invoices + $this->stats->time_deposits_drawn);
echo "<br/>\nPříjmy = ". ($this->stats->interests + $this->stats->member_fees + $this->stats->time_deposits);
echo "<br/>\nMemory usage=".(memory_get_usage()-$mem)."<p>\n";
echo"parse - end: ".(microtime(true)-$start)."<p>\n";
freenetis/trunk/kohana/application/libraries/Parser_Ebanka.php
$res = $this->result;
$first=true;
$line_nr=0;
do {
$status=$this->get_table_rows();
......
break;
case 5:
$res->fee=$this->get_fee($field, TRUE); // fee
$line_nr++;
$res->number=$line_nr;
//ted uz muzeme ulozit ziskane data do databaze:
if (isset($this->callback)) call_user_func($this->callback, $res);
/**
* ted uz muzeme ulozit ziskane data do databaze:
*/
break;
} // switch
......
flush();
trigger_error("Parser error: ".
"očekával jsem číslo výpisu, ale dostal jsem:<br/>\n".$field.
"<br/> \nPoslední správně načtený řádek výpisu má číslo ".$res->cislo.
"<br/> \nPoslední správně načtený řádek výpisu má číslo ".$res->number.
"<br/> \nCelý vstupní buffer je: <br/>\n". htmlentities($this->buffer)
//,E_USER_ERROR
);
}
$res->cislo=$field;
$res->number=$field;
break;
case 1: // datum a čas příklad: 08.08.<br>06:11
$arr=preg_split("/<br>/si", $field);
if (count($arr)<2)
trigger_error("Parser error: ".
"očekávám datum/čas jako dd.mm.&lt;br&gt;hh:mm ale dostal jsem:<br/>\n".$field.
"<br/> \nPoslední správně načtený řádek výpisu má číslo ".$res->cislo.
"<br/> \nPoslední správně načtený řádek výpisu má číslo ".$res->number.
"<br/> \nCelý vstupní buffer je: <br/>\n". htmlentities($this->buffer),
E_USER_ERROR);
else {
......
if (count($arrDate)<2)
trigger_error("Parser error: ".
"očekávám datum jako dd.mm. ale dostal jsem:<br/>\n".$arr[0].
"<br/> \nPoslední správně načtený řádek výpisu má číslo ".$res->cislo.
"<br/> \nPoslední správně načtený řádek výpisu má číslo ".$res->number.
"<br/> \nCelý vstupní buffer je: <br/>\n". htmlentities($this->buffer),
E_USER_ERROR);

Také k dispozici: Unified diff