|
|
@@ -3,6 +3,7 @@
|
|
|
namespace App\Services;
|
|
|
|
|
|
use App\CommodityBarcode;
|
|
|
+use App\OracleActTransactionLog;
|
|
|
use App\OracleBasCode;
|
|
|
use App\OracleBasCustomer;
|
|
|
use App\OracleBasForwardingLoc;
|
|
|
@@ -526,16 +527,12 @@ sql;
|
|
|
return DB::connection("oracle")->transaction(function () use ($info, $invlotatt, $who, $time) {
|
|
|
//flux 批次号
|
|
|
$lotNum = $this->getOrCreateLotNum($info, $invlotatt, $who, $time);
|
|
|
- if (!$lotNum) {
|
|
|
- DB::connection("oracle")->rollBack();
|
|
|
- return false;
|
|
|
- }
|
|
|
+ if (!$lotNum) return false;
|
|
|
+
|
|
|
//flux 创建入库事务
|
|
|
$actTransactionLog = $this->setFluxActTransactionLog($info, $lotNum, $who, $time);
|
|
|
- if (!$actTransactionLog) {
|
|
|
- DB::connection("oracle")->rollBack();
|
|
|
- return false;
|
|
|
- }
|
|
|
+ if (count($actTransactionLog)==0) return false;
|
|
|
+
|
|
|
//flux 创建上架任务
|
|
|
$this->setFluxTskTaskListPA($info, $invlotatt, $actTransactionLog, $who, $time);
|
|
|
//flux 完善库存余量
|
|
|
@@ -692,7 +689,13 @@ sql;
|
|
|
if ($info['trackNumber']) $trackNumber = $info['trackNumber'];
|
|
|
else $trackNumber = substr(md5($time), 0, 30);
|
|
|
$asnHeader = OracleDOCASNHeader::query()->where('asnno', $info['asnno'])->first();
|
|
|
- $asnDetail = OracleDOCASNDetail::query()->where('asnno', $info['asnno'])->where('sku', $info['sku'])->first();
|
|
|
+ $asnDetail = OracleDOCASNDetail::query()->where('asnno', $info['asnno'])
|
|
|
+ ->where('asnlineno',$info['asnlineno'])->where('sku', $info['sku'])->first();
|
|
|
+ //添加超收判断
|
|
|
+ $actTransactionLogQty=OracleActTransactionLog::query()->where('docno',$info['asnno'])
|
|
|
+ ->where('doclineno',$info['asnlineno'])->where('fmsku', $info['sku'])->count('fmqty');
|
|
|
+ if ((int)($info['amount']+$actTransactionLogQty)>(int)$asnDetail['expectedqty'])return [];
|
|
|
+
|
|
|
$sql = <<<sql
|
|
|
INSERT INTO ACT_TRANSACTION_LOG VALUES(?,'IN',?,?,?,?,'ASN',?,?,?,?,?,?,?,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,
|
|
|
TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,?,null,null,null,?,?,?,?,?,?,?,?,
|
|
|
@@ -796,4 +799,43 @@ sql;
|
|
|
->where("name", "flux_ts_number")
|
|
|
->update(["value" => DB::raw("value+1")]);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param $param
|
|
|
+ * @return array
|
|
|
+ * 获取库存信息
|
|
|
+ */
|
|
|
+ public function getInventoryInfos($param): array
|
|
|
+ {
|
|
|
+ $sql = <<<sql
|
|
|
+select BAS_SKU.SKU,INV_LOT_LOC_ID.CUSTOMERID,BAS_SKU.ALTERNATE_SKU1,INV_LOT_LOC_ID.LOCATIONID,INV_LOT_ATT.LOTATT05,INV_LOT_ATT.LOTATT08,
|
|
|
+ INV_LOT_ATT.LOTATT01,INV_LOT_ATT.LOTATT02,INV_LOT_ATT.LOTATT03,INV_LOT_ATT.LOTATT04,
|
|
|
+ sum(INV_LOT_LOC_ID.QTY) AS QTY from INV_LOT_LOC_ID
|
|
|
+ left join BAS_SKU on INV_LOT_LOC_ID.CUSTOMERID=BAS_SKU.CUSTOMERID and INV_LOT_LOC_ID.SKU =BAS_SKU.SKU
|
|
|
+ left join INV_LOT_ATT on INV_LOT_ATT.LOTNUM=INV_LOT_LOC_ID.LOTNUM where
|
|
|
+sql;
|
|
|
+ if ($this->checkUserOwnerAuth($param)) { //输入条件为货主
|
|
|
+ $sql .= ' INV_LOT_LOC_ID.CUSTOMERID= ?';
|
|
|
+ } else if (preg_match('/^[A-Z]{1,3}[0-9]{2,3}[-][0-9]{2,3}[-][0-9]{2,3}$/', $param)) { //判断是否为库位
|
|
|
+ $sql .= ' INV_LOT_LOC_ID.LOCATIONID= ?';
|
|
|
+ } else {
|
|
|
+ $sql .= " BAS_SKU.SKU in ( select SKU from BAS_SKU where ALTERNATE_SKU1=? union
|
|
|
+ select SKU from BAS_SKU where ALTERNATE_SKU2=? union
|
|
|
+ select SKU from BAS_SKU where ALTERNATE_SKU3=? union
|
|
|
+ select SKU from BAS_SKU where SKU=? )";
|
|
|
+ }
|
|
|
+
|
|
|
+ $sql .= ' group by BAS_SKU.SKU,INV_LOT_LOC_ID.CUSTOMERID,BAS_SKU.ALTERNATE_SKU1,INV_LOT_LOC_ID.LOCATIONID,
|
|
|
+ INV_LOT_ATT.LOTATT05,INV_LOT_ATT.LOTATT08,INV_LOT_ATT.LOTATT01,INV_LOT_ATT.LOTATT02,INV_LOT_ATT.LOTATT03,INV_LOT_ATT.LOTATT04';
|
|
|
+ if ($this->checkUserOwnerAuth($param)){
|
|
|
+ $invLots = DB::connection("oracle")->select(DB::raw($sql), [strtoupper($param)
|
|
|
+ ]);
|
|
|
+ }else if(preg_match('/^[A-Z]{1,3}[0-9]{2,3}[-][0-9]{2,3}[-][0-9]{2,3}$/', $param)){
|
|
|
+ $invLots = DB::connection("oracle")->select(DB::raw($sql), [$param]);
|
|
|
+ }else{
|
|
|
+ $invLots = DB::connection("oracle")->select(DB::raw($sql), [$param,$param,$param,$param]);
|
|
|
+ }
|
|
|
+ if (!$invLots) return [];
|
|
|
+ else return $invLots;
|
|
|
+ }
|
|
|
}
|