Voila ma gestion de stock

79 messages dans ce sujet

Posté(e) · Signaler ce message

J'ajouterais juste qu'il faut ajouter le champ "stock" à la requet SQL qui ramenne les infos sur le produit ou s'il sagit d'une requete de type "select *", ça n'est pas la peine.

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

J'ajouterais juste qu'il faut ajouter le champ "stock" à la requet SQL qui ramenne les infos sur le produit ou s'il sagit d'une requete de type "select *", ça n'est pas la peine.

Willy

J'ai bien rajouter le champ stock dans la requete sql qui ramenne les infos sur le produit :

$sql = "SELECT p.id, p.reference, p.nom, p.promotion, p.descriptif, p.description, p.image1, p.prix, p.on_special, p.stock, p.typeenvoi, p.poids, pc.categorie_id FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND pc.categorie_id = $catid AND p.etat = 1 ORDER BY p.LIMIT $start,$nb";

jcdhl

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

J'ai crée le champ stock dans la table peel_produit

Sur la page achat/index.php je crée un champ de type 'hidden' pour mettre le stock et j'affiche le stock disponible sous forme de liste déroulante :

J'utilise cette même liste déroulante pour le caddie et pour la fiche détail du produit.

<input type="hidden" name="stock" value="<? echo $prod['stock']; ?>">

<span class="impression" >

<? if ($prod['stock']>0){

?>

Quantité :

<select name="qte" class="formulaire1">

<?php // Affiche la quantité en stock

$i=1;

while ($i<=$prod['stock'])

{

echo "<option value=\"$i\">$i</option>";

$i++;

}

?>

</select>

Et ensuite, j'ai modifié la page caddie_ajout.php comme ceci :

$_SESSION['caddie']->ajout($_REQUEST['id'], $_REQUEST['qte'], $_REQUEST['stock']);

$_SESSION['caddie']->nettoie();

$_SESSION['caddie']->recalc_total();

$HTTP_REFERER = $_SERVER['HTTP_REFERER'];

if (! empty($HTTP_REFERER)) {

header("Location: $HTTP_REFERER");

} else {

header("Location: $wwwroot/index.php");

}

Je peux donc tester lors de l'ajout si la quantité voulue n'est pas supérieure à la quantité disponible.

Cordialement

jcdhl

j'ai pas la même boucle que toi, j'ai essayé ton code et j'ai l'erreur

Parse error: parse error in c:\program files\easyphp1-8\www\aquarelle\lib\class\caddie.php on line 36
ligne 36
$this->articles[$produitid]=$stock];

la boucle" while" (la tienne) ou la boucle "for" (la mienne) fonctionne bien

Le probleme est la récupération de la variable $stock .Dans ton code je vois pas ou tu l'a déclaré au départ

Si je met la ligne 36 en commentaire=>plus d'erreur, l'ajout au panier fonctionne mais sans la condition

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonsoir,

J'avance pas mal dans l'implémentation de la gestion de stock d'Aquarelle avec des modifs personnelles

Tout est OK et marche très bien :D

Il reste un point sur lequel je bute, comment interdire une commande qui est en cours, pendant qu'une autre est validée et donc décrémente le stock

Le client qui a sa commande en cours pourra commander alors que le stock n'est pas OK !

Juste me dire vers quel endroit chercher, je pense que c'est dans fin_commande ou fonctions

mais je ne vois pas quoi faire

Merci beaucoup pour votre aide

Je pourrais en suite publier mes modifs pour en faire profiter tout le monde

Cdlt

Fabrice

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

ok, je vois ce que tu veux. si un client commande un article et qu'un autre client commande ce meme article il ne devrait pas pouvoir puisque l'article a déjà été mis au panier par le 1er client.

il faut créer une fonction stock virtuel à l'aide d'un timestamp qui serait présente sur toutes les pages du site ainsi que sur caddie_affichage

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonsoir,

Plus rapide que l'éclair pour répondre ! :wub:

Ta proposition dépasse mes compétences en PHP ! :D

