src/Controllers/SyncProducts.php
/**
     * Run the sync operation
     * @return SyncProducts
     */
Run the sync operation
@return SyncProducts
Run the sync operation @return SyncProducts
public function run()
    {
        Log::write('A sincronizar artigos desde ' . $this->since);
        $updatedProducts = $this->getAllMoloniProducts();
        if (!empty($updatedProducts) && is_array($updatedProducts)) {
            $this->found = count($updatedProducts);
            Log::write('Encontrados ' . $this->found . ' artigos');
            foreach ($updatedProducts as $product) {
                try {
                    $wcProductId = wc_get_product_id_by_sku($product['reference']);
                    if ($product['has_stock'] && $wcProductId > 0) {
                        $currentStock = get_post_meta($wcProductId, '_stock', true);
                        $newStock = 0;
                        if ((int)MOLONI_STOCK_SYNC > 1) {
                            foreach ($product['warehouses'] as $productWarehouse) {
                                if ((int)$productWarehouse['warehouse_id'] === (int)MOLONI_STOCK_SYNC) {
                                    $newStock = $productWarehouse['stock']; 
                                    continue;
                                }
                            }
                        } else {
                            $newStock = $product['stock'];
                        }
                        if ((float)$currentStock === (float)$newStock) {
                            Log::write('Artigo com a referência ' . $product['reference'] . ' já tem o stock correcto ' . $currentStock . '|' . $newStock);
                            $this->equal[$product['reference']] = 'Artigo com a referência ' . $product['reference'] . ' já tem o stock correcto';
                        } else {
                            Log::write('Artigo com a referência ' . $product['reference'] . ' foi actualizado de ' . $currentStock . ' para ' . $newStock);
                            $this->updated[$product['reference']] = 'Artigo com a referência ' . $product['reference'] . ' foi actualizado de ' . $currentStock . ' para ' . $newStock;
                            wc_update_product_stock($wcProductId, $newStock);
                        }
                    } else {
                        Log::write('Artigo não encontrado ou sem stock ativo: ' . $product['reference']);
                        $this->notFound[$product['reference']] = 'Artigo não encontrado no WooCommerce ou sem stock activo';
                    }
                } catch (Exception $error) {
                    Log::write('Erro: ' . $error->getMessage());
                }
            }
        } else {
            Log::write(__('Sem artigos para atualizar desde ') . $this->since);
        }
        return $this;
    }
public function run ( ) { Log :: write ( 'A sincronizar artigos desde ' . $ this -> since ) ; $ updatedProducts = $ this -> getAllMoloniProducts ( ) ; if ( ! empty ( $ updatedProducts ) && is_array ( $ updatedProducts ) ) { $ this -> found = count ( $ updatedProducts ) ; Log :: write ( 'Encontrados ' . $ this -> found . ' artigos' ) ; foreach ( $ updatedProducts as $ product ) { try { $ wcProductId = wc_get_product_id_by_sku ( $ product [ 'reference' ] ) ; if ( $ product [ 'has_stock' ] && $ wcProductId > 0 ) { $ currentStock = get_post_meta ( $ wcProductId , '_stock' , true ) ; $ newStock = 0 ; if ( ( int ) MOLONI_STOCK_SYNC > 1 ) { foreach ( $ product [ 'warehouses' ] as $ productWarehouse ) { if ( ( int ) $ productWarehouse [ 'warehouse_id' ] === ( int ) MOLONI_STOCK_SYNC ) { $ newStock = $ productWarehouse [ 'stock' ] ; continue ; } } } else { $ newStock = $ product [ 'stock' ] ; } if ( ( float ) $ currentStock === ( float ) $ newStock ) { Log :: write ( 'Artigo com a referência '  p roduct[ ' reference']  já tem o stock correcto ' . $ u rrentStock . ' ' . $ e wStock); $ this -> equal [ $ product [ 'reference' ] ] = 'Artigo com a referência '  p roduct[ ' reference']  já tem o stock correcto'; } else { Log :: write ( 'Artigo com a referência '  p roduct[ ' reference']  foi actualizado de '  c urrentStock   para '  n ewStock) ; $ this -> updated [ $ product [ 'reference' ] ] = 'Artigo com a referência '  p roduct[ ' reference']  foi actualizado de '  c urrentStock   para '  n ewStock; wc_update_product_stock ( $ wcProductId , $ newStock ) ; } } else { Log :: write ( 'Artigo não encontrado ou sem stock ativo: '  p roduct[ ' reference'] ) ; $ this -> notFound [ $ product [ 'reference' ] ] = 'Artigo não encontrado no WooCommerce ou sem stock activo'; } } catch ( Exception $ error ) { Log :: write ( 'Erro: ' . $ error -> getMessage ( ) ) ; } } } else { Log :: write ( __ ( 'Sem artigos para atualizar desde ' ) . $ this -> since ) ; } return $ this ; }
Run the sync operation
 @return SyncProducts
Run the sync operation @return SyncProducts
/** if the product does not have the set warehouse, stock is 0 (so we do it here) */ /** If we have a warehouse selected */ // Get the stock of the particular warehouse