|
|
@@ -1,73 +1,73 @@ |
|
|
|
<?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. |
|
|
|
* 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 common\models\Product; |
|
|
|
use common\models\User ; |
|
|
|
use common\models\Document ; |
|
|
|
use common\helpers\GlobalParam ; |
|
|
|
use common\models\Order ; |
|
|
|
use common\models\User; |
|
|
|
use common\models\Document; |
|
|
|
use common\helpers\GlobalParam; |
|
|
|
use common\models\Order; |
|
|
|
use yii\base\UserException; |
|
|
|
|
|
|
|
class DocumentController extends BackendController |
|
|
|
{ |
|
|
|
public function behaviors() |
|
|
|
public function behaviors() |
|
|
|
{ |
|
|
|
return [ |
|
|
|
'verbs' => [ |
|
|
|
'class' => VerbFilter::className(), |
|
|
|
'actions' => [ |
|
|
|
], |
|
|
|
], |
|
|
|
'access' => [ |
|
|
|
'class' => AccessControl::className(), |
|
|
|
'rules' => [ |
|
|
|
[ |
|
|
|
'allow' => true, |
|
|
|
'roles' => ['@'], |
|
|
|
'matchCallback' => function ($rule, $action) { |
|
|
|
return User::hasAccessBackend(); |
|
|
|
} |
|
|
|
] |
|
|
|
], |
|
|
|
], |
|
|
|
]; |
|
|
|
return [ |
|
|
|
'verbs' => [ |
|
|
|
'class' => VerbFilter::className(), |
|
|
|
'actions' => [ |
|
|
|
], |
|
|
|
], |
|
|
|
'access' => [ |
|
|
|
'class' => AccessControl::className(), |
|
|
|
'rules' => [ |
|
|
|
[ |
|
|
|
'allow' => true, |
|
|
|
'roles' => ['@'], |
|
|
|
'matchCallback' => function ($rule, $action) { |
|
|
|
return User::hasAccessBackend(); |
|
|
|
} |
|
|
|
] |
|
|
|
], |
|
|
|
], |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
public function actionCreate() |
|
|
@@ -76,18 +76,17 @@ class DocumentController extends BackendController |
|
|
|
$model = new $class(); |
|
|
|
|
|
|
|
if ($model->load(Yii::$app->request->post())) { |
|
|
|
|
|
|
|
$model->id_producer = GlobalParam::getCurrentProducerId() ; |
|
|
|
|
|
|
|
if($model->save()) { |
|
|
|
|
|
|
|
$model->id_producer = GlobalParam::getCurrentProducerId(); |
|
|
|
|
|
|
|
if ($model->save()) { |
|
|
|
Yii::$app->getSession()->setFlash('success', $this->getFlashMessage('create', $model)); |
|
|
|
return $this->redirect(['/'.$model->getControllerUrlPath().'/update', 'id' => $model->id]); |
|
|
|
} |
|
|
|
else { |
|
|
|
return $this->redirect(['/' . $model->getControllerUrlPath() . '/update', 'id' => $model->id]); |
|
|
|
} else { |
|
|
|
Yii::$app->getSession()->setFlash('error', 'Un problème est survenu lors de la création du document.'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $this->render('/document/create', [ |
|
|
|
'title' => $this->getTitle('Ajouter'), |
|
|
|
'typeDocument' => $this->getDocumentType(), |
|
|
@@ -98,20 +97,20 @@ class DocumentController extends BackendController |
|
|
|
/** |
|
|
|
* Modifie un modèle Produit existant. |
|
|
|
* Si la modification réussit, le navigateur est redirigé vers la page 'index'. |
|
|
|
* |
|
|
|
* |
|
|
|
* @param integer $id |
|
|
|
* @return mixed |
|
|
|
*/ |
|
|
|
public function actionUpdate($id) |
|
|
|
{ |
|
|
|
$model = $this->findModel($id) ; |
|
|
|
|
|
|
|
$model = $this->findModel($id); |
|
|
|
|
|
|
|
$class = $this->getClass(); |
|
|
|
$model = $class::searchOne([ |
|
|
|
'id' => $id |
|
|
|
]) ; |
|
|
|
'id' => $id |
|
|
|
]); |
|
|
|
|
|
|
|
if($model->isStatusValid()) { |
|
|
|
if ($model->isStatusValid()) { |
|
|
|
throw new UserException('Vous ne pouvez pas modifier un document validé.'); |
|
|
|
} |
|
|
|
|
|
|
@@ -119,7 +118,7 @@ class DocumentController extends BackendController |
|
|
|
|
|
|
|
Yii::$app->getSession()->setFlash('success', $this->getFlashMessage('update', $model)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $this->render('/document/update', [ |
|
|
|
'title' => $this->getTitle('Modifier'), |
|
|
|
'typeDocument' => $this->getDocumentType(), |
|
|
@@ -127,151 +126,152 @@ class DocumentController extends BackendController |
|
|
|
]); |
|
|
|
} |
|
|
|
|
|
|
|
public function actionAjaxAddressUser($idUser) |
|
|
|
public function actionAjaxAddressUser($idUser) |
|
|
|
{ |
|
|
|
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; |
|
|
|
|
|
|
|
if($idUser > 0) { |
|
|
|
|
|
|
|
if ($idUser > 0) { |
|
|
|
$user = User::findOne($idUser); |
|
|
|
|
|
|
|
if($user) { |
|
|
|
$address = $user['lastname'].' '.$user['name']."\n" ; |
|
|
|
$address .= $user['address'] ; |
|
|
|
|
|
|
|
|
|
|
|
if ($user) { |
|
|
|
$address = $user['lastname'] . ' ' . $user['name'] . "\n"; |
|
|
|
$address .= $user['address']; |
|
|
|
|
|
|
|
return [ |
|
|
|
'return' => 'success', |
|
|
|
'address' => $address |
|
|
|
] ; |
|
|
|
'return' => 'success', |
|
|
|
'address' => $address |
|
|
|
]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return ['return' => 'error'] ; |
|
|
|
|
|
|
|
return ['return' => 'error']; |
|
|
|
} |
|
|
|
|
|
|
|
public function actionAjaxValidateDocument($idDocument, $classDocument) |
|
|
|
{ |
|
|
|
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; |
|
|
|
|
|
|
|
if($idDocument > 0 && Document::isValidClass($classDocument)) { |
|
|
|
if ($idDocument > 0 && Document::isValidClass($classDocument)) { |
|
|
|
$document = $classDocument::searchOne([ |
|
|
|
'id' => $idDocument |
|
|
|
]) ; |
|
|
|
]); |
|
|
|
|
|
|
|
if($document) { |
|
|
|
$document->changeStatus(Document::STATUS_VALID) ; |
|
|
|
$document->save() ; |
|
|
|
return ['return' => 'success'] ; |
|
|
|
if ($document) { |
|
|
|
$document->changeStatus(Document::STATUS_VALID); |
|
|
|
$document->save(); |
|
|
|
return ['return' => 'success']; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return ['return' => 'error'] ; |
|
|
|
return ['return' => 'error']; |
|
|
|
} |
|
|
|
|
|
|
|
public function actionAjaxInit($idDocument, $classDocument) |
|
|
|
|
|
|
|
public function actionAjaxInit($idDocument, $classDocument) |
|
|
|
{ |
|
|
|
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; |
|
|
|
|
|
|
|
if($idDocument > 0 && Document::isValidClass($classDocument)) { |
|
|
|
|
|
|
|
|
|
|
|
if ($idDocument > 0 && Document::isValidClass($classDocument)) { |
|
|
|
|
|
|
|
$document = $classDocument::searchOne([ |
|
|
|
'id' => $idDocument |
|
|
|
]) ; |
|
|
|
|
|
|
|
if($document) { |
|
|
|
|
|
|
|
$productsArray = Product::searchAll() ; |
|
|
|
|
|
|
|
$ordersArray = [] ; |
|
|
|
foreach($document->orders as $order) { |
|
|
|
$order->init() ; |
|
|
|
$productsOrderArray = [] ; |
|
|
|
foreach($order->productOrder as $productOrder) { |
|
|
|
$productsOrderArray[$productOrder->id] = $productOrder->getAttributes() ; |
|
|
|
'id' => $idDocument |
|
|
|
]); |
|
|
|
|
|
|
|
if ($document) { |
|
|
|
|
|
|
|
$productsArray = Product::searchAll(); |
|
|
|
|
|
|
|
$ordersArray = []; |
|
|
|
foreach ($document->orders as $order) { |
|
|
|
$order->init(); |
|
|
|
$productsOrderArray = []; |
|
|
|
foreach ($order->productOrder as $productOrder) { |
|
|
|
$productsOrderArray[$productOrder->id] = $productOrder->getAttributes(); |
|
|
|
} |
|
|
|
$ordersArray[$order->id] = array_merge( |
|
|
|
$order->getAttributes(), |
|
|
|
[ |
|
|
|
'productOrder' => $productsOrderArray, |
|
|
|
'productOrder' => $productsOrderArray, |
|
|
|
] |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
'return' => 'success', |
|
|
|
'document' => array_merge($document->getAttributes(), [ |
|
|
|
'html_label' => $document->getHtmlLabel(), |
|
|
|
'class' => $document->getClass() |
|
|
|
]), |
|
|
|
'idUser' => $document->user->id, |
|
|
|
'products' => ArrayHelper::map($productsArray, 'id', function($product) { |
|
|
|
return array_merge($product->getAttributes(),[ |
|
|
|
'price_with_tax' => $product->price_with_tax, |
|
|
|
'wording_unit' => $product->wording_unit, |
|
|
|
]) ; |
|
|
|
}), |
|
|
|
'orders' => $ordersArray, |
|
|
|
'total' => $document->getAmount(Order::AMOUNT_TOTAL) |
|
|
|
] ; |
|
|
|
'return' => 'success', |
|
|
|
'document' => array_merge($document->getAttributes(), [ |
|
|
|
'html_label' => $document->getHtmlLabel(), |
|
|
|
'class' => $document->getClass() |
|
|
|
]), |
|
|
|
'idUser' => $document->user->id, |
|
|
|
'products' => ArrayHelper::map($productsArray, 'id', function ($product) { |
|
|
|
return array_merge($product->getAttributes(), [ |
|
|
|
'price_with_tax' => $product->price_with_tax, |
|
|
|
'wording_unit' => $product->wording_unit, |
|
|
|
'tax_rate' => $product->taxRate->value |
|
|
|
]); |
|
|
|
}), |
|
|
|
'orders' => $ordersArray, |
|
|
|
'total' => $document->getAmount(Order::AMOUNT_TOTAL), |
|
|
|
'total_with_tax' => $document->getAmountWithTax(Order::AMOUNT_TOTAL), |
|
|
|
]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return ['return' => 'error'] ; |
|
|
|
|
|
|
|
return ['return' => 'error']; |
|
|
|
} |
|
|
|
|
|
|
|
public function actionAjaxAddProduct($idDocument, $classDocument, $idProduct, $quantity, $price) |
|
|
|
|
|
|
|
public function actionAjaxAddProduct($idDocument, $classDocument, $idProduct, $quantity, $price) |
|
|
|
{ |
|
|
|
|
|
|
|
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; |
|
|
|
|
|
|
|
if(Document::isValidClass($classDocument)) { |
|
|
|
|
|
|
|
if (Document::isValidClass($classDocument)) { |
|
|
|
$document = $classDocument::searchOne([ |
|
|
|
'id' => $idDocument |
|
|
|
]) ; |
|
|
|
'id' => $idDocument |
|
|
|
]); |
|
|
|
$product = Product::searchOne([ |
|
|
|
'id' => $idProduct |
|
|
|
]) ; |
|
|
|
|
|
|
|
if($document && $product) { |
|
|
|
if(count($document->orders) == 0) { |
|
|
|
$order = new Order ; |
|
|
|
$order->id_user = $document->id_user ; |
|
|
|
$order->id_point_sale = null ; |
|
|
|
$order->id_distribution = null ; |
|
|
|
$order->origin = Order::ORIGIN_ADMIN ; |
|
|
|
'id' => $idProduct |
|
|
|
]); |
|
|
|
|
|
|
|
if ($document && $product) { |
|
|
|
if (count($document->orders) == 0) { |
|
|
|
$order = new Order; |
|
|
|
$order->id_user = $document->id_user; |
|
|
|
$order->id_point_sale = null; |
|
|
|
$order->id_distribution = null; |
|
|
|
$order->origin = Order::ORIGIN_ADMIN; |
|
|
|
$order->date = date('Y-m-d H:i:s'); |
|
|
|
$fieldIdDocument = 'id_'.$classDocument::tableName() ; |
|
|
|
$order->$fieldIdDocument = $document->id ; |
|
|
|
$order->save() ; |
|
|
|
} |
|
|
|
else { |
|
|
|
$order = $document->orders[0] ; |
|
|
|
$fieldIdDocument = 'id_' . $classDocument::tableName(); |
|
|
|
$order->$fieldIdDocument = $document->id; |
|
|
|
$order->save(); |
|
|
|
} else { |
|
|
|
$order = $document->orders[0]; |
|
|
|
} |
|
|
|
|
|
|
|
if($order) { |
|
|
|
|
|
|
|
$productOrder = new ProductOrder ; |
|
|
|
$productOrder->id_order = $order->id ; |
|
|
|
$productOrder->id_product = $idProduct ; |
|
|
|
if ($order) { |
|
|
|
|
|
|
|
$productOrder = new ProductOrder; |
|
|
|
$productOrder->id_order = $order->id; |
|
|
|
$productOrder->id_product = $idProduct; |
|
|
|
$quantity = $quantity / Product::$unitsArray[$product->unit]['coefficient']; |
|
|
|
$productOrder->quantity = $quantity ; |
|
|
|
$productOrder->price = (float) $price ; |
|
|
|
$productOrder->unit = $product->unit ; |
|
|
|
$productOrder->step = $product->step ; |
|
|
|
$productOrder->quantity = $quantity; |
|
|
|
$productOrder->price = (float)$price; |
|
|
|
$productOrder->unit = $product->unit; |
|
|
|
$productOrder->step = $product->step; |
|
|
|
$productOrder->id_tax_rate = $productOrder->id_tax_rate ? |
|
|
|
$product->taxRate->id : GlobalParam::getCurrentProducer()->taxRate->id ; |
|
|
|
$productOrder->save() ; |
|
|
|
|
|
|
|
$product->taxRate->id : GlobalParam::getCurrentProducer()->taxRate->id; |
|
|
|
$productOrder->save(); |
|
|
|
|
|
|
|
return [ |
|
|
|
'return' => 'success', |
|
|
|
] ; |
|
|
|
} |
|
|
|
]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
'return' => 'error' |
|
|
|
] ; |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
public function actionAjaxDeleteProductOrder($idProductOrder) |
|
|
@@ -280,74 +280,71 @@ class DocumentController extends BackendController |
|
|
|
|
|
|
|
$productOrder = ProductOrder::searchOne([ |
|
|
|
'id' => $idProductOrder |
|
|
|
]) ; |
|
|
|
]); |
|
|
|
|
|
|
|
if($productOrder) { |
|
|
|
$productOrder->delete() ; |
|
|
|
if ($productOrder) { |
|
|
|
$productOrder->delete(); |
|
|
|
return [ |
|
|
|
'return' => 'success' |
|
|
|
] ; |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
return [ |
|
|
|
'return' => 'error' |
|
|
|
] ; |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected function getClass() |
|
|
|
{ |
|
|
|
$class = get_class($this); |
|
|
|
$class = str_replace('Controller', '', $class) ; |
|
|
|
$class = str_replace('backend\controllers\\', '', $class) ; |
|
|
|
return $class ; |
|
|
|
$class = str_replace('Controller', '', $class); |
|
|
|
$class = str_replace('backend\controllers\\', '', $class); |
|
|
|
return $class; |
|
|
|
} |
|
|
|
|
|
|
|
protected function getDocumentType() |
|
|
|
|
|
|
|
protected function getDocumentType() |
|
|
|
{ |
|
|
|
$class = $this->getClass(); |
|
|
|
|
|
|
|
if($class == 'Invoice') { |
|
|
|
$documentType = 'Facture' ; |
|
|
|
} |
|
|
|
elseif($class == 'DeliveryNote') { |
|
|
|
$documentType = 'Bon de livraison' ; |
|
|
|
} |
|
|
|
elseif($class == 'Quotation') { |
|
|
|
$documentType = 'Devis' ; |
|
|
|
$class = $this->getClass(); |
|
|
|
|
|
|
|
if ($class == 'Invoice') { |
|
|
|
$documentType = 'Facture'; |
|
|
|
} elseif ($class == 'DeliveryNote') { |
|
|
|
$documentType = 'Bon de livraison'; |
|
|
|
} elseif ($class == 'Quotation') { |
|
|
|
$documentType = 'Devis'; |
|
|
|
} |
|
|
|
|
|
|
|
if(isset($documentType)) { |
|
|
|
return $documentType ; |
|
|
|
|
|
|
|
if (isset($documentType)) { |
|
|
|
return $documentType; |
|
|
|
} |
|
|
|
|
|
|
|
return '' ; |
|
|
|
|
|
|
|
return ''; |
|
|
|
} |
|
|
|
|
|
|
|
public function getFlashMessage($type = 'create', $model) |
|
|
|
|
|
|
|
public function getFlashMessage($type = 'create', $model) |
|
|
|
{ |
|
|
|
$class = $this->getClass(); |
|
|
|
|
|
|
|
$message = $this->getDocumentType() ; |
|
|
|
$message .= ' <strong>'.Html::encode($model->name).'</strong> ' ; |
|
|
|
|
|
|
|
if($type == 'create') { |
|
|
|
$message .= 'ajouté' ; |
|
|
|
} |
|
|
|
elseif($type == 'update') { |
|
|
|
$message .= 'modifié' ; |
|
|
|
|
|
|
|
$message = $this->getDocumentType(); |
|
|
|
$message .= ' <strong>' . Html::encode($model->name) . '</strong> '; |
|
|
|
|
|
|
|
if ($type == 'create') { |
|
|
|
$message .= 'ajouté'; |
|
|
|
} elseif ($type == 'update') { |
|
|
|
$message .= 'modifié'; |
|
|
|
} |
|
|
|
|
|
|
|
if($class == 'Invoice') { |
|
|
|
$message .= 'e' ; |
|
|
|
|
|
|
|
if ($class == 'Invoice') { |
|
|
|
$message .= 'e'; |
|
|
|
} |
|
|
|
|
|
|
|
return $message ; |
|
|
|
|
|
|
|
return $message; |
|
|
|
} |
|
|
|
|
|
|
|
protected function getTitle($prepend) |
|
|
|
{ |
|
|
|
$class = $this->getClass(); |
|
|
|
|
|
|
|
|
|
|
|
switch ($class) { |
|
|
|
case 'Invoice' : |
|
|
|
$title = $prepend . ' une facture'; |
|
|
@@ -365,15 +362,15 @@ class DocumentController extends BackendController |
|
|
|
|
|
|
|
/** |
|
|
|
* Recherche un Document en fonction de son ID. |
|
|
|
* |
|
|
|
* |
|
|
|
* @param integer $id |
|
|
|
* @return Produit |
|
|
|
* @return Produit |
|
|
|
* @throws NotFoundHttpException si le modèle n'est pas trouvé |
|
|
|
*/ |
|
|
|
protected function findModel($id) |
|
|
|
{ |
|
|
|
$class = $this->getClass() ; |
|
|
|
|
|
|
|
$class = $this->getClass(); |
|
|
|
|
|
|
|
if (($model = $class::findOne($id)) !== null) { |
|
|
|
return $model; |
|
|
|
} else { |