Jump to content

[Amélioration] Récapitulatif des Ventes détaillé


Recommended Posts

[Contribution - Amélioration]
/// RECAPITULATIF DES VENTES \\\ par EnveloppeBulle.com

Version : 0.1 (29/10/2009)
Fonctionne sur prestashop v1.1.0.5 (au moins)


Petite contribution (fonctionnelle) permettant d'afficher un récapitulatif détaillé des ventes dans le back office.

L'installation est très simple car elle ne modifie rien d'essentiel, ni dans la BDD, ni dans les fichiers système.

Note 1 : je ne suis pas développeur expérimenté, donc le code n'est pas optimisé.
Note 2 : la contribution a été développée "sur mesure", et ne demande qu'à être améliorée pour être totalement dynamique selon les shops (exemple : transporteurs en dur dans le récapitulatif final)
Note 3 : désolé, je sais que je ne commente pas beaucoup mon code, mais il est très compréhensible.
Note 4 : je sais que je ne suis pas très rigoureux sur l'emplacement des fichiers (images, js, etc..), alors si vous voulez les placer ailleurs, à vous de voir, mais pensez à tout rediriger les liens et inclusions.
Note 5 : cette contribution ne s'adresse toutefois pas aux développeurs débutants, car il faut pouvoir lire et comprendre le code pour effectuer les modifications nécessaires à une bonne intégration.



[iNSTALLATION]

1) Copier les fichiers packed.js, script.js, style.css et Recap.php dans votre dossier ADMIN
2) copier le dossier IMAGES dans votre dossier ADMIN
3) faites un backup de votre fichier ADMIN/TABS/AdminInvoices.php (au cas où cette amélioration ne vous plairait pas)
4) remplacer le fichier ADMIN/TABS/AdminInvoices.php (par celui fourni)

EDIT : j'avais oublié de préciser qu'il fallait modifier la fonction "getOrdersIdByDate" dans class/Order.php. En effet, celle-ci récupère les commandes par date d'ajout/création, et nous (moi) on voudrait les récupérer quand elles sont vraiment validées, c'est à dire par date de facture.
pour ce faire, dans la fonction (ligne 424), remplacez :

WHERE DATE_ADD(date_add, INTERVAL -1 DAY) <= \''.$date_to.'\' AND date_add >= \''.$date_from.'\''


par :

        WHERE DATE_ADD(`invoice_date`, INTERVAL -1 DAY) <= \''.$date_to.'\' AND `invoice_date` >= \''.$date_from.'\''





[uTILISATION]
Dans votre back Office, allez dans l'onglet "Commandes", puis dans le sous-menu "Factures". La box "Générer le récapitulatif" est apparue : sélectionnez des dates, et c'est parti ! :)

------------------------------------------------


