Browse Source

Intégration Souke

feature/souke
Guillaume Bourgeois 7 months ago
parent
commit
47f8e76e5f
38 changed files with 80 additions and 72 deletions
  1. +1
    -0
      backend/assets/CommonAsset.php
  2. +1
    -3
      backend/config/params.php
  3. +1
    -1
      backend/controllers/CronController.php
  4. +6
    -6
      backend/views/credit/index.php
  5. +17
    -3
      backend/views/layouts/content.php
  6. +2
    -2
      backend/views/layouts/header.php
  7. +1
    -1
      backend/views/layouts/left.php
  8. +2
    -2
      backend/views/order/report.php
  9. +1
    -1
      backend/views/producer/update.php
  10. +1
    -1
      backend/views/user/_menu_navigation.php
  11. +4
    -4
      backend/views/user/credit.php
  12. +1
    -1
      backend/views/user/view.php
  13. +1
    -1
      backend/web/js/vuejs/distribution-index.js
  14. +1
    -1
      backend/web/js/vuejs/producer-update.js
  15. +2
    -2
      common/config/params.php
  16. +2
    -2
      common/mail/creditConfirm-html.php
  17. +1
    -1
      common/mail/creditConfirm-text.php
  18. +2
    -2
      common/mail/creditLimitReminder-html.php
  19. +2
    -2
      common/mail/creditLimitReminder-text.php
  20. +1
    -1
      common/mail/creditUser-html.php
  21. +1
    -1
      common/mail/creditUser-text.php
  22. +1
    -6
      common/mail/layouts/html.php
  23. +2
    -2
      common/mail/layouts/text.php
  24. +1
    -1
      console/commands/ClosingOrdersController.php
  25. +1
    -1
      domain/Distribution/Distribution/Export/DistributionReportPdfGenerator.php
  26. +1
    -1
      domain/Order/Order/OrderRepository.php
  27. +1
    -1
      domain/Payment/PaymentNotifier.php
  28. +2
    -2
      domain/PointSale/PointSale/PointSale.php
  29. +8
    -8
      domain/Producer/Producer/Producer.php
  30. +1
    -1
      domain/Producer/Producer/ProducerRepository.php
  31. +1
    -1
      domain/User/User/UserRepository.php
  32. +1
    -1
      domain/User/User/UsersCreditCsvGenerator.php
  33. +1
    -1
      domain/User/UserProducer/UserProducer.php
  34. +1
    -1
      domain/User/UserProducer/UserProducerBuilder.php
  35. +1
    -1
      frontend/controllers/SiteController.php
  36. +1
    -1
      frontend/views/layouts/main.php
  37. +2
    -2
      producer/controllers/CreditController.php
  38. +3
    -3
      tests/codeception/producer/functional/CreditCept.php

+ 1
- 0
backend/assets/CommonAsset.php View File

// css // css
$this->addAsset('css','bootstrap-icons/font/bootstrap-icons.min.css') ; $this->addAsset('css','bootstrap-icons/font/bootstrap-icons.min.css') ;
$this->addAsset('css','css/screen.css') ;
// js // js
$this->addAsset('js','js/jquery-ui-1.11.4.custom/jquery-ui.min.js'); $this->addAsset('js','js/jquery-ui-1.11.4.custom/jquery-ui.min.js');

+ 1
- 3
backend/config/params.php View File

termes. termes.
*/ */


return [
'adminEmail' => 'contact@souke.fr',
];
return [];

+ 1
- 1
backend/controllers/CronController.php View File

'orders' => $arrayOrders 'orders' => $arrayOrders
] ]
) )
->setFrom([Yii::$app->parameterBag->get('adminEmail') => 'distrib']);
->setFrom([Yii::$app->parameterBag->get('adminEmail') => 'Souke']);


