|
|
@@ -3,43 +3,129 @@
|
|
|
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'=>'提交的单据号为空'];
|
|
|
- $processContent=[
|
|
|
- 'wms_code'=>$wms_code,
|
|
|
- 'owner_name'=>'TestOwner',
|
|
|
- 'owner_id'=>'2',
|
|
|
- 'commodities'=>[[
|
|
|
- 'id'=>'1',
|
|
|
- 'name'=>'TestCommodityName',
|
|
|
- 'barcode'=>'TestCommodityBarcode',
|
|
|
- 'sku'=>'TestCommoditySKU',
|
|
|
- 'barcodes'=>[[
|
|
|
- 'code'=>'test01',
|
|
|
- 'commodity_id'=>1
|
|
|
- ]]
|
|
|
- ],[
|
|
|
- 'id'=>'2',
|
|
|
- 'name'=>'TestCommodityName1',
|
|
|
- 'barcode'=>'TestCommodityBarcode1',
|
|
|
- 'sku'=>'TestCommoditySKU1',
|
|
|
- 'barcodes'=>[[
|
|
|
- 'code'=>'asddddddddddddddddddddddddddddddddd',
|
|
|
- 'commodity_id'=>2
|
|
|
- ],[
|
|
|
- 'code'=>'56464899999999999999999999999999',
|
|
|
- 'commodity_id'=>2
|
|
|
- ]]
|
|
|
- ]],
|
|
|
- 'bill_type'=>'移库单',
|
|
|
- 'amount'=>'50',
|
|
|
- ];
|
|
|
- return json_encode($processContent);
|
|
|
+ $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;
|
|
|
}
|
|
|
}
|