PdController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace console\controllers;
  3. use biz\shop\classes\ShopClass;
  4. use biz\stat\classes\StatPdAddClass;
  5. use biz\stat\classes\StatPdSubClass;
  6. use bizGhs\order\classes\CheckOrderClass;
  7. use bizGhs\order\classes\CheckOrderItemClass;
  8. use common\components\util;
  9. use yii\console\Controller;
  10. use Yii;
  11. class PdController extends Controller
  12. {
  13. //盘点数据 ./yii pd/update
  14. public function actionUpdate()
  15. {
  16. $list = CheckOrderClass::getAllByCondition(['status' => 2], 'id asc', '*', null, true);
  17. if (!empty($list)) {
  18. foreach ($list as $item) {
  19. $orderSn = $item->orderSn ?? '';
  20. $shopId = $item->shopId ?? 0;
  21. $addTime = $item->addTime ?? '';
  22. $connection = Yii::$app->db;
  23. $transaction = $connection->beginTransaction();
  24. try {
  25. $shop = ShopClass::getLockById($shopId);
  26. if (empty($shop)) {
  27. echo '没有找到店铺 ' . $shopId . ' ' . $orderSn . "\n";
  28. continue;
  29. }
  30. $productList = CheckOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  31. if (!empty($productList)) {
  32. $add = 0;
  33. $sub = 0;
  34. foreach ($productList as $product) {
  35. $num = $product->profitLossNum ?? 0;
  36. $cost = $product->itemCost ?? 0;
  37. $res = bcmul($num, $cost, 2);
  38. if ($res > 0) {
  39. $add = bcadd($add, $res, 2);
  40. } else {
  41. $sub = bcadd($add, abs($res), 2);
  42. }
  43. }
  44. $totalAdd = bcadd($shop->totalPdAdd, $add, 2);
  45. $totalSub = bcadd($shop->totalPdSub, $sub, 2);
  46. $shop->totalPdAdd = $totalAdd;
  47. $shop->totalPdSub = $totalSub;
  48. $shop->save();
  49. $date = date("Ymd", strtotime($addTime));
  50. if ($add > 0) {
  51. StatPdAddClass::replace($shop, $add, $date);
  52. }
  53. if ($sub > 0) {
  54. StatPdSubClass::replace($shop, $sub, $date);
  55. }
  56. }
  57. $transaction->commit();
  58. } catch (\Exception $e) {
  59. $transaction->rollBack();
  60. $msg = $e->getMessage();
  61. echo "报错了:" . $msg . "\n";
  62. }
  63. }
  64. }
  65. }
  66. }