getPluginDirUrl('admin/js/select2.min.js'), ['jquery'], $this->version, false); wp_enqueue_script(uniqid('pk', true), Polkurier::instance()->getPluginDirUrl('admin/js/select2.pl.js'), ['jquery'], $this->version, false); function pk_get_post_param($path) { global $_POST; return Arr::getByPath($_POST, $path); } function pk_normalize_number($number) { $number = preg_replace('/\,/i', '.', $number); return (float)preg_replace('/[^0-9\.]+/i', '', $number); } $api = $this->get_polkurier_api(); if (isset($_GET['action']) && $_GET['action'] == 'json') { require_once dirname(__FILE__) . '/../../includes/polkurier-json.php'; } if (isset($_GET['action']) && $_GET['action'] == 'label') { require_once dirname(__FILE__) . '/../../includes/polkurier-label.php'; } $packagesList = null; if (isset($_POST['packages_list'])) { $packagesList = json_decode(stripslashes($_POST['packages_list']), true, JSON_UNESCAPED_SLASHES); } if (isset($_GET['order_id'])) { $isOrderDefined = PolkurierOrder::hasOrderDefined((int)$_GET['order_id']); $order = PolkurierOrder::getOrderById((int)$_GET['order_id']); } $isPost = $_SERVER['REQUEST_METHOD'] === 'POST'; if ($isPost) { $order = wc_get_order((int)$_GET['order_id']); $order_data = $order->get_data(); $sender = PolkurierAddress::getAddressById($_POST['polkurier_address']); $coverAddress = PolkurierAddress::getCoverAddressById($_POST['polkurier_cover_address']); $sender->address["machinename"] = Arr::get($_POST, 'sender_machinename', ''); if ($sender->address["machinename"] === '' || $sender->address["machinename"] === '---') { $sender->address["machinename"] = null; } $recipient = new PolkurierAddress(); $recipient->address["company"] = (string)Arr::getByPath($_POST, 'recipient.company'); $recipient->address["person"] = (string)Arr::getByPath($_POST, 'recipient.person'); $recipient->address["street"] = (string)Arr::getByPath($_POST, 'recipient.street'); $recipient->address["housenumber"] = (string)Arr::getByPath($_POST, 'recipient.housenumber'); $recipient->address["postcode"] = (string)Arr::getByPath($_POST, 'recipient.postcode'); $recipient->address["city"] = (string)Arr::getByPath($_POST, 'recipient.city'); $recipient->address["country"] = (string)Arr::getByPath($_POST, 'recipient.country'); $recipient->address["phone"] = (string)Arr::getByPath($_POST, 'recipient.phone'); $recipient->address["email"] = (string)Arr::getByPath($_POST, 'recipient.email'); $recipient->address["machinename"] = Arr::get($_POST, 'recipient_machinename', ''); if ($recipient->address["machinename"] === '' || $recipient->address["machinename"] === '---') { $recipient->address["machinename"] = null; } $postPackages = array(); foreach ($packagesList as $postPackage) { $package = new PolkurierPackage(); $package->width = $postPackage['width']; $package->height = $postPackage['height']; $package->depth = $postPackage['depth']; $package->weight = $postPackage['weight']; $package->count = $postPackage['count']; $package->nonstandard = $postPackage['nonstandard']; $package->type = $postPackage['pkgtype']; $postPacakges [] = $package; } $orderId = (int)$_GET['order_id']; $carrier = $_POST['polkurier_carrier_id']; $insurance = pk_normalize_number($_POST['polkurier_ubezpieczenie']); $pick = Arr::get($_POST, "polkurier_pickup_date", ''); $pick2 = explode("-", $pick); $pickup = [ "pickupdate" => Arr::get($_POST, 'polkurier_date'), "pickuptimefrom" => Arr::get($pick2, 0), "pickuptimeto" => Arr::get($pick2, 1) ]; if (isset($_POST['polkurier_pickup_type']) && $_POST['polkurier_pickup_type'] === 'SELF_PICKUP') { $pickup['nocourierorder'] = true; } if (isset($_POST['polkurier_pobranie'])) { $codAmount = pk_normalize_number($_POST['polkurier_pobranie']); if ($codAmount > 0) { $pobranie = [ "codtype" => $_POST['polkurier_pobranie_zwrot'], "codamount" => $codAmount, "codbankaccount" => '##POLKURIERMAGIC##' . Arr::get($_POST, 'polkurier_account'), "return_cod" => $_POST['polkurier_pobranie_rodzaj'] ]; } else { $pobranie = null; } } // Usługi dodatkowe $courierServices = []; $availableServices = ['ROD', 'COURIER_WITH_LABEL', 'WEEK_COLLECTION', 'SMS_NOTIFICATION_RECIPIENT', 'SMS_NOTIFICATION_RECIPIENT_WITH_NAME']; foreach ($availableServices as $service) { if (pk_get_post_param('courierservice.' . $service) === '1') { $courierServices[$service] = true; } } $description = $_POST['polkurier_description']; $orderDetails = array(); $response = $api->createOrder($carrier, $postPacakges, $sender, $recipient, $insurance, $pickup, $description, $pobranie, $courierServices, $orderDetails, $coverAddress); if (!$api->lastError) { if (!empty($_POST["sender_point_name"])) { $sender->address["point_name"] = trim($_POST["sender_point_name"]); } if (!empty($_POST["recipient_point_name"])) { $recipient->address["point_name"] = trim($_POST["recipient_point_name"]); } $order = PolkurierOrder::createFromApiResponse($response, $carrier, $sender, $recipient, isset($_POST['polkurier_pobranie']) ? ((float)$_POST['polkurier_pobranie']) : null, $orderDetails); $order->wp_order_id = $orderId; $order->save(); $_GET['action'] = 'list'; // override } } if (isset($_GET["action"]) && $_GET['action'] === 'create') { if ($isOrderDefined) Polkurier_Admin::api_error_notice("Uwaga! Dla zamówienia #" . (int)$_GET['order_id'] . " zdefiniowano już zamówienie Polkurier. " . "Aby przejrzeć istniejące zamówienia, przejdź do listy paczek."); $orderId = (int)$_GET['order_id']; $order = wc_get_order($orderId); $order_data = $order->get_data(); $option_value = get_option($this->option_name . '_default_carrier_id'); $api = $this->get_polkurier_api(); $carriers = $api->getAvailableCarriers(true); $couriersMessages = $api->getCouriersMessages(); $couriersMessagesByCourier = Arr::groupBy($couriersMessages, 'courier'); $selectedCarrier = Arr::get($_POST, 'polkurier_carrier_id', ''); $orderSelectedCarrier = (string)get_post_meta($orderId, '_polkurier_provider', true); if (empty($orderSelectedCarrier)) { $shippingMethod = OrderTools::getShippingMethod($order); if ($shippingMethod !== null && OrderTools::isOwnShippingMethod($shippingMethod)) { $orderSelectedCarrier = $shippingMethod->getPolkurierId(); } } if (empty($selectedCarrier) && !empty($orderSelectedCarrier)) { $selectedCarrier = $orderSelectedCarrier; } if (empty($selectedCarrier)) { $selectedCarrier = get_option($this->option_name . '_default_carrier_id'); } $orderSelectedPointId = Arr::get($_POST, 'recipient_machinename', ''); $orderSelectedPointLabel = ''; if (empty($orderSelectedPointId)) { // Dane o punkcie odbioru z zamówienia $orderSelectedPointId = get_post_meta($orderId, '_polkurier_point_id', true); $orderSelectedPointLabel = get_post_meta($orderId, '_polkurier_point_label', true); if (empty($orderSelectedPointId)) { // Legacy $orderSelectedPointId = get_post_meta($orderId, '_parcel_machine_id'); $orderSelectedPointLabel = get_post_meta($orderId, '_parcel_machine_desc', true); } if (empty($orderSelectedPointId)) { // Jeśli brak w $order $orderSelectedPointId = get_post_meta((int)$_GET['order_id'], '_polkurier_point_id', true); $orderSelectedPointLabel = get_post_meta((int)$_GET['order_id'], '_polkurier_point_label', true); } // Dane o punkcie odbioru ze wtyczki "Inpost Paczkomaty" by Damian Ziarnik // @see https://pl.wordpress.org/plugins/inpost-paczkomaty/ if (empty($orderSelectedPointId)) { $orderSelectedPointId = get_post_meta($orderId, 'paczkomat_key', true); $orderSelectedPointLabel = get_post_meta($orderId, 'Wybrany paczkomat', true); if (!empty($orderSelectedPointId)) { $selectedCarrier = 'INPOST_PACZKOMAT'; } } } // Jeśli InPost zagraniczny if ($selectedCarrier === 'INPOST_PACZKOMAT' && $order_data['shipping']['country'] !== 'PL') { $selectedCarrier = 'INPOST_INTERNATIONAL'; } $codAmount = isset($_POST['polkurier_pobranie']) ? $_POST['polkurier_pobranie'] : null; if ($codAmount === null && $order->get_payment_method() === 'cod') { $codAmount = $order->get_total(); } $ajaxNonce = wp_create_nonce('polkurier-nonce'); $ajaxUrl = admin_url('admin-ajax.php'); $mapToken = (new \Polkurier\MapsTokenManager())->getToken(); if (!empty($_GET['debug']) && $_GET['debug'] === 'true') { ?>
$codAmount,
'$orderSelectedPointId' => $orderSelectedPointId,
'$orderSelectedPointLabel' => $orderSelectedPointLabel,
'$selectedCarrier' => $selectedCarrier,
'POST_META' => get_post_meta($orderId),
'ORDER' => $order,
]);
?>
Aby złożyć nowe zamówienie, przejdź do listy zamówień WooCommerce.
Zaktualizowano statusy zamówień
'; } ?> set_polkurier_api_client($api); $table->prepare_items(); ?>