Je sais vraiment pas faire !!

Il n'y a pas plus simple ?

Cdlt

Fabrice

www.etroc-mode.fr

ok, je vois ce que tu veux. si un client commande un article et qu'un autre client commande ce meme article il ne devrait pas pouvoir puisque l'article a déjà été mis au panier par le 1er client.

il faut créer une fonction stock virtuel à l'aide d'un timestamp qui serait présente sur toutes les pages du site.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

$this->articles[$produitid]=$stock];
Attention il y a une erreur là un "]" à la fin. Il faut mettre:
$this->articles[$produitid]=$stock;

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Attention il y a une erreur là un "]" à la fin.

Il faut mettre:

$this->articles[$produitid]=$stock;

Willy

merci Willy

c'était ça mon erreur maintenant reste la page achat/modeles_caddie a modifier car on peut changer la valeur de la quantité affichée :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Il faut changer ca et l'interdire.

Mettre juste un texte et non une zone de saisie, hophop :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

merci Willy

c'était ça mon erreur maintenant reste la page achat/modeles_caddie a modifier car on peut changer la valeur de la quantité affichée :D

Dans la page achat/modeles/caddie.php, il faut chercher la ligne :

<input type="text" size="3" name="quantite[]" value="<?php echo $quantite?>" />

Et la remplacer par :

<select name="quantite[]" class="formulaire1">

<?php // Affiche la quantité en stock

$i=1;

while ($i<=$prod['stock'])

{

echo "<option value=\"$i\"";

if ($i==$quantite) {echo" selected";}

echo " >$i</option>";

$i++;

}

?>

</select>

De cette façon, on a une liste déroulante avec la quantité en stock.

La condition sert à sélectionner la quantité qu'on a ajouté.

Il ne faut pas oublier de changer la fonction "recupere_articles_caddie" dans le fichier fonction.php pour avoir le stock disponible.

juste la requete sql :

$requete = "SELECT id, reference, nom, promotion, prix, tva, stock FROM peel_produits WHERE id IN ($in_clause)";

jcdhl

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Dans la page achat/modeles/caddie.php, il faut chercher la ligne :

<input type="text" size="3" name="quantite[]" value="<?php echo $quantite?>" />

Et la remplacer par :

<select name="quantite[]" class="formulaire1">

<?php // Affiche la quantité en stock

$i=1;

while ($i<=$prod['stock'])

{

echo "<option value=\"$i\"";

if ($i==$quantite) {echo" selected";}

echo " >$i</option>";

$i++;

}

?>

</select>

De cette façon, on a une liste déroulante avec la quantité en stock.

La condition sert à sélectionner la quantité qu'on a ajouté.

Il ne faut pas oublier de changer la fonction "recupere_articles_caddie" dans le fichier fonction.php pour avoir le stock disponible.

juste la requete sql :

$requete = "SELECT id, reference, nom, promotion, prix, tva, stock FROM peel_produits WHERE id IN ($in_clause)";

jcdhl

Bon tout est OKKKKKKK !

J'avais mis la boucle de la fiche produit et bien sur lorsque je cliquais sur mettre à jour mon caddie se vidait

Maintenant tout marche

Si tu es d'accord, j'essaye de récupérer tous les morceaux de codes que tu as fournis et je met à jour mon premier post tout en haut. Comme ça on regroupe tout c'est mieux .

merci :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Nikel !

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Nikel !

Avec toutes ces modifs j'ai un probléme

Lors de l'ajout au panier d'un produit, le montant total du panier affiche 0,00eurosTTC par exemple avec Nb de produits sélectionnés = 3

Sur la page caddie-affichage j'ai le prix total correct

Mon bon de commande est correct mais sur "confirmation" j'ai juste le port qui s'affiche.

Donc le probléme est ici au niveau de l'echo, je récupére pas la bonne valeur

		Montant total du panier :<br /> <font color="#CC0000"><b><?php echo fprix($_SESSION['caddie']->total); ?> € T.T.C</b></font>

