admin->showDeliveryDateForOrder($order);
}
/**
* @param int $order_id
*
* @throws Exception
*/
public function thankyou_pickup_html(int $order_id): void
{
$order = wc_get_order($order_id);
WCPOST()->admin->showDeliveryDateForOrder($order);
}
/**
* @param string $replacement
* @param WC_Order $order
*
* @return string
* @throws Exception
*/
public function wpo_wcpdf_delivery_options(string $replacement, WC_Order $order): string
{
ob_start();
WCPOST()->admin->showDeliveryDateForOrder($order);
return ob_get_clean();
}
/**
* @param string $replacement
* @param WC_Order $order
*
* @return string
* @throws Exception
*/
public function wpo_wcpdf_delivery_date(string $replacement, WC_Order $order): string
{
$deliveryOptions = WCPOST_Admin::getDeliveryOptionsFromOrder($order);
$deliveryDate = $deliveryOptions->getDate();
if ($deliveryDate) {
return wc_format_datetime(new WC_DateTime($deliveryDate), 'l d-m');
}
return $replacement;
}
/**
* Output the highest shipping class input
*
* @throws Exception
*/
public function injectShippingClassInput(): void
{
echo '
';
$this->renderHighestShippingClassInput();
echo '
';
}
/**
* @return string|void
* @throws Exception
*/
public function renderHighestShippingClassInput()
{
$shipping_class = WCPN_Frontend::get_cart_shipping_class();
if ($shipping_class) {
return sprintf(
'',
$shipping_class
);
}
}
/**
* Get the most expensive shipping class in the cart
* Requires WC2.4+
* Only supports 1 package, takes the first
*
* @return null|int
* @throws \Exception
*/
public static function get_cart_shipping_class(): ?int
{
if (version_compare(WOOCOMMERCE_VERSION, '2.4', '<')) {
return null;
}
$shippingMethodString = WC()->session->get('chosen_shipping_methods')[0] ?? '';
$shippingMethod = WCPN_Export::getShippingMethod($shippingMethodString);
if (empty($shippingMethod)) {
return null;
}
if (method_exists($shippingMethod, 'find_shipping_classes')) {
// get package
$packages = WC()->cart->get_shipping_packages();
$package = current($packages);
// get shipping classes from package
$shippingClasses = $shippingMethod->find_shipping_classes($package);
} else {
$shippingClasses = [];
}
return WCPOST()->export->getShippingClass(
$shippingMethod,
$shippingClasses
);
}
/**
* @param $fragments
*
* @return mixed
*/
public function order_review_fragments($fragments)
{
$postnl_shipping_data = $this->renderHighestShippingClassInput();
$fragments['.wcpn__shipping-data'] = $postnl_shipping_data;
return $fragments;
}
/**
* @param $order_id
*
* @return array|bool|mixed|void
* @throws Exception
*/
public static function getTrackTraceShipments($order_id): array
{
$order = WCX::get_order($order_id);
$shipments = WCPOST_Admin::get_order_shipments($order);
if (empty($shipments)) {
return [];
}
foreach ($shipments as $shipment_id => $shipment) {
$trackTrace = Arr::get($shipment, "track_trace");
// skip concepts
if (! $trackTrace) {
unset($shipments[$shipment_id]);
continue;
}
$track_trace_url = WCPOST_Admin::getTrackTraceUrl(
$order_id,
$trackTrace
);
// add links & urls
Arr::set($shipments, "$shipment_id.track_trace_url", $track_trace_url);
Arr::set(
$shipments,
"$shipment_id.track_trace_link",
sprintf(
'%s',
$track_trace_url,
$trackTrace
)
);
}
return $shipments;
}
/**
* @param $order_id
*
* @return array|bool
* @throws Exception
*/
public static function getTrackTraceLinks($order_id): array
{
$track_trace_links = [];
$consignments = self::getTrackTraceShipments($order_id);
foreach ($consignments as $key => $consignment) {
$track_trace_links[] = [
"link" => $consignment["track_trace_link"],
"url" => $consignment["track_trace_url"],
];
}
return $track_trace_links;
}
/**
* @return int|null
* @throws Exception
*/
public function ajaxGetHighestShippingClass(): ?int
{
echo WCPN_Frontend::get_cart_shipping_class();
die();
}
}
return new WCPN_Frontend();