You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
291 lines
11 KiB
291 lines
11 KiB
<?php
|
|
|
|
namespace app\admin\controller\ykjp\sell;
|
|
|
|
use app\common\controller\Backend;
|
|
use think\Db;
|
|
|
|
/**
|
|
* 销售订单主管理
|
|
*
|
|
* @icon fa fa-circle-o
|
|
*/
|
|
class Selllist extends Backend {
|
|
|
|
/**
|
|
* Selllist模型对象
|
|
* @var \app\admin\model\ykjp\sell\Selllist
|
|
*/
|
|
protected $model = null;
|
|
protected $distinguish = true;
|
|
protected $searchFields = "id";
|
|
protected $dataLimitField = 'admin_id';
|
|
|
|
public function _initialize() {
|
|
parent::_initialize();
|
|
$this->model = new \app\admin\model\ykjp\sell\Selllist;
|
|
$yjconfig=get_addon_config("ykjp");
|
|
if($yjconfig['cinfo']==0){
|
|
$this->distinguish=false;
|
|
}else if($yjconfig['cinfo']==1){
|
|
$this->distinguish=true;
|
|
$this->dataLimit="auth";
|
|
}else{
|
|
$this->distinguish=true;
|
|
$this->dataLimit="personal";
|
|
}
|
|
}
|
|
public function index() {
|
|
// var_dump(111);exit;
|
|
$this->searchFields="customer_name";
|
|
return parent::index();
|
|
}
|
|
|
|
/**
|
|
* 查看详情
|
|
*/
|
|
public function detail($ids) {
|
|
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
|
|
$detail = $this->model
|
|
->where($where)
|
|
->where('firmid', $this->auth->firmid)
|
|
->order($sort, $order)
|
|
->where("id", $ids)
|
|
->select();
|
|
$productModel = new \app\admin\model\ykjp\sell\Product;
|
|
$product = $productModel->with(['products'])->where("sell_id", $ids)->select();
|
|
$arr;
|
|
if ($product) {
|
|
foreach ($product as $key => $value) {
|
|
$a = json_decode($value['products']['prop']);
|
|
$value['products']['prop'] = $this->model->object_array($a);
|
|
$arr[] = $value;
|
|
}
|
|
}
|
|
$this->assign("detail", $detail);
|
|
$this->assign("product", $product);
|
|
return $this->view->fetch("detail");
|
|
}
|
|
|
|
/**
|
|
* 编辑销售单
|
|
*/
|
|
public function edit($ids = null) {
|
|
|
|
if ($this->request->isAjax()) {
|
|
|
|
if ($ids == null) {
|
|
$this->error(__('fail'));
|
|
}
|
|
$product = $this->request->param("product/a");
|
|
$row = $this->request->param("row/a");
|
|
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
|
|
$isRset = $this->model
|
|
->where("firmid", $this->auth->firmid)
|
|
->where("id", $ids)
|
|
->select();
|
|
//获取客户模型
|
|
$customerModel = new \app\admin\model\ykjp\information\basisinfo\Customerinfo;
|
|
$customer = $customerModel->get(['id' => $row['customer_info_id'], "firmid" => $this->auth->firmid]);
|
|
if (!$isRset) {
|
|
$this->error(__('fail'));
|
|
}
|
|
if (isset($isRset[0]['status_list']) && $isRset[0]['status_list'] != 1) {
|
|
$this->error(__('not editable'));
|
|
}
|
|
$row['code'] = (isset($row['code']) && $row['code'] != "") ? $row['code'] : "YK" . date("ymdHis", time()) . rand(1000, 9999);
|
|
$row['customer_name'] = $customer["name"]; //客户姓名
|
|
$row['delivery_time'] = strtotime($row['delivery_time']); //交货日期
|
|
$row['billing_time'] = strtotime($row['billing_time']); //制单日期
|
|
$row['updatetime'] = time(); //更新时间
|
|
$dataRow = $this->model
|
|
->where("id", $ids)
|
|
->update($row);
|
|
|
|
if (!$product) {
|
|
$this->error(__('Product cannot be empty'));
|
|
}
|
|
$product = json_decode($product[0]);
|
|
$product = $this->model->object_array($product);
|
|
|
|
//销售副表
|
|
$sellProduct = new \app\admin\model\ykjp\sell\Product;
|
|
$where = [];
|
|
foreach ($product as $key => $val) {
|
|
$id = $val['data_id'];
|
|
unset($val["data_id"]);
|
|
$val['updatetime'] = time();
|
|
if ($id) {
|
|
$up = $sellProduct->where("id", $id)->where('firmid', $this->auth->firmid)->update($val);
|
|
$where[] = $id;
|
|
} else {
|
|
$val['sell_id'] = $ids;
|
|
$val['createtime'] = time();
|
|
$val['firmid'] = $this->auth->firmid;
|
|
$inser = $sellProduct->insertGetId($val);
|
|
if ($inser) {
|
|
$where[] = $inser;
|
|
}
|
|
}
|
|
}
|
|
$deletTime['deletetime'] = time();
|
|
$update = $sellProduct->where("sell_id", $ids)->where("id", "not in", $where)->update($deletTime);
|
|
if ($update) {
|
|
$this->success(null, null, ['result' => "success"]);
|
|
}
|
|
$this->success(null, null, ['result' => "success"]);
|
|
}
|
|
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
|
|
|
|
$detail = $this->model
|
|
->where($where)
|
|
->where('firmid', $this->auth->firmid)
|
|
->order($sort, $order)
|
|
->where("id", $ids)
|
|
->where("status_list", 1)
|
|
->select();
|
|
if (!$detail) {
|
|
$this->error(__('not editable'));
|
|
}
|
|
$productModel = new \app\admin\model\ykjp\sell\Product;
|
|
$product = $productModel->with(['products'])->where("sell_id", $ids)->select();
|
|
if ($product) {
|
|
foreach ($product as $key => $value) {
|
|
$a = json_decode($value['products']['prop']);
|
|
$value['products']['prop'] = $this->model->object_array($a);
|
|
}
|
|
}
|
|
$this->assign("detail", $detail);
|
|
$this->assign("product", $product);
|
|
return $this->view->fetch();
|
|
}
|
|
|
|
/**
|
|
* 作废销售单
|
|
*/
|
|
public function abandon() {
|
|
|
|
$ids = $this->request->post('ids'); //要作废的销售单ID
|
|
$reason = $this->request->post('reason'); //作废理由
|
|
//判断当前销售单是否存在未作废的出库单
|
|
$res = Db::name('ykjp_delivery')
|
|
->where('sell_id', $ids)
|
|
->where('firmid', $this->auth->firmid)
|
|
->where('status_list > 0')
|
|
->count();
|
|
if ($res > 0) {
|
|
$this->error(null, null, ['result' => "提交失败,请先作废对应的出库单!"]);
|
|
}
|
|
|
|
//执行作废修改
|
|
$abandon_res = Db::name('ykjp_sell')
|
|
->where('id', $ids)
|
|
->where('firmid', $this->auth->firmid)
|
|
->where('status_list > 0')
|
|
->update([
|
|
'reason' => $reason,
|
|
'status_list' => '-1'
|
|
]);
|
|
if ($abandon_res) {
|
|
$this->success(null, null, ['result' => "作废成功!"]);
|
|
} else {
|
|
$this->error(null, null, ['result' => "提交作废失败!"]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 反审核
|
|
*/
|
|
public function Anti($ids = null) {
|
|
if ($ids) {
|
|
$data = $this->model->where("firmid", $this->auth->firmid)->where("status_list", "in", [2, 3, 4, 5])->where("id", $ids)->find();
|
|
if ($data) {
|
|
$purchaseProduct = new \app\admin\model\ykjp\purchase\Product;
|
|
$result = 0;
|
|
//只有未生成出库单的销售单才可以反审核
|
|
$isCount = Db::name('ykjp_delivery')->where("firmid", $this->auth->firmid)->where("sell_id", $ids)->count();
|
|
if ($isCount == 0) { //如果出库单数量为空,则可以进行反审核
|
|
$updateData = array("updatetime" => time(), "status_list" => "1", "reason" => null, 'cause' => null);
|
|
$up = $this->model->where("id", $ids)->update($updateData);
|
|
if ($up) {
|
|
$this->success(null, null, array("result" => "success"));
|
|
} else {
|
|
$this->error(__("operate fail"));
|
|
}
|
|
} else {
|
|
$this->error(__('您已生成出库单,无法进行反审核'));
|
|
}
|
|
}
|
|
}
|
|
$this->error(__('Parameter %s can not be empty', 'ids'));
|
|
}
|
|
|
|
/**
|
|
* 确认订单完成
|
|
*/
|
|
public function goodsok($ids = null) {
|
|
|
|
|
|
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
|
|
|
|
if ($ids) { //通过
|
|
$data = array("status_list" => 10, "purman_id" => $this->auth->id, "updatetime" => time());
|
|
$update = $this->model
|
|
->where('firmid', $this->auth->firmid)
|
|
->where("id", "in", $ids)
|
|
->update($data);
|
|
if ($update) {
|
|
$this->success(null, null, array("result" => "success"));
|
|
}
|
|
$this->error("operation fail");
|
|
}
|
|
|
|
$this->error("Illegal operation");
|
|
}
|
|
|
|
/**
|
|
* 删除
|
|
*/
|
|
// public function del($ids = "")
|
|
// {
|
|
// if ($ids) {
|
|
// $pk = $this->model->getPk();
|
|
// $adminIds = $this->getDataLimitAdminIds();
|
|
// if (is_array($adminIds)) {
|
|
// $this->model->where($this->dataLimitField, 'in', $adminIds);
|
|
// }
|
|
// if($this->distinguish&&$this->auth->firmid!=0){
|
|
// $list = $this->model->where($pk, 'in', $ids)->where("firmid",$this->auth->firmid)->select();
|
|
// }else{
|
|
// $list = $this->model->where($pk, 'in', $ids)->select();
|
|
// }
|
|
// $count = 0;
|
|
// $count2 = 0;
|
|
// Db::startTrans();
|
|
// try {
|
|
// foreach ($list as $k => $v) {
|
|
// $sell_id = $v->id; //获取销售单id
|
|
// $productModel = new \app\admin\model\ykjp\sell\Product; //初始化销售单副表模型
|
|
// $product_list = $productModel->where('sell_id',$sell_id)->select(); //获取关联对象
|
|
// foreach ($product_list as $key => $value) {
|
|
// $count2 += $value->delete();
|
|
// }
|
|
// $count += $v->delete();
|
|
// }
|
|
// Db::commit();
|
|
// } catch (PDOException $e) {
|
|
// Db::rollback();
|
|
// $this->error($e->getMessage());
|
|
// } catch (Exception $e) {
|
|
// Db::rollback();
|
|
// $this->error($e->getMessage());
|
|
// }
|
|
// if ($count && $count2) {
|
|
// $this->success();
|
|
// } else {
|
|
// $this->error(__('No rows were deleted'));
|
|
// }
|
|
// }
|
|
// $this->error(__('Parameter %s can not be empty', 'ids'));
|
|
// }
|
|
}
|
|
|