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();