Преглед на файлове

[producer] Correctifs divers + envoi email confirmation

refactoring
Guillaume преди 4 години
родител
ревизия
a869d6cf68
променени са 12 файла, в които са добавени 368 реда и са изтрити 109 реда
  1. +6
    -0
      backend/views/producer/update.php
  2. +93
    -54
      common/helpers/Mailjet.php
  3. +65
    -0
      common/mail/orderConfirm-html.php
  4. +64
    -0
      common/mail/orderConfirm-text.php
  5. +3
    -2
      common/models/Producer.php
  6. +19
    -0
      console/migrations/m200603_062748_add_option_producer_mail_confirm.php
  7. +29
    -1
      producer/controllers/OrderController.php
  8. +3
    -2
      producer/views/order/confirm.php
  9. +44
    -29
      producer/views/order/order.php
  10. +2
    -1
      producer/views/site/index.php
  11. +30
    -20
      producer/web/css/screen.css
  12. +10
    -0
      producer/web/sass/order/_order.scss

+ 6
- 0
backend/views/producer/update.php Целия файл

<?= $form->field($model, 'option_payment_info') <?= $form->field($model, 'option_payment_info')
->textarea(['rows' => 6]) ->textarea(['rows' => 6])
->hint('Affiché au client à la fin de la prise de commande')?> ->hint('Affiché au client à la fin de la prise de commande')?>

<?= $form->field($model, 'option_email_confirm')
->dropDownList([
0 => 'Non',
1 => 'Oui'
], []); ?>
</div> </div>
</div> </div>



+ 93
- 54
common/helpers/Mailjet.php Целия файл

<?php <?php


/**
Copyright distrib (2018)
/**
* Copyright distrib (2018)
*
* contact@opendistrib.net
*
* Ce logiciel est un programme informatique servant à aider les producteurs
* à distribuer leur production en circuits courts.
*
* Ce logiciel est régi par la licence CeCILL soumise au droit français et
* respectant les principes de diffusion des logiciels libres. Vous pouvez
* utiliser, modifier et/ou redistribuer ce programme sous les conditions
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
* sur le site "http://www.cecill.info".
*
* En contrepartie de l'accessibilité au code source et des droits de copie,
* de modification et de redistribution accordés par cette licence, il n'est
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
* seule une responsabilité restreinte pèse sur l'auteur du programme, le
* titulaire des droits patrimoniaux et les concédants successifs.
*
* A cet égard l'attention de l'utilisateur est attirée sur les risques
* associés au chargement, à l'utilisation, à la modification et/ou au
* développement et à la reproduction du logiciel par l'utilisateur étant
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à
* manipuler et qui le réserve donc à des développeurs et des professionnels
* avertis possédant des connaissances informatiques approfondies. Les
* utilisateurs sont donc invités à charger et tester l'adéquation du
* logiciel à leurs besoins dans des conditions permettant d'assurer la
* sécurité de leurs systèmes et ou de leurs données et, plus généralement,
* à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
*
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
* pris connaissance de la licence CeCILL, et que vous en avez accepté les
* termes.
*/


contact@opendistrib.net
namespace common\helpers;


