@@ -0,0 +1,170 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.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\models; | |||
use Yii; | |||
use common\models\PointVente; | |||
use common\models\Production; | |||
/** | |||
* This is the model class for table "production_point_vente". | |||
* | |||
* @property integer $id_production | |||
* @property integer $id_point_vente | |||
* @property integer $livraison | |||
*/ | |||
class PointSaleDistribution extends \yii\db\ActiveRecord | |||
{ | |||
var $point_sale_distribution; | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'point_sale_distribution'; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function rules() | |||
{ | |||
return [ | |||
[['id_distribution', 'id_point_sale'], 'required'], | |||
[['id_distribution', 'id_point_sale', 'delivery'], 'integer'], | |||
]; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function attributeLabels() | |||
{ | |||
return [ | |||
'id_distribution' => 'Distribution', | |||
'id_point_sale' => 'Point de vente', | |||
'delivery' => 'Livraison', | |||
]; | |||
} | |||
/* | |||
* Relations | |||
*/ | |||
public function getDistribution() | |||
{ | |||
return $this->hasOne(Distribution::className(), ['id' => 'id_distribution']); | |||
} | |||
public function getPointSale() | |||
{ | |||
return $this->hasOne(PointSale::className(), ['id' => 'id_point_sale']); | |||
} | |||
/** | |||
* Retourne les options de base nécessaires à la fonction de recherche. | |||
* | |||
* @return array | |||
*/ | |||
public static function defaultOptionsSearch() { | |||
return [ | |||
'with' => ['production', 'pointVente'], | |||
'join_with' => [], | |||
'orderby' => '', | |||
'attribute_id_producer' => '' | |||
] ; | |||
} | |||
/** | |||
* Définit les jours de livraisons des points de vente pour un jour de | |||
* production donné. | |||
* | |||
* @param integer $id_production | |||
* @param boolean $bool_livraison | |||
*/ | |||
public static function setAll($idDistribution, $boolDelivery) | |||
{ | |||
$countPointSaleDistribution = Distribution::searchCount([ | |||
'id_distribution' => $idDistribution | |||
]) ; | |||
if (!$countPointSaleDistribution) { | |||
$arrPointsSale = PointSale::searchAll() ; | |||
foreach ($arrPointsSale as $pointSale) { | |||
$pointSaleDistribution = new PointSaleDistribution(); | |||
$pointSaleDistribution->id_distribution = $idDistribution; | |||
$pointSaleDistribution->id_point_sale = $pointSale->id; | |||
$pointSaleDistribution->save(); | |||
} | |||
} | |||
$distribution = Distribution::findOne($idProduction); | |||
if ($distribution) { | |||
$day = date('N', strtotime($distribution->date)); | |||
$arrPointsSaleDistribution = self::searchAll([ | |||
'id_distribution' => $idDistribution | |||
]) ; | |||
foreach ($arrPointsSaleDistribution as $pointSaleDistribution) { | |||
if ($boolDelivery && | |||
(($day == 1 && $pointSaleDistribution->pointSale->delivery_monday) || | |||
($day == 2 && $pointSaleDistribution->pointSale->delivery_tuesday) || | |||
($day == 3 && $pointSaleDistribution->pointSale->delivery_wednesday) || | |||
($day == 4 && $pointSaleDistribution->pointSale->delivery_thursday) || | |||
($day == 5 && $pointSaleDistribution->pointSale->delivery_friday) || | |||
($day == 6 && $pointSaleDistribution->pointSale->delivery_saterday) || | |||
($day == 7 && $pointSaleDistribution->pointSale->delivery_sunday) || | |||
$pointSaleDistribution->pointSale->point_production | |||
)) { | |||
$pointSaleDistribution->delivery = 1; | |||
} else { | |||
$pointSaleDistribution->delivery = 0; | |||
} | |||
$pointSaleDistribution->save(); | |||
} | |||
} | |||
} | |||
} |
@@ -1,163 +0,0 @@ | |||
<?php | |||
/** | |||
Copyright La boîte à pain (2018) | |||
contact@laboiteapain.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\models; | |||
use Yii; | |||
use common\models\PointVente; | |||
use common\models\Production; | |||
/** | |||
* This is the model class for table "production_point_vente". | |||
* | |||
* @property integer $id_production | |||
* @property integer $id_point_vente | |||
* @property integer $livraison | |||
*/ | |||
class ProductionPointVente extends \yii\db\ActiveRecord | |||
{ | |||
var $productions_point_vente; | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'production_point_vente'; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function rules() | |||
{ | |||
return [ | |||
[['id_production', 'id_point_vente'], 'required'], | |||
[['id_production', 'id_point_vente', 'livraison'], 'integer'], | |||
]; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function attributeLabels() | |||
{ | |||
return [ | |||
'id_production' => 'Id Production', | |||
'id_point_vente' => 'Id Point Vente', | |||
'livraison' => 'Livraison', | |||
]; | |||
} | |||
/* | |||
* Relations | |||
*/ | |||
public function getProduction() | |||
{ | |||
return $this->hasOne(Production::className(), ['id' => 'id_production']); | |||
} | |||
public function getPointVente() | |||
{ | |||
return $this->hasOne(PointVente::className(), ['id' => 'id_point_vente']); | |||
} | |||
/** | |||
* Définit les jours de livraisons des points de vente pour un jour de | |||
* production donné. | |||
* | |||
* @param integer $id_production | |||
* @param boolean $bool_livraison | |||
*/ | |||
public static function setAll($id_production, $bool_livraison) | |||
{ | |||
$count_productions_point_vente = self::find()-> | |||
where([ | |||
'id_production' => $id_production | |||
]) | |||
->count(); | |||
if (!$count_productions_point_vente) { | |||
$points_vente = PointVente::find() | |||
->where(['id_etablissement' => Yii::$app->user->identity->id_etablissement]) | |||
->all(); | |||
foreach ($points_vente as $pv) { | |||
$production_pv = new ProductionPointVente(); | |||
$production_pv->id_production = $id_production; | |||
$production_pv->id_point_vente = $pv->id; | |||
$production_pv->save(); | |||
} | |||
} | |||
$production = Production::findOne($id_production); | |||
if ($production) { | |||
$jour = date('N', strtotime($production->date)); | |||
$productions_point_vente = self::find() | |||
->with(['production', 'pointVente']) | |||
->where([ | |||
'id_production' => $id_production | |||
]) | |||
->all(); | |||
foreach ($productions_point_vente as $production_pv) { | |||
if ($bool_livraison && | |||
( ($jour == 1 && $production_pv->pointVente->livraison_lundi) || | |||
($jour == 2 && $production_pv->pointVente->livraison_mardi) || | |||
($jour == 3 && $production_pv->pointVente->livraison_mercredi) || | |||
($jour == 4 && $production_pv->pointVente->livraison_jeudi) || | |||
($jour == 5 && $production_pv->pointVente->livraison_vendredi) || | |||
($jour == 6 && $production_pv->pointVente->livraison_samedi) || | |||
($jour == 7 && $production_pv->pointVente->livraison_dimanche) || | |||
$production_pv->pointVente->point_fabrication | |||
)) { | |||
$production_pv->livraison = 1; | |||
} else { | |||
$production_pv->livraison = 0; | |||
} | |||
$production_pv->save(); | |||
} | |||
} | |||
} | |||
} |