shop->id; $deliveries = array(); $deliveries_allday = array(); $orders = DDWOrderHelper::getOrdersByDeliveryDate($date, Context::getContext()->shop->id); foreach ($orders as $order) { $delivery_time = $order['ddw_order_time']; if (!empty($delivery_time) && $delivery_time != '0') { $arr_tmp = explode('-', $delivery_time); $start_time = trim($arr_tmp[0]); $end_time = trim($arr_tmp[1]); $order_date = date('Y-m-d', strtotime($order['ddw_order_date'])); $deliveries[] = array( 'sort_index' => (float)(str_replace(':', '.', $start_time)), 'start_time' => $start_time, 'end_time' => $end_time, 'start_time_full' => $order_date.' ' .$start_time, 'end_time_full' => $order_date.' '.$end_time, 'time' => $delivery_time, ); } else { $deliveries_allday[] = array( 'id_order' => $order['id_order'], 'reference' => $order['reference'] ); } } $deliveries = array_unique($deliveries, SORT_REGULAR); // sort deliveries in start time ascending order usort($deliveries, function ($b, $a) { return ($b["sort_index"] - $a["sort_index"]); }); foreach ($deliveries as &$delivery) { $orders = DDWOrderHelper::getOrdersInTimeWindow($date, $delivery['time'], Context::getContext()->shop->id); foreach ($orders as $order) { $delivery['orders'][] = array( 'id_order' => $order['id_order'], 'reference' => $order['reference'] ); } $delivery['order_count'] = DDWOrderHelper::getOrderCountInTimeWindow($date, $delivery['time'], Context::getContext()->shop->id); } $return = array( 'timeline' => $deliveries, 'allday' => $deliveries_allday ); return $return; } /** * @param $id_order * @param $id_lang * @throws PrestaShopDatabaseException * @throws PrestaShopException */ public static function getOrderDeliveryInformation($id_order, $id_lang) { $order = new Order($id_order); $address = new Address($order->id_address_delivery); $order_state = new OrderState($order->current_state); $map_address = $address->address1.' '.$address->city.' '.$address->country; $return = array( 'id_order' => $id_order, 'reference' => $order->reference, 'order_date' => Tools::displayDate($order->date_add), 'delivery_date' => Tools::displayDate($order->ddw_order_date), 'delivery_time' => $order->ddw_order_time, 'firstname' => $address->firstname, 'lastname' => $address->lastname, 'company' => $address->company, 'address1' => $address->address1, 'address2' => $address->address2, 'city' => $address->city, 'postcode' => $address->postcode, 'country' => $address->country, 'phone' => $address->phone, 'phone_mobile' => $address->phone_mobile, 'state' => $order_state->name[$id_lang], 'map_address' => $map_address ); return $return; } }