GSG – Mon stock est passé a zéro.

Vous êtes nombreux a me demander chaque année pourquoi mon stock de GSG est passé à zéro ou pourquoi il est négatif au début janvier. La réponse est simple. La période de calcule, comme vous avez pu remarqué, est de Janvier à Décembre de l’année en cours. Pour avoir un suivie de stock il vous faut créer la nouvelle période et reporté le nombre de sacs restants dans reliquat. Cela vous n’empêche pas d’ajouter ou modifier par la suite votre stock en cours. Un petit tuto en image explique mieux la procédure a suivre.

Procédure de création de nouvelle période
Gestion de Chauffage / Stock de Granulés (GSG).

  1. Relever la quantité de sacs restant dans onglet Statistiques en sélectionnant l’année précédente.
    Nous somme en 2017 donc nous sélectionnons 2016 et obtenons 135
    GSG_sacs_restants
  2. Maintenant il faut saisir cette quantité dans la case Reliquat de l’onglet administration/paramétrage
    Dans la case Stock vous pouvez saisir la quantité acheté en 2017 ou 0
    GSG_parametrage_administration
  3. Il vous reste d’appuyer sur le bouton Nouveau.
    GSG_parametrage_administration

Si plus tard vous faites acquisition de quelques sacs de granulés vous pouvez toujours saisir cette quantité dans la case stock puis appuyer sur le bouton MAJ pour mettre à jour votre Stock total.
GSG_parametrage_administration

💡  Attention de bien appuyer sur MAJ et NON Nouveau.

Si vous avez des questions n’hésitez pas de les poser ici 🙂