if (is_array($arrayOrders) && count($arrayOrders)) { if (is_array($arrayOrders) && count($arrayOrders)) {
$subject = '[Souke] Commandes du ' . date('d/m', strtotime($date)); $subject = '[Souke] Commandes du ' . date('d/m', strtotime($date));

+ 6
- 6
backend/views/credit/index.php View File



$userModule = $this->getUserModule(); $userModule = $this->getUserModule();


$this->setTitle('Crédit');
$this->setTitle('Cagnotte');


?> ?>


<span class="info-box-icon <?= $sumUserProducerCredits >= 0 ? 'bg-green' : 'bg-red' ?>"><i <span class="info-box-icon <?= $sumUserProducerCredits >= 0 ? 'bg-green' : 'bg-red' ?>"><i
class="fa fa-euro"></i></span> class="fa fa-euro"></i></span>
<div class="info-box-content"> <div class="info-box-content">
<span class="info-box-text">Somme totale en crédit</span>
<span class="info-box-text">Somme totale en cagnotte</span>
<span class="info-box-number"><?= Price::format($sumUserProducerCredits); ?></span> <span class="info-box-number"><?= Price::format($sumUserProducerCredits); ?></span>
</div> </div>
</div> </div>
<span class="info-box-icon bg-orange"><i class="fa fa-download"></i></span> <span class="info-box-icon bg-orange"><i class="fa fa-download"></i></span>
<div class="info-box-content"> <div class="info-box-content">
<span class="info-box-text">Exports<br /> <span class="info-box-text">Exports<br />
<a class="btn btn-default btn-sm" href="<?= Yii::$app->urlManager->createUrl(['credit/export-users', 'type' => 'negative']); ?>">Clients au crédit négatif (CSV)</a>
<a class="btn btn-default btn-sm" href="<?= Yii::$app->urlManager->createUrl(['credit/export-users', 'type' => 'positive']); ?>">Clients au crédit positif (CSV)</a>
<a class="btn btn-default btn-sm" href="<?= Yii::$app->urlManager->createUrl(['credit/export-users', 'type' => 'negative']); ?>">Clients avec une cagnotte en négatif (CSV)</a>
<a class="btn btn-default btn-sm" href="<?= Yii::$app->urlManager->createUrl(['credit/export-users', 'type' => 'positive']); ?>">Clients avec une cagnotte en positif (CSV)</a>
</span> </span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>


<h3>Clients avec un crédit négatif</h3>
<h3>Clients avec une cagnotte en négatif</h3>


<?= <?=


} }
], ],
[ [
'label' => 'Crédit',
'label' => 'Cagnotte',
'format' => 'raw', 'format' => 'raw',
'value' => function ($user) { 'value' => function ($user) {
return Price::format($user['credit']); return Price::format($user['credit']);

+ 17
- 3
backend/views/layouts/content.php View File



<section class="content"> <section class="content">


<?= $this->renderFile('@common/views/alert_message.php', [
<?php echo $this->renderFile('@common/views/alert_message.php', [
'display' => $adminSettingBag->get('adminAlertMessageDisplay'), 'display' => $adminSettingBag->get('adminAlertMessageDisplay'),
'type' => $adminSettingBag->get('adminAlertMessageType'), 'type' => $adminSettingBag->get('adminAlertMessageType'),
'title' => $adminSettingBag->get('adminAlertMessageTitle'), 'title' => $adminSettingBag->get('adminAlertMessageTitle'),
<?php $producer = GlobalParam::getCurrentProducer(); ?> <?php $producer = GlobalParam::getCurrentProducer(); ?>
<?php if($producer && !$producerModule->isUpToDateWithOpendistribVersion($producer) && $producer->option_display_message_new_opendistrib_version): ?> <?php if($producer && !$producerModule->isUpToDateWithOpendistribVersion($producer) && $producer->option_display_message_new_opendistrib_version): ?>
<div class="alert alert-success"> <div class="alert alert-success">
<p>Opendistrib a été mis à jour vers la version <?= GlobalParam::getSoukeVersion() ?> ! <a class="alert-link" href="<?= Yii::$app->urlManager->createUrl(['development/index']) ?>">Découvrir les nouveautés</a></p>
<p>Souke a été mis à jour vers la version <?= GlobalParam::getSoukeVersion() ?> ! <a class="alert-link" href="<?= Yii::$app->urlManager->createUrl(['development/index']) ?>">Découvrir les nouveautés</a></p>
<a href="<?= Yii::$app->urlManager->createUrl(['producer/update-opendistrib-version']) ?>" class="close"><span aria-hidden="true">&times;</span></a> <a href="<?= Yii::$app->urlManager->createUrl(['producer/update-opendistrib-version']) ?>" class="close"><span aria-hidden="true">&times;</span></a>
</div> </div>
<?php endif; ?> <?php endif; ?>


<?= Alert::widget() ?>
<?php
$flashTypeArray = ['error' => 'ban', 'danger' => 'ban', 'warning' => 'warning', 'info' => 'info', 'success' => 'check'];
foreach($flashTypeArray as $flashType => $icon) {
if(Yii::$app->session->hasFlash($flashType)) {
echo $this->renderFile('@common/views/alert_message.php', [
'display' => true,
'title' => false,
'type' => $flashType,
'icon' => $icon,
'message' => Yii::$app->session->getFlash($flashType),
]);
}
}
?>

<?= $content ?> <?= $content ?>
<div class="clr"></div> <div class="clr"></div>
</section> </section>

+ 2
- 2
backend/views/layouts/header.php View File



<ul class="dropdown-menu"> <ul class="dropdown-menu">
<?php if (count($usersNegativeCreditArray)): ?> <?php if (count($usersNegativeCreditArray)): ?>
<li class="header"><a href="<?= Yii::$app->urlManager->createUrl(['credit/index']); ?>">Utilisateurs au crédit négatif</a></li>
<li class="header"><a href="<?= Yii::$app->urlManager->createUrl(['credit/index']); ?>">Utilisateurs avec une cagnotte en négatif</a></li>
<li> <li>
<ul class="menu"> <ul class="menu">
<?php foreach ($usersNegativeCreditArray as $user): ?> <?php foreach ($usersNegativeCreditArray as $user): ?>
</ul> </ul>
</li> </li>
<?php else: ?> <?php else: ?>
<li class="header">Aucun de vos utilisateurs n'a de crédit négatif.</li>
<li class="header">Aucun de vos utilisateurs n'a de cagnotte en négatif.</li>
<?php endif; ?> <?php endif; ?>
</ul> </ul>



+ 1
- 1
backend/views/layouts/left.php View File

'items' => [ 'items' => [
['label' => 'Liste', 'icon' => 'th-list', 'url' => ['/user/index'], 'visible' => $isUserCurrentGrantedAsProducer], ['label' => 'Liste', 'icon' => 'th-list', 'url' => ['/user/index'], 'visible' => $isUserCurrentGrantedAsProducer],
[ [
'label' => 'Crédit',
'label' => 'Cagnotte',
'icon' => 'euro', 'icon' => 'euro',
'url' => ['/credit/index'], 'url' => ['/credit/index'],
'template' => '<a href="{url}">{icon} {label}' . $sumUserProducerCreditsLabel . '</a>', 'template' => '<a href="{url}">{icon} {label}' . $sumUserProducerCreditsLabel . '</a>',

+ 2
- 2
backend/views/order/report.php View File

if (count($pointSale->orders) && strlen($pointSale->$fieldInfosPointSale)) { if (count($pointSale->orders) && strlen($pointSale->$fieldInfosPointSale)) {
$html .= '<h3>'.$pointSale->name.'</h3>' ; $html .= '<h3>'.$pointSale->name.'</h3>' ;
$colCredit = ($pointSale->credit) ? '<th>Crédit</th>' : '' ;
$colCredit = ($pointSale->credit) ? '<th>Cagnotte</th>' : '' ;
$html .= '<table class="table table-bordered">' $html .= '<table class="table table-bordered">'
. '<thead>' . '<thead>'
} }
elseif($orderModule->getPaymentStatus($order) == Order::PAYMENT_SURPLUS) elseif($orderModule->getPaymentStatus($order) == Order::PAYMENT_SURPLUS)
{ {
$html .= '(surplus : '.$orderModule->getOrderAmount($order, Order::PAYMENT_SURPLUS, true).' à recréditer)' ;
$html .= '(surplus : '.$orderModule->getOrderAmount($order, Order::PAYMENT_SURPLUS, true).' à rembourser)' ;
} }
$html .= '</strong></td>' ; $html .= '</strong></td>' ;

+ 1
- 1
backend/views/producer/update.php View File



<div v-show="currentSection == 'credit-payment'" class="panel panel-default"> <div v-show="currentSection == 'credit-payment'" class="panel panel-default">
<div class="panel-body"> <div class="panel-body">
<h4>Crédit</h4>
<h4>Cagnotte</h4>
<?= $form->field($model, 'credit') <?= $form->field($model, 'credit')
->dropDownList(Dropdown::noYesChoices()) ->dropDownList(Dropdown::noYesChoices())
->label('Activer le système de Crédit') ->label('Activer le système de Crédit')

+ 1
- 1
backend/views/user/_menu_navigation.php View File

<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<?= menu_navigation_item('view', 'Récapitulatif', $action, $user) ?> <?= menu_navigation_item('view', 'Récapitulatif', $action, $user) ?>
<?= menu_navigation_item('update', 'Profil', $action, $user) ?> <?= menu_navigation_item('update', 'Profil', $action, $user) ?>
<?= menu_navigation_item('credit', 'Crédit <span class="label label-default badge">'.Price::format($credit).'</span>', $action, $user) ?>
<?= menu_navigation_item('credit', 'Cagnotte <span class="label label-default badge">'.Price::format($credit).'</span>', $action, $user) ?>
<?= menu_navigation_item('orders', 'Commandes <span class="label label-default badge">'.$countOrders.'</span>', $action, $user) ?> <?= menu_navigation_item('orders', 'Commandes <span class="label label-default badge">'.$countOrders.'</span>', $action, $user) ?>
</ul> </ul>



+ 4
- 4
backend/views/user/credit.php View File

$this->setTitle($username.' (#'.$user->id.')') ; $this->setTitle($username.' (#'.$user->id.')') ;
$this->addBreadcrumb(['label' => 'Utilisateurs', 'url' => ['index']]) ; $this->addBreadcrumb(['label' => 'Utilisateurs', 'url' => ['index']]) ;
$this->addBreadcrumb(['label' => $username]) ; $this->addBreadcrumb(['label' => $username]) ;
$this->addBreadcrumb('Crédit') ;
$this->addBreadcrumb('Cagnotte') ;


?> ?>


if(!$producer->credit) if(!$producer->credit)
{ {
echo '<div class="alert alert-warning">Attention, la fonctionnalité <strong>Crédit</strong> est désactivée dans vos <a href="'.Yii::$app->urlManager->createurl(['producer/update']).'">paramètres</a>.'
echo '<div class="alert alert-warning">Attention, la fonctionnalité <strong>Cagnotte</strong> est désactivée dans vos <a href="'.Yii::$app->urlManager->createurl(['producer/update']).'">paramètres</a>.'
. ' Pensez à l\'activer si vous souhaitez qu\'elle soit visible de vos utilisateurs.</div>' ; . ' Pensez à l\'activer si vous souhaitez qu\'elle soit visible de vos utilisateurs.</div>' ;
} }
?> ?>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"> <h3 class="panel-title">
Crédit obligatoire
Cagnotte obligatoire
<?= Html::a($userProducer->credit_active ? 'Désactiver' : 'Activer', ['user/state-credit', 'idUser' => $user->id,'state' => !$userProducer->credit_active], ['class' => 'btn btn-default btn-xs']); ?> <?= Html::a($userProducer->credit_active ? 'Désactiver' : 'Activer', ['user/state-credit', 'idUser' => $user->id,'state' => !$userProducer->credit_active], ['class' => 'btn btn-default btn-xs']); ?>
</h3> </h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">
<p class="info"> <p class="info">
<span class="glyphicon glyphicon-info-sign"></span> <span class="glyphicon glyphicon-info-sign"></span>
Active ou désactive le crédit de l'utilisateur pour les points de vente
Active ou désactive la cagnotte de l'utilisateur pour les points de vente
avec l'option <em>Basée sur l'utilisateur</em>. avec l'option <em>Basée sur l'utilisateur</em>.
</p> </p>
<?php if($userProducer->credit_active): ?> <?php if($userProducer->credit_active): ?>

+ 1
- 1
backend/views/user/view.php View File

</span> </span>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<strong>Crédit obligatoire</strong>
<strong>Cagnotte obligatoire</strong>
<span class="pull-right"> <span class="pull-right">
<?php $creditActive = $userModule->getRepository()->getCreditActive($model) ?> <?php $creditActive = $userModule->getRepository()->getCreditActive($model) ?>
<span class="label label-<?= $creditActive ? 'success' : 'default' ?>"> <span class="label label-<?= $creditActive ? 'success' : 'default' ?>">

+ 1
- 1
backend/web/js/vuejs/distribution-index.js View File

); );
appAlerts.alert( appAlerts.alert(
'info', 'info',
'Pensez à bien recréditer les clients qui auraient passé commande en utilisant leur crédit.',
'Pensez à bien rembourser les clients qui auraient passé commande en utilisant leur cagnotte.',
6000 6000
); );
} else { } else {

+ 1
- 1
backend/web/js/vuejs/producer-update.js View File

}, },
{ {
name: 'credit-payment', name: 'credit-payment',
nameDisplay: 'Crédit',
nameDisplay: 'Cagnotte',
isAdminSection: 0 isAdminSection: 0
}, },
{ {

+ 2
- 2
common/config/params.php View File

'slug' => 'waiting-paiement-on-delivery' 'slug' => 'waiting-paiement-on-delivery'
], ],
'waiting-paiement-by-credit' => [ 'waiting-paiement-by-credit' => [
'name' => 'En attente de paiement par crédit',
'name' => 'En attente de paiement par cagnotte',
'color' => '#e19a4d', 'color' => '#e19a4d',
'nextStatusAllow' => ['paid-by-credit', 'canceled'], 'nextStatusAllow' => ['paid-by-credit', 'canceled'],
'slug' => 'waiting-paiement-by-credit' 'slug' => 'waiting-paiement-by-credit'
], ],
'paid-by-credit' => [ 'paid-by-credit' => [
'name' => 'Payé par crédit',
'name' => 'Payé via cagnotte',
'color' => '#3180d5', 'color' => '#3180d5',
'nextStatusAllow' => ['waiting-delivery'], 'nextStatusAllow' => ['waiting-delivery'],
'slug' => 'paid-by-credit' 'slug' => 'paid-by-credit'

+ 2
- 2
common/mail/creditConfirm-html.php View File



<p>Bonjour <?= Html::encode($user->name); ?>,</p> <p>Bonjour <?= Html::encode($user->name); ?>,</p>


<p>Nous vous confirmons que votre compte vient d'être crédité de <strong><?= number_format($amount, 2) ?> €</strong>.
<p>Nous vous confirmons que votre cagnotte vient d'être créditée de <strong><?= number_format($amount, 2) ?> €</strong>.


<p>Votre compte est désormais à <strong><?= Price::format($userProducer->credit); ?></strong><br /> <p>Votre compte est désormais à <strong><?= Price::format($userProducer->credit); ?></strong><br />
<a href="<?= Yii::$app->urlManagerProducer->createAbsoluteUrl(['credit/history','slug_producer' => $producer->slug]) ?>">Cliquez ici</a> pour voir l'historique de votre crédit.</p>
<a href="<?= Yii::$app->urlManagerProducer->createAbsoluteUrl(['credit/history','slug_producer' => $producer->slug]) ?>">Cliquez ici</a> pour voir l'historique de votre cagnotte.</p>


À bientôt,<br /> À bientôt,<br />
<?= Html::encode($producer->name); ?> <?= Html::encode($producer->name); ?>

+ 1
- 1
common/mail/creditConfirm-text.php View File



Bonjour <?= Html::encode($user->name); ?>, Bonjour <?= Html::encode($user->name); ?>,


Nous vous confirmons que votre compte vient d'être crédité de <?= Price::format($amount, 2) ?> €.
Nous vous confirmons que votre cagnotte vient d'être créditée de <?= Price::format($amount, 2) ?> €.


Votre compte est désormais à <?= Price::format($userProducer->credit); ?>. Votre compte est désormais à <?= Price::format($userProducer->credit); ?>.



+ 2
- 2
common/mail/creditLimitReminder-html.php View File



<p>Bonjour <?= Html::encode($user->name); ?>,</p> <p>Bonjour <?= Html::encode($user->name); ?>,</p>


<p>Votre producteur <strong><?= Html::encode($producer->name); ?></strong> vous invite à alimenter votre crédit.</p>
<p>Votre producteur <strong><?= Html::encode($producer->name); ?></strong> vous invite à alimenter votre cagnotte.</p>


<p>Voici le montant actuel de votre crédit : <strong><?= Price::format($credit); ?></strong></p>
<p>Voici le montant actuel de votre cagnotte : <strong><?= Price::format($credit); ?></strong></p>


<p>À bientôt.</p> <p>À bientôt.</p>

+ 2
- 2
common/mail/creditLimitReminder-text.php View File



Bonjour <?= Html::encode($user->name); ?>, Bonjour <?= Html::encode($user->name); ?>,


Votre producteur "<?= Html::encode($producer->name); ?>" vous invite à alimenter votre crédit.
Votre producteur "<?= Html::encode($producer->name); ?>" vous invite à alimenter votre cagnotte.


Voici le montant actuel de votre crédit : <?= Price::format($credit); ?>
Voici le montant actuel de votre cagnotte : <?= Price::format($credit); ?>


À bientôt. À bientôt.

+ 1
- 1
common/mail/creditUser-html.php View File

de <?php if($type == Payment::TYPE_CREDIT): ?>créditer<?php else: ?>débiter<?php endif; ?> votre compte de <strong><?= Price::format($amount); ?></strong> sur le site <a href="https://www.souke.fr/">Souke</a>.</p> de <?php if($type == Payment::TYPE_CREDIT): ?>créditer<?php else: ?>débiter<?php endif; ?> votre compte de <strong><?= Price::format($amount); ?></strong> sur le site <a href="https://www.souke.fr/">Souke</a>.</p>


<p>Votre compte est désormais à <strong><?= Price::format($credit); ?></strong><br /> <p>Votre compte est désormais à <strong><?= Price::format($credit); ?></strong><br />
<a href="<?= Yii::$app->urlManagerProducer->createAbsoluteUrl(['credit/history','slug_producer' => $producer->slug]) ?>">Cliquez ici</a> pour voir l'historique de votre crédit.</p>
<a href="<?= Yii::$app->urlManagerProducer->createAbsoluteUrl(['credit/history','slug_producer' => $producer->slug]) ?>">Cliquez ici</a> pour voir l'historique de votre cagnotte.</p>


<p>À bientôt.</p> <p>À bientôt.</p>

+ 1
- 1
common/mail/creditUser-text.php View File

Votre producteur <?= $producer->name; ?> vient de <?php if($type == Payment::TYPE_CREDIT): ?>créditer<?php else: ?>débiter<?php endif; ?> votre compte de <?= Price::format($amount); ?> sur le site https://www.souke.fr/ Votre producteur <?= $producer->name; ?> vient de <?php if($type == Payment::TYPE_CREDIT): ?>créditer<?php else: ?>débiter<?php endif; ?> votre compte de <?= Price::format($amount); ?> sur le site https://www.souke.fr/


Votre compte est désormais à : <?= Price::format($credit); ?>. Votre compte est désormais à : <?= Price::format($credit); ?>.
Suivez ce lien pour voir l'historique de votre crédit : <?= Yii::$app->urlManagerProducer->createAbsoluteUrl(['credit/history','slug_producer' => $producer->slug]) ?>">
Suivez ce lien pour voir l'historique de votre cagnotte : <?= Yii::$app->urlManagerProducer->createAbsoluteUrl(['credit/history','slug_producer' => $producer->slug]) ?>">


À bientôt À bientôt

+ 1
- 6
common/mail/layouts/html.php View File

} }
a { a {
color: #FF7F00 ;
color: #ee6f42 ;
} }
#header .icon { #header .icon {
text-align: center ; text-align: center ;
} }
#link-distrib {
text-decoration: none ;
color: #FF7F00 ;
}
#link-distrib img { #link-distrib img {
width: 45px ; width: 45px ;
} }

+ 2
- 2
common/mail/layouts/text.php View File

<?= $content ?> <?= $content ?>


-- --
distrib | Plateforme de gestion de commandes
http://www.laboiteapain.net/
Souke | Plateforme de gestion de commandes
https://www.souke.fr/
<?php $this->endBody() ?> <?php $this->endBody() ?>
<?php $this->endPage() ?> <?php $this->endPage() ?>

+ 1
- 1
console/commands/ClosingOrdersController.php View File

'date' => $distribution->date, 'date' => $distribution->date,
'orders' => $ordersArray 'orders' => $ordersArray
] ]
)->setFrom([\Yii::$app->parameterBag->get('adminEmail') => 'Opendistrib']);
)->setFrom([\Yii::$app->parameterBag->get('adminEmail') => 'Souke']);


