я оплата до момента передачи предмета расчёта', 'woocommerce'), '3' => __('Аванс', 'woocommerce'), '4' => __('Полная оплата в момент передачи предмета расчёта', 'woocommerce'), '5' => __('Частичная оплата предмета расчёта в момент его передачи с последующей оплатой в кредит', 'woocommerce'), '6' => __('Передача предмета расчёта без его оплаты в момент его передачи с последующей оплатой в кредит', 'woocommerce'), '7' => __('Оплата предмета расчёта после его передачи с оплатой в кредит', 'woocommerce'), ), 'description' => __('Используется в версих ФФД, начиная с 1.05', 'woocommerce'), ), 'ffd_paymentObjectType' => array( 'title' => __('Тип оплачиваемой позиции', 'woocommerce'), 'type' => 'select', 'default' => '1', 'options' => array( '1' => __('Товар', 'woocommerce'), '2' => __('Подакцизный товар', 'woocommerce'), '3' => __('Работа', 'woocommerce'), '4' => __('Услуга', 'woocommerce'), '5' => __('Ставка азартной игры', 'woocommerce'), // '6' => __('Выигрыш азартной игры', 'woocommerce'), '7' => __('Лотерейный билет', 'woocommerce'), // '8' => __('Выигрыш лотереи', 'woocommerce'), '9' => __('Предоставление РИД', 'woocommerce'), '10' => __('Платёж', 'woocommerce'), '11' => __('Агентское вознаграждение', 'woocommerce'), '12' => __('Составной предмет расчёта', 'woocommerce'), '13' => __('Иной предмет расчёта', 'woocommerce'), ), 'description' => __('Используется в версих ФФД, начиная с 1.05', 'woocommerce'), ), ); } function get_product_price_with_discount($price, $type, $c_amount, &$order_data) { switch ($type) { case 'percent': $new_price = ceil($price * (1 - $c_amount / 100)); // remove this discount from discount_total $order_data['discount_total'] -= ($price - $new_price); break; // case 'fixed_cart': // //wrong // $new_price = $price; // break; case 'fixed_product': $new_price = $price - $c_amount; // remove this discount from discount_total $order_data['discount_total'] -= $c_amount / 100; break; default: $new_price = $price; } return $new_price; } /* * Generate the dibs button link */ public function generate_form($order_id) { $order = new WC_Order($order_id); $amount = $order->order_total * 100; // COUPONS $coupons = array(); global $woocommerce; if (!empty($woocommerce->cart->applied_coupons)) { foreach ($woocommerce->cart->applied_coupons as $code) { $coupons[] = new WC_Coupon($code); } }; if ($this->test_mode == 'yes') { $action_adr = RBS_TEST_URL; } else { $action_adr = RBS_PROD_URL; } $extra_url_param = ''; if ($this->stage_mode == 'two-stage') { $action_adr .= 'registerPreAuth.do'; } else if ($this->stage_mode == 'one-stage') { $extra_url_param = '&wc-callb=callback_function'; $action_adr .= 'register.do'; } $order_data = $order->get_data(); $language = substr(get_bloginfo("language"), 0, 2); if ($language == 'uk') { $language = 'ua'; } // prepare args array $args = array( 'userName' => $this->merchant, 'password' => $this->password, 'amount' => $amount, 'language' => $language, 'returnUrl' => get_option('siteurl') . '?wc-api=WC_RBSPAYMENT&rbspayment=result&order_id=' . $order_id . $extra_url_param, // 'currency' => CURRENCY_CODE, 'jsonParams' => json_encode( array( 'CMS:' => 'Wordpress ' . get_bloginfo('version') . " + woocommerce version: " . wpbo_get_woo_version_number(), 'Module-Version: ' => $this->pData['Version'], // 'Name' => $order_data['billing']['first_name'], // 'Famil' => $order_data['billing']['last_name'] ) ), ); if ($this->send_order == 'yes') { $args['taxSystem'] = $this->tax_system; $order_items = $order->get_items(); $order_timestamp_created = $order_data['date_created']->getTimestamp(); $order_billing_email = $order_data['billing']['email']; $items = array(); $itemsCnt = 1; /* Заполнение массива данных корзины */ foreach ($order_items as $value) { $item = array(); $tax = new WC_Tax(); $product_variation_id = $value['variation_id']; if ($product_variation_id) { $product = new WC_Product_Variation($value['variation_id']); $item_code = $value['variation_id']; } else { $product = new WC_Product($value['product_id']); $item_code = $value['product_id']; } $base_tax_rates = $tax->get_base_tax_rates($product->get_tax_class(true)); if (!empty($base_tax_rates)) { $rates = array_shift($tax->get_rates($product->get_tax_class())); $item_rate = round(array_shift($rates)); if ($item_rate == 20) { $tax_type = 6; } else if ($item_rate == 18) { $tax_type = 3; } else if ($item_rate == 10) { $tax_type = 2; } else if ($item_rate == 0) { $tax_type = 1; } else { $tax_type = 0; } } else { $tax_type = $this->tax_type; } $product_price = round(($product->get_price()) * 100); if ($product->get_type() == 'variation') { //TODO } // if discount (coupon etc) // see DISCOUNT SECTION // foreach ($coupons as $coupon) { // $coupon_amount = $coupon->get_amount() * 100; // $product_price = $this->get_product_price_with_discount($product_price, $coupon->get_discount_type(), $coupon_amount, $order_data ); // } $item['positionId'] = $itemsCnt++; $item['name'] = $value['name']; $item['quantity'] = array( 'value' => $value['quantity'], 'measure' => $this->mesurement_name ); $item['itemAmount'] = $product_price * $value['quantity']; $item['itemCode'] = $item_code; $item['tax'] = array( 'taxType' => $tax_type ); $item['itemPrice'] = $product_price; // FFD 1.05 added if ($this->ffd_version == 'v105') { $attributes = array(); $attributes[] = array( "name" => "paymentMethod", "value" => $this->ffd_paymentMethodType ); $attributes[] = array( "name" => "paymentObject", "value" => $this->ffd_paymentObjectType ); $item['itemAttributes']['attributes'] = $attributes; } $items[] = $item; } // DISCOUNT if (!empty($order_data['discount_total'])) { $discount = ($order_data['discount_total'] + $order_data['discount_tax']) * 100; $new_order_total = 0; // coze delivery will be another position $delivery_sum = ($order->shipping_total > 0) ? $order->shipping_total * 100 : 0; foreach ($items as &$i) { $p_discount = intval(round(($i['itemAmount'] / ($amount - $delivery_sum + $discount)) * $discount, 2)); $this->correctBundleItem($i, $p_discount); $new_order_total += $i['itemAmount']; } // reset order amount // return delivery_sum into amount $args['amount'] = $new_order_total + $delivery_sum; } // DELIVERY POSITION if ($order->shipping_total > 0) { $itemShipment['positionId'] = $itemsCnt; $itemShipment['name'] = 'Доставка'; $itemShipment['quantity'] = array( 'value' => 1, 'measure' => $this->mesurement_name ); $itemShipment['itemAmount'] = $itemShipment['itemPrice'] = $order->shipping_total * 100; $itemShipment['itemCode'] = 'Delivery'; $itemShipment['tax'] = array( 'taxType' => $this->tax_type ); // FFD 1.05 added if ($this->ffd_version == 'v105') { $attributes = array(); $attributes[] = array( "name" => "paymentMethod", "value" => 4 ); $attributes[] = array( "name" => "paymentObject", "value" => 4 ); $itemShipment['itemAttributes']['attributes'] = $attributes; } $items[] = $itemShipment; } /* Создание и заполнение массива данных заказа для фискализации */ $order_bundle = array( 'orderCreationDate' => $order_timestamp_created, 'customerDetails' => array( 'email' => $order_billing_email ), 'cartItems' => array('items' => $items) ); /* Заполнение массива данных для запроса c фискализацией */ $args['orderBundle'] = json_encode($order_bundle); } for ($i = 0; $i++ < 30;) { $args['orderNumber'] = $order_id . '_' . $i; $rbsCurl = curl_init(); curl_setopt_array($rbsCurl, array( CURLOPT_HTTPHEADER => array( 'CMS: Wordpress ' . get_bloginfo('version') . " + woocommerce version: " . wpbo_get_woo_version_number(), 'Module-Version: ' . $this->pData['Version'], ), CURLOPT_URL => $action_adr, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($args, '', '&') )); $response = curl_exec($rbsCurl); curl_close($rbsCurl); if (LOGGING) { $this->rbs_logger('Request: ' . $action_adr . ': ' . print_r($args, true) . 'Response: ' . $response, true); } $response = json_decode($response, true); if ($response['errorCode'] != '1') break; } $errorCode = $response['errorCode']; if ($errorCode == 0) { wp_redirect($response['formUrl']); //EI: if is error in the headers (already send) echo '

