input('wms_code'); if (!$wms_code)return ['error'=>'提交的单据号为空']; $docASNs=OracleDOCASNDetail::where("ASNNo",$wms_code)->get(); //入库单 if (count($docASNs)>0){ $owner=Owner::where("code",$docASNs[0]->customerid)->first(); if (!$owner)$owner=$this->storeOwner($docASNs[0]->customerid); if (!$owner)return ['error'=>'找到了入库单,但未查询到货主代码!']; $commodities=[]; foreach ($docASNs as $docASN){ $commodity=Commodity::where('sku',$docASN->sku)->first(); if (!$commodity)$commodity = $this->storeCommodity($docASN->customerid,$docASN->sku); if (!$commodity)continue; array_push($commodities,['id'=>$commodity->id,'name'=>$commodity->name, 'barcodes'=>$commodity->barcodes,'sku'=>$commodity->sku,'amount'=>$docASN->expectedqty]); } $processContent=[ 'wms_code'=>$wms_code, 'owner_name'=>$owner->name, 'owner_id'=>$owner->id, 'commodities'=>$commodities, 'bill_type'=>'入库单', ]; return json_encode($processContent); } $docOrders=OracleDOCOrderDetail::where("OrderNo",$wms_code)->get();//出库单 if (count($docOrders)>0){ $owner=Owner::where("code",$docOrders[0]->customerid)->first(); if (!$owner)$owner=$this->storeOwner($docOrders[0]->customerid); if (!$owner)return ['error'=>'找到了入库单,但未查询到货主代码!']; $commodities=[]; foreach ($docOrders as $docOrder){ $commodity=Commodity::where('sku',$docOrder->sku)->first(); if (!$commodity)$commodity = $this->storeCommodity($docOrder->customerid,$docOrder->sku); if (!$commodity)continue; array_push($commodities,['id'=>$commodity->id,'name'=>$commodity->name, 'barcodes'=>$commodity->barcodes,'sku'=>$commodity->sku,'amount'=>$docOrder->qtyordered]); } $processContent=[ 'wms_code'=>$wms_code, 'owner_name'=>$owner->name, 'owner_id'=>$owner->id, 'commodities'=>$commodities, 'bill_type'=>'出库单', ]; return json_encode($processContent); } $docMovementDetails=OracleDOCMovementDetail::where("MDOCNO",$wms_code)->get();//移库单 if (count($docMovementDetails)>0){ $docMovementHeader=OracleDOCMovementHeader::select('CustomerID')->find($wms_code); if (!$docMovementHeader)return ['error'=>'找到了移库单,但未查询移库单表头!']; $owner=Owner::where("code",$docMovementHeader->customerid)->first(); if (!$owner)$owner=$this->storeOwner($docMovementHeader->customerid); if (!$owner)return ['error'=>'找到了入库单,但未查询到货主代码!']; $commodities=[]; foreach ($docMovementDetails as $docMovementDetail){ $commodity=Commodity::where('sku',$docMovementDetail->sku)->first(); if (!$commodity)$commodity = $this->storeCommodity($owner->code,$docMovementDetail->sku); if (!$commodity)continue; array_push($commodities,['id'=>$commodity->id,'name'=>$commodity->name, 'barcodes'=>$commodity->barcodes,'sku'=>$commodity->sku,'amount'=>$docMovementDetail->toqty]); } $processContent=[ 'wms_code'=>$wms_code, 'owner_name'=>$owner->name, 'owner_id'=>$owner->id, 'commodities'=>$commodities, 'bill_type'=>'移库单', ]; return json_encode($processContent); } return ['error'=>'未查到对应单据号']; } private function storeCommodity($owner_code,$sku){ $oracleBasSku=OracleBasSKU::where("CustomerID",$owner_code)->where("SKU",$sku)->first(); if (!$oracleBasSku)return; $owner=Owner::where('code',$owner_code)->first(); if (!$owner)$owner=$this->storeOwner($owner_code); $commodity=new Commodity([ "name"=>$oracleBasSku->descr_c, "sku"=>$oracleBasSku->sku, "owner_id"=>$owner->id, ]); $commodity->save(); if ($oracleBasSku->alternate_sku1){ $barcode=$this->storeCommodityBarCode($oracleBasSku->alternate_sku1,$commodity->id); $commodity->barcodes=[[$barcode]]; } $this->log(__METHOD__, 'FLUX二次加工单接口录入商品__' . __FUNCTION__, json_encode($commodity), Auth::user()['id']); return $commodity; } private function storeCommodityBarCode($code,$commodity_id){ $barcode=new CommodityBarcode([ 'code'=>$code, 'commodity_id'=>$commodity_id, ]); $barcode->save(); $this->log(__METHOD__, 'FLUX二次加工单接口录入商品条码__' . __FUNCTION__, json_encode($barcode), Auth::user()['id']); } private function storeOwner($code){ $owner=new Owner([ "name"=>$code, "code"=>$code ]); $owner->save(); $this->log(__METHOD__, 'FLUX二次加工单接口录入货主__' . __FUNCTION__, json_encode($owner), Auth::user()['id']); return $owner; } }