need help on JS

Discussions related to customizing hooks. Hooks are documented at http://bigprof.com/appgini/help/advanced-topics/hooks/
Post Reply
fdissait
Posts: 28
Joined: 2019-07-24 07:57

need help on JS

Post by fdissait » 2023-08-25 08:45

Bonjour l'equipe.
J'ai une table colis_inventaire qui comporte un champ "perime".
Ce champ est calculé à OUI(ou NON) en fonction d'une date de peremption (look-up d'un autre fichier) et de la date (now). Ceci est écrit dans un hook.
Je souhaite avoir un message d'alarme lorsque perime = "OUI"
j'ai écrit un script JS qui fonctionne en update mais pas en insert ...
Que dois je modifier pour récupérer la variable 'perime' avant l'insert ...

Les fonctions AJAX que j'ai trouvées ne fonctionnent pas (console.log() par ex)

J'espère un conseil

Hello team.
I have a colis_inventaire table with a "perime" field.
This field is calculated at YES (or NO) based on an expiration date (look-up of another file) and the date (now). This is written in a hook. It works.
I want to have an alarm message when perime = "YES" on a new record creation (bar code scanning).
I wrote a JS script that works when update but not when i insert ...
What do I need to modify to retrieve the 'perime' variable before the insert ... and have alarm message ?

The AJAX functions I found don't work (e.g. console.log())
I have the plugin AppGiniHelper, but don't find the solution ...

I hope for advice
Thanks a lot
François


the colis_inventaire.php hook

