本文整理汇总了PHP中sbr_meta::calcAnyTax方法的典型用法代码示例。如果您正苦于以下问题:PHP sbr_meta::calcAnyTax方法的具体用法?PHP sbr_meta::calcAnyTax怎么用?PHP sbr_meta::calcAnyTax使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sbr_meta
的用法示例。
在下文中一共展示了sbr_meta::calcAnyTax方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: sbrCalc
function sbrCalc($frl_type, $rez_type, $scheme_type, $currency, $sbr_cost, $emp_cost, $frl_cost, $usr_type)
{
session_start();
$frl_type = intval($_POST['xjxargs']['frl_type']);
$rez_type = intval($_POST['xjxargs']['residency']);
$scheme_type = intval($_POST['xjxargs']['scheme_type']);
$currency = intval($_POST['xjxargs']['currency']);
$sbr_cost = $_POST['xjxargs']['sbr_cost'];
$emp_cost = $_POST['xjxargs']['emp_cost'];
$frl_cost = $_POST['xjxargs']['frl_cost'];
$usr_type = $_POST['xjxargs']['usr_type'];
$_POST['xjxargs'] = array('frl_type' => $frl_type, 'rez_type' => $rez_type, 'scheme_type' => $scheme_type, 'currency' => $currency, 'sbr_cost' => $sbr_cost, 'emp_cost' => $emp_cost, 'frl_cost' => $frl_cost, 'usr_type' => $usr_type);
// Заплатка для того чтобы работала CSRF xajax
$hash = '';
sbr::setSbrCalc($_POST['xjxargs'], $hash);
$_POST = $_POST['xjxargs'];
foreach ($_POST as $k => $v) {
if (!in_array($k, array('sbr_cost', 'frl_cost', 'emp_cost'))) {
continue;
}
$_POST[$k] = str_replace(',', '.', $v);
}
$sbr_cost = __paramInit('money', null, 'sbr_cost', 0.0, 10);
$emp_cost = __paramInit('money', null, 'emp_cost', 0.0, 10);
$frl_cost = __paramInit('money', null, 'frl_cost', 0.0, 10);
$err = 0;
if (!$frl_type || !$frl_type || !$scheme_type || !$currency) {
$err = 1;
}
if ($sbr_cost + $emp_cost + $frl_cost <= 0) {
$err = 1;
}
if ($sbr_cost && $sbr_cost < sbr_stages::MIN_COST_RUR) {
$err = 1;
$res['msg'] = iconv('CP1251', 'UTF8', 'Минимальный бюджет проекта - ' . sbr_stages::MIN_COST_RUR . ' руб.');
}
if ($sbr_cost && $sbr_cost < sbr_stages::MIN_COST_RUR_PDRD && ($scheme_type == sbr::SCHEME_PDRD || $scheme_type == sbr::SCHEME_PDRD2)) {
$err = 1;
$res['msg'] = iconv('CP1251', 'UTF8', 'Минимальный бюджет проекта - ' . sbr_stages::MIN_COST_RUR_PDRD . ' руб.');
}
if (!get_uid(false) || $err) {
$res['success'] = false;
echo json_encode($res);
return;
}
$sbr_meta = sbr_meta::getInstance();
$sbr_meta->scheme_type = $scheme_type;
$schemes = $sbr_meta->getSchemes();
$emp_total = $frl_total = 0;
$emp_tax = $frl_tax = 0;
$tcost = $sbr_cost;
$sch = null;
foreach ($schemes as $id => $scheme) {
if ($scheme['type'] != $scheme_type) {
continue;
}
$sch = $scheme;
}
$_taxes = $taxes = array();
$rrq = array('U' => 0, 'Ff' => $frl_type, 'P' => $currency, 'Rf' => $rez_type);
$pct = 0;
foreach ($sch['taxes'][0] as $id => $tax) {
$cost = sbr_meta::calcAnyTax($tax['id'], $tax['scheme_id'], $tcost, $rrq);
$pct = $cost / $tcost;
if (!$pct) {
continue;
}
$tax['pct'] = $pct;
$_taxes['frl'][] = $tax;
$frl_tax += $pct * 100;
}
$rrq = array('U' => 1, 'Ff' => $frl_type, 'P' => $currency, 'Rf' => $rez_type, 'C' => $tcost);
foreach ($sch['taxes'][1] as $id => $tax) {
$cost = sbr_meta::calcAnyTax($tax['id'], $tax['scheme_id'], $tcost, $rrq);
$pct = $cost / $tcost;
if (!$pct) {
continue;
}
$tax['pct'] = $pct;
$_taxes['emp'][] = $tax;
$emp_tax += $pct * 100;
}
if ($sbr_cost) {
$emp_cost = $sbr_cost + $sbr_cost * ($emp_tax / 100);
$frl_cost = $sbr_cost - $sbr_cost * ($frl_tax / 100);
} elseif ($emp_cost) {
$sbr_cost = $emp_cost - $emp_cost / (100 + $emp_tax) * $emp_tax;
$frl_cost = $sbr_cost - $sbr_cost * $frl_tax / 100;
} elseif ($frl_cost) {
$sbr_cost = $frl_cost + $frl_cost / (100 - $frl_tax) * $frl_tax;
$emp_cost = $sbr_cost + $sbr_cost * ($emp_tax / 100);
}
if ($sbr_cost && $sbr_cost < sbr_stages::MIN_COST_RUR) {
$err = 1;
$res['msg'] = iconv('CP1251', 'UTF8', 'Минимальный бюджет проекта - ' . sbr_stages::MIN_COST_RUR . ' руб.');
$res['success'] = false;
echo json_encode($res);
return;
}
if ($rez_type == sbr::RT_UABYKZ && $sbr_cost && $sbr_cost > sbr::usd2rur(sbr::MAX_COST_USD)) {
//.........这里部分代码省略.........
示例2: array
<?php
$sbr_taxes = $ps_total_sum = $sbr_taxes_sum = array();
foreach ($sbr->scheme['taxes'][$sbr->isEmp() ? sbr::EMP : sbr::FRL] as $tid => $tax) {
foreach (pskb::$psys[$sbr->isEmp() ? pskb::USER_EMP : pskb::USER_FRL] as $k => $v) {
$t_sum = sbr_meta::calcAnyTax($tid, $sbr->scheme['id'], $sbr->cost, array('P' => pskb::$exrates_map[$k]));
if ($t_sum == 0) {
continue;
}
$sbr_taxes[$k][] = $tid;
if (!isset($ps_total_sum[$k])) {
$ps_total_sum[$k] = $sbr->cost;
}
if ($sbr->isEmp()) {
$ps_total_sum[$k] += $t_sum;
} else {
$ps_total_sum[$k] -= $t_sum;
}
$sbr_taxes_sum[$tid][$k] = $t_sum;
}
}
?>
<?php
if (!$sbr->user_reqvs['rez_type']) {
?>
<table cellspacing="0" cellpadding="0" border="0" class="b-layout__table">
<tbody>
<tr class="b-layout__tr">
<td class="b-layout__left b-layout__left_width_160">
<div class="b-layout__txt">Резидентство</div>
示例3: reserve
/**
* Устанавливает сделку в состояние зарезервированной после успешной операции резервирования на счете.
* Добавляет к операции подробный комментарий.
*
* @see account::deposit().
*
* @param int $reserved_id ид. операции резервирования (account_operations.id).
*
* @return bool успешно?
*/
public function reserve($reserved_id)
{
if (!$this->_openXact(true)) {
return false;
}
$tax_emp = 0;
$pskb = new pskb($this);
$lc = $pskb->getLC();
$dvals = array('P' => pskb::$exrates_map[$lc['ps_emp']]);
foreach ($this->scheme['taxes'][sbr::EMP] as $tax) {
$tax_emp += sbr_meta::calcAnyTax($tax['tax_id'], $tax['scheme_id'], $this->cost, $dvals);
}
$comments = sbr_meta::view_cost($this->getReserveSum(), $this->cost_sys) . ', ' . $this->getContractNum() . ', ' . round($tax_emp / $this->cost * 100) . '% за услугу сервиса СБР и Банка - ' . sbr_meta::view_cost($tax_emp, $this->cost_sys);
$sql = "\n UPDATE sbr SET reserved_id = ?i WHERE id = ?i;\n UPDATE account_operations SET comments = '{$comments}' WHERE id = ?i;\n ";
$sql = $this->db()->parse($sql, $reserved_id, $this->id, $reserved_id);
if (!pg_query(self::connect(false), $sql)) {
$this->_abortXact();
return false;
}
if ($this->scheme_type == sbr::SCHEME_AGNT) {
if ($doc_file = $this->generateAgreement($err)) {
$doc = array('file_id' => $doc_file->id, 'status' => sbr::DOCS_STATUS_SIGN, 'access_role' => sbr::DOCS_ACCESS_ALL, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_OFFER, 'subtype' => 2);
$this->addDocR($doc);
}
if (!$err) {
if ($doc_file = $this->generateContract($err)) {
$doc = array('file_id' => $doc_file->id, 'status' => sbr::DOCS_STATUS_SIGN, 'access_role' => sbr::DOCS_ACCESS_ALL, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_OFFER, 'subtype' => 1);
$this->addDocR($doc);
}
}
} elseif ($this->scheme_type == sbr::SCHEME_PDRD || $this->scheme_type == sbr::SCHEME_PDRD2) {
if ($doc_file = $this->genereteBailmentEmp($err)) {
$doc = array('file_id' => $doc_file->id, 'status' => sbr::DOCS_STATUS_SIGN, 'access_role' => sbr::DOCS_ACCESS_EMP, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_OFFER);
$this->addDocR($doc);
}
if (!$err) {
if ($doc_file = $this->genereteBailmentFrl($err)) {
$doc = array('file_id' => $doc_file->id, 'status' => sbr::DOCS_STATUS_SIGN, 'access_role' => sbr::DOCS_ACCESS_FRL, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_OFFER);
$this->addDocR($doc);
}
}
}
if ($err) {
$this->error['fatal'] = $err;
}
if ($this->error) {
$this->_abortXact();
return false;
}
$this->_commitXact();
if ($this->scheme_type == sbr::SCHEME_LC) {
if ($XACT_ID = $this->_openXact(true)) {
$result = sbr_notification::sbr_add_event($XACT_ID, $this->id, $this->stages[0]->id, 'sbr_stages.STARTED_WORK', $this->version, null, null);
if (!$result) {
$this->_abortXact();
}
$this->_commitXact();
}
}
return true;
}
示例4: generateArbReportFrl
/**
* Генерируем отчет арбитража если
* - когда Арбитраж выносит решение о 100% выплате Исполнителю
* - когда Стороны приходят к соглашению о 100% выплате Исполнителю
*
* @param type $error Ошибка
* @param type $rep_num
* @return null|boolean
*/
public function generateArbReportFrl(&$error, &$rep_num)
{
require_once dirname(__FILE__) . '/num_to_word.php';
if (!$this->getArbitrage(false, false)) {
return NULL;
}
if (!($act = $this->getActSums($this->sbr->frl_id))) {
return false;
}
$eper = (1 - $this->arbitrage['frl_percent']) * 100;
$fper = 100 - $eper;
$result = html_entity_decode($this->arbitrage['result'], ENT_QUOTES, 'cp1251');
$init = html_entity_decode($this->arbitrage['init'], ENT_QUOTES, 'cp1251');
$reason = html_entity_decode($this->arbitrage['reason'], ENT_QUOTES, 'cp1251');
$is_frl_arb = strpos($reason, 'Согласно п. 8.5.') !== false;
$is_emp_arb = strpos($reason, 'Согласно п. 8.3.') !== false;
$is_vaan_arb = strpos($init, 'ООО Ваан обратилось в Арбитраж') !== false;
if (strpos($init, 'Исполнитель обратился в Арбитраж') !== false) {
$user_arb = 'Исполнитель';
} elseif (strpos($init, 'Заказчик обратился в Арбитраж') !== false) {
$user_arb = 'Заказчик';
} elseif ($is_vaan_arb) {
$user_arb = 'ООО "Ваан"';
}
if ($fper == 100) {
if (strpos($result, 'Соглашение сторон 100% Возврат Исполнителю') !== false || strpos($result, 'Соглашение сторон 100% Выплата Исполнителю') !== false) {
$template = $_SERVER['DOCUMENT_ROOT'] . '/norisk2/xml/arb_frl_soglashenie.xml';
} elseif (strpos($result, 'Решение арбитража 100% Выплата Исполнителю') !== false) {
$template = $_SERVER['DOCUMENT_ROOT'] . '/norisk2/xml/arb_frl_reshenie.xml';
} elseif (strpos($result, 'Решение арбитража') !== false) {
// ПО ИДЕЕ НЕ МОЖЕТ БЫТЬ ТК ПРИ РЕШЕНИИ 100% исполнителю нужно выбирать пункт 7
$template = $_SERVER['DOCUMENT_ROOT'] . '/norisk2/xml/arb_act_reshenie.xml';
} else {
return null;
}
} else {
if ($fper >= 0) {
if (strpos($result, 'Соглашение сторон') !== false) {
$template = $_SERVER['DOCUMENT_ROOT'] . '/norisk2/xml/arb_act_soglashenie.xml';
} elseif (strpos($result, 'Решение арбитража') !== false) {
$template = $_SERVER['DOCUMENT_ROOT'] . '/norisk2/xml/arb_act_reshenie.xml';
} else {
return null;
}
} else {
return null;
}
}
$error = NULL;
$sbr_num = $this->sbr->getContractStageNum(null, null, $this->num + 1);
$this->sbr->getFrlReqvs();
$this->sbr->getEmpReqvs();
$this->sbr->setCheckEmpReqvs($this->id);
$rep_num = $this->sbr->regArbReportNum();
$efio = sbr_meta::getFioFromReqvs($this->sbr->emp_reqvs);
$ffio = sbr_meta::getFioFromReqvs($this->sbr->frl_reqvs);
if (!$efio) {
$error['emp'] = 'Для формирования Акта об оказании услуги заказчику<br/> необходимо заполнить реквизиты на странице "Финансы"';
}
if ($error) {
return false;
}
$dvals = array('P' => pskb::$exrates_map[$this->sbr->data['ps_frl']]);
foreach ($this->sbr->scheme['taxes'][sbr::FRL] as $tax) {
$tax_frl += sbr_meta::calcAnyTax($tax['tax_id'], $tax['scheme_id'], $this->cost, $dvals);
}
$sum_emp = $this->getPayoutSum(sbr::EMP);
$sum_frl = $this->getPayoutSum(sbr::FRL);
$work_cost = $this->cost - $tax_frl;
$work_time = intval($this->int_work_time) . ending(intval($this->int_work_time), ' день', ' дня', ' дней');
$work_type = count($this->sbr->stages) == 1 ? 'Стоимости Работы' : 'Промежуточной стоимости Работы';
$replace = array('$sbr_num' => $sbr_num, '$date_sbr' => date("d.m.Y", strtotime($this->getFirstTime())), '$efio' => $efio, '$ffio' => $ffio, '$sum_frl' => num2strEx($sum_frl, 'рублей Российской Федерации'), '$sum_emp' => num2strEx($sum_emp, 'рублей Российской Федерации'), '$tz_descr' => $this->descr, '$work_time' => $work_time, '$work_type' => $work_type, '$work_cost' => num2strEx($work_cost, 'рублей Российской Федерации'), '$is_arb_emp' => $is_emp_arb, '$is_arb_frl' => $is_frl_arb, '$is_arb_vaan' => $is_vaan_arb, '$is_not_arb_vaan' => !$is_vaan_arb, '$user_arb' => $user_arb);
$pdf = sbr::xml2pdf($template, $replace);
if (!($file = $this->sbr->_saveDocFile($pdf->Output(NULL, 'S')))) {
$error['fatal'] = "Ошибка при формировании Акта об оказании услуги";
}
return $file;
}
示例5: getReserveSum
/**
* Возвращает сумму резервирования в соотвествии с выставленным бюджетом сделки и текущей схемой налогов.
*
* @param type $force пересчитать
* @param type $ps ид платежной системы (см exrates)
* @return float сумма резервирования.
*/
function getReserveSum($force = false, $ps = null, $round = true)
{
if (!$this->reserve_sum || $force) {
if ($this->cost_sys) {
// @todo #0020738 Правка основана на том что при округлении до 2 сотых по процентам резерва через ЯД не сходятся суммы
// Сделано пока только для аккредитива, необходимо пересмотреть для всех сделок.
if ($this->scheme_type == sbr::SCHEME_LC) {
$round = false;
}
$csum = $this->getTotalCost(false);
$tsum = 0;
foreach ($this->scheme['taxes'][sbr::EMP] as $tax) {
$dvals = array('A' => NULL);
if ($ps) {
$dvals['P'] = $ps;
$tsum += sbr_meta::calcAnyTax($tax['tax_id'], $tax['scheme_id'], $csum, $dvals);
} else {
$tsum += $this->getTotalTax($tax, 1, $dvals, $round);
}
}
$this->reserve_sum = $round ? $csum + $tsum : round($csum + $tsum, 2);
}
}
return $this->reserve_sum;
}
示例6: jsSchemeTaxes
/**
* Возвращает коэффициенты для расчета налогов в виде JS строки.
*
* @param array $schemes
* @param array $frl_reqvs СБР-реквизиты фрилансера
* @param array $emp_reqvs СБР-реквизиты работодателя
* @return string
*/
function jsSchemeTaxes(&$schemes, $frl_reqvs, $emp_reqvs, $usr = sbr::EMP, $psys_default = NULL, $intf = false)
{
$js = '{';
$j = 0;
foreach ($schemes as &$sch) {
if (!$sch['taxes'][$usr]) {
continue;
}
$i = 0;
$js .= ($j++ ? ',' : '') . $sch['type'] . ':{';
$ttper = 0;
foreach ($sch['taxes'][$usr] as $id => $tax) {
$tcost = 100000000.0;
// Получаем коэффициенты для расчета налогов в JS при создании сделки.
$tsum = sbr_meta::calcAnyTax($tax['tax_id'], $tax['scheme_id'], $tcost, array('P' => $psys_default, 'U' => $usr, 'Ff' => $frl_reqvs['form_type'], 'Re' => $emp_reqvs['rez_type'], 'Rf' => $frl_reqvs['rez_type']));
$tper = $tsum / $tcost;
if (!$tper) {
continue;
}
$ttper += $tper;
if ($sch['type'] == sbr::SCHEME_PDRD2) {
$js .= ($i++ ? ',' : '') . "{$id}:[{$tper}," . (double) $tax['percent'] . ']';
} else {
if ($sch['type'] == sbr::SCHEME_LC) {
$tax_percent += $tax['percent'];
$tax_tper += $tper;
$tid = 100;
}
}
}
if ($sch['type'] == sbr::SCHEME_LC && $tid) {
$js .= ($i++ ? ',' : '') . "{$tid}:[{$tax_tper}," . (double) $tax_percent . ']';
}
$ttper += 1;
$sch['taxes'][$usr]['t'] = array('name' => 'Итого к оплате', 'percent' => 0);
$js .= ($i++ ? ',' : '') . "t:[{$ttper},0]";
$js .= '}';
}
return $js . '}';
}