|
|
@@ -14,6 +14,154 @@ class BookItemClass extends BaseClass
|
|
|
|
|
|
public static $baseFile = '\bizGhs\book\models\BookItem';
|
|
|
|
|
|
+ public static function delBathItem($batchData, $order)
|
|
|
+ {
|
|
|
+ $shopId = $order->shopId ?? 0;
|
|
|
+ $shop = ShopClass::getById($shopId, true);
|
|
|
+ if (empty($shop)) {
|
|
|
+ util::fail('没有门店相关信息');
|
|
|
+ }
|
|
|
+ $bookSn = $shop->bookSn ?? '';
|
|
|
+ $pfLevel = $shop->pfLevel ?? 0;
|
|
|
+ if (empty($bookSn)) {
|
|
|
+ if ($pfLevel == 1) {
|
|
|
+ $sjName = $shop->merchantName ?? '';
|
|
|
+ $shopName = $shop->shopName ?? '';
|
|
|
+ $currentName = $shopName == '首店' ? $sjName : $sjName . ' ' . $shopName;
|
|
|
+ noticeUtil::push($currentName . ' 没有开启预订', '15280215347');
|
|
|
+ util::fail('请先开启预订');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $mainId = $order->mainId ?? 0;
|
|
|
+ $customId = $order->customId ?? 0;
|
|
|
+ $customName = $order->customName ?? '';
|
|
|
+ $customNamePy = $order->customNamePy ?? '';
|
|
|
+
|
|
|
+ $ids = array_column($batchData, 'productId');
|
|
|
+ $infoList = ProductClass::getAllByCondition(['id' => ['in', $ids]], null, '*', 'id', true);
|
|
|
+ foreach ($batchData as $data) {
|
|
|
+ $itemId = $data['productId'] ?? 0;
|
|
|
+ $product = $infoList[$itemId] ?? null;
|
|
|
+ if (empty($product)) {
|
|
|
+ util::fail('没有找到产品,ID:' . $itemId);
|
|
|
+ }
|
|
|
+ $ptItemId = $product->itemId ?? 0;
|
|
|
+ $num = $data['num'] ?? 0;
|
|
|
+ $name = $product->name ?? '';
|
|
|
+ $py = $product->py ?? '';
|
|
|
+ $cgStaffName = $product->cgStaffName ?? '';
|
|
|
+ $cgStaffId = $product->cgStaffId ?? 0;
|
|
|
+ if (empty($cgStaffId)) {
|
|
|
+ if ($pfLevel == 1) {
|
|
|
+ util::fail($name . '没有设置采购人');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $office = BookItemCustomClass::getByCondition(['mainId' => $mainId, 'bookSn' => $bookSn, 'customId' => $customId, 'itemId' => $itemId], true);
|
|
|
+ if (empty($office)) {
|
|
|
+ $currentData = [
|
|
|
+ 'name' => $name,
|
|
|
+ 'py' => $py,
|
|
|
+ 'mainId' => $mainId,
|
|
|
+ 'itemId' => $itemId,
|
|
|
+ 'ptItemId' => $ptItemId,
|
|
|
+ 'customId' => $customId,
|
|
|
+ 'customName' => $customName,
|
|
|
+ 'customNamePy' => $customNamePy,
|
|
|
+ 'cgStaffId' => $cgStaffId,
|
|
|
+ 'cgStaffName' => $cgStaffName,
|
|
|
+ 'bookSn' => $bookSn,
|
|
|
+ ];
|
|
|
+ $office = BookItemCustomClass::add($currentData, true);
|
|
|
+ }
|
|
|
+ $hasId = $office->id ?? 0;
|
|
|
+ $office = BookItemCustomClass::getLockById($hasId);
|
|
|
+
|
|
|
+ $thisNum = bcsub($office->bookNum, $num);
|
|
|
+ if ($thisNum < 0) {
|
|
|
+ util::fail($customName . '预订的' . $name . '不够减');
|
|
|
+ }
|
|
|
+ $office->bookNum = $thisNum;
|
|
|
+
|
|
|
+ if ($office->needCgNum >= $num) {
|
|
|
+ //待采数量足够扣
|
|
|
+ $office->needCgNum = bcsub($office->needCgNum, $num);
|
|
|
+ } else {
|
|
|
+ //待采数量不够扣
|
|
|
+ $remainSubNum = bcsub($num, $office->needCgNum);
|
|
|
+ $office->needCgNum = 0;
|
|
|
+ if ($office->onNum >= $remainSubNum) {
|
|
|
+ //上架数量足够扣
|
|
|
+ $office->onNum = bcsub($office->onNum, $remainSubNum);
|
|
|
+ } else {
|
|
|
+ //上架数量也不够扣
|
|
|
+ $lastRemainNum = bcsub($remainSubNum, $office->onNum);
|
|
|
+ $office->onNum = 0;
|
|
|
+ if ($lastRemainNum > 0) {
|
|
|
+ //需要扣除路上数量,把路上有货位号的数量变成无货位号
|
|
|
+ $roadNum = $office->roadNum ?? 0;
|
|
|
+ if ($lastRemainNum >= $roadNum) {
|
|
|
+ //路上数量也不够扣的,所以是库存,不再需要扣
|
|
|
+ $maySubRoadNum = $roadNum;
|
|
|
+ } else {
|
|
|
+ $maySubRoadNum = $lastRemainNum;
|
|
|
+ }
|
|
|
+ //todo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
+ $office->roadNum = bcsub($office->roadNum, $maySubRoadNum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $office->save();
|
|
|
+
|
|
|
+ $bookItemReturn = self::getByCondition(['mainId' => $mainId, 'bookSn' => $bookSn, 'itemId' => $itemId,], true);
|
|
|
+ if (empty($bookItemReturn)) {
|
|
|
+ $statData = [
|
|
|
+ 'mainId' => $mainId,
|
|
|
+ 'itemId' => $itemId,
|
|
|
+ 'ptItemId' => $ptItemId,
|
|
|
+ 'name' => $name,
|
|
|
+ 'bookSn' => $bookSn,
|
|
|
+ 'py' => $py,
|
|
|
+ 'cgStaffId' => $cgStaffId,
|
|
|
+ 'cgStaffName' => $cgStaffName
|
|
|
+ ];
|
|
|
+ $bookItemReturn = self::add($statData, true);
|
|
|
+ }
|
|
|
+ $id = $bookItemReturn->id;
|
|
|
+ $bookItemReturn = self::getLockById($id);
|
|
|
+
|
|
|
+ $currentNum = bcsub($bookItemReturn->bookNum, $num);
|
|
|
+ if ($currentNum < 0) {
|
|
|
+ util::fail($customName . '预订的' . $name . '不够减哦');
|
|
|
+ }
|
|
|
+ $bookItemReturn->bookNum = $currentNum;
|
|
|
+ $bookItemReturn->save();
|
|
|
+
|
|
|
+
|
|
|
+ $bookCustomReturn = BookCustomClass::getByCondition(['mainId' => $mainId, 'bookSn' => $bookSn, 'customId' => $customId], true);
|
|
|
+ if (empty($bookCustomReturn)) {
|
|
|
+ $currentData = [
|
|
|
+ 'name' => $customName,
|
|
|
+ 'py' => $customNamePy,
|
|
|
+ 'mainId' => $mainId,
|
|
|
+ 'customId' => $customId,
|
|
|
+ 'bookSn' => $bookSn,
|
|
|
+ ];
|
|
|
+ $bookCustomReturn = BookCustomClass::add($currentData, true);
|
|
|
+ }
|
|
|
+ $hasId = $bookCustomReturn->id ?? 0;
|
|
|
+ $bookCustomReturn = BookCustomClass::getLockById($hasId);
|
|
|
+ $nowNum = bcadd($bookCustomReturn->bookNum, $num);
|
|
|
+ if ($nowNum < 0) {
|
|
|
+ util::fail($customName . '预订的' . $name . '不够减哈');
|
|
|
+ }
|
|
|
+ $bookCustomReturn->bookNum = $nowNum;
|
|
|
+ $bookCustomReturn->save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //todo 预订数量增加没有增加待采购数量,如果有库存要提醒库存要上架
|
|
|
+
|
|
|
//数据结构 [['productId' => $productId,'num' => $num]]
|
|
|
public static function addBatchItem($batchData, $order)
|
|
|
{
|