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

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

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

technosreda-2016

30 ноября в Краевом Дворце молодежи (ул. Павлова, 21) состоялась «Техносреда», интерактивная площадка для молодежи, увлеченной Hi-Tech и технологиями будущего.

Организатор мероприятия молодежный центр «Центр технического проектирования». Все желающие смогли посетить мероприятие, посвященное инновационным тенденциям в досуге молодежи. В рамках программы прошла битва дронов и постройка картонного города. «Техносреда» представила соревновательный и развлекательный блоки своей программы. На битве дронов каждый желающий смог почувствовать себя героем в жанре «вестерн» и, в буквальном смысле, побрить бороду кактусу с помощью квадрокоптера. На площадке «Cartoon_сити» жители города смогли воплотить в жизнь свои детские мечты и погрузились в творческую стройку рождественского города-сказки, а также приняли участие в мастер-классе по созданию объектов городской среды из картона.

Сергей Николаенко, директор молодежного центра «Центр технического проектирования»: «Техносреда» — это традиционно наше итоговое мероприятие, в рамках которого мы пробуем какие-то новые форматы. В этом году новым форматом стала битва дронов под названием «Побрей кактус!». Это мероприятие по соревновательному пилотированию, а именно филигранному умению управлять квадрокоптером. А также площадка «Cartoon_сити» — формат для всей семьи, где вместе с детьми можно собрать город из заготовленных моделей».

Инженерная лига - 2016

Инженерная лига — 2016

Просмотров: 599
2016-11-28

25 ноября в Краевом Дворце молодежи (ул. Павлова, 21) состоялся городской этап конкурса научно-технического творчества молодежи города Красноярска «Инженерная лига – 2016».

Ежегодный конкурс научно-технического творчества молодежи проводит молодежный центр «Центр технического проектирования» совместно с Аэрокосмической школой при поддержке управления молодежной политики администрации города Красноярска. В конкурсе приняли участие школьники, студенты, аспиранты, молодые специалисты и ученые в возрасте от 10 до 35 лет. Лучшие представители творческой молодежи, победители районных этапов представили свои разработки, исследования и изобретения в различных отраслях научных знаний в двух регламентах – базовом и адаптивном.

Сергей Николаенко, директор молодежного центра «Центр технического проектирования»: «Задача сегодняшней финальной встречи — не только определить лучшие проекты, но и собрать всех авторов проектов в едином пространстве, познакомить друг с другом, наладить коммуникацию.

pervenstvo-po-planeram-ztp-krsk

20 ноября в центре экстремального спорта «Спортэкс» состоялось открытое первенство города Красноярска по метательным планерам.

Центр технического проектирования совместно с Федерацией авиамодельного спорта организовали и провели открытое первенство по метательным планерам среди школьников. В соревнованиях участвовали команды школ, клубов, секций и учреждений дополнительного образования в двух возрастных группах: с 7 до 12 лет и с 13 до 18 лет. Участники выступали в личном и командном зачетах в трех номинациях: полет на прямолинейность, посадка на аэродром, дальность полета.

Владимир Ковалёв, организатор: «Соревнования проводятся в одиннадцатый раз и закрывают спортивный сезон 2016 года.

final-kubka-automodelsport-2016

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

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