InitController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. <?php
  2. namespace console\controllers;
  3. use biz\main\classes\MainClass;
  4. use biz\product\classes\ProductClass;
  5. use biz\shop\classes\ShopClass;
  6. use bizGhs\custom\classes\CustomClass;
  7. use bizGhs\ghs\classes\GhsClass;
  8. use bizGhs\order\classes\PurchaseOrderClass;
  9. use bizGhs\order\classes\PurchaseOrderItemClass;
  10. use bizGhs\order\classes\StockInOrderClass;
  11. use bizGhs\order\classes\StockOutOrderClass;
  12. use bizGhs\order\classes\StockOutOrderItemClass;
  13. use bizGhs\stock\classes\OnStockRecordClass;
  14. use bizHd\purchase\classes\PurchaseClass;
  15. use bizHd\purchase\classes\PurchaseClearClass;
  16. use bizHd\purchase\classes\PurchaseItemClass;
  17. use yii\console\Controller;
  18. use bizGhs\custom\models\Custom;
  19. use bizGhs\order\classes\OrderClass;
  20. use common\components\noticeUtil;
  21. use common\components\util;
  22. use Yii;
  23. class InitController extends Controller
  24. {
  25. //补充余额 ssh 20240103
  26. public function actionBcBalance()
  27. {
  28. //供货商门店余额增加
  29. $main = MainClass::getById(8164);
  30. $shop = ShopClass::getById(8249, true);
  31. //5936.0 CL28713506
  32. //24434.82 CL28713510
  33. //14986.0 CL28713509
  34. //10909.28 CL28713514
  35. $order = PurchaseClearClass::getByCondition(['orderSn' => 'CL28713506'], true);
  36. ShopClass::customClearAddBalance($main, $shop, $order);
  37. }
  38. public function actionAdjustDebt()
  39. {
  40. $shopList = ShopClass::getAllByCondition(['id' => 11094], null, '*', null, true);
  41. if (empty($shopList)) {
  42. return false;
  43. }
  44. foreach ($shopList as $key => $shop) {
  45. $shopId = $shop->id ?? 0;
  46. $query = new \yii\db\Query();
  47. $query->from(Custom::tableName());
  48. $query->where(['ownShopId' => $shopId]);
  49. $query->orderBy('addTime ASC');
  50. foreach ($query->batch(50) as $customList) {
  51. if (!empty($customList)) {
  52. foreach ($customList as $custom) {
  53. $customId = $custom['id'] ?? 0;
  54. $where = ['customId' => $customId, 'debt' => 1];
  55. $orderList = OrderClass::getAllByCondition($where, 'addTime DESC', '*');
  56. $ghsOrderDebtAmount = 0;
  57. if (!empty($orderList)) {
  58. foreach ($orderList as $order) {
  59. $actPrice = $order['remainDebtPrice'] ?? 0;
  60. $ghsOrderDebtAmount = bcadd($ghsOrderDebtAmount, $actPrice, 2);
  61. }
  62. }
  63. $ghsId = $custom['ghsId'] ?? 0;
  64. $ghs = \bizHd\ghs\classes\GhsClass::getById($ghsId);
  65. $where = ['ghsId' => $ghsId, 'debt' => PurchaseClass::DEBT_YES];
  66. $cgList = PurchaseClass::getAllByCondition($where, 'addTime DESC', '*');
  67. $hdCgOrderDebtAmount = 0;
  68. if (!empty($cgList)) {
  69. foreach ($cgList as $cg) {
  70. $actPrice = $cg['remainDebtPrice'] ?? 0;
  71. $hdCgOrderDebtAmount = bcadd($hdCgOrderDebtAmount, $actPrice, 2);
  72. }
  73. }
  74. if ($ghsOrderDebtAmount < 0 || $hdCgOrderDebtAmount < 0) {
  75. noticeUtil::push("!!!!!!!供货商 {$ghsId} 客户id {$customId} 出现负数 $ghsOrderDebtAmount $hdCgOrderDebtAmount", '15280215347');
  76. echo "@@@@@@@@@@@@@供货商 {$ghsId} 客户id {$customId} 出现负数 $ghsOrderDebtAmount $hdCgOrderDebtAmount \n";
  77. }
  78. $ghsOrderDebtAmount = floatval($ghsOrderDebtAmount);
  79. $hdCgOrderDebtAmount = floatval($hdCgOrderDebtAmount);
  80. if ($ghsOrderDebtAmount != $hdCgOrderDebtAmount) {
  81. noticeUtil::push("!!!!!!!供货商 {$ghsId} 客户id {$customId} 二边欠款单总金额不一致", '15280215347');
  82. echo "---------供货商 {$ghsId} 客户id {$customId} 二边 欠款单 总金额 不一致 {$ghsOrderDebtAmount} {$hdCgOrderDebtAmount} \n";
  83. continue;
  84. }
  85. $customSaveDebtAmount = $custom['debtAmount'] ? floatval($custom['debtAmount']) : 0;
  86. $ghsSaveDebtAmount = $ghs['debtAmount'] ? floatval($ghs['debtAmount']) : 0;
  87. if ($customSaveDebtAmount != $ghsOrderDebtAmount) {
  88. echo "*********客户 {$customId} 欠款 和 订单总额 不一致 $customSaveDebtAmount $ghsOrderDebtAmount \n";
  89. noticeUtil::push("*********客户 {$customId} 欠款总金额 和 订单总合 不一致 $customSaveDebtAmount $ghsOrderDebtAmount ", '15280215347');
  90. continue;
  91. }
  92. if ($ghsSaveDebtAmount != $hdCgOrderDebtAmount) {
  93. echo "#########欠供货商 {$ghsId} 和 订单总额 不一致 $ghsSaveDebtAmount $hdCgOrderDebtAmount \n";
  94. noticeUtil::push("#########欠供货商 {$ghsId} 金额 和 订单总合 不一致 $ghsSaveDebtAmount $hdCgOrderDebtAmount ", '15280215347');
  95. continue;
  96. }
  97. }
  98. }
  99. }
  100. }
  101. }
  102. //在路上库存 ssh 20231218
  103. public function actionOnStock()
  104. {
  105. ini_set('memory_limit', '2045M');
  106. set_time_limit(0);
  107. $sql = 'UPDATE xhGhsItem SET onStock=0;';
  108. Yii::$app->db->createCommand($sql)->execute();
  109. $sql = 'truncate xhGhsOnStockRecord;';
  110. Yii::$app->db->createCommand($sql)->execute();
  111. $cgList = PurchaseOrderClass::getAllByCondition(['status' => 3], null, '*', null, true);
  112. if (!empty($cgList)) {
  113. foreach ($cgList as $key => $cg) {
  114. $orderSn = $cg->orderSn ?? '';
  115. $sjId = $cg->sjId ?? 0;
  116. $shopId = $cg->shopId ?? 0;
  117. $mainId = $cg->mainId ?? 0;
  118. $ghsName = $cg->ghsName ?? '';
  119. $itemList = PurchaseOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  120. if (!empty($itemList)) {
  121. foreach ($itemList as $info) {
  122. $productId = $info->productId ?? 0;
  123. $itemId = $info->itemId ?? 0;
  124. $num = $info->itemNum ?? 0;
  125. $product = ProductClass::getLockById($productId);
  126. //增加路上库存
  127. $onRecord = [];
  128. $onRecord['sjId'] = $sjId;
  129. $onRecord['shopId'] = $shopId;
  130. $onRecord['mainId'] = $mainId;
  131. $onRecord['orderSn'] = $orderSn;
  132. $onRecord['productId'] = $productId;
  133. $onRecord['itemId'] = $itemId;
  134. $onRecord['relateName'] = $ghsName;
  135. $onRecord['itemNum'] = $num;
  136. $oldOnStock = $product->onStock ?? 0;
  137. $onRecord['oldStock'] = $oldOnStock;
  138. $newOnStock = bcadd($oldOnStock, $num);
  139. $onRecord['newStock'] = $newOnStock;
  140. $onRecord['ptStyle'] = 2;
  141. OnStockRecordClass::addPurchaseOrderRecord($onRecord);
  142. \bizGhs\product\classes\ProductClass::addOnStockByItemNum($productId, $num);
  143. }
  144. }
  145. }
  146. }
  147. }
  148. public function actionLsOnStock()
  149. {
  150. ini_set('memory_limit', '2045M');
  151. set_time_limit(0);
  152. $cgList = PurchaseClass::getAllByCondition(['status' => 3], null, '*', null, true);
  153. if (!empty($cgList)) {
  154. foreach ($cgList as $key => $cg) {
  155. $orderSn = $cg->orderSn ?? '';
  156. $sjId = $cg->sjId ?? 0;
  157. $shopId = $cg->shopId ?? 0;
  158. $mainId = $cg->mainId ?? 0;
  159. $ghsName = $cg->ghsName ?? '';
  160. $itemList = PurchaseItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  161. if (!empty($itemList)) {
  162. foreach ($itemList as $val) {
  163. $productId = $val->productId ?? 0;
  164. $itemId = $val->itemId ?? 0;
  165. $num = $val->xhNum ?? 0;
  166. $product = ProductClass::getLockById($productId);
  167. if (empty($product)) {
  168. util::fail('没有找到花材呢');
  169. }
  170. //增加路上库存
  171. $onRecord = [];
  172. $onRecord['sjId'] = $sjId;
  173. $onRecord['shopId'] = $shopId;
  174. $onRecord['mainId'] = $mainId;
  175. $onRecord['orderSn'] = $orderSn;
  176. $onRecord['productId'] = $productId;
  177. $onRecord['itemId'] = $itemId;
  178. $onRecord['relateName'] = $ghsName;
  179. $onRecord['itemNum'] = $num;
  180. $oldOnStock = $product->onStock ?? 0;
  181. $onRecord['oldStock'] = $oldOnStock;
  182. $newOnStock = bcadd($oldOnStock, $num);
  183. $onRecord['newStock'] = $newOnStock;
  184. $onRecord['ptStyle'] = 1;
  185. OnStockRecordClass::addPurchaseOrderRecord($onRecord);
  186. \bizGhs\product\classes\ProductClass::addOnStockByItemNum($productId, $num);
  187. }
  188. }
  189. }
  190. }
  191. }
  192. public function actionCustom()
  193. {
  194. $list = CustomClass::getAllByCondition(['isHd' => 0], null, '*', null, true);
  195. if (!empty($list)) {
  196. foreach ($list as $custom) {
  197. $custom->level = 0;
  198. $custom->save();
  199. $ghsId = $custom->ghsId;
  200. $ghs = GhsClass::getById($ghsId, true);
  201. if (!empty($ghs)) {
  202. $ghs->giveLevel = 0;
  203. $ghs->save();
  204. echo 'customId:' . $custom->id . ' ghsId:' . $ghsId . "\n";
  205. }
  206. }
  207. }
  208. }
  209. public function actionOut()
  210. {
  211. ini_set('memory_limit', '2045M');
  212. set_time_limit(0);
  213. $list = StockOutOrderClass::getAllByCondition(['addTime>' => '2022-11-10 00:00:00'], null, '*', null, true);
  214. if (empty($list)) {
  215. return false;
  216. }
  217. foreach ($list as $out) {
  218. $orderSn = $out->orderSn ?? '';
  219. $inOrderSn = $out->inOrderSn ?? '';
  220. $in = StockInOrderClass::getByCondition(['orderSn' => $inOrderSn], true);
  221. if (empty($in)) {
  222. echo $orderSn . " 没有找到入库记录\n";
  223. }
  224. $itemList = StockOutOrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
  225. $totalCost = 0;
  226. if (!empty($itemList)) {
  227. foreach ($itemList as $item) {
  228. $itemNum = $item->itemNum ?? 0;
  229. $itemPrice = $item->itemPrice ?? 0;
  230. $current = bcmul($itemNum, $itemPrice, 2);
  231. $totalCost = bcadd($totalCost, $current, 2);
  232. }
  233. }
  234. $in->price = $totalCost;
  235. $in->save();
  236. $out->price = $totalCost;
  237. $out->save();
  238. echo $orderSn . " 总成本{$totalCost}\n";
  239. }
  240. }
  241. }