| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?php
- namespace App\Http\Controllers;
- use App\Exports\Export;
- use App\OracleBasCustomer;
- use App\OracleDOCOrderHeader;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Gate;
- use Maatwebsite\Excel\Facades\Excel;
- class ExitController extends Controller
- {
- public function conditionQuery(Request $request,$orders){
- $ordertime_start=$request->input('ordertime_start');
- $ordertime_end=$request->input('ordertime_end');
- $customerid=$request->input('customerid');
- $soreference1=$request->input('soreference1');
- $soreference5=$request->input('soreference5');
- if ($ordertime_start){
- $ordertime_start=$ordertime_start." 00:00:00";
- $orders=$orders->where('ordertime','>=',$ordertime_start);
- }
- if ($ordertime_end){
- $ordertime_end=$ordertime_end." 23:59:59";
- $orders=$orders->where('ordertime','<=',$ordertime_end);
- }
- if ($customerid)$orders=$orders->where('customerid',$customerid);
- if ($soreference1)$orders=$orders->where('soreference1','like',$soreference1."%");
- if ($soreference5){
- $arr=array_filter(preg_split('/[,, ]+/is', $soreference5));
- $orders=$orders->whereIn('soreference5',$arr);
- }
- return $orders;
- }
- public function forwarding(Request $request){
- if(!Gate::allows('出库管理-发运')){ return redirect(url('/')); }
- $orders=OracleDOCOrderHeader::with(['oracleDOCOrderDetails'=>function($query){
- return $query->select('DOC_Order_Details.orderno','DOC_Order_Details.CustomerID',
- 'DOC_Order_Details.SKU','DOC_Order_Details.QtyOrdered','DOC_Order_Details.OrderLineNo',
- 'BAS_SKU.Alternate_SKU1','BAS_SKU.Descr_C')
- ->leftJoin('BAS_SKU',function ($join){
- $join->on('DOC_Order_Details.CustomerID','=','BAS_SKU.CustomerID')
- ->on('DOC_Order_Details.SKU','=','BAS_SKU.SKU');
- })->orderBy('OrderLineNo');
- }])->select('OrderNo','SOStatus','WAREHOUSEID','CustomerID'
- ,'ConsigneeID','ConsigneeName','C_Tel1','CarrierName','IssuePartyName','WaveNo','SOReference1'
- ,'soreference5','EDISENDFLAG2','EDISendTime2','Notes','ERPCANCELFLAG','Picking_Print_Flag','EDISENDFLAG'
- ,'ReleaseStatus','C_Address1','OrderTime');
- if ($request->input('checkData')){
- $checkData=explode(',',$request->input('checkData'));
- $orders=$orders->whereIn('orderno',$checkData)->get();
- return $this->export($orders);
- }
- if ($request->input('export')){
- $orders=$this->conditionQuery($request,$orders);
- return $this->export($orders->get());
- }
- if ($request->input())$orders=$this->conditionQuery($request,$orders);
- $orders=$orders->paginate($request->input('paginate')??50);
- $customers=OracleBasCustomer::select('customerid','descr_c')->where('customer_type','OW')->where('active_flag','Y')->get();
- $request=$request->input();
- return view('exit/index/forwarding',compact('orders','customers','request'));
- }
- public function batchComments(Request $request){
- if(!Gate::allows('出库管理-批量注释')){ return redirect(url('/')); }
- $checkData=$request->input('checkData');
- $content=$request->input('content');
- $ordersNotNull=OracleDOCOrderHeader::select('OrderNo','Notes')->whereIn('orderno',$checkData)
- ->whereNotNull('notes')->get();
- OracleDOCOrderHeader::select('OrderNo','Notes')->whereIn('orderno',$checkData)
- ->whereNull('notes')->update(['notes'=>$content]);
- $ordersNotNullArr=array_column($ordersNotNull->toArray(),'orderno');
- $ordersNullArr=array_diff($checkData,$ordersNotNullArr);
- $data=[];
- foreach ($ordersNotNull as $order){
- OracleDOCOrderHeader::where('orderno',$order->orderno)->update(["notes"=>($order->notes).",".$content]);
- $order->notes=($order->notes).",".$content;
- array_push($data,$order);
- }
- foreach ($ordersNullArr as $order){
- array_push($data,["orderno"=>$order,'notes'=>$content]);
- }
- return $data;
- }
- function export($orders){
- if(!Gate::allows('出库管理')){ return redirect(url('/')); }
- ini_set('max_execution_time',3500);
- ini_set('memory_limit','3526M');
- $row=[[
- 'orderno'=>'编号',
- 'sostatus'=>'订单状态',
- 'warehouseid'=>'仓库',
- 'oracleBASCustomer_descr_c'=>'客户',
- 'consigneeid'=>'收货人',
- 'consigneename'=>'收货人名称',
- 'c_tel1'=>'收货人电话',
- 'carriername'=>'承运人',
- 'issuepartyname'=>'下单方名称',
- 'waveno'=>'波次编号',
- 'soreference1'=>'客户订单号',
- 'soreference5'=>'快递单号',
- 'edisendflag2'=>'快递获取标记',
- 'edisendtime2'=>'快递获取时间',
- 'sku'=>'产品代码',
- 'alternate_sku1'=>'产品条码',
- 'descr_c'=>'产品名称',
- 'qtyordered'=>'订单数量',
- 'notes'=>'备注',
- 'erpcancelflag'=>'接口取消标记',
- 'picking_print_flag'=>'拣货单打印标记',
- 'edisendflag'=>'接口回传标记',
- 'releasestatus'=>'订单冻结标记',
- 'c_address1'=>'收货人地址',
- ]];
- $list=[];
- $sign=[];
- $mergeCell=[];
- foreach ($orders as $order){
- $data=[
- 'orderno'=>$order->orderno,
- 'sostatus'=>$order->oracleBASCode_codename_c,
- 'warehouseid'=>$order->warehouseid,
- 'oracleBASCustomer_descr_c'=>$order->oracleBASCustomer_descr_c,
- 'consigneeid'=>$order->consigneeid,
- 'consigneename'=>$order->consigneename,
- 'c_tel1'=>$order->c_tel1,
- 'carriername'=>$order->carriername,
- 'issuepartyname'=>$order->issuepartyname,
- 'waveno'=>$order->waveno,
- 'soreference1'=>$order->soreference1,
- 'soreference5'=>$order->soreference5,
- 'edisendflag2'=>$order->edisendflag2,
- 'edisendtime2'=>$order->edisendtime2,
- 'notes'=>$order->notes,
- 'erpcancelflag'=>$order->erpcancelflag,
- 'picking_print_flag'=>$order->picking_print_flag,
- 'edisendflag'=>$order->edisendflag,
- 'releasestatus'=>$order->releasestatus,
- 'c_address1'=>$order->c_address1,
- ];
- if (count($order->oracleDOCOrderDetails)<1){
- $data['sku']='';
- $data['alternate_sku1']='';
- $data['descr_c']='';
- $data['qtyordered']='';
- array_push($list,$data);
- continue;
- }
- foreach ($order->oracleDOCOrderDetails as $oracleDOCOrderDetail){
- $data['sku']=$oracleDOCOrderDetail->sku;
- $data['alternate_sku1']=$oracleDOCOrderDetail->alternate_sku1;
- $data['descr_c']=$oracleDOCOrderDetail->descr_c;
- $data['qtyordered']=$oracleDOCOrderDetail->qtyordered;
- if (isset($sign[$order->orderno])){
- $data['orderno']='';$data['sostatus']='';$data['warehouseid']='';$data['oracleBASCustomer_descr_c']='';$data['consigneeid']='';$data['consigneename']='';
- $data['c_tel1']='';$data['carriername']='';$data['issuepartyname']='';$data['waveno']='';$data['soreference1']='';$data['soreference5']='';
- $data['edisendflag2']='';$data['edisendtime2']='';$data['notes']='';$data['erpcancelflag']='';$data['picking_print_flag']='';$data['edisendflag']='';
- $data['releasestatus']='';$data['c_address1']='';
- array_push($list,$data);
- continue;
- }
- array_push($list,$data);
- $sign[$order->orderno]=count($list)+1;
- }
- if (count($order->oracleDOCOrderDetails)>1){
- $mergeCell[$sign[$order->orderno]]=$sign[$order->orderno]+(count($order->oracleDOCOrderDetails)-1);
- }
- }
- $columnName=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","S","T","U","V","W","X"];
- return Excel::download(new Export($row,$list,$mergeCell,$columnName),date('YmdHis', time()).'-出库发运单.xlsx');
- }
- }
|