KataoCartPeer.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /**
  3. * Subclass for performing query and update operations on the 'katao_cart' table.
  4. *
  5. * @package lib.model
  6. */
  7. class KataoCartPeer extends BaseKataoCartPeer {
  8. /**
  9. * KataoCartPeer::retrieveByUserAndPeriodAndNode()
  10. *
  11. * @param int $katao_user_id
  12. * @param int $katao_period_id
  13. * @param int $katao_node_id
  14. * @param bool $ignore_status
  15. * @return KataoCart
  16. */
  17. public static function retrieveByUserAndPeriodAndNode($katao_user_id, $katao_period_id, $katao_node_id, $ignore_status = false) {
  18. $criteria = new Criteria();
  19. $criteria->add(self::KATAO_USER_ID, $katao_user_id);
  20. $criteria->add(self::KATAO_PERIOD_ID, $katao_period_id);
  21. $criteria->add(self::KATAO_NODE_ID, $katao_node_id);
  22. if (!$ignore_status) {
  23. $criteria->add(self::STATUS, array(KataoCart::STATUS_IN_PROGRESS, KataoCart::STATUS_VALIDATED), Criteria::IN);
  24. }
  25. if (null == $return = self::doSelectOne($criteria)) {
  26. $return = new KataoCart();
  27. $return->setKataoUserId($katao_user_id);
  28. $return->setKataoPeriodId($katao_period_id);
  29. $return->setKataoNodeId($katao_node_id);
  30. if (KataoPeriodPeer::getActivePeriod()->getOrderEndedAt('Y-m-d') >= date('Y-m-d')) {
  31. $return->save();
  32. }
  33. }
  34. return $return;
  35. }
  36. public static function getAllStatuses() {
  37. return array(KataoCart::STATUS_IN_PROGRESS => self::getStatusStr(KataoCart::STATUS_IN_PROGRESS), KataoCart::STATUS_VALIDATED => self::getStatusStr(KataoCart::STATUS_VALIDATED), KataoCart::STATUS_ARCHIVED => self::getStatusStr(KataoCart::STATUS_ARCHIVED));
  38. }
  39. public static function getStatusStr($status) {
  40. switch ($status) {
  41. case KataoCart::STATUS_IN_PROGRESS:
  42. return 'En cours';
  43. case KataoCart::STATUS_VALIDATED:
  44. return 'Validée';
  45. case KataoCart::STATUS_ARCHIVED:
  46. return 'Terminée';
  47. }
  48. return '';
  49. }
  50. public static function getAmountStats($katao_period_id = null) {
  51. $return = array();
  52. foreach (KataoNodePeer::getAllArray() as $katao_node_id => $katao_node_city) {
  53. $return[$katao_node_city]['unvalidated'] = 0;
  54. $return[$katao_node_city]['validated'] = 0;
  55. }
  56. if(!KataoPeriodPeer::getActivePeriod()){
  57. return false;
  58. }
  59. $criteria = new Criteria();
  60. $criteria->add(self::KATAO_PERIOD_ID, !is_null($katao_period_id)?$katao_period_id:KataoPeriodPeer::getActivePeriod()->getId());
  61. foreach (self::doSelectJoinKataoNode($criteria) as/*(KataoCart)*/ $katao_cart) {
  62. $katao_node_city = $katao_cart->getKataoNode()->getCity();
  63. $status = 'validated';
  64. if (KataoCart::STATUS_IN_PROGRESS == $katao_cart->getStatus()) {
  65. $status = 'unvalidated';
  66. }
  67. $criteria2 = new Criteria();
  68. if (!is_null($katao_supplier_id)) {
  69. $criteria2->addJoin(KataoCartProductPeer::KATAO_PRODUCT_ID, KataoProductPeer::ID);
  70. $criteria2->add(KataoProductPeer::KATAO_SUPPLIER_ID, $katao_supplier_id);
  71. }
  72. foreach ($katao_cart->getKataoCartProducts($criteria2) as/*(KataoCartProduct)*/ $katao_cart_product) {
  73. $quantity_asked = $katao_cart_product->getQuantity();
  74. $quantity_adjusted = $katao_cart_product->gethasBeenAdjusted()?$katao_cart_product->getQuantityAdjusted():CONST_N_A;
  75. $quantity_delivered = $katao_cart_product->getKataoOrderProduct()?($katao_cart_product->getKataoOrderProduct()->getHasBeenDelivered()?$katao_cart_product->getQuantityDelivered():CONST_N_A):CONST_N_A;
  76. $quantity = $quantity_delivered;
  77. if (CONST_N_A === $quantity) {
  78. $quantity = $quantity_adjusted;
  79. }
  80. if (CONST_N_A === $quantity) {
  81. $quantity = $quantity_asked;
  82. }
  83. $price = $katao_cart_product->getProductPriceWithTaxes();
  84. $return[$katao_node_city][$status] += $quantity * $price;
  85. }
  86. }
  87. return $return;
  88. }
  89. public static function sumForSupplier($katao_supplier_id) {
  90. $return = 0;
  91. $sf_user =/*(myUser)*/ sfContext::getInstance()->getUser();
  92. $criteria = new Criteria();
  93. $criteria->addJoin(KataoCartProductPeer::KATAO_CART_ID, self::ID);
  94. $criteria->addJoin(KataoCartProductPeer::KATAO_PRODUCT_ID, KataoProductPeer::ID);
  95. $criteria->add(self::KATAO_PERIOD_ID, $sf_user->getActivePeriod()->getId());
  96. $criteria->add(self::KATAO_NODE_ID, $sf_user->getActiveNode()->getId());
  97. $criteria->add(KataoProductPeer::KATAO_SUPPLIER_ID, $katao_supplier_id);
  98. foreach (KataoCartProductPeer::doSelect($criteria) as/*(KataoCartProduct)*/ $katao_cart_product) {
  99. $quantity_asked = $katao_cart_product->getQuantity();
  100. $quantity_adjusted = $katao_cart_product->gethasBeenAdjusted()?$katao_cart_product->getQuantityAdjusted():CONST_N_A;
  101. $quantity_delivered = $katao_cart_product->getKataoOrderProduct()?($katao_cart_product->getKataoOrderProduct()->getHasBeenDelivered()?$katao_cart_product->getQuantityDelivered():CONST_N_A):CONST_N_A;
  102. $quantity = $quantity_delivered;
  103. if (CONST_N_A === $quantity) {
  104. $quantity = $quantity_adjusted;
  105. }
  106. if (CONST_N_A === $quantity) {
  107. $quantity = $quantity_asked;
  108. }
  109. $price = $katao_cart_product->getProductPriceWithTaxes();
  110. $return += $quantity * $price;
  111. }
  112. return $return;
  113. }
  114. }