Ce logiciel est un programme informatique servant à aider les producteurs
à distribuer leur production en circuits courts.
use yii\helpers\Html;


Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".
class Mailjet
{
public static function sendMail($params = [])
{
$mj = new \Mailjet\Client(
self::getApiKey('public'),
self::getApiKey('private'),
true,
['version' => 'v3.1']
);


En contrepartie de l'accessibilité au code source et des droits de copie,
de modification et de redistribution accordés par cette licence, il n'est
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
seule une responsabilité restreinte pèse sur l'auteur du programme, le
titulaire des droits patrimoniaux et les concédants successifs.
$body = ['Messages' => []] ;


A cet égard l'attention de l'utilisateur est attirée sur les risques
associés au chargement, à l'utilisation, à la modification et/ou au
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
manipuler et qui le réserve donc à des développeurs et des professionnels
avertis possédant des connaissances informatiques approfondies. Les
utilisateurs sont donc invités à charger et tester l'adéquation du
logiciel à leurs besoins dans des conditions permettant d'assurer la
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
$body['Messages'][] = [
'From' => [
'Email' => $params['from_email'],
'Name' => $params['from_name']
],
'To' => [
[
'Email' => $params['to_email'],
'Name' => $params['to_name']
]
],
'Subject' => $params['subject'],
'TextPart' => Yii::$app->view->renderFile($params['content_view_text'], $params['content_params']),
'HTMLPart' => Yii::$app->view->renderFile($params['content_view_html'], $params['content_params'])
] ;


Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes.
*/
$response = $mj->post(\Mailjet\Resources::$Email, ['body' => $body]);


namespace common\helpers;
$success = $response->success() ;


class Mailjet
{
public static function getApiKey($type = 'private')
{
$filename = '../../common/config/mailjet/api.key' ;
if(file_exists($filename)) {
$handle = fopen($filename, "r") ;
$filesize = filesize($filename) ;
if($handle && $filesize) {
$apiKeys = fread($handle, $filesize);
fclose($handle);
$apiKeysArray = explode(':', $apiKeys) ;
if(count($apiKeysArray) == 2) {
if($type == 'private') {
$key = $apiKeysArray[1] ;
}
else {
$key = $apiKeysArray[0] ;
}
return trim($key) ;
if(!$success) {
Yii::error($response->getBody(), 'Mailjet');
} }
}

return $success ;
}

public static function getApiKey($type = 'private')
{
$filename = '../../common/config/mailjet/api.key';
if (file_exists($filename)) {
$handle = fopen($filename, "r");
$filesize = filesize($filename);
if ($handle && $filesize) {
$apiKeys = fread($handle, $filesize);
fclose($handle);
$apiKeysArray = explode(':', $apiKeys);
if (count($apiKeysArray) == 2) {
if ($type == 'private') {
$key = $apiKeysArray[1];
} else {
$key = $apiKeysArray[0];
}
return trim($key);
}
}
}

return '';
} }
return '' ;
}
} }

+ 65
- 0
common/mail/orderConfirm-html.php Целия файл

<?php

/**
Copyright distrib (2018)

contact@opendistrib.net

Ce logiciel est un programme informatique servant à aider les producteurs
à distribuer leur production en circuits courts.

Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".

En contrepartie de l'accessibilité au code source et des droits de copie,
de modification et de redistribution accordés par cette licence, il n'est
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
seule une responsabilité restreinte pèse sur l'auteur du programme, le
titulaire des droits patrimoniaux et les concédants successifs.

A cet égard l'attention de l'utilisateur est attirée sur les risques
associés au chargement, à l'utilisation, à la modification et/ou au
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
manipuler et qui le réserve donc à des développeurs et des professionnels
avertis possédant des connaissances informatiques approfondies. Les
utilisateurs sont donc invités à charger et tester l'adéquation du
logiciel à leurs besoins dans des conditions permettant d'assurer la
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.

Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes.
*/

use common\models\Producer ;
use common\helpers\GlobalParam ;
$producer = GlobalParam::getCurrentProducer() ;

?>

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

<p>Votre commande d'une valeur de <strong><?= $order->getAmountWithTax(Order::AMOUNT_TOTAL, true); ?></strong> a bien été prise en compte.</p>

<p>Elle sera à retirer le <strong><?= date('d/m/Y',strtotime($distribution->date)) ?></strong> au point de retrait
<strong><?= Html::encode($pointSale->name) ?></strong><?php if(strlen($pointSale->locality) > 0): ?> situé à <?= Html::encode($pointSale->locality) ?><?php endif ?>.</p>

<?php $payment_infos = Producer::getConfig('option_payment_info') ; ?>
<?php if($payment_infos && strlen($payment_infos) > 0): ?>
<p><strong>Informations de paiement :</strong><br />
<?= nl2br(Html::encode($payment_infos)); ?></p>
<?php endif; ?>

<?php $order_infos = Producer::getConfig('order_infos') ; ?>
<?php if($order_infos && strlen($order_infos) > 0): ?>
<p><strong>Informations générales :</strong><br />
<?= nl2br(Html::encode($order_infos)); ?></p>
<?php endif; ?>

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

+ 64
- 0
common/mail/orderConfirm-text.php Целия файл

<?php