if (count($ordersArray)) { if (count($ordersArray)) {
$subject = '[Souke] Commandes du ' . date('d/m', strtotime($distribution->date)); $subject = '[Souke] Commandes du ' . date('d/m', strtotime($distribution->date));

+ 1
- 1
domain/Distribution/Distribution/Export/DistributionReportPdfGenerator.php View File



$html .= '<h3>'.$pointSale->name.'</h3>' ; $html .= '<h3>'.$pointSale->name.'</h3>' ;
$columnDeliveryNote = ($producer->option_export_display_column_delivery_note) ? '<th>BL</th>' : ''; $columnDeliveryNote = ($producer->option_export_display_column_delivery_note) ? '<th>BL</th>' : '';
$colCredit = ($pointSale->credit) ? '<th>Crédit</th>' : '' ;
$colCredit = ($pointSale->credit) ? '<th>Cagnotte</th>' : '' ;


$html .= '<table class="">' $html .= '<table class="">'
. '<thead>' . '<thead>'

+ 1
- 1
domain/Order/Order/OrderRepository.php View File

$mainPayment = $this->getMainPayment($order); $mainPayment = $this->getMainPayment($order);
if($mainPayment) { if($mainPayment) {
if($this->paymentSolver->isMeanPaymentCredit($mainPayment)) { if($this->paymentSolver->isMeanPaymentCredit($mainPayment)) {
$label = 'Crédit débité';
$label = 'Cagnotte débitée';
} }
else { else {
$strMeanPayment = strtolower(MeanPayment::getStrBy($mainPayment->mean_payment)); $strMeanPayment = strtolower(MeanPayment::getStrBy($mainPayment->mean_payment));

+ 1
- 1
domain/Payment/PaymentNotifier.php View File

$credit = $this->userRepository->getCredit($user, true); $credit = $this->userRepository->getCredit($user, true);


$this->mailer->sendFromProducer( $this->mailer->sendFromProducer(
'Mouvement de crédit',
'Mouvement de cagnotte',
'creditUser', 'creditUser',
[ [
'user' => $user, 'user' => $user,

+ 2
- 2
domain/PointSale/PointSale/PointSale.php View File

'infos_saturday' => 'Samedi', 'infos_saturday' => 'Samedi',
'infos_sunday' => 'Dimanche', 'infos_sunday' => 'Dimanche',
'restricted_access' => 'Accès restreint', 'restricted_access' => 'Accès restreint',
'credit' => 'Activer le Crédit',
'credit' => 'Activer la cagnotte',
'delivery_monday' => 'Lundi', 'delivery_monday' => 'Lundi',
'delivery_tuesday' => 'Mardi', 'delivery_tuesday' => 'Mardi',
'delivery_wednesday' => 'Mercredi', 'delivery_wednesday' => 'Mercredi',
'delivery_saturday' => 'Samedi', 'delivery_saturday' => 'Samedi',
'delivery_sunday' => 'Dimanche', 'delivery_sunday' => 'Dimanche',
'code' => 'Code', 'code' => 'Code',
'credit_functioning' => 'Utilisation du Crédit par l\'utilisateur',
'credit_functioning' => 'Fonctionnement de la cagnotte',
'default' => 'Point de vente par défaut', 'default' => 'Point de vente par défaut',
'id_user' => 'Contact facturation', 'id_user' => 'Contact facturation',
'product_price_percent' => 'Prix produits : pourcentage', 'product_price_percent' => 'Prix produits : pourcentage',

+ 8
- 8
domain/Producer/Producer/Producer.php View File

const CREDIT_FUNCTIONING_USER = 'user'; const CREDIT_FUNCTIONING_USER = 'user';


const HINT_CREDIT_FUNCTIONING = '<ul>' const HINT_CREDIT_FUNCTIONING = '<ul>'
. '<li>Optionnelle : l\'utilisateur choisit s\'il utilise son Crédit ou non. Les commandes peuvent être payées ou impayées.</li>'
. '<li>Obligatoire : toutes les commandes de l\'utilisateur son comptabilisées au niveau du Crédit. Toutes les commandes sont payées.</li>'
. '<li>Basée sur l\'utilisateur : Crédit obligatoire si l\'utilisateur a le crédit activé au niveau de son compte, système de Crédit non affiché sinon.</li>'
. '<li>Optionnelle : l\'utilisateur choisit s\'il utilise sa cagnotte ou non. Les commandes peuvent être payées ou impayées.</li>'
. '<li>Obligatoire : toutes les commandes de l\'utilisateur son comptabilisées au niveau de la cagnotte. Toutes les commandes sont payées.</li>'
. '<li>Basée sur l\'utilisateur : cagnotte obligatoire si l\'utilisateur a sa cagnotte activée au niveau de son compte, cagnotte non affichée sinon.</li>'
. '</ul>'; . '</ul>';


public static $creditFunctioningArray = [ public static $creditFunctioningArray = [
'order_delay_sunday' => 'Délai de commande (dimanche)', 'order_delay_sunday' => 'Délai de commande (dimanche)',
'order_deadline_sunday' => 'Heure limite de commande (dimanche)', 'order_deadline_sunday' => 'Heure limite de commande (dimanche)',
'negative_balance' => 'Solde négatif', 'negative_balance' => 'Solde négatif',
'credit' => 'Crédit pain',
'credit' => 'Cagnotte',
'active' => 'Actif', 'active' => 'Actif',
'date_creation' => 'Date de création', 'date_creation' => 'Date de création',
'order_infos' => 'Informations', 'order_infos' => 'Informations',
'slug' => 'Slug', 'slug' => 'Slug',
'type' => 'Type de producteur', 'type' => 'Type de producteur',
'credit_limit_reminder' => 'Seuil de crédit limite avant relance',
'credit_limit_reminder' => 'Seuil de cagnotte limite avant relance',
'online_payment' => 'Activer le paiement en ligne (Stripe)', 'online_payment' => 'Activer le paiement en ligne (Stripe)',
'option_online_payment_type' => 'Type de paiement', 'option_online_payment_type' => 'Type de paiement',
'option_stripe_mode_test' => 'Mode test', 'option_stripe_mode_test' => 'Mode test',
'mentions' => 'Mentions légales', 'mentions' => 'Mentions légales',
'gcs' => 'Conditions générales de vente', 'gcs' => 'Conditions générales de vente',
'option_allow_user_gift' => 'Autoriser les utilisateurs à effectuer un don à la plateforme lors de leur commande', 'option_allow_user_gift' => 'Autoriser les utilisateurs à effectuer un don à la plateforme lors de leur commande',
'credit_functioning' => 'Utilisation du Crédit par l\'utilisateur',
'credit_limit' => 'Crédit limite',
'use_credit_checked_default' => 'Cocher par défaut l\'option "Utiliser mon crédit" lors de la commande de l\'utilisateur',
'credit_functioning' => 'Fonctionnement de la cagnotte',
'credit_limit' => 'Cagnotte : montant limite',
'use_credit_checked_default' => 'Cocher par défaut l\'option "Utiliser ma cagnotte" lors de la commande de l\'utilisateur',
'background_color_logo' => 'Couleur de fond du logo', 'background_color_logo' => 'Couleur de fond du logo',
'option_behavior_cancel_order' => 'Comportement lors de la suppression d\'une commande', 'option_behavior_cancel_order' => 'Comportement lors de la suppression d\'une commande',
'tiller' => 'Tiller', 'tiller' => 'Tiller',

+ 1
- 1
domain/Producer/Producer/ProducerRepository.php View File

} }


/** /**
* Retourne le mode de fonctionnement du crédit d'un point de vente.
* Retourne le mode de fonctionnement de la cagnotte d'un point de vente.
*/ */
public function getPointSaleCreditFunctioning(PointSale $pointSale): string public function getPointSaleCreditFunctioning(PointSale $pointSale): string
{ {

+ 1
- 1
domain/User/User/UserRepository.php View File

} }


/** /**
* Retourne le crédit de l'utilisateur pour un producteur donné.
* Retourne le montant de la cagnotte de l'utilisateur pour un producteur donné.
* *
*/ */
public function getCredit(User $user, bool $reloadUserProducer = false): float public function getCredit(User $user, bool $reloadUserProducer = false): float

+ 1
- 1
domain/User/User/UsersCreditCsvGenerator.php View File

} }


$data = [ $data = [
['Client', 'Email', 'Téléphone', 'Crédit']
['Client', 'Email', 'Téléphone', 'Cagnotte']
]; ];
foreach($usersArray as $user) { foreach($usersArray as $user) {
$data[] = [ $data[] = [

+ 1
- 1
domain/User/UserProducer/UserProducer.php View File

'id_producer' => 'Producteur', 'id_producer' => 'Producteur',
'active' => 'Actif', 'active' => 'Actif',
'bookmark' => 'Favoris', 'bookmark' => 'Favoris',
'credit_active' => 'Crédit',
'credit_active' => 'Cagnotte',
'product_price_percent' => 'Prix produits : pourcentage', 'product_price_percent' => 'Prix produits : pourcentage',
'trust_alert' => 'Alert confiance', 'trust_alert' => 'Alert confiance',
'trust_alert_comment' => 'Commentaire', 'trust_alert_comment' => 'Commentaire',

+ 1
- 1
domain/User/UserProducer/UserProducerBuilder.php View File

) )
->setTo($user->email) ->setTo($user->email)
->setFrom(['contact@souke.fr' => 'Souke']) ->setFrom(['contact@souke.fr' => 'Souke'])
->setSubject('[Souke] Seuil limite de crédit dépassé')
->setSubject('[Souke] Seuil limite de cagnotte dépassé')
->send(); ->send();
} }
} }

+ 1
- 1
frontend/controllers/SiteController.php View File

} }


/** /**
* Affiche les précisions concernant l'utilisation du crédit.
* Affiche les précisions concernant l'utilisation de la cagnotte
*/ */
public function actionCredit() public function actionCredit()
{ {

+ 1
- 1
frontend/views/layouts/main.php View File

<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title><?php if ($isHome): ?>Souke &bull; <?= Html::encode($this->title) ?><?php else: ?><?= Html::encode($this->page_title) ?> &bull; Souke<?php endif; ?></title>
<title><?php if ($isHome): ?>Souke |<?= Html::encode($this->title) ?><?php else: ?><?= Html::encode($this->page_title) ?> | Souke<?php endif; ?></title>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="baseurl" content="<?= Yii::$app->urlManagerFrontend->baseUrl; ?>"> <meta name="baseurl" content="<?= Yii::$app->urlManagerFrontend->baseUrl; ?>">

+ 2
- 2
producer/controllers/CreditController.php View File

'price_data' => [ 'price_data' => [
'currency' => 'eur', 'currency' => 'eur',
'product_data' => [ 'product_data' => [
'name' => 'Alimentation crédit',
'name' => 'Alimentation cagnotte',
], ],
'unit_amount' => (float)$creditForm->amount * 100, 'unit_amount' => (float)$creditForm->amount * 100,
], ],


$userProducer = $this->getUserProducerModule()->findOneUserProducer($user); $userProducer = $this->getUserProducerModule()->findOneUserProducer($user);
\Yii::$app->mailerService->sendFromProducer( \Yii::$app->mailerService->sendFromProducer(
'Alimentation de votre crédit',
'Alimentation de votre cagnotte',
'creditConfirm', 'creditConfirm',
[ [
'user' => $user, 'user' => $user,

+ 3
- 3
tests/codeception/producer/functional/CreditCept.php View File



$I = new FunctionalTester($scenario); $I = new FunctionalTester($scenario);


$I->wantTo("m'assurer que les pages de la section Crédit s'affichent correctement");
$I->wantTo("m'assurer que les pages de la section Cagnotte s'affichent correctement");
$I->amLoggedInAs(1); $I->amLoggedInAs(1);


$I->amOnPage('/demo/credit/history'); $I->amOnPage('/demo/credit/history');
$I->see('Crédit', 'h2');
$I->see('Cagnotte', 'h2');


$I->amOnPage('/demo/credit/add'); $I->amOnPage('/demo/credit/add');
$I->see('Créditer mon compte', 'h2');
$I->see('Créditer ma cagnotte', 'h2');





Loading…
Cancel
Save