Revize 286
Přidáno uživatelem Jiří Sviták před asi 15 roky(ů)
freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php | ||
---|---|---|
'back' => 'Zpět',
|
||
'back to account transfers' => 'Zpět na převody účtu',
|
||
'back to all subnets' => 'Zpět na seznam podsítí',
|
||
'back to credit accounts' => 'Zpět na kreditní účty',
|
||
'back to detail' => 'Zpět na detail',
|
||
'back to device parameters' => 'Zpět na parametry zařízení',
|
||
'back to devices list' => 'Zpět na seznam zařízení',
|
||
... | ... | |
'create new vlan interface' => 'Vytvoření nového VLAN rozhraní',
|
||
'create new vlan' => 'Vytvořit nový VLAN',
|
||
'create whole new device' => 'Vytvořit celé nové zařízení',
|
||
'credit' => 'Kredit',
|
||
'credit accounts' => 'Kreditní účty',
|
||
'current credit' => 'Stav kreditu',
|
||
'current credit' => 'Současný kredit',
|
||
'current credit on this account is' => 'Stav kreditu na tomto účtu je',
|
||
'currency' => 'Měna',
|
||
'czk' => 'Kč',
|
||
... | ... | |
'date to' => 'Datum do',
|
||
'debit payment rate' => 'Výše splátek',
|
||
'debtors' => 'Dlužníci',
|
||
'deduct' => 'Odečíst',
|
||
'deduction of membership fees' => 'Odečtení členských příspěvků',
|
||
'delete this contact' => 'Smazat tento kontakt',
|
||
'delete_member' => 'Smazat tohoto člena',
|
||
'delete_user' => 'Smazat tohoto uživatele',
|
||
... | ... | |
'fee has been successfully updated' => 'Poplatek byl úspěšně aktualizován',
|
||
'fee or penalty comment' => 'Komentář k poplatku/pokutě',
|
||
'fees' => 'Poplatky',
|
||
'fees have been successfully deducted' => 'Členské příspěvky byly úspěšně odečteny.',
|
||
'file with bank transfer listing' => 'HTML soubor výpisem z Ebanky',
|
||
'filter' => 'Filtrovat',
|
||
'finances' => 'Finance',
|
||
... | ... | |
'money transfers of member' => 'Převody peněz člena',
|
||
'monthly member payment' => 'Měsiční členské příspěvky',
|
||
'monthly member payment have to be a number' => 'Měsíční členské příspěvky musí být číslo',
|
||
'monthly membership fee' => 'Měsíční členský příspěvek',
|
||
'must be logged in' => 'Musíte se přihlásit.',
|
||
'must pay regular fee' => 'Platí pravidelný příspěvek',
|
||
'my profile' => 'Můj profil',
|
||
... | ... | |
'none' => 'žádný',
|
||
'non-member' => 'Nečlen',
|
||
'non-statutory member' => 'Člen bez statusu',
|
||
'number of months' => 'Počet měsíců',
|
||
'number of the hours' => 'počet hodin',
|
||
'old password' => 'staré heslo',
|
||
'operating account' => 'Provozní účet',
|
||
... | ... | |
'pppoe' => 'pppoe',
|
||
'pre title' => 'Tituly před jménem',
|
||
'project account' => 'Účet projektu',
|
||
'project accounts' => 'Projektové účty',
|
||
'qos ceil' => 'Ceil (max-limit) pro QoS',
|
||
'qos rate' => 'Rate (limit-at) pro QoS',
|
||
'really delete this account' => 'Opravdu smazat tento účet',
|
freenetis/trunk/kohana/application/models/account.php | ||
---|---|---|
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, a.comment,
|
||
aa.name AS type,
|
||
CONCAT(ba.account_nr, '/', ba.bank_nr) AS account_number
|
||
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'");
|
||
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
|
||
');
|
||
}
|
||
|
||
/**
|
||
... | ... | |
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
|
||
WHERE aa.id >= ".Account_attribute_Model::$credit." AND aa.id < ".Account_attribute_Model::$bank_debts);
|
||
WHERE aa.id = ".Account_attribute_Model::$credit." AND aa.id < ".Account_attribute_Model::$bank_debts);
|
||
}
|
||
|
||
/**
|
||
... | ... | |
|
||
/**
|
||
* @author Jiri Svitak
|
||
* It gets all credit accounts from database.
|
||
* It gets all credit accounts from database including member name and credit.
|
||
* @return unknown_type
|
||
*/
|
||
public function get_credit_accounts()
|
||
public function get_credit_accounts($limit_from = 0, $limit_results = 20, $order_by = 'aid', $order_by_direction = 'desc')
|
||
{
|
||
/*
|
||
return self::$db->query("SELECT a.*, 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 = 'credit'");
|
||
*/
|
||
return self::$db->query("SELECT a.*, aa.name AS type
|
||
FROM accounts a
|
||
JOIN account_attributes aa ON aa.id = a.account_attribute_id
|
||
WHERE aa.id = ".Account_attribute_Model::$credit);
|
||
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);
|
||
}
|
||
|
||
/**
|
||
* @author Jiri Svitak
|
||
* It gets count of credit accounts.
|
||
* @return unknown_type
|
||
*/
|
||
public function get_credit_accounts_count()
|
||
{
|
||
$count = self::$db->query('SELECT COUNT(id) AS total
|
||
FROM accounts a
|
||
WHERE a.account_attribute_id = '.Account_attribute_Model::$credit.'
|
||
GROUP BY id'
|
||
);
|
||
return $count->current()->total;
|
||
}
|
||
|
||
/**
|
||
* @author Jiri Svitak
|
||
* It gets balance of account. It subtracts all outbound transfers from all incoming transfers.
|
||
* @param $account_id
|
||
* @return unknown_type
|
freenetis/trunk/kohana/application/controllers/money_transfers.php | ||
---|---|---|
|
||
//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'));
|
||
$grid->add_new_button(url_lang::base().'accounts/doubleentry_accounts', url_lang::lang('texts.Back to the double-entry accounts'));
|
||
// 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');
|
||
$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'));
|
freenetis/trunk/kohana/application/controllers/accounts.php | ||
---|---|---|
|
||
function index()
|
||
{
|
||
url::redirect(url_lang::base().'accounts/doubleentry_accounts');
|
||
url::redirect(url_lang::base().'accounts/credit_accounts');
|
||
}
|
||
|
||
/**
|
||
... | ... | |
$acc_grid->order_field('id')->label('ID');
|
||
$acc_grid->order_field('name')->label(url_lang::lang('texts.Account name'));
|
||
$acc_grid->order_field('comment')->label(url_lang::lang('texts.Comment'));
|
||
$acc_grid->order_field('type')->label(url_lang::lang('texts.Type'));
|
||
$acc_grid->order_field('account_number')->label(url_lang::lang('texts.Account number'));
|
||
$acc_grid->order_field('credit')->label(url_lang::lang('texts.Credit'));
|
||
$acc_grid->action_field('id')->label(url_lang::lang('texts.Transfers'))->url(url_lang::base().'money_transfers/show_by_bank_account')->action(url_lang::lang('texts.Show'));
|
||
$acc_grid->action_field('id')->label(url_lang::lang('texts.Import'))->url(url_lang::base().'accounts/upload_bank_file')->action(url_lang::lang('texts.Import'));
|
||
$acc_grid->datasource($accs);
|
||
... | ... | |
|
||
/**
|
||
* @author Jiri Svitak
|
||
* It shows double-entry accounts like credit accounts of members, project,
|
||
* infrastructure and operating accounts.
|
||
* It shows credit accounts of members.
|
||
* @param $limit_results
|
||
* @param $order_by
|
||
* @param $order_by_direction
|
||
* @return unknown_type
|
||
*/
|
||
function doubleentry_accounts($limit_results = 50, $order_by = 'id', $order_by_direction = 'DESC')
|
||
{
|
||
// it selects only double-entry accounts
|
||
$acc_model = new Account_Model();
|
||
$accs = $acc_model->get_doubleentry_accounts();
|
||
$total_accs = count($accs);
|
||
function credit_accounts($limit_results = 50, $order_by = 'id', $order_by_direction = 'DESC')
|
||
{
|
||
// to do - correct access rights
|
||
//if(!$this->acl_check_view('Accounts_Controller','transfers',$member_id))
|
||
// Controller::Error(1);
|
||
|
||
$acc_grid = new Grid(url_lang::base().'accounts',
|
||
url_lang::lang('texts.Double-entry accounts'), array(
|
||
// gets grid settings
|
||
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('id', 'origin_id', 'destination_id', 'timestamp', 'amount', 'constant_symbol', 'specific_symbol', 'name', 'date_time', 'fee_transfer_id', 'trans_type', 'text');
|
||
if (!in_array(strtolower($order_by),$allowed_order_type))
|
||
$order_by = 'id';
|
||
if (strtolower($order_by_direction) != 'asc' && strtolower($order_by_direction) != 'desc')
|
||
$order_by_direction = 'asc';
|
||
|
||
$account_model = new Account_Model();
|
||
$total_accounts = $account_model->get_credit_accounts_count();
|
||
|
||
$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_accounts) ? 0 : $sql_offset;
|
||
|
||
$accounts = $account_model->get_credit_accounts($sql_offset, (int)$limit_results, $order_by, $order_by_direction);
|
||
|
||
$grid = new Grid(url_lang::base().'accounts',
|
||
null, array(
|
||
'separator' => '<br /><br />',
|
||
'current' => $limit_results, // current selected 'records_per_page' value
|
||
'selector_increace' => 50, // increace
|
||
'selector_increace' => 50, // increace
|
||
'selector_min' => 50, // minimum where selector start
|
||
'selector_max_multiplier' => 10,
|
||
'base_url' => Config::item('locale.lang').'/accounts/doubleentry_transfers/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
|
||
'base_url' => Config::item('locale.lang').'/accounts/credit_transfers/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
|
||
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
|
||
'total_items' => $total_accs, // use db count query here of course
|
||
'total_items' => $total_accounts, // 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
|
||
'style' => 'classic',
|
||
'order_by' => $order_by,
|
||
... | ... | |
// adding account, to do - access rights
|
||
//if ($this->acl_check_new(get_class($this), 'accounts', $member_id))
|
||
// $acc_grid->add_new_button(url_lang::base().'accounts/add_bank_account/'.$member_id, url_lang::lang('texts.Add new bank account'));
|
||
$acc_grid->order_field('id')->label('ID');
|
||
$acc_grid->order_field('name')->label(url_lang::lang('texts.Account name'));
|
||
$acc_grid->order_field('comment')->label(url_lang::lang('texts.Comment'));
|
||
$acc_grid->order_field('type')->label(url_lang::lang('texts.Type'));
|
||
$acc_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'));
|
||
$acc_grid->datasource($accs);
|
||
|
||
$grid->add_new_button(url_lang::base().'accounts/deduct_fees', url_lang::lang('texts.Deduction of membership fees'));
|
||
$grid->order_field('id')->label('ID');
|
||
$grid->order_field('aname')->label(url_lang::lang('texts.Account name'));
|
||
$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->datasource($accounts);
|
||
|
||
$view = new View('template');
|
||
$view->header = new View('base/header');
|
||
$view->header->title = url_lang::lang('texts.Double-entry accounts');
|
||
$view->header->title = url_lang::lang('texts.Credit accounts');
|
||
$view->header->menu = Controller::render_menu();
|
||
$view->content = $acc_grid;
|
||
$view->content = new View('accounts/credit');
|
||
$view->content->grid = $grid;
|
||
$view->content->message = $this->session->get_once('message');
|
||
$view->footer = new View('base/footer');
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
/**
|
||
* Form for deducting membership fees.
|
||
* @return unknown_type
|
||
*/
|
||
function deduct_fees()
|
||
{
|
||
// to do - access rights
|
||
//if (!$this->acl_check_new(get_class($this),'members')) Controller::error(1);
|
||
|
||
$form = new Forge(url_lang::base().'accounts/deduct_fees', '', 'POST', array('id' => 'article_form'));
|
||
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
|
||
$form->date('from')->label(url_lang::lang('texts.Date from').':')->years(date('Y')-10, date('Y'))->rules('required');
|
||
$form->input('months')->label(url_lang::lang('texts.Number of months').':')->rules('required|valid_numeric');
|
||
$form->input('fee')->label(url_lang::lang('texts.Monthly membership fee').':')->rules('required|valid_numeric');
|
||
$form->input('text')->label(url_lang::lang('texts.Text').':');
|
||
$form->submit('submit')->value(url_lang::lang('texts.Deduct'));
|
||
special::required_forge_style($form, ' *', 'required');
|
||
|
||
if ($form->validate())
|
||
{
|
||
$form_data = $form->as_array();
|
||
foreach($form_data as $key => $value)
|
||
{
|
||
$form_data[$key] = htmlspecialchars($value);
|
||
}
|
||
|
||
$mt = new Money_transfer_Model();
|
||
$member_model = new Member_Model();
|
||
$account_model = new Account_Model();
|
||
$credit_accounts = $account_model->select('id')
|
||
->where('account_attribute_id', Account_attribute_Model::$credit)->find_all();
|
||
$oa = $account_model->select('id')
|
||
->where('account_attribute_id', Account_attribute_Model::$operating)->find_all()->current();
|
||
|
||
$save_successful = true;
|
||
foreach($credit_accounts as $ca)
|
||
{
|
||
$member->clear();
|
||
$mt->clear();
|
||
|
||
$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'];
|
||
if (!$mt->save())
|
||
$save_successful = false;
|
||
}
|
||
|
||
if ($save_successfull)
|
||
{
|
||
$this->session->set_flash('message', url_lang::lang('texts.Fees have been successfully deducted.'));
|
||
url::redirect(url_lang::base().'accounts/credit_accounts');
|
||
}
|
||
else
|
||
{
|
||
$this->session->set_flash('message', url_lang::lang('texts.Error - cant deduct fees.'));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
$view = new View('template');
|
||
$view->header = new View('base/header');
|
||
$view->header->title = url_lang::lang('texts.Deduction of membership fees');
|
||
$view->header->menu = Controller::render_menu();
|
||
$view->content = new View('accounts/deduct_fees');
|
||
$view->content->form = $form->html();
|
||
$view->footer = new View('base/footer');
|
||
$view->render(TRUE);
|
||
}
|
||
}
|
||
|
||
function trans_detail($transfer_id = NULL, $member_id = NULL)
|
||
{
|
||
if (isset($transfer_id) && isset($member_id))
|
freenetis/trunk/kohana/application/controllers/fees.php | ||
---|---|---|
{
|
||
// check if logged user have access right to view all fees
|
||
|
||
if (!$this->acl_check_view('Settings_Controller','fees'))
|
||
Controller::Error(1);
|
||
//if (!$this->acl_check_view('Settings_Controller','fees'))
|
||
// Controller::Error(1);
|
||
|
||
// to-do - pagination
|
||
|
||
... | ... | |
function add()
|
||
{
|
||
// access control
|
||
if (!$this->acl_check_new('Settings_Controller','fees'))
|
||
Controller::error(1);
|
||
//if (!$this->acl_check_new('Settings_Controller','fees'))
|
||
// Controller::error(1);
|
||
|
||
$enum_type_name_model = new Enum_type_name_Model();
|
||
$enum_type_name = $enum_type_name_model->where('type_name','Fees types')->find();
|
freenetis/trunk/kohana/application/libraries/MY_Controller.php | ||
---|---|---|
|
||
if ($this->acl_check_2D('menu', 'accounts'))
|
||
$acc_menu .= '<li>'.html::anchor(url_lang::base().'accounts/bank_accounts', url_lang::lang('texts.Bank accounts of association')).'</li>
|
||
<li>'.html::anchor(url_lang::base().'accounts/doubleentry_accounts', url_lang::lang('texts.Double-entry accounts')).'</li>
|
||
<li>'.html::anchor(url_lang::base().'accounts/credit_accounts', url_lang::lang('texts.Credit accounts')).'</li>
|
||
<li>'.html::anchor(url_lang::base().'accounts/project_accounts', url_lang::lang('texts.Project accounts')).'</li>
|
||
<li>'.html::anchor(url_lang::base().'accounts/cash_flow', url_lang::lang('texts.Cash flow')).'</li>';
|
||
// commented by Jiri Svitak, it's probably useless
|
||
//<li>'.html::anchor(url_lang::base().'money_transfers', url_lang::lang('texts.Money transfers')).'</li>';
|
freenetis/trunk/kohana/application/views/accounts/credit.php | ||
---|---|---|
<h2>
|
||
<?php echo url_lang::lang('texts.Credit accounts')?>
|
||
</h2>
|
||
<?php echo $message ? '<div class="message">'.$message.'</div>' : '' ?>
|
||
|
||
<br />
|
||
<?php echo $grid ?>
|
freenetis/trunk/kohana/application/views/accounts/deduct_fees.php | ||
---|---|---|
<h2><?php echo url_lang::lang('texts.Deduction of membership fees'); ?></h2>
|
||
<br />
|
||
<?php echo html::anchor(url_lang::base().'accounts/credit_accounts',url_lang::lang('texts.Back to credit accounts'))?>
|
||
<br />
|
||
<br />
|
||
<?php echo $form?>
|
Také k dispozici: Unified diff
Predelano menu. Predelany vypisy vsech druhu uctu. Rozdelano odecitani clenskych prispevku.