/**
Copyright distrib (2018)

contact@opendistrib.net

Ce logiciel est un programme informatique servant à aider les producteurs
à distribuer leur production en circuits courts.

Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".

En contrepartie de l'accessibilité au code source et des droits de copie,
de modification et de redistribution accordés par cette licence, il n'est
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
seule une responsabilité restreinte pèse sur l'auteur du programme, le
titulaire des droits patrimoniaux et les concédants successifs.

A cet égard l'attention de l'utilisateur est attirée sur les risques
associés au chargement, à l'utilisation, à la modification et/ou au
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
manipuler et qui le réserve donc à des développeurs et des professionnels
avertis possédant des connaissances informatiques approfondies. Les
utilisateurs sont donc invités à charger et tester l'adéquation du
logiciel à leurs besoins dans des conditions permettant d'assurer la
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.

Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes.
*/

use common\models\Producer ;
use common\helpers\GlobalParam ;
$producer = GlobalParam::getCurrentProducer() ;

?>

Bonjour <?= $user->name; ?>,

Votre commande d'une valeur de <?= $order->getAmountWithTax(Order::AMOUNT_TOTAL, true); ?> a bien été prise en compte.

Elle sera à retirer le <?= date('d/m/Y',strtotime($distribution->date)) ?> au point de retrait <?= $pointSale->name ?><?php if(strlen($pointSale->locality) > 0): ?> situé à <?= Html::encode($pointSale->locality) ?><?php endif ?>.

<?php $payment_infos = Producer::getConfig('option_payment_info') ; ?>
<?php if($payment_infos && strlen($payment_infos) > 0): ?>
Informations de paiement :
<?= $payment_infos ?>
<?php endif; ?>

<?php $order_infos = Producer::getConfig('order_infos') ; ?>
<?php if($order_infos && strlen($order_infos) > 0): ?>
Informations générales :
<?= $order_infos ?>
<?php endif; ?>

À bientôt,
<?= $producer->name ?>

+ 3
- 2
common/models/Producer.php Целия файл

}], }],
[['description', 'mentions', 'gcs', 'order_infos', 'slug', 'secret_key_payplug', 'background_color_logo', 'option_behavior_cancel_order', 'tiller_provider_token', 'tiller_restaurant_token', 'status', [['description', 'mentions', 'gcs', 'order_infos', 'slug', 'secret_key_payplug', 'background_color_logo', 'option_behavior_cancel_order', 'tiller_provider_token', 'tiller_restaurant_token', 'status',
'document_infos_bottom', 'document_infos_quotation', 'document_infos_invoice', 'document_infos_delivery_note', 'address', 'behavior_home_point_sale_day_list', 'behavior_order_select_distribution', 'option_payment_info'], 'string'], 'document_infos_bottom', 'document_infos_quotation', 'document_infos_invoice', 'document_infos_delivery_note', 'address', 'behavior_home_point_sale_day_list', 'behavior_order_select_distribution', 'option_payment_info'], 'string'],
[['negative_balance', 'credit', 'active', 'online_payment', 'user_manage_subscription', 'option_allow_user_gift', 'use_credit_checked_default', 'tiller', 'document_display_orders_invoice', 'document_display_orders_delivery_note', 'document_display_prices_delivery_note'], 'boolean'],
[['negative_balance', 'credit', 'active', 'online_payment', 'user_manage_subscription', 'option_allow_user_gift', 'use_credit_checked_default', 'tiller', 'document_display_orders_invoice', 'document_display_orders_delivery_note', 'document_display_prices_delivery_note', 'option_email_confirm'], 'boolean'],
[['name', 'siret', 'logo', 'photo', 'postcode', 'city', 'code', 'type', 'credit_functioning', 'option_behavior_cancel_order', 'document_quotation_prefix', 'document_quotation_first_reference', 'document_invoice_prefix', 'document_invoice_first_reference', 'document_delivery_note_prefix', 'document_delivery_note_first_reference'], 'string', 'max' => 255], [['name', 'siret', 'logo', 'photo', 'postcode', 'city', 'code', 'type', 'credit_functioning', 'option_behavior_cancel_order', 'document_quotation_prefix', 'document_quotation_first_reference', 'document_invoice_prefix', 'document_invoice_first_reference', 'document_delivery_note_prefix', 'document_delivery_note_first_reference'], 'string', 'max' => 255],
[['free_price', 'credit_limit_reminder', 'credit_limit'], 'double'], [['free_price', 'credit_limit_reminder', 'credit_limit'], 'double'],
['free_price', 'compare', 'compareValue' => 0, 'operator' => '>=', 'type' => 'number', 'message' => 'Prix libre doit être supérieur ou égal à 0'], ['free_price', 'compare', 'compareValue' => 0, 'operator' => '>=', 'type' => 'number', 'message' => 'Prix libre doit être supérieur ou égal à 0'],
'document_display_prices_delivery_note' => 'Afficher le chiffrage dans les bons de livraison', 'document_display_prices_delivery_note' => 'Afficher le chiffrage dans les bons de livraison',
'behavior_home_point_sale_day_list' => 'Accueil : affichage des jours de distribution', 'behavior_home_point_sale_day_list' => 'Accueil : affichage des jours de distribution',
'behavior_order_select_distribution' => 'Sélection de la date de distribution', 'behavior_order_select_distribution' => 'Sélection de la date de distribution',
'option_payment_info' => 'Informations liées au paiement'
'option_payment_info' => 'Informations liées au paiement',
'option_email_confirm' => 'Envoyer un email de confirmation'
]; ];
} }



