Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 289

Přidáno uživatelem Jiří Sviták před asi 15 roky(ů)

Pridana moznost odesilat penize z vlastniho kreditniho uctu na jine ucty. Uz funguje take prirazovani neidentifikovanych plateb.

Zobrazit rozdíly:

freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php
'contact informations' => 'Kontaktní informace',
'contact value' => 'Data kontaktu',
'cookies must be enabled' => 'Musí být zapnuty cookies.',
'counteraccount' => 'Protiúčet',
'create new devices' => 'Vytvořit nové zařízení',
'create whole new device for member' => 'Vytvořit celé nové zařízení pro člena',
'create new devices for member' => 'Vytvořit nové zařízení pro člena',
......
'error - can\'t delete translation' => 'Chyba - nelze smazat překlad.',
'error - cant do the transfer' => 'Chyba - nelze provést transakci.',
'error - cant change password' => 'Chyba - nelze změnit heslo',
'error - cant send money, account is in debt' => 'Chyba - nelze poslat peníze, účet je v dluhu.',
'error - cant send money on the same account' => 'Chyba - nelze poslat peníze na stejný účet.',
'error - cant update account' => 'Chyba - nelze upravit účet.',
'error - cant update aditional contacts' => 'Chyba - nelze upravit další kontakty.',
'error - cant update member' => 'Chyba - nelze upravit člena.',
......
'money transfer' => 'Převod peněz',
'money transfers' => 'Převody peněz',
'money transfers of bank account' => 'Převody peněz na bankovním účtu',
'money transfers of credit account' => 'Převody peněz na kreditním účtu',
'money transfers of double-entry account' => 'Převody peněz na podvojném účtu',
'money transfers of member' => 'Převody peněz člena',
'monthly member payment' => 'Měsiční členské příspěvky',
......
'select user' => 'Vyber uživatele',
'select vlan' => 'Vyber VLAN',
'send e-mail' => 'Pošli e-mail',
'send money to other account' => 'Poslat peníze na jiný účet',
'send sms' => 'Pošli SMS',
'send to member' => 'Pošli členovi',
'settings' => 'Nastavení',
......
'transfer details' => 'Detaily převodu',
'transfer fee' => 'Poplatek za převod',
'transfer fee have to be a number' => 'Poplatek za převod musí být číslo',
'transfer has been successfully added' => 'Převod byl úspěšně přidán.',
'transfer informations' => 'Informace o převodu',
'transfers' => 'Převody',
'translated term' => 'Přeložený výraz',
freenetis/trunk/kohana/application/models/money_transfer.php
* @param $order_by_direction
* @return unknown_type
*/
public function get_transfers($account_id = null, $limit_from = 0, $limit_results = 20, $order_by = 'mt.id', $order_by_direction = 'DESC')
public function get_transfers($account_id = null, $limit_from = 0, $limit_results = 20, $order_by = 'mt.id', $order_by_direction = 'ASC')
{
if ($order_by == 'amount')
$order_by = 'IF( mt.destination_id = '.$account_id.', amount, amount*-1 )';
......
}
/**
* It gets all money transfers of double-entry account.
* @param $account_id
* @param $limit_from
* @param $limit_results
* @param $order_by
* @param $order_by_direction
* @return unknown_type
*/
public function get_transfers_count($account_id = null)
{
return self::$db->query("SELECT
a.id AS aid, a.name AS aname,
mt.id AS mtid, IF(mt.destination_id = ".$account_id.", FALSE, TRUE) AS trans_type,
mt.text, mt.amount, mt.datetime,
CONCAT(ba.account_nr, '/', ba.bank_nr) AS account_number
FROM money_transfers mt
LEFT JOIN accounts a ON a.id = IF(mt.origin_id = ".$account_id.", mt.destination_id, mt.origin_id)
LEFT JOIN bank_accounts ba ON a.id = ba.account_id
WHERE mt.origin_id = ".$account_id." OR mt.destination_id = ".$account_id
)->count();
}
/**
* @author Jiri Svitak
* It gets all bank transfers of given bank account.
* @param $account_id
......
{
if ($order_by == 'amount')
$order_by = 'IF( mt.destination_id = '.$account_id.', amount, amount*-1 )';
/*
return self::$db->query("SELECT
mt.id AS mtid, mt.datetime, mt.text, mt.amount,
bi.variable_symbol AS varsym,
a.name AS aname, CONCAT(ba.account_nr, '/', ba.bank_nr) AS account_number, IF( mt.destination_id = ".$account_id.", FALSE, TRUE ) AS trans_type
FROM money_transfers mt
LEFT JOIN accounts a ON a.id = IF( mt.origin_id = ".$account_id.", mt.destination_id, mt.origin_id )
LEFT JOIN bank_accounts ba ON a.id = ba.account_id
LEFT JOIN money_transfer_bank_infos bi ON mt.id = bi.transfer_id
JOIN enum_types e ON a.type_id = e.id
WHERE (mt.origin_id = ".$account_id." OR mt.destination_id = ".$account_id.") AND e.value = 'bank'
ORDER BY ".$order_by." ".$order_by_direction."
LIMIT ".$limit_from." , ".$limit_results
);
*/
return self::$db->query("SELECT
mt.id AS mtid, mt.datetime, mt.text, mt.amount,
bi.variable_symbol AS varsym,
a.name AS aname, CONCAT(ba.account_nr, '/', ba.bank_nr) AS account_number,
IF( mt.destination_id = ".$account_id.", FALSE, TRUE ) AS trans_type
FROM money_transfers mt
LEFT JOIN accounts a ON a.id = IF( mt.origin_id = ".$account_id.", mt.destination_id, mt.origin_id )
LEFT JOIN bank_accounts ba ON a.id = ba.account_id
LEFT JOIN money_transfer_bank_infos bi ON mt.id = bi.transfer_id
LEFT JOIN account_attributes aa ON a.account_attribute_id = aa.id
WHERE (mt.origin_id = ".$account_id." OR mt.destination_id = ".$account_id.") AND aa.id = ".Account_attribute_Model::$bank."
WHERE (mt.origin_id = ".$account_id." OR mt.destination_id = ".$account_id.")
AND a.account_attribute_id = ".Account_attribute_Model::$bank."
ORDER BY ".$order_by." ".$order_by_direction."
LIMIT ".$limit_from." , ".$limit_results
);
......
*/
public function count_bank_transfers($account_id)
{
/*
return self::$db->query("SELECT
mt.id AS mtid, mt.datetime, mt.text, mt.amount,
bi.variable_symbol AS varsym,
a.name AS aname, CONCAT(ba.account_nr, '/', ba.bank_nr) AS account_number, IF( mt.destination_id = ".$account_id.", FALSE, TRUE ) AS trans_type
FROM money_transfers mt
LEFT JOIN accounts a ON a.id = IF( mt.origin_id = ".$account_id.", mt.destination_id, mt.origin_id )
LEFT JOIN bank_accounts ba ON a.id = ba.account_id
LEFT JOIN money_transfer_bank_infos bi ON mt.id = bi.transfer_id
JOIN enum_types e ON a.type_id = e.id
WHERE (mt.origin_id = ".$account_id." OR mt.destination_id = ".$account_id.") AND e.value = 'bank'"
)->count();
*/
return self::$db->query("SELECT
mt.id AS mtid, mt.datetime, mt.text, mt.amount,
bi.variable_symbol AS varsym,
a.name AS aname, CONCAT(ba.account_nr, '/', ba.bank_nr) AS account_number,
IF( mt.destination_id = ".$account_id.", FALSE, TRUE ) AS trans_type
FROM money_transfers mt
......
FROM money_transfers mt
LEFT JOIN bank_accounts ba ON ba.account_id = mt.origin_id
JOIN money_transfer_bank_infos bi ON bi.transfer_id = mt.id
WHERE mt.previous_transfer_id IS NULL
WHERE mt.id NOT IN
(SELECT previous_transfer_id
FROM money_transfers mt
WHERE mt.previous_transfer_id IS NOT NULL)
ORDER BY ".$order_by." ".$order_by_direction."
LIMIT ".$limit_from." , ".$limit_results
);
freenetis/trunk/kohana/application/models/account.php
*/
public function get_assoc_bank_accounts()
{
/*
return self::$db->query("SELECT
a.id, a.name, a.comment,
IFNULL(t.translated_term, e.value) AS type,
CONCAT(ba.account_nr, '/', ba.bank_nr) AS account_number
FROM accounts a
JOIN enum_types e ON e.id = a.type_id
return self::$db->query('SELECT q3.id, a.name, a.comment,
CONCAT(ba.account_nr, \'/\', ba.bank_nr) AS account_number,
q3.credit FROM
(SELECT id, member_id, (inbound - outbound) AS credit FROM
(SELECT q1.id, q1.member_id, IFNULL(sum(amount), 0) AS inbound, outbound FROM
(SELECT a.id, a.member_id, IFNULL(sum(amount), 0) AS outbound
FROM accounts a
LEFT JOIN money_transfers mt ON a.id = mt.origin_id
GROUP BY a.id) AS q1
LEFT JOIN money_transfers mt ON q1.id = mt.destination_id
GROUP BY q1.id) AS q2
) AS q3
LEFT JOIN accounts a ON q3.id = a.id
LEFT JOIN bank_accounts ba ON a.id = ba.account_id
LEFT JOIN translations t ON t.original_term = e.value AND t.lang ='".Config::item('locale.lang')."'
WHERE e.value = 'bank' AND a.member_id = '1'");
*/
/*
return self::$db->query("SELECT
a.id, a.name AS aname, a.comment,
CONCAT(ba.account_nr, '/', ba.bank_nr) AS account_number,
FROM accounts a
LEFT JOIN account_attributes aa ON aa.id = a.account_attribute_id
LEFT JOIN bank_accounts ba ON a.id = ba.account_id
WHERE aa.id = ".Account_attribute_Model::$bank." AND a.member_id = '1'");
*/
return self::$db->query('SELECT q3.id, a.name, a.comment,
CONCAT(ba.account_nr, \'/\', ba.bank_nr) AS account_number,
q3.credit FROM
(SELECT id, member_id, (inbound - outbound) as credit FROM
(SELECT q1.id, q1.member_id, IFNULL(sum(amount),0) as inbound, outbound FROM
(SELECT a.id, member_id, IFNULL( sum( amount ) , 0 ) AS outbound
FROM accounts a
LEFT JOIN account_attributes aa ON a.account_attribute_id = aa.id
LEFT JOIN money_transfers mt ON a.id = mt.origin_id
WHERE aa.id = '.Account_attribute_Model::$bank.'
GROUP BY a.id) AS q1
LEFT JOIN money_transfers ON q1.id = money_transfers.destination_id GROUP BY q1.id) AS q2
) AS q3
LEFT JOIN accounts a ON q3.id = a.id
LEFT JOIN bank_accounts ba ON a.id = ba.account_id
');
WHERE a.member_id = 1 AND a.account_attribute_id = '.Account_attribute_Model::$bank
);
}
/**
......
*/
public function get_doubleentry_accounts()
{
/*
return self::$db->query("SELECT a.id, a.name, a.comment, IFNULL(t.translated_term, e.value) AS type
FROM accounts a
JOIN enum_types e ON e.id = a.type_id
LEFT JOIN translations t ON t.original_term = e.value AND t.lang = '".Config::item('locale.lang')."'
WHERE e.value <> 'bank'");
*/
return self::$db->query("SELECT a.id, a.name, a.comment, aa.name AS type
FROM accounts a
LEFT JOIN account_attributes aa ON aa.id = a.account_attribute_id
......
*/
public function get_credit_accounts($limit_from = 0, $limit_results = 20, $order_by = 'aid', $order_by_direction = 'desc')
{
return self::$db->query('SELECT q3.id, a.name AS aname, a.comment, m.name AS mname,
q3.credit FROM
(SELECT id, member_id, (inbound - outbound) as credit FROM
(SELECT q1.id, q1.member_id, IFNULL(sum(amount),0) as inbound, outbound FROM
(SELECT a.id, member_id, IFNULL( sum( amount ) , 0 ) AS outbound
FROM accounts a
LEFT JOIN account_attributes aa ON a.account_attribute_id = aa.id
LEFT JOIN money_transfers mt ON a.id = mt.origin_id
WHERE aa.id = '.Account_attribute_Model::$credit.'
GROUP BY a.id) AS q1
LEFT JOIN money_transfers ON q1.id = money_transfers.destination_id GROUP BY q1.id) AS q2
) AS q3
LEFT JOIN members m ON q3.member_id = m.id
LEFT JOIN accounts a ON q3.id = a.id
ORDER BY '.$order_by.' '.$order_by_direction.'
return self::$db->query('SELECT q3.id, a.name AS aname, a.comment, m.name AS mname,
q3.credit FROM
(SELECT id, member_id, (inbound - outbound) as credit FROM
(SELECT q1.id, q1.member_id, IFNULL(sum(amount),0) as inbound, outbound FROM
(SELECT a.id, member_id, IFNULL( sum( amount ) , 0 ) AS outbound
FROM accounts a
LEFT JOIN account_attributes aa ON a.account_attribute_id = aa.id
LEFT JOIN money_transfers mt ON a.id = mt.origin_id
WHERE aa.id = '.Account_attribute_Model::$credit.'
GROUP BY a.id) AS q1
LEFT JOIN money_transfers ON q1.id = money_transfers.destination_id GROUP BY q1.id) AS q2
) AS q3
LEFT JOIN members m ON q3.member_id = m.id
LEFT JOIN accounts a ON q3.id = a.id
ORDER BY '.$order_by.' '.$order_by_direction.'
LIMIT '.$limit_from.','.$limit_results);
}
......
*/
public function get_credit_accounts_count()
{
$count = self::$db->query('SELECT COUNT(id) AS total
$count = self::$db->query('SELECT COUNT(*) AS total
FROM accounts a
WHERE a.account_attribute_id = '.Account_attribute_Model::$credit.'
GROUP BY id'
WHERE a.account_attribute_id = '.Account_attribute_Model::$credit
);
return $count->current()->total;
}
......
FROM (
SELECT SUM(amount) AS outbound
FROM money_transfers
WHERE `origin_id` = '".$account_id."'
WHERE origin_id = ".$account_id."
) a, money_transfers mt
WHERE mt.destination_id = '".$account_id."'"
WHERE mt.destination_id = ".$account_id
)->current()->credit;
return $credit;
}
}
/**
* It gets balance of bank account.
* @param $account_id
* @return unknown_type
*/
public function get_bank_account_balance($account_id)
{
$credit = (float)self::$db->query("SELECT
(IFNULL(SUM(amount), 0) - IFNULL(a.outbound, 0)) AS credit
FROM (
SELECT SUM(amount) AS outbound
FROM money_transfers
WHERE origin_id = ".$account_id."
AND account_attribute_id = ".Account_attribute_Model::$bank."
) a, money_transfers mt
WHERE mt.destination_id = ".$account_id."
AND account_attribute_id = ".Account_attribute_Model::$bank
)->current()->credit;
return $credit;
}
/**
* It gets id of operating account.
* @return unknown_type
*/
public function get_operating_account()
{
return self::$db->query("SELECT
id
FROM accounts a
WHERE a.account_attribute_id = ".Account_attribute_Model::$operating)
->current()->id;
}
}
?>
freenetis/trunk/kohana/application/controllers/money_transfers.php
//if($this->acl_check_new(get_class($this),'transfers',$member_id))
// $grid->add_new_button(url_lang::base().'accounts/new_transfer/'.$account->id, url_lang::lang('texts.New transfer'));
$grid->add_new_button(url_lang::base().'members/show/'.$member_id, url_lang::lang('texts.Back to the member'));
$grid->order_field('mtid','mt.id')->label('ID');
// to do - access rights
$grid->add_new_button(url_lang::base().'members/show/'.$member_id, url_lang::lang('texts.Back to the member'));
// to do - has to be solved by session, add function has to know where to return
//$grid->add_new_button(url_lang::base().'money_transfers/add/'.$account->id, url_lang::lang('texts.Send money to other account'));
$grid->order_field('mtid','mt.id')->label('ID');
$grid->order_field('trans_type')->label(url_lang::lang('texts.Type'))->bool(array(url_lang::lang('texts.Arrival'),url_lang::lang('texts.Outbound')));
$grid->order_field('aname', 'name')->label(url_lang::lang('texts.From/To'));
$grid->order_field('account_number')->label(url_lang::lang('texts.Account number'));
......
* @param $account_id
* @return unknown_type
*/
function show_by_bank_account($account_id = NULL, $limit_results = 50, $order_by = 'mt.id', $order_by_direction = 'DESC')
function show_by_bank_account($account_id = NULL, $limit_results = 50, $order_by = 'mt.id', $order_by_direction = 'ASC')
{
if (isset($account_id))
{
......
if (is_numeric($this->input->get('record_per_page')))
$limit_results = (int) $this->input->get('record_per_page');
// to do - correct allowed order type array
$allowed_order_type = array('mt.id', 'origin_id', 'destination_id', 'timestamp', 'amount', 'constant_symbol', 'specific_symbol', 'name', 'date_time', 'fee_transfer_id', 'trans_type', 'text');
$allowed_order_type = array('mt.id', 'amount', 'datetime', 'trans_type', 'account_number', 'varsym', 'aname');
if (!in_array(strtolower($order_by),$allowed_order_type))
$order_by = 'mt.id';
if (strtolower($order_by_direction) != 'asc' && strtolower($order_by_direction) != 'desc')
......
$grid->add_new_button(url_lang::base().'accounts/bank_accounts', url_lang::lang('texts.Back to the bank accounts of association'));
$grid->order_field('mtid','mt.id')->label('ID');
$grid->order_field('trans_type')->label(url_lang::lang('texts.Type'))->bool(array(url_lang::lang('texts.Arrival'),url_lang::lang('texts.Outbound')));
$grid->order_field('aname', 'name')->label(url_lang::lang('texts.From/To'));
$grid->order_field('aname', 'name')->label(url_lang::lang('texts.Counteraccount'));
$grid->order_field('account_number')->label(url_lang::lang('texts.Account number'));
$grid->order_field('amount')->label(url_lang::lang('texts.Amount'));
$grid->order_field('text')->label(url_lang::lang('texts.Text'));
$grid->field('text')->label(url_lang::lang('texts.Text'));
$grid->order_field('datetime')->label(url_lang::lang('texts.Date and time'));
$grid->order_field('varsym')->label(url_lang::lang('texts.VS'));
$grid->datasource($transfers);
......
/**
* @author Jiri Svitak
* It shows money transfers of double-entry account.
* It shows money transfers of credit account.
* @param $account_id
* @return unknown_type
*/
function show_by_doubleentry_account($account_id = NULL, $limit_results = 50, $order_by = 'mt.id', $order_by_direction = 'DESC')
function show_by_credit_account($account_id = NULL, $limit_results = 50, $order_by = 'mt.id', $order_by_direction = 'ASC')
{
if (isset($account_id))
{
......
if (is_numeric($this->input->get('record_per_page')))
$limit_results = (int) $this->input->get('record_per_page');
// to do - correct allowed order type array
$allowed_order_type = array('mt.id', 'origin_id', 'destination_id', 'timestamp', 'amount', 'constant_symbol', 'specific_symbol', 'name', 'date_time', 'fee_transfer_id', 'trans_type', 'text');
$allowed_order_type = array('mt.id', 'aname', 'amount', 'datetime', 'trans_type');
if (!in_array(strtolower($order_by),$allowed_order_type))
$order_by = 'mt.id';
if (strtolower($order_by_direction) != 'asc' && strtolower($order_by_direction) != 'desc')
$order_by_direction = 'asc';
$money_transfer_model = new Money_transfer_Model();
$total_transfers = $money_transfer_model->count_doubleentry_transfers($account_id);
$total_transfers = $money_transfer_model->get_transfers_count($account_id);
$url_array = explode('/', trim(url::current(), '/'));
$sql_offset = (isset($url_array[8])) ? (int) ($url_array[8] - 1) * $limit_results : 0;
unset($url_array);
$sql_offset = ($sql_offset>$total_transfers) ? 0 : $sql_offset;
$transfers = $money_transfer_model->get_doubleentry_transfers($account_id, $sql_offset, (int)$limit_results, $order_by, $order_by_direction);
$transfers = $money_transfer_model->get_transfers($account_id, $sql_offset, (int)$limit_results, $order_by, $order_by_direction);
$grid = new Grid(url_lang::base().'money_transfers', url_lang::lang('texts.Money transfers of double-entry account'), array(
$grid = new Grid(url_lang::base().'money_transfers', null, array(
//'separator' => '<br />-----------',
//'use_paginator' => false,
//'use_selector' => false,
......
'selector_increace' => 50, // increace
'selector_min' => 50, // minimum where selector start
'selector_max_multiplier' => 10,
'base_url' => Config::item('locale.lang').'/money_transfers/show_by_member/'.$account_id.'/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'base_url' => Config::item('locale.lang').'/money_transfers/show_by_credit_account/'.$account_id.'/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
'total_items' => $total_transfers, // use db count query here of course
'items_per_page' => $limit_results, // it may be handy to set defaults for stuff like this in config/pagination.php
......
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'limit_results' => $limit_results,
'variables' => $account_id.'/',
'variables' => $account_id.'/',
'url_array_ofset' => 1
));//,'acc_grid_template');
//if($this->acl_check_new(get_class($this),'transfers',$account_id))
// $grid->add_new_button(url_lang::base().'accounts/new_transfer/'.$account->id, url_lang::lang('texts.New transfer'));
// there should be information about where to return to - credit or project accounts?
//$grid->add_new_button(url_lang::base().'accounts/doubleentry_accounts', url_lang::lang('texts.Back to the double-entry accounts'));
$grid->order_field('mtid','mt.id')->label('ID');
// to do - access rights
$grid->add_new_button(url_lang::base().'accounts/credit_accounts', url_lang::lang('texts.Back to credit accounts'));
$grid->add_new_button(url_lang::base().'money_transfers/add/'.$account_id, url_lang::lang('texts.Send money to other account'));
$grid->order_field('mtid', 'mt.id')->label('ID');
$grid->order_field('trans_type')->label(url_lang::lang('texts.Type'))->bool(array(url_lang::lang('texts.Arrival'),url_lang::lang('texts.Outbound')));
$grid->order_field('aname', 'name')->label(url_lang::lang('texts.From/To'));
$grid->order_field('aname', 'name')->label(url_lang::lang('texts.Counteraccount'));
$grid->order_field('amount')->label(url_lang::lang('texts.Amount'));
$grid->order_field('text')->label(url_lang::lang('texts.Text'));
$grid->field('text')->label(url_lang::lang('texts.Text'));
$grid->order_field('datetime')->label(url_lang::lang('texts.Date and time'));
$grid->datasource($transfers);
$view = new View('template');
$view->header = new View('base/header');
$view->content = $grid;
$view->content = new View('money_transfers/show_by_credit_account');
$view->content->grid = $grid;
$view->content->message = $this->session->get_once('message');
$view->footer = new View('base/footer');
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.Money transfers of double-entry account');
$view->header->title = url_lang::lang('texts.Money transfers of credit account');
$view->render(TRUE);
}
else
......
if (isset($trans_id))
{
$account_model = new Account_Model();
$accounts = $account_model->get_credit_accounts();
$accounts = $account_model->get_credit_accounts(0, $account_model->get_credit_accounts_count(), 'a.id', 'asc');
foreach ($accounts as $account)
{
$arr_accounts[$account->id] = $account->name;
$arr_accounts[$account->id] = $account->aname;
}
asort($arr_accounts);
......
$form = new Forge(url_lang::base().'money_transfers/assign_transfer/'.$trans_id, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
//$form->group('')->label(url_lang::lang('texts.Payment'));
$form->dropdown('aname')->label(url_lang::lang('texts.Destination credit account').':')->rules('required')->options($arr_accounts);
$form->group('')->label(url_lang::lang('texts.Payment'));
$form->dropdown('aname')->label(url_lang::lang('texts.Destination credit account').':')->options($arr_accounts)->rules('required');
$form->input('text')->label(url_lang::lang('texts.Text'));
//$form->group('')->label(url_lang::lang('texts.Penalty'));
$form->input('penalty')->label(url_lang::lang('texts.Penalty'))->value('0');
$form->group('')->label(url_lang::lang('texts.Penalty'));
$form->input('penalty')->label(url_lang::lang('texts.Penalty'))->value('0')->rules('valid_numeric');
$form->input('penalty_text')->label(url_lang::lang('texts.Text'));
$form->submit('submit')->value(url_lang::lang('texts.Assign'));
special::required_forge_style($form, ' *', 'required');
if ($form->validate)
if ($form->validate())
{
$form_data = $form->as_array();
foreach($form_data as $key => $value)
......
$form_data[$key] = htmlspecialchars($value);
}
$new_mt = new Money_transfer_Model();
$new_mt->origin_id = $trans_id->destination_id;
$new_mt->origin_id = $mt->daid;
$new_mt->destination_id = $form_data['aname'];
$new_mt->previous_transfer_id = $trans_id->id;
$new_mt->previous_transfer_id = $mt->mtid;
$new_mt->datetime = date("Y-m-d H:i:s", time());
$new_mt->text = $form_data['text'];
// this should be amount minus transfer fee
$new_mt->amount = $trans_id->amount;
$new_mt->amount = $mt->amount;
$new_save = $new_mt->save();
// also penalty should be generated
if ($new_mt->save())
$pen_save = true;
if ($form_data['penalty'] > 0)
{
$pen = new Money_transfer_Model();
$pen->origin_id = $form_data['aname'];
$pen->destination_id = $account_model->get_operating_account();
$pen->datetime = date("Y-m-d H:i:s", time());
$pen->text = $form_data['penalty_text'];
$pen->amount = $form_data['penalty'];
$pen_save = $pen->save();
}
if ($new_mt->save() && $pen_save)
{
$this->session->set_flash('message', url_lang::lang('texts.Transfer has been successfully assigned.'));
url::redirect(url_lang::base().'money_transfers/unidentified_transfers');
}
......
$view->content->form = $form->html();
$view->footer = new View('base/footer');
$view->render(TRUE);
// commented by Jiri Svitak
/*
if ($model_transfer->origin_id == $master_acc_id)
}
else
{
Controller::warning(1);
}
} // end of assign_transfer function
function add($origin_account = NULL)
{
if (isset($origin_account))
{
// to do - access rights
//if (!$this->gacl_class->acl_check('freenetis', 'new_own', 'all', $_SESSION['username'],get_class($this),'assign_transfers')) Controller::error(1);
$account_model = new Account_Model();
$accounts = $account_model->get_doubleentry_accounts();
foreach ($accounts as $account)
{
// odchozi platba
$form = new Forge(url_lang::base().'accounts/assign_transfer/'.$trans_id, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->dropdown('account')->label(url_lang::lang('texts.Pay from account').':')->rules('required')->options(array('0'=>'----- '.url_lang::lang('texts.Select the account').' -----','operating'=>url_lang::lang('texts.Operating account'),'infrastructure'=>url_lang::lang('texts.Infrastructure account')));
$form->textarea('comment')->label(url_lang::lang('texts.Comment').':')->rules('length[0,250]')->value($model_transfer->text);
special::required_forge_style($form, ' *', 'required');
$model_transfer->clear();
if($form->validate())
$arr_accounts[$account->id] = $account->name;
}
asort($arr_accounts);
$form = new Forge(url_lang::base().'money_transfers/add/'.$origin_account, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Money transfer'));
$form->dropdown('aname')->label(url_lang::lang('texts.Destination credit account').':')->options($arr_accounts)->rules('required');
$form->input('amount')->label(url_lang::lang('texts.Amount').':')->rules('required|valid_numeric');
$form->input('text')->label(url_lang::lang('texts.Text'));
$form->submit('submit')->value(url_lang::lang('texts.Send'));
special::required_forge_style($form, ' *', 'required');
if ($form->validate())
{
if ($account_model->get_account_balance($origin_account) < 0)
{
$form_data = $form->as_array();
foreach($form_data as $key => $value)
{
$form_data[$key] = htmlspecialchars($value);
}
$model_account->clear();
if ($form_data['account']=='operating')
{
$model_account->where('type=\'operating\'')->find();
$orig_id = $model_account->id;
}
else
{
$model_account->where('type=\'infrastructure\'')->find();
$orig_id = $model_account->id;
}
$model_account->clear();
$model_account->where('type=\'suppliers\'')->find();
$suppliers_id = $model_account->id;
$model_transfer->clear();
$model_transfer->origin_id = $orig_id;
$model_transfer->destination_id = $suppliers_id;
$model_transfer->text = $form_data['comment'];
$model_transfer->amount = $amount;
$model_transfer->previous_transfer_id = $trans_id;
$model_transfer->save();
$model_bank_transfer = new Money_transfer_bank_info_Model($bank_info_id);
//if (isset($fee_id)) $model_bank_transfer->fee_transfer_id = $fee_id;
$model_bank_transfer->identified = 1;
if ($model_bank_transfer->save())
{
$this->session->set_flash('message', url_lang::lang('texts.The transfer successfully done.'));
}
else
{
$this->session->set_flash('message', url_lang::lang('texts.Error - cant do the transfer.'));
}
// url::redirect(url_lang::base().'accounts/unidentified_transfers/', 'redirect');
header ("Location: ".url_lang::base().'accounts/unidentified_transfers/'."");
$this->session->set_flash('message', url_lang::lang('texts.Error - cant send money, account is in debt.'));
url::redirect(url_lang::base().'money_transfers/show_by_credit_account/'.$origin_account);
}
else
$form_data = $form->as_array();
foreach($form_data as $key => $value)
{
$view->form = new View('registration');
$view = new View('template');
$view->header = new View('base/header');
$view->content = new View('transfers_assign');
$view->footer = new View('base/footer');
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.Assign transfer');
$view->content->form = $form->html('forge/assign_outbound_transfer',TRUE);
$view->content->amount = $amount;
$view->content->trans_id = $trans_id;
//$view->content->acc_id = $acc_id;
$view->render(TRUE);
$form_data[$key] = htmlspecialchars($value);
}
}
else
if ($origin_account == $form_data['aname'])
{
// naplneni selectu
$arr_users = array();
$model_user = new User_Model;
$users = $model_user->select('member_id','name','surname','login')->orderby('surname, name')->where('type!=','user')->find_all();
$arr_users[0] = '----- '.url_lang::lang('texts.Select the member').' -----';
foreach ($users as $user) {
$arr_users[$user->member_id] = $user->surname.' '.$user->name.' - '.$user->login;
$this->session->set_flash('message', url_lang::lang('texts.Error - cant send money on the same account.'));
url::redirect(url_lang::base().'money_transfers/show_by_credit_account/'.$origin_account);
}
$arr_fee = array();
$model_fee = new Bank_fee_Model;
$fees = $model_fee->find_all();
$arr_fee[0] = url_lang::lang('texts.None');
foreach ($fees as $fee) {
$arr_fee[$fee->fee] = $fee->fee.' '.url_lang::lang('texts.CZK');
}
// konec naplneni selectu
$form = new Forge(url_lang::base().'accounts/assign_transfer/'.$trans_id, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->dropdown('username')->label(url_lang::lang('texts.Send to member').':')->options($arr_users)->onchange('ajax_get_accounts(this.value,0)')->callback(array($this, 'callback_username'));
$form->dropdown('account')->label(url_lang::lang('texts.Members account').':')->options(array('0'=>'----- '.url_lang::lang('texts.Select the account').' -----'))->callback(array($this, 'callback_account'));
$form->dropdown('fee_penalty')->label(url_lang::lang('texts.Penalty and fee').':')->options($arr_fee);
$form->textarea('fee_comment')->label(url_lang::lang('texts.Fee or penalty comment').':')->rules('length[0,250]');
$form->textarea('comment')->label(url_lang::lang('texts.Comment').':')->rules('length[0,250]')->value($model_transfer->text);
special::required_forge_style($form, ' *', 'required');
$model_transfer->clear();
if($form->validate())
$mt = new Money_transfer_Model();
$mt->origin_id = $origin_account;
$mt->destination_id = $form_data['aname'];
$mt->datetime = date('Y-m-d H:i:s', time());
$mt->text = $form_data['text'];
$mt->amount = $form_data['amount'];
if ($mt->save())
{
$form_data = $form->as_array();
foreach($form_data as $key => $value)
{
$account_data->$key = htmlspecialchars($value);
}
$model_account->clear();
$model_account->where('type=\'operating\'')->find();
$operating_acc_id = $model_account->id;
if ((float)$form_data['fee_penalty']>0)
{
// do fee transfer
$model_transfer->origin_id = $form_data['account'];
$model_transfer->destination_id = $operating_acc_id;
$model_transfer->amount = (float)$form_data['fee_penalty'];
$model_transfer->text = $form_data['fee_comment'];
$model_transfer->previous_transfer_id = $trans_id;
$model_transfer->save();
}
$model_transfer->clear();
//$model_transfer->origin_id = $master_acc_id;
$model_transfer->bank_info_id = $bank_info_id;
$model_transfer->destination_id = $form_data['account'];
$model_transfer->text = $form_data['comment'];
$model_transfer->amount = $amount;
$model_transfer->previous_transfer_id = $trans_id;
$model_transfer->save();
$model_bank_transfer = new Money_transfer_bank_info_Model($bank_info_id);
//if (isset($fee_id)) $model_bank_transfer->fee_transfer_id = $fee_id;
$model_bank_transfer->identified = 1;
if ($model_bank_transfer->save())
{
$model_account->clear();
$model_account->find($form_data['account']);
if ($model_account->type=='analytic')
{
$model_members = new Member_Model($model_account->owner_id);
$model_members->current_credit = (float)$model_members->current_credit + (float)$amount-(float)$form_data['fee_penalty'];
$model_members->save();
}
$this->session->set_flash('message', url_lang::lang('texts.The transfer successfully done.'));
}
else
{
$this->session->set_flash('message', url_lang::lang('texts.Error - cant do the transfer.'));
}
url::redirect(url_lang::base().'accounts/unidentified_transfers/');
// header ("Location: ".url_lang::base().'accounts/unidentified_transfers/'."");
$this->session->set_flash('message', url_lang::lang('texts.Transfer has been successfully added.'));
url::redirect(url_lang::base().'money_transfers/show_by_credit_account/'.$origin_account);
}
else
{
$view->form = new View('registration');
$view = new View('template');
$view->header = new View('base/header');
$view->content = new View('transfers_assign');
$view->footer = new View('base/footer');
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.Assign transfer');
$view->content->form = $form->html('forge/assign_transfer',TRUE);
$view->content->amount = $amount;
$view->content->trans_id = $trans_id;
//$view->content->acc_id = $acc_id;
$view->render(TRUE);
}
}
*/
$view = new View('template');
$view->header = new View('base/header');
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.Money transfer');
$view->content = $form->html();
$view->footer = new View('base/footer');
$view->render(TRUE);
}
else
{
Controller::warning(1);;
}
} // end of assign_transfer function
}
}
?>
freenetis/trunk/kohana/application/controllers/accounts.php
* @param $order_by_direction
* @return unknown_type
*/
function bank_accounts($limit_results = 50, $order_by = 'id', $order_by_direction = 'DESC')
function bank_accounts($limit_results = 50, $order_by = 'id', $order_by_direction = 'ASC')
{
// it selects only bank accounts of association
$acc_model = new Account_Model();
......
* @param $order_by_direction
* @return unknown_type
*/
function credit_accounts($limit_results = 50, $order_by = 'id', $order_by_direction = 'DESC')
function credit_accounts($limit_results = 50, $order_by = 'id', $order_by_direction = 'ASC')
{
// to do - correct access rights
//if(!$this->acl_check_view('Accounts_Controller','transfers',$member_id))
......
$grid->order_field('comment')->label(url_lang::lang('texts.Comment'));
$grid->order_field('mname')->label(url_lang::lang('texts.Member name'));
$grid->order_field('credit')->label(url_lang::lang('texts.Credit'));
$grid->action_field('id')->label(url_lang::lang('texts.Transfers'))->url(url_lang::base().'money_transfers/show_by_doubleentry_account')->action(url_lang::lang('texts.Show'));
$grid->action_field('id')->label(url_lang::lang('texts.Transfers'))->url(url_lang::base().'money_transfers/show_by_credit_account')->action(url_lang::lang('texts.Show'));
$grid->datasource($accounts);
$view = new View('template');
......
}
$mt = new Money_transfer_Model();
$member_model = new Member_Model();
$member = new Member_Model();
$account_model = new Account_Model();
$credit_accounts = $account_model->select('id')
->where('account_attribute_id', Account_attribute_Model::$credit)->find_all();
......
->where('account_attribute_id', Account_attribute_Model::$operating)->find_all()->current();
$save_successful = true;
foreach($credit_accounts as $ca)
{
$member->clear();
$mt->clear();
$amount = 0;
//$entrance = $member->select('entrance_date')->join('accounts', 'accounts.member_id', 'members.id')
// ->where('accounts.id', $ca->id)->current()->entrance_date;
$entrance = $member->query('SELECT entrance_date
FROM members m
LEFT JOIN accounts a ON a.member_id = m.id
WHERE a.id = '.$ca->id)->current()->entrance_date;
$ts_entrance = strtotime($entrance);
$start = $form_data['from'];
$ts_start = strtotime($start);
if ($ts_entrance > $ts_start)
{
//$amount = ($ts_entrance - $ts_start) * 3600 * 24
}
$mt->origin_id = $ca->id;
$mt->destination_id = $oa->id;
$mt->datetime = date('Y-m-d H:i:s');
$mt->text = $form_data['text'];
$mt->amount = $form_data['fee'] * $form_data['months'];
$mt->amount = $amount;
if (!$mt->save())
$save_successful = false;
}
if ($save_successfull)
if ($save_successful)
{
$this->session->set_flash('message', url_lang::lang('texts.Fees have been successfully deducted.'));
url::redirect(url_lang::base().'accounts/credit_accounts');
freenetis/trunk/kohana/application/views/money_transfers/show_by_credit_account.php
<h2>
<?php url_lang::lang('texts.Money transfers of credit account')?>
</h2>
<?php echo $message ? '<div class="message">'.$message.'</div>' : '' ?>
<br />
<?php echo $grid; ?>

Také k dispozici: Unified diff