<?php | |||||
namespace backend\controllers; | |||||
use yii\filters\AccessControl; | |||||
use yii\filters\VerbFilter; | |||||
class ProducerInvoiceController 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 actionIndex() | |||||
{ | |||||
$producerCurrent = $this->getProducerCurrent(); | |||||
$invoicesArray = []; | |||||
if($producerCurrent->dolibarr_socid) { | |||||
$invoicesArray = \Yii::$app->dolibarrApi->getInvoices($producerCurrent->dolibarr_socid); | |||||
} | |||||
return $this->render('index', [ | |||||
'invoicesArray' => $invoicesArray | |||||
]); | |||||
} | |||||
public function actionDownload(string $filename) | |||||
{ | |||||
$documentDownload = \Yii::$app->dolibarrApi->downloadInvoice($filename); | |||||
return \Yii::$app->response->sendContentAsFile(base64_decode($documentDownload['content']), $documentDownload['filename'], [ | |||||
'mimeType' => $documentDownload['content-type'] | |||||
]); | |||||
} | |||||
} |
['label' => 'Paramètres', 'icon' => 'cog', 'url' => ['/producer/update'], 'visible' => $isUserCurrentGrantedAsProducer], | ['label' => 'Paramètres', 'icon' => 'cog', 'url' => ['/producer/update'], 'visible' => $isUserCurrentGrantedAsProducer], | ||||
['label' => 'Accès', 'icon' => 'lock', 'url' => ['/access/index'], 'visible' => $isUserCurrentGrantedAsProducer], | ['label' => 'Accès', 'icon' => 'lock', 'url' => ['/access/index'], 'visible' => $isUserCurrentGrantedAsProducer], | ||||
['label' => "Opendistrib", 'options' => ['class' => 'header'], 'visible' => $isUserCurrentGrantedAsProducer], | ['label' => "Opendistrib", 'options' => ['class' => 'header'], 'visible' => $isUserCurrentGrantedAsProducer], | ||||
[ | |||||
'label' => 'Mes factures', | |||||
'icon' => 'clone', | |||||
'url' => ['/producer-invoice/index'], | |||||
'visible' => $isUserCurrentGrantedAsProducer, | |||||
'active' => Yii::$app->controller->id == 'producer-invoice', | |||||
], | |||||
[ | [ | ||||
'label' => 'Développement', | 'label' => 'Développement', | ||||
'icon' => 'code', | 'icon' => 'code', |
<?php | |||||
/** | |||||
Copyright La boîte à pain (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\Price; | |||||
use yii\helpers\Html; | |||||
$this->setTitle('Mes factures') ; | |||||
$this->addBreadcrumb($this->getTitle()) ; | |||||
?> | |||||
<?php if($invoicesArray && count($invoicesArray)): ?> | |||||
<table class="table table-striped table-bordered"> | |||||
<thead> | |||||
<tr> | |||||
<th>Date</th> | |||||
<th>Référence</th> | |||||
<th>Montant</th> | |||||
<th>Statut</th> | |||||
<th>Téléchargement</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
<?php foreach($invoicesArray as $invoice): ?> | |||||
<tr> | |||||
<td><?= date('d/m/Y', $invoice['date']); ?></td> | |||||
<td><?= Html::encode($invoice['ref']); ?></td> | |||||
<td><?= Price::format($invoice['total_ttc']); ?></td> | |||||
<td><?= ($invoice['remaintopay'] > 0) ? '<span class="label label-warning">Impayée</span>' : '<span class="label label-success">Payée</span>'; ?></td> | |||||
<td> | |||||
<a class="btn btn-default" href="<?= $this->getUrlManagerBackend()->createUrl(['producer-invoice/download', 'filename' => str_replace('facture/', '', $invoice['last_main_doc'])]); ?>"> | |||||
<span class="glyphicon glyphicon-download-alt"></span> Télécharger | |||||
</a> | |||||
</td> | |||||
</tr> | |||||
<?php endforeach; ?> | |||||
</tbody> | |||||
</table> | |||||
<?php else: ?> | |||||
<div class="alert alert-info"> | |||||
<span class="glyphicon glyphicon-info-sign"></span> Vous n'avez encore aucune facture. | |||||
</div> | |||||
<?php endif; ?> |
const RESOURCE_PRODUCTS = 'products'; | const RESOURCE_PRODUCTS = 'products'; | ||||
const RESOURCE_DOCUMENTS = 'documents'; | const RESOURCE_DOCUMENTS = 'documents'; | ||||
public function getInvoices(int $idThirdParty) | |||||
{ | |||||
return $this->get(self::RESOURCE_INVOICES, [ | |||||
'sortfield' => 't.rowid', | |||||
'sortorder' => 'DESC', | |||||
'thirdparty_ids' => $idThirdParty, | |||||
'limit' => 24 | |||||
]); | |||||
} | |||||
public function downloadInvoice(string $originalFile) | |||||
{ | |||||
return $this->get(self::RESOURCE_DOCUMENTS.'/download', [ | |||||
'modulepart' => 'facture', | |||||
'original_file' => $originalFile | |||||
]); | |||||
} | |||||
public function createInvoice(int $idUser) | public function createInvoice(int $idUser) | ||||
{ | { | ||||
return $this->post(self::RESOURCE_INVOICES, [ | return $this->post(self::RESOURCE_INVOICES, [ |