get_id(); } AmzFulfillment_Main::instance()->fulfillmentController()->create($orderId); } public function doCancelAmazonFulfillment($order) { if(is_int($order)) { $orderId = $order; } else { $orderId = $order->get_id(); } AmzFulfillment_Main::instance()->fulfillmentController()->cancel($orderId); } public function addBulkActions() { global $post_type; if ($post_type == 'shop_order') { AmzFulfillment_Template::load('OrdersBulkActions'); } } public function onBulk() { switch(_get_list_table('WP_Posts_List_Table')->current_action()) { case 'bulkAmazonFulfillment': $this->doBulkFulfillment(); break; default: break; } } public function doBulkFulfillment() { $orderIds = array_map('absint', (array) $_REQUEST['post']); if(!count($orderIds)) { AmzFulfillment_Logger::warn('No orders selected for fulfillment'); return; } AmzFulfillment_Logger::debug(sprintf('Start bulk fulfillment for orders: %s', implode(', ', $orderIds))); foreach($orderIds as $orderId) { AmzFulfillment_Main::instance()->fulfillmentController()->create($orderId); } } public function addMetaBoxes($postType, $post) { if($this->hasFulfillment()) { add_meta_box('woocommerce_order_amazon_fulfillment', 'Amazon Fulfillment', array($this, 'getOrderFulfillmentMetaBox'), 'shop_order', 'normal', 'high'); if(isset($_REQUEST['showPackage']) && !empty($_REQUEST['showPackage'])) { $packageNumber = $_REQUEST['showPackage']; add_meta_box('woocommerce_order_amazon_package', sprintf('Amazon Package %d', $packageNumber), array($this, 'getOrderPackageMetaBox'), 'shop_order', 'normal', 'high'); } } } public function getOrderFulfillmentMetaBox() { AmzFulfillment_Template::load('OrderFulfillmentMetaBox', $this); } public function getOrderPackageMetaBox() { AmzFulfillment_Template::load('OrderPackageMetaBox', $this); } public function addShopOrderColumns($columns) { $columns['order_amazon_fulfillment'] = 'Amazon Fulfillment'; return $columns; } public function onShopOrderColumns($column, $orderId) { if($column == 'order_amazon_fulfillment') { if($this->hasFulfillment($orderId)) { $status = $this->getFulfillment($orderId)->getStatus(); if(!empty($status)) { $status = ucfirst(str_replace('_', ' ', strtolower($status))); } else { $status = "Fulfillment created"; } printf('%s', $status); } } } public function hasFulfillment($orderId = NULL) { if($orderId === NULL) { $orderId = $this->getOrderId(); } return AmzFulfillment_Main::instance()->data()->fulfillments()->exist($orderId); } public function getFulfillment($orderId = NULL) { if($orderId === NULL) { $orderId = $this->getOrderId(); } return AmzFulfillment_Main::instance()->data()->fulfillments()->get($orderId); } public function getPackage($packageNumber = NULL) { if($packageNumber === NULL) { if(isset($_REQUEST['showPackage']) && !empty($_REQUEST['showPackage'])) { $packageNumber = $_REQUEST['showPackage']; } } return AmzFulfillment_Main::instance()->data()->packages()->get($packageNumber); } public function getPackages($orderId = NULL) { if($orderId === NULL) { $orderId = $this->getOrderId(); } $packages = array(); foreach(AmzFulfillment_Main::instance()->data()->packages()->getByOrder($orderId) as $package) { $status = sprintf("#%s %s", $package->getPackageNumber(), ucfirst(str_replace('_', ' ', strtolower($package->getStatus())))); if($package->getStatus() != "DELIVERED" && !empty($package->getEstimatedArrivalTime())) { $status .= sprintf(" (ETA %s)", AmzFulfillment_Main::instance()->getFormatedDate($package->getEstimatedArrivalTime())); } $packages[] = sprintf(' %s', $package->getPackageNumber(), $status); } return implode($packages); } public function getOrderId() { return get_the_ID(); } public function translateFulfillmentTrackingEvent($eventId) { if(isset(AmzFulfillment_Amazon_Package::$trackingEvent[$eventId])) { return AmzFulfillment_Amazon_Package::$trackingEvent[$eventId]; } else { return $eventId; } } }