|
|
@@ -10,6 +10,8 @@ use App\Events\DeliveryAppointmentEvent;
|
|
|
use App\Imports\AppointmentDetail;
|
|
|
use App\Jobs\DeliveryAppointmentCheck;
|
|
|
use App\Logistic;
|
|
|
+use App\OracleDOCASNHeader;
|
|
|
+use App\OracleDOCOrderHeader;
|
|
|
use App\Store;
|
|
|
use App\Warehouse;
|
|
|
use Carbon\Carbon;
|
|
|
@@ -130,16 +132,24 @@ class DeliveryAppointmentController extends Controller
|
|
|
}
|
|
|
|
|
|
private function checkAndGetAsn($codes){
|
|
|
- if ($codes){
|
|
|
- $codes = array_filter(array_unique(preg_split('/[,, ]+/u', $codes)));
|
|
|
- if (count($codes)>0){
|
|
|
- $asnCount = Store::query()->whereIn("asn_code",$codes)->count();
|
|
|
- $codes = count($codes)===$asnCount ? implode(",",$codes) : null;
|
|
|
- }else{
|
|
|
- $codes = null;
|
|
|
- }
|
|
|
- }
|
|
|
- return $codes;
|
|
|
+ if(!$codes) return null;
|
|
|
+
|
|
|
+ $codes = array_filter(array_unique(preg_split('/[,, ]+/u', $codes)));
|
|
|
+ if(count($codes) == 0) return null;
|
|
|
+
|
|
|
+ $asnNos = array_filter($codes,function($item){return str_starts_with($item,'ASN');}); // asn号
|
|
|
+ $asnCount = Store::query()->whereIn("asn_code",$asnNos)->count();
|
|
|
+ if($asnCount!==count($asnNos)) return null;
|
|
|
+
|
|
|
+ $asnReferences = array_filter($codes,function($item){return !str_starts_with($item,'ASN');}); // 上游单号
|
|
|
+ $docAsnHeaderAsnNos = OracleDOCASNHeader::query()->select('asnNo')->whereIn('ASNReference1',$codes)->get()->map(function ($item) {
|
|
|
+ return $item->asnno;
|
|
|
+ })->toArray();
|
|
|
+
|
|
|
+ $asnCount = Store::query()->whereIn("asn_code",$docAsnHeaderAsnNos)->count();
|
|
|
+ if($asnCount !== count($asnReferences)) return null;
|
|
|
+
|
|
|
+ return implode(",",array_unique(array_merge($asnNos,$docAsnHeaderAsnNos)));
|
|
|
}
|
|
|
|
|
|
/**
|