CgOrderItemClass.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <?php
  2. namespace bizGhs\cg\classes;
  3. use bizGhs\base\classes\BaseClass;
  4. use bizGhs\book\classes\BookCustomClass;
  5. use bizGhs\book\classes\BookItemClass;
  6. use bizGhs\book\classes\BookItemCustomClass;
  7. use bizGhs\book\classes\BookItemGhsClass;
  8. use bizGhs\order\classes\PurchaseOrderItemClass;
  9. use bizGhs\product\classes\ProductClass;
  10. use common\components\util;
  11. use Yii;
  12. class CgOrderItemClass extends BaseClass
  13. {
  14. public static $baseFile = '\bizGhs\cg\models\CgOrderItem';
  15. public static function cancelAssign($cg, $shop, $params)
  16. {
  17. $orderSn = $cg->orderSn ?? '';
  18. $bookSn = $cg->bookSn ?? '';
  19. $cgItemList = PurchaseOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  20. if (empty($cgItemList)) {
  21. return true;
  22. }
  23. $ids = [];
  24. foreach ($cgItemList as $cgItem) {
  25. $ids[] = $cgItem->productId ?? 0;
  26. }
  27. $productInfo = ProductClass::getAllByCondition(['id' => ['in', $ids]], null, '*', 'id', true);
  28. foreach ($cgItemList as $cgItem) {
  29. $productId = $cgItem->productId ?? 0;
  30. $product = $productInfo[$productId] ?? null;
  31. if (empty($product)) {
  32. util::fail('售后找不到花材');
  33. }
  34. $cgItemName = $cgItem->name ?? '';
  35. $parentId = $cgItem->id ?? 0;
  36. $assignSeat = $cgItem->assignSeat;
  37. if ($assignSeat == 0) {
  38. $params['currentChangeType'] = 'cgCancel';
  39. $params['customName'] = '';
  40. $params['customId'] = '';
  41. $params['customNamePy'] = '';
  42. $remainNeedSendNum = $cgItem->itemNum ?? 0;
  43. $currentItemInfo = ProductClass::getById($productId, true);
  44. $bookItemRes = BookItemClass::getByCondition(['bookSn' => $bookSn, 'itemId' => $productId], true);
  45. $bookItemRes = BookItemClass::addNeedCgNum($bookItemRes, $remainNeedSendNum, 0, $cg, $shop, $currentItemInfo, $params);
  46. continue;
  47. }
  48. $sendList = CgOrderItemSendClass::getAllByCondition(['parentId' => $parentId], null, '*', null, true);
  49. if (!empty($sendList)) {
  50. foreach ($sendList as $send) {
  51. if ($send->status == 0) {
  52. $num = $send->num ?? 0;
  53. $send->status = 2;
  54. $send->save();
  55. $bookGhsGiveId = $send->bookGhsGiveId ?? 0;
  56. $bookItemGhsRes = BookItemGhsClass::getById($bookGhsGiveId, true);
  57. if (empty($bookItemGhsRes)) {
  58. util::fail('送货记录缺失');
  59. }
  60. $bookItemGhsRes->status = 2;
  61. $bookItemGhsRes->save();
  62. $bookItemCustomId = $send->bookItemCustomId ?? 0;
  63. //路上数量减少,待采数量增加
  64. $bookItemCustomRes = BookItemCustomClass::getById($bookItemCustomId, true);
  65. if (empty($bookItemCustomRes)) {
  66. util::fail('预订花材客户缺失');
  67. }
  68. $roadNum = $bookItemCustomRes->roadNum ?? 0;
  69. if ($num > $roadNum) {
  70. util::fail("路上库存不足扣减 bookItemCustom {$cgItemName}");
  71. }
  72. $params['currentChangeType'] = 'cgCancel';
  73. $bookItemCustomRes = BookItemCustomClass::delRoadNum($bookItemCustomRes, $num, 0, $cg, $shop, $product, $params);
  74. $bookItemCustomRes = BookItemCustomClass::addNeedCgNum($bookItemCustomRes, $num, 0, $cg, $shop, $product, $params);
  75. $customId = $bookItemCustomRes->customId ?? 0;
  76. $bookCustomRes = BookCustomClass::getByCondition(['bookSn' => $bookSn, 'customId' => $customId], true);
  77. if (empty($bookCustomRes)) {
  78. util::fail('预订客户缺失');
  79. }
  80. $roadNum2 = $bookCustomRes->roadNum ?? 0;
  81. if ($num > $roadNum2) {
  82. util::fail("路上库存不足扣减 bookCustom {$cgItemName}");
  83. }
  84. $bookCustomRes = BookCustomClass::delRoadNum($bookCustomRes, $num, 0, $cg, $shop, $product, $params);
  85. $bookCustomRes = BookCustomClass::addNeedCgNum($bookCustomRes, $num, 0, $cg, $shop, $product, $params);
  86. $bookItemRes = BookItemClass::getByCondition(['bookSn' => $bookSn, 'itemId' => $productId], true);
  87. if (empty($bookItemRes)) {
  88. util::fail('预订花材缺失');
  89. }
  90. $roadNum3 = $bookItemRes->roadNum ?? 0;
  91. if ($num > $roadNum3) {
  92. util::fail("路上库存不足扣减 bookItem {$cgItemName}");
  93. }
  94. $bookItemRes = BookItemClass::delRoadNum($bookItemRes, $num, 0, $cg, $shop, $product, $params);
  95. $bookItemRes = BookItemClass::addNeedCgNum($bookItemRes, $num, 0, $cg, $shop, $product, $params);
  96. }
  97. }
  98. }
  99. }
  100. }
  101. //分配货位后上架和入库
  102. public static function assignToPutOn($cg, $shop, $params)
  103. {
  104. if ($cg->status != 3) {
  105. return true;
  106. }
  107. $orderSn = $cg->orderSn ?? '';
  108. $bookSn = $cg->bookSn ?? '';
  109. $cgItemList = PurchaseOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  110. if (empty($cgItemList)) {
  111. return true;
  112. }
  113. $ids = [];
  114. foreach ($cgItemList as $cgItem) {
  115. $productId = $cgItem->productId ?? 0;
  116. $ids[] = $productId;
  117. }
  118. $productInfo = ProductClass::getAllByCondition(['id' => ['in', $ids]], null, '*', 'id', true);
  119. foreach ($cgItemList as $cgItem) {
  120. $productId = $cgItem->productId ?? 0;
  121. $product = $productInfo[$productId] ?? null;
  122. if (empty($product)) {
  123. util::fail('花材信息无效呢');
  124. }
  125. $cgItemName = $cgItem->name ?? '';
  126. $parentId = $cgItem->id ?? 0;
  127. $assignSeat = $cgItem->assignSeat;
  128. if ($assignSeat == 0) {
  129. //不需要分配货位号
  130. continue;
  131. }
  132. $sendList = CgOrderItemSendClass::getAllByCondition(['parentId' => $parentId], null, '*', null, true);
  133. if (!empty($sendList)) {
  134. foreach ($sendList as $send) {
  135. if ($send->status == 0) {
  136. $num = $send->num ?? 0;
  137. $send->status = 1;
  138. $send->save();
  139. $bookGhsGiveId = $send->bookGhsGiveId ?? 0;
  140. $bookItemGhsRes = BookItemGhsClass::getById($bookGhsGiveId, true);
  141. if (empty($bookItemGhsRes)) {
  142. util::fail('送货记录缺失');
  143. }
  144. $bookItemGhsRes->status = 1;
  145. $bookItemGhsRes->save();
  146. $bookItemCustomId = $send->bookItemCustomId ?? 0;
  147. //路上数量减少,上架数量增加
  148. $bookItemCustomRes = BookItemCustomClass::getById($bookItemCustomId, true);
  149. if (empty($bookItemCustomRes)) {
  150. util::fail('预订花材客户缺失');
  151. }
  152. $roadNum = $bookItemCustomRes->roadNum ?? 0;
  153. if ($num > $roadNum) {
  154. util::fail("路上库存不足扣减 bookItemCustom {$cgItemName}");
  155. }
  156. $params['currentChangeType'] = 'putIn';
  157. $bookItemCustomRes = BookItemCustomClass::delRoadNum($bookItemCustomRes, $num, 0, $cg, $shop, $product, $params);
  158. $bookItemCustomRes = BookItemCustomClass::addOnNum($bookItemCustomRes, $num, $cg, $shop, $product, $params);
  159. $customId = $bookItemCustomRes->customId ?? 0;
  160. $bookCustomRes = BookCustomClass::getByCondition(['bookSn' => $bookSn, 'customId' => $customId], true);
  161. if (empty($bookCustomRes)) {
  162. util::fail('预订客户缺失');
  163. }
  164. $roadNum2 = $bookCustomRes->roadNum ?? 0;
  165. if ($num > $roadNum2) {
  166. util::fail("路上库存不足扣减 bookCustom {$cgItemName}");
  167. }
  168. $bookCustomRes = BookCustomClass::delRoadNum($bookCustomRes, $num, 0, $cg, $shop, $product, $params);
  169. BookCustomClass::addOnNum($bookCustomRes, $num, $cg, $shop, $product, $params);
  170. $bookItemRes = BookItemClass::getByCondition(['bookSn' => $bookSn, 'itemId' => $productId], true);
  171. if (empty($bookItemRes)) {
  172. util::fail('预订花材缺失');
  173. }
  174. $roadNum3 = $bookItemRes->roadNum ?? 0;
  175. if ($num > $roadNum3) {
  176. util::fail("路上库存不足扣减 bookItem {$cgItemName}");
  177. }
  178. $bookItemRes = BookItemClass::delRoadNum($bookItemRes, $num, 0, $cg, $shop, $product, $params);
  179. BookItemClass::addOnNum($bookItemRes, $num, $cg, $shop, $product, $params);
  180. }
  181. }
  182. }
  183. }
  184. }
  185. }