'.__('Оплатить', 'woocommerce').'

'; exit; } else { return '

' . __('Ошибка #' . $errorCode . ': ' . $response['errorMessage'], 'woocommerce') . '

' . '' . __('Отказаться от оплаты и вернуться в корзину', 'woocommerce') . ''; } } function correctBundleItem(&$item, $discount) { $item['itemAmount'] -= $discount; $item['itemPrice'] = $item['itemAmount'] % $item['quantity']['value']; if ($item['itemPrice'] != 0) { $item['itemAmount'] += $item['quantity']['value'] - $item['itemPrice']; }; $item['itemPrice'] = $item['itemAmount'] / $item['quantity']['value']; } /* * Process the payment and return the result */ function process_payment($order_id) { $order = new WC_Order($order_id); return array( 'result' => 'success', 'redirect' => add_query_arg('order', $order->id, add_query_arg('key', $order->order_key, get_permalink(wc_get_page_id('pay')))) ); } /* * Receipt page */ function receipt_page($order) { echo $this->generate_form($order); } function rbs_logger($var, $info = false) { $information = ""; if ($var) { if ($info) { $information = "\n\n"; $information .= str_repeat("-=", 64); $information .= "\nDate: " . date('Y-m-d H:i:s'); $information .= "\nWordpress version " . get_bloginfo('version') . "; Woocommerce version: " . wpbo_get_woo_version_number() . "\n"; } $result = $var; if (is_array($var) || is_object($var)) { $result = "\n" . print_r($var, true); } $result .= "\n\n"; $path = dirname(__FILE__) . '/rbspayment.log'; error_log($information . $result, 3, $path); return true; } return false; } } function add_rbspayment_gateway($methods) { $methods[] = 'WC_RBSPAYMENT'; return $methods; } if (!function_exists('wpbo_get_woo_version_number')) { function wpbo_get_woo_version_number() { // If get_plugins() isn't available, require it if (!function_exists('get_plugins')) require_once(ABSPATH . 'wp-admin/includes/plugin.php'); // Create the plugins folder and file variables $plugin_folder = get_plugins('/' . 'woocommerce'); $plugin_file = 'woocommerce.php'; // If the plugin version number is set, return it if (isset($plugin_folder[$plugin_file]['Version'])) { return $plugin_folder[$plugin_file]['Version']; } else { // Otherwise return null return NULL; } } } add_filter('woocommerce_payment_gateways', 'add_rbspayment_gateway'); } Центр технического проектирования » Соревнования по автомодельному спорту состоялись!
Молодёжный центр

