1781 lines
85 KiB
PHP
1781 lines
85 KiB
PHP
<?php
|
||
|
||
/**
|
||
* Provide a admin area view for the plugin
|
||
*
|
||
* This file is used to markup the admin-facing aspects of the plugin.
|
||
*
|
||
* @link https://example.com
|
||
* @since 1.0.0
|
||
*
|
||
* @package Polkurier
|
||
* @subpackage Polkurier/admin/partials
|
||
*/
|
||
|
||
use Polkurier\Util\Arr;
|
||
use Polkurier\Util\OrderTools;
|
||
|
||
require_once __DIR__ . '/../../includes/PolkurierPackage.php';
|
||
require_once __DIR__ . '/../../includes/PolkurierAPI.php';
|
||
|
||
wp_enqueue_script(uniqid('pk', true), Polkurier::instance()->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 <a href=\"admin.php?page=polkurier_packages\">listy paczek</a>.");
|
||
|
||
$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') {
|
||
?>
|
||
<div class="pk-card pk-bg-white pk-my-4 pk-mx-2 pk-shadow-2">
|
||
<div class="pk-card-header">DEBUG INFO</div>
|
||
<div class="pk-card-body">
|
||
<pre class="pk-card pk-bg-light-gray" id="debug-info-content" style="max-height: 500px; overflow: auto; white-space: pre-wrap">
|
||
<?php
|
||
var_dump([
|
||
'$codAmount' => $codAmount,
|
||
'$orderSelectedPointId' => $orderSelectedPointId,
|
||
'$orderSelectedPointLabel' => $orderSelectedPointLabel,
|
||
'$selectedCarrier' => $selectedCarrier,
|
||
'POST_META' => get_post_meta($orderId),
|
||
'ORDER' => $order,
|
||
]);
|
||
?>
|
||
</pre>
|
||
<div class="pk-text-right">
|
||
<button type="button" id="debug-info-copy">Skopiuj wszystko</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<script>
|
||
const copyButton = document.getElementById('debug-info-copy');
|
||
const container = document.getElementById('debug-info-content');
|
||
if (copyButton && container) {
|
||
copyButton.addEventListener('click', function () {
|
||
POLKURIER.copyToClipboard(container.innerHTML).then(function () {
|
||
alert('Skopiowano dane');
|
||
});
|
||
});
|
||
}
|
||
</script>
|
||
<?php
|
||
} else {
|
||
?>
|
||
<div class="pk-text-right pk-opacity-20">
|
||
<a href="<?php echo $_SERVER['REQUEST_URI'] . '&debug=true' ?>" class="pk-text-dark">Debug info</a>
|
||
</div>
|
||
<?php
|
||
}
|
||
|
||
?>
|
||
<script>
|
||
var CARRIERS = <?php echo json_encode($carriers) ?>;
|
||
var getCurrentCarrier = function () {
|
||
var currentCourierId = jQuery('[name="polkurier_carrier_id"]:checked').val();
|
||
for (var i = 0; i < CARRIERS.length; i++) {
|
||
if (CARRIERS[i].servicecode === currentCourierId) {
|
||
return CARRIERS[i];
|
||
}
|
||
}
|
||
return null;
|
||
};
|
||
|
||
var getPickupType = function () {
|
||
return pickupType = jQuery('[name="polkurier_pickup_type"]').val();
|
||
};
|
||
|
||
</script>
|
||
<form method="post" id="pk-order-form">
|
||
<h2>Nowa przesyłka dla zamówienia #<?php echo $order_data['id'] ?></h2>
|
||
<input type="hidden" name="packages_list" id="packages_list"
|
||
data-json="<?php echo is_array($packagesList) ? htmlspecialchars(json_encode($packagesList), ENT_QUOTES, 'UTF-8') : null ?>">
|
||
<table class="form-table">
|
||
<tbody>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_type">Typ przesyłki</label></th>
|
||
<td>
|
||
<input type="radio" name="polkurier_type" id="polkurier_type_1" value="koperta">
|
||
<label for="polkurier_type_1">koperta</label><br/>
|
||
<input type="radio" name="polkurier_type" id="polkurier_type_2" value="paczka" checked>
|
||
<label for="polkurier_type_2">paczka</label><br/>
|
||
<input type="radio" name="polkurier_type" id="polkurier_type_3" value="paleta">
|
||
<label for="polkurier_type_3">paleta</label>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_template">Użyj szablonu paczki</label></th>
|
||
<td>
|
||
<?php $packages = get_option('polkurier_packages'); ?>
|
||
<select id="polkurier_template_id" name="polkurier_template_id"
|
||
data-json="<?php echo htmlspecialchars(json_encode($packages), ENT_QUOTES, 'UTF-8') ?>">
|
||
<option value="">pomiń</option>
|
||
<?php if (is_array($packages)) foreach ($packages as $key => $pak): ?>
|
||
<option
|
||
value="<?php echo $key ?>"
|
||
class="polkurier-paczka polkurier-paczka-<?php echo $pak->type ?>"
|
||
data-type="<?php echo $pak->type ?>"
|
||
><?php echo $pak ?></option>
|
||
<?php endforeach; ?>
|
||
</select></td>
|
||
</tr>
|
||
<tr id="new_package">
|
||
<th scope="row"><label for="polkurier_package">Wymiary paczki</label></th>
|
||
<td>
|
||
<table class="form-table">
|
||
<tbody>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_height">Wysokość (cm)</label></th>
|
||
<td><input type="number" name="polkurier_height" id="polkurier_height" value=""></td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_width">Szerokość (cm)</label></th>
|
||
<td><input type="number" name="polkurier_width" id="polkurier_width" value=""></td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">
|
||
<label for="polkurier_depth">Głębokość (cm)</label>
|
||
</th>
|
||
<td>
|
||
<input type="number" name="polkurier_depth" id="polkurier_depth" value="">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_weight">Waga (kg)</label></th>
|
||
<td><input type="number" name="polkurier_weight" id="polkurier_weight" value=""></td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_count">Ilość</label></th>
|
||
<td><input type="number" name="polkurier_count" id="polkurier_count" value="1"></td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_nonstandard">Niestandardowa</label></th>
|
||
<td><input type="checkbox" name="polkurier_nonstandard" id="polkurier_nonstandard"
|
||
value="1"></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<button class="button button-primary" onclick="return fn_polkurier_add_package()">Dodaj paczkę do
|
||
zamówienia
|
||
</button>
|
||
<div id="packages_description"></div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">
|
||
<label for="polkurier_carrier">
|
||
Przewoźnik
|
||
</label>
|
||
</th>
|
||
<td>
|
||
<?php foreach ($carriers as $carrier): ?>
|
||
<div id="polkurier-courier-<?= $carrier["servicecode"] ?>" data-id="<?= $carrier["servicecode"] ?>" class="polkurier-courier-container">
|
||
<input
|
||
id="polkurier_default_id_<?php echo $carrier["servicecode"] ?>"
|
||
type="radio"
|
||
class="polkurier_carrier"
|
||
name="polkurier_carrier_id"
|
||
value="<?php echo $carrier["servicecode"] ?>"
|
||
required
|
||
<?php echo $selectedCarrier === $carrier["servicecode"] ? 'checked' : '' ?>
|
||
/>
|
||
<label for="polkurier_default_id_<?php echo $carrier["servicecode"] ?>">
|
||
<?php echo $carrier['name'] ?>
|
||
</label>
|
||
<div id="courier-<?= $carrier["servicecode"] ?>-messages-container" class="courier-messages-container" style="display: none;">
|
||
<?php
|
||
if (isset($couriersMessagesByCourier[$carrier["servicecode"]])) {
|
||
foreach ($couriersMessagesByCourier[$carrier["servicecode"]] as $message) {
|
||
?>
|
||
<div class="notice e-notice e-notice--<?= strtolower($message['severity']) ?>" >
|
||
<div class="e-notice__content">
|
||
<?= $message['message'] ?>
|
||
</div>
|
||
</div>
|
||
<?PHP
|
||
}
|
||
}
|
||
?>
|
||
</div>
|
||
</div>
|
||
<?php endforeach; ?>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>
|
||
<div id="polkurier-evaluation-spinner"></div>
|
||
<div id="polkurier-evaluation-error"></div>
|
||
</td>
|
||
</tr>
|
||
<tr id="pickuptime" class="">
|
||
<th scope="row">
|
||
<label for="polkurier_package">
|
||
Odbiór paczki od nadawcy
|
||
</label>
|
||
</th>
|
||
<td>
|
||
<table class="form-table">
|
||
<tbody>
|
||
<tr>
|
||
<th scope="row">
|
||
<label for="polkurier_pickup_type">Sposób odbioru</label>
|
||
</th>
|
||
<td>
|
||
<select name="polkurier_pickup_type" id="polkurier_pickup_type">
|
||
<option value="COURIER_PICKUP" <?php echo isset($_POST['polkurier_pickup_type']) && $_POST['polkurier_pickup_type'] === 'COURIER_PICKUP' ? 'selected' : NULL ?>>Zamawiam odbiór przesyłek </option>
|
||
<option value="SELF_PICKUP" <?php echo isset($_POST['polkurier_pickup_type']) && $_POST['polkurier_pickup_type'] === 'SELF_PICKUP' ? 'selected' : NULL ?>>Samodzielnie dostarczę przesyłkę do punktu</option>
|
||
</select>
|
||
</td>
|
||
<script>
|
||
var LABELS = {
|
||
INPOST: 'Samodzielnie dostarczę przesyłkę do punktu',
|
||
INPOST_PACZKOMAT: 'Samodzielnie dostarczę przesyłkę do paczkomatu',
|
||
INPOST_PACZKOMAT_ALLEGRO: 'Samodzielnie dostarczę przesyłkę do paczkomatu',
|
||
INPOST_PACZKOMAT_ECONOMY: 'Samodzielnie dostarczę przesyłkę do paczkomatu',
|
||
INPOST_PACZKOMAT_KURIER: 'Samodzielnie dostarczę przesyłkę do paczkomatu',
|
||
INPOST_INTERNATIONAL: 'Samodzielnie dostarczę przesyłkę do paczkomatu',
|
||
POCZTEX_PUNKT: 'Samodzielnie dostarczę przesyłkę do placówki Poczty Polskiej',
|
||
POCZTEX_PUNKT_PUNKT: 'Samodzielnie dostarczę przesyłkę do placówki Poczty Polskiej',
|
||
PACZKA_W_RUCHU: 'Samodzielnie dostarczę przesyłkę punktu RUCH',
|
||
DPD_POINT: 'Samodzielnie dostarczę przesyłkę do punktu.',
|
||
DHL_POINT: 'Samodzielnie dostarczę przesyłkę do punktu POP',
|
||
UPS_AP_POINT_POINT: 'Samodzielnie dostarczę przesyłkę do punktu UPS',
|
||
UPS_AP_POINT_COURIER: 'Samodzielnie dostarczę przesyłkę do punktu UPS',
|
||
DEFAULT: 'Zamówię kuriera samodzielnie przez telefon'
|
||
};
|
||
|
||
var SELF_PICKUP = [
|
||
'INPOST_PACZKOMAT',
|
||
'INPOST_PACZKOMAT_ALLEGRO',
|
||
'INPOST_PACZKOMAT_ECONOMY',
|
||
'INPOST_PACZKOMAT_KURIER',
|
||
'INPOST_INTERNATIONAL',
|
||
'POCZTEX_PUNKT',
|
||
'POCZTEX_PUNKT_PUNKT',
|
||
'PACZKA_W_RUCHU',
|
||
'DPD_POINT',
|
||
'UPS_AP_POINT_POINT',
|
||
'UPS_AP_POINT_COURIER',
|
||
];
|
||
|
||
var changePickupType = function (type) {
|
||
jQuery('option[value="' + type + '"]').prop('selected', true);
|
||
jQuery('[name="polkurier_pickup_type"]').trigger('change');
|
||
};
|
||
|
||
var updatePickupOptions = function () {
|
||
var currentCourier = getCurrentCarrier() || {};
|
||
var additionalData = currentCourier.additional_data || {};
|
||
var pickup = additionalData.pickup || {};
|
||
var option = jQuery('option[value="SELF_PICKUP"]');
|
||
option.text(LABELS[currentCourier.servicecode] || LABELS.DEFAULT);
|
||
|
||
if (pickup.nocourierorder && pickup.nocourierorder.available === true) {
|
||
option.prop('disabled', false).show();
|
||
} else {
|
||
changePickupType('COURIER_PICKUP');
|
||
option.prop('disabled', true).hide();
|
||
}
|
||
|
||
var disallowCourierPickup = pickup.pickupdate && pickup.pickupdate.status === false
|
||
jQuery('option[value="COURIER_PICKUP"]').prop('disabled', disallowCourierPickup).toggle(!disallowCourierPickup);
|
||
};
|
||
|
||
var updatePickupSelect = function () {
|
||
var pickupType = jQuery('[name="polkurier_pickup_type"]').val();
|
||
if (pickupType === 'SELF_PICKUP') {
|
||
jQuery('#polkurier_date').prop('disabled' , true);
|
||
jQuery('#polkurier_pickup_date_select').prop('disabled' , true);
|
||
} else {
|
||
jQuery('#polkurier_date').prop('disabled', false);
|
||
jQuery('#polkurier_pickup_date_select').prop('disabled', false);
|
||
}
|
||
};
|
||
|
||
var onChangeCourierSelect = function () {
|
||
var currentCourier = getCurrentCarrier() || {};
|
||
if (currentCourier && SELF_PICKUP.indexOf(currentCourier.servicecode) !== -1) {
|
||
changePickupType('SELF_PICKUP');
|
||
} else {
|
||
changePickupType('COURIER_PICKUP');
|
||
}
|
||
updatePickupOptions();
|
||
};
|
||
|
||
jQuery(document)
|
||
.on('change', '[name="polkurier_carrier_id"]', onChangeCourierSelect)
|
||
.on('change', '[name="polkurier_pickup_type"]', updatePickupSelect)
|
||
.ready(function () {
|
||
updatePickupOptions();
|
||
updatePickupSelect();
|
||
});
|
||
|
||
updatePickupOptions();
|
||
updatePickupSelect();
|
||
onChangeCourierSelect();
|
||
</script>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_date">Data</label></th>
|
||
<td><input required type="date" class="polkurier_dates" name="polkurier_date"
|
||
id="polkurier_date"
|
||
value="<?php echo isset($_POST['polkurier_date']) ? $_POST['polkurier_date'] : NULL ?>">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">
|
||
<label for="polkurier_pickup_date_select">
|
||
Godzina
|
||
</label>
|
||
</th>
|
||
<td>
|
||
<span id="polkurier_pickup_date"></span>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<tr id="polkurier-sender-point-container">
|
||
<th scope="row">
|
||
<label id="polkurier-sender-point-label">Paczkomat nadawcy</label>
|
||
</th>
|
||
<td>
|
||
<div>
|
||
<select name="sender_machinename" id="polkurier-sender-point" data-type="sender">
|
||
<option value="">---</option>
|
||
<?php if (!empty($_POST['sender_machinename'])): ?>
|
||
<option value="<?php echo $_POST['sender_machinename'] ?>" data-default="1" data-provider="<?php echo $selectedCarrier ?>" selected>
|
||
<?php echo $_POST['sender_point_name'] ?>
|
||
</option>
|
||
<?php endif; ?>
|
||
</select>
|
||
<button type="button" class="button button-primary" id="polkurier-sender-point-map-button">Mapa</button>
|
||
<button type="button" class="button button-primary" id="polkurier-sender-default-button">Ustaw domślny</button>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr id="polkurier-recipient-point-container">
|
||
<th scope="row">
|
||
<label id="polkurier-recipient-point-label">Paczkomat odbiorcy</label>
|
||
</th>
|
||
<td>
|
||
<div>
|
||
<select name="recipient_machinename" id="polkurier-recipient-point" data-type="recipient">
|
||
<option value="">---</option>
|
||
<?php if (!empty($orderSelectedPointId)): ?>
|
||
<option value="<?php echo $orderSelectedPointId ?>" data-default="1" data-provider="<?php echo $selectedCarrier ?>" selected>
|
||
<?php if (!empty($_POST['recipient_point_name'])): ?>
|
||
<?php echo $_POST['recipient_point_name'] ?>
|
||
<?php else: ?>
|
||
[<?php echo $orderSelectedPointId ?>]
|
||
<?php echo !empty($orderSelectedPointLabel) ? $orderSelectedPointLabel : '' ?>
|
||
<?php endif ?>
|
||
</option>
|
||
<?php endif ?>
|
||
</select>
|
||
<button type="button" class="button button-primary" id="polkurier-recipient-point-map-button">Mapa</button>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
|
||
<input type="hidden" name="sender_point_name" id="sender_point_name" />
|
||
<input type="hidden" name="recipient_point_name" id="recipient_point_name" />
|
||
<script>
|
||
var senderSelect = jQuery('select.sender-point');
|
||
jQuery('#polkurier-sender-point').on('change', function () {
|
||
jQuery('#sender_point_name').val(jQuery(this).find('option:selected').text());
|
||
});
|
||
jQuery('#polkurier-recipient-point').on('change', function () {
|
||
jQuery('#recipient_point_name').val(jQuery(this).find('option:selected').text());
|
||
});
|
||
</script>
|
||
|
||
<tr class="polkurier_standard_address">
|
||
<th scope="row">
|
||
<label for="polkurier_receiver">
|
||
Adres nadawcy
|
||
</label>
|
||
</th>
|
||
<td>
|
||
<?php
|
||
$opts = get_option("polkurier_addresses");
|
||
if (is_array($opts)) {
|
||
?>
|
||
<select name="polkurier_address" id="polkurier_address">
|
||
<?php
|
||
foreach ($opts as $key => $opt) {
|
||
?>
|
||
<option <?php if (!isset($_POST['polkurier_adress']) && $key == 0) {
|
||
echo "selected";
|
||
} else if (isset($_POST['polkurier_address']) && $_POST['polkurier_address'] == $key) {
|
||
echo "selected";
|
||
}
|
||
?> id="polkurier_address_<?php echo $key ?>" value="<?php echo $key ?>"
|
||
class="polkurier_address_option"
|
||
data-postalcode="<?php echo $opt->address["postcode"] ?>"><?php echo $opt->address["company"] . " - " . $opt->address["person"] ?></option>
|
||
<br/>
|
||
<?php
|
||
}
|
||
?>
|
||
</select>
|
||
<br/>
|
||
<?php
|
||
foreach ($opts as $key => $opt){
|
||
?>
|
||
<input type="radio" name="polkurier_address_radio" <?php if (!isset($_POST['polkurier_adress_radio']) && $key == 0) {
|
||
echo "checked";
|
||
} else if (isset($_POST['polkurier_address_radio']) && $_POST['polkurier_address_radio'] == $key) {
|
||
echo "checked";
|
||
}
|
||
?> id="polkurier_address_radio_<?php echo $key ?>" value="<?php echo $key ?>">
|
||
|
||
<label for="polkurier_address_radio_<?php echo $key ?>">
|
||
<?php
|
||
echo implode('<br>', array_filter([
|
||
$opt->address["company"],
|
||
$opt->address["person"],
|
||
$opt->address["street"] . " " . $opt->address["housenumber"] . " " . $opt->address["flatnumber"],
|
||
$opt->address["postcode"] . " " . $opt->address["city"],
|
||
$opt->address["phone"],
|
||
$opt->address["email"]
|
||
]));
|
||
?>
|
||
</label>
|
||
<?php
|
||
}
|
||
}else{
|
||
echo '<div class="notice error polkurier-notice is-dismissible" ><p>Proszę uzupełnić domyślny adres nadawcy</p></div>';
|
||
}
|
||
|
||
?>
|
||
</td>
|
||
</tr>
|
||
|
||
<tr class="polkurier_standard_address">
|
||
<th scope="row">
|
||
<label for="polkurier_receiver">Adres odbiorcy</label>
|
||
</th>
|
||
<td>
|
||
<?php
|
||
$polkurier_get_recipient_address_row = static function ($field) use ($order_data) {
|
||
if (!empty($_POST['recipient'][$field])) {
|
||
return $_POST['recipient'][$field];
|
||
}
|
||
switch ($field) {
|
||
case 'person':
|
||
return $order_data['shipping']['first_name'] . " " . $order_data['shipping']['last_name'];
|
||
case 'street':
|
||
return trim($order_data['shipping']['address_1'] . ' ' . $order_data['shipping']['address_2']);
|
||
case 'email':
|
||
case 'phone':
|
||
return $order_data['billing'][$field];
|
||
default:
|
||
return $order_data['shipping'][$field];
|
||
}
|
||
}
|
||
?>
|
||
<div class="pk-mb-2" style="width: 400px;">
|
||
Firma
|
||
<div>
|
||
<input type="text" name="recipient[company]" value="<?php echo $polkurier_get_recipient_address_row('company') ?>">
|
||
</div>
|
||
</div>
|
||
<div class="pk-mb-2">
|
||
Imię i nazwisko
|
||
<div>
|
||
<input type="text" name="recipient[person]" value="<?php echo $polkurier_get_recipient_address_row('person') ?>">
|
||
</div>
|
||
</div>
|
||
<div class="pk-mb-2">
|
||
Ulica i numer
|
||
<div>
|
||
<input type="text" name="recipient[street]" value="<?php echo $polkurier_get_recipient_address_row('street') ?>">
|
||
</div>
|
||
</div>
|
||
<div class="pk-mb-2">
|
||
Miejscowość
|
||
<div>
|
||
<input type="text" name="recipient[city]" value="<?php echo $polkurier_get_recipient_address_row('city') ?>">
|
||
</div>
|
||
</div>
|
||
<div class="pk-mb-2">
|
||
Kod pocztowy
|
||
<div>
|
||
<input type="text" name="recipient[postcode]" value="<?php echo $polkurier_get_recipient_address_row('postcode') ?>">
|
||
</div>
|
||
</div>
|
||
<div class="pk-mb-2">
|
||
Kraj (kod ISO)
|
||
<div>
|
||
<input type="text" name="recipient[country]" value="<?php echo $polkurier_get_recipient_address_row('country') ?>">
|
||
</div>
|
||
</div>
|
||
<div class="pk-mb-2">
|
||
Telefon
|
||
<div>
|
||
<input type="text" name="recipient[phone]" value="<?php echo $polkurier_get_recipient_address_row('phone') ?>">
|
||
</div>
|
||
</div>
|
||
<div class="pk-mb-2">
|
||
Adres email
|
||
<div>
|
||
<input type="text" name="recipient[email]" value="<?php echo $polkurier_get_recipient_address_row('email') ?>">
|
||
</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">
|
||
<label for="polkurier_pobranie">Kwota pobrania</label>
|
||
</th>
|
||
<td>
|
||
<input type="text" name="polkurier_pobranie" id="polkurier_pobranie" value="<?php echo $codAmount ?>">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_pobranie_rodzaj">Rodzaj zwrotu pobrania</label></th>
|
||
<td>
|
||
<?php
|
||
$cod_return_type = isset($_POST['polkurier_pobranie_rodzaj']) ? (string)$_POST['polkurier_pobranie_rodzaj'] : '';
|
||
$default_cod_return_type = get_option('polkurier_DEFAULT_COD_RETURN_TYPE', 'BA');
|
||
if (empty($cod_return_type) && !empty($default_cod_return_type)) {
|
||
$cod_return_type = $default_cod_return_type;
|
||
}
|
||
?>
|
||
<div class="pk-my-4">
|
||
<input type="radio" <?php if ($cod_return_type === 'BA') echo 'checked' ?> name="polkurier_pobranie_rodzaj" id="polkurier_pobranie_rodzaj_1" value="BA">
|
||
<label for="polkurier_pobranie_rodzaj_1">Przelew na konto bankowe</label><br/>
|
||
</div>
|
||
<div class="pk-my-4">
|
||
<input type="radio" <?php if ($cod_return_type === 'PO') echo 'checked' ?> name="polkurier_pobranie_rodzaj" id="polkurier_pobranie_rodzaj_2" value="PO">
|
||
<label for="polkurier_pobranie_rodzaj_2">Przekaz pocztowy na adres nadawcy</label>
|
||
<div class="pk-ml-5">
|
||
<small>Usługa Poczty Polskiej – kwotę pobrania zwraca listonosz na dane Nadawcy (podstawowy termin + 2 dni robocze)</small>
|
||
</div>
|
||
</div>
|
||
<div class="pk-my-4">
|
||
<input type="radio" <?php if ($cod_return_type === 'MB') echo 'checked' ?> name="polkurier_pobranie_rodzaj" id="polkurier_pobranie_rodzaj_3" value="MB">
|
||
<label for="polkurier_pobranie_rodzaj_3">
|
||
Do skarbonki
|
||
</label>
|
||
<div class="pk-ml-5">
|
||
<small>
|
||
Skarbonka umożliwia Ci zbieranie pobrań na swoim koncie tak, by wypłacać je w terminie, który Tobie odpowiada.<br>
|
||
Więcej informacji znajdziesz w naszej
|
||
<a href="https://polkurier.pl/knowledge-base/article/skarbonka" target="_blank">
|
||
bazie wiedzy
|
||
</a>
|
||
</small>
|
||
</div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_pobranie_zwrot">Zwrot pobrania</label></th>
|
||
<td>
|
||
<input type="radio" <?php if ((isset($_POST['polkurier_pobranie_zwrot']) && $_POST['polkurier_pobranie_zwrot'] == 'S') || !isset($_POST['polkurier_pobranie_zwrot'])) echo 'checked' ?>
|
||
name="polkurier_pobranie_zwrot" id="polkurier_pobranie_zwrot_1" value="S">
|
||
<label for="polkurier_pobranie_zwrot_1">od 5 do 7 dni roboczych</label><br/>
|
||
<input type="radio" <?php if (isset($_POST['polkurier_pobranie_zwrot']) && $_POST['polkurier_pobranie_zwrot'] == '1D') echo 'checked' ?>
|
||
name="polkurier_pobranie_zwrot" id="polkurier_pobranie_zwrot_2" value="1D">
|
||
<label for="polkurier_pobranie_zwrot_2">1 dzień roboczy od daty dostarczenia przesyłki</label><br/>
|
||
<input type="radio" <?php if (isset($_POST['polkurier_pobranie_zwrot']) && $_POST['polkurier_pobranie_zwrot'] == '4D') echo 'checked' ?>
|
||
name="polkurier_pobranie_zwrot" id="polkurier_pobranie_zwrot_3" value="4D">
|
||
<label for="polkurier_pobranie_zwrot_3">4 dni robocze od daty dostarczenia przesyłki</label><br/>
|
||
<input type="radio" <?php if (isset($_POST['polkurier_pobranie_zwrot']) && $_POST['polkurier_pobranie_zwrot'] == '16D') echo 'checked' ?>
|
||
name="polkurier_pobranie_zwrot" id="polkurier_pobranie_zwrot_4" value="16D">
|
||
<label for="polkurier_pobranie_zwrot_4">16 dni robocze od daty dostarczenia przesyłki</label><br/>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_pobranie">Konto bankowe do zwrotu pobrania</label></th>
|
||
<td>
|
||
<?php $accounts = get_option('polkurier_accounts'); ?>
|
||
<select id="polkurier_account" name="polkurier_account">
|
||
<?php if (is_array($accounts)) foreach ($accounts as $key => $acc): ?>
|
||
<option <?php if (isset($_POST['polkurier_account']) && $acc == $_POST['polkurier_account']) echo 'selected' ?>
|
||
value="<?php echo $acc ?>"><?php echo $acc->alias . " - " . $acc ?></option>
|
||
<?php endforeach; ?>
|
||
</select>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_ubezpieczenie">Kwota ubezpieczenia</label></th>
|
||
<td><input type="text" name="polkurier_ubezpieczenie" id="polkurier_ubezpieczenie"
|
||
value="<?php echo isset($_POST['polkurier_ubezpieczenie']) ? $_POST['polkurier_ubezpieczenie'] : 0 ?>">
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row"><label for="polkurier_description">Opis zawartości</label></th>
|
||
<td><textarea required name="polkurier_description"
|
||
id="polkurier_description"><?php echo isset($_POST['polkurier_description']) && !empty($_POST['polkurier_description']) ? $_POST['polkurier_description'] : ('Zamówienie #' . $order_data['id']) ?></textarea>
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<th scope="row">
|
||
<label>Usługi dodatkowe</label>
|
||
</th>
|
||
<td>
|
||
<div class="pk-my-4">
|
||
<label>
|
||
<input type="checkbox" name="courierservice[ROD]" <?php echo pk_get_post_param('courierservice.ROD') === '1' ? 'checked' : '' ?> value="1" />
|
||
<strong>Dokumenty zwrotne</strong>
|
||
</label>
|
||
</div>
|
||
<div class="pk-my-4">
|
||
<label>
|
||
<input type="checkbox" name="courierservice[COURIER_WITH_LABEL]" <?php echo pk_get_post_param('courierservice.COURIER_WITH_LABEL') === '1' ? 'checked' : '' ?> value="1" />
|
||
<strong>Podjazd kuriera z wydrukowanym listem przewozowym</strong>
|
||
</label>
|
||
<div class="pk-ml-5">
|
||
<small>Usługa dostępna tylko dla przewoźnika DHL</small>
|
||
</div>
|
||
</div>
|
||
<div class="pk-my-4">
|
||
<label>
|
||
<input type="checkbox" name="courierservice[WEEK_COLLECTION]" <?php echo pk_get_post_param('courierservice.WEEK_COLLECTION') === '1' ? 'checked' : '' ?> value="1" />
|
||
<strong>Dostawa weekendowa</strong>
|
||
</label>
|
||
<div class="pk-ml-5">
|
||
<small>Usługa dostępna tylko dla przewoźnika InPost Paczkomaty 24/7</small>
|
||
</div>
|
||
</div>
|
||
<div class="pk-my-4">
|
||
<label>
|
||
<?php
|
||
$enabled = $isPost
|
||
? pk_get_post_param('courierservice.SMS_NOTIFICATION_RECIPIENT') === '1'
|
||
: get_option('polkurier_default_courierservice_SMS_NOTIFICATION_RECIPIENT') === '1';
|
||
?>
|
||
<input type="checkbox" name="courierservice[SMS_NOTIFICATION_RECIPIENT]" <?php echo $enabled ? 'checked' : '' ?> value="1" />
|
||
<strong>Powiadomienie SMS dla odbiorcy</strong>
|
||
</label>
|
||
<div class="pk-ml-5">
|
||
<small>Powiadomienie zostanie wysłane po odebraniu przesyłki od nadawcy</small>
|
||
</div>
|
||
</div>
|
||
<div class="pk-my-4">
|
||
<label>
|
||
<?php
|
||
$enabled = $isPost
|
||
? pk_get_post_param('courierservice.SMS_NOTIFICATION_RECIPIENT_WITH_NAME') === '1'
|
||
: get_option('polkurier_default_courierservice_SMS_NOTIFICATION_RECIPIENT_WITH_NAME') === '1';
|
||
?>
|
||
<input type="checkbox" name="courierservice[SMS_NOTIFICATION_RECIPIENT_WITH_NAME]" <?php echo $enabled ? 'checked' : '' ?> value="1" />
|
||
<strong>Powiadomienie SMS dla odbiorcy z własną nazwą nadawcy</strong>
|
||
</label>
|
||
<div class="pk-ml-5">
|
||
<small>
|
||
Powiadomienie zostanie wysłane po odebraniu przesyłki od nadawcy<br>
|
||
Jako nadawca wiadomości będzie widnieć Twoja nazwa.<br>
|
||
Wymagane jest ustawienie domyślnej nazwy nadawcy w panelu klienta na portalu
|
||
<a href="https://polkurier.pl">Polkurier.pl</a> w zakładce "Ustawienia" → "Powiadomienia"
|
||
</small>
|
||
</div>
|
||
</div>
|
||
<script>
|
||
(function () {
|
||
var $smsNotificationRecipient = jQuery('[name="courierservice[SMS_NOTIFICATION_RECIPIENT]"]');
|
||
var $smsNotificationRecipientWithName = jQuery('[name="courierservice[SMS_NOTIFICATION_RECIPIENT_WITH_NAME]"]');
|
||
$smsNotificationRecipient.on('change', function () {
|
||
$smsNotificationRecipientWithName.prop('checked', false);
|
||
});
|
||
$smsNotificationRecipientWithName.on('change', function () {
|
||
$smsNotificationRecipient.prop('checked', false);
|
||
});
|
||
|
||
var $weekCollection = jQuery('[name="courierservice[WEEK_COLLECTION]"]');
|
||
var $courierWithLabel = jQuery('[name="courierservice[COURIER_WITH_LABEL]"]');
|
||
|
||
var updateView = function () {
|
||
var $courier = jQuery('[name="polkurier_carrier_id"]:checked');
|
||
var courier = $courier.val();
|
||
$courierWithLabel
|
||
.prop('disabled', courier !== 'DHL')
|
||
.prop('checked', courier === 'DHL' && $weekCollection.is(':checked'));
|
||
$weekCollection
|
||
.prop('disabled', courier !== 'INPOST_PACZKOMAT')
|
||
.prop('checked', courier === 'INPOST_PACZKOMAT' && $weekCollection.is(':checked'));
|
||
};
|
||
|
||
jQuery('[name="polkurier_carrier_id"]').on('change', updateView);
|
||
updateView();
|
||
}) ();
|
||
</script>
|
||
|
||
<div class="pk-my-4">
|
||
<label>
|
||
<?php
|
||
$polkurier_cover_addresses = array_filter((array)get_option("polkurier_cover_addresses"));
|
||
$polkurier_cover_address_id = Arr::get($_POST, 'polkurier_cover_address');
|
||
?>
|
||
<input type="checkbox" <?php echo $polkurier_cover_address_id !== null ? 'checked' : '' ?> id="polkurier_cover_address_toggle" autocomplete="off" />
|
||
<strong>Inny adres nadawcy na etykiecie</strong>
|
||
<select name="polkurier_cover_address" id="polkurier_cover_address" onchange="evaluateOrder()" autocomplete="off">
|
||
<option selected value="null">---</option>
|
||
<?php foreach ($polkurier_cover_addresses as $key => $opt): ?>
|
||
<option
|
||
id="polkurier_cover_address_<?php echo $key ?>"
|
||
value="<?php echo $key ?>"
|
||
class="polkurier_address_option"
|
||
data-postalcode="<?php echo $opt->address["postcode"] ?>"
|
||
<?php echo ($polkurier_cover_address_id !== null && (int)$polkurier_cover_address_id === $key) ? "selected" : '' ?>
|
||
>
|
||
<?php echo $opt->address["company"] . " - " . $opt->address["person"] ?>
|
||
</option>
|
||
<?php endforeach ?>
|
||
</select>
|
||
</label>
|
||
<div class="pk-ml-5">
|
||
<small>
|
||
Usługa umożliwia zakrycie Twojego rzeczywistego adresu nadawczego na liście przewozowym.<br>
|
||
Listą adresów można zarządać w zakładce
|
||
<a href="?page=polkurier&tab=cover_addresses">
|
||
"WooCommerce" → "Ustawienia Polkurier" → "Adresy na etykiecie"
|
||
</a>
|
||
</small>
|
||
</div>
|
||
</div>
|
||
<script>
|
||
(function () {
|
||
const $toggle = jQuery('#polkurier_cover_address_toggle');
|
||
const $select = jQuery('#polkurier_cover_address');
|
||
const updateView = function () {
|
||
const isChecked = $toggle.is(':checked');
|
||
$select.toggle(isChecked);
|
||
$select.prop('disabled', !isChecked);
|
||
};
|
||
$toggle.on('change', updateView);
|
||
updateView();
|
||
}) ();
|
||
</script>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
</tbody>
|
||
</table>
|
||
<?php submit_button("Wyślij", "primary", "submit", true, ['onclick' => 'return fn_polkurier_validate_package()']); ?>
|
||
</form>
|
||
<script type="text/javascript">
|
||
// zarządzanie paczkami
|
||
function fn_polkurier_validate_package() {
|
||
var field = jQuery("#packages_list").val();
|
||
var packages;
|
||
var warning = false;
|
||
if (field == '') {
|
||
warning = true;
|
||
} else {
|
||
packages = JSON.parse(field);
|
||
if (packages.length == 0) {
|
||
warning = true;
|
||
}
|
||
}
|
||
if (warning) {
|
||
alert("Dodaj przynajmniej jedną paczkę, aby złożyć zamówienie.");
|
||
return false;
|
||
}
|
||
|
||
if(jQuery('#polkurier_address option:selected').val() == undefined){
|
||
alert("Proszę uzupełnić domyślny adres nadawcy.");
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
function fn_polkurier_remove_package(index) {
|
||
var field = jQuery("#packages_list").val();
|
||
var packages;
|
||
if (field != '') {
|
||
packages = JSON.parse(field);
|
||
packages.splice(index, 1);
|
||
jQuery("#packages_list")
|
||
.val(JSON.stringify(packages))
|
||
.trigger('change');
|
||
fn_polkurier_describe_package();
|
||
}
|
||
return false;
|
||
}
|
||
|
||
function fn_polkurier_describe_package() {
|
||
var msg = "<br/>";
|
||
var dryRun = jQuery("#packages_list").data("json");
|
||
var field = jQuery("#packages_list").val();
|
||
var packages;
|
||
if (field == '' && dryRun == '') {
|
||
msg += "Brak paczek dodanych do zamówienia.";
|
||
} else {
|
||
if (dryRun != 0) {
|
||
packages = dryRun; // dry run
|
||
jQuery("#packages_list").data("json", "");
|
||
jQuery("#packages_list").val(JSON.stringify(packages));
|
||
} else {
|
||
packages = JSON.parse(field);
|
||
}
|
||
msg += "<b>Paczki dodane do zamówienia:</b><ul>";
|
||
var i = 0;
|
||
for (i = 0; i < packages.length; i++) {
|
||
msg += "<li>(wymiary: " + packages[i].height + "x" + packages[i].width + "x" + packages[i].depth + "cm, waga: " + packages[i].weight + "kg, ilosć: " + packages[i].count;
|
||
if (packages[i].nonstandard) {
|
||
msg += ", niestandardowa";
|
||
}
|
||
msg += ") ";
|
||
msg += "<a href=\"\" onclick=\"return fn_polkurier_remove_package(" + i + ")\">usuń</a>";
|
||
msg += " </li>"
|
||
}
|
||
msg += "</ul>";
|
||
}
|
||
jQuery("#packages_description").html(msg);
|
||
}
|
||
|
||
function fn_polkurier_add_package() {
|
||
if (jQuery("#polkurier_height").val() == '' ||
|
||
jQuery("#polkurier_width").val() == '' ||
|
||
jQuery("#polkurier_depth").val() == '' ||
|
||
jQuery("#polkurier_weight").val() == '' ||
|
||
jQuery("#polkurier_count").val() == '') {
|
||
alert("Wypełnij wszystkie pola paczki przed jej dodaniem.")
|
||
return false;
|
||
}
|
||
var field = jQuery("#packages_list").val();
|
||
var packages;
|
||
if (field == '') {
|
||
packages = new Array();
|
||
} else {
|
||
packages = JSON.parse(field);
|
||
}
|
||
var pkg = {
|
||
height: jQuery("#polkurier_height").val(),
|
||
width: jQuery("#polkurier_width").val(),
|
||
depth: jQuery("#polkurier_depth").val(),
|
||
weight: jQuery("#polkurier_weight").val(),
|
||
count: jQuery("#polkurier_count").val(),
|
||
pkgtype: jQuery("input[name=polkurier_type]:checked").val(),
|
||
nonstandard: jQuery("#polkurier_nonstandard").prop("checked")
|
||
};
|
||
packages.push(pkg);
|
||
jQuery("#packages_list")
|
||
.val(JSON.stringify(packages))
|
||
.trigger('change');
|
||
fn_polkurier_describe_package();
|
||
return false;
|
||
}
|
||
|
||
var arajxUrl = '<?php echo $ajaxUrl ?>';
|
||
|
||
var couriersPointsAjaxParms = function () {
|
||
return {
|
||
action: 'pk_courier_points',
|
||
nonce: '<?php echo $ajaxNonce ?>',
|
||
providers: [
|
||
jQuery('.polkurier_carrier:checked').val(),
|
||
],
|
||
cod: jQuery('#polkurier_pobranie').val() > 0,
|
||
};
|
||
};
|
||
|
||
var formatCourierPointOptionLabel = function (point) {
|
||
return '[' + point.id + '] ' + point.street + ', ' + point.zip + ' ' + point.city;
|
||
}
|
||
|
||
var createFetchPostCodeCourierPoints = function (options) {
|
||
options = jQuery.extend({
|
||
providers: ['INPOST_PACZKOMAT', 'PACZKA_W_RUCHU', 'POCZTEX_PUNKT'],
|
||
params: {},
|
||
providersLabels: {},
|
||
providersDefaultPoints: {},
|
||
providersDefaultPointsLabels: {}
|
||
}, options)
|
||
return function () {
|
||
var fetchParams = jQuery.extend({}, couriersPointsAjaxParms(), options.params || {});
|
||
var defaultPoint = options.$selectEl.find('option[data-default="1"]');
|
||
var selectedPointId = options.$selectEl.val();
|
||
if (selectedPointId === '---' || !selectedPointId) {
|
||
selectedPointId = null;
|
||
}
|
||
|
||
var provider = fetchParams.providers[0];
|
||
var fetchOptions = {
|
||
fetchParams: fetchParams,
|
||
defaultPoint: defaultPoint,
|
||
setDefault: function () {
|
||
var courierId = getSelectegCourierId();
|
||
var defaultPointId = options.providersDefaultPoints[courierId];
|
||
var defaultPointLabel = options.providersDefaultPointsLabels[courierId];
|
||
if (defaultPointId) {
|
||
options.$selectEl.append(new Option(
|
||
'[' + defaultPointId + '] ' + defaultPointLabel,
|
||
defaultPointId
|
||
));
|
||
options.$selectEl.val(defaultPointId);
|
||
options.$selectEl.trigger('change');
|
||
}
|
||
},
|
||
};
|
||
|
||
if (!POLKURIER.includesAny(fetchParams.providers, options.providers)) {
|
||
options.$containerEl.hide();
|
||
return fetchOptions;
|
||
}
|
||
|
||
options.$containerEl.show();
|
||
options.$labelEl.text(options.providersLabels[provider] || '');
|
||
|
||
if (!selectedPointId && !defaultPoint.length) {
|
||
fetchOptions.setDefault();
|
||
}
|
||
options.$selectEl.trigger('change');
|
||
|
||
if (options.$setDefaultButton) {
|
||
options.$setDefaultButton.on('click', function () {
|
||
fetchOptions.setDefault();
|
||
});
|
||
}
|
||
return fetchOptions;
|
||
};
|
||
};
|
||
|
||
var getSelectegCourierId = function () {
|
||
return jQuery('.polkurier_carrier:checked').val();
|
||
};
|
||
|
||
var MAP_PROVIDERS_MAP = {
|
||
INPOST_PACZKOMAT_ALLEGRO: 'INPOST_PACZKOMAT',
|
||
INPOST_PACZKOMAT_KURIER: 'INPOST_PACZKOMAT',
|
||
INPOST_PACZKOMAT_ECONOMY: 'INPOST_PACZKOMAT',
|
||
POCZTEX_KURIER_PUNKT: 'POCZTEX_PUNKT',
|
||
POCZTEX_PUNKT_PUNKT: 'POCZTEX_PUNKT',
|
||
FEDEX_DTR: 'FEDEX_DTR',
|
||
DPD_POINT: 'DPD_POINT',
|
||
DPD_COURIER_POINT: 'DPD_POINT',
|
||
DHL_POINT: 'DHL_POINT',
|
||
UPS_AP_POINT_POINT: 'UPS_AP_POINT_POINT',
|
||
UPS_AP_POINT_COURIER: 'UPS_AP_POINT_POINT',
|
||
UPS_AP_COURIER_POINT: 'UPS_AP_POINT_POINT',
|
||
};
|
||
|
||
var mapCouriersToMapProviders = function (providers) {
|
||
var provider, validProviders = [];
|
||
if (providers && providers.length > 0) {
|
||
for (var i = 0; i < providers.length; i++) {
|
||
provider = MAP_PROVIDERS_MAP[providers[i]] || providers[i];
|
||
if (validProviders.indexOf(provider) === -1) {
|
||
validProviders.push(provider);
|
||
}
|
||
}
|
||
}
|
||
return validProviders;
|
||
};
|
||
|
||
var bindCourierPoint = function (options) {
|
||
var fetchPostCodeCourierPoints = createFetchPostCodeCourierPoints(options);
|
||
var fetchOptions = fetchPostCodeCourierPoints();
|
||
jQuery('#polkurier_pobranie').on('change', fetchPostCodeCourierPoints);
|
||
jQuery('.polkurier_carrier').on('change', function () {
|
||
fetchOptions.setDefault();
|
||
fetchOptions = fetchPostCodeCourierPoints();
|
||
});
|
||
options.$selectEl.select2({
|
||
language: 'pl',
|
||
width: 700,
|
||
minimumInputLength: 3,
|
||
ajax: {
|
||
url: function (params) {
|
||
return arajxUrl + '?' + jQuery.param(jQuery.extend({}, fetchOptions.fetchParams, {searchQuery: params.term}));
|
||
},
|
||
processResults: function (data) {
|
||
if (data.length <= 0) {
|
||
return {results: []};
|
||
}
|
||
return {
|
||
results: data.map(function (row) {
|
||
return {
|
||
id: row.id,
|
||
text: formatCourierPointOptionLabel(row)
|
||
};
|
||
})
|
||
};
|
||
},
|
||
delay: 500
|
||
}
|
||
});
|
||
|
||
options.$mapButtonEl.on('click', function () {
|
||
var searchQuery = options.$selectEl.val() || '';
|
||
if (searchQuery.length === 0) {
|
||
searchQuery = options.defaultMapSearchQuery || '';
|
||
}
|
||
|
||
var functions = [];
|
||
if (options.params.collect) {
|
||
functions.push('collect');
|
||
}
|
||
if (options.params.send) {
|
||
functions.push('send');
|
||
}
|
||
|
||
var params = couriersPointsAjaxParms();
|
||
if (params.cod) {
|
||
functions.push('cod');
|
||
}
|
||
|
||
var map = new POLKURIER.PointsMap({
|
||
token: '<?php echo $mapToken->getToken() ?>',
|
||
providers: mapCouriersToMapProviders(params.providers),
|
||
functions: functions,
|
||
searchQuery: searchQuery,
|
||
});
|
||
|
||
map.onConfirm(function (point) {
|
||
options.$selectEl.append(new Option(formatCourierPointOptionLabel(point), point.id));
|
||
options.$selectEl.val(point.id);
|
||
options.$selectEl.trigger('change');
|
||
map.closeMapDialog();
|
||
});
|
||
map.showMapDialog();
|
||
});
|
||
};
|
||
|
||
jQuery(document).ready(function ($) {
|
||
// rozszerzenie list paczkomatów
|
||
jQuery('select.select2').select2();
|
||
|
||
bindCourierPoint({
|
||
$selectEl: jQuery('#polkurier-sender-point'),
|
||
$containerEl: jQuery('#polkurier-sender-point-container'),
|
||
$labelEl: jQuery('#polkurier-sender-point-label'),
|
||
$mapButtonEl: jQuery('#polkurier-sender-point-map-button'),
|
||
$setDefaultButton: jQuery('#polkurier-sender-default-button'),
|
||
providers: [
|
||
'INPOST_PACZKOMAT',
|
||
'INPOST_PACZKOMAT_ECONOMY',
|
||
'INPOST_PACZKOMAT_ALLEGRO',
|
||
'INPOST_PACZKOMAT_KURIER',
|
||
'INPOST_INTERNATIONAL',
|
||
'POCZTEX_PUNKT',
|
||
'POCZTEX_PUNKT_PUNKT',
|
||
'DPD_POINT',
|
||
'UPS_AP_POINT_COURIER',
|
||
'UPS_AP_POINT_POINT'
|
||
],
|
||
params: {
|
||
send: true,
|
||
collect: false
|
||
},
|
||
providersLabels: {
|
||
POCZTEX_PUNKT: 'Punkt nadania',
|
||
POCZTEX_PUNKT_PUNKT: 'Punkt nadania',
|
||
INPOST_PACZKOMAT: 'Paczkomat nadawcy',
|
||
INPOST_PACZKOMAT_ALLEGRO: 'Paczkomat nadawcy',
|
||
INPOST_PACZKOMAT_KURIER: 'Paczkomat nadawcy',
|
||
INPOST_PACZKOMAT_ECONOMY: 'Paczkomat nadawcy',
|
||
INPOST_INTERNATIONAL: 'Paczkomat nadawcy',
|
||
DPD_POINT: 'Punkt nadania',
|
||
UPS_AP_POINT_POINT: 'Punkt nadania',
|
||
UPS_AP_POINT_COURIER: 'Punkt nadania',
|
||
},
|
||
providersDefaultPoints: {
|
||
POCZTEX_PUNKT: '<?php echo get_option('polkurier_default_point_id_POCZTEX_PUNKT') ?>',
|
||
POCZTEX_PUNKT_PUNKT: '<?php echo get_option('polkurier_default_point_id_POCZTEX_PUNKT') ?>',
|
||
INPOST_PACZKOMAT: '<?php echo get_option('polkurier_default_point_id_INPOST_PACZKOMAT') ?>',
|
||
INPOST_PACZKOMAT_ALLEGRO: '<?php echo get_option('polkurier_default_point_id_INPOST_PACZKOMAT') ?>',
|
||
INPOST_PACZKOMAT_KURIER: '<?php echo get_option('polkurier_default_point_id_INPOST_PACZKOMAT') ?>',
|
||
INPOST_PACZKOMAT_ECONOMY: '<?php echo get_option('polkurier_default_point_id_INPOST_PACZKOMAT') ?>',
|
||
INPOST_INTERNATIONAL: '<?php echo get_option('polkurier_default_point_id_INPOST_PACZKOMAT') ?>',
|
||
DPD_POINT: '<?php echo get_option('polkurier_default_point_id_DPD') ?>',
|
||
UPS_AP_POINT_POINT: '<?php echo get_option('polkurier_default_point_id_UPS_AP_POINT_POINT') ?>',
|
||
UPS_AP_POINT_COURIER: '<?php echo get_option('polkurier_default_point_id_UPS_AP_POINT_POINT') ?>',
|
||
},
|
||
providersDefaultPointsLabels: {
|
||
POCZTEX_PUNKT: '<?php echo get_option('polkurier_default_point_label_POCZTEX_PUNKT') ?>',
|
||
POCZTEX_PUNKT_PUNKT: '<?php echo get_option('polkurier_default_point_label_POCZTEX_PUNKT') ?>',
|
||
INPOST_PACZKOMAT: '<?php echo get_option('polkurier_default_point_label_INPOST_PACZKOMAT') ?>',
|
||
INPOST_PACZKOMAT_ALLEGRO: '<?php echo get_option('polkurier_default_point_label_INPOST_PACZKOMAT') ?>',
|
||
INPOST_PACZKOMAT_KURIER: '<?php echo get_option('polkurier_default_point_label_INPOST_PACZKOMAT') ?>',
|
||
INPOST_PACZKOMAT_ECONOMY: '<?php echo get_option('polkurier_default_point_label_INPOST_PACZKOMAT') ?>',
|
||
INPOST_INTERNATIONAL: '<?php echo get_option('polkurier_default_point_label_INPOST_PACZKOMAT') ?>',
|
||
DPD_POINT: '<?php echo get_option('polkurier_default_point_label_DPD') ?>',
|
||
UPS_AP_POINT_POINT: '<?php echo get_option('polkurier_default_point_label_UPS_AP_POINT_POINT') ?>',
|
||
UPS_AP_POINT_COURIER: '<?php echo get_option('polkurier_default_point_label_UPS_AP_POINT_POINT') ?>',
|
||
}
|
||
});
|
||
|
||
bindCourierPoint({
|
||
$selectEl: jQuery('#polkurier-recipient-point'),
|
||
$containerEl: jQuery('#polkurier-recipient-point-container'),
|
||
$labelEl: jQuery('#polkurier-recipient-point-label'),
|
||
$mapButtonEl: jQuery('#polkurier-recipient-point-map-button'),
|
||
providers: [
|
||
'INPOST_PACZKOMAT',
|
||
'INPOST_PACZKOMAT_ECONOMY',
|
||
'INPOST_PACZKOMAT_ALLEGRO',
|
||
'INPOST_INTERNATIONAL',
|
||
'PACZKA_W_RUCHU',
|
||
'POCZTEX_PUNKT_PUNKT',
|
||
'POCZTEX_KURIER_PUNKT',
|
||
'FEDEX_DTR', 'DPD_POINT',
|
||
'DPD_COURIER_POINT',
|
||
'DHL_POINT',
|
||
'UPS_AP_POINT_POINT',
|
||
'UPS_AP_COURIER_POINT'
|
||
],
|
||
params: {
|
||
send: false,
|
||
collect: true
|
||
},
|
||
providersLabels: {
|
||
POCZTEX_PUNKT_PUNKT: 'Punkt odbioru',
|
||
POCZTEX_KURIER_PUNKT: 'Punkt odbioru',
|
||
INPOST_PACZKOMAT: 'Paczkomat odbiorcy',
|
||
INPOST_PACZKOMAT_ALLEGRO: 'Paczkomat odbiorcy',
|
||
INPOST_PACZKOMAT_ECONOMY: 'Paczkomat odbiorcy',
|
||
INPOST_INTERNATIONAL: 'Paczkomat odbiorcy',
|
||
PACZKA_W_RUCHU: 'Punkt odbioru',
|
||
FEDEX_DTR: 'Punkt odbioru',
|
||
DPD_POINT: 'Punkt odbioru',
|
||
DPD_COURIER_POINT: 'Punkt odbioru',
|
||
DHL_POINT: 'Punkt odbioru',
|
||
UPS_AP_POINT_POINT: 'Punkt odbioru',
|
||
UPS_AP_COURIER_POINT: 'Punkt odbioru',
|
||
},
|
||
defaultMapSearchQuery: '<?php echo $order_data['shipping']['postcode'] ?>',
|
||
});
|
||
|
||
// wybór templatki
|
||
jQuery("#polkurier_template_id").change(function () {
|
||
var pkg_templates = $("#polkurier_template_id").data("json");
|
||
var pkg_index = $("#polkurier_template_id").val();
|
||
if (jQuery("#polkurier_template_id").val() != "") {
|
||
$("#polkurier_height").val(pkg_templates[pkg_index].height);
|
||
$("#polkurier_width").val(pkg_templates[pkg_index].width);
|
||
$("#polkurier_depth").val(pkg_templates[pkg_index].depth);
|
||
$("#polkurier_weight").val(pkg_templates[pkg_index].weight);
|
||
$("#polkurier_count").val(pkg_templates[pkg_index].count);
|
||
if (pkg_templates[pkg_index].nonstandard) {
|
||
$("#polkurier_nonstandard").prop("checked", "checked");
|
||
} else {
|
||
$("#polkurier_nonstandard").removeProp("checked");
|
||
}
|
||
$("input[name=polkurier_type][value=" + pkg_templates[pkg_index].type + "]").click();
|
||
}
|
||
});
|
||
|
||
$("#polkurier_date").change(function () {
|
||
getPolkurierTimePickup();
|
||
});
|
||
|
||
$("select[name=polkurier_address]").change(function () {
|
||
getPolkurierTimePickup();
|
||
});
|
||
|
||
$("input.polkurier_carrier").change(function () {
|
||
getPolkurierTimePickup();
|
||
updateCourierMessages();
|
||
});
|
||
|
||
|
||
|
||
function getPolkurierTimePickup(){
|
||
$("#polkurier_pickup_date").html("Przetwarzanie...");
|
||
var dostawca = $("input[name=polkurier_carrier_id]:checked").val();
|
||
var data = $("#polkurier_date").val();
|
||
var kodpocztowy = $("option.polkurier_address_option:checked").data("postalcode");
|
||
var typ = $("input[name=polkurier_type]:checked").val();
|
||
$.ajax("admin.php?page=polkurier_packages&action=json&courier=" + dostawca + "&date=" + data + "&postalcode=" + kodpocztowy + "&package=" + typ).done(function (data) {
|
||
$("#polkurier_pickup_date").html(data);
|
||
updatePickupSelect();
|
||
})
|
||
}
|
||
|
||
var updateTemplateTypes = function () {
|
||
var currentPackType = $('input[name="polkurier_type"]:checked').val();
|
||
$('option.polkurier-paczka').each(function () {
|
||
this.disabled = this.dataset.type !== currentPackType;
|
||
});
|
||
};
|
||
|
||
$("input[name=polkurier_type]").change(updateTemplateTypes);
|
||
fn_polkurier_describe_package();
|
||
updateTemplateTypes();
|
||
|
||
$("select[name=polkurier_address]").change(function () {
|
||
$("#polkurier_address_radio_" + $("select[name=polkurier_address]").val()).click();
|
||
});
|
||
|
||
<?php if($_SERVER['REQUEST_METHOD'] == 'POST'): ?>
|
||
getPolkurierTimePickup();
|
||
<?php endif; ?>
|
||
|
||
var updateCourierMessages = function () {
|
||
var courier = getSelectegCourierId();
|
||
jQuery('.courier-messages-container').hide();
|
||
jQuery('#courier-' + getSelectegCourierId() + '-messages-container').show();
|
||
};
|
||
updateCourierMessages();
|
||
|
||
jQuery('.courier-messages-container a').each(function () {
|
||
this.target = '_blank';
|
||
})
|
||
});
|
||
</script>
|
||
<style type="text/css">
|
||
input[type=radio][name=polkurier_address_radio] {
|
||
display: none;
|
||
}
|
||
|
||
input[type=radio][name=polkurier_address_radio]:not(:checked) + label {
|
||
display: none;
|
||
}
|
||
|
||
.polkurier-unavailable-courier-icon {
|
||
font-size: 0.8em;
|
||
color: #fff;
|
||
background: #b0b0b0;
|
||
border-radius: 50%;
|
||
display: inline-block;
|
||
width: 12px;
|
||
height: 12px;
|
||
line-height: 12px;
|
||
text-align: center;
|
||
cursor: help;
|
||
}
|
||
|
||
.polkurier-courier-container {
|
||
font-weight: bold;
|
||
padding: 0.25em 0;
|
||
}
|
||
|
||
.polkurier-evaluation-container {
|
||
color: #b0b0b0;
|
||
margin-left: 0.6em;
|
||
font-size: 0.7em;
|
||
font-weight: normal;
|
||
}
|
||
|
||
.polkurier-evaluation-container .polkurier-price-nett {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.polkurier-evaluation-container .polkurier-price-gross {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.polkurier-courier-unavailable {
|
||
font-weight: normal;
|
||
color: #909090;
|
||
}
|
||
|
||
.polkurier-loading-evaluation-spinner {
|
||
position: fixed;
|
||
display: flex;
|
||
align-content: center;
|
||
bottom: 1em;
|
||
right: 1em;
|
||
padding: 1em;
|
||
background: #fff;
|
||
border: 1px #efefef solid;
|
||
border-radius: 4px;
|
||
box-shadow: 2px 2px 1px rgba(0, 0, 0, 0.2);
|
||
transition: right 0.3s;
|
||
}
|
||
|
||
.polkurier-loading-evaluation-spinner.polkurier-loading-evaluation-spinner--hidden {
|
||
right: -200px;
|
||
transition: right 0.2s;
|
||
}
|
||
|
||
#polkurier-evaluation-error {
|
||
color: red;
|
||
}
|
||
</style>
|
||
|
||
|
||
<script>
|
||
var $form = jQuery('#pk-order-form');
|
||
var loadEvaluationRequest;
|
||
var evaluationError = '';
|
||
var evaluateOrder = function () {
|
||
if (loadEvaluationRequest) {
|
||
loadEvaluationRequest.abort();
|
||
loadEvaluationRequest = null;
|
||
}
|
||
|
||
var orderData = {};
|
||
$form.serializeArray().forEach(function (row) {
|
||
orderData[row.name] = row.value;
|
||
});
|
||
orderData.order_id = '<?= (int)$_GET['order_id'] ?>';
|
||
|
||
console.log(orderData);
|
||
toggleLoadingEvaluationSpinner(true);
|
||
loadEvaluationRequest = jQuery.ajax({
|
||
url: '<?= $ajaxUrl ?>?action=pk_evaluate_order&nonce=<?= wp_create_nonce('polkurier-nonce') ?>',
|
||
type: 'POST',
|
||
data: orderData,
|
||
})
|
||
.done(function (res) {
|
||
if (res.success) {
|
||
updateCouriersList(res.data);
|
||
}
|
||
showEvaluationError('');
|
||
})
|
||
.fail(function (res) {
|
||
var error = (res && res.responseJSON && res.responseJSON.error) || 'Wystąpił błąd wyceny';
|
||
console.log('ERROR', res);
|
||
showEvaluationError(error);
|
||
})
|
||
.always(function () {
|
||
toggleLoadingEvaluationSpinner(false);
|
||
loadEvaluationRequest = null;
|
||
});
|
||
return loadEvaluationRequest;
|
||
};
|
||
|
||
var $loadingEvaluationSpinner;
|
||
var toggleLoadingEvaluationSpinner = function (toggle) {
|
||
if (toggle && !$loadingEvaluationSpinner) {
|
||
$loadingEvaluationSpinner = jQuery('<div>', {
|
||
class: 'polkurier-loading-evaluation-spinner polkurier-loading-evaluation-spinner--hidden',
|
||
}).append([
|
||
POLKURIER.createLoadingAnimation().addClass('pk-mr-2'),
|
||
'Ładowanie wyceny'
|
||
]);
|
||
jQuery('body').append($loadingEvaluationSpinner);
|
||
}
|
||
if ($loadingEvaluationSpinner) {
|
||
setTimeout(function () {
|
||
$loadingEvaluationSpinner.toggleClass('polkurier-loading-evaluation-spinner--hidden', !toggle);
|
||
}, 0);
|
||
}
|
||
|
||
jQuery('#polkurier-evaluation-spinner').text(toggle ? 'Ładowanie wyceny...' : '')
|
||
};
|
||
|
||
var updateCouriersList = function (evaluation) {
|
||
var $couriers = jQuery('.polkurier-courier-container');
|
||
var evaluations = POLKURIER.indexBy(evaluation, 'servicecode');
|
||
$couriers.each(function () {
|
||
var $courier = jQuery(this);
|
||
var id = $courier.data('id');
|
||
var $courierInput = $courier.find('input')
|
||
var $courierLabel = $courier.find('label');
|
||
var $evaluationContainer = $courier.find('.polkurier-evaluation-container');
|
||
var $unavailableContainer = $courier.find('.polkurier-unavailable-courier-icon');
|
||
if ($evaluationContainer.length === 0) {
|
||
$evaluationContainer = jQuery('<span>', {class: 'polkurier-evaluation-container'});
|
||
$evaluationContainer.append([
|
||
jQuery('<span>').append([
|
||
jQuery('<span>', {class: 'polkurier-price-nett'}),
|
||
' netto ',
|
||
' (',
|
||
jQuery('<span>', {class: 'polkurier-price-gross'}),
|
||
' brutto)',
|
||
])
|
||
]);
|
||
$evaluationContainer.hide();
|
||
$courierLabel.append($evaluationContainer);
|
||
}
|
||
|
||
if ($unavailableContainer.length === 0) {
|
||
$unavailableContainer = jQuery('<span>', {
|
||
class: 'polkurier-unavailable-courier-icon',
|
||
title: 'Przewoźnik niedostępny dla parametrów przesyłki'
|
||
});
|
||
$unavailableContainer.text('?');
|
||
$unavailableContainer.hide();
|
||
$courierLabel.append($unavailableContainer);
|
||
}
|
||
|
||
var data = evaluations[id];
|
||
if (data) {
|
||
if (data.conditional_price_nett > 0) {
|
||
$evaluationContainer
|
||
.find('.polkurier-price-nett')
|
||
.empty()
|
||
.append([
|
||
jQuery('<span>', {class: 'pk-text-danger33 pk-fw-normal'}).append([
|
||
Number(data.netprice).toFixed(2),
|
||
]),
|
||
' → ',
|
||
Number(data.conditional_price_nett).toFixed(2)
|
||
]);
|
||
|
||
$evaluationContainer
|
||
.find('.polkurier-price-gross')
|
||
.empty()
|
||
.append([
|
||
jQuery('<span>', {class: 'pk-text-danger2 pk-fw-normal'}).append([
|
||
Number(data.grossprice).toFixed(2),
|
||
]),
|
||
' → ',
|
||
Number(data.conditional_price_gross).toFixed(2)
|
||
]);
|
||
} else {
|
||
$evaluationContainer.find('.polkurier-price-nett').text(Number(data.netprice).toFixed(2));
|
||
$evaluationContainer.find('.polkurier-price-gross').text(Number(data.grossprice).toFixed(2));
|
||
}
|
||
$evaluationContainer.show();
|
||
$unavailableContainer.hide();
|
||
} else {
|
||
$evaluationContainer.hide();
|
||
$unavailableContainer.show();
|
||
}
|
||
|
||
$courier.toggleClass('polkurier-courier-unavailable', !data);
|
||
$courierInput
|
||
.prop('checked', $courierInput.is(':checked') && Boolean(data))
|
||
.prop('disabled', !data);
|
||
});
|
||
};
|
||
|
||
var $evaluationErrorContainer = jQuery('#polkurier-evaluation-error');
|
||
var showEvaluationError = error => {
|
||
if (error !== void 0) {
|
||
evaluationError = error;
|
||
}
|
||
var showError = evaluationError;
|
||
if (showError) {
|
||
showError = '<strong>Nie udało się wczytać wyceny przewoźników:</strong><br>' + evaluationError;
|
||
}
|
||
$evaluationErrorContainer.html(showError);
|
||
};
|
||
|
||
var evaluateFields = [
|
||
'polkurier_type',
|
||
'packages_list',
|
||
'polkurier_ubezpieczenie',
|
||
'polkurier_pobranie',
|
||
'polkurier_pobranie_zwrot',
|
||
'polkurier_pobranie_rodzaj',
|
||
'polkurier_address',
|
||
'courierservice',
|
||
'recipient[country]',
|
||
];
|
||
|
||
evaluateOrder();
|
||
var evaluateOrderDebounced = POLKURIER.debounce(evaluateOrder, 1000);
|
||
|
||
$form.on('change', function (e) {
|
||
var fieldName = e.target.name.replace(/\[[\w\s\d]+]/g, '');
|
||
if (evaluateFields.indexOf(fieldName) !== -1 || evaluateFields.indexOf(e.target.name) !== -1) {
|
||
evaluateOrderDebounced();
|
||
}
|
||
});
|
||
</script>
|
||
|
||
<?php
|
||
} elseif (isset($_GET["action"]) && $_GET['action'] === 'details') {
|
||
require_once(dirname(__FILE__) . "/polkurier-admin-package-details.php");
|
||
} else {
|
||
if (isset($_GET["action"]) && $_GET['action'] === 'cancel') {
|
||
$response = $api->cancelOrder($_GET['package']);
|
||
if (isset($response['cancellation']) && $response['cancellation'] === true) {
|
||
PolkurierOrder::deleteByOrderNumber($_GET['package']);
|
||
Polkurier_Admin::api_error_notice("Anulowano zamówienie.");
|
||
}
|
||
}
|
||
|
||
if (isset($_GET['update_all_statuses'])) {
|
||
$statusUpdater = new PolkurierOrderStatusUpdater();
|
||
$statusUpdater->updateAllOrdersStatuses();
|
||
header('Location: ?page=polkurier_packages&did_update_all_statuses');
|
||
die;
|
||
}
|
||
?>
|
||
|
||
<h2>Lista zamówień Polkurier</h2>
|
||
<p>Aby złożyć nowe zamówienie, przejdź do <a href="edit.php?post_type=shop_order">listy zamówień WooCommerce</a>.</p>
|
||
|
||
<?php
|
||
if (isset($_GET['did_update_all_statuses'])) {
|
||
echo '<div class="updated notice is-dismissable"><p>Zaktualizowano statusy zamówień</p></div>';
|
||
}
|
||
?>
|
||
|
||
<?php
|
||
require_once plugin_dir_path(__FILE__) . '../../includes/Polkurier_WP_List_Table.php';
|
||
$table = new Polkurier_WP_List_Table();
|
||
$table->set_polkurier_api_client($api);
|
||
$table->prepare_items();
|
||
|
||
?>
|
||
<style>
|
||
.column-address,
|
||
.column-address_to,
|
||
.column-label {
|
||
width: 170px;
|
||
}
|
||
|
||
.column-order_number {
|
||
width: 100px;
|
||
}
|
||
.column-order_number div {
|
||
font-size: 80% !important;
|
||
}
|
||
|
||
td.column-address,
|
||
td.column-address_to,
|
||
td.column-date_send,
|
||
td.column-status_date,
|
||
td.column-status,
|
||
td.column-delivered_date,
|
||
td.column-price,
|
||
td.column-pobranie {
|
||
font-size: 80% !important;
|
||
}
|
||
|
||
.column-label ul {
|
||
margin: 0;
|
||
padding: 0;
|
||
list-style: none;
|
||
}
|
||
|
||
.column-label li span {
|
||
white-space: nowrap;
|
||
background: #e0e0e0;
|
||
padding: 2px 4px;
|
||
border-radius: 4px;
|
||
font-family: monospace;
|
||
font-size: 80% !important;
|
||
}
|
||
</style>
|
||
<form method="GET">
|
||
<input type="hidden" name="page" value="polkurier_packages"/>
|
||
<?php $table->search_box('Szukaj', 'pk-orders'); ?>
|
||
</form>
|
||
<form method="GET">
|
||
<input type="hidden" name="page" value="polkurier_packages"/>
|
||
<input type="hidden" name="action" value="label"/>
|
||
<?php
|
||
$table->display();
|
||
submit_button("Generuj etykiety dla zaznaczonych", "primary", "submit", false, ['onclick' => 'return fn_polkurier_validate_labels()']);
|
||
?>
|
||
<a href="?page=polkurier_packages&update_all_statuses" onclick="if (!confirm('Na pewno zaktualizować statusy? Może to potrwać kilka minut.')) {return false}" class="button button-primary">Odśwież statusy</a>
|
||
</form>
|
||
<script type="text/javascript">
|
||
function fn_polkurier_validate_labels() {
|
||
if (jQuery("input:checkbox:checked").length == 0) {
|
||
alert("Zaznacz przesyłki, dla których chcesz wygenerować etykiety.");
|
||
return false;
|
||
}
|
||
else {
|
||
return true;
|
||
}
|
||
}
|
||
|
||
jQuery(document).on('click', '.pk-expand-button', function (e) {
|
||
e.preventDefault();
|
||
var $button = jQuery(this);
|
||
var $container = $button.parents('.pk-expand');
|
||
var $content = $container.find('.pk-expand-content');
|
||
$button.hide();
|
||
$content.slideDown();
|
||
});
|
||
</script>
|
||
<?php
|
||
}
|