ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### 通过ERPSKUID获取SKU的网店可售库存(电商库存同步用) **位置:** Common\Lib\EcGoodsLib.class.php **参数:** * @param $sku_id Int ERPSKU的ID * @return $result Int 电商可用库存数 **调用:** * $stock_lib = new EcGoodsLib; * $stock_lib ->getSkuInventory($sku_id) ; **完整代码:** ~~~ /** * 通过ERPSKUID获取SKU的网店可售库存(电商库存同步用) * qjm 2022-05-16 add 添加了排除掉库存不需要同步到线上的门店的逻辑 * @param $sku_id * @return int */ public function getSkuInventory($sku_id) { // 查询不需要进行电商库存同步的门店 $map_shop['open_status'] = array('eq', 1); // 是否常用店铺:1是2否 $map_shop['need_sync'] = array('eq', 2); // 库存是否需要同步到网店1表示需要,2表示不需要,默认2 $map_shop['is_delete'] = 0; // 是否删除,0未删除(默认),1删除 $shop_list = M('shops') ->field('id') ->where($map_shop) ->select(); $need_shops = array_column($shop_list,'id'); // 库存查询条件中要排除掉库存不需要同步到网店的门店 // 如果需要排除的门店数组不为空 if (!empty($need_shops)) { $where['it.shops_id'] = array('not in', $need_shops); // 库存需要同步到网店的门店 } $where['it.sku_id'] = array('eq', $sku_id); // 唯一码对应的SKU ID $where['it.inventory_status'] = array('in', array(1, 3)); // 库存状态:0.不可销售、1.可销售、2.门店可销售、3.网店可销售、4.已销售、5.已停售 $where['it.delivery_status'] = array('in', array(1, 2)); // 物流状态 1已入库 2已入店 不包括物流中商品 2020-09-04 jig add $where['it.is_delete'] = array('eq', 0); // 伪删除状态: 0(未删除)、1(已删除) $where['it.is_flaw'] = array('eq', '0'); // 瑕疵品 $count = M('goods_item as it')->where($where)->count(); // 统计唯一码库存 //进行锁库查询 $goods_sku = M('goods_sku')->where('id='.$sku_id)->getField('goods_sku'); // 通过ID获取SKU编码 $lock_info = M('goods_sku_lock') ->field('lock_num') ->where(array('goods_sku'=>$goods_sku,'lock_status'=>0)) ->select(); if ($lock_info) { $lock_num = 0; foreach ($lock_info as $key => $value) { $lock_num += $value['lock_num']; } } // 计算可售库存 $result = $count-$lock_num; // 判断是否小于0,若是则等于0 if ($result < 0) { $result = 0; } return $result; } ~~~