@@ -179,7 +179,7 @@ $this->addButton( | |||
'<span class="glyphicon glyphicon-pencil"></span>', | |||
$url, | |||
[ | |||
'title' => Yii::t('app', 'Modifier'), | |||
'title' => 'Modifier', | |||
'class' => 'btn btn-default' | |||
] | |||
); | |||
@@ -189,7 +189,7 @@ $this->addButton( | |||
'<span class="glyphicon glyphicon-trash"></span>', | |||
$url, | |||
[ | |||
'title' => Yii::t('app', 'Supprimer'), | |||
'title' => 'Supprimer', | |||
'class' => 'btn btn-default' | |||
] | |||
); |
@@ -210,7 +210,7 @@ $this->addButton(['label' => 'Nouveau producteur <span class="glyphicon glyphico | |||
'<span class="glyphicon glyphicon-pencil"></span>', | |||
$url, | |||
[ | |||
'title' => Yii::t('app', 'Modifier'), | |||
'title' => 'Modifier', | |||
'class' => 'btn btn-default' | |||
] | |||
); |
@@ -80,12 +80,12 @@ $this->addButton(['label' => 'Nouvelle tranche de prix <span class="glyphicon gl | |||
'buttons' => [ | |||
'update' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ | |||
'title' => Yii::t('app', 'Modifier'), 'class' => 'btn btn-default' | |||
'title' => 'Modifier', 'class' => 'btn btn-default' | |||
]); | |||
}, | |||
'delete' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [ | |||
'title' => Yii::t('app', 'Supprimer'), 'class' => 'btn btn-default' | |||
'title' => 'Supprimer', 'class' => 'btn btn-default' | |||
]); | |||
} | |||
], |
@@ -69,12 +69,12 @@ $this->addButton(['label' => 'Nouvelle catégorie <span class="glyphicon glyphic | |||
'buttons' => [ | |||
'update' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ | |||
'title' => Yii::t('app', 'Modifier'), 'class' => 'btn btn-default' | |||
'title' => 'Modifier', 'class' => 'btn btn-default' | |||
]); | |||
}, | |||
'delete' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [ | |||
'title' => Yii::t('app', 'Supprimer'), 'class' => 'btn btn-default' | |||
'title' => 'Supprimer', 'class' => 'btn btn-default' | |||
]); | |||
} | |||
], |
@@ -150,12 +150,12 @@ $this->addButton(['label' => 'Nouveau produit <span class="glyphicon glyphicon-p | |||
'buttons' => [ | |||
'update' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ | |||
'title' => Yii::t('app', 'Modifier'), 'class' => 'btn btn-default' | |||
'title' => 'Modifier', 'class' => 'btn btn-default' | |||
]); | |||
}, | |||
'delete' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [ | |||
'title' => Yii::t('app', 'Supprimer'), 'class' => 'btn btn-default' | |||
'title' => 'Supprimer', 'class' => 'btn btn-default' | |||
]); | |||
} | |||
], |
@@ -218,12 +218,12 @@ $subscriptionsArray = Subscription::searchAll() ; | |||
'buttons' => [ | |||
'update' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ | |||
'title' => Yii::t('app', 'Modifier'), 'class' => 'btn btn-default' | |||
'title' => 'Modifier', 'class' => 'btn btn-default' | |||
]); | |||
}, | |||
'delete' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [ | |||
'title' => Yii::t('app', 'Supprimer'), 'class' => 'btn btn-default' | |||
'title' => 'Supprimer', 'class' => 'btn btn-default' | |||
]); | |||
} | |||
], |
@@ -66,12 +66,12 @@ $this->addButton(['label' => 'Nouvelle taxe <span class="glyphicon glyphicon-plu | |||
'buttons' => [ | |||
'update' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ | |||
'title' => Yii::t('app', 'Modifier'), 'class' => 'btn btn-default' | |||
'title' => 'Modifier', 'class' => 'btn btn-default' | |||
]); | |||
}, | |||
'delete' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [ | |||
'title' => Yii::t('app', 'Supprimer'), 'class' => 'btn btn-default' | |||
'title' => 'Supprimer', 'class' => 'btn btn-default' | |||
]); | |||
} | |||
], |
@@ -60,12 +60,12 @@ $this->addButton(['label' => 'Nouveau groupe d\'utilisateur <span class="glyphic | |||
'buttons' => [ | |||
'update' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ | |||
'title' => Yii::t('app', 'Modifier'), 'class' => 'btn btn-default' | |||
'title' => 'Modifier', 'class' => 'btn btn-default' | |||
]); | |||
}, | |||
'delete' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [ | |||
'title' => Yii::t('app', 'Supprimer'), 'class' => 'btn btn-default' | |||
'title' => 'Supprimer', 'class' => 'btn btn-default' | |||
]); | |||
} | |||
], |
@@ -114,7 +114,7 @@ $this->render('_menu', [ | |||
$html = ''; | |||
if ($countOrders) { | |||
$html .= Html::a('<span class="glyphicon glyphicon-eye-open"></span> ' . $countOrders, $url, [ | |||
'title' => Yii::t('app', 'Commandes'), 'class' => 'btn btn-default ' | |||
'title' => 'Commandes', 'class' => 'btn btn-default ' | |||
]);; | |||
} else { | |||
$html .= 'Aucune commande'; | |||
@@ -161,12 +161,12 @@ $this->render('_menu', [ | |||
$url = Yii::$app->urlManager->createUrl(['user/update', 'id' => $model->id]); | |||
$user = User::find()->with('userProducer')->where(['id' => $model->id])->one(); | |||
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ | |||
'title' => Yii::t('app', 'Modifier'), 'class' => 'btn btn-default' | |||
'title' => 'Modifier', 'class' => 'btn btn-default' | |||
]); | |||
}, | |||
'delete' => function ($url, $model) { | |||
return Html::a('<span class="glyphicon glyphicon-trash"></span>', Yii::$app->urlManager->createUrl(array_merge(['user/delete', 'id' => $model->id], Yii::$app->getRequest()->getQueryParams())), [ | |||
'title' => Yii::t('app', 'Supprimer'), 'class' => 'btn btn-default btn-confirm-delete' | |||
'title' => 'Supprimer', 'class' => 'btn btn-default btn-confirm-delete' | |||
]); | |||
} | |||
], |
@@ -95,7 +95,7 @@ $this->addBreadcrumb('Commandes'); | |||
'update' => function ($url, $model) { | |||
$url = Yii::$app->urlManager->createUrl(['distribution/index', 'idOrderUpdate' => $model->id]); | |||
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ | |||
'title' => Yii::t('app', 'Modifier'), 'class' => 'btn btn-default' | |||
'title' => 'Modifier', 'class' => 'btn btn-default' | |||
]); | |||
}, | |||
], |
@@ -1,40 +1,40 @@ | |||
<?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 common\models; | |||
@@ -58,67 +58,75 @@ use Yii; | |||
class DeliveryNote extends Document | |||
{ | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'delivery_note'; | |||
} | |||
/* | |||
* Relations | |||
*/ | |||
public function getOrders() | |||
{ | |||
return $this->relationOrders('id_delivery_note') ; | |||
} | |||
/** | |||
* Retourne les options de base nécessaires à la fonction de recherche. | |||
* | |||
* @return array | |||
*/ | |||
public static function defaultOptionsSearch() | |||
{ | |||
return [ | |||
'with' => [], | |||
'join_with' => ['user AS user_delivery_note', 'producer'], | |||
'orderby' => 'date ASC', | |||
'attribute_id_producer' => 'delivery_note.id_producer' | |||
]; | |||
} | |||
public function getInvoiceId() | |||
{ | |||
if($this->orders && count($this->orders) > 0) { | |||
foreach($this->orders as $order) { | |||
if($order->id_invoice) { | |||
return $order->id_invoice; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'delivery_note'; | |||
} | |||
public function rules() | |||
{ | |||
$rules = parent::rules(); | |||
$rules[] = ['ignore_when_billing', 'boolean']; | |||
return $rules; | |||
} | |||
/* | |||
* Relations | |||
*/ | |||
public function getOrders() | |||
{ | |||
return $this->relationOrders('id_delivery_note'); | |||
} | |||
/** | |||
* Retourne les options de base nécessaires à la fonction de recherche. | |||
* | |||
* @return array | |||
*/ | |||
public static function defaultOptionsSearch() | |||
{ | |||
return [ | |||
'with' => [], | |||
'join_with' => ['user AS user_delivery_note', 'producer'], | |||
'orderby' => 'date ASC', | |||
'attribute_id_producer' => 'delivery_note.id_producer' | |||
]; | |||
} | |||
public function getInvoiceId() | |||
{ | |||
if ($this->orders && count($this->orders) > 0) { | |||
foreach ($this->orders as $order) { | |||
if ($order->id_invoice) { | |||
return $order->id_invoice; | |||
} | |||
} | |||
return false; | |||
} | |||
public function isInvoiced() | |||
{ | |||
return (bool) $this->getInvoiceId(); | |||
} | |||
return false; | |||
} | |||
public function getInvoice() | |||
{ | |||
$invoice = null; | |||
$idInvoice = $this->getInvoiceId(); | |||
public function isInvoiced() | |||
{ | |||
return (bool)$this->getInvoiceId(); | |||
} | |||
if($idInvoice) { | |||
$invoice = Invoice::searchOne([ | |||
'id' => $idInvoice | |||
]); | |||
} | |||
public function getInvoice() | |||
{ | |||
$invoice = null; | |||
$idInvoice = $this->getInvoiceId(); | |||
return $invoice; | |||
if ($idInvoice) { | |||
$invoice = Invoice::searchOne([ | |||
'id' => $idInvoice | |||
]); | |||
} | |||
return $invoice; | |||
} | |||
} |
@@ -67,7 +67,7 @@ class Document extends ActiveRecordCommon | |||
[['date'], 'safe'], | |||
[['comment', 'address', 'tax_calculation_method'], 'string'], | |||
[['id_user', 'id_producer'], 'integer'], | |||
[['is_sent', 'ignore_when_billing'], 'boolean'], | |||
[['is_sent'], 'boolean'], | |||
[['name', 'reference', 'status'], 'string', 'max' => 255], | |||
[['deliveryNotes'], 'safe'] | |||
]; | |||
@@ -145,8 +145,8 @@ class Document extends ActiveRecordCommon | |||
}*/ | |||
// Méthode de calcul via getProductOrders() | |||
foreach($this->getProductsOrders() as $productOrderArray) { | |||
foreach($productOrderArray as $productOrder) { | |||
foreach ($this->getProductsOrders() as $productOrderArray) { | |||
foreach ($productOrderArray as $productOrder) { | |||
$priceLine = $productOrder->getPriceByTypeTotal($type) * $productOrder->quantity; | |||
$amount += $priceLine; | |||
$totalVat += Price::getVat($priceLine, $productOrder->taxRate->value, $this->tax_calculation_method); | |||
@@ -186,7 +186,7 @@ class Document extends ActiveRecordCommon | |||
}*/ | |||
// Méthode de calcul via getProductOrders() | |||
foreach($this->getProductsOrders() as $productOrderArray) { | |||
foreach ($this->getProductsOrders() as $productOrderArray) { | |||
foreach ($productOrderArray as $productOrder) { | |||
$idTaxRate = $productOrder->taxRate->id; | |||
@@ -434,8 +434,8 @@ class Document extends ActiveRecordCommon | |||
$productOrderMatch = false; | |||
foreach ($productsOrdersArray[$indexProductOrder] as &$theProductOrder) { | |||
if ($theProductOrder->unit == $productOrder->unit | |||
&& $theProductOrder->price == $productOrder->price | |||
&& $theProductOrder->invoice_price == $productOrder->invoice_price) { | |||
&& $theProductOrder->price == $productOrder->price | |||
&& $theProductOrder->invoice_price == $productOrder->invoice_price) { | |||
$theProductOrder->quantity += $productOrder->quantity; | |||
$productOrderMatch = true; | |||
@@ -483,11 +483,10 @@ class Document extends ActiveRecordCommon | |||
{ | |||
$filename = $this->getType() . '-'; | |||
if($this->isStatusValid()) { | |||
if ($this->isStatusValid()) { | |||
$filename .= $this->reference; | |||
} | |||
elseif($this->isStatusDraft()) { | |||
$filename .= 'Brouillon-'.$this->id; | |||
} elseif ($this->isStatusDraft()) { | |||
$filename .= 'Brouillon-' . $this->id; | |||
} | |||
$filename .= '.pdf'; |
@@ -1,40 +1,40 @@ | |||
<?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 common\models; | |||
@@ -57,38 +57,38 @@ use Yii; | |||
class Invoice extends Document | |||
{ | |||
public $deliveryNotes ; | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'invoice'; | |||
} | |||
/* | |||
* Relations | |||
*/ | |||
public function getOrders() | |||
{ | |||
return $this->relationOrders('id_invoice') ; | |||
} | |||
/** | |||
* Retourne les options de base nécessaires à la fonction de recherche. | |||
* | |||
* @return array | |||
*/ | |||
public static function defaultOptionsSearch() | |||
{ | |||
return [ | |||
'with' => [], | |||
'join_with' => ['user AS user_invoice', 'producer'], | |||
'orderby' => 'date ASC', | |||
'attribute_id_producer' => 'invoice.id_producer' | |||
]; | |||
} | |||
public $deliveryNotes; | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public static function tableName() | |||
{ | |||
return 'invoice'; | |||
} | |||
/* | |||
* Relations | |||
*/ | |||
public function getOrders() | |||
{ | |||
return $this->relationOrders('id_invoice'); | |||
} | |||
/** | |||
* Retourne les options de base nécessaires à la fonction de recherche. | |||
* | |||
* @return array | |||
*/ | |||
public static function defaultOptionsSearch() | |||
{ | |||
return [ | |||
'with' => [], | |||
'join_with' => ['user AS user_invoice', 'producer'], | |||
'orderby' => 'date ASC', | |||
'attribute_id_producer' => 'invoice.id_producer' | |||
]; | |||
} | |||
} |