<?= $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> | ||||
<?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 '' ; | |||||
} | |||||
} | } |
<?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); ?> |
<?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 ?> |
}], | }], | ||||
[['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' | |||||
]; | ]; | ||||
} | } | ||||
<?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; | |||||
} | |||||
} |
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() ; | ||||
} | } | ||||
?> | ?> | ||||
<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> |
<?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> |
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 />'; |
.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; |
.btn-primary { | .btn-primary { | ||||
float: right ; | float: right ; | ||||
} | } | ||||
.date { | |||||
font-size: 20px ; | |||||
} | |||||
.point-sales { | |||||
color: gray ; | |||||
font-size: 14px ; | |||||
margin-top: 8px ; | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |