on va avoir un dossier tw-commerce-supplier dans wp-content
c'est lui qui va stocker les informations sur les fournisseurs

enlever restocking url
mettre un select qui sera peuplé par un champ clé => valeur
Chaque entré de ce select correspondra au nom d'une classe qui permettra de récupérer les informations sur la mise en stock du produit

-------------

ultérieurement (modifier l'import pour supporter les valeurs obligatoires)

-----

gestion des stocks
	cas d'un stock géré par woocommerce ($product->get_stock_management_mode) == "dedicated_stock_managed_by_woocommerce"
	
	$product->get_prop('stock_quantity')
	$product->set_prop('stock_quantity')
	
	prop définit par
	product_data_store->read_product_data()
	
	lors d'un appel à product WC_Product_save
		data_store->update()
			data_store(handle_updated_props, metra à jour product_meta_lookup)
		ProductAttributesLookupDataStore->on_product_changed()
		
dans tous les autres cas appel du supplier correspondant si il existe
	
----------------
	
stock dédié non géré par woocommerce	
 (dedicated_stock_not_managed_by_woocommerce)
 
 - avoir une classe qui permette de lire le stock (validation obligatoire et présence import)
 - avoir une classe qui permette de passer la commande (validation obligatoire 
 et présence import)
	
stock partagé avec le magasin
  - lecture du stock via la classe dédiée
  - avoir une classe qui permette de lire le stock (validation obligatoire et présence import)
  - avoir une classe qui permette de passer la commande (validation obligatoire et présence import)
  
stock externalisé avec un autre magasin ou site
  - renommer en stock partagé avec un autre magasin ou site
  - lecture du stock via la classe dédiée
  - avoir une classe qui permette de passer la commande (validation obligatoire et présence import)

----------
hook à considérer


//vérifier que 
lors de l'affichage des stocks woocommerce_checkout_before_order_review
on vérifie leur état, si pas en stock on met une quantité à 0
on affiche un message et on calcul leur total WC_Cart::calculate_totals()

WC()->cart
WC_Cart::cart_contents
removed_cart_contents::removed_cart_contents

//gérer le cas ou la commande est vide dans l'affichage du template
//voir pourquoi il fait une requêtte ajax supplémentaire

tous les produits soit bien en stock sinon on enlève ceux qui ne sont pas en stock, on jette une exception et on affiche un warning
(checkout validation ?, WC_Cart::check_cart_item_stock())

WC_Checkout->process_checkout()

lecture des stocks (sur la fiche produit: stock individuel)
	- WIDGET elementor-pro/modules/woocommerce/wigets/Product_Stock wc_get_stock_html
	- bouton d'ajout (woocommerce/templates/single-product/add-to-cart/simple.php  filter woocommerce_product_is_in_stock )

	lors de l'ajout au panier (woocommerce_add_to_cart_quantity)
	si nécessaire wc_add_notice('message', error)
	return false

	lors de la validation de la commande (avant paiement)
	ajouter une action à woocommerce_check_cart_items
	//throw une exceptiona vec un message d'erreur
	/*
	wc_add_notice( $result->get_error_message(), 'error' );
	return false
	*/

	on pourra avoir un autre hook  woocommerce_checkout_order_processed just avant le paiement

	(paiement encaissé)
	woocommerce_payment_complete

	pour tous les autres events y compris paiement annulé
	do_action('woocommerce_order_status_' . new_status)

	(paiement annulé)
	woocommerce_order_status_cancelled

	(paiement réussi)
	payment->payment_c
	woocommerce_order_status_completed
	
----------

pour stock dédidé géré par woocommerce par de problème

external_stock_manager
	getProductStocks([product_id])

external_stock_handler (abstract_class)
	canHandle([product_id])
	getProductStocks()

classe spécifique qui étende cette classe
	

classe abstract
méthode read($product, $useCache = true / false(défault à true)){
	return null;
}

on aura une valeur par défault et une propriété pour définir la fréquence de lecture


table tw_supplier_stock
product_id
quantity
last_stock_query (datetime)

WC_Admin_Meta_Boxes::add_error

il faut mettre en place le même mécanisme que pour les autres propriétés
sauf que, on prendra en compte le hook woocommerce_admin_process_product_object (class-wc-meta-box-product-data.php)
pour ajouter des erreuurs, et, ne pas sauvegarder le contenu de la nouvelle

--------


