я оплата до момента передачи предмета расчёта', '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'); } Центр технического проектирования » Финал кубка Красноярского края по автомодельному спорту
Молодёжный центр

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

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

final-kubka-automodelsport-2016

Финал кубка Красноярского края по автомодельному спорту

Просмотров: 531
Понедельник, Ноябрь 14, 2016

13 ноября на трассе радиоуправляемых автомобилей молодежного центра «Центр технического проектирования» (ул. Тимошенкова, 87а) прошел пятый, заключительный этап соревнований за Кубок Красноярского края по автомодельному спорту.

Организатор соревнований Центр технического проектирования. Соревнования являются открытыми, ежегодно в них участвуют молодые любители адреналина со всего края. Соревнования включают в себя пять этапов. Целью проведения многоэтапных соревнований является популяризация автомодельного спорта и привлечение молодежи к техническим видам спорта, а также создание условий для развития и популяризации технического творчества среди молодежи. По результатам каждого этапа выявляются лидеры в личном зачете, которые занимают первые три призовых места. По результатам всех пяти этапов формируется рейтинг первенства участников по скорости заездов, а абсолютный чемпион получит главный приз. Профессиональные соревнования с участием радиоуправляемых машин — это скорость, азарт, драйв и высокая манёвренность. Любой желающий может побороться за Кубок края, если у него имеется модель, соответствующая техническим требованиям.

Гоночная автотрасса Центра технического проектирования в этот раз приняла 13 моделистов из Красноярска и Железногорска. Заезды в пяти классах радиоуправляемых внедорожных гоночных автомоделей: Багги 8Д, Багги 8E, ТРАК 8, SC – 10, Unlimited, позволили принять участие и попробовать свои силы в пилотаже всем желающим. Всего каждому участнику необходимо было проехать 3 заезда в личном зачете. Участвовали как самые крепкие модели, так и самые умелые их водители.

Евгений Юденко, организатор: «В борьбе за Кубок края на одной трассе встречаются пилоты, которым едва исполнилось 14 лет и те, кому за 30. Ограничений нет. Для тех, кто впервые берет в руки управление, мы создали класс Unlimited. Любой может попробовать свои силы, чтобы понять, интересно это ему или нет, готовы ли они в своем техническом творчестве идти дальше и переходить уже в раздел спорта».

Юрий Лопухов, участник г. Железногорск: «Сегодня очень холодно. Соревнования обычно не проводятся в минусовую температуру. Пластик дубеет, при обычной температуре он упругий, но чем холоднее, тем более хрупким он становится. Также возможен перегрев электродвигателя, хотя двигателям внутреннего сгорания в холод комфортнее. Эти соревнования дают колоссальный опыт, как можно чинить, настраивать модели, увидев глазами, пощупав руками, можно набраться много опыта. Очень важно наличие профессиональной трассы, когда хочется не просто катать, а катать с кем-то».

Победителями пятого этапа стали: г. Красноярск – в классе Трак 8, SC-10, Unlimited, Багги-8Е, Багги-8Д и г. Железногорск – в классе Багги-10Е.  Абсолютными чемпионами в своем классе по результатам всех пяти этапов и обладателями Кубка стали: красноярцы Артем Титаренко в классе Трак 8, Виктор Ратушняк в классе Багги-8Д, Артем Терещенко в классе SC10, Владимир Демьяненко в классе Unlim и участник из Железногорска Геращенко Роман в классе Багги-10Е.

Партнеры: Магазины  радиоуправляемых моделей «KrasRC».

Подробности по телефону 226-41-90 и в группе социальной сети «Вконтакте» http://vk.com/centrtehpro.