|
|
@@ -23,6 +23,31 @@ class HandInStorageService
|
|
|
{
|
|
|
use ServiceAppAop;
|
|
|
|
|
|
+
|
|
|
+ public function checkAsnOperation(array $info)
|
|
|
+ {
|
|
|
+ if (!$info['customerid']||!$info['asntype']){
|
|
|
+ $asn=OracleDOCASNHeader::query()
|
|
|
+ ->select(['asnno','asnreference1','asnstatus','addtime','customerid','asntype'])
|
|
|
+ ->where('asnno',$info['asnno'])
|
|
|
+ ->whereIn('asnstatus',['00','30'])
|
|
|
+ ->first();
|
|
|
+ if (!$asn)return 1; //无效asn单号
|
|
|
+ return $this->whetherDeliver($asn);
|
|
|
+ }
|
|
|
+ return $this->whetherDeliver($info);
|
|
|
+ }
|
|
|
+
|
|
|
+ private function whetherDeliver($asn)
|
|
|
+ {
|
|
|
+ if ($asn['asntype']!='XNRK' && $asn['asntype']!='THRK' && $asn['asntype']!='F31'){
|
|
|
+ $res=app(DeliveryAppointmentService::class)->checkOperableAsn($asn['asnno']);
|
|
|
+ if ($res) return $asn;
|
|
|
+ else return 2; //当前asn单号无预约记录
|
|
|
+ }
|
|
|
+ return $asn;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @param $asn
|
|
|
* @return Builder[]|Collection
|
|
|
@@ -32,7 +57,7 @@ class HandInStorageService
|
|
|
public function selectAsn($asn)
|
|
|
{
|
|
|
if (!$asn) return OracleDOCASNHeader::query()
|
|
|
- ->select(['asnno','asnreference1','asnstatus','addtime','customerid'])
|
|
|
+ ->select(['asnno','asnreference1','asnstatus','addtime','customerid','asntype'])
|
|
|
->where('asnstatus','00')
|
|
|
->orderByDesc('addtime')
|
|
|
->limit(50)
|
|
|
@@ -40,12 +65,13 @@ class HandInStorageService
|
|
|
|
|
|
if (strpos(strtoupper($asn),'ASN')!==false){
|
|
|
return OracleDOCASNHeader::query()
|
|
|
- ->select(['asnno','asnreference1','asnstatus','addtime','customerid'])
|
|
|
+ ->select(['asnno','asnreference1','asnstatus','addtime','customerid','asntype'])
|
|
|
->where('asnno',$asn)
|
|
|
+ ->whereIn('asnstatus',['00','30'])
|
|
|
->get();
|
|
|
}else {
|
|
|
$asns=OracleDOCASNHeader::query()
|
|
|
- ->select(['asnno','asnreference1','asnstatus','addtime','customerid'])
|
|
|
+ ->select(['asnno','asnreference1','asnstatus','addtime','customerid','asntype'])
|
|
|
->where('customerid',strtoupper($asn))
|
|
|
->whereIn('asnstatus',['00','30'])
|
|
|
->get();
|
|
|
@@ -53,11 +79,11 @@ class HandInStorageService
|
|
|
return $asns;
|
|
|
}else{
|
|
|
$sql = <<<SQL
|
|
|
- SELECT DOC_ASN_HEADER.ASNNO,DOC_ASN_HEADER.addtime,DOC_ASN_HEADER.asnreference1,DOC_ASN_HEADER.customerid,DOC_ASN_HEADER.asnstatus FROM DOC_ASN_HEADER
|
|
|
+ SELECT DOC_ASN_HEADER.ASNNO,DOC_ASN_HEADER.addtime,DOC_ASN_HEADER.asnreference1,DOC_ASN_HEADER.customerid,DOC_ASN_HEADER.asnstatus,DOC_ASN_HEADER.asntype FROM DOC_ASN_HEADER
|
|
|
LEFT JOIN DOC_ASN_DETAILS ON DOC_ASN_HEADER.ASNNO = DOC_ASN_DETAILS.ASNNO
|
|
|
LEFT JOIN BAS_SKU ON DOC_ASN_DETAILS.CUSTOMERID = BAS_SKU.CUSTOMERID AND DOC_ASN_DETAILS.SKU = BAS_SKU.SKU
|
|
|
WHERE DOC_ASN_HEADER.ASNSTATUS in ('00','30') and (BAS_SKU.ALTERNATE_SKU1 = ? OR BAS_SKU.ALTERNATE_SKU2 = ? OR BAS_SKU.ALTERNATE_SKU3 = ?)
|
|
|
-group by DOC_ASN_HEADER.ASNNO,DOC_ASN_HEADER.addtime,DOC_ASN_HEADER.asnreference1,DOC_ASN_HEADER.customerid,DOC_ASN_HEADER.asnstatus
|
|
|
+group by DOC_ASN_HEADER.ASNNO,DOC_ASN_HEADER.addtime,DOC_ASN_HEADER.asnreference1,DOC_ASN_HEADER.customerid,DOC_ASN_HEADER.asnstatus,DOC_ASN_HEADER.asntype
|
|
|
SQL;
|
|
|
return DB::connection("oracle")->select(DB::raw($sql),[$asn,$asn,$asn]);
|
|
|
}
|