TimestampBehavior::class, 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'], ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'], ], ], ]; } //关联产品 public function getOrderItems(){ return $this->hasMany(ProductOrderItems::class, ['product_order_id' => 'id']); } //关联门店 public function getStore() { return $this->hasOne(Store::class, ['id' => 'store_id']); } //关联医生 public function getDoctor() { return $this->hasOne(DoctorInfo::class, ['su_id' => 'su_id']); } //关联快递单号 public function getExpressNos() { return $this->hasOne(ExpressNos::class, ['id' => 'express_no_id']); } //关联已通过审核的处方 public function getApprovedPrescription(){ return $this->hasOne(Prescription::class, ['id' => 'p_id'])->where(['yii_prescription.status' => 1]); } //关联处方 public function getPrescription() { return $this->hasOne(Prescription::class, ['id' => 'p_id']); } //关联患者 public function getUserPatient() { return $this->hasOne(UserPatient::class, ['id' => 'up_id']); } //关联用户 public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id']); } // public function getProductOrderRefund() { return $this->hasOne(ProductOrderRefund::class, ['order_id' => 'id']); } //get transaction_id public static function getSHH($order_no=null) { return PaymentProductOrder::find()->where(['is_pay'=>1,'order_no'=>$order_no])->andWhere(['not', ['transaction_id' => null]])->one(); } //导出 public static function inventory($params,$store_id) { if($store_id){ $where['store_id'] = $store_id; } $where = $andWhere = []; //统计时间范围 if (!empty($params['start_time']) && !empty($params['end_time'])) { $start_time = strtotime($params['start_time']); $end_time = strtotime($params['end_time']); $andWhere = ['between', 'created_at', $start_time, $end_time]; } if(isset($params['status']) && $params['status'] !== null && $params['status'] !== ""){ if($params['status'] == 3){ $where['status'] = [3,6,7]; }else{ $where['status'] = $params['status']; } } if(isset($params['refund_status'])){ $where['refund_status'] = $params['after_status']; } // return $data; //查询数据 $list = ProductOrder::find()->where($where)->andWhere($andWhere)->with(['prescription', 'doctor','store'])->asArray()->all(); //把结果按照显示顺序存到返回的数组中 if (!empty($list)) { foreach ($list as $key => $value) { $ProductOrder=self::getSHH($value['order_no']); $inventory[$key]['epl_order_no'] = "\t".$ProductOrder->transaction_id??'暂无';//易票联订单号 $inventory[$key]['order_no'] = "\t" . $value['order_no'];//订单号 $inventory[$key]['store'] = "\t" . $value['store']['name'];//诊所名称 $content = $value['prescription']; $item = []; if ($content['prescription_type']==1 ||$content['prescription_type']==3){//中药 配方颗粒 $repice = json_decode($content['content'], true)['repice']; foreach ($repice as $val) { foreach (json_decode($val['content']) as $vv) { $item['drug_name'] .= $vv->name . '|'; $item['specification'] .= $vv->specification . '|' ?? '无' . '|'; $item['source'] .= $vv->source . '|' ?? '无' . '|'; $item['unit_price'] .= $vv->price . '|' ?? '无' . '|'; } } } else {//西药 $repice = json_decode($content['content'], true)['repice']; if(!empty($repice)){ foreach ($repice as $val) { $item['drug_name'] .= json_decode($val['content'], true)['drug_name'] . '|'; $item['specification'] .= json_decode($val['content'], true)['specification'] . '|' ?? '无' . '|'; $item['source'] .= json_decode($val['content'], true)['source'] . '|' ?? '无' . '|'; $item['unit_price'] .= $val['total_price'] . '|' ?? '无' . '|'; } } } $inventory[$key]['drug_name'] = $item['drug_name']; $inventory[$key]['specification'] = $item['specification'];//规格 $inventory[$key]['source'] = $item['source'];//厂家 $inventory[$key]['unit_price'] = $item['unit_price'];//单价 $inventory[$key]['process_price'] = $value['process_price']; $inventory[$key]['treatement_price'] = $value['treatement_price']; $inventory[$key]['items_price'] = $value['items_price']; $inventory[$key]['market_price'] = $value['market_price']; $inventory[$key]['total_price'] = $value['total_pay_price']; $inventory[$key]['trans_expenses'] = $value['trans_expenses']; // $inventory[$key]['drugstore'] = $value['drugStore']['name']; $inventory[$key]['doctor'] = $value['doctor']['name']; //订单状态 if ($value['status'] == 0) $inventory[$key]['status'] = '未支付'; if ($value['status'] == 1) $inventory[$key]['status'] = '待发货'; if ($value['status'] == 2) $inventory[$key]['status'] = '待收货'; if ($value['status'] == 4) $inventory[$key]['status'] = '已退款'; if ($value['status'] == 5) $inventory[$key]['status'] = '退款中'; if ($value['status'] == 3 || $value['status'] == 6 || $value['status'] == 7) $inventory[$key]['status'] = '已完成'; if ($value['status'] == 9) $inventory[$key]['status'] = '已取消'; //售后 if ($value['refund_status'] == 0) $inventory[$key]['after_status'] = '暂无'; if ($value['refund_status'] == 1) $inventory[$key]['after_status'] = '申请退款'; if ($value['refund_status'] == 2) $inventory[$key]['after_status'] = '同意退款'; if ($value['refund_status'] == 3) $inventory[$key]['after_status'] = '已退款'; if ($value['refund_status'] == 9) $inventory[$key]['after_status'] = '取消退款'; $inventory[$key]['created_at'] = date('Y-m-d H:i:s', $value['created_at']);//下单时间 $inventory[$key]['accept_name'] = $value['express_name'];// json_decode($value['address'])->name; $inventory[$key]['accept_tel'] = $value['express_mobile'];//json_decode($value['address'])->mobile; $inventory[$key]['accept_address'] = $value['express_region'] . $value['express_address'];//json_decode($value['address'])->region; //支付时间 if ($value['pay_time']==0){ $inventory[$key]['pay_time'] = '暂无'; }else{ $inventory[$key]['pay_time'] = date('Y-m-d H:i:s', $value['pay_time']); } } } else { $inventory[0]['product_order'] = '无数据导出'; } return $inventory; } }