| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- namespace App\Http\Controllers\Api\thirdPart\flux;
- use App\Commodity;
- use App\CommodityBarcode;
- use App\OracleBasSKU;
- use App\OracleDOCASNDetail;
- use App\OracleDOCMovementDetail;
- use App\OracleDOCMovementHeader;
- use App\OracleDOCOrderDetail;
- use App\Http\Controllers\Controller;
- use App\Owner;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- class ProcessController extends Controller
- {
- public function getProcessContent(Request $request){
- $wms_code=$request->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;
- }
- }
|