+ 19
- 0
console/migrations/m200603_062748_add_option_producer_mail_confirm.php Целия файл

<?php

use yii\db\Migration;
use yii\db\Schema;

class m200603_062748_add_option_producer_mail_confirm extends Migration
{
public function safeUp()
{
$this->addColumn('producer', 'option_email_confirm', Schema::TYPE_BOOLEAN.' DEFAULT 0');
}

public function safeDown()
{
$this->dropColumn('producer', 'option_email_confirm');

return false;
}
}

+ 29
- 1
producer/controllers/OrderController.php Целия файл



use common\helpers\Debug; use common\helpers\Debug;
use common\helpers\GlobalParam; use common\helpers\GlobalParam;
use common\helpers\Mailjet;
use common\models\ProductDistribution; use common\models\ProductDistribution;
use common\models\User; use common\models\User;
use common\models\Producer; use common\models\Producer;
$totalQuantity = 0; $totalQuantity = 0;
$producer = $this->getProducer(); $producer = $this->getProducer();


$isNewOrder = false ;
if(!$order->id) {
$isNewOrder = true ;
}

foreach ($posts['products'] as $key => $quantity) { foreach ($posts['products'] as $key => $quantity) {
$product = Product::find()->where(['id' => (int)$key])->one(); $product = Product::find()->where(['id' => (int)$key])->one();
$totalQuantity += $quantity; $totalQuantity += $quantity;
$order->save(); $order->save();


$order->changeOrderStatus('new-order', 'user'); $order->changeOrderStatus('new-order', 'user');

// ajout de l'utilisateur à l'établissement // ajout de l'utilisateur à l'établissement
Producer::addUser(User::getCurrentId(), $distribution->id_producer); Producer::addUser(User::getCurrentId(), $distribution->id_producer);


}else{ }else{
$order->changeOrderStatus('waiting-paiement-on-delivery', 'user'); $order->changeOrderStatus('waiting-paiement-on-delivery', 'user');
} }
} // surplus à rembourser
}
// surplus à rembourser
elseif ($order->getPaymentStatus() == Order::PAYMENT_SURPLUS) { elseif ($order->getPaymentStatus() == Order::PAYMENT_SURPLUS) {
$amountSurplus = $order->getAmount(Order::AMOUNT_SURPLUS); $amountSurplus = $order->getAmount(Order::AMOUNT_SURPLUS);
$order->saveCreditHistory( $order->saveCreditHistory(
$order->changeOrderStatus('waiting-paiement-on-delivery', 'user'); $order->changeOrderStatus('waiting-paiement-on-delivery', 'user');
} }


// envoi mail de confirmation
if($isNewOrder && Producer::getConfig('option_email_confirm')) {
$user = User::getCurrent() ;
$successMail = Mailjet::sendMail([
'from_email' => $producer->getEmailOpendistrib(),
'from_name' => $producer->name,
'to_email' => $user->email,
'to_name' => $user->getUsername(),
'subject' => '['.$producer->name.'] Confirmation de commande',
'content_view_text' => '@common/mail/orderConfirm-text.php',
'content_view_html' => '@common/mail/orderConfirm-html.php',
'content_params' => [
'order' => $order,
'pointSale' => $pointSale,
'distribution' => $distribution,
'user' => $user
]
]);
}

$order->setTillerSynchronization() ; $order->setTillerSynchronization() ;
} }