à faire : (si quelqu'un pouvait donner un coup de main, merciiii)


- Modifier le système de transfert des factures au fichier Recap.php (= pour le moment, c'est passé dans l'URL, mais cela a ses limites, notamment en cas d'un fort volume de données)


- mettre en place un vrai système de pagination (ici Toutes les commandes sont en réalité affichées, mais le tableau en js cache juste le reste)


- afficher les dates (étendue de dates des factures) sur le récap.


- tester sur toutes versions Presta


 




NOUVELLE VERSION 0.2 DISPONIBLE => gestion des dates DANS le fichier, gestions des avoirs, gestion des commandes annulées, plus je js et plus d'images ! :) + SIMPLE !

- EnveloppeBulle decline all responsabilty, if the installation of this files cause dommages on your shop / EnveloppeBulle décline toute responsabilité, si l'installation de ces fichiers cause des sommages sur votre boutique -

amelioration_RDF_v0.1.zip

13764_ybTdnO3kysIcs5JcPslz_t

20086_a1baKkTFusrrGvKTlwdh_t

amelioration RDF 0.2.zip

Link to comment
Share on other sites

Merci pour cette contrib qui à l'air tres utile.

J'ai quelques problemes d'affichage du tableau généré:

Sur FF3 cela semble OK
par contre sur Explorer 7 j'ai une erreur et je ne peux afficher le tableau
et sur Chrome il y a des problemes d'affichage: décalages, parfois il manque le nom, parfois il manque le produit ???

j'utilise windows XP

Si on pouvait exporter le tabeau ce serait tres bien.

13766_Jnii2zr118YE3M1wBMdt_t

Link to comment
Share on other sites

pb d'affichage : alors comme ça, à priori, sans regarder, je dirais que tout vient du script js que j'ai récupéré pour générer le tableau : à l'origine il permettait de trier les colonnes etc... mais finalement, c'est inutile, étant donné la conception, les tris ne sont pas possible... enfin bref.
Là où je n'ai pas assuré, c'est sur les tests de plateforme : j'ai omis ces tests, désolé. En effet, je n'utilise pas chrome, je n'ai que IE8 et FF (dernière version).
Je pense qu'il faudrait simplement générer le tableau autrement, sans passer le script de tableau.

ps : je confirme qu'on ne s'en sortirait pas sans ce genre de tableau récapitulatif pour suivre nos ventes et répartir/attribuer les montants pour chaque chose :)

Link to comment
Share on other sites

  • 4 weeks later...

petit oubli de ma part (pour un bon fonctionnement) :
EDIT : j'avais oublié de préciser qu'il fallait modifier la fonction "getOrdersIdByDate" dans class/Order.php. En effet, celle-ci récupère les commandes par date d'ajout/création, et nous (moi) on voudrait les récupérer quand elles sont vraiment validées, c'est à dire par date de facture.
pour ce faire, dans la fonction (ligne 424), remplacez :

WHERE DATE_ADD(date_add, INTERVAL -1 DAY) <= \''.$date_to.'\' AND date_add >= \''.$date_from.'\''


par :

        WHERE DATE_ADD(`invoice_date`, INTERVAL -1 DAY) <= \''.$date_to.'\' AND `invoice_date` >= \''.$date_from.'\''

Link to comment
Share on other sites

Bon alors, de mon côté, j'ai fait une modif sympa ! :)

voici un nouveau fichier Recap.php qui fonctionne toujours pareil (à première vue) mais qui propose maintenant, en bas de page, un tableau permettant de choisir directement un mois donné ou une plage de dates pet qui execute directement les requêtes pour trouver les commandes correspondantes ! ça a l'air de rien.. mais c'est très utile !
De plus, j'ai ajouté en début de page l'affichage du mois ou plage de date correspondante.

Pour ceux chez qui la pagination (ou de manière générale : le tableau) pose problème, mettez en commentaire de la ligne 213 à la ligne 227. En enlevant l'intération du script, ça doit fonctionner (mais attention si vous lister un grand nombre de commandes !)

Enfin, pour bien paramétrer la nouvelle fonctionnalité ajoutée, vous devez spécifier la date de début d'activité de vos ventes à la ligne 330

Voili voilà, ça reste un peu de la bidouille, c'est aps très propre, mais encore une fois, ça m'est très utile.

(Si vous découvrez une faille de sécurité, merci de le signaler !)

Recap.php

Link to comment
Share on other sites

ahahah lol ! mdr ! lol ! ptdr ! ahahah ! lol !! : c'est en ces quelques mots que j'exprime ma surpise amusée de constater un petit bug bien sympathique dans prestashop !!!

en effet, dans la bdd, les dates des factures sont de la forme "AAAA-MM-JJ HH:MM:SS" OR les requêtes sont faites sur AAAA-MM-JJ !!!
Ce qui fait que la requête exclu le dernier jour !! et oui car quand on ne précise pas l'heure, alors par défaut ce la met AAAA-MM-JJ 00:00:00, soit minuit, soit (en mysql) le début de la journée !!!

Donc à modifier :



- le fichier Recap.php (lignes 67-68)
remplacer

$date_deb="$annee_deb-$mois_deb-$jour_deb";
$date_fin="$annee_fin-$mois_fin-$jour_fin";


par

$date_deb="$annee_deb-$mois_deb-$jour_deb 00:00:00";
$date_fin="$annee_fin-$mois_fin-$jour_fin 23:59:59";




- la classe Order.php // pour que cela fonctionne aussi depuis le tab admin
après ligne 424, dans fonction "getOrdersIdByDate"
remplacer

WHERE DATE_ADD(`invoice_date`, INTERVAL -1 DAY) <= \''.$date_to.'\' AND `invoice_date` >= \''.$date_from.'\''


par

WHERE DATE_ADD(`invoice_date`, INTERVAL -1 DAY) <= \''.$date_to.' 23:59:59\' AND `invoice_date` >= \''.$date_from.' 00:00:00\''



Donc voilà : LOL (comme on dit) :)

