@@ -38,14 +38,10 @@ termes. | |||
namespace backend\controllers; | |||
use yii\web\Controller; | |||
use yii\filters\AccessControl; | |||
use Yii; | |||
use yii\filters\AccessControl; | |||
use common\models\User; | |||
use common\models\Order; | |||
use DateTime; | |||
use DateInterval; | |||
use DatePeriod; | |||
use common\models\Distribution ; | |||
class ReportController extends BackendController | |||
{ | |||
@@ -70,9 +66,43 @@ class ReportController extends BackendController | |||
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 | |||
]) ; | |||
} | |||
} |
@@ -39,4 +39,86 @@ termes. | |||
$this->setTitle('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> |
@@ -2035,3 +2035,92 @@ termes. | |||
.point-sale-index table .td-default { | |||
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; | |||
} |
@@ -35,5 +35,53 @@ termes. | |||
*/ | |||
.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 ; | |||
} | |||
} |