/**
  * Sync all inventory from Square (expensive)
  * @todo if searching for square id fails, check for SKU
  */
 public function sync_all_inventory()
 {
     // refresh cache first to get the latest inventory
     $this->connect->refresh_inventory_cache();
     $square_inventory = $this->connect->get_square_inventory();
     // hopefully there has been a manual sync prior so that square item id
     // has already been saved in the product/variation metas to prevent
     // unnecessary round trip requests to Square to find the SKU
     foreach ($square_inventory as $variation_id => $stock) {
         $wc_product = WC_Square_Utils::get_wc_product_for_square_item_variation_id($variation_id);
         if (is_object($wc_product)) {
             $wc_product->set_stock((int) $stock);
         }
     }
     return true;
 }
 /**
  * Sync a WC Product's inventory to Square
  *
  * @param WC_Product $wc_product
  */
 public function sync_inventory(WC_Product $wc_product)
 {
     $wc_variation_ids = WC_Square_Utils::get_stock_managed_wc_variation_ids($wc_product);
     $square_inventory = $this->connect->get_square_inventory();
     foreach ($wc_variation_ids as $wc_variation_id) {
         $square_variation_id = WC_Square_Utils::get_wc_variation_square_id($wc_variation_id);
         if ($square_variation_id && isset($square_inventory[$square_variation_id])) {
             $wc_stock = (int) get_post_meta($wc_variation_id, '_stock', true);
             $square_stock = (int) $square_inventory[$square_variation_id];
             $delta = $wc_stock - $square_stock;
             $result = $this->connect->update_square_inventory($square_variation_id, $delta);
             if (!$result) {
                 WC_Square_Sync_Logger::log(sprintf('[WC -> Square] Error syncing inventory for WC Product %d.', $wc_product->id));
             }
         }
     }
 }