+ 3
- 2
producer/views/order/confirm.php Целия файл

?> ?>


<div id="order-success"> <div id="order-success">

<div class="alert alert-success"> <div class="alert alert-success">
<span class="glyphicon glyphicon-ok glyphicon-big"></span>
<span class="glyphicon glyphicon-ok glyphicon-big"></span>
<div class="content"> <div class="content">
<h3>Votre commande a bien été prise en compte</h3> <h3>Votre commande a bien été prise en compte</h3>
<a href="<?= Yii::$app->urlManagerProducer->createUrl(['order/history']) ?>" class="btn btn-default"> <a href="<?= Yii::$app->urlManagerProducer->createUrl(['order/history']) ?>" class="btn btn-default">
<div class="clr"></div> <div class="clr"></div>
</div> </div>
<div class="alert alert-info"> <div class="alert alert-info">
<span class="glyphicon glyphicon-list-alt glyphicon-big"></span>
<span class="glyphicon glyphicon-list-alt glyphicon-big"></span>
<div class="content"> <div class="content">
<h3>Récapitulatif de votre commande</h3> <h3>Récapitulatif de votre commande</h3>
<ul> <ul>

+ 44
- 29
producer/views/order/order.php Целия файл

<?php <?php


/**
Copyright distrib (2018)
/**
Copyright distrib (2018)


contact@opendistrib.net contact@opendistrib.net


Ce logiciel est un programme informatique servant à aider les producteurs
à distribuer leur production en circuits courts.
Ce logiciel est un programme informatique servant à aider les producteurs
à distribuer leur production en circuits courts.


Ce logiciel est régi par la licence CeCILL soumise au droit français et Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info". sur le site "http://www.cecill.info".


En contrepartie de l'accessibilité au code source et des droits de copie, En contrepartie de l'accessibilité au code source et des droits de copie,


A cet égard l'attention de l'utilisateur est attirée sur les risques A cet égard l'attention de l'utilisateur est attirée sur les risques
associés au chargement, à l'utilisation, à la modification et/ou au associés au chargement, à l'utilisation, à la modification et/ou au
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
manipuler et qui le réserve donc à des développeurs et des professionnels manipuler et qui le réserve donc à des développeurs et des professionnels
avertis possédant des connaissances informatiques approfondies. Les avertis possédant des connaissances informatiques approfondies. Les
utilisateurs sont donc invités à charger et tester l'adéquation du utilisateurs sont donc invités à charger et tester l'adéquation du
logiciel à leurs besoins dans des conditions permettant d'assurer la logiciel à leurs besoins dans des conditions permettant d'assurer la
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.


Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
pris connaissance de la licence CeCILL, et que vous en avez accepté les pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes. termes.
*/ */


<div id="app-order-order" :class="{'loaded': !loadingInit}"> <div id="app-order-order" :class="{'loaded': !loadingInit}">
<?php if(isset($order)): ?> <?php if(isset($order)): ?>
<span id="order-distribution-date"><?= $order->distribution->date; ?></span>
<span id="order-distribution-date"><?= $order->distribution->date; ?></span>
<?php endif; ?> <?php endif; ?>
<?php if(isset($date)): ?> <?php if(isset($date)): ?>
<span id="distribution-date"><?= $date; ?></span>
<span id="distribution-date"><?= $date; ?></span>
<?php endif; ?> <?php endif; ?>
<div v-if="loadingInit && distributions.length == 0" class="alert alert-warning"> <div v-if="loadingInit && distributions.length == 0" class="alert alert-warning">
Aucune distribution n'est prévue chez ce producteur. Aucune distribution n'est prévue chez ce producteur.
<div id="distributions-list"> <div id="distributions-list">
<?php $incomingDistributions = Distribution::getIncomingDistributions(); ?> <?php $incomingDistributions = Distribution::getIncomingDistributions(); ?>
<?php foreach($incomingDistributions as $distribution): ?> <?php foreach($incomingDistributions as $distribution): ?>

<?php
$pointSaleDistributions = PointSaleDistribution::searchAll([
'id_distribution' => $distribution->id,
'delivery' => 1
], [], [
'with' => 'pointSale'
]);
?>