function colis_inventaire_before_insert(&$data, $memberInfo, &$args)
{
/* récupérér valeurs des données*/
$date_inv = date("y");
/*de colis_inventaire*/
$id_inventaire = $data['inventaire'];
$id_batch= $data['code_colis'];
/*de inventaire*/
$inventaire = sqlValue("SELECT inventaire from inventaire where id = {$data['inventaire']}");
$famille = sqlValue("SELECT famille from inventaire where id = {$data['inventaire']}");
/*de batches*/
$code_colis = sqlValue("SELECT code_colis from batches where id = {$id_batch}");
$etat = sqlValue("SELECT etat from batches where id = {$id_batch}");
$en_cours = sqlValue("SELECT en_cours from batches where id = {$id_batch}");
$batches_inventaire = sqlValue("SELECT inventaire from batches where id = {$id_batch}");
$comment = sqlValue("SELECT commentaire from batches where id = {$id_batch}");
$quantite = sqlValue("SELECT quantity from batches where id = {$id_batch}");
$id_item= sqlValue("SELECT item from batches where id = {$id_batch}");
$DLU=sqlValue("SELECT DLU from batches where id = {$id_batch}");
/* de items */
$stock = sqlValue("SELECT balance from items where id = {$id_item}");
$section = sqlValue("SELECT section from items where id = {$id_item}");
$peremption = sqlValue("SELECT peremption from items where id = {$id_item}");

/*controle famille-section famille vient du lieu de l'inventaire section est les 2 nbr à gauche du code colis*/
/* numero section */
$section = substr($code_colis,0,2);
/* colis mal placé*/
if ($famille != $section)
{$msg_famille = "Malplace au ".$famille."<>".$section; }
else
{$msg_famille = "";}
/*validation etat par inventaire : adapte etat à ce qu'on trouve ou retrouve !!!*/
switch ($etat)
/*si etat est prepare*/
{
case "Prepare":
/* juste mettre $inventaire dans $batches_inventaire, laisser etat à Prepare pas de modif stock */
$batches_inventaire= $inventaire."-".$batches_inventaire;
$comment1 = $msg_famille.$comment;
$comment=$comment1;
break;
/*si etat est promis*/
case "Promis":
/* laisser état à promis, placer $inventaire dans $batches_inventaire pas de modif stock*/
$batches_inventaire= $inventaire."-".$batches_inventaire;
$comment1 = $msg_famille.$comment;
$comment = $comment1;
break;
/*si etat est perdu*/
case "Perdu":
/* le remettre prepare, corriger le stock, mentionner retrouve*/
$etat = "Prepare";
/*MAJ Stock dans items*/
$new_stock= $stock + $quantite;
sql(" update items set balance = '{$new_stock}' where items.id='{$id_item}'", $eo);
/* fin de MAJ stock*/
$batches_inventaire= $inventaire."-".$batches_inventaire;
$comment1 = $msg_famille.$comment;
$comment = $comment1;
$en_cours1=" Retrouve ".$now."(".$en_cours.")";
$en_cours=$en_cours1;
break;
/*si etat est autre : cad colis en principe sorti mais retrouve*/
default:
/* le remettre prepare, corriger le stock, mentionner retrouve*/
$etat = "Prepare";
/*MAJ Stock dans items*/
$new_stock= $stock + $quantite;
sql(" update items set balance = '{$new_stock}' where items.id='{$id_item}'", $eo);
/* fin de MAJ stock*/
$batches_inventaire= $inventaire."-".$batches_inventaire;
$comment1 = $msg_famille.$comment;
$comment = $comment1;
$en_cours1="Non parti Inv ".$date_inv."(".$en_cours.")";
$en_cours=$en_cours1;
}
/*calcule si perime*/
$perime="NON";
if ($peremption == "Avec")
{
$now = date("Y-m-d");
/*calcul etat de peremption*/
$origin = date_create($DLU);
$target = date_create($now);
$interval = date_diff($target, $origin );
$reste=$interval->format('%R%a'); // selon intervalle : perime MAJ et stus_DLU de batches MAJ
switch ($reste)
{
case ( $reste > 120):
$status = "" ;
break;
case ( $reste < 90):
$perime="OUI" ; $data['perime'] = $perime;
$status = "Perime" ;
$etat = $etat."(P)";

break;
case ( $reste < 120):
$perime="OUI" ; $data['perime'] = $perime;
$status = "Limite" ;
$etat = $etat."(L)";
break;
}
$data['perime'] = $perime;
sql(" update batches set status_DLU = '{$status}' where batches.id='{$id_batch}'", $eo);
}
/*fin calcul etat de peremption*/

/* dans tous les cas ecrire le nouvel état du batch scanné*/
$auteur=$memberInfo['username'];
$createur = "inventaire ".$auteur;
sql(" update batches set etat= '{$etat}', en_cours= '{$en_cours}', commentaire = '{$comment}', manufacturing_date= '{$now}', createur = '{$createur}', inventaire = '{$batches_inventaire}' where id='{$id_batch}' ", $eo );

return TRUE;
}


The colis_inventaire-dv.js :
function show_error(field, msg){ // this inspired from your udemy course field verifcation
modal_window({
message: '<div class="alert alert-danger">' + msg + '</div>',
title: 'Attention peremption',
close: function(){
$j('#' + field).focus();
$j('#' + field).parents('.form-group').addClass('has-error');
}
});

return false;
}

$j(function(){ //this because when insert the $j('#perime') is undefined
$j('#insert').click(function(){
/* Verifier si perime, est OUI */
var perime = '<?=$perime?>';
console.log(perime);
if (perime == "OUI"){
return show_error('Perime', "Votre colis est périmé, sortez le SVP, puis effacez cet enregistrement (bouton rouge)");
}
});
})


$j(function(){ // this inspired from your udemy course field verifcation
$j('#update').click(function(){
/* Verifier si perime, est OUI */
var perime = $j('#perime').val();
if (perime == "OUI"){
return show_error('Perime', "Votre colis est périmé, sortez le SVP, puis effacez cet enregistrement (bouton rouge)");
}
});
})


Yours, François

fdissait
Posts: 28
Joined: 2019-07-24 07:57

Re: need help on JS

Post by fdissait » 2023-09-21 06:46

Bonjour à tous,
j'ai trouvé une solution en utilisant dans les hooks, la possibilité de message personnalisé avec $args['error_message'] = "mon message".

Post Reply