PS : j'ai intégré la notion d'avoir afin de les décompter du récap des factures.. je posterai une version + finalisée ultérieurement.

Link to comment
Share on other sites

  • 4 weeks later...
  • 2 months later...
  • 3 weeks later...

super outil qui répond à un réel besoin (ou plutôt une faiblesse de PS qui manque cruellement d'édition multi-critères)

... il faudrait le coup de main d'un développeur confirmé pour nettoyer le code, notamment 2 choix sont "arbitraires" et "bloquants"

- le calcul de la TVA est forcé à 19.6 dans le code php :
=> impact notamment pour les autoentrepreneur qui n'ont pas de TVA
- le statut de commande à ne pas prendre en compte est forcé à "6" dans le code php alors qu'il y a un attribut pour chaque statut de commande : case à cocher "considérer la commande associée comme validée" :
=> impact pour les commandes au statut "remboursé"

... c'est 30mn de boulot pour un dév. confirmé ... à vot'bon coeur, M'sieur M'dame :-)

Eric

http://www.distrisonic.fr

Link to comment
Share on other sites

  • 1 month later...

Bonjour

ca fait une heure que j essaye de faire fonctioner votre module mais j ai cette ligne d erreur

Parse error: syntax error, unexpected $end in C:\xampplite\htdocs\watkins\mon-dossier-admin\Recap.php on line 382
Je comprend pas c est la balise de fermeture de la balise php
?>

Est ce qu'une personne as déjà eut ce soucis

Merci de vos réponses

Cordialement Didier

Version 1.2.5.0 - 0.154s

Link to comment
Share on other sites

  • 4 months later...
  • 2 weeks later...
  • 1 month later...

Bonjour,
Voila les modifs que j'ai faites... sur le fiche "Recap" pour pouvoir afficher différents résultats pour "tout public" et "professionnels". C'est à dire: Tout public - prix de vente TTC, professionnels - prix de vente HT. Le problème étant le fait, que dans le fichier d'origine le TVA est fixé à 19,6%. Pour ce faire (désolé pour l'affichage):

Au niveau de ligne 143 j'ai ajouté le "id_défault_group"

$result = Db::getInstance()->getRow('
SELECT `'._DB_PREFIX_.'customer`.id_default_group AS id_group, `'._DB_PREFIX_.'orders`.*,`'._DB_PREFIX_.'customer`.firstname,`'._DB_PREFIX_.'customer`.lastname,`'._DB_PREFIX_.'carrier`.name AS carrier_name
FROM `'._DB_PREFIX_.'orders`
LEFT JOIN `'._DB_PREFIX_.'customer` ON `'._DB_PREFIX_.'orders`.id_customer=`'._DB_PREFIX_.'customer`.id_customer
LEFT JOIN `'._DB_PREFIX_.'carrier` ON `'._DB_PREFIX_.'orders`.id_carrier=`'._DB_PREFIX_.'carrier`.id_carrier
WHERE id_order = '.intval($id_order).'') ;

Au niveau de ligne 221 j'ai modifié:


//prix de vente
if ($result['id_group'] != 1) {
if ($nb_cancelled != 0) {
print "".money_format('%8.2i', $val['product_price']*$val['product_quantity'])." (- ".money_format('%8.2i', $val['product_price']*$nb_cancelled).")";
$total_avoir += money_format('%8.2i', $val['product_price']*$nb_cancelled);
} else {
print "".money_format('%8.2i', $val['product_price']*$val['product_quantity'])."";
}
} else {
if ($nb_cancelled != 0) {
print "".money_format('%8.2i', ($val['product_price']+(($val['product_price']/100)*$val['tax_rate']))*$val['product_quantity'])." (- ".money_format('%8.2i', ($val['product_price']+(($val['product_price']/100)*$val['tax_rate']))*$nb_cancelled).")";
$total_avoir += money_format('%8.2i', ($val['product_price']+(($val['product_price']/100)*$val['tax_rate']))*$nb_cancelled);
} else {
print "".money_format('%8.2i', ($val['product_price']+(($val['product_price']/100)*$val['tax_rate']))*$val['product_quantity'])."";
}
}


Voila..., chez moi ca fonctionne

Link to comment
Share on other sites

Re-bonjour,

J'ai besoin d'un conseil. J'aimerais pouvoir afficher en bas (fiche "Recap"), dans la partie "Recapitulatif", à la place de total ventes - Total ventes France/Total ventes autre (CEE en occurrence). C'est la demande de mon comptable, car nous avons des clients à l'étranger.

Qqn aurait une idée?

Merci d'avance

Link to comment
Share on other sites

Salut,

Alors, j'ai résolu mon soucis de récap de factures en PDF qui ne marchait plus.
Certes la technique pourra déplaire aux dev mais bon ça marche. ;-)

