namespace backend\controllers; | namespace backend\controllers; | ||||
use backend\models\AccessUserProducerForm; | use backend\models\AccessUserProducerForm; | ||||
use common\logic\User\User\Model\UserSearch; | |||||
use domain\User\User\UserSearch; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\filters\VerbFilter; | |||||
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\controllers\CommonController; | use common\controllers\CommonController; | ||||
use common\logic\PointSale\PointSale\Model\PointSale; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use domain\PointSale\PointSale\PointSale; | |||||
use domain\Producer\Producer\Producer; | |||||
use domain\Product\Product\Product; | |||||
class BackendController extends CommonController | class BackendController extends CommonController | ||||
{ | { |
namespace backend\controllers; | namespace backend\controllers; | ||||
use backend\models\MailForm; | use backend\models\MailForm; | ||||
use common\logic\User\User\Model\User; | |||||
use domain\User\User\User; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\filters\VerbFilter; | use yii\filters\VerbFilter; | ||||
use yii\web\NotFoundHttpException; | use yii\web\NotFoundHttpException; |
namespace backend\controllers; | namespace backend\controllers; | ||||
use backend\models\MailForm; | |||||
use common\helpers\GlobalParam; | |||||
use kartik\mpdf\Pdf; | use kartik\mpdf\Pdf; | ||||
use domain\PointSale\PointSale\PointSale; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\filters\VerbFilter; | use yii\filters\VerbFilter; | ||||
]; | ]; | ||||
} | } | ||||
/** | |||||
* Affiche la page d'accueil de la section avec un aperçu du mode d'emploi | |||||
* à imprimer. | |||||
*/ | |||||
public function actionIndex() | |||||
public function actionEmail( | |||||
$idPointSale = 0, | |||||
$sectionSubscribers = 0, | |||||
$sectionInactiveUsers = 0, | |||||
$usersPointSaleLink = 0, | |||||
$usersPointSaleHasOrder = 0, | |||||
$idDistribution = 0) | |||||
{ | |||||
$producerCurrent = $this->getProducerCurrent(); | |||||
$userModule = $this->getUserModule(); | |||||
$distributionModule = $this->getDistributionModule(); | |||||
$mailForm = new MailForm(); | |||||
if ($idPointSale && !$usersPointSaleLink && !$usersPointSaleHasOrder) { | |||||
$usersPointSaleLink = 1; | |||||
} | |||||
if ($idDistribution && !$usersPointSaleLink && !$usersPointSaleHasOrder) { | |||||
$usersPointSaleLink = 1; | |||||
} | |||||
if($idDistribution) { | |||||
$users = []; | |||||
$distribution = $distributionModule->getRepository()->findOneDistributionById($idDistribution); | |||||
if($distribution) { | |||||
$mailForm->id_distribution = $idDistribution; | |||||
foreach($distribution->pointSaleDistribution as $pointSaleDistribution) { | |||||
if($pointSaleDistribution->delivery) { | |||||
$usersPointSaleArray = $userModule->getRepository()->queryUsersBy([ | |||||
'id_producer' => $producerCurrent->id, | |||||
'id_point_sale' => $pointSaleDistribution->id_point_sale, | |||||
'users_point_sale_link' => $usersPointSaleLink, | |||||
'users_point_sale_has_order' => $usersPointSaleHasOrder, | |||||
'newsletter' => true | |||||
])->all(); | |||||
foreach($usersPointSaleArray as $user) { | |||||
$users[$user['id']] = $user; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
else { | |||||
$users = $userModule->queryUsersBy([ | |||||
'id_producer' => GlobalParam::getCurrentProducerId(), | |||||
'id_point_sale' => $idPointSale, | |||||
'users_point_sale_link' => $usersPointSaleLink, | |||||
'users_point_sale_has_order' => $usersPointSaleHasOrder, | |||||
'subscribers' => $sectionSubscribers, | |||||
'inactive' => $sectionInactiveUsers, | |||||
'newsletter' => true | |||||
])->all(); | |||||
} | |||||
$usersArray = []; | |||||
foreach ($users as $key => $user) { | |||||
if (isset($user['email']) && strlen($user['email']) > 0) { | |||||
$usersArray[] = $user['email']; | |||||
} else { | |||||
unset($users[$key]); | |||||
} | |||||
} | |||||
$pointsSaleArray = PointSale::find()->where(['id_producer' => GlobalParam::getCurrentProducerId(), 'status' => 1])->all(); | |||||
$pointSale = null; | |||||
if ($idPointSale) { | |||||
$pointSale = PointSale::findOne(['id' => $idPointSale]); | |||||
} | |||||
if ($mailForm->load(\Yii::$app->request->post()) && $mailForm->validate()) { | |||||
$responseSendMail = $mailForm->sendEmail($users); | |||||
if ($responseSendMail->success()) { | |||||
$this->setFlash('success', 'Votre email a bien été envoyé.'); | |||||
} else { | |||||
$bodyResponseSendMail = $responseSendMail->getBody(); | |||||
$emailsErrorArray = []; | |||||
if (isset($bodyResponseSendMail['Messages'])) { | |||||
foreach ($bodyResponseSendMail['Messages'] as $message) { | |||||
if ($message['Status'] != 'success') { | |||||
$emailsErrorArray[] = $message['Errors'][0]['ErrorMessage']; | |||||
} | |||||
} | |||||
} | |||||
$messageError = 'Un problème est survenu lors de l\'envoi de votre email.'; | |||||
if (count($emailsErrorArray) > 0) { | |||||
$messageError .= '<br />Problème détecté : ' . implode(',', $emailsErrorArray); | |||||
} | |||||
$this->setFlash('error', $messageError); | |||||
} | |||||
return $this->redirect(['mail', 'idPointSale' => $idPointSale]); | |||||
} | |||||
$incomingDistributionsArray = $distributionModule->findDistributionsIncoming(); | |||||
$incomingDistributionsDatesArray = ['0' => '--']; | |||||
foreach ($incomingDistributionsArray as $distribution) { | |||||
$incomingDistributionsDatesArray[$distribution->id] = strftime('%A %d %B %Y', strtotime($distribution->date)); | |||||
} | |||||
return $this->render('email', [ | |||||
'usersArray' => $usersArray, | |||||
'pointsSaleArray' => $pointsSaleArray, | |||||
'pointSale' => $pointSale, | |||||
'mailForm' => $mailForm, | |||||
'idPointSaleActive' => $idPointSale, | |||||
'idDistributionActive' => $idDistribution, | |||||
'incomingDistributionsArray' => $incomingDistributionsArray, | |||||
'incomingDistributionsDatesArray' => $incomingDistributionsDatesArray, | |||||
'sectionSubscribers' => $sectionSubscribers, | |||||
'sectionInactiveUsers' => $sectionInactiveUsers, | |||||
'usersPointSaleLink' => $usersPointSaleLink, | |||||
'usersPointSaleHasOrder' => $usersPointSaleHasOrder, | |||||
]); | |||||
} | |||||
public function actionPaper() | |||||
{ | { | ||||
$producer = $this->getProducerCurrent(); | $producer = $this->getProducerCurrent(); | ||||
$pointsSaleArray = $this->getPointSaleModule()->findPointSales(); | |||||
return $this->render('index', [ | |||||
return $this->render('paper', [ | |||||
'producer' => $producer, | 'producer' => $producer, | ||||
'pointsSaleArray' => $pointsSaleArray, | |||||
]); | ]); | ||||
} | } | ||||
// return the pdf output as per the destination setting | // return the pdf output as per the destination setting | ||||
return $pdf->render(); | return $pdf->render(); | ||||
} | } | ||||
} | } |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\helpers\GlobalParam; | |||||
use common\helpers\MeanPayment; | use common\helpers\MeanPayment; | ||||
use common\logic\Distribution\Distribution\Service\ExportManager; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\User\User\Model\User; | |||||
use domain\Distribution\Distribution\ExportManager; | |||||
use domain\Order\Order\Order; | |||||
use domain\User\User\User; | |||||
use Yii; | use Yii; | ||||
use yii\filters\VerbFilter; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\filters\VerbFilter; | |||||
/** | /** | ||||
* UserController implements the CRUD actions for User model. | * UserController implements the CRUD actions for User model. |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\logic\Document\DeliveryNote\Model\DeliveryNoteSearch; | |||||
use Yii; | |||||
use domain\Document\DeliveryNote\DeliveryNoteSearch; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\filters\VerbFilter; | |||||
class DeliveryNoteController extends DocumentController | class DeliveryNoteController extends DocumentController | ||||
{ | { |
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\helpers\MeanPayment; | use common\helpers\MeanPayment; | ||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use common\logic\Distribution\Distribution\Model\Distribution; | |||||
use common\logic\Distribution\Distribution\Service\ExportManager; | |||||
use common\logic\Document\DeliveryNote\Model\DeliveryNote; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use domain\Distribution\Distribution\Distribution; | |||||
use domain\Document\DeliveryNote\DeliveryNote; | |||||
use domain\Order\Order\Order; | |||||
use domain\Producer\Producer\Producer; | |||||
use DateTime; | use DateTime; | ||||
use domain\Product\Product\Product; | |||||
use yii\base\ErrorException; | use yii\base\ErrorException; | ||||
use yii\base\Exception; | use yii\base\Exception; | ||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
$orderModule = $this->getOrderModule(); | $orderModule = $this->getOrderModule(); | ||||
$productModule = $this->getProductModule(); | $productModule = $this->getProductModule(); | ||||
$userModule = $this->getUserModule(); | $userModule = $this->getUserModule(); | ||||
$producerModule = $this->getProducerModule(); | |||||
$producer = $this->getProducerCurrent(); | $producer = $this->getProducerCurrent(); | ||||
$dateObject = DateTime::createFromFormat('Y-m-d', $date); | $dateObject = DateTime::createFromFormat('Y-m-d', $date); | ||||
$json['means_payment'] = MeanPayment::getAll(); | $json['means_payment'] = MeanPayment::getAll(); | ||||
$json['producer'] = $this->buildAjaxInfosResponseProducer($producer); | $json['producer'] = $this->buildAjaxInfosResponseProducer($producer); | ||||
$json['distributions'] = $this->buildAjaxInfosResponseDistributions($dateObject); | $json['distributions'] = $this->buildAjaxInfosResponseDistributions($dateObject); | ||||
$json['leave_period_dates'] = $this->buildAjaxInfosResponseLeavePeriod($producer); | |||||
$json['units'] = Product::$unitsArray; | $json['units'] = Product::$unitsArray; | ||||
if ($distributionModule->getSolver()->validateDistributionDate($date)) { | if ($distributionModule->getSolver()->validateDistributionDate($date)) { | ||||
$json['users'] = $userModule->findUsers(); | $json['users'] = $userModule->findUsers(); | ||||
$json['one_distribution_week_active'] = $distributionModule->isOneDistributionWeekActive($date); | $json['one_distribution_week_active'] = $distributionModule->isOneDistributionWeekActive($date); | ||||
$json['tiller_is_synchro'] = $this->buildAjaxInfosResponseTiller($producer, $date); | $json['tiller_is_synchro'] = $this->buildAjaxInfosResponseTiller($producer, $date); | ||||
$json['tiller_is_authenticated'] = $this->getOrderModule()->getTillerManager()->isAuthenticated(); | |||||
$json['tiller_url_authorize_code'] = $this->getOrderModule()->getTillerManager()->getUrlAuthorizeCode(); | |||||
$json['missing_subscriptions'] = $this->buildAjaxInfosResponseMissingSubscriptions($date, $distribution, $ordersArrayObject); | $json['missing_subscriptions'] = $this->buildAjaxInfosResponseMissingSubscriptions($date, $distribution, $ordersArrayObject); | ||||
} | } | ||||
return $json; | return $json; | ||||
} | } | ||||
public function buildAjaxInfosResponseLeavePeriod(Producer $producer) | |||||
{ | |||||
$producerModule = $this->getProducerModule(); | |||||
$leavePeriodDatesArray = []; | |||||
if($producerModule->getSolver()->hasLeavePeriodDefined($producer)) { | |||||
$leavePeriodStart = $producerModule->getSolver()->getLeavePeriodStartDateTime($producer); | |||||
$leavePeriodEnd = $producerModule->getSolver()->getLeavePeriodEndDateTime($producer); | |||||
for($date = $leavePeriodStart; $date <= $leavePeriodEnd; $date->modify('+1 day')) { | |||||
$leavePeriodDatesArray[] = $date->format('Y-m-d'); | |||||
} | |||||
} | |||||
return $leavePeriodDatesArray; | |||||
} | |||||
public function buildAjaxInfosResponsePointsSale(Distribution $distribution) | public function buildAjaxInfosResponsePointsSale(Distribution $distribution) | ||||
{ | { | ||||
$producerModule = $this->getProducerModule(); | $producerModule = $this->getProducerModule(); | ||||
public function buildAjaxInfosResponseDistribution(Distribution $distribution, array $ordersArray, array $productsArray) | public function buildAjaxInfosResponseDistribution(Distribution $distribution, array $ordersArray, array $productsArray) | ||||
{ | { | ||||
$producerModule = $this->getProducerModule(); | |||||
$productModule = $this->getProductModule(); | $productModule = $this->getProductModule(); | ||||
$orderModule = $this->getOrderModule(); | $orderModule = $this->getOrderModule(); | ||||
$distributionModule = $this-> getDistributionModule(); | $distributionModule = $this-> getDistributionModule(); | ||||
'active' => $distribution->active, | 'active' => $distribution->active, | ||||
'exports' => $distributionModule->getExportManager()->getAjaxArray($distribution), | 'exports' => $distributionModule->getExportManager()->getAjaxArray($distribution), | ||||
'url_order' => $distributionModule->getLinkOrder($distribution), | 'url_order' => $distributionModule->getLinkOrder($distribution), | ||||
'is_leave_period' => $producerModule->getSolver()->isOnLeavePeriod($distribution->producer, DateTime::createFromFormat('Y-m-d', $distribution->date)) | |||||
]; | ]; | ||||
// montant et poids des commandes | // montant et poids des commandes |
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\helpers\MeanPayment; | use common\helpers\MeanPayment; | ||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use common\logic\Document\DeliveryNote\Model\DeliveryNote; | |||||
use common\logic\Document\Document\Model\Document; | |||||
use common\logic\Document\Invoice\Model\Invoice; | |||||
use common\logic\Document\Quotation\Model\Quotation; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\Order\ProductOrder\Model\ProductOrder; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use domain\Document\DeliveryNote\DeliveryNote; | |||||
use domain\Document\Document\Document; | |||||
use domain\Document\Invoice\Invoice; | |||||
use domain\Document\Quotation\Quotation; | |||||
use domain\Order\Order\Order; | |||||
use domain\Order\ProductOrder\ProductOrder; | |||||
use domain\Payment\Payment; | |||||
use kartik\mpdf\Pdf; | use kartik\mpdf\Pdf; | ||||
use yii\base\UserException; | |||||
use domain\Product\Product\Product; | |||||
use yii; | use yii; | ||||
use yii\filters\VerbFilter; | |||||
use yii\base\UserException; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\web\NotFoundHttpException; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use common\logic\Payment\Model\Payment; | |||||
use yii\web\NotFoundHttpException; | |||||
class DocumentController extends BackendController | class DocumentController extends BackendController | ||||
{ | { | ||||
foreach ($order->productOrder as $productOrder) { | foreach ($order->productOrder as $productOrder) { | ||||
$productsOrderArray[$productOrder->id] = array_merge($productOrder->getAttributes(), [ | $productsOrderArray[$productOrder->id] = array_merge($productOrder->getAttributes(), [ | ||||
'url_product' => $this->getUrlManagerBackend()->createUrl(['product/update', 'id' => $productOrder->id_product]), | |||||
'url_order' => $this->getUrlManagerBackend()->createUrl(['distribution/index', 'idOrderUpdate' => $productOrder->id_order]) | 'url_order' => $this->getUrlManagerBackend()->createUrl(['distribution/index', 'idOrderUpdate' => $productOrder->id_order]) | ||||
]); | ]); | ||||
} | } | ||||
public function actionAjaxDeleteProductOrder($idProductOrder) | public function actionAjaxDeleteProductOrder($idProductOrder) | ||||
{ | { | ||||
$productOrderModule = $this->getProductOrderModule(); | $productOrderModule = $this->getProductOrderModule(); | ||||
$productOrder = $productOrderModule->findOneProductOrderById($idProductOrder); | $productOrder = $productOrderModule->findOneProductOrderById($idProductOrder); | ||||
if ($productOrder) { | if ($productOrder) { | ||||
$productOrderModule->delete($productOrder); | $productOrderModule->delete($productOrder); | ||||
return Ajax::responseSuccess('Produit supprimé'); | return Ajax::responseSuccess('Produit supprimé'); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
public function actionAjaxUpdateProductOrderInvoicePrice($idProductOrder, $invoicePrice) | |||||
{ | |||||
$productOrderModule = $this->getProductOrderModule(); | |||||
$productOrder = $productOrderModule->getRepository()->findOneProductOrderById((int) $idProductOrder); | |||||
if($productOrder) { | |||||
$productOrderModule->getBuilder()->updateProductOrderInvoicePriceByValue($productOrder, (float) $invoicePrice); | |||||
return Ajax::responseSuccess("Prix mis à jour", [ | |||||
'invoice_price' => $productOrder->invoice_price | |||||
]); | |||||
} | |||||
return Ajax::responseError("Une erreur est survenue."); | |||||
} | |||||
public function getClass() | public function getClass() | ||||
{ | { | ||||
$class = get_class($this); | $class = get_class($this); |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\helpers\Ajax; | use common\helpers\Ajax; | ||||
use common\logic\Document\Invoice\Model\InvoiceSearch; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use domain\Document\Invoice\InvoiceSearch; | |||||
class InvoiceController extends DocumentController | class InvoiceController extends DocumentController | ||||
{ | { |
<?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. | |||||
*/ | |||||
namespace backend\controllers; | |||||
use yii\filters\VerbFilter; | |||||
use yii\filters\AccessControl; | |||||
class OnlineAdminController extends BackendController | |||||
{ | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'verbs' => [ | |||||
'class' => VerbFilter::class, | |||||
], | |||||
'access' => [ | |||||
'class' => AccessControl::class, | |||||
'rules' => [ | |||||
[ | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return $this->getUserModule() | |||||
->getAuthorizationChecker() | |||||
->isGrantedAsAdministrator($this->getUserCurrent()); | |||||
} | |||||
] | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
public function actionIndex() | |||||
{ | |||||
$usersWithStatusProducerOnlineArray = $this->getUserModule()->getRepository()->findUsersWithStatusProducerAndOnline(); | |||||
$usersWithStatusUserOnlineArray = $this->getUserModule()->getRepository()->findUsersWithStatusUserAndOnline(); | |||||
return $this->render('index', [ | |||||
'usersWithStatusProducerOnlineArray' => $usersWithStatusProducerOnlineArray, | |||||
'usersWithStatusUserOnlineArray' => $usersWithStatusUserOnlineArray, | |||||
]); | |||||
} | |||||
} |
use common\helpers\CSV; | use common\helpers\CSV; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use common\logic\Distribution\Distribution\Model\Distribution; | |||||
use common\logic\Distribution\PointSaleDistribution\Model\PointSaleDistribution; | |||||
use common\logic\Distribution\ProductDistribution\Model\ProductDistribution; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\Order\ProductOrder\Model\ProductOrder; | |||||
use common\logic\PointSale\PointSale\Model\PointSale; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use common\logic\Payment\Model\Payment; | |||||
use common\logic\User\User\Model\User; | |||||
use common\logic\User\UserProducer\Model\UserProducer; | |||||
use domain\Distribution\Distribution\Distribution; | |||||
use domain\Distribution\PointSaleDistribution\PointSaleDistribution; | |||||
use domain\Distribution\ProductDistribution\ProductDistribution; | |||||
use domain\Order\Order\Order; | |||||
use domain\Order\ProductOrder\ProductOrder; | |||||
use domain\Payment\Payment; | |||||
use domain\PointSale\PointSale\PointSale; | |||||
use domain\Product\Product\Product; | |||||
use domain\User\User\User; | |||||
use domain\User\UserProducer\UserProducer; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Distribution\PointSaleDistribution\Model\PointSaleDistribution; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\PointSale\PointSale\Model\PointSale; | |||||
use common\logic\PointSale\PointSale\Model\PointSaleSearch; | |||||
use common\logic\PointSale\UserPointSale\Model\UserPointSale; | |||||
use Yii; | |||||
use domain\Distribution\PointSaleDistribution\PointSaleDistribution; | |||||
use domain\Order\Order\Order; | |||||
use domain\PointSale\PointSale\PointSale; | |||||
use domain\PointSale\PointSale\PointSaleSearch; | |||||
use domain\PointSale\UserPointSale\UserPointSale; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\web\NotFoundHttpException; | |||||
use yii\filters\VerbFilter; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\web\NotFoundHttpException; | |||||
class PointSaleController extends BackendController | class PointSaleController extends BackendController | ||||
{ | { |
use common\helpers\Ajax; | use common\helpers\Ajax; | ||||
use common\helpers\Alwaysdata; | use common\helpers\Alwaysdata; | ||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use domain\Order\Order\Order; | |||||
use domain\Producer\Producer\Producer; | |||||
use domain\Product\Product\Product; | |||||
use Yii; | use Yii; | ||||
use yii\data\ActiveDataProvider; | |||||
use yii\filters\AccessControl; | |||||
use yii\filters\VerbFilter; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\web\NotFoundHttpException; | use yii\web\NotFoundHttpException; | ||||
use yii\filters\VerbFilter; | |||||
use yii\filters\AccessControl; | |||||
use yii\data\ActiveDataProvider; | |||||
class ProducerAdminController extends BackendController | class ProducerAdminController extends BackendController | ||||
{ | { | ||||
]; | ]; | ||||
} | } | ||||
public function actionOnline() | |||||
{ | |||||
$usersWithStatusProducerOnlineArray = $this->getUserModule()->getRepository()->findUsersStatusProducerOnline(); | |||||
return $this->render('@backend/views/producer-admin/online', [ | |||||
'usersWithStatusProducerOnlineArray' => $usersWithStatusProducerOnlineArray, | |||||
]); | |||||
} | |||||
/** | /** | ||||
* Liste les producteurs. | * Liste les producteurs. | ||||
* | * |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\Producer\ProducerPriceRange\Model\ProducerPriceRange; | |||||
use domain\Producer\ProducerPriceRange\ProducerPriceRange; | |||||
use domain\Producer\Producer\Producer; | |||||
use Yii; | use Yii; | ||||
use yii\data\ActiveDataProvider; | use yii\data\ActiveDataProvider; | ||||
use yii\web\NotFoundHttpException; | |||||
use yii\filters\VerbFilter; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use common\helpers\Upload; | |||||
use yii\filters\VerbFilter; | |||||
use yii\web\NotFoundHttpException; | |||||
use yii\web\UploadedFile; | use yii\web\UploadedFile; | ||||
/** | /** | ||||
$logoFilenameOld = $model->logo; | $logoFilenameOld = $model->logo; | ||||
$photoFilenameOld = $model->photo; | $photoFilenameOld = $model->photo; | ||||
$documentImageBottomFilenameOld = $model->document_image_bottom; | $documentImageBottomFilenameOld = $model->document_image_bottom; | ||||
$producerBuilder->initOptionDashboardDatesDisplay($model); | |||||
$producerBuilder->initOptionsDatesDisplay($model); | |||||
if ($model->load(\Yii::$app->request->post())) { | if ($model->load(\Yii::$app->request->post())) { | ||||
if($model->validate()) { | if($model->validate()) { | ||||
$producerBuilder->initOptionsDatesBeforeSave($model); | |||||
$producerBuilder->processUploadImage($model, 'logo', $logoFilenameOld, $request->post('delete_logo', 0)); | $producerBuilder->processUploadImage($model, 'logo', $logoFilenameOld, $request->post('delete_logo', 0)); | ||||
$producerBuilder->processUploadImage($model, 'photo', $photoFilenameOld, $request->post('delete_photo', 0)); | $producerBuilder->processUploadImage($model, 'photo', $photoFilenameOld, $request->post('delete_photo', 0)); | ||||
$producerBuilder->processUploadImage($model, 'document_image_bottom', $documentImageBottomFilenameOld, $request->post('delete_document_image_bottom', 0)); | $producerBuilder->processUploadImage($model, 'document_image_bottom', $documentImageBottomFilenameOld, $request->post('delete_document_image_bottom', 0)); | ||||
$producerBuilder->initOptionDashboardDatesBeforeSave($model); | |||||
$producerBuilder->savePrivateKeysStripe($model); | $producerBuilder->savePrivateKeysStripe($model); | ||||
$model->save(); | $model->save(); | ||||
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\logic\Producer\ProducerPriceRange\Model\ProducerPriceRange; | |||||
use Yii; | |||||
use yii\web\NotFoundHttpException; | |||||
use yii\filters\VerbFilter; | |||||
use yii\filters\AccessControl; | |||||
use domain\Producer\ProducerPriceRange\ProducerPriceRange; | |||||
use yii\data\ActiveDataProvider; | use yii\data\ActiveDataProvider; | ||||
use yii\filters\AccessControl; | |||||
use yii\web\NotFoundHttpException; | |||||
/** | /** | ||||
* ProducerPriceRangeAdminController implements the CRUD actions for ProducerPriceRange model. | * ProducerPriceRangeAdminController implements the CRUD actions for ProducerPriceRange model. |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Product\Product\Model\Product; | |||||
use common\logic\Product\ProductCategory\Model\ProductCategorySearch; | |||||
use domain\Product\Product\Product; | |||||
use domain\Product\ProductCategory\ProductCategorySearch; | |||||
use Yii; | use Yii; | ||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\web\NotFoundHttpException; | |||||
use yii\filters\VerbFilter; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\web\NotFoundHttpException; | |||||
/** | /** | ||||
* ProductCategoryController implements the CRUD actions for ProductCategory model. | * ProductCategoryController implements the CRUD actions for ProductCategory model. |
use backend\forms\ProductPriceUploadForm; | use backend\forms\ProductPriceUploadForm; | ||||
use common\helpers\CSV; | use common\helpers\CSV; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Feature\Feature\Feature; | |||||
use common\logic\PointSale\PointSale\Model\PointSale; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use common\logic\Product\Product\Model\ProductSearch; | |||||
use common\logic\Product\ProductPointSale\Model\ProductPointSale; | |||||
use common\logic\Product\ProductPrice\Model\ProductPrice; | |||||
use common\logic\Product\ProductPrice\Model\ProductPriceSearch; | |||||
use common\logic\User\UserProducer\Model\UserProducer; | |||||
use common\helpers\Upload; | |||||
use domain\Feature\Feature\Feature; | |||||
use domain\PointSale\PointSale\PointSale; | |||||
use domain\Product\Product\Product; | |||||
use domain\Product\Product\ProductSearch; | |||||
use domain\Product\ProductPointSale\ProductPointSale; | |||||
use domain\Product\ProductPrice\Model\ProductPrice; | |||||
use domain\Product\ProductPrice\Model\ProductPriceSearch; | |||||
use domain\User\UserProducer\UserProducer; | |||||
use Yii; | use Yii; | ||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\web\NotFoundHttpException; | use yii\web\NotFoundHttpException; | ||||
use common\helpers\Upload; | |||||
use yii\web\UploadedFile; | use yii\web\UploadedFile; | ||||
/** | /** |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Document\Quotation\Model\QuotationSearch; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use domain\Document\Quotation\QuotationSearch; | |||||
use domain\Order\Order\Order; | |||||
use yii\base\UserException; | use yii\base\UserException; | ||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\helpers\Html; | use yii\helpers\Html; |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\logic\User\User\Model\User; | |||||
use common\forms\LoginForm; | |||||
use Yii; | use Yii; | ||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use common\forms\LoginForm; | |||||
use yii\filters\VerbFilter; | use yii\filters\VerbFilter; | ||||
/** | /** |
use common\forms\SubscriptionForm; | use common\forms\SubscriptionForm; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Config\Unit\Service\UnitDefinition; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use common\logic\Subscription\Subscription\Model\SubscriptionSearch; | |||||
use domain\Product\Product\Product; | |||||
use domain\Subscription\Subscription\SubscriptionSearch; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\web\NotFoundHttpException; | use yii\web\NotFoundHttpException; | ||||
$subscriptionModule = $this->getSubscriptionModule(); | $subscriptionModule = $this->getSubscriptionModule(); | ||||
$distributionModule = $this-> getDistributionModule(); | $distributionModule = $this-> getDistributionModule(); | ||||
$subscription = $subscriptionModule->findOneSubscriptionById($idSubscription); | $subscription = $subscriptionModule->findOneSubscriptionById($idSubscription); | ||||
$matchedDistributionsArray = $distributionModule->findDistributionsIncomingMatchWithSubscrtiption($subscription, true); | |||||
if($subscription) { | |||||
$matchedDistributionsArray = $distributionModule->findDistributionsIncomingMatchWithSubscrtiption($subscription, true); | |||||
if ($generate) { | |||||
if ($update) { | |||||
$subscriptionModule->getOrderManager() | |||||
->deleteOrdersIncomingDistributionsFromSubscription($subscription); | |||||
} | |||||
foreach ($matchedDistributionsArray as $distribution) { | |||||
$subscriptionModule->createOrderFromSubscription($subscription, $distribution->date); | |||||
if ($generate) { | |||||
if ($update) { | |||||
$subscriptionModule->getOrderManager() | |||||
->deleteOrdersIncomingDistributionsFromSubscription($subscription); | |||||
} | |||||
foreach ($matchedDistributionsArray as $distribution) { | |||||
$subscriptionModule->createOrderFromSubscription($subscription, $distribution->date); | |||||
} | |||||
$this->setFlash('success', 'Commandes ' . ($update ? 're-' : '') . 'générées dans les distributions futures.'); | |||||
return $this->redirect(['subscription/index']); | |||||
} | } | ||||
$this->setFlash('success', 'Commandes ' . ($update ? 're-' : '') . 'générées dans les distributions futures.'); | |||||
return $this->render('update_distributions', [ | |||||
'matchedDistributionsArray' => $matchedDistributionsArray, | |||||
'idSubscription' => $idSubscription, | |||||
'update' => $update | |||||
]); | |||||
} | |||||
else { | |||||
$this->setFlash('error', 'Abonnement introuvable'); | |||||
return $this->redirect(['subscription/index']); | return $this->redirect(['subscription/index']); | ||||
} | } | ||||
return $this->render('update_distributions', [ | |||||
'matchedDistributionsArray' => $matchedDistributionsArray, | |||||
'idSubscription' => $idSubscription, | |||||
'update' => $update | |||||
]); | |||||
} | } | ||||
public function actionAjaxInfos(int $idSubscription = 0) | public function actionAjaxInfos(int $idSubscription = 0) |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\logic\Ticket\Ticket\Model\Ticket; | |||||
use common\logic\Ticket\Ticket\Model\TicketSearch; | |||||
use yii\filters\VerbFilter; | |||||
use domain\Ticket\Ticket\Ticket; | |||||
use domain\Ticket\Ticket\TicketSearch; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
/** | /** |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\logic\Ticket\Ticket\Model\Ticket; | |||||
use common\logic\Ticket\Ticket\Model\TicketSearch; | |||||
use domain\Ticket\Ticket\Ticket; | |||||
use domain\Ticket\Ticket\TicketSearch; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\web\NotFoundHttpException; | use yii\web\NotFoundHttpException; |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\logic\Config\TaxRate\Model\TaxRate; | |||||
use yii\web\NotFoundHttpException; | |||||
use yii\filters\VerbFilter; | |||||
use yii\filters\AccessControl; | |||||
use domain\Config\TaxRate\TaxRate; | |||||
use yii\data\ActiveDataProvider; | use yii\data\ActiveDataProvider; | ||||
use yii\filters\AccessControl; | |||||
use yii\filters\VerbFilter; | |||||
use yii\web\NotFoundHttpException; | |||||
/** | /** | ||||
* TaxRateAdminController implements the CRUD actions for TaxRate model. | * TaxRateAdminController implements the CRUD actions for TaxRate model. |
<?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. | |||||
*/ | |||||
namespace backend\controllers; | |||||
use yii\filters\AccessControl; | |||||
use linslin\yii2\curl; | |||||
class TillerController extends BackendController | |||||
{ | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'access' => [ | |||||
'class' => AccessControl::class, | |||||
'rules' => [ | |||||
[ | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return $this->getUserModule() | |||||
->getAuthorizationChecker() | |||||
->isGrantedAsProducer($this->getUserCurrent()); | |||||
} | |||||
] | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
public function actionOauth(string $code) | |||||
{ | |||||
$producerModule = $this->getProducerModule(); | |||||
$curl = new curl\Curl(); | |||||
$redirectUri = $producerModule->getSolver()->getConfig('tiller_redirect_uri'); | |||||
$clientId = $producerModule->getSolver()->getConfig('tiller_client_id'); | |||||
$clientSecret = $producerModule->getSolver()->getConfig('tiller_client_secret'); | |||||
$url = "https://oauth.api.tiller.systems/oauth2/token?grant_type=authorization_code&redirect_uri=$redirectUri&client_id=$clientId&client_secret=$clientSecret&code=$code"; | |||||
$response = $curl | |||||
->setHeaders(['Content-type' => 'application/x-www-form-urlencoded']) | |||||
->post($url); | |||||
$datasResponse = json_decode($response); | |||||
$accessToken = $datasResponse->access_token; | |||||
$refreshToken = $datasResponse->refresh_token; | |||||
$producer = $this->getProducerCurrent(); | |||||
$producer->tiller_access_token = $accessToken; | |||||
$producer->tiller_refresh_token = $refreshToken; | |||||
$producer->save(); | |||||
return $this->redirectDashboard(); | |||||
} | |||||
} |
use backend\models\CreditForm; | use backend\models\CreditForm; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use backend\models\MailForm; | |||||
use common\helpers\Password; | use common\helpers\Password; | ||||
use common\logic\Order\Order\Model\OrderSearch; | |||||
use common\logic\PointSale\PointSale\Model\PointSale; | |||||
use common\logic\PointSale\UserPointSale\Model\UserPointSale; | |||||
use common\logic\User\User\Model\User; | |||||
use common\logic\User\User\Model\UserSearch; | |||||
use common\logic\User\UserProducer\Model\UserProducer; | |||||
use common\logic\User\UserUserGroup\Model\UserUserGroup; | |||||
use domain\Order\Order\OrderSearch; | |||||
use domain\PointSale\PointSale\PointSale; | |||||
use domain\PointSale\UserPointSale\UserPointSale; | |||||
use domain\User\User\User; | |||||
use domain\User\User\UserSearch; | |||||
use domain\User\UserProducer\UserProducer; | |||||
use domain\User\UserUserGroup\UserUserGroup; | |||||
use Yii; | |||||
use yii\base\UserException; | use yii\base\UserException; | ||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use \Yii; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\web\NotFoundHttpException; | use yii\web\NotFoundHttpException; | ||||
if ($creditForm->load(\Yii::$app->request->post()) && $creditForm->validate()) { | if ($creditForm->load(\Yii::$app->request->post()) && $creditForm->validate()) { | ||||
$dateTransaction = null; | |||||
if($creditForm->date_transaction) { | |||||
$dateTransaction = date('Y-m-d', strtotime(str_replace('/', '-', $creditForm->date_transaction))); | |||||
} | |||||
$paymentModule->getManager() | $paymentModule->getManager() | ||||
->creditOrDebitUser( | ->creditOrDebitUser( | ||||
$creditForm->type, | $creditForm->type, | ||||
$creditForm->amount, | $creditForm->amount, | ||||
$creditForm->mean_payment, | $creditForm->mean_payment, | ||||
$this->getUserCurrent(), | $this->getUserCurrent(), | ||||
$creditForm->comment | |||||
$creditForm->comment, | |||||
$dateTransaction | |||||
); | ); | ||||
if ($creditForm->send_mail) { | if ($creditForm->send_mail) { | ||||
} | } | ||||
} | } | ||||
/** | |||||
* Affiche la liste des emails des utilisateurs liés à un point de vente donné. | |||||
*/ | |||||
public function actionMail( | |||||
$idPointSale = 0, | |||||
$sectionSubscribers = 0, | |||||
$sectionInactiveUsers = 0, | |||||
$usersPointSaleLink = 0, | |||||
$usersPointSaleHasOrder = 0) | |||||
{ | |||||
$userModule = $this->getUserModule(); | |||||
$distributionModule = $this->getDistributionModule(); | |||||
if ($idPointSale && !$usersPointSaleLink && !$usersPointSaleHasOrder) { | |||||
$usersPointSaleLink = 1; | |||||
} | |||||
$users = $userModule->queryUsersBy([ | |||||
'id_producer' => GlobalParam::getCurrentProducerId(), | |||||
'id_point_sale' => $idPointSale, | |||||
'users_point_sale_link' => $usersPointSaleLink, | |||||
'users_point_sale_has_order' => $usersPointSaleHasOrder, | |||||
'subscribers' => $sectionSubscribers, | |||||
'inactive' => $sectionInactiveUsers, | |||||
'newsletter' => true | |||||
])->all(); | |||||
$usersArray = []; | |||||
foreach ($users as $key => $user) { | |||||
if (isset($user['email']) && strlen($user['email']) > 0) { | |||||
$usersArray[] = $user['email']; | |||||
} else { | |||||
unset($users[$key]); | |||||
} | |||||
} | |||||
$pointsSaleArray = PointSale::find()->where(['id_producer' => GlobalParam::getCurrentProducerId(), 'status' => 1])->all(); | |||||
$pointSale = null; | |||||
if ($idPointSale) { | |||||
$pointSale = PointSale::findOne(['id' => $idPointSale]); | |||||
} | |||||
$mailForm = new MailForm(); | |||||
if ($mailForm->load(\Yii::$app->request->post()) && $mailForm->validate()) { | |||||
$responseSendMail = $mailForm->sendEmail($users); | |||||
if ($responseSendMail->success()) { | |||||
$this->setFlash('success', 'Votre email a bien été envoyé.'); | |||||
} else { | |||||
$bodyResponseSendMail = $responseSendMail->getBody(); | |||||
$emailsErrorArray = []; | |||||
if (isset($bodyResponseSendMail['Messages'])) { | |||||
foreach ($bodyResponseSendMail['Messages'] as $message) { | |||||
if ($message['Status'] != 'success') { | |||||
$emailsErrorArray[] = $message['Errors'][0]['ErrorMessage']; | |||||
} | |||||
} | |||||
} | |||||
$messageError = 'Un problème est survenu lors de l\'envoi de votre email.'; | |||||
if (count($emailsErrorArray) > 0) { | |||||
$messageError .= '<br />Problème détecté : ' . implode(',', $emailsErrorArray); | |||||
} | |||||
$this->setFlash('error', $messageError); | |||||
} | |||||
return $this->redirect(['mail', 'idPointSale' => $idPointSale]); | |||||
} | |||||
$incomingDistributions = $distributionModule->findDistributionsIncoming(); | |||||
$incomingDistributionsArray = ['0' => '--']; | |||||
foreach ($incomingDistributions as $distribution) { | |||||
$incomingDistributionsArray[$distribution->id] = strftime('%A %d %B %Y', strtotime($distribution->date)); | |||||
} | |||||
return $this->render('emails', [ | |||||
'usersArray' => $usersArray, | |||||
'pointsSaleArray' => $pointsSaleArray, | |||||
'pointSale' => $pointSale, | |||||
'mailForm' => $mailForm, | |||||
'idPointSaleActive' => $idPointSale, | |||||
'incomingDistributionsArray' => $incomingDistributionsArray, | |||||
'sectionSubscribers' => $sectionSubscribers, | |||||
'sectionInactiveUsers' => $sectionInactiveUsers, | |||||
'usersPointSaleLink' => $usersPointSaleLink, | |||||
'usersPointSaleHasOrder' => $usersPointSaleHasOrder, | |||||
]); | |||||
} | |||||
public function actionSwitchIdentity(int $id) | public function actionSwitchIdentity(int $id) | ||||
{ | { | ||||
$userModule = $this->getUserModule(); | $userModule = $this->getUserModule(); | ||||
$duration = 0; | $duration = 0; | ||||
Yii::$app->user->switchIdentity($user, $duration); | Yii::$app->user->switchIdentity($user, $duration); | ||||
Yii::$app->session->set('user.idbeforeswitch', $initialId); | Yii::$app->session->set('user.idbeforeswitch', $initialId); | ||||
return $this->redirect(['index']); | |||||
return $this->redirect($this->getUrlManagerFrontend()->createUrl(['site/index'])); | |||||
} | } | ||||
} else { | } else { | ||||
throw new NotFoundHttpException('Page introuvable'); | throw new NotFoundHttpException('Page introuvable'); |
namespace backend\controllers; | namespace backend\controllers; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\User\UserGroup\Model\UserGroupSearch; | |||||
use common\logic\User\UserUserGroup\Model\UserUserGroup; | |||||
use domain\User\UserGroup\UserGroupSearch; | |||||
use domain\User\UserUserGroup\UserUserGroup; | |||||
use yii\filters\AccessControl; | use yii\filters\AccessControl; | ||||
use yii\web\NotFoundHttpException; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\web\NotFoundHttpException; | |||||
/** | /** | ||||
* PointVenteController implements the CRUD actions for PointVente model. | * PointVenteController implements the CRUD actions for PointVente model. |
namespace backend\forms; | namespace backend\forms; | ||||
use common\logic\Setting\SettingModule; | |||||
use domain\Setting\SettingModule; | |||||
use yii\base\Model; | use yii\base\Model; | ||||
class AdminSettingsForm extends Model | class AdminSettingsForm extends Model |
namespace backend\models; | namespace backend\models; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\User\User\Model\User; | |||||
use domain\User\User\User; | |||||
use yii\base\Model; | use yii\base\Model; | ||||
/** | /** |
namespace backend\models; | namespace backend\models; | ||||
use common\helpers\GlobalParam; | |||||
use common\logic\Payment\Module\PaymentModule; | |||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use common\logic\User\UserProducer\Module\UserProducerModule; | |||||
use yii\base\Model; | use yii\base\Model; | ||||
/** | /** | ||||
*/ | */ | ||||
class CreditForm extends Model | class CreditForm extends Model | ||||
{ | { | ||||
public $id_user ; | public $id_user ; | ||||
public $id_user_action ; | public $id_user_action ; | ||||
public $id_producer ; | public $id_producer ; | ||||
public $mean_payment ; | public $mean_payment ; | ||||
public $comment ; | public $comment ; | ||||
public $send_mail = 1; | public $send_mail = 1; | ||||
public $date_transaction; | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
return [ | return [ | ||||
[['amount'], 'required'], | [['amount'], 'required'], | ||||
[['id_user', 'id_user_action', 'id_producer'], 'integer'], | [['id_user', 'id_user_action', 'id_producer'], 'integer'], | ||||
[['date','send_mail'], 'safe'], | |||||
[['date', 'send_mail', 'date_transaction'], 'safe'], | |||||
[['amount'], 'double'], | [['amount'], 'double'], | ||||
[['type', 'mean_payment'], 'string', 'max' => 255], | [['type', 'mean_payment'], 'string', 'max' => 255], | ||||
[['comment'], 'string', 'max' => 2048], | [['comment'], 'string', 'max' => 2048], | ||||
'mean_payment' => 'Moyen de paiement', | 'mean_payment' => 'Moyen de paiement', | ||||
'comment' => 'Commentaire', | 'comment' => 'Commentaire', | ||||
'send_mail' => 'Prévenir l\'utilisateur', | 'send_mail' => 'Prévenir l\'utilisateur', | ||||
'date_transaction' => 'Date de transaction' | |||||
]; | ]; | ||||
} | } | ||||
/** | |||||
* Enregistre un modèle CreditHistorique. | |||||
*/ | |||||
public function save() | |||||
{ | |||||
$userModule = UserModule::getInstance(); | |||||
$userProducerModule = UserProducerModule::getInstance(); | |||||
$paymentManager = PaymentModule::getInstance(); | |||||
if ($this->validate()) { | |||||
$user = $userModule->findOneUserById($this->id_user); | |||||
$paymentManager->creditOrDebitUser($this->type, $user, $this->amount, $this->mean_payment, $userModule->getCurrent(), $this->comment); | |||||
// on prévient l'utilisateur que son compte vient d'être crédité | |||||
if($this->send_mail) { | |||||
$producer = GlobalParam::getCurrentProducer() ; | |||||
$userProducer = $userProducerModule->findOneUserProducer($user); | |||||
\Yii::$app->mailerService->sendFromProducer( | |||||
'Mouvement de crédit', | |||||
'creditUser', | |||||
[ | |||||
'user' => $user, | |||||
'producer' => $producer, | |||||
'userProducer' => $userProducer, | |||||
'creditForm' => $this | |||||
], | |||||
$user->email, | |||||
$producer | |||||
); | |||||
} | |||||
} | |||||
} | |||||
} | } |
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\helpers\Mailjet; | use common\helpers\Mailjet; | ||||
use common\logic\Config\Unit\Service\UnitDefinition; | |||||
use common\logic\Distribution\Distribution\Model\Distribution; | |||||
use common\logic\Distribution\Distribution\Module\DistributionModule; | |||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use common\logic\Product\Product\Module\ProductModule; | |||||
use common\helpers\Price; | |||||
use domain\Config\Unit\UnitDefinition; | |||||
use domain\Distribution\Distribution\Distribution; | |||||
use domain\Distribution\Distribution\DistributionModule; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
use domain\Product\Product\Product; | |||||
use domain\Product\Product\ProductModule; | |||||
use Yii; | use Yii; | ||||
use yii\base\Model; | use yii\base\Model; | ||||
use common\helpers\Price ; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
/** | /** |
<?= | <?= | ||||
$this->render('_menu',[ | |||||
$this->render('@backend/views/user/_menu.php',[ | |||||
'section' => 'email', | |||||
'idPointSaleActive' => $idPointSaleActive, | 'idPointSaleActive' => $idPointSaleActive, | ||||
'sectionInactiveUsers' => isset($sectionInactiveUsers) ? $sectionInactiveUsers : null, | 'sectionInactiveUsers' => isset($sectionInactiveUsers) ? $sectionInactiveUsers : null, | ||||
'sectionSubscribers' => isset($sectionSubscribers) ? $sectionSubscribers: null, | 'sectionSubscribers' => isset($sectionSubscribers) ? $sectionSubscribers: null, | ||||
'pointsSaleArray' => $pointsSaleArray, | 'pointsSaleArray' => $pointsSaleArray, | ||||
'section' => 'mail' | |||||
'idDistributionActive' => $idDistributionActive, | |||||
'incomingDistributionsArray' => $incomingDistributionsArray, | |||||
'incomingDistributionsDatesArray' => $incomingDistributionsDatesArray, | |||||
]) ; | ]) ; | ||||
?> | ?> | ||||
<div class="col-md-6"> | <div class="col-md-6"> | ||||
<div class="panel panel-default"> | <div class="panel panel-default"> | ||||
<div class="panel-heading"> | <div class="panel-heading"> | ||||
<h3 class="panel-title">Envoyer un message</h3> | |||||
<h3 class="panel-title">Envoyer un email</h3> | |||||
</div> | </div> | ||||
<div class="panel-body"> | <div class="panel-body"> | ||||
<?php $form = ActiveForm::begin(); ?> | <?php $form = ActiveForm::begin(); ?> | ||||
<?= $form->field($mailForm, 'id_distribution')->dropDownList($incomingDistributionsArray) | |||||
<?= $form->field($mailForm, 'id_distribution')->dropDownList($incomingDistributionsDatesArray) | |||||
->hint("Sélectionnez une distribution pour ajouter automatiquement au message un lien vers la prise de commande de cette distribution"); ?> | ->hint("Sélectionnez une distribution pour ajouter automatiquement au message un lien vers la prise de commande de cette distribution"); ?> | ||||
<?= $form->field($mailForm, 'integrate_product_list')->checkbox() ; ?> | <?= $form->field($mailForm, 'integrate_product_list')->checkbox() ; ?> | ||||
<?= $form->field($mailForm, 'subject')->textInput() ; ?> | <?= $form->field($mailForm, 'subject')->textInput() ; ?> | ||||
<div class="panel-body"> | <div class="panel-body"> | ||||
<?php if($idPointSaleActive): ?> | <?php if($idPointSaleActive): ?> | ||||
<a class="btn btn-xs <?php if($usersPointSaleLink): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/mail','idPointSale' => $idPointSaleActive, 'usersPointSaleLink' => 1]); ?>">Liés au point de vente</a> | |||||
<a class="btn btn-xs <?php if($usersPointSaleHasOrder): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/mail','idPointSale' => $idPointSaleActive, 'usersPointSaleHasOrder' => 1]); ?>">Déjà commandés dans ce point de vente</a> | |||||
<a class="btn btn-xs <?php if($usersPointSaleLink): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['communicate/email','idPointSale' => $idPointSaleActive, 'idDistribution' => $idDistributionActive, 'usersPointSaleLink' => 1]); ?>">Liés au point de vente</a> | |||||
<a class="btn btn-xs <?php if($usersPointSaleHasOrder): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['communicate/email','idPointSale' => $idPointSaleActive, 'idDistribution' => $idDistributionActive, 'usersPointSaleHasOrder' => 1]); ?>">Déjà commandés dans ce point de vente</a> | |||||
<br /><br /> | <br /><br /> | ||||
<?php endif; ?> | <?php endif; ?> | ||||
<?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 yii\helpers\Html ; | |||||
$this->setTitle('Communiquer') ; | |||||
$this->addBreadcrumb('Communiquer') ; | |||||
?> | |||||
<div class="col-md-6"> | |||||
<div id="email" class="panel panel-default" v-if="date"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title">Envoyer un email</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<p>Choisissez à quels utilisateurs vous souhaitez envoyer un email :</p> | |||||
<div> | |||||
<?= Html::a('<span class="glyphicon glyphicon-th-list"></span> Tous',['user/mail', 'idPointSale' => 0], ['class' => 'btn btn-default btn-point-sale']); ?> | |||||
<?= Html::a('<span class="glyphicon glyphicon-repeat"></span> Abonnés',['user/mail', 'sectionSubscribers' => 1], ['class' => 'btn btn-default btn-point-sale']); ?> | |||||
<?= Html::a('<span class="glyphicon glyphicon-time"></span> Inactifs',['user/mail', 'sectionInactiveUsers' => 1], ['class' => 'btn btn-default btn-point-sale']); ?> | |||||
<?php foreach($pointsSaleArray as $pointSale): ?> | |||||
<?= Html::a('<span class="glyphicon glyphicon-map-marker"></span> '.Html::encode($pointSale->name), ['user/mail', 'idPointSale' => $pointSale->id], ['class' => 'btn btn-default btn-point-sale']); ?> | |||||
<?php endforeach; ?> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="col-md-6"> | |||||
<div id="paper" class="panel panel-default" v-if="date"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title">Communiquer par papier</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<p>Imprimez ce petit encart pour indiquer à vos clients l'adresse internet leur permettant de passer leurs commandes.</p> | |||||
<?php echo $this->render('instructions', ['producer' => $producer]) ; ?> | |||||
<p><?php echo Html::a('<span class="glyphicon glyphicon-download-alt"></span> Télécharger', ['communicate/instructions'], ['class'=>'btn btn-primary']) ?></p> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<?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 yii\helpers\Html ; | |||||
$this->setTitle('Communiquer par papier') ; | |||||
$this->addBreadcrumb('Communiquer') ; | |||||
?> | |||||
<div id="paper" class="panel panel-default"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title">Encart à imprimer</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<p>Imprimez cet encart pour indiquer à vos clients l'adresse internet leur permettant de passer leurs commandes.</p> | |||||
<?php echo $this->render('instructions', ['producer' => $producer]) ; ?> | |||||
<p><?php echo Html::a('<span class="glyphicon glyphicon-download-alt"></span> Télécharger', ['communicate/instructions'], ['class'=>'btn btn-primary']) ?></p> | |||||
</div> | |||||
</div> | |||||
termes. | termes. | ||||
*/ | */ | ||||
use common\helpers\GlobalParam; | |||||
use common\logic\Distribution\Distribution\Module\DistributionModule; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\Order\Order\Module\OrderModule; | |||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\Setting\SettingModule; | |||||
use common\logic\Subscription\Subscription\Module\SubscriptionModule; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use yii\helpers\Html ; | |||||
use domain\Distribution\Distribution\DistributionModule; | |||||
use domain\Order\Order\Order; | |||||
use domain\Order\Order\OrderModule; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
use domain\Setting\SettingModule; | |||||
use domain\Subscription\Subscription\SubscriptionModule; | |||||
use domain\User\User\UserModule; | |||||
use yii\helpers\Html; | |||||
$distributionModule = DistributionModule::getInstance(); | $distributionModule = DistributionModule::getInstance(); | ||||
$userModule = UserModule::getInstance(); | $userModule = UserModule::getInstance(); |
* termes. | * termes. | ||||
*/ | */ | ||||
use common\logic\Document\DeliveryNote\Model\DeliveryNote; | |||||
use domain\Document\DeliveryNote\DeliveryNote; | |||||
use domain\Order\Order\Order; | |||||
use domain\PointSale\PointSale\PointSale; | |||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use common\logic\PointSale\PointSale\Model\PointSale; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use yii\helpers\Html; | |||||
use yii\helpers\ArrayHelper; | use yii\helpers\ArrayHelper; | ||||
use common\logic\Document\DeliveryNote\Module\DeliveryNoteModule; | |||||
use yii\helpers\Html; | |||||
$deliveryNoteModule = $this->getDeliveryNoteModule(); | $deliveryNoteModule = $this->getDeliveryNoteModule(); | ||||
<span class="info-box-text"> | <span class="info-box-text"> | ||||
<h4> | <h4> | ||||
Distribution du <strong>{{ dateFormat }}</strong> | Distribution du <strong>{{ dateFormat }}</strong> | ||||
<a class="btn btn-default" :href="distribution.url_order" @click="copyLinkOrder($event, distribution.url_order)"><span class="glyphicon glyphicon-link"></span></a> | |||||
<a v-if="distribution.active" class="btn btn-default" :href="distribution.url_order" @click="copyLinkOrder($event, distribution.url_order)"><span class="glyphicon glyphicon-link"></span></a> | |||||
<span v-if="distribution.is_leave_period" class="label label-info"> | |||||
<span class="glyphicon glyphicon-info-sign"></span> | |||||
Congés | |||||
</span> | |||||
</h4> | </h4> | ||||
<a @click="activeWeekDistribution" data-active="0" class="btn btn-default btn-active-week" v-if="oneDistributionWeekActive">Désactiver cette semaine</a> | <a @click="activeWeekDistribution" data-active="0" class="btn btn-default btn-active-week" v-if="oneDistributionWeekActive">Désactiver cette semaine</a> | ||||
<a @click="activeWeekDistribution" data-active="1" class="btn btn-default btn-active-week" v-else>Activer cette semaine</a> | <a @click="activeWeekDistribution" data-active="1" class="btn btn-default btn-active-week" v-else>Activer cette semaine</a> | ||||
<a @click="activeDistribution" data-active="0" class="btn btn-default" v-if="distribution.active">Désactiver ce jour</a> | <a @click="activeDistribution" data-active="0" class="btn btn-default" v-if="distribution.active">Désactiver ce jour</a> | ||||
<a @click="activeDistribution" data-active="1" class="btn btn-default" v-else>Activer ce jour</a> | <a @click="activeDistribution" data-active="1" class="btn btn-default" v-else>Activer ce jour</a> | ||||
</span> | </span> | ||||
</div> | </div> | ||||
<button id="btn-add-subscriptions" @click="addSubscriptions" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span> Importer les abonnements</button> | <button id="btn-add-subscriptions" @click="addSubscriptions" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span> Importer les abonnements</button> | ||||
<template v-if="producer && producer.tiller == true"> | <template v-if="producer && producer.tiller == true"> | ||||
<button v-if="tillerIsSynchro" id="btn-tiller" class="btn btn-success btn-xs" disabled><span class="glyphicon glyphicon-refresh"></span> Synchronisé avec Tiller</button> | |||||
<template v-else-if="!isDistributionToday()"> | |||||
<template v-if="tillerIsAuthenticated"> | |||||
<button v-if="tillerIsSynchro" id="btn-tiller" class="btn btn-success btn-xs" disabled><span class="glyphicon glyphicon-refresh"></span> Synchronisé avec Tiller</button> | |||||
<template v-else-if="!isDistributionToday()"> | |||||
<span data-toggle="tooltip" data-placement="top" data-original-title="Synchronisation possible uniquement le jour de la distribution"> | <span data-toggle="tooltip" data-placement="top" data-original-title="Synchronisation possible uniquement le jour de la distribution"> | ||||
<button id="btn-tiller" class="btn btn-xs btn-default" disabled><span class="glyphicon glyphicon-refresh"></span> Synchroniser avec Tiller</button> | <button id="btn-tiller" class="btn btn-xs btn-default" disabled><span class="glyphicon glyphicon-refresh"></span> Synchroniser avec Tiller</button> | ||||
</span> | </span> | ||||
</template> | |||||
<button v-else id="btn-tiller" class="btn btn-xs btn-default" @click="synchroTiller"><span class="glyphicon glyphicon-refresh"></span> Synchroniser avec Tiller</button> | |||||
</template> | |||||
<template v-else> | |||||
<a :href="tillerUrlAuthorizeCode" class="btn btn-xs btn-default"><span class="glyphicon glyphicon-refresh"></span> Connexion Tiller</a> | |||||
</template> | </template> | ||||
<button v-else id="btn-tiller" class="btn btn-xs btn-default" @click="synchroTiller"><span class="glyphicon glyphicon-refresh"></span> Synchroniser avec Tiller</button> | |||||
</template> | </template> | ||||
<button v-if="producer && producer.credit" id="btn-pay-orders" class="btn btn-default btn-xs" @click="payOrders"><span class="glyphicon glyphicon-euro"></span> Débiter les commandes</button> | <button v-if="producer && producer.credit" id="btn-pay-orders" class="btn btn-default btn-xs" @click="payOrders"><span class="glyphicon glyphicon-euro"></span> Débiter les commandes</button> | ||||
<button id="btn-add-order" @click="openModalFormOrderCreate" class="btn btn-xs btn-primary"><span class="glyphicon glyphicon-plus"></span> Ajouter une commande</button> | <button id="btn-add-order" @click="openModalFormOrderCreate" class="btn btn-xs btn-primary"><span class="glyphicon glyphicon-plus"></span> Ajouter une commande</button> |
*/ | */ | ||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use common\logic\Config\Unit\Module\UnitModule; | |||||
use common\logic\Config\Unit\Service\UnitDefinition; | |||||
use common\logic\Order\Order\Module\OrderModule; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use common\logic\Product\Product\Module\ProductModule; | |||||
use common\logic\User\UserProducer\Model\UserProducer; | |||||
use domain\Config\Unit\UnitDefinition; | |||||
use domain\Config\Unit\UnitModule; | |||||
use domain\Order\Order\OrderModule; | |||||
use domain\Product\Product\Product; | |||||
use domain\Product\Product\ProductModule; | |||||
use domain\User\UserProducer\UserProducer; | |||||
$unitModule = UnitModule::getInstance(); | $unitModule = UnitModule::getInstance(); | ||||
$productModule = ProductModule::getInstance(); | $productModule = ProductModule::getInstance(); |
<?php | <?php | ||||
use common\logic\Order\Order\Module\OrderModule; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\Product\Product\Module\ProductModule; | |||||
use domain\Order\Order\OrderModule; | |||||
use domain\Producer\Producer\Producer; | |||||
use domain\Product\Product\ProductModule; | |||||
$orderModule = OrderModule::getInstance(); | $orderModule = OrderModule::getInstance(); | ||||
<?php | <?php | ||||
use common\logic\Distribution\Distribution\Export\DistributionShoppingCartLabelsPdfGenerator; | |||||
use domain\Distribution\Distribution\Export\DistributionShoppingCartLabelsPdfGenerator; | |||||
$distributionShoppingCartLabelsPdfGenerator = DistributionShoppingCartLabelsPdfGenerator::getInstance(); | $distributionShoppingCartLabelsPdfGenerator = DistributionShoppingCartLabelsPdfGenerator::getInstance(); | ||||
$index = 0; | $index = 0; |
<?php | <?php | ||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use common\logic\Config\Unit\Module\UnitModule; | |||||
use common\logic\Order\ProductOrder\Module\ProductOrderModule; | |||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use domain\Config\Unit\UnitModule; | |||||
use domain\Order\ProductOrder\ProductOrderModule; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
use domain\Product\Product\Product; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
$documentModule = $this->getDocumentModule(); | $documentModule = $this->getDocumentModule(); |
* termes. | * termes. | ||||
*/ | */ | ||||
use common\helpers\MeanPayment;use common\helpers\Price; | |||||
use common\logic\Document\Document\Module\DocumentModule; | |||||
use common\logic\Document\Invoice\Module\InvoiceModule; | |||||
use common\logic\Payment\Module\PaymentModule; | |||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use yii\helpers\Html; | |||||
use yii\widgets\ActiveForm; | |||||
use domain\Document\Document\DocumentModule;use domain\Document\Invoice\InvoiceModule;use domain\Payment\PaymentModule;use domain\Producer\Producer\ProducerModule;use domain\User\User\UserModule;use yii\helpers\Html;use yii\widgets\ActiveForm; | |||||
\backend\assets\VuejsDocumentFormAsset::register($this); | \backend\assets\VuejsDocumentFormAsset::register($this); | ||||
class="btn btn-sm btn-default"><span class="glyphicon glyphicon-download-alt"></span> Télécharger | class="btn btn-sm btn-default"><span class="glyphicon glyphicon-download-alt"></span> Télécharger | ||||
(PDF)</a> | (PDF)</a> | ||||
<?php if ($documentModule->isStatusValid($model)): ?> | |||||
<a href="<?= Yii::$app->urlManager->createUrl([Yii::$app->controller->getControllerUrl() . '/regenerate', 'id' => $model->id]) ?>" | |||||
class="btn btn-sm btn-default"><span class="glyphicon glyphicon-repeat"></span> Regénérer | |||||
(PDF)</a> | |||||
<?php endif; ?> | |||||
<?php if ($documentClass == 'Invoice' && $producerModule->getConfig('option_export_evoliz')): ?> | <?php if ($documentClass == 'Invoice' && $producerModule->getConfig('option_export_evoliz')): ?> | ||||
<a href="<?= Yii::$app->urlManager->createUrl([Yii::$app->controller->getControllerUrl() . '/export-csv-evoliz', 'id' => $model->id]) ?>" | <a href="<?= Yii::$app->urlManager->createUrl([Yii::$app->controller->getControllerUrl() . '/export-csv-evoliz', 'id' => $model->id]) ?>" | ||||
class="btn btn-sm btn-default"><span class="glyphicon glyphicon-save-file"></span> Export Evoliz | class="btn btn-sm btn-default"><span class="glyphicon glyphicon-save-file"></span> Export Evoliz | ||||
href="<?= Yii::$app->urlManager->createUrl([Yii::$app->controller->getControllerUrl() . '/validate', 'id' => $model->id, 'backUpdateForm' => 1]) ?>" | href="<?= Yii::$app->urlManager->createUrl([Yii::$app->controller->getControllerUrl() . '/validate', 'id' => $model->id, 'backUpdateForm' => 1]) ?>" | ||||
class="btn btn-sm btn-default"><span class="glyphicon glyphicon-ok"></span> Valider le document</a> | class="btn btn-sm btn-default"><span class="glyphicon glyphicon-ok"></span> Valider le document</a> | ||||
<?php if ($documentModule->isStatusValid($model)): ?> | |||||
<a href="<?= Yii::$app->urlManager->createUrl([Yii::$app->controller->getControllerUrl() . '/regenerate', 'id' => $model->id]) ?>" | |||||
class="btn btn-sm btn-default"><span class="glyphicon glyphicon-repeat"></span> Regénérer | |||||
(PDF)</a> | |||||
<?php endif; ?> | |||||
<?php if (isset($model->user) && strlen($model->user->email) > 0): ?> | <?php if (isset($model->user) && strlen($model->user->email) > 0): ?> | ||||
<a v-if="!document.is_sent" | <a v-if="!document.is_sent" | ||||
href="<?= Yii::$app->urlManager->createUrl([Yii::$app->controller->getControllerUrl() . '/send', 'id' => $model->id, 'backUpdateForm' => 1]) ?>" | href="<?= Yii::$app->urlManager->createUrl([Yii::$app->controller->getControllerUrl() . '/send', 'id' => $model->id, 'backUpdateForm' => 1]) ?>" | ||||
<template v-for="order in ordersArray"> | <template v-for="order in ordersArray"> | ||||
<tr v-for="productOrder in order.productOrder"> | <tr v-for="productOrder in order.productOrder"> | ||||
<td class="col-md-4"> | <td class="col-md-4"> | ||||
<div class="product-name">{{ getProductById(productOrder.id_product).name }} | |||||
<div class="product-name"> | |||||
<a :href="productOrder.url_product" target="_blank"> | |||||
{{ getProductById(productOrder.id_product).name }} | |||||
</a> | |||||
</div> | </div> | ||||
<ul class="product-order-meta"> | <ul class="product-order-meta"> | ||||
<li v-if="order.distribution_date">Commande : <a class="btn btn-sm btn-default" | |||||
:href="productOrder.url_order">{{ | |||||
<li v-if="order.distribution_date">Commande : <a :href="productOrder.url_order">{{ | |||||
order.distribution_date }}</a></li> | order.distribution_date }}</a></li> | ||||
<li>Utilisateur : {{ order.username }}</li> | <li>Utilisateur : {{ order.username }}</li> | ||||
<li v-if="order.point_sale_name">Point de vente : {{ order.point_sale_name }}</li> | <li v-if="order.point_sale_name">Point de vente : {{ order.point_sale_name }}</li> | ||||
</ul> | </ul> | ||||
</td> | </td> | ||||
<td class="col-md-2"> | <td class="col-md-2"> | ||||
{{ formatPrice(getProductOrderPrice(productOrder)) }} | |||||
<template v-if="document.status == 'draft'"> | |||||
<div class="input-group input-group-edit-invoice-price"> | |||||
<input type="text" class="form-control" :id="'input-product-order-invoice-price-'+productOrder.id" :value="getProductOrderPrice(productOrder)" :data-id-product-order="productOrder.id" @keyup="showProductOrderInvoicePriceButtonApply" /> | |||||
<span class="input-group-addon">€</span> | |||||
</div> | |||||
<div class="product-order-invoice-price-button-apply" :id="'product-order-invoice-price-button-apply-'+productOrder.id"> | |||||
<button class="btn btn-success" type="button" :data-id-product-order="productOrder.id" @click="updateProductOrderInvoicePrice"> | |||||
<span class="glyphicon glyphicon-ok"></span> | |||||
</button> | |||||
</div> | |||||
</template> | |||||
<template v-else> | |||||
{{ formatPrice(getProductOrderPrice(productOrder)) }} | |||||
</template> | |||||
<template | <template | ||||
v-if="document.status == 'draft' && getProductOrderPrice(productOrder) != getBestProductPrice(productOrder.id_product, productOrder.quantity)"> | v-if="document.status == 'draft' && getProductOrderPrice(productOrder) != getBestProductPrice(productOrder.id_product, productOrder.quantity)"> | ||||
<i class="fa fa-exclamation-triangle" | |||||
title="Prix différent de celui défini au niveau du produit"></i> | |||||
<i class="different-price fa fa-exclamation-triangle" | |||||
:title="'Prix différent de celui défini au niveau du produit ('+getBestProductPrice(productOrder.id_product, productOrder.quantity)+' €)'"></i> | |||||
</template> | </template> | ||||
</td> | </td> | ||||
<td class="col-md-2">{{ productOrder.quantity }}</td> | <td class="col-md-2">{{ productOrder.quantity }}</td> |
<?php | <?php | ||||
use yii\helpers\Html; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use domain\Order\Order\Order; | |||||
use yii\helpers\Html; | |||||
$producerModule = $this->getProducerModule(); | $producerModule = $this->getProducerModule(); | ||||
$userModule = $this->getUserModule(); | $userModule = $this->getUserModule(); |
use common\helpers\MeanPayment; | use common\helpers\MeanPayment; | ||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use common\logic\Document\Document\Module\DocumentModule; | |||||
use common\logic\Document\Invoice\Module\InvoiceModule; | |||||
use common\logic\Payment\Module\PaymentModule; | |||||
use domain\Document\Document\DocumentModule; | |||||
use domain\Document\Invoice\InvoiceModule; | |||||
use domain\Payment\PaymentModule; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\widgets\ActiveForm; | use yii\widgets\ActiveForm; | ||||
* termes. | * termes. | ||||
*/ | */ | ||||
use yii\helpers\Html; | |||||
use domain\Document\Invoice\Invoice; | |||||
use domain\Order\Order\Order; | |||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use common\helpers\Url; | |||||
use common\logic\Document\Invoice\Model\Invoice; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use yii\helpers\Html; | |||||
$producerModule = $this->getProducerModule(); | $producerModule = $this->getProducerModule(); | ||||
$invoiceModule = $this-> getInvoiceModule(); | $invoiceModule = $this-> getInvoiceModule(); |
* termes. | * termes. | ||||
*/ | */ | ||||
use common\helpers\GlobalParam; | |||||
use common\helpers\Image; | use common\helpers\Image; | ||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use domain\Distribution\Distribution\Distribution; | |||||
use domain\Producer\Producer\Producer; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
use domain\User\User\UserModule; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use common\helpers\GlobalParam; | |||||
use common\logic\Distribution\Distribution\Model\Distribution; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
$userModule = UserModule::getInstance(); | $userModule = UserModule::getInstance(); | ||||
$producerModule = ProducerModule::getInstance(); | $producerModule = ProducerModule::getInstance(); |
*/ | */ | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Feature\Feature\Feature; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use domain\Feature\Feature\Feature; | |||||
use domain\User\User\UserModule; | |||||
$producerModule = $this->getProducerModule(); | $producerModule = $this->getProducerModule(); | ||||
$userModule = UserModule::getInstance(); | $userModule = UserModule::getInstance(); | ||||
$producer = GlobalParam::getCurrentProducer(); | $producer = GlobalParam::getCurrentProducer(); | ||||
$newVersionOpendistribLabel = ''; | $newVersionOpendistribLabel = ''; | ||||
if ($producer && !$producerModule->isUpToDateWithOpendistribVersion($producer)) { | if ($producer && !$producerModule->isUpToDateWithOpendistribVersion($producer)) { | ||||
$newVersionOpendistribLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">'.GlobalParam::getOpendistribVersion().'</small></span>'; | |||||
$newVersionOpendistribLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">' . GlobalParam::getOpendistribVersion() . '</small></span>'; | |||||
} | } | ||||
$countTicketsProducerUnreadLabel = ''; | $countTicketsProducerUnreadLabel = ''; | ||||
$countTicketsProducerUnread = $ticketModule->countTicketsUnreadByUser($this->getUserCurrent()); | $countTicketsProducerUnread = $ticketModule->countTicketsUnreadByUser($this->getUserCurrent()); | ||||
if($countTicketsProducerUnread && !$isUserCurrentGrantedAsAdministrator) { | |||||
$countTicketsProducerUnreadLabel = '<small class="label pull-right bg-blue">'.$countTicketsProducerUnread.'</small>'; | |||||
if ($countTicketsProducerUnread && !$isUserCurrentGrantedAsAdministrator) { | |||||
$countTicketsProducerUnreadLabel = '<small class="label pull-right bg-blue">' . $countTicketsProducerUnread . '</small>'; | |||||
} | } | ||||
$developerOnlineLabel = ''; | $developerOnlineLabel = ''; | ||||
if($adminSettingBag->get('supportOnline')) { | |||||
if ($adminSettingBag->get('supportOnline')) { | |||||
$developerOnlineLabel = '<small class="label pull-right bg-green"><i class="fa fa-phone"></i></small>'; | $developerOnlineLabel = '<small class="label pull-right bg-green"><i class="fa fa-phone"></i></small>'; | ||||
} | } | ||||
$countTicketsAdminUnreadLabel = ''; | |||||
$countTicketsAdminUnread = $ticketModule->countTicketsAdminUnreadByUser($this->getUserCurrent()); | |||||
if($countTicketsAdminUnread && $isUserCurrentGrantedAsAdministrator) { | |||||
$countTicketsAdminUnreadLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">'.$countTicketsAdminUnread.'</small></span>'; | |||||
$countTicketsLabel = ''; | |||||
$countTicketsAdminUnread = $ticketModule->getRepository()->countTicketsAdminUnreadByUser($this->getUserCurrent()); | |||||
if ($countTicketsAdminUnread && $isUserCurrentGrantedAsAdministrator) { | |||||
$countTicketsLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">' . $countTicketsAdminUnread . '</small></span>'; | |||||
} else { | |||||
$countTicketsAdminOpen = $ticketModule->getRepository()->countTicketsAdminStatusOpen(); | |||||
$countTicketsLabel = '<span class="pull-right-container"><small class="label pull-right bg-blue">' . $countTicketsAdminOpen . '</small></span>'; | |||||
} | } | ||||
$sumUserProducerCredits = $userProducerModule->sumUserProducerCredits(); | $sumUserProducerCredits = $userProducerModule->sumUserProducerCredits(); | ||||
$countUsersWithStatusProducerOnline = $userModule->getRepository()->countUsersStatusProducerOnline(); | $countUsersWithStatusProducerOnline = $userModule->getRepository()->countUsersStatusProducerOnline(); | ||||
$countUsersWithStatusProducerOnlineLabel = ''; | $countUsersWithStatusProducerOnlineLabel = ''; | ||||
if($countUsersWithStatusProducerOnline) { | |||||
$countUsersWithStatusProducerOnlineLabel = '<span class="pull-right-container"><small class="label pull-right bg-blue">'.$countUsersWithStatusProducerOnline.'</small></span>'; | |||||
if ($countUsersWithStatusProducerOnline) { | |||||
$countUsersWithStatusProducerOnlineLabel = '<small class="label pull-right bg-red">' . $countUsersWithStatusProducerOnline . '</small>'; | |||||
} | |||||
$countUsersWithStatusUserOnline = $userModule->getRepository()->countUsersStatusUserOnline(); | |||||
$countUsersWithStatusUserOnlineLabel = ''; | |||||
if ($countUsersWithStatusUserOnline) { | |||||
$countUsersWithStatusUserOnlineLabel = '<small class="label pull-right bg-blue">' . $countUsersWithStatusUserOnline . '</small>'; | |||||
} | |||||
$countUsersOnlineLabel = ''; | |||||
if ($countUsersWithStatusProducerOnline || $countUsersWithStatusUserOnline) { | |||||
$countUsersOnlineLabel = '<span class="pull-right-container">'; | |||||
if ($countUsersWithStatusUserOnline) { | |||||
$countUsersOnlineLabel .= $countUsersWithStatusUserOnlineLabel; | |||||
} | |||||
if ($countUsersWithStatusProducerOnline) { | |||||
$countUsersOnlineLabel .= $countUsersWithStatusProducerOnlineLabel; | |||||
} | |||||
$countUsersOnlineLabel .= '</span>'; | |||||
} | |||||
$countProducerInvoicesUnpaidLabel = ''; | |||||
$countProducerInvoicesUnpaid = $this->getProducerModule()->getDolibarrUtils() | |||||
->countDolibarrProducerInvoicesUnpaid($producer); | |||||
if($countProducerInvoicesUnpaid > 1) { | |||||
$countProducerInvoicesUnpaidLabelColor = ($countProducerInvoicesUnpaid > 2) ? 'red' : 'orange'; | |||||
$countProducerInvoicesUnpaidLabel = '<span class="pull-right-container"><small class="label pull-right bg-'.$countProducerInvoicesUnpaidLabelColor.'">' . $countProducerInvoicesUnpaid . '</small></span>'; | |||||
} | } | ||||
?> | ?> | ||||
], | ], | ||||
], | ], | ||||
['label' => 'Abonnements', 'icon' => 'repeat', 'url' => ['/subscription/index'], 'visible' => $isUserCurrentGrantedAsProducer, 'active' => Yii::$app->controller->id == 'subscription'], | ['label' => 'Abonnements', 'icon' => 'repeat', 'url' => ['/subscription/index'], 'visible' => $isUserCurrentGrantedAsProducer, 'active' => Yii::$app->controller->id == 'subscription'], | ||||
['label' => 'Communiquer', 'icon' => 'bullhorn', 'url' => ['/communicate/index'], 'visible' => $isUserCurrentGrantedAsProducer], | |||||
[ | |||||
'label' => 'Communiquer', | |||||
'icon' => 'bullhorn', | |||||
'url' => ['/communicate/email'], | |||||
'visible' => $isUserCurrentGrantedAsProducer, | |||||
'items' => [ | |||||
['label' => 'Email', 'icon' => 'paper-plane', 'url' => ['/communicate/email'], 'visible' => $isUserCurrentGrantedAsProducer], | |||||
['label' => 'Papier', 'icon' => 'print', 'url' => ['/communicate/paper'], 'visible' => $isUserCurrentGrantedAsProducer], | |||||
] | |||||
], | |||||
[ | [ | ||||
'label' => 'Documents', | 'label' => 'Documents', | ||||
'icon' => 'clone', | 'icon' => 'clone', | ||||
'url' => ['/producer-invoice/index'], | 'url' => ['/producer-invoice/index'], | ||||
'visible' => $isUserCurrentGrantedAsProducer && Yii::$app->parameterBag->get('dolibarrApiKey'), | 'visible' => $isUserCurrentGrantedAsProducer && Yii::$app->parameterBag->get('dolibarrApiKey'), | ||||
'active' => Yii::$app->controller->id == 'producer-invoice', | 'active' => Yii::$app->controller->id == 'producer-invoice', | ||||
'template' => '<a href="{url}">{icon} {label}' . $countProducerInvoicesUnpaidLabel . '</a>' | |||||
], | ], | ||||
['label' => 'Tarifs & modules', 'icon' => 'euro', 'url' => ['/producer/billing'], 'visible' => $isUserCurrentGrantedAsProducer], | ['label' => 'Tarifs & modules', 'icon' => 'euro', 'url' => ['/producer/billing'], 'visible' => $isUserCurrentGrantedAsProducer], | ||||
[ | [ | ||||
[ | [ | ||||
'label' => 'En ligne', | 'label' => 'En ligne', | ||||
'icon' => 'wifi', | 'icon' => 'wifi', | ||||
'url' => ['producer-admin/online'], | |||||
'url' => ['online-admin/index'], | |||||
'visible' => $isUserCurrentGrantedAsAdministrator, | 'visible' => $isUserCurrentGrantedAsAdministrator, | ||||
'template' => '<a href="{url}">{icon} {label}' . $countUsersWithStatusProducerOnlineLabel . '</a>' | |||||
'template' => '<a href="{url}">{icon} {label}' . $countUsersOnlineLabel . '</a>' | |||||
], | ], | ||||
[ | [ | ||||
'label' => 'Support', | 'label' => 'Support', | ||||
'icon' => 'comments', | 'icon' => 'comments', | ||||
'url' => ['support-admin/index'], | 'url' => ['support-admin/index'], | ||||
'visible' => $isUserCurrentGrantedAsAdministrator, | 'visible' => $isUserCurrentGrantedAsAdministrator, | ||||
'template' => '<a href="{url}">{icon} {label}' . $countTicketsAdminUnreadLabel . '</a>' | |||||
'template' => '<a href="{url}">{icon} {label}' . $countTicketsLabel . '</a>' | |||||
], | ], | ||||
['label' => 'Producteurs', 'icon' => 'th-list', 'url' => ['/producer-admin/index'], 'visible' => $isUserCurrentGrantedAsAdministrator], | ['label' => 'Producteurs', 'icon' => 'th-list', 'url' => ['/producer-admin/index'], 'visible' => $isUserCurrentGrantedAsAdministrator], | ||||
[ | [ | ||||
'url' => ['/stats-admin/matomo'], | 'url' => ['/stats-admin/matomo'], | ||||
'visible' => $isUserCurrentGrantedAsAdministrator, | 'visible' => $isUserCurrentGrantedAsAdministrator, | ||||
'items' => [ | 'items' => [ | ||||
['label' => 'Matomo', 'icon' => 'line-chart', 'url' => ['/stats-admin/matomo'], 'visible' => $isUserCurrentGrantedAsAdministrator], | |||||
['label' => 'Chiffre d\'affaire', 'icon' => 'line-chart', 'url' => ['/stats-admin/turnover'], 'visible' => $isUserCurrentGrantedAsAdministrator], | |||||
['label' => 'Commandes clients', 'icon' => 'calendar', 'url' => ['/stats-admin/customer-orders'], 'visible' => $isUserCurrentGrantedAsAdministrator], | |||||
['label' => 'Matomo', 'icon' => 'line-chart', 'url' => ['/stats-admin/matomo'], 'visible' => $isUserCurrentGrantedAsAdministrator], | |||||
['label' => 'Chiffre d\'affaire', 'icon' => 'line-chart', 'url' => ['/stats-admin/turnover'], 'visible' => $isUserCurrentGrantedAsAdministrator], | |||||
['label' => 'Commandes clients', 'icon' => 'calendar', 'url' => ['/stats-admin/customer-orders'], 'visible' => $isUserCurrentGrantedAsAdministrator], | |||||
], | ], | ||||
], | ], | ||||
['label' => 'Paramètres', 'icon' => 'cog', 'url' => ['/setting-admin/index'], 'visible' => $isUserCurrentGrantedAsAdministrator && $featureChecker->isEnabled(Feature::ALIAS_SETTINGS)], | ['label' => 'Paramètres', 'icon' => 'cog', 'url' => ['/setting-admin/index'], 'visible' => $isUserCurrentGrantedAsAdministrator && $featureChecker->isEnabled(Feature::ALIAS_SETTINGS)], |
<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->urlManagerBackend->baseUrl ; ?>"> | <meta name="baseurl" content="<?= Yii::$app->urlManagerBackend->baseUrl ; ?>"> | ||||
<meta name="baseurl-absolute" content="<?= Yii::$app->urlManagerBackend->getHostInfo().Yii::$app->urlManagerBackend->baseUrl; ?>"> | <meta name="baseurl-absolute" content="<?= Yii::$app->urlManagerBackend->getHostInfo().Yii::$app->urlManagerBackend->baseUrl; ?>"> | ||||
<?php if($this->metaRefresh): ?> | |||||
<meta http-equiv="refresh" content="60"> | |||||
<?php endif; ?> | |||||
<?= Html::csrfMetaTags() ?> | <?= Html::csrfMetaTags() ?> | ||||
<title><?= Html::encode($this->page_title) ?> | Opendistrib</title> | <title><?= Html::encode($this->page_title) ?> | Opendistrib</title> | ||||
<link rel="icon" type="image/png" href="<?php echo Yii::$app->urlManagerBackend->getBaseUrl(); ?>/img/favicon-distrib.png" /> | <link rel="icon" type="image/png" href="<?php echo Yii::$app->urlManagerBackend->getBaseUrl(); ?>/img/favicon-distrib.png" /> |
<?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\helpers\Image; | |||||
use yii\helpers\Html; | |||||
$producerModule = $this->getProducerModule(); | |||||
$userModule = $this->getUserModule(); | |||||
$this->setTitle('En ligne'); | |||||
$this->addBreadcrumb($this->getTitle()); | |||||
$this->setMetaRefresh(true); | |||||
?> | |||||
<div class="online-index"> | |||||
<div class="panel panel-default"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title"> | |||||
<div class="glyphicon glyphicon-grain"></div> | |||||
Producteurs (<?= count($usersWithStatusProducerOnlineArray); ?>) | |||||
</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<?php if($usersWithStatusProducerOnlineArray && count($usersWithStatusProducerOnlineArray) > 0): ?> | |||||
<?php foreach ($usersWithStatusProducerOnlineArray as $userWithStatusProducerOnline): ?> | |||||
<?php $producer = $userWithStatusProducerOnline->producer; ?> | |||||
<?php if($producer): ?> | |||||
<div class="col-md-3"> | |||||
<div class="box box-primary box-producer"> | |||||
<div class="box-body box-profile"> | |||||
<?php if ($producer->logo && Image::isPhotoExist($producer->logo)): ?> | |||||
<img class="profile-user-img img-responsive img-circle" | |||||
src="<?= Yii::$app->urlManagerProducer->getHostInfo() . '/' . Yii::$app->urlManagerProducer->baseUrl; ?>/uploads/<?= $producer->logo; ?>" | |||||
alt="Logo <?= Html::encode($producer->name) ?>"> | |||||
<?php endif; ?> | |||||
<h3 class="profile-username text-center"> | |||||
<a title="Aller sur le compte de ce producteur" href="<?= $this->getUrlManagerBackend()->createUrl(['site/switch-producer', 'id' => $producer->id]); ?>"> | |||||
<?= $producer->name; ?> | |||||
</a> | |||||
</h3> | |||||
<p class="text-muted text-center"> | |||||
<?= $userModule->getSolver()->getUsername($userWithStatusProducerOnline); ?><br/> | |||||
</p> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<?php endif; ?> | |||||
<?php endforeach; ?> | |||||
<div class="clr"></div> | |||||
<?php else: ?> | |||||
<div class="alert alert-info">Aucun producteur en ligne actuellement.</div> | |||||
<?php endif; ?> | |||||
</div> | |||||
</div> | |||||
<div class="panel panel-default"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title"> | |||||
<span class="glyphicon glyphicon-user"></span> | |||||
Utilisateurs (<?= count($usersWithStatusUserOnlineArray); ?>) | |||||
</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<?php if($usersWithStatusUserOnlineArray && count($usersWithStatusUserOnlineArray) > 0): ?> | |||||
<?php foreach ($usersWithStatusUserOnlineArray as $userWithStatusUserOnline): ?> | |||||
<div class="col-md-3"> | |||||
<div class="box box-primary box-user"> | |||||
<div class="box-body box-profile"> | |||||
<h3 class="profile-username text-center"> | |||||
<a title="Prendre la main" href="<?= $this->getUrlManagerBackend()->createUrl(['user/switch-identity', 'id' => $userWithStatusUserOnline->id]); ?>"> | |||||
<?= $userModule->getSolver()->getUsername($userWithStatusUserOnline); ?> | |||||
</a> | |||||
</h3> | |||||
<p class="text-muted text-center"> | |||||
<?php $userProducerArray = $userWithStatusUserOnline->userProducer; ?> | |||||
<?php foreach($userProducerArray as $userProducer): ?> | |||||
<?php if($userProducer->active && $userProducer->bookmark): ?> | |||||
<span class="label label-default"><?= $userProducer->producer->name; ?></span> | |||||
<?php endif; ?> | |||||
<?php endforeach; ?> | |||||
</p> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<?php endforeach; ?> | |||||
<div class="clr"></div> | |||||
<?php else: ?> | |||||
<div class="alert alert-info">Aucun utilisateur en ligne actuellement.</div> | |||||
<?php endif; ?> | |||||
</div> | |||||
</div> | |||||
</div> |
termes. | termes. | ||||
*/ | */ | ||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\Order\Order\Module\OrderModule; | |||||
use domain\Order\Order\Order; | |||||
use domain\Order\Order\OrderModule; | |||||
$orderModule = OrderModule::getInstance(); | $orderModule = OrderModule::getInstance(); | ||||
* termes. | * termes. | ||||
*/ | */ | ||||
use common\logic\Distribution\Distribution\Module\DistributionModule; | |||||
use common\logic\Distribution\Distribution\Service\ExportManager; | |||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use domain\Distribution\Distribution\DistributionModule; | |||||
use domain\Distribution\Distribution\ExportManager; | |||||
use domain\Producer\Producer\Producer; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
use lo\widgets\Toggle; | use lo\widgets\Toggle; | ||||
use domain\User\User\UserModule; | |||||
use yii\helpers\ArrayHelper; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\widgets\ActiveForm; | use yii\widgets\ActiveForm; | ||||
use yii\helpers\ArrayHelper; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\User\User\Module\UserModule; | |||||
$producerModule = ProducerModule::getInstance(); | $producerModule = ProducerModule::getInstance(); | ||||
$userModule = UserModule::getInstance(); | $userModule = UserModule::getInstance(); |
* termes. | * termes. | ||||
*/ | */ | ||||
use yii\helpers\Html; | |||||
use domain\PointSale\UserPointSale\UserPointSale; | |||||
use domain\Producer\Producer\Producer; | |||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use common\logic\PointSale\UserPointSale\Model\UserPointSale; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use yii\helpers\Html; | |||||
$pointSaleModule = $this->getPointSaleModule(); | $pointSaleModule = $this->getPointSaleModule(); | ||||
termes. | termes. | ||||
*/ | */ | ||||
use domain\Producer\Producer\Producer; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\widgets\ActiveForm; | use yii\widgets\ActiveForm; | ||||
use common\logic\Producer\Producer\Model\Producer; | |||||
?> | ?> | ||||
termes. | termes. | ||||
*/ | */ | ||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
$this->setTitle('Facturation producteur ('.$producer->name.')') ; | $this->setTitle('Facturation producteur ('.$producer->name.')') ; | ||||
$this->addBreadcrumb(['label' => 'Producteurs', 'url' => ['index']]) ; | $this->addBreadcrumb(['label' => 'Producteurs', 'url' => ['index']]) ; |
termes. | termes. | ||||
*/ | */ | ||||
use yii\helpers\Html; | |||||
use yii\grid\GridView; | |||||
use common\logic\User\User\Model\User; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use domain\Producer\Producer\Producer; | |||||
use domain\User\User\User; | |||||
use yii\grid\GridView; | |||||
use yii\helpers\Html; | |||||
$producerModule = $this->getProducerModule(); | $producerModule = $this->getProducerModule(); | ||||
<?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\helpers\Image; | |||||
use yii\helpers\Html; | |||||
use yii\grid\GridView; | |||||
use common\logic\User\User\Model\User; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\helpers\Price; | |||||
$producerModule = $this->getProducerModule(); | |||||
$userModule = $this->getUserModule(); | |||||
$this->setTitle('Producteurs en ligne'); | |||||
$this->addBreadcrumb($this->getTitle()); | |||||
?> | |||||
<div class="producer-admin-online"> | |||||
<?php if($usersWithStatusProducerOnlineArray && count($usersWithStatusProducerOnlineArray) > 0): ?> | |||||
<?php foreach ($usersWithStatusProducerOnlineArray as $userWithStatusProducerOnline): ?> | |||||
<?php $producer = $userWithStatusProducerOnline->producer; ?> | |||||
<div class="col-md-3"> | |||||
<div class="box box-primary"> | |||||
<div class="box-body box-profile"> | |||||
<?php if ($producer->logo && Image::isPhotoExist($producer->logo)): ?> | |||||
<img class="profile-user-img img-responsive img-circle" | |||||
src="<?= Yii::$app->urlManagerProducer->getHostInfo() . '/' . Yii::$app->urlManagerProducer->baseUrl; ?>/uploads/<?= $producer->logo; ?>" | |||||
alt="Logo <?= Html::encode($producer->name) ?>"> | |||||
<?php endif; ?> | |||||
<h3 class="profile-username text-center"> | |||||
<?= $producer->name; ?> | |||||
</h3> | |||||
<p class="text-muted text-center"> | |||||
<?= $userModule->getSolver()->getUsername($userWithStatusProducerOnline); ?><br/> | |||||
</p> | |||||
<!--<ul class="list-group list-group-unbordered"> | |||||
<li class="list-group-item"> | |||||
<b>Téléphone</b> <a class="pull-right">06 00 00 00 00</a> | |||||
</li> | |||||
</ul> | |||||
<a href="#" class="btn btn-primary btn-block"><b>Bouton</b></a>--> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<?php endforeach; ?> | |||||
<div class="clr"></div> | |||||
<?php else: ?> | |||||
<div class="alert alert-info">Aucun producteur en ligne actuellement.</div> | |||||
<?php endif; ?> | |||||
</div> |
use common\helpers\Dropdown; | use common\helpers\Dropdown; | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Distribution\Distribution\Module\DistributionModule; | |||||
use common\logic\Distribution\Distribution\Service\ExportManager; | |||||
use common\logic\Feature\Feature\Feature; | |||||
use common\logic\Feature\Feature\FeatureModule; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use common\logic\User\UserGroup\Module\UserGroupModule; | |||||
use domain\Config\TaxRate\TaxRate; | |||||
use domain\Distribution\Distribution\DistributionModule; | |||||
use domain\Distribution\Distribution\ExportManager; | |||||
use domain\Document\Document\Document; | |||||
use domain\Feature\Feature\Feature; | |||||
use domain\Feature\Feature\FeatureModule; | |||||
use domain\Producer\Producer\Producer; | |||||
use domain\User\User\UserModule; | |||||
use domain\User\UserGroup\UserGroupModule; | |||||
use yii\helpers\ArrayHelper; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\widgets\ActiveForm; | use yii\widgets\ActiveForm; | ||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\Config\TaxRate\Model\TaxRate; | |||||
use common\logic\Document\Document\Model\Document; | |||||
use yii\helpers\ArrayHelper; | |||||
\backend\assets\VuejsProducerUpdateAsset::register($this); | \backend\assets\VuejsProducerUpdateAsset::register($this); | ||||
->dropDownList(Dropdown::noYesChoices()); ?> | ->dropDownList(Dropdown::noYesChoices()); ?> | ||||
<h4>Divers</h4> | <h4>Divers</h4> | ||||
<?= $form->field($model, 'option_leave_period_start')->textInput([ | |||||
'class' => 'datepicker form-control' | |||||
]); ?> | |||||
<?= $form->field($model, 'option_leave_period_end')->textInput([ | |||||
'class' => 'datepicker form-control' | |||||
]); ?> | |||||
<?php | <?php | ||||
$choicesWeeksDistributionsActivatedInAdvanceArray = [null => '--']; | $choicesWeeksDistributionsActivatedInAdvanceArray = [null => '--']; | ||||
for ($i = 1; $i < 13; $i++) { | for ($i = 1; $i < 13; $i++) { | ||||
<?= $form->field($model, 'tiller') | <?= $form->field($model, 'tiller') | ||||
->dropDownList(Dropdown::noYesChoices()) | ->dropDownList(Dropdown::noYesChoices()) | ||||
->label('Synchroniser avec Tiller'); ?> | ->label('Synchroniser avec Tiller'); ?> | ||||
<?= $form->field($model, 'tiller_api_version') | |||||
->dropDownList([ | |||||
'v2' => 'v2', | |||||
'v3' => 'v3' | |||||
]); ?> | |||||
<h4>API V2</h4> | |||||
<?= $form->field($model, 'tiller_provider_token'); ?> | <?= $form->field($model, 'tiller_provider_token'); ?> | ||||
<?= $form->field($model, 'tiller_restaurant_token'); ?> | <?= $form->field($model, 'tiller_restaurant_token'); ?> | ||||
<h4>API V3</h4> | |||||
<?= $form->field($model, 'tiller_store_id'); ?> | |||||
<?= $form->field($model, 'tiller_redirect_uri'); ?> | |||||
<?= $form->field($model, 'tiller_client_id'); ?> | |||||
<?= $form->field($model, 'tiller_client_secret'); ?> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<?php | <?php | ||||
use common\helpers\GlobalParam; | |||||
use common\helpers\Image; | use common\helpers\Image; | ||||
use domain\PointSale\PointSale\PointSale; | |||||
use lo\widgets\Toggle; | use lo\widgets\Toggle; | ||||
use yii\helpers\Html; | |||||
use domain\Product\Product\Product; | |||||
use yii\bootstrap\ActiveForm; | use yii\bootstrap\ActiveForm; | ||||
use yii\helpers\ArrayHelper; | use yii\helpers\ArrayHelper; | ||||
use common\helpers\GlobalParam; | |||||
use common\logic\Product\Product\Model\Product; | |||||
use common\logic\PointSale\PointSale\Model\PointSale; | |||||
use yii\helpers\Html; | |||||
$producerModule = $this->getProducerModule(); | $producerModule = $this->getProducerModule(); | ||||
$productCategoryModule = $this->getProductCategoryModule(); | $productCategoryModule = $this->getProductCategoryModule(); |
* termes. | * termes. | ||||
*/ | */ | ||||
use common\helpers\Image; | |||||
use yii\helpers\Html; | |||||
use yii\grid\GridView; | |||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use \lo\widgets\Toggle; | |||||
use common\helpers\Image; | |||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use common\logic\Product\Product\Model\Product; | |||||
use lo\widgets\Toggle; | |||||
use yii\grid\GridView; | |||||
use yii\helpers\Html; | |||||
$productModule = $this->getProductModule(); | $productModule = $this->getProductModule(); | ||||
<?php | <?php | ||||
use common\logic\Config\Unit\Module\UnitModule; | |||||
use common\logic\Product\Product\Module\ProductModule; | |||||
use yii\helpers\Html; | |||||
use yii\bootstrap\ActiveForm; | |||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use domain\Config\Unit\UnitModule; | |||||
use domain\Product\Product\ProductModule; | |||||
use yii\bootstrap\ActiveForm; | |||||
use yii\helpers\Html; | |||||
$unitModule = UnitModule::getInstance(); | $unitModule = UnitModule::getInstance(); | ||||
$userModule = $this->getUserModule(); | $userModule = $this->getUserModule(); |
* termes. | * termes. | ||||
*/ | */ | ||||
use common\logic\User\User\Module\UserModule; | |||||
use yii\helpers\Html; | |||||
use common\helpers\Price; | use common\helpers\Price; | ||||
use domain\Product\Product\ProductModule; | |||||
use domain\User\User\UserModule; | |||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use common\logic\Product\Product\Module\ProductModule; | |||||
use yii\helpers\Html; | |||||
$productModule = ProductModule::getInstance(); | $productModule = ProductModule::getInstance(); | ||||
$userModule = UserModule::getInstance(); | $userModule = UserModule::getInstance(); |
* termes. | * termes. | ||||
*/ | */ | ||||
use common\logic\Document\Quotation\Model\Quotation; | |||||
use domain\Document\Quotation\Quotation; | |||||
use domain\Order\Order\Order; | |||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use common\logic\Order\Order\Model\Order; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
$quotationModule = $this->getQuotationModule(); | $quotationModule = $this->getQuotationModule(); |
* termes. | * termes. | ||||
*/ | */ | ||||
use common\logic\Setting\SettingModule; | |||||
use domain\Setting\SettingModule; | |||||
use lo\widgets\Toggle; | use lo\widgets\Toggle; | ||||
use yii\bootstrap\ActiveForm; | use yii\bootstrap\ActiveForm; | ||||
use yii\helpers\Html; | use yii\helpers\Html; |
termes. | termes. | ||||
*/ | */ | ||||
use domain\Subscription\Subscription\Subscription; | |||||
use yii\helpers\ArrayHelper; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\widgets\ActiveForm; | use yii\widgets\ActiveForm; | ||||
use yii\helpers\ArrayHelper ; | |||||
use common\logic\Subscription\Subscription\Model\Subscription; | |||||
\backend\assets\VuejsSubscriptionFormAsset::register($this); | \backend\assets\VuejsSubscriptionFormAsset::register($this); | ||||
termes. | termes. | ||||
*/ | */ | ||||
use common\logic\Subscription\Subscription\Module\SubscriptionModule; | |||||
use yii\helpers\Html; | |||||
use common\helpers\GlobalParam; | |||||
use domain\PointSale\PointSale\PointSale; | |||||
use domain\Product\Product\Product; | |||||
use domain\Product\Product\ProductModule; | |||||
use domain\Subscription\Subscription\Subscription; | |||||
use domain\Subscription\Subscription\SubscriptionModule; | |||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use common\helpers\GlobalParam ; | |||||
use common\logic\Subscription\Subscription\Model\Subscription; | |||||
use common\logic\PointSale\PointSale\Model\PointSale; | |||||
use common\logic\Product\Product\Module\ProductModule; | |||||
use yii\helpers\ArrayHelper; | use yii\helpers\ArrayHelper; | ||||
use common\logic\Product\Product\Model\Product; | |||||
use yii\helpers\Html; | |||||
$subscriptionModule = SubscriptionModule::getInstance(); | $subscriptionModule = SubscriptionModule::getInstance(); | ||||
* termes. | * termes. | ||||
*/ | */ | ||||
use common\helpers\Image; | |||||
use common\logic\Ticket\Ticket\Model\Ticket; | |||||
use common\logic\Ticket\Ticket\Module\TicketModule; | |||||
use yii\helpers\Html; | |||||
use domain\Ticket\Ticket\TicketModule; | |||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use yii\helpers\Html; | |||||
/** | /** | ||||
* @var $this common\components\ViewBackend | * @var $this common\components\ViewBackend |
<?php | <?php | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Ticket\Ticket\Module\TicketModule; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use domain\Ticket\Ticket\TicketModule; | |||||
use domain\User\User\UserModule; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\widgets\ActiveForm; | use yii\widgets\ActiveForm; | ||||
* termes. | * termes. | ||||
*/ | */ | ||||
use common\logic\Distribution\Distribution\Module\DistributionModule; | |||||
use common\logic\Distribution\Distribution\Service\ExportManager; | |||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use domain\Distribution\Distribution\DistributionModule; | |||||
use domain\Distribution\Distribution\ExportManager; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
use lo\widgets\Toggle; | use lo\widgets\Toggle; | ||||
use domain\User\User\UserModule; | |||||
use yii\helpers\ArrayHelper; | |||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\widgets\ActiveForm; | use yii\widgets\ActiveForm; | ||||
use yii\helpers\ArrayHelper; | |||||
\backend\assets\VuejsUserFormAsset::register($this); | \backend\assets\VuejsUserFormAsset::register($this); | ||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
if($section == 'email') { | |||||
$route = 'communicate/email'; | |||||
} | |||||
else { | |||||
$route = 'user/index'; | |||||
} | |||||
?> | ?> | ||||
<div id="menu-users"> | |||||
<div id="nav-points-sale"> | |||||
<a class="btn <?php if(!$idPointSaleActive && !$sectionInactiveUsers && !$sectionSubscribers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/'.$section]); ?>"> | |||||
<span class="glyphicon glyphicon-th-list"></span> Tous <span class="glyphicon glyphicon-triangle-bottom"></span> | |||||
</a> | |||||
<?php if(isset($sectionSubscribers) && !is_null($sectionSubscribers)): ?> | |||||
<a class="btn <?php if($sectionSubscribers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/'.$section,'sectionSubscribers' => 1]); ?>"> | |||||
<span class="glyphicon glyphicon-repeat"></span> | |||||
Abonnés | |||||
<span class="glyphicon glyphicon-triangle-bottom"></span> | |||||
</a> | |||||
<?php endif; ?> | |||||
<?php if(isset($sectionInactiveUsers) && !is_null($sectionInactiveUsers)): ?> | |||||
<a class="btn <?php if($sectionInactiveUsers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/'.$section,'sectionInactiveUsers' => 1]); ?>"> | |||||
<span class="glyphicon glyphicon-time"></span> | |||||
Inactifs | |||||
<span class="glyphicon glyphicon-triangle-bottom"></span> | |||||
</a> | |||||
<?php endif; ?> | |||||
<?php foreach($pointsSaleArray as $pointSale): ?> | |||||
<a class="btn <?php if($idPointSaleActive == $pointSale->id): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/'.$section,'idPointSale' => $pointSale->id]); ?>"> | |||||
<span class="glyphicon glyphicon-map-marker"></span> | |||||
<?= Html::encode($pointSale->name) ?> | |||||
<span class="glyphicon glyphicon-triangle-bottom"></span> | |||||
</a> | |||||
<?php endforeach; ?> | |||||
<div class="panel panel-default"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title">Filtre</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<div id="menu-users"> | |||||
<div id="nav-points-sale"> | |||||
<h4>Général</h4> | |||||
<div> | |||||
<a class="btn btn-xs <?php if(!$idPointSaleActive && !$idDistributionActive && !$sectionInactiveUsers && !$sectionSubscribers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route]); ?>"> | |||||
<span class="glyphicon glyphicon-th-list"></span> Tous | |||||
</a> | |||||
<?php if(isset($sectionSubscribers) && !is_null($sectionSubscribers)): ?> | |||||
<a class="btn btn-xs <?php if($sectionSubscribers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route,'sectionSubscribers' => 1]); ?>"> | |||||
<span class="glyphicon glyphicon-repeat"></span> | |||||
Abonnés | |||||
</a> | |||||
<?php endif; ?> | |||||
<?php if(isset($sectionInactiveUsers) && !is_null($sectionInactiveUsers)): ?> | |||||
<a class="btn btn-xs <?php if($sectionInactiveUsers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route,'sectionInactiveUsers' => 1]); ?>"> | |||||
<span class="glyphicon glyphicon-time"></span> | |||||
Inactifs | |||||
</a> | |||||
<?php endif; ?> | |||||
</div> | |||||
<?php if(count($pointsSaleArray) > 0): ?> | |||||
<h4>Points de vente</h4> | |||||
<div> | |||||
<?php foreach($pointsSaleArray as $pointSale): ?> | |||||
<a class="btn btn-xs <?php if($idPointSaleActive == $pointSale->id): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route,'idPointSale' => $pointSale->id]); ?>"> | |||||
<span class="glyphicon glyphicon-map-marker"></span> | |||||
<?= Html::encode($pointSale->name) ?> | |||||
</a> | |||||
<?php endforeach; ?> | |||||
</div> | |||||
<?php endif; ?> | |||||
<?php if($section == 'email' && count($incomingDistributionsArray) > 0): ?> | |||||
<h4>Distributions</h4> | |||||
<div> | |||||
<?php foreach($incomingDistributionsArray as $distribution): ?> | |||||
<a class="btn btn-xs <?php if($idDistributionActive == $distribution->id): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route,'idDistribution' => $distribution->id]); ?>"> | |||||
<span class="glyphicon glyphicon-calendar"></span> | |||||
<?= Html::encode($incomingDistributionsDatesArray[$distribution->id]) ?> | |||||
</a> | |||||
<?php endforeach; ?> | |||||
</div> | |||||
<?php endif; ?> | |||||
</div> | |||||
</div> | |||||
</div> | </div> | ||||
</div> | |||||
</div> |
termes. | termes. | ||||
*/ | */ | ||||
use common\helpers\GlobalParam; | |||||
use common\helpers\MeanPayment; | |||||
use domain\Payment\Payment; | |||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\widgets\ActiveForm; | use yii\widgets\ActiveForm; | ||||
use common\helpers\GlobalParam; | |||||
use common\logic\Payment\Model\Payment; | |||||
use common\helpers\MeanPayment; | |||||
$paymentManager = $this->getPaymentModule(); | $paymentManager = $this->getPaymentModule(); | ||||
$producerModule = $this->getProducerModule(); | $producerModule = $this->getProducerModule(); | ||||
MeanPayment::OTHER => MeanPayment::getStrBy(MeanPayment::OTHER), | MeanPayment::OTHER => MeanPayment::getStrBy(MeanPayment::OTHER), | ||||
]) ?> | ]) ?> | ||||
<?= $form->field($creditForm, 'comment')->textarea() ?> | <?= $form->field($creditForm, 'comment')->textarea() ?> | ||||
<?= $form->field($creditForm, 'date_transaction')->textInput([ | |||||
'class' => 'datepicker form-control' | |||||
]) ?> | |||||
<?= $form->field($creditForm, 'send_mail')->checkbox() ?> | <?= $form->field($creditForm, 'send_mail')->checkbox() ?> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
'label' => 'Commentaire', | 'label' => 'Commentaire', | ||||
'format' => 'raw', | 'format' => 'raw', | ||||
'value' => function ($model) { | 'value' => function ($model) { | ||||
return nl2br($model->comment); | |||||
if($model->comment) { | |||||
return nl2br($model->comment); | |||||
} | |||||
return ''; | |||||
} | |||||
], | |||||
[ | |||||
'label' => 'Transaction', | |||||
'format' => 'raw', | |||||
'value' => function ($model) { | |||||
if($model->date_transaction) { | |||||
return date('d/m/Y', strtotime($model->date_transaction)); | |||||
} | |||||
return ''; | |||||
} | } | ||||
], | ], | ||||
], | ], |
*/ | */ | ||||
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\User\UserGroup\Module\UserGroupModule; | |||||
use yii\helpers\Html; | |||||
use domain\Order\Order\Order; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
use domain\User\User\UserModule; | |||||
use domain\User\UserProducer\UserProducer; | |||||
use yii\grid\GridView; | use yii\grid\GridView; | ||||
use common\logic\User\User\Module\UserModule; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\User\UserProducer\Model\UserProducer; | |||||
use yii\helpers\Html; | |||||
use domain\User\UserGroup\UserGroupModule; | |||||
$userModule = UserModule::getInstance(); | $userModule = UserModule::getInstance(); | ||||
$producerModule = ProducerModule::getInstance(); | $producerModule = ProducerModule::getInstance(); | ||||
$this->render('_menu', [ | $this->render('_menu', [ | ||||
'idPointSaleActive' => $idPointSaleActive, | 'idPointSaleActive' => $idPointSaleActive, | ||||
'idDistributionActive' => 0, | |||||
'sectionInactiveUsers' => $sectionInactiveUsers, | 'sectionInactiveUsers' => $sectionInactiveUsers, | ||||
'sectionSubscribers' => $sectionSubscribers, | 'sectionSubscribers' => $sectionSubscribers, | ||||
'pointsSaleArray' => $pointsSaleArray, | 'pointsSaleArray' => $pointsSaleArray, |
.document-form .info-box .info-box-text { | .document-form .info-box .info-box-text { | ||||
font-size: 13px; | font-size: 13px; | ||||
} | } | ||||
/* line 7, ../sass/document/_form.scss */ | |||||
/* line 8, ../sass/document/_form.scss */ | |||||
.document-form .info-box .info-box-number { | .document-form .info-box .info-box-number { | ||||
font-size: 15px; | font-size: 15px; | ||||
} | } | ||||
/* line 12, ../sass/document/_form.scss */ | |||||
/* line 14, ../sass/document/_form.scss */ | |||||
.document-form #block-add-product .input-price { | .document-form #block-add-product .input-price { | ||||
text-align: center; | text-align: center; | ||||
} | } | ||||
/* line 16, ../sass/document/_form.scss */ | |||||
/* line 19, ../sass/document/_form.scss */ | |||||
.document-form #block-add-product .input-group-quantity .input-quantity { | .document-form #block-add-product .input-group-quantity .input-quantity { | ||||
text-align: center; | text-align: center; | ||||
} | } | ||||
/* line 22, ../sass/document/_form.scss */ | |||||
/* line 25, ../sass/document/_form.scss */ | |||||
.document-form #block-add-product .total .input-group { | .document-form #block-add-product .total .input-group { | ||||
margin-bottom: 10px; | margin-bottom: 10px; | ||||
} | } | ||||
/* line 25, ../sass/document/_form.scss */ | |||||
/* line 29, ../sass/document/_form.scss */ | |||||
.document-form #block-add-product .total .btn { | .document-form #block-add-product .total .btn { | ||||
float: right; | float: right; | ||||
} | } | ||||
/* line 32, ../sass/document/_form.scss */ | |||||
/* line 36, ../sass/document/_form.scss */ | |||||
.document-form #block-list-products ul.product-order-meta { | .document-form #block-list-products ul.product-order-meta { | ||||
padding: 0px; | padding: 0px; | ||||
margin: 0px; | margin: 0px; | ||||
padding-left: 20px; | padding-left: 20px; | ||||
} | } | ||||
/* line 37, ../sass/document/_form.scss */ | |||||
/* line 41, ../sass/document/_form.scss */ | |||||
.document-form #block-list-products ul.product-order-meta li { | .document-form #block-list-products ul.product-order-meta li { | ||||
color: gray; | color: gray; | ||||
font-size: 11px; | font-size: 11px; | ||||
} | } | ||||
/* line 51, ../sass/document/_form.scss */ | |||||
.document-form #block-list-products .product-order-invoice-price-button-apply { | |||||
display: none; | |||||
} | |||||
/* line 54, ../sass/document/_form.scss */ | |||||
.document-form #block-list-products .product-order-invoice-price-button-apply .btn { | |||||
display: block; | |||||
width: 100%; | |||||
} | |||||
/* line 60, ../sass/document/_form.scss */ | |||||
.document-form #block-list-products .different-price { | |||||
position: relative; | |||||
top: 5px; | |||||
} | |||||
/* line 7, ../sass/document/_index.scss */ | /* line 7, ../sass/document/_index.scss */ | ||||
.quotation-index .content-wrapper .content table.table .column-actions, | .quotation-index .content-wrapper .content table.table .column-actions, | ||||
margin-top: 5px; | margin-top: 5px; | ||||
} | } | ||||
/* line 3, ../sass/producer-admin/_online.scss */ | |||||
.producer-admin-online .box { | |||||
/* line 3, ../sass/online-admin/_index.scss */ | |||||
.online-index .box { | |||||
overflow: hidden; | |||||
} | |||||
/* line 6, ../sass/online-admin/_index.scss */ | |||||
.online-index .box.box-user { | |||||
height: 150px; | |||||
} | |||||
/* line 10, ../sass/online-admin/_index.scss */ | |||||
.online-index .box.box-producer { | |||||
height: 250px; | height: 250px; | ||||
} | } | ||||
/* line 6, ../sass/producer-admin/_online.scss */ | |||||
.producer-admin-online .box .profile-username { | |||||
/* line 14, ../sass/online-admin/_index.scss */ | |||||
.online-index .box .profile-username { | |||||
font-family: 'Source Sans Pro',sans-serif; | font-family: 'Source Sans Pro',sans-serif; | ||||
font-weight: normal; | font-weight: normal; | ||||
font-size: 18px; | font-size: 18px; | ||||
} | } | ||||
/* line 19, ../sass/online-admin/_index.scss */ | |||||
.online-index .box .profile-username a { | |||||
color: #333; | |||||
} | |||||
/* line 4, ../sass/feature-admin/_index.scss */ | /* line 4, ../sass/feature-admin/_index.scss */ | ||||
.feature-admin-index table th.only-for-selected-producers, | .feature-admin-index table th.only-for-selected-producers, |
dateFormat: null, | dateFormat: null, | ||||
loading: true, | loading: true, | ||||
distribution: { | distribution: { | ||||
active: false, | |||||
active: false | |||||
}, | }, | ||||
producer: null, | producer: null, | ||||
oneDistributionWeekActive: false, | oneDistributionWeekActive: false, | ||||
showModalPayment: false, | showModalPayment: false, | ||||
idOrderPayment: 0, | idOrderPayment: 0, | ||||
showLoading: false, | showLoading: false, | ||||
tillerIsAuthenticated: false, | |||||
tillerUrlAuthorizeCode: '#', | |||||
tillerIsSynchro: false, | tillerIsSynchro: false, | ||||
checkboxSelectAllOrders: false, | checkboxSelectAllOrders: false, | ||||
messageGenerateDeliveryNoteDisplayed: false, | messageGenerateDeliveryNoteDisplayed: false, | ||||
app.deliveryNotes = response.data.delivery_notes; | app.deliveryNotes = response.data.delivery_notes; | ||||
} | } | ||||
app.tillerUrlAuthorizeCode = response.data.tiller_url_authorize_code; | |||||
app.tillerIsAuthenticated = response.data.tiller_is_authenticated; | |||||
app.tillerIsSynchro = response.data.tiller_is_synchro; | app.tillerIsSynchro = response.data.tiller_is_synchro; | ||||
app.calendar.attrs = []; | app.calendar.attrs = []; | ||||
var distributions = response.data.distributions; | var distributions = response.data.distributions; | ||||
var leave_period_dates = response.data.leave_period_dates; | |||||
var dayCurrentIsDistributionActive = false; | var dayCurrentIsDistributionActive = false; | ||||
var dateFormatCompare = false; | var dateFormatCompare = false; | ||||
if (app.date) { | if (app.date) { | ||||
} | } | ||||
} | } | ||||
// leave period | |||||
if (leave_period_dates.length) { | |||||
app.calendar.attrs.push({ | |||||
key: 'leave_period', | |||||
dates: leave_period_dates, | |||||
highlight: { | |||||
color: 'blue', | |||||
fillMode: 'solid' | |||||
} | |||||
}); | |||||
} | |||||
app.showLoading = false; | app.showLoading = false; | ||||
app.checkboxSelectAllOrders = false; | app.checkboxSelectAllOrders = false; | ||||
setTimeout("opendistrib_popover(); opendistrib_dropdown_tooltip();", 500); | setTimeout("opendistrib_popover(); opendistrib_dropdown_tooltip();", 500); | ||||
var highlightStyle = { | var highlightStyle = { | ||||
color: 'orange', | |||||
color: 'black', | |||||
fillMode: 'light' | fillMode: 'light' | ||||
} | } | ||||
if (dayCurrentIsDistributionActive) { | if (dayCurrentIsDistributionActive) { | ||||
.then(function (response) { | .then(function (response) { | ||||
app.init(app.idActivePointSale); | app.init(app.idActivePointSale); | ||||
}); | }); | ||||
}, | |||||
authTiller: function() { | |||||
}, | }, | ||||
totalActivePointSale: function () { | totalActivePointSale: function () { | ||||
var total = 0; | var total = 0; |
var price = 0; | var price = 0; | ||||
if (documentClass == 'DeliveryNote' || documentClass == 'Invoice') { | if (documentClass == 'DeliveryNote' || documentClass == 'Invoice') { | ||||
price = productOrder.invoice_price; | price = productOrder.invoice_price; | ||||
if (!price) { | |||||
if (isNaN(price) || price === null) { | |||||
price = productOrder.price; | price = productOrder.price; | ||||
} | } | ||||
} else { | } else { | ||||
if (isNaN(this.productAddQuantity)) { | if (isNaN(this.productAddQuantity)) { | ||||
this.productAddQuantity = 1; | this.productAddQuantity = 1; | ||||
} | } | ||||
}, | |||||
showProductOrderInvoicePriceButtonApply: function(event) { | |||||
if(event.key == 'Enter') { | |||||
this.updateProductOrderInvoicePrice(event); | |||||
} | |||||
else { | |||||
var idProductOrder = event.currentTarget.getAttribute('data-id-product-order'); | |||||
$('#product-order-invoice-price-button-apply-'+idProductOrder).show(); | |||||
} | |||||
}, | |||||
updateProductOrderInvoicePrice: function (event) { | |||||
var idProductOrder = event.currentTarget.getAttribute('data-id-product-order'); | |||||
var invoicePrice = $('#input-product-order-invoice-price-'+idProductOrder).val(); | |||||
axios.get(UrlManager.getBaseUrlAbsolute() + "document/ajax-update-product-order-invoice-price", { | |||||
params: { | |||||
idProductOrder: idProductOrder, | |||||
invoicePrice: invoicePrice | |||||
} | |||||
}) | |||||
.then(function (response) { | |||||
appAlerts.alertResponse(response); | |||||
$('#input-product-order-invoice-price-'+idProductOrder).val(response.data.datas.invoice_price); | |||||
$('#product-order-invoice-price-button-apply-'+idProductOrder).hide(); | |||||
app.init(); | |||||
}); | |||||
} | } | ||||
} | } | ||||
}); | }); |
{ | { | ||||
name: 'logiciels-caisse', | name: 'logiciels-caisse', | ||||
nameDisplay: 'Logiciels de caisse', | nameDisplay: 'Logiciels de caisse', | ||||
isAdminSection: 0 | |||||
isAdminSection: 1 | |||||
}, | }, | ||||
{ | { | ||||
name: 'software', | name: 'software', |
.document-form { | .document-form { | ||||
.info-box { | |||||
.info-box-text { | |||||
font-size: 13px ; | |||||
} | |||||
.info-box-number { | |||||
font-size: 15px ; | |||||
} | |||||
} | |||||
#block-add-product { | |||||
.input-price { | |||||
text-align: center ; | |||||
} | |||||
.input-group-quantity { | |||||
.input-quantity { | |||||
text-align: center ; | |||||
} | |||||
} | |||||
.total { | |||||
.input-group { | |||||
margin-bottom: 10px ; | |||||
} | |||||
.btn { | |||||
float: right ; | |||||
} | |||||
} | |||||
} | |||||
#block-list-products { | |||||
ul.product-order-meta { | |||||
padding: 0px ; | |||||
margin: 0px ; | |||||
padding-left: 20px ; | |||||
li { | |||||
color: gray ; | |||||
font-size: 11px ; | |||||
} | |||||
} | |||||
} | |||||
.info-box { | |||||
.info-box-text { | |||||
font-size: 13px; | |||||
} | |||||
.info-box-number { | |||||
font-size: 15px; | |||||
} | |||||
} | |||||
#block-add-product { | |||||
.input-price { | |||||
text-align: center; | |||||
} | |||||
.input-group-quantity { | |||||
.input-quantity { | |||||
text-align: center; | |||||
} | |||||
} | |||||
.total { | |||||
.input-group { | |||||
margin-bottom: 10px; | |||||
} | |||||
.btn { | |||||
float: right; | |||||
} | |||||
} | |||||
} | |||||
#block-list-products { | |||||
ul.product-order-meta { | |||||
padding: 0px; | |||||
margin: 0px; | |||||
padding-left: 20px; | |||||
li { | |||||
color: gray; | |||||
font-size: 11px; | |||||
} | |||||
} | |||||
.input-group-edit-invoice-price { | |||||
} | |||||
.product-order-invoice-price-button-apply { | |||||
display: none; | |||||
.btn { | |||||
display: block; | |||||
width: 100%; | |||||
} | |||||
} | |||||
.different-price { | |||||
position: relative; | |||||
top: 5px; | |||||
} | |||||
} | |||||
} | } |
.online-index { | |||||
.box { | |||||
overflow: hidden; | |||||
&.box-user { | |||||
height: 150px; | |||||
} | |||||
&.box-producer { | |||||
height: 250px; | |||||
} | |||||
.profile-username { | |||||
font-family: 'Source Sans Pro',sans-serif; | |||||
font-weight: normal; | |||||
font-size: 18px; | |||||
a { | |||||
color: #333; | |||||
} | |||||
} | |||||
} | |||||
} |
.producer-admin-online { | |||||
.box { | |||||
height: 250px; | |||||
.profile-username { | |||||
font-family: 'Source Sans Pro',sans-serif; | |||||
font-weight: normal; | |||||
font-size: 18px; | |||||
} | |||||
} | |||||
} |
@import "support/_index.scss"; | @import "support/_index.scss"; | ||||
@import "support/_view.scss"; | @import "support/_view.scss"; | ||||
@import "producer-admin/_index.scss"; | @import "producer-admin/_index.scss"; | ||||
@import "producer-admin/_online.scss"; | |||||
@import "online-admin/_index.scss"; | |||||
@import "feature-admin/_index.scss"; | @import "feature-admin/_index.scss"; | ||||
@import "setting/_form.scss"; | @import "setting/_form.scss"; | ||||
@import "_responsive.scss" ; | @import "_responsive.scss" ; |
namespace common\components; | namespace common\components; | ||||
use common\helpers\Password; | use common\helpers\Password; | ||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use GuzzleHttp\Client; | use GuzzleHttp\Client; | ||||
use domain\Producer\Producer\Producer; | |||||
use yii\base\ErrorException; | use yii\base\ErrorException; | ||||
class AlwaysdataClient | class AlwaysdataClient |
namespace common\components; | namespace common\components; | ||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\ProducerContextTrait; | |||||
use domain\Producer\Producer\Producer; | |||||
use yii\base\ErrorException; | use yii\base\ErrorException; | ||||
class BusinessLogic | class BusinessLogic |
namespace common\components; | namespace common\components; | ||||
use common\logic\Config\TaxRate\Module\TaxRateModule; | |||||
use common\logic\Config\Unit\Module\UnitModule; | |||||
use common\logic\Distribution\Distribution\Module\DistributionModule; | |||||
use common\logic\Distribution\PointSaleDistribution\Module\PointSaleDistributionModule; | |||||
use common\logic\Distribution\ProductDistribution\Module\ProductDistributionModule; | |||||
use common\logic\Document\DeliveryNote\Module\DeliveryNoteModule; | |||||
use common\logic\Document\Document\Module\DocumentModule; | |||||
use common\logic\Document\Invoice\Module\InvoiceModule; | |||||
use common\logic\Document\Quotation\Module\QuotationModule; | |||||
use common\logic\Feature\Feature\FeatureModule; | |||||
use common\logic\Feature\FeatureProducer\FeatureProducerModule; | |||||
use common\logic\Opinion\Module\OpinionModule; | |||||
use common\logic\Order\Order\Module\OrderModule; | |||||
use common\logic\Order\ProductOrder\Module\ProductOrderModule; | |||||
use common\logic\Payment\Module\PaymentModule; | |||||
use common\logic\PointSale\PointSale\Module\PointSaleModule; | |||||
use common\logic\PointSale\UserPointSale\Module\UserPointSaleModule; | |||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\Producer\ProducerPriceRange\Module\ProducerPriceRangeModule; | |||||
use common\logic\Product\Product\Module\ProductModule; | |||||
use common\logic\Product\ProductCategory\Module\ProductCategoryModule; | |||||
use common\logic\Product\ProductPointSale\Module\ProductPointSaleModule; | |||||
use common\logic\Product\ProductPrice\Module\ProductPriceModule; | |||||
use common\logic\Setting\SettingModule; | |||||
use common\logic\Subscription\ProductSubscription\Module\ProductSubscriptionModule; | |||||
use common\logic\Subscription\Subscription\Module\SubscriptionModule; | |||||
use common\logic\Ticket\Ticket\Module\TicketModule; | |||||
use common\logic\Ticket\TicketMessage\Module\TicketMessageModule; | |||||
use common\logic\Ticket\TicketUser\Module\TicketUserModule; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use common\logic\User\UserGroup\Module\UserGroupModule; | |||||
use common\logic\User\UserProducer\Module\UserProducerModule; | |||||
use common\logic\User\UserUserGroup\Module\UserUserGroupModule; | |||||
use domain\Config\TaxRate\TaxRateModule; | |||||
use domain\Config\Unit\UnitModule; | |||||
use domain\Distribution\Distribution\DistributionModule; | |||||
use domain\Distribution\PointSaleDistribution\PointSaleDistributionModule; | |||||
use domain\Distribution\ProductDistribution\ProductDistributionModule; | |||||
use domain\Document\DeliveryNote\DeliveryNoteModule; | |||||
use domain\Document\Document\DocumentModule; | |||||
use domain\Document\Invoice\InvoiceModule; | |||||
use domain\Document\Quotation\QuotationModule; | |||||
use domain\Feature\Feature\FeatureModule; | |||||
use domain\Feature\FeatureProducer\FeatureProducerModule; | |||||
use domain\Opinion\OpinionModule; | |||||
use domain\Order\Order\OrderModule; | |||||
use domain\Order\ProductOrder\ProductOrderModule; | |||||
use domain\Payment\PaymentModule; | |||||
use domain\PointSale\PointSale\PointSaleModule; | |||||
use domain\PointSale\UserPointSale\UserPointSaleModule; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
use domain\Producer\ProducerPriceRange\ProducerPriceRangeModule; | |||||
use domain\Product\Product\ProductModule; | |||||
use domain\Product\ProductCategory\ProductCategoryModule; | |||||
use domain\Product\ProductPointSale\ProductPointSaleModule; | |||||
use domain\Product\ProductPrice\Module\ProductPriceModule; | |||||
use domain\Setting\SettingModule; | |||||
use domain\Subscription\ProductSubscription\ProductSubscriptionModule; | |||||
use domain\Subscription\Subscription\SubscriptionModule; | |||||
use domain\Ticket\Ticket\TicketModule; | |||||
use domain\Ticket\TicketMessage\TicketMessageModule; | |||||
use domain\Ticket\TicketUser\TicketUserModule; | |||||
use domain\User\User\UserModule; | |||||
use domain\User\UserGroup\UserGroupModule; | |||||
use domain\User\UserProducer\UserProducerModule; | |||||
use domain\User\UserUserGroup\UserUserGroupModule; | |||||
trait BusinessLogicTrait | trait BusinessLogicTrait | ||||
{ | { |
namespace common\components; | namespace common\components; | ||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use domain\Producer\Producer\Producer; | |||||
use yii\mail\MessageInterface; | use yii\mail\MessageInterface; | ||||
class MailerService | class MailerService |
<?php | |||||
namespace common\components\Tiller; | |||||
interface TillerClientInterface | |||||
{ | |||||
public function isAuthenticated(): bool; | |||||
public function getOrders($date); | |||||
public function postOrder($params); | |||||
} |
* termes. | * termes. | ||||
*/ | */ | ||||
namespace common\components; | |||||
namespace common\components\Tiller; | |||||
use linslin\yii2\curl; | use linslin\yii2\curl; | ||||
class TillerClient | |||||
class TillerClientV2 implements TillerClientInterface | |||||
{ | { | ||||
var $curl; | var $curl; | ||||
var $providerToken; | var $providerToken; | ||||
$this->restaurantToken = $restaurantToken; | $this->restaurantToken = $restaurantToken; | ||||
} | } | ||||
public function getUrlAuthorizeCode(string $clientId = null, string $redirectUri = null): string | |||||
{ | |||||
return "#"; | |||||
} | |||||
public function isAuthenticated(): bool | |||||
{ | |||||
return true; | |||||
} | |||||
public function getOrders($date) | public function getOrders($date) | ||||
{ | { | ||||
$orders = $this->curl->setGetParams([ | $orders = $this->curl->setGetParams([ |
<?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. | |||||
*/ | |||||
namespace common\components\Tiller; | |||||
use common\components\Tiller\TillerClientInterface; | |||||
use GuzzleHttp\Exception\RequestException; | |||||
use linslin\yii2\curl; | |||||
class TillerClientV3 implements TillerClientInterface | |||||
{ | |||||
var $client; | |||||
var $storeId; | |||||
var $headers = []; | |||||
var $urlApi = 'https://api.tiller.systems/'; | |||||
public function __construct(string $storeId = null, string $accessToken = null) | |||||
{ | |||||
$this->client = new \GuzzleHttp\Client(); | |||||
$this->storeId = (int) $storeId; | |||||
$this->headers = [ | |||||
'authorization' => 'Bearer '.$accessToken, | |||||
'accept' => 'application/json', | |||||
'content-type' => 'application/json', | |||||
]; | |||||
} | |||||
public function getUrlAuthorizeCode(string $clientId = null, string $redirectUri = null): string | |||||
{ | |||||
if($clientId && $redirectUri) { | |||||
return "https://oauth.api.tiller.systems/oauth2/authorize?client_id=$clientId&response_type=code&scope=&redirect_uri=$redirectUri"; | |||||
} | |||||
return '#'; | |||||
} | |||||
public function isAuthenticated(): bool | |||||
{ | |||||
return $this->getOrders(date('Y-m-d')) !== false; | |||||
} | |||||
public function getOrders($date) | |||||
{ | |||||
try { | |||||
$response = $this->client->request('POST', $this->urlApi.'orders/v3/orders/search', [ | |||||
'body' => json_encode([ | |||||
'storeIds' => [$this->storeId], | |||||
'openDate' => [ | |||||
'from' => date('Y-m-d H:i:s', strtotime($date)), | |||||
'to' => date('Y-m-d H:i:s', strtotime($date) + 24 * 60 * 60 - 1) | |||||
] | |||||
]), | |||||
'headers' => $this->headers | |||||
]); | |||||
return $response->getBody()->getContents(); | |||||
} | |||||
catch (RequestException $exception) { | |||||
return false; | |||||
} | |||||
} | |||||
public function postOrder($params) | |||||
{ | |||||
$response = $this->client->request('POST', $this->urlApi.'purchase-requests/v1/requests', [ | |||||
'query' => [ | |||||
'storeId' => $this->storeId | |||||
], | |||||
'body' => json_encode($params), | |||||
'headers' => $this->headers | |||||
]); | |||||
return $response->getBody()->getContents(); | |||||
} | |||||
} |
namespace common\components ; | namespace common\components ; | ||||
use common\logic\User\User\Model\User; | |||||
use domain\User\User\User; | |||||
class View extends \yii\web\View | class View extends \yii\web\View | ||||
{ | { | ||||
var $icon; | var $icon; | ||||
var $page_title ; | var $page_title ; | ||||
var $buttons ; | var $buttons ; | ||||
var $metaRefresh = false; | |||||
public function getLogic() | public function getLogic() | ||||
{ | { | ||||
]); | ]); | ||||
} | } | ||||
public function setMetaRefresh(bool $active) | |||||
{ | |||||
$this->metaRefresh = $active; | |||||
} | |||||
public function getUrlManagerFrontend() | public function getUrlManagerFrontend() | ||||
{ | { | ||||
return \Yii::$app->urlManagerFrontend; | return \Yii::$app->urlManagerFrontend; |
use common\components\BusinessLogic; | use common\components\BusinessLogic; | ||||
use common\components\DolibarrApi; | use common\components\DolibarrApi; | ||||
use common\components\ForumFlarumClient; | use common\components\ForumFlarumClient; | ||||
use common\logic\Distribution\Distribution\Model\Distribution; | |||||
use common\logic\Document\DeliveryNote\Model\DeliveryNote; | |||||
use common\logic\Order\Order\Model\Order; | |||||
use common\logic\Ticket\Ticket\Model\Ticket; | |||||
use common\logic\Payment\Model\Payment; | |||||
use common\logic\User\User\Model\User; | |||||
use domain\Distribution\Distribution\Distribution; | |||||
use domain\Document\DeliveryNote\DeliveryNote; | |||||
use domain\Order\Order\Order; | |||||
use domain\Payment\Payment; | |||||
use domain\Ticket\Ticket\Ticket; | |||||
use domain\User\User\User; | |||||
$serverName = isset($_SERVER['SERVER_NAME']) ?? ''; | |||||
$serverName = isset($_SERVER['SERVER_NAME']) ?? '' ; | |||||
return [ | return [ | ||||
'bootstrap' => ['listener'], | 'bootstrap' => ['listener'], | ||||
], | ], | ||||
'user' => [ | 'user' => [ | ||||
'class' => 'yii\web\User', | 'class' => 'yii\web\User', | ||||
'identityClass' => 'common\logic\User\User\Model\User', | |||||
'identityClass' => 'domain\User\User\User', | |||||
'enableAutoLogin' => true, | 'enableAutoLogin' => true, | ||||
'identityCookie' => [ | 'identityCookie' => [ | ||||
'name' => 'distrib', | 'name' => 'distrib', | ||||
'observers' => [ | 'observers' => [ | ||||
User::class => [ | User::class => [ | ||||
// Producer : lien avec utilisateur | // Producer : lien avec utilisateur | ||||
common\logic\Producer\Producer\Event\UserObserver::class | |||||
domain\Producer\Producer\Event\UserObserver::class | |||||
], | ], | ||||
Order::class => [ | Order::class => [ | ||||
// Payment : remboursement commande | // Payment : remboursement commande | ||||
common\logic\Payment\Event\OrderObserver::class | |||||
domain\Payment\Event\OrderObserver::class | |||||
], | ], | ||||
Payment::class => [ | Payment::class => [ | ||||
// UserProducer : mise à jour du crédit | // UserProducer : mise à jour du crédit | ||||
common\logic\User\UserProducer\Event\PaymentObserver::class | |||||
domain\User\UserProducer\Event\PaymentObserver::class | |||||
], | ], | ||||
Distribution::class => [ | Distribution::class => [ | ||||
// Subscription : génération des commandes sur base des abonnements | // Subscription : génération des commandes sur base des abonnements | ||||
common\logic\Subscription\Subscription\Event\DistributionObserver::class | |||||
domain\Subscription\Subscription\Event\DistributionObserver::class | |||||
], | ], | ||||
DeliveryNote::class => [ | DeliveryNote::class => [ | ||||
// Order : assignation du bon de livraison aux commandes | // Order : assignation du bon de livraison aux commandes | ||||
common\logic\Order\Order\Event\DeliveryNoteObserver::class, | |||||
domain\Order\Order\Event\DeliveryNoteObserver::class, | |||||
// DeliveryNote : validation automatique des bons de livraison | // DeliveryNote : validation automatique des bons de livraison | ||||
common\logic\Document\DeliveryNote\Event\DeliveryNoteObserver::class | |||||
domain\Document\DeliveryNote\Event\DeliveryNoteObserver::class | |||||
], | ], | ||||
Ticket::class => [ | Ticket::class => [ | ||||
// User : envoi email nouveau ticket à l'administrateur | // User : envoi email nouveau ticket à l'administrateur | ||||
common\logic\User\User\Event\TicketObserver::class, | |||||
domain\User\User\Event\TicketObserver::class, | |||||
], | ], | ||||
], | ], | ||||
], | ], |
*/ | */ | ||||
return [ | return [ | ||||
'version' => '24.2.A', | |||||
'version' => '24.2.B', | |||||
'maintenanceMode' => false, | 'maintenanceMode' => false, | ||||
'siteName' => 'Opendistrib', | 'siteName' => 'Opendistrib', | ||||
'adminEmail' => 'contact@opendistrib.net', | 'adminEmail' => 'contact@opendistrib.net', |
use common\components\BusinessLogic; | use common\components\BusinessLogic; | ||||
use common\components\BusinessLogicTrait; | use common\components\BusinessLogicTrait; | ||||
use common\components\ParameterBag; | use common\components\ParameterBag; | ||||
use common\logic\User\User\Model\User; | |||||
use domain\User\User\User; | |||||
use yii; | use yii; | ||||
use yii\web\Response; | use yii\web\Response; | ||||
namespace common\forms; | namespace common\forms; | ||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use domain\Producer\Producer\Producer; | |||||
use Yii; | use Yii; | ||||
use yii\base\Model; | use yii\base\Model; | ||||
namespace common\forms; | namespace common\forms; | ||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\User\User\Model\User; | |||||
use domain\Producer\Producer\Producer; | |||||
use domain\User\User\User; | |||||
use Yii; | use Yii; | ||||
use yii\base\Model; | use yii\base\Model; | ||||
namespace common\forms; | namespace common\forms; | ||||
use common\logic\Product\Product\Model\Product; | |||||
use common\logic\Product\Product\Module\ProductModule; | |||||
use common\logic\Subscription\ProductSubscription\Model\ProductSubscription; | |||||
use common\logic\Subscription\Subscription\Model\Subscription; | |||||
use common\logic\Subscription\Subscription\Module\SubscriptionModule; | |||||
use common\logic\User\User\Module\UserModule; | |||||
use Yii; | |||||
use domain\Product\Product\Product; | |||||
use domain\Product\Product\ProductModule; | |||||
use domain\Subscription\ProductSubscription\ProductSubscription; | |||||
use domain\Subscription\Subscription\Subscription; | |||||
use domain\Subscription\Subscription\SubscriptionModule; | |||||
use domain\User\User\UserModule; | |||||
use yii\base\Model; | use yii\base\Model; | ||||
class SubscriptionForm extends Model | class SubscriptionForm extends Model |
const RESPONSE_TYPE_ERROR = 'error'; | const RESPONSE_TYPE_ERROR = 'error'; | ||||
const RESPONSE_TYPE_SUCCESS = 'success'; | const RESPONSE_TYPE_SUCCESS = 'success'; | ||||
public static function responseSuccess(string $message): array | |||||
public static function responseSuccess(string $message, array $datas = []): array | |||||
{ | { | ||||
return self::response(self::RESPONSE_TYPE_SUCCESS, $message); | |||||
return self::response(self::RESPONSE_TYPE_SUCCESS, $message, $datas); | |||||
} | } | ||||
public static function responseError(string $message): array | |||||
public static function responseError(string $message, array $datas = []): array | |||||
{ | { | ||||
return self::response(self::RESPONSE_TYPE_ERROR, $message); | |||||
return self::response(self::RESPONSE_TYPE_ERROR, $message, $datas); | |||||
} | } | ||||
private static function response(string $responseType, string $message): array | |||||
private static function response(string $responseType, string $message, array $datas = []): array | |||||
{ | { | ||||
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; | \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; | ||||
'alert' => [ | 'alert' => [ | ||||
'type' => self::getAlertClass($responseType), | 'type' => self::getAlertClass($responseType), | ||||
'message' => $message | 'message' => $message | ||||
] | |||||
], | |||||
'datas' => $datas | |||||
]; | ]; | ||||
} | } | ||||
namespace common\helpers; | namespace common\helpers; | ||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
class CSV | class CSV | ||||
{ | { |
namespace common\helpers; | namespace common\helpers; | ||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\logic\Producer\Producer\Module\ProducerModule; | |||||
use common\logic\User\User\Service\UserSolver; | |||||
use domain\Producer\Producer\ProducerModule; | |||||
use domain\User\User\UserSolver; | |||||
class GlobalParam | class GlobalParam | ||||
{ | { |
namespace common\helpers; | namespace common\helpers; | ||||
use common\logic\Document\Document\Model\Document; | |||||
use domain\Document\Document\Document; | |||||
class Price | class Price | ||||
{ | { |
<?php | |||||
namespace common\logic\Distribution\Distribution\Event; | |||||
use common\logic\Distribution\Distribution\Model\Distribution; | |||||
use yii\base\Event; | |||||
class DistributionActiveEvent extends Event | |||||
{ | |||||
public Distribution $distribution; | |||||
} |
<?php | |||||
namespace common\logic\Distribution\PointSaleDistribution\Service; | |||||
use common\logic\AbstractDefinition; | |||||
use common\logic\Distribution\PointSaleDistribution\Model\PointSaleDistribution; | |||||
class PointSaleDistributionDefinition extends AbstractDefinition | |||||
{ | |||||
public function getEntityFqcn(): string | |||||
{ | |||||
return PointSaleDistribution::class; | |||||
} | |||||
} |
<?php | |||||
namespace common\logic\Distribution\ProductDistribution\Service; | |||||
use common\logic\AbstractDefinition; | |||||
use common\logic\Distribution\ProductDistribution\Model\ProductDistribution; | |||||
class ProductDistributionDefinition extends AbstractDefinition | |||||
{ | |||||
public function getEntityFqcn(): string | |||||
{ | |||||
return ProductDistribution::class; | |||||
} | |||||
} |
<?php | |||||
namespace common\logic\Document\Document\Model; | |||||
interface DocumentInterface | |||||
{ | |||||
} |