<?php | <?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; | namespace common\models; | ||||
class DeliveryNote extends Document | 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; | |||||
} | |||||
} | } |
[['date'], 'safe'], | [['date'], 'safe'], | ||||
[['comment', 'address', 'tax_calculation_method'], 'string'], | [['comment', 'address', 'tax_calculation_method'], 'string'], | ||||
[['id_user', 'id_producer'], 'integer'], | [['id_user', 'id_producer'], 'integer'], | ||||
[['is_sent', 'ignore_when_billing'], 'boolean'], | |||||
[['is_sent'], 'boolean'], | |||||
[['name', 'reference', 'status'], 'string', 'max' => 255], | [['name', 'reference', 'status'], 'string', 'max' => 255], | ||||
[['deliveryNotes'], 'safe'] | [['deliveryNotes'], 'safe'] | ||||
]; | ]; | ||||
}*/ | }*/ | ||||
// Méthode de calcul via getProductOrders() | // 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; | $priceLine = $productOrder->getPriceByTypeTotal($type) * $productOrder->quantity; | ||||
$amount += $priceLine; | $amount += $priceLine; | ||||
$totalVat += Price::getVat($priceLine, $productOrder->taxRate->value, $this->tax_calculation_method); | $totalVat += Price::getVat($priceLine, $productOrder->taxRate->value, $this->tax_calculation_method); | ||||
}*/ | }*/ | ||||
// Méthode de calcul via getProductOrders() | // Méthode de calcul via getProductOrders() | ||||
foreach($this->getProductsOrders() as $productOrderArray) { | |||||
foreach ($this->getProductsOrders() as $productOrderArray) { | |||||
foreach ($productOrderArray as $productOrder) { | foreach ($productOrderArray as $productOrder) { | ||||
$idTaxRate = $productOrder->taxRate->id; | $idTaxRate = $productOrder->taxRate->id; | ||||
$productOrderMatch = false; | $productOrderMatch = false; | ||||
foreach ($productsOrdersArray[$indexProductOrder] as &$theProductOrder) { | foreach ($productsOrdersArray[$indexProductOrder] as &$theProductOrder) { | ||||
if ($theProductOrder->unit == $productOrder->unit | 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; | $theProductOrder->quantity += $productOrder->quantity; | ||||
$productOrderMatch = true; | $productOrderMatch = true; | ||||
{ | { | ||||
$filename = $this->getType() . '-'; | $filename = $this->getType() . '-'; | ||||
if($this->isStatusValid()) { | |||||
if ($this->isStatusValid()) { | |||||
$filename .= $this->reference; | $filename .= $this->reference; | ||||
} | |||||
elseif($this->isStatusDraft()) { | |||||
$filename .= 'Brouillon-'.$this->id; | |||||
} elseif ($this->isStatusDraft()) { | |||||
$filename .= 'Brouillon-' . $this->id; | |||||
} | } | ||||
$filename .= '.pdf'; | $filename .= '.pdf'; |
<?php | <?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; | namespace common\models; | ||||
class Invoice extends Document | 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' | |||||
]; | |||||
} | |||||
} | } |