handle delivery schedule dates

This commit is contained in:
Bilal Catic
2018-10-31 12:48:45 +01:00
parent e6b6f6c136
commit d6c5a36e94
8 changed files with 612 additions and 7 deletions

View File

@@ -44,6 +44,152 @@ class Wiaas_Order {
return "1000000$number";
}
public static function get_additional_days_prior_installation($order_id){
$order = wc_get_order($order_id);
return $order->get_meta('_wiaas_order_additional_days_prior_installation');
}
public static function add_additional_tracking_info($order_id, $supplier_id){
$suppliers = self::get_suppliers($order_id);
foreach($suppliers as $key => $supplier){
if ($supplier['id'] === $supplier_id){
$suppliers[$key]['tracking_info'][] = array(
'number' => '',
'url' => ''
);
//not working
//$order = wc_get_order($order_id);
//$order->update_meta_data('_wiaas_suppliers', $suppliers);
return update_post_meta($order_id, '_wiaas_suppliers', $suppliers);
}
}
return false;
}
public static function save_tracking_info($order_id, $supplier_id, $tracking_index, $tracking_num, $tracking_url){
$suppliers = self::get_suppliers($order_id);
foreach($suppliers as $key => $supplier){
if ($supplier['id'] === $supplier_id){
$suppliers[$key]['tracking_info'][$tracking_index]['number'] = $tracking_num;
$suppliers[$key]['tracking_info'][$tracking_index]['url'] = $tracking_url;
//not working
//$order = wc_get_order($order_id);
//$order->update_meta_data('_wiaas_suppliers', $suppliers);
return update_post_meta($order_id, '_wiaas_suppliers', $suppliers);
}
}
return false;
}
public static function delete_tracking_info($order_id, $supplier_id, $tracking_index){
$suppliers = self::get_suppliers($order_id);
foreach($suppliers as $key => $supplier){
if ($supplier['id'] === $supplier_id){
unset($suppliers[$key]['tracking_info'][$tracking_index]);
//not working
//$order = wc_get_order($order_id);
//$order->update_meta_data('_wiaas_suppliers', $suppliers);
return update_post_meta($order_id, '_wiaas_suppliers', $suppliers);
}
}
return false;
}
public static function save_estimated_date($order_id, $supplier_id, $date){
$suppliers = self::get_suppliers($order_id);
$result = false;
foreach($suppliers as $key => $supplier){
if ($supplier['id'] === $supplier_id){
$suppliers[$key]['estimated_date'] = $date;
}
}
$result = update_post_meta($order_id, '_wiaas_suppliers', $suppliers);
self::_update_max_and_earliest_dates($order_id);
//Not working
//$order = wc_get_order($order_id);
//$order->update_meta_data('_wiaas_suppliers', $suppliers);
return $result;
}
public static function save_confirmed_date($order_id, $supplier_id, $date){
$suppliers = self::get_suppliers($order_id);
$result = false;
foreach($suppliers as $key => $supplier){
if ($supplier['id'] === $supplier_id){
$suppliers[$key]['confirmed_date'] = $date;
if (!$suppliers[$key]['estimated_date']){
$suppliers[$key]['estimated_date'] = $date;
}
}
}
$result = update_post_meta($order_id, '_wiaas_suppliers', $suppliers);
self::_update_max_and_earliest_dates($order_id);
//Not working
//$order = wc_get_order($order_id);
//$order->update_meta_data('_wiaas_suppliers', $suppliers);
return $result;
}
public static function get_global_estimated_date($order_id){
$order = wc_get_order($order_id);
if (!$order){
return NULL;
}
return $order->get_meta('_wiaas_global_estimated_delivery_date') ?: NULL;
}
public static function save_global_estimated_date($order_id, $date){
return update_post_meta($order_id, '_wiaas_global_estimated_delivery_date', $date);
}
public static function get_final_estimated_date($order_id){
$order = wc_get_order($order_id);
if (!$order){
return 0;
}
return $order->get_meta('_wiaas_final_estimated_delivery_date') ?: 0;
}
public static function get_final_confirmed_date($order_id){
$order = wc_get_order($order_id);
if (!$order){
return 0;
}
return $order->get_meta('_wiaas_final_confirmed_delivery_date') ?: 0;
}
public static function get_earliest_installation_date($order_id){
$order = wc_get_order($order_id);
if (!$order){
return 0;
}
return $order->get_meta('_wiaas_earliest_installation_date') ?: 0;
}
/**
* Get suppliers related to order
*/
public static function get_suppliers($order_id){
$order = wc_get_order($order_id);
return $order->get_meta('_wiaas_suppliers');
}
/**
* Update `shop_order` post type settings before creation to enable better order management for wiaas
*
@@ -190,12 +336,68 @@ class Wiaas_Order {
public static function get_order_tender($order_id) {
return get_post_meta($order_id, '_wiaas_tender', true);
}
}
/**
* PRIVATE
*/
private static function _update_max_and_earliest_dates($order_id){
$suppliers = self::get_suppliers($order_id);
$max_estimated_date = 0;
$max_confirmed_date = 0;
$earliest_installation_date = 0;
$missing_estimated = false;
$missing_confirmed = false;
$no_earliest = false;
foreach($suppliers as $supplier){
if (!$supplier['estimated_date']){
$missing_estimated = true;
}
if (!$supplier['confirmed_date']){
$missing_confirmed = true;
}
if ($supplier['estimated_date'] > $max_estimated_date){
$max_estimated_date = $supplier['estimated_date'];
}
if ($supplier['confirmed_date'] > $max_confirmed_date){
$max_confirmed_date = $supplier['confirmed_date'];
}
if (!$no_earliest){
$supplier_date = $supplier['estimated_date'];
if ($supplier['confirmed_date'] > $supplier_date){
$supplier_date = $supplier['confirmed_date'];
}
if ($supplier_date > 0){
if ($supplier_date > $earliest_installation_date){
$earliest_installation_date = $supplier_date;
}
}else{
$no_earliest = true;
$earliest_installation_date = 0;
}
}
}
if ($missing_estimated && $missing_confirmed){
$no_earliest = true;
$earliest_installation_date = 0;
}
if (!$no_earliest){
$earliest_installation_date = strtotime('+' . self::get_additional_days_prior_installation($order_id) . ' days', $earliest_installation_date);
}
update_post_meta($order_id, '_wiaas_final_confirmed_delivery_date', $max_confirmed_date);
update_post_meta($order_id, '_wiaas_final_estimated_delivery_date', $max_estimated_date);
update_post_meta($order_id, '_wiaas_earliest_installation_date', $earliest_installation_date);
}
/**
* Append specific wiaas order details, like reference
* @param $data