You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ProductOrder.php 4.6KB

8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. /**
  3. * Copyright distrib (2018)
  4. *
  5. * contact@opendistrib.net
  6. *
  7. * Ce logiciel est un programme informatique servant à aider les producteurs
  8. * à distribuer leur production en circuits courts.
  9. *
  10. * Ce logiciel est régi par la licence CeCILL soumise au droit français et
  11. * respectant les principes de diffusion des logiciels libres. Vous pouvez
  12. * utiliser, modifier et/ou redistribuer ce programme sous les conditions
  13. * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
  14. * sur le site "http://www.cecill.info".
  15. *
  16. * En contrepartie de l'accessibilité au code source et des droits de copie,
  17. * de modification et de redistribution accordés par cette licence, il n'est
  18. * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
  19. * seule une responsabilité restreinte pèse sur l'auteur du programme, le
  20. * titulaire des droits patrimoniaux et les concédants successifs.
  21. *
  22. * A cet égard l'attention de l'utilisateur est attirée sur les risques
  23. * associés au chargement, à l'utilisation, à la modification et/ou au
  24. * développement et à la reproduction du logiciel par l'utilisateur étant
  25. * donné sa spécificité de logiciel libre, qui peut le rendre complexe à
  26. * manipuler et qui le réserve donc à des développeurs et des professionnels
  27. * avertis possédant des connaissances informatiques approfondies. Les
  28. * utilisateurs sont donc invités à charger et tester l'adéquation du
  29. * logiciel à leurs besoins dans des conditions permettant d'assurer la
  30. * sécurité de leurs systèmes et ou de leurs données et, plus généralement,
  31. * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
  32. *
  33. * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
  34. * pris connaissance de la licence CeCILL, et que vous en avez accepté les
  35. * termes.
  36. */
  37. namespace common\models;
  38. use common\helpers\GlobalParam;
  39. use common\helpers\Price;
  40. use Yii;
  41. use common\components\ActiveRecordCommon;
  42. /**
  43. * This is the model class for table "product_order".
  44. *
  45. * @property integer $id
  46. * @property integer $id_order
  47. * @property integer $id_product
  48. * @property double $quantity
  49. * @property string $unit
  50. */
  51. class ProductOrder extends ActiveRecordCommon
  52. {
  53. /**
  54. * @inheritdoc
  55. */
  56. public static function tableName()
  57. {
  58. return 'product_order';
  59. }
  60. /*
  61. * Relations
  62. */
  63. public function getProduct()
  64. {
  65. return $this->hasOne(Product::className(), ['id' => 'id_product']);
  66. }
  67. public function getTaxRate()
  68. {
  69. return $this->hasOne(TaxRate::className(), ['id' => 'id_tax_rate']);
  70. }
  71. /**
  72. * @inheritdoc
  73. */
  74. public function rules()
  75. {
  76. return [
  77. [['id_order', 'id_product', 'quantity'], 'required'],
  78. [['id_order', 'id_product', 'id_tax_rate'], 'integer'],
  79. [['unit'], 'string', 'max' => 255],
  80. [['quantity'], 'number', 'min' => 0],
  81. [['description'], 'safe']
  82. ];
  83. }
  84. /**
  85. * @inheritdoc
  86. */
  87. public function attributeLabels()
  88. {
  89. return [
  90. 'id' => 'ID',
  91. 'id_order' => 'Commande',
  92. 'id_product' => 'Product',
  93. 'quantity' => 'Quantité',
  94. 'unit' => 'Unité',
  95. 'id_tax_rate' => 'Taxe',
  96. 'description' => 'Description'
  97. ];
  98. }
  99. /**
  100. * Retourne les options de base nécessaires à la fonction de recherche.
  101. *
  102. * @return array
  103. */
  104. public static function defaultOptionsSearch()
  105. {
  106. return [
  107. 'with' => ['taxRate'],
  108. 'join_with' => [],
  109. 'orderby' => '',
  110. 'attribute_id_producer' => ''
  111. ];
  112. }
  113. public function afterFind() {
  114. if ($this->taxRate == null) {
  115. $this->populateRelation('taxRate', GlobalParam::getCurrentProducer()->taxRate);
  116. }
  117. parent::afterFind();
  118. }
  119. public function getPrice()
  120. {
  121. return $this->price ;
  122. }
  123. /**
  124. * Retourne le prix du produit avec taxe
  125. */
  126. public function getPriceWithTax()
  127. {
  128. return Price::getPriceWithTax($this->price, $this->taxRate->value);
  129. }
  130. }