$parameter['merchant_id'], 'purchase_order_id' => $parameter['purchase_order_id'], ]; switch ($parameter['user_type']) { case 1: $payableModel = new PurchasePayableModel(); break; case 2: $payableModel = new SPurchasePayableModel(); $where['store_id'] = $parameter['store_id']; break; } try { if ($parameter['payable_money'] > 0) { $save = $payableModel->updateSetInc($where, "payable_money", $parameter['payable_money']); } else { $parameter['payable_money'] = abs($parameter['payable_money']); $save = $payableModel->updateSetDec($where, "payable_money", $parameter['payable_money']); } if ($save) { return ['status' => 1, 'message' => '修改成功']; } else { return ['status' => 0, 'message' => '暂无修改']; } } catch (\Exception $e) { return ['status' => 0, 'message' => '暂无修改']; } } /** * 采购应付款统计 * @param $parameter * [ * user_type 1商户 2门店 * merchant_id * store_id * order_number 批次号 * supplier_id 供货商id * pay_status pay_status * add_time 时间 * ] * @return array * [ * status * message * data=>[ * list 列表 * count 条数 * ] * ] */ public function payableTotal($parameter) { $verify = $this->payableListVerify($parameter); //参数验证 if ($verify['status'] != 1) { return $verify; } $where = $this->payableListTerm($parameter); //查询条件 switch ($parameter['user_type']) { case 1: //商户 $payableModel = new PurchasePayableModel(); break; case 2: //门店 $payableModel = new SPurchasePayableModel(); break; } $list = $payableModel->getSelect($where, '', '', "payable_money,paid_money"); $payable_money = 0; //应付 $paid_money = 0; //已付 $stay_money = 0; //待付 if ($list) { foreach ($list as $val) { $payable_money += $val['payable_money']; $paid_money += $val['paid_money']; } $stay_money = round($payable_money - $paid_money, 2); } $TotalList = [ [ 'payable_money' => $payable_money, 'paid_money' => $paid_money, 'stay_money' => $stay_money ] ]; return callBack(statusCode()['success'], "查询成功", ['TotalList' => $TotalList]); } /** * 采购应付款列表 * @param $parameter * [ * user_type 1商户 2门店 * merchant_id * store_id * order_number 批次号 * supplier_id 供货商id * pay_status pay_status * add_time 时间 * ] * @return array * [ * status * message * data=>[ * list 列表 * count 条数 * ] * ] */ public function payableList($parameter) { $verify = $this->payableListVerify($parameter); //参数验证 if ($verify['status'] != 1) { return $verify; } $page = $parameter['page'] ? $parameter['page'] : ''; $limit = $parameter['limit'] ? $parameter['limit'] : ''; $where = $this->payableListTerm($parameter); //查询条件 switch ($parameter['user_type']) { case 1: //商户 $payableModel = new PurchasePayableModel(); $SupplierModel = new SupplierModel(); break; case 2: //门店 $payableModel = new SPurchasePayableModel(); $SupplierModel = new SSupplierModel(); break; } $list = $payableModel->getSelect($where, $page, $limit, "*"); if ($list) { $JurisdictionUserModel = new JurisdictionUserModel(); $count = $payableModel->getCount($where); foreach ($list as $key => &$val) { $val['index'] = $key + 1; $val['purchase_time'] = date("Y-m-d H:i:s", $val['purchase_time']); $val['payable_money'] = round($val['payable_money'], 2); $val['paid_money'] = round($val['paid_money'], 2); $val['stay_money'] = round($val['payable_money'] - $val['paid_money'], 2); $val['supplier_name'] = $SupplierModel->getFindField(array('id' => $val['supplier_id']), "supplier_name"); $val['operator'] = $JurisdictionUserModel->getFind(['id' => $val['operator_id']])['name']; if ($val['paid_money'] == 0) { $val['pay_name'] = "待付款"; } else if ($val['paid_money'] < $val['payable_money']) { $val['pay_name'] = "部分付款"; } else if ($val['paid_money'] >= $val['payable_money']) { $val['pay_name'] = "已付款"; } } } return callBack(statusCode()['success'], "查询成功", ['list' => $list, 'count' => $count ? $count : 0]); } /** * 采购应付款导出 * @param $parameter * @throws \PHPExcel_Exception * @throws \PHPExcel_Reader_Exception * @throws \PHPExcel_Writer_Exception */ public function payableListExport($parameter) { $result = $this->payableList($parameter); $fileds_name = "采购应付款导出"; $arr = array( array('index', "序号"), array('supplier_name', "供货商"), array("purchase_order_number", "批次号"), array("operator", "操作人"), array("purchase_time", "采购时间"), array("payable_money", "应付金额"), array("paid_money", "已付金额"), array("stay_money", "待付金额"), array("pay_name", "付款状态"), ); $str = $fileds_name . ",导出日期为" . date("Y-m-d H:i:s", time()); getExcel($fileds_name, $arr, $result['data']['list'], $str); } /** * 采购应付款列表的where查询条件 * @param $parameter * [ * user_type 1商户 2门店 * merchant_id * store_id * order_number 批次号 * supplier_id 供货商id * pay_status pay_status * add_time 时间 * ] * @return mixed */ public function payableListTerm($parameter) { if (!empty($parameter['order_number'])) { $where['purchase_order_number'] = array('like', '%' . $parameter['order_number'] . "%"); } if (!empty($parameter['supplier_id'])) { $where['supplier_id'] = $parameter['supplier_id']; } switch ($parameter['pay_status']) { case 1: //待付款 $where['paid_money'] = 0; break; case 2: //部分付款 $where['paid_money'] = ['gt', 0]; $where['_string'] = "paid_money < payable_money"; break; case 3: //已付款 $where['_string'] = "paid_money >= payable_money"; break; } if (!empty($parameter['add_time'])) { if (!is_array($parameter['add_time'])) { $parameter['add_time'] = explode(',', $parameter['add_time']); } $start_time = strtotime($parameter['add_time'][0]); $end_time = strtotime($parameter['add_time'][1]); $where['purchase_time'] = array('between', array($start_time, $end_time)); } if ($parameter['user_type'] == 2) { $where['store_id'] = $parameter['store_id']; } $where['merchant_id'] = $parameter['merchant_id']; return $where; } /** * 采购应付款列表的参数验证 * @param $parameter * [ * user_type 1商户 2门店 * merchant_id * store_id * ] * @return array * [ * status * message * ] */ public function payableListVerify($parameter) { if (!in_array($parameter['user_type'], [1, 2])) { return callBack(statusCode()['error'], "未知请求源"); } if (empty($parameter['merchant_id']) || ($parameter['user_type'] == 2 && empty($parameter['store_id']))) { return callBack(statusCode()['error'], "参数缺少"); } return callBack(statusCode()['success'], "验证成功"); } }