Revize 323
Přidáno uživatelem Tomáš Dulík před asi 15 roky(ů)
freenetis/trunk/kohana/application/controllers/accounts.php | ||
---|---|---|
*/
|
||
public function store_transfer_ebanka($data) {
|
||
/** zde jsou statické objekty, jejichž instance tvořím jen jednou u importu prvního řádku
|
||
* výpisu (šetříme paměť...) */
|
||
* výpisu (šetříme paměť...)
|
||
* ALTER TABLE `bank_transfers` ADD `datetime` DATETIME NOT NULL AFTER `id`
|
||
* */
|
||
static $time_now;
|
||
static $acc_model;
|
||
static $bank_acc_model;
|
||
static $member_model;
|
||
... | ... | |
static $first_pass=true;
|
||
|
||
if ($first_pass) { // dostavame prvni radek vypisu?
|
||
$time_now=date("Y-m-d H:i:s");
|
||
$member_model=new Member_Model(); // vytvorime vsechny instance, ktere potrebujeme i pro dalsi radky
|
||
$acc_model=new Account_Model();
|
||
$bank_acc_model=new Bank_account_Model();
|
||
... | ... | |
// ********************** Tak a jdeme tvořit transakce *********************
|
||
if (empty($data->amount))
|
||
// ****** Bankovní poplatky: ebanka má v řádku výpisu pouze poplatek, ale castka==0
|
||
$this->create_transfer_bank_fee($parsed_acc, $data);
|
||
$this->create_transfer_bank_fee($parsed_acc, $data, $time_now);
|
||
else // amount je nenulovy
|
||
if (!empty($data->amount) && empty($data->fee)) {
|
||
// ***** úroky u ebanky: částka!=0 a poplatek==0
|
||
// Vytvoříme transakci z 644000 (uroky) na 221000
|
||
$id=$this->create_transfer($bank_interests->id, $parsed_acc->id,
|
||
$data->amount, $data->date_time, $data->comment);
|
||
$data->amount, $time_now, $data->comment);
|
||
//vytvoříme bankovní transakci z null na parsovaný účet
|
||
$this->create_bank_transfer(null, $this->parsed_bank_acc->id, $id, $data);
|
||
} else {
|
||
... | ... | |
$member = $member_model->find($bank_acc->member_id); // zkusím ho vzít odsud
|
||
// úhrada faktury - z 221000 (bank. účet) na 321000 (dodavatelé)
|
||
$id=$this->create_transfer($parsed_acc->id, $suppliers->id,
|
||
$data->amount, $data->date_time, $data->comment);
|
||
$data->amount, $time_now, $data->comment);
|
||
$this->create_bank_transfer($this->parsed_bank_acc->id, $bank_acc->id, $id, $data);
|
||
// a ještě vytvoříme transakce (podvojné+bankovní) bank. poplatku
|
||
$this->create_transfer_bank_fee($parsed_acc, $data, $id);
|
||
} else { // $data->amount > 0
|
||
// členský příspěvek - z 684000 na 221000
|
||
$id=$this->create_transfer($member_fees->id, $parsed_acc->id,
|
||
$data->amount, $data->date_time, $data->comment);
|
||
$data->amount, $time_now, $data->comment);
|
||
$this->create_bank_transfer($bank_acc->id, $this->parsed_bank_acc->id, $id, $data);
|
||
// pak vytvoříme transakce (podvojné+bankovní) bank. poplatku
|
||
$this->create_transfer_bank_fee($parsed_acc, $data, $id);
|
||
$this->create_transfer_bank_fee($parsed_acc, $data, $time_now, $id);
|
||
if ($member->id) { // našli jsme plátce?
|
||
// **** převedeme peníze členovi na jeho účet s kreditem
|
||
// ten účet ale musíme najít nebo vytvořit:
|
||
... | ... | |
$credit_acc=$acc_model;
|
||
}
|
||
$this->create_transfer($parsed_acc->id, $acc_model->id,
|
||
$data->amount-$data->fee, $data->date_time, "Přiřazení platby");
|
||
$data->amount-$data->fee, $time_now, "Přiřazení platby");
|
||
// **** teď se podíváme, jestli v té době sdružení účtovalo poplatek za zpracování platby:
|
||
$fee=$fee_model->get_by_date_type($data->date_time, 'transfer fee');
|
||
if (is_object($fee) && $fee->id) // ano? Pak poplatek strhneme z účtu
|
||
$this->create_transfer($credit_acc->id, $operating->id,
|
||
$fee->fee-$data->fee, $data->date_time, "Transakční poplatek");
|
||
$fee->fee-$data->fee, $time_now, "Transakční poplatek");
|
||
|
||
|
||
} // if (is_object($member) && $member->id)
|
||
... | ... | |
} // else { // ****** castka!=0 && poplatek !=0
|
||
}
|
||
|
||
private function create_transfer_bank_fee($parsed_acc, $data, $prev_id=null) {
|
||
private function create_transfer_bank_fee($parsed_acc, $data, $time_now, $prev_id=null) {
|
||
static $bank_fees;
|
||
if (!isset($bank_fees)) {
|
||
$acc_name=$this->parsed_bank_acc->account_nr."/".$this->parsed_bank_acc->bank_nr;
|
||
... | ... | |
}
|
||
// vytvoříme transakci "bankovní poplatek z 221000 (bank. účty) na 549001 (bank. poplatky)
|
||
$id=$this->create_transfer($parsed_acc->id, $bank_fees->id,
|
||
abs($data->fee), $data->date_time, "$data->type: $data->comment", $prev_id);
|
||
abs($data->fee), $time_now, "$data->type: $data->comment", $prev_id);
|
||
//vytvoříme bankovní transakci z parsovaného účtu na null
|
||
$this->create_bank_transfer($this->parsed_bank_acc->id, null, $id, $data);
|
||
}
|
||
... | ... | |
return $transfer_model->id;
|
||
}
|
||
|
||
private function create_bank_transfer($src, $dst, $transfer_id, $data=null) {
|
||
private function create_bank_transfer($src, $dst, $transfer_id, $data) {
|
||
static $transfer_model;
|
||
if (!isset($transfer_model)) $transfer_model=new Bank_transfer_Model();
|
||
$transfer_model->clear();
|
||
$transfer_model->datetime=$data->date_time;
|
||
$transfer_model->transfer_id = $transfer_id;
|
||
$transfer_model->origin_id = $src;
|
||
$transfer_model->destination_id = $dst;
|
||
if (isset($data)) {
|
||
$transfer_model->variable_symbol = $data->variable_symbol;
|
||
$transfer_model->constant_symbol = $data->constant_symbol;
|
||
$transfer_model->specific_symbol = $data->specific_symbol;
|
||
}
|
||
$transfer_model->variable_symbol = $data->variable_symbol;
|
||
$transfer_model->constant_symbol = $data->constant_symbol;
|
||
$transfer_model->specific_symbol = $data->specific_symbol;
|
||
$transfer_model->save();
|
||
return $transfer_model->id;
|
||
}
|
freenetis/trunk/kohana/application/upgrade_sql/upgrade_sql.php | ||
---|---|---|
}
|
||
|
||
$upgrade_sql[get_SVN_rev()] = array("
|
||
CREATE TABLE `freenetis`.`accounts_bank_accounts` (
|
||
`account_id` INT NOT NULL ,
|
||
`bank_account_id` INT NOT NULL ,
|
||
PRIMARY KEY ( `account_id` , `bank_account_id` )
|
||
) ENGINE = InnoDB;
|
||
ALTER TABLE `bank_transfers` ADD `datetime` DATETIME NOT NULL AFTER `id`
|
||
"
|
||
);
|
||
|
freenetis/trunk/kohana/application/upgrade_sql/upgrade_sql_321.php | ||
---|---|---|
<?php
|
||
|
||
$upgrade_sql[321] = array("
|
||
CREATE TABLE accounts_bank_accounts (
|
||
`account_id` INT NOT NULL ,
|
||
`bank_account_id` INT NOT NULL ,
|
||
PRIMARY KEY ( `account_id` , `bank_account_id` )
|
||
) ENGINE = InnoDB;
|
||
"
|
||
);
|
||
|
||
?>
|
Také k dispozici: Unified diff
Novy sloupec "datetime" v tabulce bank_transfers - eviduje puvodni casy bankovnich transakci.
Ve funkci store_transfers_... se ted do tabulky transfers uklada cas importu vypisu do Freenetisu.