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.

167 lines
5.6KB

  1. <?php
  2. /**
  3. * Copyright Guillaume Bourgeois (2018)
  4. *
  5. * contact@souke.fr
  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 domain\Product\ProductPrice\Model;
  38. use common\components\ActiveRecordCommon;
  39. use domain\PointSale\PointSale\PointSale;
  40. use domain\Product\Product\Product;
  41. use domain\User\User\User;
  42. use domain\User\UserGroup\UserGroup;
  43. /**
  44. * This is the model class for table "product_price".
  45. *
  46. * @property integer $id
  47. */
  48. class ProductPrice extends ActiveRecordCommon
  49. {
  50. /**
  51. * @inheritdoc
  52. */
  53. public static function tableName()
  54. {
  55. return 'product_price';
  56. }
  57. /**
  58. * @inheritdoc
  59. */
  60. public function rules()
  61. {
  62. return [
  63. [
  64. 'id_user',
  65. 'required',
  66. 'when' => function ($model) {
  67. return !$model->id_point_sale && !$model->id_user_group && !$model->from_quantity;
  68. },
  69. 'message' => 'Vous devez renseigner au moins un utilisateur, un point de vente, un groupe d\'utilisateur ou une quantité'
  70. ],
  71. [
  72. 'id_point_sale',
  73. 'required',
  74. 'when' => function ($model) {
  75. return !$model->id_user && !$model->id_user_group && !$model->from_quantity;
  76. },
  77. 'message' => 'Vous devez renseigner au moins un utilisateur, un point de vente, un groupe d\'utilisateur ou une quantité'
  78. ],
  79. [
  80. 'id_user_group',
  81. 'required',
  82. 'when' => function ($model) {
  83. return !$model->id_user && !$model->id_point_sale && !$model->from_quantity;
  84. },
  85. 'message' => 'Vous devez renseigner au moins un utilisateur, un point de vente, un groupe d\'utilisateur ou une quantité'
  86. ],
  87. [
  88. 'from_quantity',
  89. 'required',
  90. 'when' => function ($model) {
  91. return !$model->id_user && !$model->id_user_group && !$model->id_point_sale;
  92. },
  93. 'message' => 'Vous devez renseigner au moins un utilisateur, un point de vente, un groupe d\'utilisateur ou une quantité'
  94. ],
  95. [['id_product', 'price'], 'required'],
  96. [['id_product', 'id_user', 'id_point_sale', 'id_user_group', 'percent'], 'integer'],
  97. [['price', 'from_quantity'], 'double'],
  98. ];
  99. }
  100. /**
  101. * @inheritdoc
  102. */
  103. public function attributeLabels()
  104. {
  105. return [
  106. 'id' => 'ID',
  107. 'id_product' => 'Produit',
  108. 'id_user' => 'Utilisateur',
  109. 'id_point_sale' => 'Point de vente',
  110. 'id_user_group' => "Groupe d'utilisateur",
  111. 'price' => 'Prix (HT)',
  112. 'percent' => 'Pourcentage',
  113. 'from_quantity' => 'À partir de la quantité',
  114. ];
  115. }
  116. /*
  117. * Relations
  118. */
  119. public function getProduct()
  120. {
  121. return $this->hasOne(Product::class, ['id' => 'id_product']);
  122. }
  123. public function populateProduct(Product $product): void
  124. {
  125. $this->populateFieldObject('id_product', 'product', $product);
  126. }
  127. public function getPointSale()
  128. {
  129. return $this->hasOne(PointSale::class, ['id' => 'id_point_sale']);
  130. }
  131. public function populatePointSale(PointSale $pointSale): void
  132. {
  133. $this->populateFieldObject('id_point_sale', 'pointSale', $pointSale);
  134. }
  135. public function getUserGroup()
  136. {
  137. return $this->hasOne(UserGroup::class, ['id' => 'id_user_group']);
  138. }
  139. public function populateUserGroup(UserGroup $userGroup): void
  140. {
  141. $this->populateFieldObject('id_user_group', 'userGroup', $userGroup);
  142. }
  143. public function getUser()
  144. {
  145. return $this->hasOne(User::class, ['id' => 'id_user']);
  146. }
  147. public function populateUser(User $user): void
  148. {
  149. $this->populateFieldObject('id_user', 'user', $user);
  150. }
  151. }