Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
6.7 kB
1
Indexable
Never
<?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";