InitController.php 11 KB

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