Trouvé, j'ai écrasé la class caddie par celle d'origine et refais la modif dans function ajout modifiée

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

MISE A JOUR

J'ai récupéré tous les morceaux de codes que j'ai injecté dans mon premier post afin d'avoir toute la procédure au même endroit

Merci à Willy, jcdhl, atila-diffusion et vidubz001 pour leur collaboration à ce sujet :wub: :D :D :D

J'espére n'avoir rien oublié

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bravo c'est du beau travail, il faut que je test sa au plus vite. :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Salut tout le monde, je tiens deja a vous remerciez pour ce superbe travaille .

j ai juste remarquer que dans le tuto du script il y a juste une petite erreur d indication de ligne, c est pas grand chose mais pour les personne aussi doué que moi en php c est complexe lol.

A la place de la ligne 123 c est la ligne 36 voila voila.

la suite

Dans index.php vers lignes 123 environ, rajouter dans le select: stock

vers lignes 180 modifiez le formulaire comme ceci pour afficher le stock dans la liste déroulante

Sinon ca marche tres bien , mais quand j affiche le stock séparé de la page produit impossible d'ajouter du stock mais sinon sur la page produit aucun soucis et vu que je me sert que de la gestion de stock par la page produit ca ne me pose pas de probleme, je tenais juste a le signaler .

Merci encore @+

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Salut tout le monde, je tiens deja a vous remerciez pour ce superbe travaille .

j ai juste remarquer que dans le tuto du script il y a juste une petite erreur d indication de ligne, c est pas grand chose mais pour les personne aussi doué que moi en php c est complexe lol.

A la place de la ligne 123 c est la ligne 36 voila voila.

Sinon ca marche tres bien , mais quand j affiche le stock séparé de la page produit impossible d'ajouter du stock mais sinon sur la page produit aucun soucis et vu que je me sert que de la gestion de stock par la page produit ca ne me pose pas de probleme, je tenais juste a le signaler .

Merci encore @+

C'est corrigé, j'avais mis par rapport à mon fichier qui est pas mal rallongé.Par contre pour la gestion à part il doit manquer quelque chose dans ton fichier stock.php. T'as bien fais un copier/coller ? :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

C'est corrigé, j'avais mis par rapport à mon fichier qui est pas mal rallongé.Par contre pour la gestion à part il doit manquer quelque chose dans ton fichier stock.php. T'as bien fais un copier/coller ? :D

salut,

j ai fait un copier coller et j' ai vérifiée son contenu apres, tout est OK.

Ca doit le faire que chez moi vu que personne a dit quoi que ce soit.

Mais cela n'est pas grave car comme je l'ai dit je n'ai aucune erreur et la gestion en passant par la fiche produit marche nikel j'ai passer des commandes test pour voir et tout est ok

je me répète mais super taff

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

salut,

j ai fait un copier coller et j' ai vérifiée son contenu apres, tout est OK.

Ca doit le faire que chez moi vu que personne a dit quoi que ce soit.

Mais cela n'est pas grave car comme je l'ai dit je n'ai aucune erreur et la gestion en passant par la fiche produit marche nikel j'ai passer des commandes test pour voir et tout est ok

je me répète mais super taff

Bonjour,

J'ai moi aussi ce "problème" de rajout au niveau du stock à part... Quand je clic, sur ajouter rien ne se passe.

Par contre, j'ai un message du genre Undefined index: à la la ligne 16 ainsi que la 19 (au niveau de submit_ajouter et submi-supprime). Merci de votre aide

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

J'ai moi aussi ce "problème" de rajout au niveau du stock à part... Quand je clic, sur ajouter rien ne se passe.

Par contre, j'ai un message du genre Undefined index: à la la ligne 16 ainsi que la 19 (au niveau de submit_ajouter et submi-supprime). Merci de votre aide

bizarre,...... j'ai remis le fichier stock ici

recommencez le copier/coller

pour moi ça marche en local et en ligne :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour à tous, et bravo Aquarelle pour cette gestion de stock!