"Центр технического проектирования"

Последние события

automodel-sport-ztp-krsk-1

Соревнования по автомодельному спорту состоялись!

Просмотров: 448
Вторник, Октябрь 11, 2016

9 октября на трассе радиоуправляемых автомобилей Центра технического проектирования (ул. Тимошенкова, 87 «А») прошел четвертый этап соревнований за Кубок Красноярского края по автомодельному спорту.
Организаторы соревнований Центр технического проектирования совместно с Федерацией автомодельного спорта Красноярского края. Соревнования являются открытыми, ежегодно в них участвуют молодые автомоделисты со всего края. Соревнования включают в себя пять этапов. Целью проведения многоэтапных соревнований является популяризация автомодельного спорта и привлечение молодежи к техническим видам спорта, а также создание условий для развития технического творчества среди молодежи. По результатам каждого этапа выявляются лидеры в личном зачете, которые занимают первые три призовых места. По результатам всех пяти этапов формируется рейтинг первенства участников по скорости заездов, а абсолютный чемпион получит главный приз.
Гоночная автотрасса Центра технического проектирования в этот раз приняла 25 моделистов из Красноярска, Железногорска и Братска. Заезды в шести классах радиоуправляемых внедорожных гоночных автомоделей: Багги 8Д, Багги 8E, Багги 10Е, Трагги 8, SC10, Unlim, позволили принять участие и попробовать свои силы в пилотаже всем желающим. Каждому участнику необходимо было проехать 3 заезда в личном зачете.
Константин Желтов, организатор, председатель Федерации автомодельного спорта: «Соревнования проводились по шести классам моделей, а их итоги шли, в зачет четвертого этапа Кубка Красноярского края. Гоночная трасса для данных соревнований была несколько доработана, оснащена трамплином и другими элементами. В крае оборудовано всего две трассы для заездов на радиоуправляемых авто. В соревнованиях смогли показать свое мастерство любители техники без ограничений по возрасту и полу, всего трассу штурмовали более тридцати радиоуправляемых автомоделей. В числе пилотов кроме красноярцев выступили и гости из Железногорска и Братска».
Кирилл Демьяненко, участник, г. Красноярск: «Несмотря на то, что это заезды предпоследнего этапа, гонки очень напряженные и адреналин просто зашкаливает. Всегда есть шанс вырваться вперед, этим мне и нравятся эти соревнования. Некоторые участники провели уже достаточно большое время в гонках и, думаю, что у многих выработалась какая-то стратегия прохождения трассы. Думаю, у меня есть все шансы на победу, а если не получится, то будет еще пятый этап и возможность выиграть гонки в другой раз».
Следующий и заключительный этап Кубка пройдет в ноябре на единственной в городе трассе радиоуправляемых автомобилей Центра технического проектирования, в каждом из этапов, как и в Формуле-1, участники должны набирать баллы, их количество и определит звание абсолютного чемпиона в личном зачете и обладателя Кубка. По итогам четвертого заезда первое место в классах SC10, Багги 8Е, Трагги 8 и Unlim заняли красноярцы, в классах Багги 10Е и Багги 8Д г. Железногорск, гости из Братска заняли призовое второе место в классе Unlim.
Партнеры: Магазины радиоуправляемых моделей «KrasRC».
Подробности по телефону 226-41-90 и в социальной сети «Вконтакте» http://vk.com/centrtehpro.