CgOrderItemSendClass.php 4.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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 common\components\util;
  9. use Yii;
  10. class CgOrderItemSendClass extends BaseClass
  11. {
  12. public static $baseFile = '\bizGhs\cg\models\CgOrderItemSend';
  13. //售后产生下架 ssh 20240707
  14. public static function afterSaleOut($shop, $order, $currentCgItem, $num)
  15. {
  16. //如果有预订活动,货位数量也要变化
  17. if (isset($shop->pfLevel) && $shop->pfLevel == 1 && isset($shop->bookSn) && !empty($shop->bookSn)) {
  18. if (isset($order->bookSn) && $shop->bookSn == $order->bookSn) {
  19. $currentCgItemId = $currentCgItem->id ?? 0;
  20. $totalNeedOutNum = $num;
  21. $sendList = self::getAllByCondition(['parentId' => $currentCgItemId], null, '*', null, true);
  22. if (!empty($sendList)) {
  23. foreach ($sendList as $send) {
  24. if ($totalNeedOutNum > 0) {
  25. $sendNum = $send->num ?? 0;
  26. $sendOutNum = $send->outNum ?? 0;
  27. $couldOutNum = bcsub($sendNum, $sendOutNum);
  28. if ($totalNeedOutNum >= $couldOutNum) {
  29. $needOutNum = $couldOutNum;
  30. } else {
  31. $needOutNum = $totalNeedOutNum;
  32. }
  33. $totalNeedOutNum = bcsub($totalNeedOutNum, $needOutNum);
  34. $send->outNum = bcadd($send->outNum, $needOutNum);
  35. $send->save();
  36. $bookGhsGiveId = $send->bookGhsGiveId ?? 0;
  37. $give = BookItemGhsClass::getById($bookGhsGiveId, true);
  38. if (empty($give)) {
  39. util::fail('售后时,货位配送相关信息缺失哦');
  40. }
  41. $give->outNum = bcadd($give->outNum, $needOutNum);
  42. $give->save();
  43. $bookItemCustomId = $send->bookItemCustomId ?? 0;
  44. $bookItemCustomRes = BookItemCustomClass::getById($bookItemCustomId, true);
  45. if (empty($bookItemCustomRes)) {
  46. util::fail('售后时,bookItemCustom信息缺失');
  47. }
  48. $onNum = $bookItemCustomRes->onNum ?? 0;
  49. if ($needOutNum > $onNum) {
  50. util::fail('售后时,bookItemCustom上架数量不够扣');
  51. }
  52. $bookItemCustomRes->onNum = bcsub($bookItemCustomRes->onNum, $needOutNum);
  53. $bookItemCustomRes->save();
  54. $customId = $bookItemCustomRes->customId ?? 0;
  55. $bookCustomRes = BookCustomClass::getByCondition(['bookSn' => $order->bookSn, 'customId' => $customId], true);
  56. if (empty($bookCustomRes)) {
  57. util::fail('售后时,bookCustom信息缺失');
  58. }
  59. $onNum2 = $bookCustomRes->onNum ?? 0;
  60. if ($needOutNum > $onNum2) {
  61. util::fail('售后时,bookCustom上架数量不够扣');
  62. }
  63. $bookCustomRes->onNum = bcsub($bookCustomRes->onNum, $needOutNum);
  64. $bookCustomRes->save();
  65. $itemId = $bookItemCustomRes->itemId ?? 0;
  66. $bookItemRes = BookItemClass::getByCondition(['bookSn' => $order->bookSn, 'itemId' => $itemId], true);
  67. if (empty($bookItemRes)) {
  68. util::fail('售后时,bookItem信息缺失');
  69. }
  70. $onNum3 = $bookItemRes->onNum ?? 0;
  71. if ($needOutNum > $onNum3) {
  72. util::fail('售后时,bookItem上架数量不够扣');
  73. }
  74. $bookItemRes->onNum = bcsub($bookItemRes->onNum, $needOutNum);
  75. $bookItemRes->save();
  76. }
  77. }
  78. }
  79. if ($totalNeedOutNum > 0) {
  80. util::fail('售后下架数量不足');
  81. }
  82. }
  83. }
  84. }
  85. }