Une petite question : que se passe-t-il si la commande est annulée, ou si le client ne va pas jusqu'au bout et ne paye pas? Faut il remettre en place le stock "a la main"?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour à tous, et bravo Aquarelle pour cette gestion de stock!

Une petite question : que se passe-t-il si la commande est annulée, ou si le client ne va pas jusqu'au bout et ne paye pas? Faut il remettre en place le stock "a la main"?

la mise à jour du stock se faisant automatiquement au moment de la validation de la commande, si celle ci est annulée ou pas honorée il faut remettre manuellement le stock, en attendant d'avoir un script pour le faire. :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

la mise à jour du stock se faisant automatiquement au moment de la validation de la commande, si celle ci est annulée ou pas honorée il faut remettre manuellement le stock, en attendant d'avoir un script pour le faire. ;)

Dans le fichier administrer/commandes.php, on peut remplacer la fonction efface commande par celle ci :

function efface_commande($id) {

/* Efface la commande dont le n° est $id */


	global $wwwroot;

	$articles_commande=mysql_query("select * from peel_commandes_articles where commande_id='$id'");

	$nombre_articles=mysql_num_rows($articles_commande);

	for($i=1;$i<=$nombre_articles;$i++) {

		$fiche=mysql_fetch_object($articles_commande);

		$produit=$fiche->produit_id;

		$quantite=$fiche->quantite;

		$article_maj=mysql_query("update peel_produits set stock=stock+$quantite where id='$produit'");

	}



	$efface_commandes = mysql_query("DELETE FROM peel_commandes WHERE id = '$id'");

	$efface_commandes_articles = mysql_query("DELETE FROM peel_commandes_articles WHERE commande_id = '$id'");

	include("modeles/commande_efface.php");

}

Cette fonction ne remet pas l'objet visible en boutique s'il a été précédemment rendu invisible, je ne sers pas dans la boutique que je modifie de cette possibilité, j'affiche un "rupture de stock" lorsque le stock est à 0!

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Dans le fichier administrer/commandes.php, on peut remplacer la fonction efface commande par celle ci :

function efface_commande($id) {

/* Efface la commande dont le n° est $id */


	global $wwwroot;

	$articles_commande=mysql_query("select * from peel_commandes_articles where commande_id='$id'");

	$nombre_articles=mysql_num_rows($articles_commande);

	for($i=1;$i<=$nombre_articles;$i++) {

		$fiche=mysql_fetch_object($articles_commande);

		$produit=$fiche->produit_id;

		$quantite=$fiche->quantite;

		$article_maj=mysql_query("update peel_produits set stock=stock+$quantite where id='$produit'");

	}

	$efface_commandes = mysql_query("DELETE FROM peel_commandes WHERE id = '$id'");

	$efface_commandes_articles = mysql_query("DELETE FROM peel_commandes_articles WHERE commande_id = '$id'");

	include("modeles/commande_efface.php");

}
Cette fonction ne remet pas l'objet visible en boutique s'il a été précédemment rendu invisible, je ne sers pas dans la boutique que je modifie de cette possibilité, j'affiche un "rupture de stock" lorsque le stock est à 0!
Bravo, si le script au moment de la commande met l'article "hors ligne" si stock=0, il faut remettre cet article en ligne puisque stock positif
	// on remet le produit en ligne  quand  stock positif

				$requete_online = "UPDATE peel_produits SET etat =1 WHERE id = '".$produit."'";

				mysql_query($requete_online);

;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bravo, si le script au moment de la commande met l'article "hors ligne" si stock=0, il faut remettre cet article en ligne puisque stock positif

	// on remet le produit en ligne  quand  stock positif

				$requete_online = "UPDATE peel_produits SET etat =1 WHERE id = '".$produit."'";

				mysql_query($requete_online);

;)

Bonjour Aquarelle,

Encore merci pour ta contribution à faire avancer le schmilblik ! ;)

Fabrice

www.etroc-mode.fr

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping