databaseService = $service->db; $this->error = $service->error; } /** * 获取错误信息 * * @return string|null */ public function getError() { return $this->error; } public function purchaseRequisition($data, $user){ $qx = $user['qx']; $order_date = $data['order_date'] ?? []; $order_date = array_filter($order_date); $order_number = $data['order_number'] ?? ""; $model = $this->databaseService->table('PU_AppVouch as a') ->leftJoin('Person as c', 'c.cPersonCode', 'a.cPersonCode') ->when(empty($qx), function ($query) use($user){ return $query->where('a.cMaker',$user['username']); }) ->when(! empty($order_number), function ($query) use($order_number){ return $query->where('a.cCode','LIKE', '%'.$order_number.'%'); }) ->when(! empty($order_date), function ($query) use($order_date){ $start = date('Y-m-d H:i:s.000', $order_date[0]); $end = date('Y-m-d H:i:s.000', $order_date[1]); return $query->whereBetween('a.dDate', [$start, $end]); }) ->where(function ($query) { $query->where('a.iverifystateex', 0) ->OrwhereNull('a.iverifystateex'); }) ->select('a.cMaker as crt_name', DB::raw("COALESCE(c.cPersonName, '') as purchase_name"),'a.cBusType as business_type','a.cCode as order_number',DB::raw("CONVERT(varchar(10), a.dDate, 120) as order_date")) ->orderBy('a.ID','desc'); $list = $this->limit($model,'',$data); $list = $this->fillAll($list, 3); return [true , $list]; } public function purchaseRequisitionDetail($data, $user){ if(empty($data['order_number'])) return [false, '采购请购单号不能为空']; $order = $this->databaseService->table('PU_AppVouch as a') ->leftJoin('Person as c', 'c.cPersonCode', 'a.cPersonCode') // ->where('a.cMaker',$user['username']) // ->where('a.iverifystateex',0) ->select('a.cMaker as crt_name', DB::raw("COALESCE(c.cPersonName, '') as purchase_name"),'a.cBusType as business_type','a.cCode as order_number',DB::raw("CONVERT(varchar(10), a.dDate, 120) as order_date"),'a.ID as id') ->first(); if(empty($order)) return [false, '采购请购单不存在']; $order = (array) $order; $detail = $this->databaseService->table('PU_AppVouchs as a') ->leftJoin('Inventory as b', 'b.cInvCode', 'a.cInvCode') ->leftJoin('ComputationUnit as c', 'c.cComunitCode', 'b.cComUnitCode') ->where('a.ID', $order['id']) ->select('b.cInvName as product_title','b.cInvCode as product_code','a.fQuantity as quantity','c.cComUnitName as unit_title',DB::raw("CONVERT(varchar(10), a.dRequirDate, 120) as need_arrived_date")) ->get(); // 转为数组的数组 $detail = array_map(function ($item) { return (array) $item; }, $detail->toArray()); $order['detail'] = $detail; return [true, $order]; } public function purchaseOrder($data, $user){ $qx = $user['qx']; $order_date = $data['order_date'] ?? []; $order_date = array_filter($order_date); $order_number = $data['order_number'] ?? ""; $model = $this->databaseService->table('PO_Pomain as a') ->leftJoin('Vendor as c', 'c.cVenCode', 'a.cVenCode') ->when(empty($qx), function ($query) use($user){ return $query->where('a.cMaker',$user['username']); }) ->when(! empty($order_number), function ($query) use($order_number){ return $query->where('a.cPOID','LIKE', '%'.$order_number.'%'); }) ->when(! empty($order_date), function ($query) use($order_date){ $start = date('Y-m-d H:i:s.000', $order_date[0]); $end = date('Y-m-d H:i:s.000', $order_date[1]); return $query->whereBetween('a.dPODate', [$start, $end]); }) ->where('a.iverifystateex',0) ->select('a.cMaker as crt_name', 'a.cBusType as business_type','a.cPOID as order_number',DB::raw("CONVERT(varchar(10), a.dPODate, 120) as order_date"),'c.cVenName as supplier_title') ->orderBy('a.POID','desc'); $list = $this->limit($model,'',$data); $list = $this->fillAll($list, 1); return [true , $list]; } public function purchaseOrderDetail($data, $user){ if(empty($data['order_number'])) return [false, '采购单号不能为空']; $order = $this->databaseService->table('PO_Pomain as a') ->leftJoin('Vendor as c', 'c.cVenCode', 'a.cVenCode') // ->where('a.cMaker',$user['username']) // ->where('a.iverifystateex',0) ->select('a.cMaker as crt_name', 'a.cBusType as business_type','a.cPOID as order_number',DB::raw("CONVERT(varchar(10), a.dPODate, 120) as order_date"),'c.cVenName as supplier_title','a.POID as id') ->first(); if(empty($order)) return [false, '采购单不存在']; $order = (array) $order; $detail = $this->databaseService->table('PO_Podetails as a') ->leftJoin('Inventory as b', 'b.cInvCode', 'a.cInvCode') ->leftJoin('ComputationUnit as c', 'c.cComunitCode', 'b.cComUnitCode') ->where('a.POID', $order['id']) ->select('b.cInvName as product_title','b.cInvCode as product_code','a.iQuantity as quantity','c.cComUnitName as unit_title','a.iSum as amount') ->get(); // 转为数组的数组 $detail = array_map(function ($item) { return (array) $item; }, $detail->toArray()); $order['detail'] = $detail; return [true, $order]; } public function paymentOrder($data, $user){ $qx = $user['qx']; $order_date = $data['order_date'] ?? []; $order_date = array_filter($order_date); $order_number = $data['order_number'] ?? ""; $model = $this->databaseService->table('AP_ApplyPayVouch as a') ->leftJoin('Vendor as c', 'c.cVenCode', 'a.cDwCode') ->when(empty($qx), function ($query) use($user){ return $query->where('a.cOperator',$user['username']); }) ->when(! empty($order_number), function ($query) use($order_number){ return $query->where('a.cVouchID','LIKE', '%'.$order_number.'%'); }) ->when(! empty($order_date), function ($query) use($order_date){ $start = date('Y-m-d H:i:s.000', $order_date[0]); $end = date('Y-m-d H:i:s.000', $order_date[1]); return $query->whereBetween('a.dVouchDate', [$start, $end]); }) ->whereNull('a.cCheckMan') ->select('a.cOperator as crt_name', 'c.cVenName as supplier_title','a.cVouchID as order_number',DB::raw("CONVERT(varchar(10), a.dVouchDate, 120) as order_date")) ->orderBy('a.PID','desc'); $list = $this->limit($model,'',$data); $list = $this->fillAll($list, 3); return [true , $list]; } public function paymentOrderDetail($data, $user){ if(empty($data['order_number'])) return [false, '付款单号不能为空']; $order = $this->databaseService->table('AP_ApplyPayVouch as a') ->leftJoin('Vendor as c', 'c.cVenCode', 'a.cDwCode') // ->where('a.cOperator',$user['username']) // ->whereNull('a.cCheckMan') ->select('a.cOperator as crt_name', 'c.cVenName as supplier_title','a.cVouchID as order_number',DB::raw("CONVERT(varchar(10), a.dVouchDate, 120) as order_date"),'a.PID as id') ->first(); if(empty($order)) return [false, '付款单不存在']; $order = (array) $order; $detail = $this->databaseService->table('AP_ApplyPayVouchs as a') ->where('a.PID', $order['id']) ->select('a.cSource as source','a.cCoVouchID as source_order_number','a.iApplyAmt_f as amount') ->get(); // 转为数组的数组 $detail = array_map(function ($item) { return (array) $item; }, $detail->toArray()); $order['detail'] = $detail; return [true, $order]; } public function getOrderDetails($data,$user){ $type = $data['type']; if($type == 1){ // 采购单 [$success, $order] = $this->purchaseOrderDetail($data,$user); }elseif ($type == 2){ // 请购单 [$success, $order] = $this->purchaseRequisitionDetail($data,$user); }else{ // 付款单 [$success, $order] = $this->paymentOrderDetail($data,$user); } return [$success, $order]; } private function fillAll($list, $type){ if(empty($list['data'])) return $list; $map = Record::where('del_time',0) ->where('type', $type) ->whereIn('order_number',array_column($list['data'],'order_number')) ->pluck('id','order_number') ->toArray(); foreach ($list['data'] as $key => $value){ $is_create = 0; if(isset($map[$value->order_number])) $is_create = 1; $list['data'][$key]->is_create = $is_create; } return $list; } }