Prefix pour numéro de commande

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Astuce] Prefix pour numéro de commande

    Bonjour,
    après de vaine recherches pour avoir une numérotation des commandes du genre CDW09-000012 , j'ai modifié tout plein de fichiers pour l'obtenir.
    Versions:
    Joomla 1.5.14
    Virtuemart 1.1.3
    'Sending Invoice, Delivery Note, Receipt via Email' addon de Phoca

    1- Modification : administrator/components/com_virtuemart/languages/common/french.php
    Ajout de :
    'VM_DELIVERY_INVOICE_CODE' => 'FAW',
    'VM_DELIVERY_ORDER_CODE' => 'CDW',
    'VM_DELIVERY_DELIVERY_CODE' => 'BLW',
    2- Modification code (affichage liste des commandes): /administrator/components/com_virtuemart/html/order.order_list.php

    ligne 115 :
    $url = $_SERVER['PHP_SELF']."?page=$modulename.order_print&limitstart=$limits tart&keyword=".urlencode($keyword)."&order_id=". $db->f("order_id");
    $tmp_cell = "<a href=\"" . $sess->url($url) . "\">".$prefix.sprintf("%06d", $db->f("order_id"))."</a><br />";
    remplacer par :
    // calcul du préfixe
    $prefix=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$db->f("cdate")).'-';
    $url = $_SERVER['PHP_SELF']."?page=$modulename.order_print&limitstart=$limits tart&keyword=".urlencode($keyword)."&order_id=". $db->f("order_id");
    $tmp_cell = "<a href=\"" . $sess->url($url) . "\">".$prefix.sprintf("%06d", $db->f("order_id"))."</a><br />";
    3 - Modification code : /administrator/components/com_virtuemart/html/order.order_print.php
    Ajout ligne 65:
    // calcul du préfixe
    $prefix=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$db->f("cdate")).'-';
    Ligne 79:
    <td><?php printf("%08d", $db->f("order_id"));?></td>
    remplacer par :
    <td><?php echo $prefix.sprintf("%06d", $db->f("order_id"));?></td>
    4 - Modification code : /administrator/components/com_virtuemart/html/order.order_printdetails.php
    Ajout ligne 34:
    // calcul du préfixe
    $prefix=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$db->f("cdate")).'-';
    Ligne 61 :
    <td><?php printf("%08d", $db->f("order_id")); ?></td>
    remplacer par:
    <td><?php echo $prefix.sprintf("%06d", $db->f("order_id"));?></td>
    5 - Modification code : /administrator/components/com_virtuemart/html/admin.user_form.php

    Ligne485 :
    $url = $_SERVER['PHP_SELF']."?page=order.order_print&limitstart=$limitstart&k eyword=".urlencode($keyword)."&order_id=". $db->f("order_id");
    $tmp_cell = "<a href=\"" . $sess->url($url) . "\">".sprintf("%08d", $db->f("order_id"))."</a><br />";
    remplacer par :
    // calcul du préfixe
    $prefix=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$db->f("cdate")).'-';
    $url = $_SERVER['PHP_SELF']."?page=order.order_print&limitstart=$limitstart&k eyword=".urlencode($keyword)."&order_id=". $db->f("order_id");
    $tmp_cell = "<a href=\"" . $sess->url($url) . "\">".$prefix.sprintf("%06d", $db->f("order_id"))."</a><br />";
    6 - Modification code : /administrator/components/com_virtuemart/classes/ps_order_delivery.php

    Ligne 435 :
    <td align="center"><a href="<?php echo $pdf_url ?>&gen=delnote" target="_blank"><img src="<?php echo $mosConfig_live_site ?>/images/M_images/pdf_button.png" border="0" /></a></td>
    <td align="center"><a href="<?php echo $url ?>"><?php printf("%08d", $db->f('delivery_id')); ?></a></td>
    remplacer par :
    <td align="center"><a href="<?php echo $pdf_url ?>&gen=delnote" target="_blank"><img src="<?php echo $mosConfig_live_site ?>/images/M_images/pdf_button.png" border="0" /></a></td>
    <?php $prefix=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$db->f("cdate")).'-';?>
    <td align="center"><a href="<?php echo $url ?>"><?php echo $prefix.sprintf("%06d", $db->f('delivery_id')); ?></a></td>
    7 - Création fichier : administrator/language/fr-FR/fr-FR.mod_orders.ini

    VM_DELIVERY_ORDER_CODE=CDW
    8 - Modification code : administrator/modules/mod_orders/mod_orders.php

    Ligne 12 :
    $query = 'SELECT o.order_id, u.name, o.user_id, o.order_total, o.order_status'
    remplacer par :
    $query = 'SELECT o.cdate,o.order_id, u.name, o.user_id, o.order_total, o.order_status'
    9 - Modification code : administrator/modules/mod_orders/tmpl/default.php
    Ajout ligne 21 :
    // calcul du préfixe
    $prefix=JText::_('VM_DELIVERY_ORDER_CODE').date("y ",$row->cdate).'-';
    Ligne26 :
    <?php printf("%08d", $row->order_id); ?>
    Remplacer par :
    <?php echo $prefix.sprintf("%06d", $row->order_id); ?>
    10 - Modification code : administrator/components/com_virtuemart/pdf/phoca.tcpdf.php
    Ajout ligne 118 :
    // calcul du préfixe
    $prefixfa=$VM_LANG->_('VM_DELIVERY_INVOICE_CODE').date("y",$hD['dbb']->f('cdate')).'-';
    $prefixcd=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$row->cdate).'-';
    $prefixbl=$VM_LANG->_('VM_DELIVERY_DELIVERY_CODE').date("y",$row->cdate).'-';
    Ligne 123 :
    $this->Cell(24,5,$hD['dbb']->f('bill_id'),0,0,'C');
    remplacer par :
    $this->Cell(24,5,$prefixfa.sprintf("%06d",$hD['dbb']->f('bill_id')),0,0,'C');
    Ligne 127 :
    $this->Cell(28,5,$hD['dbo']->f("order_id"),0,0,'C');
    $this->Cell(28,5,$hD['d']['delivery_id'],0,0,'C');
    remplacer par :
    $this->Cell(28,5,$prefixcd.sprintf("%06d",$hD['dbo']->f("order_id")),0,0,'C');
    $this->Cell(28,5,$prefixbl.sprintf("%06d",$hD['d']['delivery_id']),0,0,'C');
    11 - Modification code : administrator/components/com_virtuemart/pdf/delivery.pdf.php
    Ligne 338 :
    $pdf->Cell(160,10,sprintf($VM_LANG->_('VM_DELIVERY_PRINT_INVOICE_INFO'),$dbb->f('bill_id')),0,0,'C');
    remplacer par :

    $prefixfa=$VM_LANG->_('VM_DELIVERY_INVOICE_CODE').date("y",$dbb->f('cdate')).'-';
    $pdf->Cell(160,10,sprintf($VM_LANG->_('VM_DELIVERY_PRINT_INVOICE_INFO'),$prefixfa.spr intf("%06d",$dbb->f('bill_id'))),0,0,'C');
    Voila je crois que je n'ai rien oublié.
    Ce hack ne modifie que l'affichage de la numérotation et ne modifie en aucun cas la gestion des numéros de commandes de virtuemart.
    A+
    Gilbert
    Dernière édition par gmarin à 25/09/2009, 15h28
    Développeur Joomla amateur
    http://www.prestaopen.com

  • #2
    Bonjour

    CDW09-000012
    Pour faire le curieux ton hack va rajouter CDW09 c ça ?
    Et il nous garde la numérotation par défaut de commande c ça ?

    @+

    Edit : et si je veux autre chose que CDW09 je dois paramétrer le hack ou STP... j'avoue que je n'ai pas creusé plus le hack pour trouver moi m^m DSL

    encore bravo
    Dernière édition par LeMalouin à 24/09/2009, 10h18
    SVP pas de MP pour de l'aide, le forum est l’outil idéal

    Commentaire


    • #3
      Pour changer CDW09- c'est dans le fichier administrator/components/com_virtuemart/languages/common/french.php

      'VM_DELIVERY_INVOICE_CODE' => 'FAW', pour les factures
      'VM_DELIVERY_ORDER_CODE' => 'CDW', pour les commandes
      'VM_DELIVERY_DELIVERY_CODE' => 'BLW', pour les bons de livraison

      09 correspond à l'année de création de chacun des ces éléments : champ cdate

      et oui rien ne change dans la gestion NUMERIQUE des order_id de virtuemart
      A+
      Gilbert
      Développeur Joomla amateur
      http://www.prestaopen.com

      Commentaire


      • #4
        Bonjour,
        voici quelques ajouts à cette astuce :


        12 - Modification code : /components/com_virtuemart/themes/VOTRE_THEME/templates/pages/account.order_details.tpl.php
        Ajout ligne 68 :
        $prefix=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$db->f("cdate")).'-';
        Ligne 77 :
        <td><?php printf("%08d", $db->f("order_id")); ?></td>
        remplacer par :
        <td><?php echo $prefix.sprintf("%06d", $db->f("order_id")); ?></td>

        13 - Modification code : /administrator/components/com_virtuemart/classes/ps_order.php
        Ajout ligne 570 :
        if (substr($keyword,0,3) == $VM_LANG->_('VM_DELIVERY_ORDER_CODE')) {
        $keyword_search = "00".substr($keyword,-6);
        }
        Modification ligne 573 :
        if( !empty( $keyword_order_item oi ';
        $list .= ', #__{vm}_order_item oi ';
        $q .= "AND (order_item_sku LIKE '%".$keyword."%' ";
        $q .= "OR order_number LIKE '%".$keyword."%' ";
        $q .= "OR o.order_id=".(int)$keyword.' ';
        $q .= "OR order_item_name LIKE '%".$keyword."%') ";
        $q .= "AND oi.order_id=o.order_id ";
        }
        Remplacer par :
        if( !empty( $keyword_search )) {
        $count .= ', #__{vm}_order_item oi ';
        $list .= ', #__{vm}_order_item oi ';
        $q .= "AND (order_item_sku LIKE '%".$keyword_search."%' ";
        $q .= "OR order_number LIKE '%".$keyword_search."%' ";
        $q .= "OR o.order_id=".(int)$keyword_search.' ';
        $q .= "OR order_item_name LIKE '%".$keyword_search."%') ";
        $q .= "AND oi.order_id=o.order_id ";
        }



        Ajout ligne 623 :
        $prefix=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$db->f("cdate")).'-';
        Ligne 624 :
        $tmp_cell .= "<br /><strong>".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_NUMBER').":</strong> " . sprintf("%08d", $db->f("order_id"));
        remplacer par :
        $tmp_cell .= "<br /><strong>".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_NUMBER').":</strong> " .$prefix. sprintf("%06d", $db->f("order_id"));
        14 - Modification code : administrator/components/com_virtuemart/classes/ps_checkout.php

        Ajout ligne 1799 :
        $prefix=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$db->f("cdate")).'-';
        Ligne 1800 :
        $shopper_subject = $dbv->f("vendor_name") . " ".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_LBL',false)." - " . $db->f("order_id");
        $vendor_subject = $dbv->f("vendor_name") . " ".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_LBL',false)." - " . $db->f("order_id");
        remplacer par :
        $shopper_subject = $dbv->f("vendor_name") . " ".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_LBL',false)." - " . $prefix.sprintf("%06d", $db->f("order_id"));
        $vendor_subject = $dbv->f("vendor_name") . " ".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_LBL',false)." - " . $prefix.sprintf("%06d", $db->f("order_id"));
        15 - Modification code : /components/com_virtuemart/themes/VOTRE_THEME/templates/orders_emails/confirmation_email.tpl.php

        Ajout ligne 42 :
        <?php $prefix=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').substr($order_date,-2).'-';?>
        Ligne 43 :
        <td><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_NUMBER')?>:</td><td><?php echo $order_id ?></td>
        remplacer par :
        <td><?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_NUMBER')?>:</td><td><?php echo $prefix.sprintf("%06d", $db->f("order_id")) ?></td>


        Bon je crois que c'est complet. Si vous trouvez des erreurs ou des oublis, les remarques sont les bienvenues.
        A+
        Gilbert
        Dernière édition par gmarin à 25/09/2009, 15h24
        Développeur Joomla amateur
        http://www.prestaopen.com

        Commentaire


        • #5
          merci et felicitations!
          sommaire thématique des astuces du forum e-commerce ici http://www.webtimarket.com/fr/telechargements
          http://virtuemart.fr

          Commentaire


          • #6
            salut
            merci pour cette astuce

            par soucis de clarté, pourrais tu ajouter les balises [quote] dans tes posts pour isoler le code, ca sera plus lisible je pense
            ++

            Commentaire


            • #7
              Merci mais je ne sais pas comment faire
              A+
              Gilbert
              Développeur Joomla amateur
              http://www.prestaopen.com

              Commentaire


              • #8
                Ajoute [CODE] ton code source [*CODE] (remplace * par /)

                @++

                Thibaut

                Commentaire


                • #9
                  Merci, j'ai édité mes messages pour qu'ils soient plus clairs.
                  A+
                  Gilbert
                  Développeur Joomla amateur
                  http://www.prestaopen.com

                  Commentaire


                  • #10
                    super !

                    Commentaire


                    • #11
                      Bonjour à tous,
                      Pensez vous que vos astuces peuvent aller avec VM 1.1.4? et les si vous joigner les fichiers sources ?
                      Merci

                      Commentaire


                      • #12
                        Bonjour Gilbert,

                        Tout d'abord merci pour ce super hack.
                        Ça fait plus "pro" comme ça

                        J'ai trois remarques :

                        1 - sur /administrator/components/com_virtuemart/classes/ps_order.php
                        y'a eu un copier/coller malencontreux

                        Code:
                        Modification ligne 573 :
                        if( !empty( $keyword_order_item oi ';
                        	$list .= ', #__{vm}_order_item oi ';
                        	$q .= "AND (order_item_sku LIKE '%".$keyword."%' ";
                        ...
                        devrait être :

                        Code:
                        if( !empty( $keyword )) {
                        	$count .= ', #__{vm}_order_item oi ';
                        	$list .= ', #__{vm}_order_item oi ';
                        	$q .= "AND (order_item_sku LIKE '%".$keyword."%' ";
                        ...
                        2 - toujours sur /administrator/components/com_virtuemart/classes/ps_order.php :

                        Code:
                        Ajout ligne 570 :
                        if (substr($keyword,0,3) == $VM_LANG->_('VM_DELIVERY_ORDER_CODE')) {
                          $keyword_search = "00".substr($keyword,-6);
                        }
                        Je ne suis pas encore au top en php, mais il me semble que si le if() retourne faux, $keyword_search n'existe pas. Alors le test suivant
                        if( !empty( $keyword_search ))
                        foire.
                        J'ai résolu ça en ajoutant
                        Code:
                        $keyword_search = $keyword;
                        juste avant le if().
                        J'ai bon ?

                        3 - Enfin, et là je sèche, dans /administrator/components/com_virtuemart/pdf/phoca.tcpdf.php

                        Le n° de commande est calculé avec
                        Code:
                        $prefixcd=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$row->cdate).'-';
                        Moi, ça me retourne "CDW70".
                        Je suppute que $row->cdate va chercher une date qui n'est pas initialisée, et qui a donc la valeur 01-01-1970.

                        J'essaie de trouver une autre façon de récupérer la date de la commande...
                        Je le mettrais ici, si je trouve.

                        --
                        Philippe
                        PS. je suis toujours en VM1.1.3
                        Dernière édition par Obelix95 à 05/01/2010, 10h06 Raison: mise en page

                        Commentaire


                        • #13
                          Ayé, alors en fait le format de $row->cdate n'est pas valide pour la fonction date().

                          Donc la partie 10 :

                          Code:
                          10 - Modification code : administrator/components/com_virtuemart/pdf/phoca.tcpdf.php
                          Ajout ligne 118 :
                          
                          // calcul du préfixe
                          $prefixfa=$VM_LANG->_('VM_DELIVERY_INVOICE_CODE').date("y",$hD['dbb']->f('cdate')).'-';
                          $prefixcd=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$row->cdate).'-';
                          $prefixbl=$VM_LANG->_('VM_DELIVERY_DELIVERY_CODE').date("y",$row->cdate).'-';
                          devient :

                          Code:
                          // calcul du préfixe
                          $date_parts = explode('-', $hD['dbo']->f('order_date'));
                          $order_date = mktime(0,0,0,$date_parts[1],$date_parts[2],$date_parts[0]);
                          $prefixfa=$VM_LANG->_('VM_DELIVERY_INVOICE_CODE').date("y",$hD['dbb']->f('cdate')).'-';
                          $prefixcd=$VM_LANG->_('VM_DELIVERY_ORDER_CODE').date("y",$order_date).'-';
                          $prefixbl=$VM_LANG->_('VM_DELIVERY_DELIVERY_CODE').date("y",$hD['dbb']->f('cdate')).'-';
                          --
                          Philippe

                          Commentaire

                          Annonce

                          Réduire
                          1 sur 2 < >

                          C'est [Réglé] et on n'en parle plus ?

                          A quoi ça sert ?
                          La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                          Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                          Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                          Comment ajouter la mention [Réglé] à votre discussion ?
                          1 - Aller sur votre discussion et éditer votre premier message :


                          2 - Cliquer sur la liste déroulante Préfixe.

                          3 - Choisir le préfixe [Réglé].


                          4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                          2 sur 2 < >

                          Assistance au forum - Outil de publication d'infos de votre site

                          Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                          Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                          Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                          UTILISER À VOS PROPRES RISQUES :
                          L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                          Problèmes connus :
                          FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                          Installation :

                          1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                          Archive zip : https://github.com/AFUJ/FPA/zipball/master

                          2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                          3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                          4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                          5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                          6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                          et remplacer www. votresite .com par votre nom de domaine


                          Exemples:
                          Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                          Télécharger le script fpa-fr.php dans: /public_html/
                          Pour executer le script: http://www..com/fpa-fr.php

                          Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                          Télécharger le script fpa-fr.php dans: /public_html/cms/
                          Pour executer le script: http://www..com/cms/fpa-fr.php

                          En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                          Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                          Voir plus
                          Voir moins
                          Travaille ...
                          X