THELIA Forum

Welcome to the THELIA support and discusssion forum

Offline

#1 CA par pays de livraison

(13-02-2021 22:12:46)


Je souhaite ajouter une fonctionnalité au module Statistiques.

Mais je n'arrive pas à récupérer proprement (Hormis aller dans la base de données) le CA par pays de livraison.

Pour des ventes européennes, on est en exonération de TVA dans des limites propres à chaque pays, limites qu'il faut donc connaitre.

Grosso modo je fais ca :

OrderProductQuery::create()
            ->useOrderQuery()
            ->filterByInvoiceDate($datebegin, Criteria::GREATER_EQUAL)
            ->filterByInvoiceDate($dateend, Criteria::LESS_THAN)
            ->addAsColumn('orderId', OrderTableMap::ID)
            ->endUse()
            ->filterByCountry(?)

Mais ensuite, je ne m'y retrouve pas. Je dois faire le total de chaque pays européen. Y a t'il une manière plus simple ?

Offline

#2 Re: CA par pays de livraison

(14-02-2021 18:42:40)


Si tu as une idée de la requête SQL a exécuter, tu pourras la traduire en Query Propel. Mais utiliser l'ORM n'est pas toujours la meilleure solution. Typiquement, pour faire des stats, une requête SQL est plus adaptée. Voilà un exemple de code pour faire directement du PDO en utilisant la connexion utilisée par Propel:

$con = Propel::getConnection();

$query = 'SELECT COUNT(t1.user) AS users, t1.choice AS lft, t2.choice AS rgt
  FROM choice t1 iNNER JOIN choice t2 ON (t1.user = t2.user)
  WHERE t1.choice IN (?, ?) AND t2.choice IN (?, ?)
  GROUP BY t1.choice, t2.choice';

$stmt = $con->prepare($query);

$stmt->bindValue(1, 'foo');
$stmt->bindValue(2, 'bar');
$stmt->bindValue(3, 'baz');
$stmt->bindValue(4, 'foz');

if ($stmt->execute()) {
    while ($result = $stmt->fetch(PDO::FETCH_BOTH)) {
        ...
    }
}

OpenStudio Toulouse

Offline

#3 Re: CA par pays de livraison

(20-02-2021 21:40:51)


Merci wink Je vais me pencher dessus wink