<div class="page-header"><div><h1>Dashboard Stock</h1><p class="text-secondary">Stock calculé exclusivement depuis les mouvements.</p></div><div class="d-flex flex-wrap gap-2"><?php if(can('stock','create')):?><a class="btn btn-success" href="<?=e(url('stock/movement/entry'))?>">Entrée</a><a class="btn btn-danger" href="<?=e(url('stock/movement/exit'))?>">Sortie</a><?php endif;?><?php if(can('stock','transfer')):?><a class="btn btn-primary" href="<?=e(url('stock/transfer'))?>">Transfert</a><?php endif;?></div></div><div class="row g-3 mb-4"><div class="col-md-4"><div class="stat-card"><span>Valorisation CMP</span><strong><?=e(number_format($value,2))?> MAD</strong></div></div><div class="col-md-4"><div class="stat-card"><span>Alertes actives</span><strong><?=count($alerts)?></strong></div></div><div class="col-md-4"><div class="stat-card"><span>Lignes produit/entrepôt</span><strong><?=count($rows)?></strong></div></div></div><div class="d-flex gap-2 mb-3"><a class="btn btn-sm btn-outline-secondary" href="<?=e(url('warehouses'))?>">Entrepôts</a><a class="btn btn-sm btn-outline-secondary" href="<?=e(url('stock/history'))?>">Historique</a><a class="btn btn-sm btn-outline-secondary" href="<?=e(url('stock/inventory'))?>">Inventaire</a><?php if(can('stock','export')):?><?php foreach(['csv','xls','pdf']as$f):?><a class="btn btn-sm btn-outline-primary" href="<?=e(url('stock/export/'.$f))?>"><?=strtoupper($f)?></a><?php endforeach;?><?php endif;?></div><?php if($alerts):?><div class="alert alert-warning"><strong>Alertes :</strong><?php foreach($alerts as$a):?><div><?=e($a['reference'].' — '.$a['name'].' — '.$a['warehouse'].' : '.$a['alert_type'])?></div><?php endforeach;?></div><?php endif;?><div class="card"><div class="table-responsive"><table class="table table-hover mb-0" data-client-paginate="20"><thead><tr><th>Produit</th><th>Entrepôt</th><th>Physique</th><th>Réservé</th><th>Disponible</th><th>Minimum</th><th>Commandé fournisseur</th><th>Commande client</th><th>Valeur</th></tr></thead><tbody><?php foreach($rows as$x):?><tr class="<?=$x['physical']<0?'table-danger':($x['physical']<=$x['minimum_quantity']?'table-warning':'')?>"><td><?=e($x['reference'].' — '.$x['name'])?></td><td><?=e($x['warehouse'])?></td><td><?=e($x['physical'])?></td><td><?=e($x['reserved'])?></td><td><?=e($x['available'])?></td><td><?=e($x['minimum_quantity'])?></td><td><?=e($x['incoming_ordered'])?></td><td><?=e($x['outgoing_ordered'])?></td><td><?=e(number_format($x['value'],2))?></td></tr><?php endforeach;?></tbody></table></div></div><?php if(can('stock','update')):?><div class="card mt-4"><div class="card-body"><h2 class="h5">Paramètres</h2><form class="row g-2" method="post" action="<?=e(url('stock/settings'))?>"><?=csrf_field()?><div class="col-md-3"><select class="form-select" name="valuation_method"><option>CMP</option><option>FIFO</option><option>LIFO</option></select></div><div class="col-md-4"><label class="form-check mt-2"><input class="form-check-input" type="checkbox" name="allow_negative_stock" value="1"> Autoriser le stock négatif</label></div><div class="col"><button class="btn btn-primary">Enregistrer</button></div></form></div></div><?php endif;?>
