Advertisement
palsushobhan

Mark order complete when all items delivered

Apr 29th, 2024
801
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 0.98 KB | None | 0 0
  1. add_action( 'wcfmd_after_order_mark_delivered', 'wcfm_order_marked_completed_forcefully',20);
  2. add_action( 'wcfmd_after_order_item_mark_delivered', 'wcfm_order_marked_completed_forcefully',20);
  3. function wcfm_order_marked_completed_forcefully($order_id) {
  4.     global $wpdb;
  5.  
  6.     $order = wc_get_order($order_id);
  7.     if (empty($order)) return;
  8.  
  9.     $sql = 'SELECT count(ID) FROM ' . $wpdb->prefix . 'wcfm_marketplace_orders';
  10.     $sql .= ' WHERE 1=1';
  11.     $sql .= " AND `order_id` = " . $order_id;
  12.     $sql .= " AND shipping_status NOT IN ('shipped','completed')";
  13.     $sql .= " AND commission_status != 'completed'";
  14.     $results = $wpdb->get_var( $sql );
  15.     if($results) return;
  16.  
  17.     $sql  = "SELECT count(ID) FROM `{$wpdb->prefix}wcfm_delivery_orders`";
  18.     $sql .= " WHERE 1=1";
  19.     $sql .= " AND order_id = {$order_id}";
  20.     $sql .= " AND delivery_status != 'delivered'";
  21.     $results = $wpdb->get_var( $sql );
  22.     if($results) return;
  23.  
  24.     $order->update_status( 'completed' );
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement