namespace backend\controllers; | namespace backend\controllers; | ||||
use yii\web\Controller; | |||||
use yii\filters\AccessControl; | |||||
use Yii; | use Yii; | ||||
use yii\filters\AccessControl; | |||||
use common\models\User; | use common\models\User; | ||||
use common\models\Order; | |||||
use DateTime; | |||||
use DateInterval; | |||||
use DatePeriod; | |||||
use common\models\Distribution ; | |||||
class ReportController extends BackendController | class ReportController extends BackendController | ||||
{ | { | ||||
public function actionIndex() | public function actionIndex() | ||||
{ | { | ||||
$this->checkProductsPointsSale() ; | |||||
$usersArray = User::findBy()->all() ; | |||||
$pointsSaleArray = PointSale::searchAll() ; | |||||
// distributions | |||||
$firstDistribution = Distribution::searchOne([], [ | |||||
'orderby' => 'id ASC' | |||||
]) ; | |||||
$lastDistribution = Distribution::searchOne([], [ | |||||
'orderby' => 'id DESC' | |||||
]) ; | |||||
$firstYear = date('Y',strtotime($firstDistribution->date)) ; | |||||
$lastYear = date('Y',strtotime($lastDistribution->date)) ; | |||||
return $this->render('index') ; | |||||
$distributionsArray = Distribution::searchAll([], [ | |||||
'orderby' => 'date ASC', | |||||
]) ; | |||||
$distributionsByMonthArray = [] ; | |||||
foreach($distributionsArray as $distribution) { | |||||
$month = date('Y-m', strtotime($distribution->date)) ; | |||||
if(!isset($distributionsByMonthArray[$month])) { | |||||
$distributionsByMonthArray[$month] = [ | |||||
'month' => strftime('%B %Y', strtotime($distribution->date)), | |||||
'distributions' => [] | |||||
] ; | |||||
} | |||||
$distributionsByMonthArray[$month]['distributions'][] = $distribution ; | |||||
} | |||||
return $this->render('index', [ | |||||
'usersArray' => $usersArray, | |||||
'pointsSaleArray' => $pointsSaleArray, | |||||
'firstYear' => $firstYear, | |||||
'lastYear' => $lastYear, | |||||
'distributionByMonthArray' => $distributionsByMonthArray | |||||
]) ; | |||||
} | } | ||||
} | } |
$this->setTitle('Rapports') ; | $this->setTitle('Rapports') ; | ||||
$this->addBreadcrumb('Rapports') ; | $this->addBreadcrumb('Rapports') ; | ||||
?> | |||||
?> | |||||
<div class="col-md-6"> | |||||
<div id="nav-sections-report"> | |||||
<a href="#" class="btn btn-primary">Utilisateurs <span class="glyphicon glyphicon-triangle-bottom"></span></a> | |||||
<a href="#" class="btn btn-default">Points de vente</a> | |||||
<a href="#" class="btn btn-default">Distributions</a> | |||||
</div> | |||||
<div id="section-users" class="panel panel-default section"> | |||||
<div class="panel-body"> | |||||
<div id="wrapper-search-user"> | |||||
<span class="glyphicon glyphicon-search"></span> | |||||
<input type="text" class="form-control" id="input-search-user" placeholder="Rechercher" /> | |||||
</div> | |||||
<div class="content-max-height"> | |||||
<ul id="list-users"> | |||||
<?php foreach($usersArray as $user): ?> | |||||
<li> | |||||
<input type="checkbox" id="user_<?= $user['user_id']; ?>" /> | |||||
<label for="user_<?= $user['user_id'] ?>"><?= Html::encode($user['lastname'].' '.$user['name']); ?></label> | |||||
</li> | |||||
<?php endforeach; ?> | |||||
</ul> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div id="section-points-sale" class="panel panel-default section"> | |||||
<div class="panel-body"> | |||||
<div class="content-max-height"> | |||||
<ul class="list" id="list-points-sale"> | |||||
<?php foreach($pointsSaleArray as $pointSale): ?> | |||||
<li> | |||||
<input type="checkbox" id="pointsale_<?= $pointSale->id; ?>" /> | |||||
<label for="pointsale_<?= $pointSale->id ?>"><?= Html::encode($pointSale->name); ?></label> | |||||
</li> | |||||
<?php endforeach; ?> | |||||
</ul> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div id="section-distributions" class="panel panel-default section"> | |||||
<div class="panel-body"> | |||||
<div id="wrapper-select-year"> | |||||
<select class="form-control"> | |||||
<?php for($i = $firstYear ; $i <= $lastYear ; $i++): ?> | |||||
<option value="<?= $i ?>"><?= $i ?></option> | |||||
<?php endfor; ?> | |||||
</select> | |||||
</div> | |||||
<div class="content-max-height"> | |||||
<?php foreach($distributionByMonthArray as $distributionsMonth): ?> | |||||
<a href="#" class="btn btn-default month-distribution"><?= $distributionsMonth['month']; ?></a> | |||||
<?php if(count($distributionsMonth['distributions'])): ?> | |||||
<ul> | |||||
<?php foreach($distributionsMonth['distributions'] as $distribution): ?> | |||||
<li> | |||||
<input type="checkbox" id="distribution_<?= $distribution->id ?>" /> | |||||
<label for="distribution_<?= $distribution->id ?>"><?= strftime('%A %d %B', strtotime($distribution->date)); ?></label> | |||||
</li> | |||||
<?php endforeach; ?> | |||||
</ul> | |||||
<?php endif; ?> | |||||
<?php endforeach; ?> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<div class="col-md-6"> | |||||
<div id="report" class="panel panel-default"> | |||||
<div class="panel-heading"> | |||||
Rapport | |||||
</div> | |||||
<div class="panel-body"> | |||||
<div id="summary"> | |||||
Résumé | |||||
</div> | |||||
<div id="report"> | |||||
<a href="#" class="btn btn-primary">Générer</a> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> |
.point-sale-index table .td-default { | .point-sale-index table .td-default { | ||||
text-align: center; | text-align: center; | ||||
} | } | ||||
/** | |||||
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. | |||||
*/ | |||||
/* line 38, ../sass/report/_index.scss */ | |||||
.report-index .section { | |||||
margin-top: 10px; | |||||
} | |||||
/* line 40, ../sass/report/_index.scss */ | |||||
.report-index .section .content-max-height { | |||||
max-height: 300px; | |||||
overflow-y: scroll; | |||||
} | |||||
/* line 44, ../sass/report/_index.scss */ | |||||
.report-index .section .content-max-height ul { | |||||
list-style-type: none; | |||||
margin-left: 0px; | |||||
padding-left: 5px; | |||||
} | |||||
/* line 50, ../sass/report/_index.scss */ | |||||
.report-index .section .content-max-height ul li label { | |||||
font-weight: normal; | |||||
} | |||||
/* line 57, ../sass/report/_index.scss */ | |||||
.report-index #section-users { | |||||
display: none; | |||||
} | |||||
/* line 59, ../sass/report/_index.scss */ | |||||
.report-index #section-users #wrapper-search-user { | |||||
margin-bottom: 10px; | |||||
position: relative; | |||||
} | |||||
/* line 62, ../sass/report/_index.scss */ | |||||
.report-index #section-users #wrapper-search-user .glyphicon-search { | |||||
position: absolute; | |||||
top: 10px; | |||||
right: 16px; | |||||
color: gray; | |||||
} | |||||
/* line 70, ../sass/report/_index.scss */ | |||||
.report-index #section-points-sale { | |||||
display: none; | |||||
} | |||||
/* line 74, ../sass/report/_index.scss */ | |||||
.report-index #section-distributions #wrapper-select-year { | |||||
margin-bottom: 10px; | |||||
} | |||||
/* line 77, ../sass/report/_index.scss */ | |||||
.report-index #section-distributions .month-distribution { | |||||
display: block; | |||||
text-transform: capitalize; | |||||
text-align: left; | |||||
} | |||||
/* line 84, ../sass/report/_index.scss */ | |||||
.report-index #report { | |||||
margin-top: 43px; | |||||
} |
*/ | */ | ||||
.report-index { | .report-index { | ||||
.section { | |||||
margin-top: 10px ; | |||||
.content-max-height { | |||||
max-height: 300px ; | |||||
overflow-y: scroll ; | |||||
ul { | |||||
list-style-type: none ; | |||||
margin-left: 0px ; | |||||
padding-left: 5px ; | |||||
li { | |||||
label { | |||||
font-weight: normal; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
#section-users { | |||||
display: none ; | |||||
#wrapper-search-user { | |||||
margin-bottom: 10px ; | |||||
position: relative ; | |||||
.glyphicon-search { | |||||
position: absolute ; | |||||
top: 10px ; | |||||
right: 16px ; | |||||
color: gray ; | |||||
} | |||||
} | |||||
} | |||||
#section-points-sale { | |||||
display: none ; | |||||
} | |||||
#section-distributions { | |||||
#wrapper-select-year { | |||||
margin-bottom: 10px ; | |||||
} | |||||
.month-distribution { | |||||
display: block ; | |||||
text-transform: capitalize ; | |||||
text-align: left ; | |||||
} | |||||
} | |||||
#report { | |||||
margin-top: 43px ; | |||||
} | |||||
} | } |