Untitled
unknown
plain_text
4 years ago
6.7 kB
7
Indexable
<?php
include __DIR__.'/include.php';
$boxArray = array();
// получаем все активные боксы
$paramArray = array();
$paramArray['workflowid'] = 672; // обачные
$paramArray['statusid'] = 4145; // в статусе Активен
$paramArray['count'] = 10000; // до 10к штук
$data = _boxRequest('/api/orders/get/', $paramArray);
foreach ($data['orders'] as $order) {
//print_r($order);
//print_r($order);
$tariff = false;
$userCount = 0;
foreach ($order['customfields'] as $x) {
if ($x['key'] == 'tarifihetzner341') {
$tariff = $x['value'];
}
if ($x['key'] == 'oneboxamountlicense') {
$userCount = $x['value'];
}
}
/*if (!$tariff) {
continue;
}*/
/*if (substr_count($tariff, 'бесплатно')) {
continue;
}*/
// по каждому боксу надо посчитать:
// дату окончания (только дату)
// день окончания (округлить до 28)
// сумму по тарифу (пока можно x25)
$edate = $order['dateplan'];
// формируем массив дат на 24 мес вперед
$dayArray = array();
//$monthArray = array();
if ($edate > '2000-01-01') {
for ($j = 0; $j <= 12; $j++) {
$dayArray[] = DateTime_Object::FromString($edate)->addMonth(+$j)->setFormat('Y-m-d').'';
}
}
if (!$order['products']) {
continue;
}
$tariffAmount = 0;
foreach ($order['products'] as $op) {
if ($op['productcurrency'] == 'UAH') {
$tariffAmount += $op['productpricewithvat'] / 28;
} elseif ($op['productcurrency'] == 'RUB') {
$tariffAmount += $op['productpricewithvat'] / 74;
} elseif ($op['productcurrency'] == 'USD') {
$tariffAmount += $op['productpricewithvat'];
} else {
print_r($op);
}
}
$tariffAmount = round($tariffAmount);
$boxArray[$order['orderid']] = array(
'name' => $order['ordername'],
'dateto' => $edate,
'dayArray' => $dayArray,
//'monthArray' => $monthArray,
//'tariffAmount' => 25 * $userCount,
'tariffAmount' => $tariffAmount,
'userCount' => $userCount,
);
}
//print_r($boxArray); exit;
//var_dump(count($boxArray)); exit;
/**
* Общий алгоритм нарезки платежей выглядит так:
* 1. находим все открытые ОП по этому боксу
* 2. косим их нахер
* 3. нарезаем новые ОП в нужных категориях
*/
// нарезаем ОП на все даты
foreach ($boxArray as $orderID => $x) {
$tariffAmount = @$x['tariffAmount'];
if (!$tariffAmount) {
continue;
}
print_r($x);
// находим все ОП по этому ордеру
$paramArray = array();
$paramArray['pdatefrom'] = DateTime_Object::Now()->addDay(-5).'';;
$paramArray['pdateto'] = DateTime_Object::Now()->addYear(+5).'';
$paramArray['orderid'] = $orderID;
$opArray = _boxRequest('/api/payment/probation/get/', $paramArray);
//print_r($data); exit;
foreach ($opArray['payments'] as $p) {
if ($p['received']) {
continue;
}
if ($p['direction'] != 'fromclient') {
continue;
}
//print_r($p);
// косим нафиг платеж
$deleteResult = _boxRequest('/api/payment/probation/delete/', array('nomessage' => 1, 'paymentid' => $p['id']));
print_r($deleteResult);
}
// создаем новые ОП
foreach ($x['dayArray'] as $dx) {
$paramArray = array();
$paramArray['cdate'] = $dx;
$paramArray['pdate'] = $dx;
$paramArray['orderid'] = $orderID;
$paramArray['amount'] = $tariffAmount;
$paramArray['currencyid'] = 2; // USD
$paramArray['accountid'] = 23; // ТОВ ВЕБПРОДАКШН грн
$paramArray['categoryid'] = 105; // cloud
$paramArray['nomessage'] = 1;
$resultAdd = _boxRequest('/api/payment/probation/add/', $paramArray);
print_r($resultAdd);
//exit;
}
}
/**
* БЛОК 2
* КОСИМ ВСЕ ОП ПО УДАЛЕННЫМ БОКСАМ
* (по всем облачным боксам которые не в состоянии активен - косим ОП)
*/
$boxArray = array();
// получаем все активные боксы
$paramArray = array();
$paramArray['workflowid'] = 672;
$paramArray['statusid'] = 4149; // deleted
$paramArray['count'] = 10000;
$data = _boxRequest('/api/orders/get/', $paramArray);
foreach ($data['orders'] as $order) {
$tariff = false;
$userCount = 0;
foreach ($order['customfields'] as $x) {
if ($x['key'] == 'tarifihetzner341') {
$tariff = $x['value'];
}
if ($x['key'] == 'oneboxamountlicense') {
$userCount = $x['value'];
}
}
if (!$order['products']) {
continue;
}
$tariffAmount = 0;
foreach ($order['products'] as $op) {
if ($op['productcurrency'] == 'UAH') {
$tariffAmount += $op['productpricewithvat'] / 28;
} elseif ($op['productcurrency'] == 'RUB') {
$tariffAmount += $op['productpricewithvat'] / 74;
} elseif ($op['productcurrency'] == 'USD') {
$tariffAmount += $op['productpricewithvat'];
} else {
print_r($op);
}
}
$tariffAmount = round($tariffAmount);
if ($tariffAmount <= 0) {
continue;
}
$boxArray[$order['orderid']] = array(
'name' => $order['ordername']
);
}
//print_r($boxArray); exit;
// косим ОП по этим боксам
foreach ($boxArray as $orderID => $x) {
print_r($x);
// находим все ОП по этому ордеру
$paramArray = array();
$paramArray['pdatefrom'] = DateTime_Object::Now()->addDay(-5).'';;
$paramArray['pdateto'] = DateTime_Object::Now()->addYear(+5).'';
$paramArray['orderid'] = $orderID;
$paramArray['nomessage'] = 1;
$opArray = _boxRequest('/api/payment/probation/get/', $paramArray);
foreach ($opArray['payments'] as $p) {
if ($p['received']) {
continue;
}
if ($p['direction'] != 'fromclient') {
continue;
}
//print_r($p);
// косим нафиг платеж
$deleteResult = _boxRequest('/api/payment/probation/delete/', array('paymentid' => $p['id']));
print_r($deleteResult);
}
}
print "\n\ndone.\n\n";Editor is loading...