<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-body"> <div class="panel-body">
<?= ucfirst(strftime('%A %d %B', strtotime($distribution->date))); ?>
<a href="javascript:void(0);" class="btn btn-primary" @click="dayClickList" data-distribution-date="<?= $distribution->date.' 00:00' ?>">Sélectionner cette distribution</a> <a href="javascript:void(0);" class="btn btn-primary" @click="dayClickList" data-distribution-date="<?= $distribution->date.' 00:00' ?>">Sélectionner cette distribution</a>
<span class="date"><?= ucfirst(strftime('%A %d %B', strtotime($distribution->date))); ?></span>
<?php
if($pointSaleDistributions && count($pointSaleDistributions) > 0) {
echo '<div class="point-sales">' ;
}
?>
<?php foreach($pointSaleDistributions as $pointSaleDistribution) {
echo $pointSaleDistribution->pointSale->name.'<br />' ;
}
echo '</div>' ;
?>

</div> </div>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
</div> </div>
<button class="btn btn-primary" @click="pointSaleClick" :data-code="pointSale.code.length > 0" :data-id-point-sale="pointSale.id"> <button class="btn btn-primary" @click="pointSaleClick" :data-code="pointSale.code.length > 0" :data-id-point-sale="pointSale.id">
<span class="glyphicon glyphicon-map-marker"></span> <span class="glyphicon glyphicon-map-marker"></span>
Choisir
Choisir
</button> </button>
</td> </td>
</tr> </tr>
<img v-if="product.photo.length" class="photo-product" :src="'<?php echo Yii::$app->urlManager->getBaseUrl(); ?>/uploads/'+product.photo" /> <img v-if="product.photo.length" class="photo-product" :src="'<?php echo Yii::$app->urlManager->getBaseUrl(); ?>/uploads/'+product.photo" />
</td> </td>
<td class="name"> <td class="name">
<span class="name">{{ product.name }}</span>
<span class="name">{{ product.name }}</span>
<span class="other"> <span class="other">
<span v-if="product.description.length">/</span> <span v-if="product.description.length">/</span>
<span class="description">{{ product.description }}</span> <span class="description">{{ product.description }}</span>
<label for="order-comment">Commentaire</label> <label for="order-comment">Commentaire</label>
<textarea id="order-comment" v-model="comment" class="form-control"></textarea> <textarea id="order-comment" v-model="comment" class="form-control"></textarea>
</div> </div>
<template v-if="!checkCreditLimit(order) && pointSaleActive.credit_functioning == 'mandatory'">
<template v-if="!checkCreditLimit(order) && pointSaleActive.credit_functioning == 'mandatory'">
<div class="alert alert-danger">Vous devez recharger votre crédit ou supprimer des produits. Votre producteur n'autorise pas un crédit inférieur à <strong>{{ formatPrice(creditLimit) }}</strong>.</div> <div class="alert alert-danger">Vous devez recharger votre crédit ou supprimer des produits. Votre producteur n'autorise pas un crédit inférieur à <strong>{{ formatPrice(creditLimit) }}</strong>.</div>
<div class="block-actions"> <div class="block-actions">
<a class="btn btn-primary" href="<?= Yii::$app->urlManager->createUrl(['site/index']) ?>">Retour à l'accueil</a> <a class="btn btn-primary" href="<?= Yii::$app->urlManager->createUrl(['site/index']) ?>">Retour à l'accueil</a>
</div> </div>
<template v-else> <template v-else>
<div class="credit"> <div class="credit">
<div v-if="producer.credit == 1 && pointSaleActive.credit == 1 && (pointSaleActive.credit_functioning != 'user' || (pointSaleActive.credit_functioning == 'user' && user.credit_active))"> <div v-if="producer.credit == 1 && pointSaleActive.credit == 1 && (pointSaleActive.credit_functioning != 'user' || (pointSaleActive.credit_functioning == 'user' && user.credit_active))">
<input type="checkbox" id="use-credit" v-model="useCredit" disabled="disabled" v-if="pointSaleActive.credit_functioning == 'mandatory' || (pointSaleActive.credit_functioning == 'user' && user.credit_active)" />
<input type="checkbox" id="use-credit" v-model="useCredit" disabled="disabled" v-if="pointSaleActive.credit_functioning == 'mandatory' || (pointSaleActive.credit_functioning == 'user' && user.credit_active)" />
<input type="checkbox" id="use-credit" v-model="useCredit" v-else /> <label for="use-credit">Utiliser mon Crédit ({{ formatPrice(user.credit) }})</label> <input type="checkbox" id="use-credit" v-model="useCredit" v-else /> <label for="use-credit">Utiliser mon Crédit ({{ formatPrice(user.credit) }})</label>
<div class="info" v-if="useCredit"> <div class="info" v-if="useCredit">
<template v-if="order == null || order.amount_paid == 0"> <template v-if="order == null || order.amount_paid == 0">
<span v-if="checkCreditLimit(order)">{{ priceTotal(true) }} seront débités</span> <span v-if="checkCreditLimit(order)">{{ priceTotal(true) }} seront débités</span>
</div> </div>
</div> </div>
<div v-else> <div v-else>
<span class="glyphicon glyphicon-chevron-right"></span>
<?php if($producer->option_payment_info && strlen($producer->option_payment_info) > 0): ?> <?php if($producer->option_payment_info && strlen($producer->option_payment_info) > 0): ?>
<div class="panel panel-warning payment-info">
<div class="panel-heading">
<h3>Paiement de votre commande</h3>
</div>
<div class="panel-body">
<?= nl2br($producer->option_payment_info); ?>
</div>
</div>
Confirmez votre commande et retrouvez les informations liées au paiement sur la page suivante.
<?php else: ?> <?php else: ?>
<span class="glyphicon glyphicon-chevron-right"></span> La commande sera à régler sur place.
La commande sera à régler sur place.
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>

