Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 226

Přidáno uživatelem Michal Kliment před více než 15 roky(ů)

Mensi upravy s transfery.

Zobrazit rozdíly:

freenetis/trunk/kohana/application/models/money_transfer.php
public function get_transfers($account_id = null, $limit_from = 0, $limit_results = 20, $order_by = 'mt.id', $order_by_direction = 'DESC')
{
if ($order_by=='amount') $order_by = 'IF( mt.destination_id = '.$account_id.', amount, amount*-1 )';
return self::$db->query('SELECT a.name AS aname, a.id AS aid, a.owner_id, mt. * , mt.id AS mtid, bi. * , IF( mt.destination_id = '.$account_id.', FALSE, TRUE ) AS trans_type
return self::$db->query('SELECT a.name AS aname, a.id AS aid, a.member_id, mt. * , mt.id AS mtid, IF( mt.destination_id = '.$account_id.', FALSE, TRUE ) AS trans_type
FROM money_transfers mt
LEFT JOIN money_transfer_bank_infos bi ON bi.id = mt.bank_info_id
LEFT JOIN accounts a ON a.id = IF( mt.origin_id = '.$account_id.', mt.destination_id, mt.origin_id )
WHERE mt.origin_id = '.$account_id.'
OR mt.destination_id = '.$account_id.'
......
public function get_transfer($trans_id = null)
{
return self::$db->query('SELECT a.name AS aoname, a.id AS aoid, a.owner_id AS aoowner, a2.name AS adname, a2.id AS adid, a2.owner_id AS adowner, mt. * , mt.id AS mtid, bi. *
return self::$db->query('SELECT a.name AS aoname, a.id AS aoid, a.member_id AS aoowner, a2.name AS adname, a2.id AS adid, a2.member_id AS adowner, mt. * , mt.id AS mtid
FROM money_transfers mt
LEFT JOIN money_transfer_bank_infos bi ON bi.id = mt.bank_info_id
LEFT JOIN accounts a ON a.id = mt.origin_id
LEFT JOIN accounts a2 ON a2.id = mt.destination_id
WHERE mt.id ='.$trans_id.'
......
}
public function count_all_money_transfers()
{
{
return self::$db->count_records('money_transfers');
}
/**
* Gets all money transfers from database. In case of transfers between bank accounts it shows
* additional information about transfer, for example account number and variable symbol.
* @return unknown_type
*/
public function get_all_money_transfers()
*/
public function get_all_money_transfers()
{
return self::$db->query('SELECT mt.id AS mtid, mt.timestamp, mt.text, mt.amount,
return self::$db->query('SELECT mt.id AS mtid, mt.timestamp, mt.text, mt.amount,
bi.variable_symbol, bi.comment,
oa.name AS origin, oa.type AS origin_type,
CONCAT(oba.account_nr, "/", oba.bank_nr),
CONCAT(oba.account_nr, "/", oba.bank_nr),
da.name AS destination, da.type AS destination_type,
CONCAT(dba.account_nr, "/", dba.bank_nr)
FROM money_transfers mt
LEFT JOIN money_transfer_bank_infos bi
ON mt.id = bi.transfer_id
JOIN accounts AS oa
CONCAT(dba.account_nr, "/", dba.bank_nr)
FROM money_transfers mt
LEFT JOIN money_transfer_bank_infos bi
ON mt.id = bi.transfer_id
JOIN accounts AS oa
ON oa.id = mt.origin_id
LEFT JOIN bank_accounts AS oba
ON oa.id = oba.account_id
JOIN accounts AS da
ON da.id = mt.destination_id
LEFT JOIN bank_accounts AS dba
ON da.id = dba.account_id
ON da.id = dba.account_id
ORDER BY mt.id');
}
freenetis/trunk/kohana/application/controllers/members.php
{
$form_data[$key] = htmlspecialchars($value);
}
$user_data = new User_Model();
$member_data = new Member_Model();
$account_data = new Account_Model();
$user = new User_Model();
$member = new Member_Model();
$account = new Account_Model();
$account_data->type = 'analytic';
$account_data->name = $form_data['membername'];
$account->type = 'analytic';
$account->name = $form_data['membername'];
if ($this->acl_check_new(get_class($this),'current_credit'))
$account_data->start_amount = $form_data['current_credit'];
$account->start_amount = $form_data['current_credit'];
//print_r($member_data);die();
$user_data->name = $form_data['name'];
$user_data->middle_name = $form_data['middle_name'];
$user_data->login = $form_data['login'];
$user_data->surname = $form_data['surname'];
$user_data->pre_title = $form_data['pre_title'];
$user_data->post_title = $form_data['post_title'];
$user_data->birthday = date("Y-m-d",$form_data['birthday']);
$user_data->phone = $form_data['phone'];
$user_data->email = $form_data['email'];
$user_data->password = sha1($form_data['passwd']);
$user_data->type="member";
$user->name = $form_data['name'];
$user->middle_name = $form_data['middle_name'];
$user->login = $form_data['login'];
$user->surname = $form_data['surname'];
$user->pre_title = $form_data['pre_title'];
$user->post_title = $form_data['post_title'];
$user->birthday = date("Y-m-d",$form_data['birthday']);
$user->phone = $form_data['phone'];
$user->email = $form_data['email'];
$user->password = sha1($form_data['passwd']);
$user->type = "member";
$member_data->type = $form_data['type'];
$member_data->comment = $form_data['comment'];
$member_data->entrance_date = date("Y-m-d",$form_data['entrance_date']);
$member_data->name = $form_data['membername'];;
$member_data->street = $form_data['street'];
$member_data->street_number = $form_data['street_number'];
$member_data->town = $form_data['town'];
$member_data->ZIP_code = $form_data['zip_code'];
$member_data->qos_ceil = $form_data['qos_ceil'];
$member_data->qos_rate = $form_data['qos_rate'];
$member_data->entrance_fee = $form_data['entrance_fee'];
$member_data->entrance_fee_left = $form_data['entrance_fee_left'];
$member_data->debt_payment_rate = $form_data['debt_payment_rate'];
$member->type = $form_data['type'];
$member->comment = $form_data['comment'];
$member->entrance_date = date("Y-m-d",$form_data['entrance_date']);
$member->name = $form_data['membername'];;
$member->street = $form_data['street'];
$member->street_number = $form_data['street_number'];
$member->town = $form_data['town'];
$member->ZIP_code = $form_data['zip_code'];
$member->qos_ceil = $form_data['qos_ceil'];
$member->qos_rate = $form_data['qos_rate'];
$member->entrance_fee = $form_data['entrance_fee'];
$member->entrance_fee_left = $form_data['entrance_fee_left'];
$member->debt_payment_rate = $form_data['debt_payment_rate'];
if ($this->acl_check_new(get_class($this),'current_credit'))
$member_data->current_credit = $form_data['current_credit'];
$member->current_credit = $form_data['current_credit'];
if ($this->acl_check_new(get_class($this),'must_pay'))
$member_data->must_pay_regular_fee = $form_data['must_pay_regular_fee'];
$member->must_pay_regular_fee = $form_data['must_pay_regular_fee'];
$member_saved = $member_data->save();
$member_saved = $member->save();
$user_data->member_id = $member_data->id;
$account_data->owner_id = $member_data->id;
$user->member_id = $member->id;
$account->member_id = $member->id;
$user_saved = $user_data->save();
$user_saved = $user->save();
Controller::insert_phpgacl($user_data->id,$user_data->surname.' '.$user_data->name,$user_data->login,$form_data['type']);
Controller::insert_phpgacl($user->id,$user->surname.' '.$user->name,$user->login,$form_data['type']);
unset($form_data);
if ($member_saved && $user_saved && $account_data->save())
if ($member_saved && $user_saved && $account->save())
{
$this->session->set_flash('message', url_lang::lang('texts.Member successfully added.'));
url::redirect(url_lang::base().'members/show/'.(int)$member_data->id);
url::redirect(url_lang::base().'members/show/'.(int)$member->id);
}
else
freenetis/trunk/kohana/application/controllers/accounts.php
if (is_numeric($this->input->get('record_per_page'))) $limit_results = (int) $this->input->get('record_per_page');
// parameters control
$allowed_order_type = array('mt.id', 'origin_id', 'destination_id', 'timestamp', 'amount', 'variable_symbol', 'constant_symbol', 'specific_symbol', 'name', 'date_time', 'fee_transfer_id', 'trans_type');
$allowed_order_type = array('mt.id', 'origin_id', 'destination_id', 'timestamp', 'amount', 'constant_symbol', 'specific_symbol', 'name', 'date_time', 'fee_transfer_id', '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';
$model_account= new Account_Model();
$model_account->where('type','analytic');
$model_account->find_by_owner_id($member_id);
$acc_name = $model_account->name;
$acc_id = $model_account->id;
$account_model = new Account_Model();
$account = $account_model->find_by_member_id($member_id);
$model_transfer = new Money_transfer_Model();
$money_transfer_model = new Money_transfer_Model();
$total_transfers = $model_transfer->count_my_transfers($acc_id);
$total_transfers = $money_transfer_model->count_my_transfers($account->id);
$url_array = explode('/', trim(url::current(), '/'));
......
unset($url_array);
$sql_offset = ($sql_offset>$total_transfers) ? 0 : $sql_offset;
$transfers = $model_transfer->get_transfers($model_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);
......
'url_array_ofset' => 1
),'acc_grid_template');
//$grid->add_new_button(url_lang::base().'accounts/new_transfer/'.$member_id, url_lang::lang('texts.New transfer'));
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/'.$account->member_id, url_lang::lang('texts.Back to the member'));
$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('amount')->label(url_lang::lang('texts.Amount'));
......
unset($grid);
/* ****************** ZOBRAZENI VSECH PROJEKTOVYCH UCTU ******************/
$model_account->clear();
$model_transfer->clear();
$model_account->where('type','project');
$project_accs = $model_account->find_all_by_owner_id($member_id);
$projects_acc_data = array();
$projects = $account_model->where('type','project')->find_all_by_member_id($member_id);
$arr_projects = array();
$i = 0;
foreach ($project_accs as $project)
foreach ($projects as $project)
{
$transfers = $model_transfer->get_transfers($project->id);
$project_transfers = $transfer_model->get_transfers($project->id);
$grid = new Grid(url_lang::base().'accounts', null,array(
//'separator' => '<br />-----------',
......
$grid->field('name')->label(url_lang::lang('texts.Completive informations'));
$grid->action_field('mtid') ->label(url_lang::lang('texts.Details'))->url(url_lang::base().'accounts/trans_detail')->action(url_lang::lang('texts.Details'))->nextval($member_id);
$grid->datasource( $transfers );
$projects_acc_data[$i]['name'] = $project->name;
$projects_acc_data[$i]['grid'] = $grid;
$projects_acc_data[$i]['credit'] = $model_transfer->count_credit($project->id)+(float)$project->start_amount;
$arr_projects[$i]['name'] = $project->name;
$arr_projects[$i]['grid'] = $grid;
$arr_projects[$i]['credit'] = $model_transfer->count_credit($project->id)+(float)$project->start_amount;
unset($grid);
$i++;
}
......
$all_accounts = $model_account->find_all_by_owner_id($member_id);
$all_accounts = $account_model->find_all_by_member_id($member_id);
// print_r();
$grid = new Grid(url_lang::base().'accounts', null,array(
......
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->content = new View('account');
$view->content->acc_name = $acc_name;
$view->content->acc_id = $acc_id;
$view->content->account_name = $account->name;
$view->content->account_id = $account->id;
$view->content->member_id = $member_id;
$view->content->message = $this->session->get_once('message');
$view->content->transfers = $this->template->content;
$view->content->accounts = $grid;
$view->content->projects_acc = $projects_acc_data;
//$view->content->transfers = '';
//$view->content->accounts = $grid;
//$view->content->projects_acc = $projects_acc_data;
$view->content->projects = $arr_projects;
$view->footer = new View('base/footer');
$view->header->menu = Controller::render_menu();
......
} // end of transfers function
function trans_detail($trans_id = NULL, $member_id = NULL)
function trans_detail($transfer_id = NULL, $member_id = NULL)
{
if (isset($trans_id) && isset($member_id))
if (isset($transfer_id) && isset($member_id))
{
if ($member_id == $_SESSION['member_id'])
{
if (!$this->gacl_class->acl_check('freenetis', 'view_own', 'all', $_SESSION['username'],get_class($this),'view_transfers')) Controller::error(1);
}
else
{
if (!$this->gacl_class->acl_check('freenetis', 'view_all', 'all', $_SESSION['username'],get_class($this),'view_all_transfers')) Controller::error(1);
}
if (!$this->acl_check_view(get_class($this),'transfers')) Controller::error(1);
$model_transfer = new Money_transfer_Model();
$transfer = $model_transfer->get_transfer($trans_id);
$transfer_model = new Money_transfer_Model();
$transfer = $transfer_model->get_transfer($transfer_id);
$view = new View('template');
$view->header = new View('base/header');
......
$view->header->title = url_lang::lang('texts.Transfer details');
$view->header->menu = Controller::render_menu();
//$view->content->heading = "Úprava uživatele ".$data['row']['name']." ".$data['row']['surname'];
$curr_transfer = $transfer->current();
foreach($curr_transfer as $key=>$val)
{
......
if($form->validate())
{
$form_data = $form->as_array();
$account_data = new Account_Model;
$account = new Account_Model;
foreach($form_data as $key => $value)
{
$account_data->$key = htmlspecialchars($value);
$account->$key = htmlspecialchars($value);
}
if (trim($form_data['start_amount'])=='') $model_account->start_amount = '0';
unset($form_data);
$account_data->owner_id = $member_id;
$account->member_id = $member_id;
if ($account_data->save())
if ($account->save())
{
$this->session->set_flash('message', url_lang::lang('texts.Account successfully added.'));
}
......
} // end of detail function
function new_transfer($acc_id = NULL)
function new_transfer($account_id = NULL)
{
if (isset($acc_id))
if (isset($account_id))
{
$this->acc_id = $acc_id;
$model_account = new Account_Model($acc_id);
$this->account_id = $account_id;
$account = new Account_Model($account_id);
if ($model_account->owner_id == $_SESSION['member_id'])
{
if (!$this->gacl_class->acl_check('freenetis', 'new_own', 'all', $_SESSION['username'])) Controller::error(1);
}
else
{
if (!$this->gacl_class->acl_check('freenetis', 'new_all', 'all', $_SESSION['username'])) Controller::error(1);
}
// access control
if (!$this->acl_check_new(get_class($this),'transfers',$account->member_id)) Controller::error(1);
$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();
$user_model = new User_Model;
$users = $user_model->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;
}
// asort($arr_users);
$form = new Forge(url_lang::base().'accounts/add/'.$acc_id, '', 'POST', array('id' => 'article_form'));
$form = new Forge(url_lang::base().'accounts/add/'.$account_id, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->input('amount')->label(url_lang::lang('texts.Amount').':')->rules('required|length[0,50]|valid_numeric')->value('0')->callback(array($this, 'callback_amount'));
$form->dropdown('username')->label(url_lang::lang('texts.Send to member').':')->options($arr_users)->onchange('ajax_get_accounts(this.value,'.$acc_id.')')->callback(array($this, 'callback_username'));
$form->dropdown('username')->label(url_lang::lang('texts.Send to member').':')->options($arr_users)->onchange('ajax_get_accounts(this.value,'.$account_id.')')->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->textarea('comment')->label(url_lang::lang('texts.Comment').':')->rules('length[0,250]');
special::required_forge_style($form, ' *', 'required');
......
if($form->validate())
{
$form_data = $form->as_array();
$model_transfer = new Money_transfer_Model();
$money_transfer = new Money_transfer_Model();
foreach($form_data as $key => $value)
{
$account_data->$key = htmlspecialchars($value);
$form_data->$key = htmlspecialchars($value);
}
$model_transfer->origin_id = $model_account->id;
$model_transfer->destination_id = $form_data['account'];
$model_transfer->text = $form_data['comment'];
$model_transfer->amount = (float)$form_data['amount'];
$money_transfer->origin_id = $account->id;
$money_transfer->destination_id = $form_data['account'];
$money_transfer->text = $form_data['comment'];
$money_transfer->amount = (float)$form_data['amount'];
if ($model_transfer->save())
if ($money_transfer->save())
{
if ($model_account->type=='analytic')
if ($account->type=='analytic')
{
$model_members = new Member_Model($model_account->owner_id);
$model_members->current_credit = (float)$model_members->current_credit - (float)$form_data['amount'];
$model_members->save();
$member = new Member_Model($account->member_id);
$member->current_credit = (float)$member->current_credit - (float)$form_data['amount'];
$member->save();
unset($model_members);
}
$model_account2 = new Account_Model($form_data['account']);
if ($model_account2->type=='analytic')
$account2 = new Account_Model($form_data['account']);
if ($account2->type=='analytic')
{
$model_members = new Member_Model($model_account2->owner_id);
$model_members->current_credit = (float)$model_members->current_credit + (float)$form_data['amount'];
$model_members->save();
$member = new Member_Model($account2->owner_id);
$member->current_credit = (float)$member->current_credit + (float)$form_data['amount'];
$member->save();
}
$this->session->set_flash('message', url_lang::lang('texts.The transfer successfully done.'));
}
......
{
$this->session->set_flash('message', url_lang::lang('texts.Error - cant do the transfer.'));
}
url::redirect(url_lang::base().'accounts/transfers/'.(int)$model_account->owner_id);
url::redirect(url_lang::base().'accounts/transfers/'.(int)$account->member_id);
}
else
{
......
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.New transfer');
$view->content->form = $form->html('forge/new_transfer',TRUE);
$view->content->acc_data = $model_account;
$view->content->acc_data = $account;
//$view->content->acc_id = $acc_id;
$view->render(TRUE);
freenetis/trunk/kohana/application/views/transfer_details.php
</tr>
<tr>
<th><?php echo url_lang::lang('texts.Origin account') ?></th>
<td><?php if ($transfer->bank_info_id!='' && $transfer->aoname=='') echo $transfer->name; else echo html::anchor(url_lang::base().'members/show/'.$transfer->aoowner,$transfer->aoname); ?></td>
<td><?php //if ($transfer->bank_info_id!='' && $transfer->aoname=='') echo $transfer->name; else
echo html::anchor(url_lang::base().'members/show/'.$transfer->aoowner,$transfer->aoname); ?></td>
</tr>
<tr>
<th><?php echo url_lang::lang('texts.Destination account') ?></th>
<td><?php if ($transfer->bank_info_id!='' && $transfer->adname=='') echo $transfer->name; else echo html::anchor(url_lang::base().'members/show/'.$transfer->adowner,$transfer->adname); ?></td>
<td><?php //if ($transfer->bank_info_id!='' && $transfer->adname=='') echo $transfer->name; else
echo html::anchor(url_lang::base().'members/show/'.$transfer->adowner,$transfer->adname); ?></td>
</tr>
<tr>
<th><?php echo url_lang::lang('texts.Amount') ?></th>
......
<td><?php echo $transfer->text; ?></td>
</tr>
</table>
<?php if ($transfer->bank_info_id!='&nbsp;') { ?>
<?php /*if ($transfer->bank_info_id!='&nbsp;') { ?>
<table class="extended" cellspacing="0" style="float:left; margin-left:25px;">
<tr>
<th colspan="2"><?php echo url_lang::lang('texts.Bank info') ?></th>
......
<td><?php echo $transfer->date_time; ?></td>
</tr>
</table>
<?php } ?>
<?php } */?>
<br class="clear" /><br />
freenetis/trunk/kohana/application/views/account.php
<h2><?php echo url_lang::lang('texts.Account').' '.$acc_name ?></h2><br />
<h2><?php echo url_lang::lang('texts.Account').' '.$account_name ?></h2><br />
<?php echo $message ? '<div class="message">'.$message.'</div>' : '' ?>
<?php echo html::anchor(url_lang::base().'accounts/new_transfer/'.$acc_id,url_lang::lang('texts.New transfer')).' | '.html::anchor(url_lang::base().'members/show/'.$member_id,url_lang::lang('texts.Back to the member.')) ?>
<?php echo ($this->session->get_once('message')) ? '<div class="message">'.$this->session->get_once('message').'</div>' : '' ?>
<?php echo $transfers?>
<br />
<?php
//print_r($projects_acc);
foreach ($projects_acc as $project)
foreach ($projects as $project)
{
echo '<h2>'.url_lang::lang('texts.Project account').' - '.$project['name'] .'</h2><br />';
echo url_lang::lang('texts.Current credit on this account is').' '.number_format((float)$project['credit'], 2, ',', ' ').' '.url_lang::lang('texts.CZK').' | ' ;
freenetis/trunk/kohana/application/views/acc_grid_template.php
<?php elseif ($field->bool != ''): ?>
<td <?php echo $style_td?>><?php echo $field->bool[(bool)$item->$field] ?></td>
<?php else: ?>
<td <?php echo $style_td?>><?php if($field->name == 'amount') {if ($item->trans_type) echo '<span style="color:red">- '.number_format((float)$item->$field, 2, ',', ' ').'</span>'; else echo number_format((float)$item->$field, 2, ',', ' ');} elseif ($field->name == 'aname' && $item->$field == '') echo $item->name; elseif ($field->name == 'name') echo trim($item->text.'<br />'.$item->variable_symbol.' - '.$item->specific_symbol,'<br />'); elseif (trim($item->$field)!='') echo $item->$field; else echo '&nbsp;'; ?></td>
<td <?php echo $style_td?>><?php if($field->name == 'amount') {if ($item->trans_type) echo '<span style="color:red">- '.number_format((float)$item->$field, 2, ',', ' ').'</span>'; else echo number_format((float)$item->$field, 2, ',', ' ');} elseif ($field->name == 'aname' && $item->$field == '') echo $item->name; elseif ($field->name == 'name') echo trim($item->text.'<br /> - <br />'); elseif (trim($item->$field)!='') echo $item->$field; else echo '&nbsp;'; ?></td>
<?php endif;
endforeach; ?>
</tr>

Také k dispozici: Unified diff