handle delivery schedule dates
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user