Revize 1310
Přidáno uživatelem Michal Kliment před asi 13 roky(ů)
freenetis/branches/testing/application/i18n/cs_CZ/texts.php | ||
---|---|---|
'are you really sure that you use correct username and password?' => 'Jste si opravdu jisti, že používate správné uživatelské jméno a heslo?',
|
||
'are you sure you want to deduct all entrance fees' => 'Jste si jistí, že chcete strhnout všechny vstupní příspěvky',
|
||
'are you sure you want to deduct all device repayments' => 'Jste si jistí, že chcete strhnout všechny splátky zařízení',
|
||
'are you sure you want to recount device repayments of this member' => 'Jste si jistí, že chcete přepočítat splátky zařízení tohoto člena',
|
||
'are you sure you want to recount fees of this member' => 'Jste si jistí, že chcete přepočítat členské příspěvky tohoto člena',
|
||
'are you sure you want to recount entrance fees of this member' => 'Jste si jistí, že chcete přepočítat vstupní příspěvky tohoto člena',
|
||
'area' => 'Oblast',
|
||
... | ... | |
'device monitoring' => 'Monitoring zařízení',
|
||
'device name' => 'Název zařízení',
|
||
'device repayments' => 'Splátky zařízení',
|
||
'device repayments have been successfully recalculated, %d transfers deleted, %d new transfers created' => 'Splátky zařízení byly úspěšně přepočítány, smazáno %d převodů, vytvořeno %d nových převodů.',
|
||
'device still has at least one interface' => 'Zařízení má ještě nejméně jedno rozhraní.',
|
||
'device still has at least one port' => 'Zařízení má ještě nejméně jeden port.',
|
||
'device type' => 'Typ zařízení',
|
||
... | ... | |
'received message' => 'Přijatá zpráva',
|
||
'receiver' => 'Příjemce',
|
||
'receiver type' => 'Typ příjemce',
|
||
'recount of device repayments' => 'Přepočítání splátek zařízení',
|
||
'recount of member fees' => 'Přepočítání členských příspěvků',
|
||
'recount of entrance fees' => 'Přepočítání vstupních příspěvků',
|
||
'redir' => 'Přesm',
|
freenetis/branches/testing/application/i18n/cs_CZ/help.php | ||
---|---|---|
'phone_invoice_user_unlock' => 'Odznačí fakturu jako vyplněnou, čímž Vám umožní její editaci.',
|
||
'price_tax' => 'Cena s DPH',
|
||
'project_subaccounts' => 'Projektový účet 221103 pro účetního představuje jeden účet. Zde jsou ovšem rozepsány všechny projektové podúčty z pohledu Freenetisu. Každý člen má právo vytvořit svůj projekt, který je v souladu se stanovami sdružení, může jít například o nějakou akci nebo školení. Cílem takovéhoto projektového podúčtu je, aby ostatní členové měli možnost zakladateli projektu přispět peníze ze svého kreditního účtu na realizaci projektu.',
|
||
'redirection_port_self_cancel' => 'Port brány pro zrušení samozrušitelného přesměrování IP adresy.',
|
||
'recalculate_account_balances' => 'Primárním zdrojem o stavu financí v systému jsou převody. Zůstatky na účtech byly dříve pokaždé počítány na požádání z převodů. Nyní si každý účet ukládá svůj zůstatek kvůli vyšší rychlosti. Tuto funkci použijete v případě přechodu na verzi systému, která tuto optimalizaci obsahuje.',
|
||
'recalculate_device_fees' => 'Pro primární strhávání splátek zařízení používejte funkci pro globální strhávání v účetním deníku. Tuto funkci používejte jen v případě, že došlo k nějakému omylu.',
|
||
'recalculate_fees' => 'Pro primární strhávání členských příspěvků používejte funkci pro globální strhávání členských příspěvků v Účetním deníku. Tuto funkci používejte opatrně a to jen v případě, že máte správně strženy všechny členské příspěvky pro všechny členy od založení sdružení až po současné datum. Pak můžete tomuto členovi přepočítat stržení členských příspěvků v případě, že u něj došlo k nutnosti je přepočítat, např. chybné datum vstupu, vznikla nutnost přidat přerušení členství apod.',
|
||
'recalculate_entrance_fees' => 'Pro primární strhávání vstupních příspěvků používejte funkci pro globální strhávání v účetním deníku. Tuto funkci používejte jen v případě, že došlo k nějakému omylu, například, že měl zaplatit vstupní a pak se ukázalo, že nemusel.',
|
||
'redirection_preview' => 'Náhled zobrazí stránku přesně tak, jak se zobrazí dané IP adrese. V případě více aktivovaných přesměrování najednou pro jednu IP adresu se zobrazí jen to, které se členovi zobrazí jako první.',
|
freenetis/branches/testing/application/helpers/money.php | ||
---|---|---|
<?php defined('SYSPATH') or die('No direct script access.');
|
||
/*
|
||
* This file is part of open source system FreeNetIS
|
||
* and it is released under GPLv3 licence.
|
||
*
|
||
* More info about licence can be found:
|
||
* http://www.gnu.org/licenses/gpl-3.0.html
|
||
*
|
||
* More info about project can be found:
|
||
* http://www.freenetis.org/
|
||
*
|
||
*/
|
||
|
||
/**
|
||
* Money helper.
|
||
*
|
||
* @author Michal Kliment
|
||
* @package Helper
|
||
*/
|
||
class Money
|
||
{
|
||
|
||
/**
|
||
* Finds all payments by given payment rate
|
||
*
|
||
* @author Michal Kliment
|
||
* @param array $payments
|
||
* @param integer $month
|
||
* @param integer $year
|
||
* @param integer $payment_left
|
||
* @param integer $payment_rate
|
||
*/
|
||
public static function find_debt_payments(
|
||
&$payments, $month, $year, $payment_left, $payment_rate)
|
||
{
|
||
while ($payment_left > 0)
|
||
{
|
||
if ($payment_left > $payment_rate)
|
||
$payment = $payment_rate;
|
||
else
|
||
$payment = $payment_left;
|
||
|
||
if (isset($payments[$year][$month]))
|
||
$payments[$year][$month] += $payment;
|
||
else
|
||
$payments[$year][$month] = $payment;
|
||
|
||
$month++;
|
||
if ($month > 12)
|
||
{
|
||
$year++;
|
||
$month = 1;
|
||
}
|
||
$payment_left -= $payment;
|
||
}
|
||
}
|
||
}
|
freenetis/branches/testing/application/models/account.php | ||
---|---|---|
|
||
return $transfers_count;
|
||
}
|
||
|
||
/**
|
||
* Function deletes device fee deducting transfers of given account.
|
||
*
|
||
* @author Jiri Svitak
|
||
* @param integer $account_id
|
||
* @return integer Count of deleted transfers
|
||
* @throws Exception On error
|
||
*/
|
||
public function delete_device_deduct_transfers_of_account($account_id)
|
||
{
|
||
$transfers_count = 0;
|
||
|
||
// validates account_id
|
||
if (!$account_id || !is_numeric($account_id))
|
||
return $transfers_count;
|
||
|
||
$transfers = ORM::factory('transfer')->where(array
|
||
(
|
||
'type' => Transfer_Model::DEDUCT_DEVICE_FEE,
|
||
'origin_id' => $account_id
|
||
))->find_all();
|
||
|
||
foreach ($transfers as $transfer)
|
||
{
|
||
$transfers_count++;
|
||
$transfer->delete_throwable();
|
||
}
|
||
// recalculate balance of current credit account
|
||
if (!$this->recalculate_account_balance_of_account($account_id))
|
||
{
|
||
throw new Exception();
|
||
}
|
||
// recalculate balance of operating account
|
||
$operating = ORM::factory('account')->where(array
|
||
(
|
||
'account_attribute_id' => Account_attribute_Model::OPERATING
|
||
))->find();
|
||
|
||
if (!$this->recalculate_account_balance_of_account($operating->id))
|
||
{
|
||
throw new Exception();
|
||
}
|
||
|
||
return $transfers_count;
|
||
}
|
||
|
||
|
||
/**
|
freenetis/branches/testing/application/controllers/transfers.php | ||
---|---|---|
help::hint('recalculate_entrance_fees')
|
||
);
|
||
}
|
||
|
||
if ($this->acl_check_edit('Accounts_Controller', 'transfers'))
|
||
{
|
||
$m = __('Are you sure you want to recount device repayments of this member');
|
||
|
||
$transfers_grid->add_new_button(
|
||
'transfers/recalculate_device_fees/' .
|
||
$account->id, __('Recount of device repayments'),
|
||
array('onclick' => 'return window.confirm(\'' . $m . '?\')'),
|
||
help::hint('recalculate_device_fees')
|
||
);
|
||
}
|
||
}
|
||
$transfers_grid->order_field('id')
|
||
->label('ID');
|
||
... | ... | |
Transfer_Model::insert_transfer(
|
||
$ca->id, $infrastructure->id, null, null,
|
||
$this->session->get('user_id'),
|
||
Transfer_Model::DEDUCT_MEMBER_FEE, $date,
|
||
Transfer_Model::DEDUCT_ENTRANCE_FEE, $date,
|
||
$creation_datetime, __('Entrance fee'), $amount
|
||
);
|
||
$created_transfers_count++;
|
||
... | ... | |
}
|
||
url::redirect('transfers/show_all');
|
||
}
|
||
|
||
/**
|
||
* Recalculates device repayments of member by given account
|
||
*
|
||
* @author Michal Kliment
|
||
* @param integer $account_id
|
||
*/
|
||
public function recalculate_device_fees($account_id = NULL)
|
||
{
|
||
// bad parameter
|
||
if (!$account_id || !is_numeric($account_id))
|
||
Controller::warning (PARAMETER);
|
||
|
||
// access rights
|
||
if (!$this->acl_check_new('Accounts_Controller', 'transfers'))
|
||
Controller::error(ACCESS);
|
||
|
||
$account = new Account_Model($account_id);
|
||
|
||
// record doesn't exist
|
||
if (!$account->id)
|
||
Controller::error (RECORD);
|
||
|
||
$operating = ORM::factory('account')->where(
|
||
'account_attribute_id', Account_attribute_Model::OPERATING
|
||
)->find();
|
||
|
||
$created_transfers_count = 0;
|
||
|
||
$current_date = date('Y-m-d');
|
||
|
||
$creation_datetime = date('Y-m-d H:i:s');
|
||
|
||
$payments = array();
|
||
|
||
$deleted_transfers_count = $account->delete_device_deduct_transfers_of_account($account->id);
|
||
|
||
// finds all member's devices with debt payments
|
||
$devices = ORM::factory('device')->get_member_devices_with_debt_payments($account->member_id);
|
||
|
||
$debt = 0;
|
||
|
||
// no device with debt payments
|
||
if (!count($devices))
|
||
{
|
||
status::success(
|
||
'Device repayments have been successfully recalculated, ' .
|
||
'%d transfers deleted, %d new transfers created.',
|
||
TRUE, array
|
||
(
|
||
1 => $deleted_transfers_count,
|
||
2 => $created_transfers_count
|
||
)
|
||
);
|
||
url::redirect('transfers/show_by_account/' . $account_id);
|
||
}
|
||
|
||
foreach ($devices as $device)
|
||
{
|
||
// finds buy date of this device
|
||
$buy_date = date_parse(date::get_middle_of_month($device->buy_date));
|
||
|
||
$debt += $device->price;
|
||
|
||
// finds all debt payments of this device
|
||
money::find_debt_payments(
|
||
$payments, $buy_date['month'], $buy_date['year'],
|
||
$device->price, $device->payment_rate
|
||
);
|
||
}
|
||
|
||
$year = min(array_keys($payments));
|
||
$month = min(array_keys($payments[$year]));
|
||
|
||
$date = date::create(15, $month, $year);
|
||
|
||
try
|
||
{
|
||
$account->transaction_start();
|
||
|
||
while ($debt > 0 && $date < $current_date)
|
||
{
|
||
if (isset($payments[$year][$month]))
|
||
{
|
||
$debt -= $payments[$year][$month];
|
||
|
||
// create new transfer
|
||
Transfer_Model::insert_transfer(
|
||
$account->id, $operating->id, null, null,
|
||
$this->session->get('user_id'),
|
||
Transfer_Model::DEDUCT_DEVICE_FEE, $date,
|
||
$creation_datetime, __('Device repayments'),
|
||
$payments[$year][$month]
|
||
);
|
||
$created_transfers_count++;
|
||
}
|
||
|
||
$month++;
|
||
if ($month == 13)
|
||
{
|
||
$month = 1;
|
||
$year++;
|
||
}
|
||
|
||
$date = date::create(15, $month, $year);
|
||
}
|
||
|
||
$account->transaction_commit();
|
||
|
||
status::success(
|
||
'Device repayments have been successfully recalculated, ' .
|
||
'%d transfers deleted, %d new transfers created.',
|
||
TRUE, array
|
||
(
|
||
1 => $deleted_transfers_count,
|
||
2 => $created_transfers_count
|
||
)
|
||
);
|
||
}
|
||
catch (Exception $e)
|
||
{
|
||
$account->transaction_rollback();
|
||
status::error('Error - cant recalculate device repayments.');
|
||
}
|
||
url::redirect('transfers/show_by_account/' . $account_id);
|
||
}
|
||
|
||
/**
|
||
* Function adds member fee payment by cash.
|
||
*
|
Také k dispozici: Unified diff
Opraveno chyba u strhavani vstupnich prispevku (byla pouzita konstanta pro clenske prispevky). Dopsana funkce pro prepocitani splatek zarizeni clena.