13 réflexions au sujet de « GSG – Mon stock est passé a zéro. »

  1. Bonjour.

    Je vais prochainement être équipé d’un poêle à pellets et je viens d’installer ton logiciel sur une machine de test.

    Tout est OK sauf qu’à l’ouverture de la page principale, j’ai des messages d’erreur :

    ( ! ) Notice: Undefined index: json in C:\wamp\www\gsg\config\json.php on line 9
    Call Stack
    # Time Memory Function Location
    1 0.0011 410248 {main}( ) ..\index.php:0
    2 0.0030 520416 include_once( ‘C:\wamp\www\gsg\config\json.php’ ) ..\index.php:8

    ( ! ) Notice: Undefined index: an in C:\wamp\www\gsg\config\json.php on line 11
    Call Stack
    # Time Memory Function Location
    1 0.0011 410248 {main}( ) ..\index.php:0
    2 0.0030 520416 include_once( ‘C:\wamp\www\gsg\config\json.php’ ) ..\index.php:8

    ( ! ) Notice: Undefined variable: Tannee in C:\wamp\www\gsg\config\json.php on line 136
    Call Stack
    # Time Memory Function Location
    1 0.0011 410248 {main}( ) ..\index.php:0
    2 0.0030 520416 include_once( ‘C:\wamp\www\gsg\config\json.php’ ) ..\index.php:8

    ( ! ) Notice: Undefined variable: Ttotalconso in C:\wamp\www\gsg\config\json.php on line 137
    Call Stack
    # Time Memory Function Location
    1 0.0011 410248 {main}( ) ..\index.php:0
    2 0.0030 520416 include_once( ‘C:\wamp\www\gsg\config\json.php’ ) ..\index.php:8

    ( ! ) Notice: Undefined variable: Ttotalcout in C:\wamp\www\gsg\config\json.php on line 138
    Call Stack
    # Time Memory Function Location
    1 0.0011 410248 {main}( ) ..\index.php:0
    2 0.0030 520416 include_once( ‘C:\wamp\www\gsg\config\json.php’ ) ..\index.php:8

    Pour les 2 premières erreurs, j’ai corrigé le début du fichier json.php :

    require(‘config.inc.php’);
    if (isset($_GET[‘json’]))
    $json = htmlspecialchars($_GET[« json »]);
    else
    $json=0;
    //on determine l’année en cours par deffaut
    if (isset($_GET[‘annees_list’]))
    $annees_list = htmlspecialchars($_GET[« annees_list »]);
    else
    $annees_list=date(‘Y’);

    Pour les 3 autres erreurs, c’est juste que tu utilises des variables (Tannee, Ttotalconso, Ttotalcout) pour concaténer les données mais elles ne sont pas initialisées.

    De plus, en ajoutant les séparateurs ‘,’, tu es obligé de faire tes substr pour virer la dernière virgule qui ne sert à rien.

    Voilà, un code plus propre :

    $TabAnnee = array();
    $TabConso = array();
    $TabCout = array();
    $TabHisto = mysql_query(« SELECT * FROM `Cout_consomme_an` « , $Conn) or die(mysql_error());
    $nbr_ligne = mysql_num_rows($TabHisto);
    while ($r = mysql_fetch_array($TabHisto)) {
    $TabAnnee[] = $r[‘annee’];
    $TabConso[] = $r[‘totalconso’];
    $TabCout[] = $r[‘totalcout’];
    }
    $Tannee=implode(‘, ‘, $TabAnnee);
    $Ttotalconso=implode(‘, ‘, $TabConso);
    $Ttotalcout=implode(‘, ‘, $TabCout);

  2. Sinon, pour pinailler, tu utilises souvent (dans cet article ou dans les pages PHP), le terme calcul avec e (calculE ou calculEs), il n’y en a pas.

    Pour remplir la combo-box des années dans la page des statistiques :

    index.php :

    <?php
    $fin = count($annees);
    $flag_an = 0;
    foreach ($annees as $value)
    {
    if ($value != $annees_list)
    echo '’.$value. » ;
    else
    {
    echo  ».$value. » ;
    $flag_an = 1;
    }
    }
    if ($flag_an == 0)
    echo  ».$annees_list. » ;
    ?>

    json.php :

    //Creation de tableau annees avec les valeurs uniques
    $res = mysql_query(« SELECT DISTINCT YEAR(`time`) AS annee FROM `granules_conso` », $Conn) or die(mysql_error());
    $annees = array();
    while($data=mysql_fetch_array($res))
    $annees[] = $data[« annee »];

    et aussi :

    //on détermine l’année en cours par defaut
    if (isset($_GET[‘an’]))
    $annees_list = htmlspecialchars($_GET[« an »]);
    else
    $annees_list=date(‘Y’);

  3. Correction du fichier verif.php pour ne pas avoir d’erreur lors de l’extraction des paramètres de l’URL selon le type de formulaire validé :

    <?php
    /*****************************************************************************/
    /*** File : verif.inc.php ***/
    /*** Author : R.SYREK ***/
    /*** WWW : http://domotique-home.fr ***/
    /*** Note : Configuration file ***/
    /*****************************************************************************/

    include_once('config/config.inc.php');

    $msg = htmlentities($_POST['msg']);

    if ($msg == 1)
    {
    $stock = htmlspecialchars($_GET["stock"]);
    $prixsac = htmlentities($_POST['prixsac']);
    $reliquat = htmlentities($_POST['reliquat']);
    if(empty($stock))
    {
    echo "alert(\ »Veuillez renseigner le champ \253Nombre de sacs achet\351s\273.\ »); »;
    header (« Refresh: 0;URL=admin.php »);
    exit();
    }
    if(empty($prixsac))
    {
    echo « alert(\ »Veuillez renseigner le champ \253Prix de sac\273\ »); »;
    header (« Refresh: 0;URL=admin.php »);
    exit();
    }
    try
    {
    $bdd = new PDO(‘mysql:host=’.$hostname.’;dbname=’.$database, $username, $password);
    }
    catch(Exception $e)
    {
    die(‘Erreur : ‘.$e->getMessage());
    }
    $reponse = $bdd->query(« SELECT MAX(id) as DId FROM domotique_granules_stock »);
    $donnees= $reponse->fetch();
    $lastID = $donnees[‘DId’];
    $bdd->exec(« UPDATE domotique_granules_stock SET stockIni = $stock, prixsac = $prixsac, reliquat = $reliquat WHERE id = $lastID »);
    echo « alert(\ »Les donn\351es ont bien \351t\351 enregistr\351es.\ »); »;
    header (« Refresh: 0;URL=admin.php »);
    }

    if ($msg == 11)
    {
    $stock = htmlspecialchars($_GET[« stock »]);
    $prixsac = htmlentities($_POST[‘prixsac’]);
    $reliquat = htmlentities($_POST[‘reliquat’]);
    if(empty($stock))
    {
    echo « alert(\ »Veuillez renseigner le champ \253Nombre de sacs achet\351s\273.\ »); »;
    header (« Refresh: 0;URL=admin.php »);
    exit();
    }
    if(empty($prixsac))
    {
    echo « alert(\ »Veuillez renseigner le champ \253Prix de sac\273\ »); »;
    header (« Refresh: 0;URL=admin.php »);
    exit();
    }
    try
    {
    $bdd = new PDO(‘mysql:host=’.$hostname.’;dbname=’.$database, $username, $password);
    }
    catch(Exception $e)
    {
    die(‘Erreur : ‘.$e->getMessage());
    }
    $bdd->exec(« INSERT INTO domotique_granules_stock(stockIni, prixsac, reliquat) VALUES($stock, $prixsac, $reliquat) »);
    echo « alert(\ »Les donn\351es ont bien \351t\351 enregistr\351es.\ »); »;
    header (« Refresh: 0;URL=admin.php »);
    }

    if ($msg == 2)
    {
    $date1 = htmlentities($_POST[‘date1’]);
    $date1 = substr($date1,6,4). »-« .substr($date1,3,2). »-« .substr($date1,0,2);
    $date1 = date(‘Y-m-d’, strtotime($date1));
    $date2 = htmlentities($_POST[‘date2’]);
    $date2 = substr($date2,6,4). »-« .substr($date2,3,2). »-« .substr($date2,0,2);
    $date2 = date(‘Y-m-d’, strtotime($date2));
    $date3 = htmlentities($_POST[‘date3’]);
    $date3 = substr($date3,6,4). »-« .substr($date3,3,2). »-« .substr($date3,0,2);
    $date3 = date(‘Y-m-d’, strtotime($date3));
    try
    {
    $bdd = new PDO(‘mysql:host=’.$hostname.’;dbname=’.$database, $username, $password);
    }
    catch(Exception $e)
    {
    die(‘Erreur : ‘.$e->getMessage());
    }
    $bdd->exec(« UPDATE domotique_granules_entretiens SET regulier = ‘$date1’, mensuel = ‘$date2’, annuel = ‘$date3’ WHERE id = 1 »);
    echo « alert(\ »Les donn\351es ont bien \351t\351 enregistr\351es.\ »); »;
    header (« Refresh: 0;URL=admin.php »);
    }

    if ($msg == 3)
    {
    $info = htmlentities($_POST[‘info’]);
    try
    {
    $bdd = new PDO(‘mysql:host=’.$hostname.’;dbname=’.$database, $username, $password);
    }
    catch(Exception $e)
    {
    die(‘Erreur : ‘.$e->getMessage());
    }
    $bdd->exec(« UPDATE domotique_granules_entretiens SET info = $info WHERE id = 1 »);
    echo « alert(\ »Les donn\351es ont bien \351t\351 enregistr\351es.\ »); »;
    header (« Refresh: 0;URL=admin.php »);
    }

    if ($msg == 4)
    {
    $PushingBox = htmlentities($_POST[‘PushingBox’]);
    $PushingBoxTitre1 = htmlentities(addslashes($_POST[‘PushingBoxTitre1’]));
    $PushingBoxMsg1 = htmlentities(addslashes($_POST[‘PushingBoxMsg1’]));
    $PushingBoxTitre2 = htmlentities(addslashes($_POST[‘PushingBoxTitre2’]));
    $PushingBoxMsg2 = htmlentities(addslashes($_POST[‘PushingBoxMsg2’]));
    $PushingBoxTitre3 = htmlentities(addslashes($_POST[‘PushingBoxTitre3’]));
    $PushingBoxMsg3 = htmlentities(addslashes($_POST[‘PushingBoxMsg3’]));
    try
    {
    $bdd = new PDO(‘mysql:host=’.$hostname.’;dbname=’.$database, $username, $password);
    }
    catch(Exception $e)
    {
    die(‘Erreur : ‘.$e->getMessage());
    }
    $bdd->exec(« UPDATE domotique_granules_entretiens SET PushingBox = ‘$PushingBox’, PushingBoxTitre1 = ‘$PushingBoxTitre1’, PushingBoxMsg1 = ‘$PushingBoxMsg1’, PushingBoxTitre2 = ‘$PushingBoxTitre2’, PushingBoxMsg2 = ‘$PushingBoxMsg2’, PushingBoxTitre3 = ‘$PushingBoxTitre3’, PushingBoxMsg3 = ‘$PushingBoxMsg3’ WHERE id = 1 »);
    echo « alert(\ »Les donn\351es ont bien \351t\351 enregistr\351es.\ »); »;
    header (« Refresh: 0;URL=admin.php »);
    }
    ?>

  4. Effectivement, ça marche mieux maintenant :p

    Sinon, dans admin.php, j’ai rajouté un test supplémentaire :

    if (isset($_GET[‘an’]))
    $annees_list = htmlspecialchars($_GET[« an »]);
    else
    {
    $results = mysqli_query($Conn, « SELECT YEAR(`time`) AS annee FROM `granules_stock` ORDER BY time DESC LIMIT 1 ») or die(mysql_error());
    $row = mysqli_fetch_array($results);
    $annees_list = $row[‘annee’];
    if (is_null($annees_list))
    $annees_list = date(‘Y’);
    }

    Car j’ai purgé la base de tes données pour n’avoir que mes futures consommations et ça plantait car annees_list était null.

  5. Ta version 1.6 n’embarque pas le fichier verif.php que j’avais donné dans un de mes commentaires précédents (celui de 10 janvier 2017 at 10 h 08 min)

  6. Ping : Gestion de Chauffage / Stock de Granulés (GSG) | Domotiques Home

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *