J’ai fait le code correspondant
Je ne sais pas comment le proposer à la communauté, mais voici les motifs à faire dans les fichier.
Le comportement est le même que pour les factures clients quand on ouvre la modification il va décrémenter le stock. Par contre j’ai été obligé de faire un pop up pour demander quel stock il faut décrémenter. Il y a peut-être quelque chose à améliorer de ce côté.
Il faut coller le code aux fichiers et lignes suivantes
///////////////////////////////////////// fourn/facture/card.php ////////////////////////////////// Colller à la ligne 252 //////
if ($action == ‹ update_stock ›)
{
$idwarehouse=GETPOST(‹ idwarehouse ›);
$object-\>fetch($id);
$object-\>fetch_thirdparty();
$qualified_for_stock_change=0;
if (empty($conf-\>global-\>STOCK_SUPPORTS_SERVICES))
{
$qualified_for_stock_change=$object-\>hasProductsOrServices(2);
}
else
{
$qualified_for_stock_change=$object-\>hasProductsOrServices(1);
}
// Check parameters
if (! empty($conf-\>stock-\>enabled) && ! empty($conf-\>global-\>STOCK_CALCULATE_ON_SUPPLIER_BILL) && $qualified_for_stock_change)
{
$langs-\>load("stocks");
if (! $idwarehouse || $idwarehouse == -1)
{
$error++;
setEventMessage($langs-\>trans('ErrorFieldRequired',$langs-\>transnoentitiesnoconv("Warehouse")), 'errors');
$action='';
}
}
if (! $error)
{
$result = $object-\>update_stock($user,$idwarehouse);
if ($result < 0)
{
setEventMessages($object-\>error,$object-\>errors,'errors');
}
}
}
///////////////////////////////////////// Fin ////// fourn/facture/card.php //////////////////////////////////
///////////////////////////////////////// fourn/facture/card.php ////////////////////////////////// Colller à la ligne 915 //////
$form = new Form($db);
$formquestion=array();
$qualified_for_stock_change = 0;
if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) {
$qualified_for_stock_change = $object->hasProductsOrServices(2);
} else {
$qualified_for_stock_change = $object->hasProductsOrServices(1);
}
if (! empty($conf-\>global-\>STOCK_CALCULATE_ON_SUPPLIER_BILL) && $qualified_for_stock_change)
{
$langs-\>load("stocks");
require_once DOL_DOCUMENT_ROOT . '/product/class/html.formproduct.class.php';
$formproduct = new FormProduct($db);
$value = $formproduct-\>selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1);
$label = $langs-\>trans("SelectWarehouseForStockDecrease");
$formquestion = array(
// 'text' =\> $langs-\>trans("ConfirmClone"),
// array('type' =\> 'checkbox', 'name' =\> 'clone_content', 'label' =\> $langs-\>trans("CloneMainAttributes"), 'value' =\>
// 1),
// array('type' =\> 'checkbox', 'name' =\> 'update_prices', 'label' =\> $langs-\>trans("PuttingPricesUpToDate"), 'value'
// =\> 1),
//array('type' =\> 'other','name' =\> 'idwarehouse','label' =\> $label,'value' =\> $formproduct-\>selectWarehouses(GETPOST('idwarehouse'), 'idwarehouse', '', 1, 0, 0, $langs-\>trans("NoStockAction"))));
array('type' =\> 'other', 'name' =\> 'idwarehouse', 'label' =\> $langs-\>trans("SelectWarehouseForStockDecrease"), 'value' =\> $value));
$formconfirm = $form-\>formconfirm($_SERVER["PHP_SELF"].'?id='.$object-\>id, 'Etes-vous sur de vouloir modifier la facture', 'Stock à modifier', 'update_stock', $formquestion, 0, 1);
}
///////////////////////////////////////// Fin ////// fourn/facture/card.php //////////////////////////////////
///////////////////////////////////////// fourn/class/fournisseur.facture.class.php ////////////////////////////////// Colller à la ligne 905 //////
function update_stock($user, $idwarehouse=0)
{
global $conf,$langs;
$num = $this-\>ref;
if (! empty($conf-\>stock-\>enabled) && ! empty($conf-\>global-\>STOCK_CALCULATE_ON_SUPPLIER_BILL))
{
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
$langs-\>load("agenda");
$cpt=count($this-\>lines);
for ($i = 0; $i < $cpt; $i++)
{
if ($this-\>lines[$i]-\>fk_product \> 0)
{
$now = date();
$mouvP = new MouvementStock($this-\>db);
$mouvP-\>origin = &$this;
// We decrease stock for product
$up_ht_disc=$this-\>lines[$i]-\>pu_ht;
if (! empty($this-\>lines[$i]-\>remise_percent) && empty($conf-\>global-\>STOCK_EXCLUDE_DISCOUNT_FOR_PMP)) $up_ht_disc=price2num($up_ht_disc \* (100 \- $this-\>lines[$i]-\>remise_percent) / 100, 'MU');
$result=$mouvP-\>livraison($user, $this-\>lines[$i]-\>fk_product, $idwarehouse, $this-\>lines[$i]-\>qty, $up_ht_disc, 'Facture fournisseur modifiée','',$num);
if ($result < 0) { $error++; }
}
}
}
}
///////////////////////////////////////// Fin ////// fourn/class/fournisseur.facture.class.php //////////////////////////////////