+ 2
- 1
producer/views/site/index.php Целия файл

foreach($incomingDistributions as $distribution) { foreach($incomingDistributions as $distribution) {
$countPointSaleDistribution = PointSaleDistribution::searchCount([ $countPointSaleDistribution = PointSaleDistribution::searchCount([
'id_distribution' => $distribution->id, 'id_distribution' => $distribution->id,
'id_point_sale' => $model->id
'id_point_sale' => $model->id,
'delivery' => 1
]); ]);
if($countPointSaleDistribution) { if($countPointSaleDistribution) {
$html .= strftime('%A %d %B', strtotime($distribution->date)).'<br />'; $html .= strftime('%A %d %B', strtotime($distribution->date)).'<br />';

+ 30
- 20
producer/web/css/screen.css Целия файл

.order-order #main #app-order-order #content-step-date #distributions-list .panel .btn-primary { .order-order #main #app-order-order #content-step-date #distributions-list .panel .btn-primary {
float: right; float: right;
} }
/* line 182, ../sass/order/_order.scss */
/* line 179, ../sass/order/_order.scss */
.order-order #main #app-order-order #content-step-date #distributions-list .panel .date {
font-size: 20px;
}
/* line 183, ../sass/order/_order.scss */
.order-order #main #app-order-order #content-step-date #distributions-list .panel .point-sales {
color: gray;
font-size: 14px;
margin-top: 8px;
}
/* line 192, ../sass/order/_order.scss */
.order-order #main #app-order-order .block-actions { .order-order #main #app-order-order .block-actions {
text-align: right; text-align: right;
margin-top: 20px; margin-top: 20px;
} }
/* line 189, ../sass/order/_order.scss */
/* line 199, ../sass/order/_order.scss */
.order-order #main #app-order-order table#points-sale td.name .the-name { .order-order #main #app-order-order table#points-sale td.name .the-name {
font-family: "capsuularegular"; font-family: "capsuularegular";
color: black; color: black;
font-size: 20px; font-size: 20px;
line-height: 25px; line-height: 25px;
} }
/* line 197, ../sass/order/_order.scss */
/* line 207, ../sass/order/_order.scss */
.order-order #main #app-order-order table#points-sale td.actions { .order-order #main #app-order-order table#points-sale td.actions {
width: 150px; width: 150px;
} }
/* line 199, ../sass/order/_order.scss */
/* line 209, ../sass/order/_order.scss */
.order-order #main #app-order-order table#points-sale td.actions button { .order-order #main #app-order-order table#points-sale td.actions button {
width: 100%; width: 100%;
} }
/* line 205, ../sass/order/_order.scss */
/* line 215, ../sass/order/_order.scss */
.order-order #main #app-order-order table#points-sale tr.selected td { .order-order #main #app-order-order table#points-sale tr.selected td {
background-color: white; background-color: white;
} }
/* line 213, ../sass/order/_order.scss */
/* line 223, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products td.photo img { .order-order #main #app-order-order table#products td.photo img {
width: 100px; width: 100px;
} }
/* line 219, ../sass/order/_order.scss */
/* line 229, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products td.name .name { .order-order #main #app-order-order table#products td.name .name {
font-family: "capsuularegular"; font-family: "capsuularegular";
color: black; color: black;
font-size: 20px; font-size: 20px;
line-height: 25px; line-height: 25px;
} }
/* line 225, ../sass/order/_order.scss */
/* line 235, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products td.name .other { .order-order #main #app-order-order table#products td.name .other {
font-size: 14px; font-size: 14px;
color: #333; color: #333;
} }
/* line 229, ../sass/order/_order.scss */
/* line 239, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products td.name .recipe { .order-order #main #app-order-order table#products td.name .recipe {
color: gray; color: gray;
} }
/* line 233, ../sass/order/_order.scss */
/* line 243, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products .price-unit, .order-order #main #app-order-order table#products .price-total { .order-order #main #app-order-order table#products .price-unit, .order-order #main #app-order-order table#products .price-total {
width: 100px; width: 100px;
text-align: center; text-align: center;
} }
/* line 237, ../sass/order/_order.scss */
/* line 247, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products .price-unit .unit, .order-order #main #app-order-order table#products .price-total .unit { .order-order #main #app-order-order table#products .price-unit .unit, .order-order #main #app-order-order table#products .price-total .unit {
color: gray; color: gray;
font-size: 13px; font-size: 13px;
} }
/* line 242, ../sass/order/_order.scss */
/* line 252, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products .td-quantity { .order-order #main #app-order-order table#products .td-quantity {
width: 175px; width: 175px;
} }
/* line 244, ../sass/order/_order.scss */
/* line 254, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products .td-quantity input.quantity { .order-order #main #app-order-order table#products .td-quantity input.quantity {
text-align: center; text-align: center;
border-right: 0px none; border-right: 0px none;
} }
/* line 248, ../sass/order/_order.scss */
/* line 258, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products .td-quantity .input-group-addon { .order-order #main #app-order-order table#products .td-quantity .input-group-addon {
padding: 5px; padding: 5px;
padding-left: 0px; padding-left: 0px;
border-left: 0px none; border-left: 0px none;
border-right: 0px none; border-right: 0px none;
} }
/* line 258, ../sass/order/_order.scss */
/* line 268, ../sass/order/_order.scss */
.order-order #main #app-order-order table#products tr.total .price-total { .order-order #main #app-order-order table#products tr.total .price-total {
font-size: 23px; font-size: 23px;
} }
/* line 266, ../sass/order/_order.scss */
/* line 276, ../sass/order/_order.scss */
.order-order #main #app-order-order #content-step-payment .credit .info { .order-order #main #app-order-order #content-step-payment .credit .info {
margin-left: 20px; margin-left: 20px;
color: gray; color: gray;
} }
/* line 272, ../sass/order/_order.scss */
/* line 282, ../sass/order/_order.scss */
.order-order #main #app-order-order #content-step-payment .comment { .order-order #main #app-order-order #content-step-payment .comment {
margin-bottom: 20px; margin-bottom: 20px;
} }
/* line 283, ../sass/order/_order.scss */
/* line 293, ../sass/order/_order.scss */
.order-order #main #app-order-order #infos { .order-order #main #app-order-order #infos {
margin-top: 30px; margin-top: 30px;
} }
/* line 285, ../sass/order/_order.scss */
/* line 295, ../sass/order/_order.scss */
.order-order #main #app-order-order #infos .panel-body { .order-order #main #app-order-order #infos .panel-body {
padding-top: 0px; padding-top: 0px;
white-space: pre-line; white-space: pre-line;
} }


/* line 295, ../sass/order/_order.scss */
/* line 305, ../sass/order/_order.scss */
#main #content .panel h3 { #main #content .panel h3 {
font-family: "highvoltageregular"; font-family: "highvoltageregular";
margin: 0px; margin: 0px;

+ 10
- 0
producer/web/sass/order/_order.scss Целия файл

.btn-primary { .btn-primary {
float: right ; float: right ;
} }

.date {
font-size: 20px ;
}

.point-sales {
color: gray ;
font-size: 14px ;
margin-top: 8px ;
}
} }
} }
} }

Loading…
Отказ
Запис