Revize 1887
Přidáno uživatelem Ondřej Fibich před více než 11 roky(ů)
freenetis/branches/1.1/application/libraries/importers/Unicredit/UnicreditImport.php | ||
---|---|---|
throw new UnicreditException(__('Cannot open uploaded bank listing file!'));
|
||
}
|
||
|
||
$csvData = iconv('cp1250', 'UTF-8', $csvData);
|
||
// not in cp12540 anymore (2013-02-27)
|
||
//$csvData = iconv('cp1250', 'UTF-8', $csvData);
|
||
$data = UnicreditParser::parseCSV($csvData);
|
||
|
||
// clean up from needless attributes is not necessary due to changing Fio csv format
|
freenetis/branches/1.1/application/libraries/importers/Unicredit/UnicreditSaver.php | ||
---|---|---|
// convert date of transfer to international format
|
||
$datetime = $item['datum'];
|
||
|
||
// check
|
||
if ($item['castka'] < 0)
|
||
{
|
||
throw new UnicreditException(__('Outbound transfers not supported'));
|
||
}
|
||
|
||
// check bank account
|
||
if ($item['ucet'] != $ba->account_nr)
|
||
{
|
||
... | ... | |
|
||
$counter_ba_id = NULL;
|
||
$counter_ba_id_added = FALSE;
|
||
|
||
|
||
if (mb_strpos($item['zprava'], 'ZÁLOHA') === FALSE &&
|
||
mb_strpos($item['zprava'], 'VKLAD HOTOVOSTI') === FALSE)
|
||
mb_strpos($item['zprava'], 'VKLAD HOTOVOSTI') === FALSE &&
|
||
mb_strpos($item['zprava'], 'Výběr dne') === FALSE)
|
||
{
|
||
// try to find counter bank account in database
|
||
$counter_ba->where(array
|
||
... | ... | |
$counter_ba->bank_nr = $item['kod_banky'];
|
||
$counter_ba->member_id = NULL;
|
||
$counter_ba->save_throwable();
|
||
|
||
|
||
$counter_ba_id_added = TRUE;
|
||
}
|
||
|
||
|
||
$counter_ba_id = $counter_ba->id;
|
||
}
|
||
|
||
|
||
/* Step two - get account */
|
||
|
||
$m_account_id = NULL;
|
||
$member_id = NULL;
|
||
|
||
$m_account = $vs_model->where('variable_symbol', $item['vs'])->find()->account;
|
||
|
||
if ($m_account->id && $m_account->member_id)
|
||
// outbound ////////////////////////////////////////////////////////
|
||
if ($item['castka'] < 0)
|
||
{
|
||
$m_account_id = $m_account->id;
|
||
$member_id = $m_account->member_id;
|
||
// outbound transfer
|
||
// -----------------
|
||
// by default we assume, it is "invoice" (this includes all expenses)
|
||
// double-entry transfer
|
||
$transfer_id = Transfer_Model::insert_transfer(
|
||
$account->id, $suppliers->id, null,
|
||
$counter_ba->member_id, $user_id, null,
|
||
$datetime, $now, $item['zprava'], abs($item['castka'])
|
||
);
|
||
// bank transfer
|
||
$bt->clear();
|
||
$bt->set_logger(false);
|
||
$bt->origin_id = $ba->id;
|
||
$bt->destination_id = $counter_ba_id;
|
||
$bt->transfer_id = $transfer_id;
|
||
$bt->bank_statement_id = $bank_statement_id;
|
||
$bt->number = $number;
|
||
$bt->constant_symbol = $item['ks'];
|
||
$bt->variable_symbol = $item['vs'];
|
||
$bt->specific_symbol = $item['ss'];
|
||
$bt->save();
|
||
// stats
|
||
$stats['invoices'] += abs($item['castka']);
|
||
$stats['invoices_nr']++;
|
||
}
|
||
|
||
/* Step three - create transfers to association account */
|
||
|
||
// double-entry incoming transfer
|
||
$transfer_id = Transfer_Model::insert_transfer(
|
||
$member_fees->id, $account->id, null, $member_id,
|
||
$user_id, null, $datetime, $now, $item['zprava'],
|
||
abs($item['castka'])
|
||
);
|
||
// incoming bank transfer
|
||
$bt->clear();
|
||
$bt->set_logger(false);
|
||
$bt->origin_id = $counter_ba_id;
|
||
$bt->destination_id = $ba->id;
|
||
$bt->transfer_id = $transfer_id;
|
||
$bt->bank_statement_id = $bank_statement_id;
|
||
$bt->number = $number;
|
||
$bt->constant_symbol = $item['ks'];
|
||
$bt->variable_symbol = $item['vs'];
|
||
$bt->specific_symbol = $item['ss'];
|
||
$bt->save_throwable();
|
||
|
||
/** Step four - create transfers to associated member (if found) */
|
||
|
||
if (!empty($member_id))
|
||
// inbound /////////////////////////////////////////////////////////
|
||
else
|
||
{
|
||
$a_transfer_id = Transfer_Model::insert_transfer(
|
||
$account->id, $m_account_id, $transfer_id, $member_id,
|
||
$user_id, null, $datetime, $now,
|
||
__('Assigning of transfer'), abs($item['castka'])
|
||
/* Step two - get account */
|
||
|
||
$m_account_id = NULL;
|
||
$member_id = NULL;
|
||
|
||
$m_account = $vs_model->where('variable_symbol', $item['vs'])
|
||
->find()->account;
|
||
|
||
if ($m_account->id && $m_account->member_id)
|
||
{
|
||
$m_account_id = $m_account->id;
|
||
$member_id = $m_account->member_id;
|
||
}
|
||
|
||
/* Step three - create transfers to association account */
|
||
|
||
// double-entry incoming transfer
|
||
$transfer_id = Transfer_Model::insert_transfer(
|
||
$member_fees->id, $account->id, null, $member_id,
|
||
$user_id, null, $datetime, $now, $item['zprava'],
|
||
abs($item['castka'])
|
||
);
|
||
// incoming bank transfer
|
||
$bt->clear();
|
||
$bt->set_logger(false);
|
||
$bt->origin_id = $counter_ba_id;
|
||
$bt->destination_id = $ba->id;
|
||
$bt->transfer_id = $transfer_id;
|
||
$bt->bank_statement_id = $bank_statement_id;
|
||
$bt->number = $number;
|
||
$bt->constant_symbol = $item['ks'];
|
||
$bt->variable_symbol = $item['vs'];
|
||
$bt->specific_symbol = $item['ss'];
|
||
$bt->save_throwable();
|
||
|
||
// transaction fee
|
||
$fee = $fee_model->get_by_date_type($datetime, 'transfer fee');
|
||
|
||
if ($fee && $fee->fee > 0)
|
||
/** Step four - create transfers to associated member (if found) */
|
||
|
||
if (!empty($member_id))
|
||
{
|
||
$tf_transfer_id = Transfer_Model::insert_transfer(
|
||
$m_account_id, $operating->id, $transfer_id,
|
||
$member_id, $user_id, null, $datetime,
|
||
$now, __('Transfer fee'), $fee->fee
|
||
$a_transfer_id = Transfer_Model::insert_transfer(
|
||
$account->id, $m_account_id, $transfer_id, $member_id,
|
||
$user_id, null, $datetime, $now,
|
||
__('Assigning of transfer'), abs($item['castka'])
|
||
);
|
||
|
||
// transaction fee
|
||
$fee = $fee_model->get_by_date_type($datetime, 'transfer fee');
|
||
|
||
if ($fee && $fee->fee > 0)
|
||
{
|
||
$tf_transfer_id = Transfer_Model::insert_transfer(
|
||
$m_account_id, $operating->id, $transfer_id,
|
||
$member_id, $user_id, null, $datetime,
|
||
$now, __('Transfer fee'), $fee->fee
|
||
);
|
||
}
|
||
|
||
if ($counter_ba_id_added)
|
||
{
|
||
$counter_ba->member_id = $member_id;
|
||
$counter_ba->save_throwable();
|
||
}
|
||
}
|
||
|
||
if ($counter_ba_id_added)
|
||
else
|
||
{
|
||
$counter_ba->member_id = $member_id;
|
||
$counter_ba->save_throwable();
|
||
$stats['unidentified_nr']++;
|
||
}
|
||
|
||
// member fee stats
|
||
$stats['member_fees'] += abs($item['castka']);
|
||
$stats['member_fees_nr']++;
|
||
|
||
/** Send payment notification */
|
||
|
||
try
|
||
{
|
||
Message_Model::activate_special_notice(
|
||
Message_Model::RECEIVED_PAYMENT_NOTICE_MESSAGE,
|
||
$member_id, $user_id,
|
||
$send_emails, $send_sms
|
||
);
|
||
}
|
||
catch (Exception $e)
|
||
{
|
||
Log::add_exception($e);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
$stats['unidentified_nr']++;
|
||
}
|
||
|
||
// member fee stats
|
||
$stats['member_fees'] += abs($item['castka']);
|
||
$stats['member_fees_nr']++;
|
||
|
||
/** Send payment notification */
|
||
|
||
try
|
||
{
|
||
Message_Model::activate_special_notice(
|
||
Message_Model::RECEIVED_PAYMENT_NOTICE_MESSAGE,
|
||
$member_id, $user_id,
|
||
$send_emails, $send_sms
|
||
);
|
||
}
|
||
catch (Exception $e)
|
||
{
|
||
Log::add_exception($e);
|
||
}
|
||
|
||
// line number increase
|
||
$number++;
|
Také k dispozici: Unified diff
Upravy:
- closes #529: Podpora pro odchozi platby v parseru pro Unicredit
Opravy:
- fixes #530: Kodovani ve vypisu pro Unicredit bank (cp1250 -> utf8)