$address = explode('|', $spsr_invoice['sbor_addr']); $sboraddr_id = $address[0]; $sboraddr_owner_id = $address[1]; $addr_list = RusSpsr::WAGetAddrList(8); foreach ($addr_list as $addr) { if ($addr['SborAddr_ID'] == $sboraddr_id && $addr['SborAddr_Owner_ID'] == $sboraddr_owner_id) { $sipper_data = $addr; } } if (empty($sipper_data)) { return array(CONTROLLER_STATUS_REDIRECT, "spsr_addr.manage"); } $_sipper_data = RusSpsr::WAGetCities(array('city' => $sipper_data['CityName1'])); $shipper_for_xml = array('PostCode' => $sipper_data['PostCode'], 'Region' => $_sipper_data['RegionName'], 'City' => $sipper_data['CityName1'], 'Address' => $sipper_data['Address'], 'CompanyName' => $sipper_data['Organization'], 'ContactName' => $sipper_data['FIO'], 'Phone' => $sipper_data['Phone']); $shipper_xml = RusSpsr::arraySimpleXml('Shipper', $shipper_for_xml); $city_data = RusSpsr::WAGetCities(array('city' => $order_info['s_city'], 'country' => $order_info['s_country'])); $country_name = fn_get_country_name($order_info['s_country'], 'ru'); foreach ($invoices as $invoice_key => $invoice) { if (isset($spsr_invoice['barcodes'][$invoice_key]) && !empty($spsr_invoice['barcodes'][$invoice_key])) { $total_weight += $invoice['weight']; $shipment_id = $invoice['shipment']['shipment_id']; $service_params = $invoice['service_params']; $additional_params = $service_params['service_params']; $settings_shipping_spsr = $params['settings_shipping_spsr'][$invoice_key]; $receiver_for_xml = array('PostCode' => $order_info['s_zipcode'], 'Country' => $country_name, 'Region' => $city_data['RegionName'], 'City' => $city_data['CityName'], 'Address' => $order_info['s_address'], 'CompanyName' => $order_info['company'], 'ContactName' => $order_info['s_firstname'] . ' ' . $order_info['s_lastname'], 'Phone' => $order_info['s_phone'], 'Comment' => $invoice['shipment']['comments'], 'Email' => $order_info['email'], 'ConsigneeCollect' => $settings_shipping_spsr['to_be_called_for']); $receiver_xml = RusSpsr::arraySimpleXml('Receiver', $receiver_for_xml); $additional_services_for_xml = array('COD' => $settings_shipping_spsr['cod'], 'PartDelivery' => $additional_params['part_delivery'], 'CheckContents' => $additional_params['check_contents'], 'Verify' => $additional_params['verify'], 'ReturnDoc' => $settings_shipping_spsr['return_doc'], 'TryOn' => $settings_shipping_spsr['try_on'], 'ByHand' => $settings_shipping_spsr['by_hand'], 'PaidByReceiver' => $additional_params['paid_by_receiver'], 'AgreedDelivery' => $settings_shipping_spsr['agreed_delivery'], 'IDC' => $settings_shipping_spsr['idc']); $additional_services_xml = RusSpsr::arraySimpleXml('AdditionalServices', $additional_services_for_xml); if ($settings_shipping_spsr['sms_to_shipper'] == 1 && !empty($sipper_data['Phone'])) { $sms_for_xml['SMStoShipper'] = $settings_shipping_spsr['sms_to_shipper']; $sms_for_xml['SMSNumberShipper'] = trim($sipper_data['Phone']);
/** * Prepare request information * * @return array Prepared data */ public function getRequestData() { $data = array(); $login = RusSpsr::WALogin(); if ($login) { $weight_data = fn_expand_weight($this->_shipping_info['package_info']['W']); $shipping_settings = $this->_shipping_info['service_params']; $location = !empty($this->_shipping_info['package_info']['location']) ? $this->_shipping_info['package_info']['location'] : ''; $packages = !empty($this->_shipping_info['package_info']['packages']) ? $this->_shipping_info['package_info']['packages'] : array(); $code = $this->_shipping_info['service_code']; $ruble = Registry::get('currencies.RUB'); if (!empty($shipping_settings)) { $from_city = ""; $to_city = ""; $nature = $shipping_settings['default_product_type']; if (!empty($_SESSION['cart'])) { $cart = $_SESSION['cart']; $products = $uniq_types = array(); foreach ($packages as $package) { foreach ($package['products'] as $key => $product) { $products[$key] = $cart['products'][$key]['spsr_product_type']; $uniq_types[] = $cart['products'][$key]['spsr_product_type']; } } $uniq_types = array_unique($uniq_types); if (count($uniq_types) == 1) { $nature = $uniq_types[0]; } elseif (count($uniq_types) > 1) { if (array_search(18, $uniq_types)) { $amount_check = 1; $nature = 18; } } } if (!empty($shipping_settings['from_city_id'])) { $from_city = $shipping_settings['from_city_id'] . '|' . $shipping_settings['from_city_owner_id']; } else { $this->_internalError(__("shipping.spsr.not_setting_city")); } if (isset($shipping_settings['insurance_type']) && !empty($shipping_settings['insurance_type'])) { if ($shipping_settings['insurance_type'] == "INS") { $amount_check = 1; } elseif ($shipping_settings['insurance_type'] == "VAL") { $amount_check = 0; } } $city = RusSpsr::WAGetCities($location); if (!empty($city)) { $to_city = $city['City_ID'] . '|' . $city['City_owner_ID']; } else { $this->_internalError(RusSpsr::$last_error); } $weight = $weight_data['plain']; $amount = $this->_shipping_info['package_info']['C']; $sid = RusSpsr::$sid; $data = array('ToCity' => $to_city, 'FromCity' => $from_city, 'Weight' => $weight, 'Nature' => $nature, 'Amount' => $amount, 'AmountCheck' => $amount_check, 'SMS' => $shipping_settings['sms_to_shipper'], 'SMS_Recv' => $shipping_settings['sms_to_receiver'], 'PlatType' => $shipping_settings['plat_type'], 'DuesOrder' => $shipping_settings['dues_order'], 'ToBeCalledFor' => $shipping_settings['to_be_called_for'], 'ByHand' => $shipping_settings['by_hand'], 'icd' => $shipping_settings['idc'], 'SID' => $sid); } } else { fn_set_notification('E', __('notice'), RusSpsr::$last_error); } $url = 'http://www.cpcr.ru/cgi-bin/postxml.pl?TARIFFCOMPUTE_2'; $request_data = array('method' => 'post', 'url' => $url, 'data' => $data); return $request_data; }
$params = $_REQUEST; if ($mode == 'm_delete') { if (!empty($params['addr_ids'])) { foreach ($_REQUEST['addr_ids'] as $a) { $a = explode('||', $a); $id = $a[0]; $owner_id = $a[1]; fn_spsr_delete_addr($id, $owner_id); } } $suffix = ".manage"; } elseif ($mode == 'update') { if (!empty($params['create_address'])) { RusSpsr::WALogin(); $address = $params['create_address']; $city_data = RusSpsr::WAGetCities(array('city' => $address['city_name'])); $address['city_id'] = $city_data['City_ID']; $address['city_owner_id'] = $city_data['City_owner_ID']; $result = RusSpsr::WAAddAddress($address, 8); if ($result) { fn_set_notification('N', __('notice'), __('shippings.spsr.address_add')); if (!empty(RusSpsr::$last_error)) { fn_set_notification('N', __('notice'), RusSpsr::$last_error); } } else { fn_set_notification('E', __('notice'), __('shippings.spsr.not_address_add') . ' : ' . RusSpsr::$last_error); } RusSpsr::WALogout(); $suffix = ".manage"; } } elseif ($mode == 'delete') {
} } $suffix = ".manage"; } elseif ($mode == 'update') { $params = $_REQUEST['spsr_courier']; if (!empty($params)) { RusSpsr::WALogin(); $date = date('Y-m-d', fn_parse_date($params['necesserydate'])) . 'T00:00:00.000'; $service = $params['service']; $placescount = 1; $address = explode('||', $params['sbor_addr']); $sboraddr_id = $address[0]; $sboraddr_owner_id = $address[1]; $fio = $address[2]; $city = $address[3]; $receiver_city = RusSpsr::WAGetCities(array('city' => $city)); $data = array('date' => $date, 'time' => $params['necesserytime'], 'receiver_city_id' => $receiver_city['City_ID'], 'receiver_city_owner_id' => $receiver_city['City_owner_ID'], 'mode' => $service, 'fio' => $fio, 'sboraddr_id' => $sboraddr_id, 'sboraddr_owner_id' => $sboraddr_owner_id, 'order_type' => 0, 'placescount' => $params['placescount'], 'weight' => $params['weight'], 'length' => $params['length'], 'width' => $params['width'], 'depth' => $params['depth'], 'description' => $params['description']); $order_id = RusSpsr::WACreateOrder($data); if (!empty($order_id)) { fn_set_notification('N', __('notice'), __('shippings.spsr.order_add') . ' : ' . $order_id); } else { fn_set_notification('E', __('notice'), __('shippings.spsr.not_order_add') . ' : ' . RusSpsr::$last_error); } RusSpsr::WALogout(); $suffix = ".manage"; } } elseif ($mode == 'delete') { if (!empty($_REQUEST['courier_id']) && !empty($_REQUEST['courier_owner_id'])) { fn_spsr_delete_courier($_REQUEST['courier_id'], $_REQUEST['courier_owner_id']); } $suffix = ".manage";
if ($login) { $type_products = RusSpsr::WAGetEncloseType(); if ($_REQUEST['module'] == 'spsr') { $location['country'] = Registry::get('settings.General.default_country'); $location['city'] = Registry::get('settings.General.default_city'); $data = RusSpsr::WAGetCities($location); Tygh::$app['view']->assign('from_city_id', $data['City_ID']); Tygh::$app['view']->assign('from_city_owner_id', $data['City_owner_ID']); Tygh::$app['view']->assign('city', $location['city']); } RusSpsr::WALogout(); Tygh::$app['view']->assign('type_products', $type_products); } else { fn_set_notification('E', __('notice'), RusSpsr::$last_error); } } } if ($mode == 'spsr_get_city_data') { $params = $_REQUEST; if (defined('AJAX_REQUEST')) { $location['country'] = Registry::get('settings.General.default_country'); $location['city'] = $params['var_city']; RusSpsr::WALogin(); $data = RusSpsr::WAGetCities($location); RusSpsr::WALogout(); $city_data = array('from_city_id' => $data['City_ID'], 'from_city_owner_id' => $data['City_owner_ID']); Tygh::$app['view']->assign('spsr_new_city_data', $city_data); Tygh::$app['view']->display('addons/rus_spsr/views/shippings/components/services/spsr.tpl'); exit; } }