THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Numero de facture

(23-06-2014 14:56:17)


Bonjour,

Peut on personnaliser le numero de facture ?

ou doit on modifier directement cette ligne

return sprintf('ORD%s', str_pad($this->getId(), 12, 0, STR_PAD_LEFT));

Offline

#2 Re: Numero de facture

(23-06-2014 18:38:31)


Tu peux faire ça très facilement avec un petit module, qui sera listener de l'event TheliaEvents::ORDER_AFTER_CREATE. Tu recevras avec l'event l'Order qui vient d'être créé en base de données, et tu pourras alors modifier la référence pour y placer ce que tu voudras.

Voili voilou.


OpenStudio Toulouse

Offline

#3 Re: Numero de facture

(24-06-2014 07:33:21)


Merci

Ok doki smile

Offline

#4 Re: Numero de facture

(24-06-2014 15:01:32)


Bon j'essaie de realiser un module
je debute tongue

l'event ne se declenche pas sad ,j'ai juste mis un message debug

namespace OrderNumber\EventListeners;

use OrderNumber\OrderNumber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Action\BaseAction;
use Thelia\Core\Event\Order\OrderEvent;
use Thelia\Core\Event\TheliaEvents;
use Thelia\Log\Tlog;

class OrderNumberEventListener implements EventSubscriberInterface
{
    
    public function updateOrderNumber(OrderEvent $event)
    {
        $order = $event->getOrder();

        Tlog::getInstance()->debug("Numero de facture :".$order);
    }

    /**
     * Returns an array of event names this subscriber wants to listen to.
     *
     * The array keys are event names and the value can be:
     *
     *  * The method name to call (priority defaults to 0)
     *  * An array composed of the method name to call and the priority
     *  * An array of arrays composed of the method names to call and respective
     *    priorities, or 0 if unset
     *
     * For instance:
     *
     *  * array('eventName' => 'methodName')
     *  * array('eventName' => array('methodName', $priority))
     *  * array('eventName' => array(array('methodName1', $priority), array('methodName2'))
     *
     * @return array The event names to listen to
     *
     * @api
     */
    public static function getSubscribedEvents()
    {
        return array(
            TheliaEvents::ORDER_AFTER_CREATE => ['updateOrderNumber', 128]
        );
    }
}

pourtant le code est simple...

Offline

#5 Re: Numero de facture

(24-06-2014 18:15:42)


La code a l'air correct. Tu as bien déclaré que ta classe était un event listener quelque part dans le fichier config.xml ?

 <services>
    ...
    <service id="module.action.orderNumber" class="OrderNumber\EventListeners\OrderNumberEventListener ">
        <tag name="kernel.event_subscriber"/>
    </service>
    ...
</services>

Plus d'infos dans la doc Thelia : http://doc.thelia.net/en/documentation/ … tions.html


OpenStudio Toulouse

Offline

#6 Re: Numero de facture

(24-06-2014 20:05:51)


oui j'ai ca exactement dans le config.xml

    <services>
        <service id="ordernumber.eventlisteners" class="OrderNumber\EventListeners\OrderNumberEventListener">
            <tag name="kernel.event_subscriber" />
        </service>
    </services>

cela vient de l'id, je pense

Edit:
c'etait l'id Merci, mal lu la doc
mais qu'en je fais afficher le journal des log cote back
il ne m'affiche rien, j'ai du ouvrir directement le fichier log pour voir le debug
normal ?

Last edited by zzuutt (24-06-2014 20:16:33)

Offline

#7 Re: Numero de facture

(24-06-2014 21:49:03)


Oui, c'est normal. "Il" n'affiche pas les logs sur les pages HTML.

Mais en fait, le système de log est le même que pour Thelia 1 (ça changera peut-être, c'est pour ça que ce n'est pas encore documenté). Si tu veux afficher les traces directement dans ta page, il te suffit de définir une variable de configuration tlog_destinations, et de lui donner la valeur :

Thelia\Log\Destination\TlogDestinationRotatingFile;Thelia\Log\Destination\TlogDestinationHtml

Pour supprimer les traces, supprime la variable, ou laisses-y seulement Thelia\Log\Destination\TlogDestinationRotatingFile.


OpenStudio Toulouse

Offline

#8 Re: Numero de facture

(24-06-2014 22:08:11)


desole mais je ne commais pas thelia 1

j'ai decouvert thelia au moment du basculement en v2
Comme j'ai beaucoups aprecie, j'essaie de comprendre le fonctionnement,.......
je pars de zero tongue

pour le moment, je nage enfin je fais de la brasse coulee smile sur la partie module

Offline

#9 Re: Numero de facture

(27-06-2014 11:13:29)


Bonjour,

cote back
Pour faire afficher le formulaire de configuration du module
on cree le formulaire dans le dossier form

<?php
/*************************************************************************************/
/*      This file is part of the Thelia package.                                     */
/*                                                                                   */
/*      Copyright (c) OpenStudio                                                     */
/*      email : dev@thelia.net                                                       */
/*      web : http://www.thelia.net                                                  */
/*                                                                                   */
/*      For the full copyright and license information, please view the LICENSE.txt  */
/*      file that was distributed with this source code.                             */
/*************************************************************************************/

namespace test\Form;

use Symfony\Component\Validator\Constraints\NotBlank;
use Thelia\Core\Translation\Translator;
use Thelia\Form\BaseForm;


/**
 * Class testCreateForm
 * @package test\Form
 * @author Manuel Raynaud <mraynaud@openstudio.fr>
 */
class testCreateForm extends BaseForm
{

    /**
     *
     * in this function you add all the fields you need for your Form.
     * Form this you have to call add method on $this->formBuilder attribute :
     *
     * $this->formBuilder->add("name", "text")
     *   ->add("email", "email", array(
     *           "attr" => array(
     *               "class" => "field"
     *           ),
     *           "label" => "email",
     *           "constraints" => array(
     *               new \Symfony\Component\Validator\Constraints\NotBlank()
     *           )
     *       )
     *   )
     *   ->add('age', 'integer');
     *
     * @return null
     */
    protected function buildForm()
    {
        $this->formBuilder
            ->add('min', 'number', [
                'constraints' => [
                    new NotBlank()
                ],
                'label' => "test minimum"
            ])
        ;
    }

    /**
     * @return string the name of you form. This name must be unique
     */
    public function getName()
    {
        return 'test_create';
    }
}

puis on le declare dans config.xml

<?xml version="1.0" encoding="UTF-8" ?>

<config xmlns="http://thelia.net/schema/dic/config"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
    <loops>
    </loops>
    <forms>
        <form name="test_create" class="test\Form\testCreateForm" />
    </forms>
    <commands>
        <!--
        <command class="MyModule\Command\MySuperCommand" />
        -->
    </commands>
    <services>
    </services>
</config>

et ???

Offline

#10 Re: Numero de facture

(27-06-2014 13:39:24)


et on écrit le template qui va présenter le formulaire: AdminIncludes/module_configuration.html

Tu peux pour cela t'inspirer d'un module existant.


OpenStudio Toulouse

Offline

#11 Re: Numero de facture

(27-06-2014 22:43:56)


merci Roadster31