Je n'ai pas encore identifié ce qui cloche, mais lors de l'installation sous la dernière version de preta, le fichier AdminInvouces.php a été modifié.
J'ai pas voulu remplacer le code mais inclure les modification dans le fichier d'origine, ce qui a causé le bug :red:

Vala.

PS : Le copier collé sous excel pour le retravailler pour la compta fonctionne au fait. Ce module devrait être inclut dans presta tellement il est utile, surtout quand on se tape la compta comme moi ^^

Bonne continuation !!

Link to comment
Share on other sites

  • 2 months later...

Bonjour,

Merci pour cette amélioration qui m'a été très utile jusqu'à maintenant.

Aujourd'hui j'utilise la vers. 1.3 de Prestashop, alors n'est-il pas possible de la rendre compatible ou existe-t-il un module similaire qui permettrait de faire un récapitulatif des commandes ou du CA par période ?

Vous remerciant par avance de votre réponse et votre aide.
Bonne journée.
Cordialement.
Fred.

Link to comment
Share on other sites

  • 2 months later...
  • 2 months later...

Bonjour,

Je suis à la recherche d’un module me permettant d’avoir un récapitulatif des ventes sur une période que je pourrai définir en amont.

J’ai vu les posts ci-dessus avec le code proposé qui s’approchent beaucoup de ce dont j’ai besoin notamment mais je ne suis pas un développeur et donc incapable d’utiliser ce code donné. Je cherche un développeur pour m'installer ce code sur mon site.

Ce récapitulatif des ventes doit contenir
-Numéro de la facture
-le nom du client
-la date de paiement
-la dénomination du produit acheté
-le montant total HT
-le montant total TTC
-la TVA totale
-les frais de port HT
-les frais de port TTC

-les avoirs

Aussi, je n’ai trouvé aucun module “récapitulatif des ventes”.
Est-ce que quelqu’un pourrai m’en dire plus, voir m’intégrer ce code/ module (?) sur mon site ?

En vous remerciant,
cordialement
sebastien.

Link to comment
Share on other sites

  • 4 months later...

Ce module fonctionne t il sous PS 1.4?

 

Il serait intéressant d'inclure le prix d'achat dans le tableu pour en déduire les marges

 

Par exemple sur une vente on enlève le prix d'achat, le port et les frais liés à paypal et on sait combien on a gagné net!!

Link to comment
Share on other sites

  • 2 weeks later...

merci pour cet outils très sympa, ca va me permettre de ne plus imprimer de factures.

 

par contre j'ai vu qu'il avait l'air de ne pas être compatible avec la v1.4 et c'est bien dommage.(je suis en train de faire un 2e site et ce serait pas mal de pouvoir imprimer ce tableau.)

qqun aurait il une idée de ce qu'il faudrait faire pour l'adapter?

merci d'avance.

Link to comment
Share on other sites

je précise que j'ai cette erreur:

"Parse error: syntax error, unexpected $end in C:\xampp\htdocs\monsoinbio\admin_msbl\Recap.php on line 413"

 

il s'agirait d'une erreur de syntaxe accolade manquante ou autre mais dans ce cas pourquoi cela fonctionne sur ma version 1.2.5?

 

j'ai essayé de chercher d'ou ca pouvais venir mais je ne vois pas. le problème viens du fichier recap.php et je suis sure que ca ne dois pas être trop compliqué de corriger le pb pour qqun qui s'y connais un peu.

merci d'avance.

Link to comment
Share on other sites

  • 2 months later...
  • 6 months later...

Bonjour,

j'ai installé le module sur PS 1.4.8.2 en local avec XAMPP

je n'ai aucun message d'erreur mais, le recapitulatif est incomplet.

j'aimerai savoir quelle marche à suivre pour le faire fonctionner correctement

merci

Link to comment
Share on other sites

  • 10 months later...
  • 1 year later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...