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.
207 lines
8.6 KiB
207 lines
8.6 KiB
<?php
|
|
|
|
namespace app\admin\controller\ykjp\inventory;
|
|
|
|
use app\common\controller\Backend;
|
|
use think\Db;
|
|
|
|
/**
|
|
* 调拨单
|
|
*
|
|
* @icon fa fa-circle-o
|
|
*/
|
|
class Transfer extends Backend {
|
|
|
|
/**
|
|
* Transfer模型对象
|
|
* @var \app\admin\model\ykjp\inventory\Transfer
|
|
*/
|
|
protected $model = null;
|
|
protected $distinguish = true;
|
|
|
|
public function _initialize() {
|
|
parent::_initialize();
|
|
$this->model = new \app\admin\model\ykjp\inventory\Transfer;
|
|
}
|
|
|
|
/**
|
|
* 添加调拨单
|
|
*/
|
|
public function add() {
|
|
if ($this->request->isAjax()) {
|
|
$request = $this->request->request(); //获取参数
|
|
//验证参数
|
|
if (!$request['row']['out_warehouse_id']) {
|
|
$this->error('请选择调出仓库', null, null);
|
|
} elseif (!$request['row']['out_partition_id']) {
|
|
$this->error('请选择调出库区', null, null);
|
|
} elseif (!$request['row']['product_id']) {
|
|
$this->error('请选择调拨商品', null, null);
|
|
} elseif ($request['row']['out_before_num'] == '') {
|
|
$this->error('参数不完整1', null, null); //调出前库存
|
|
} elseif (!$request['row']['e_warehouse_id']) {
|
|
$this->error('请选择调入仓库', null, null);
|
|
} elseif (!$request['row']['e_partition_id']) {
|
|
$this->error('请选择调入库区', null, null);
|
|
} elseif ($request['row']['e_before_num'] == '') {
|
|
$this->error('参数不完整2', null, null); //调入前库存
|
|
} elseif (!$request['row']['number']) {
|
|
$this->error('请输入调拨数量', null, null);
|
|
}
|
|
|
|
//判断调拨库存是否充足
|
|
if ($request['row']['number'] > $request['row']['out_before_num']) {
|
|
$this->error('调出库存不足', null, null);
|
|
}
|
|
|
|
$request['row']['updatetime'] = time(); //设置更新时间
|
|
$request['row']['firmid'] = $this->auth->firmid; //设置企业ID
|
|
|
|
$out_warehouse_id = $request['row']['out_warehouse_id']; //调出仓库ID
|
|
$out_partition_id = $request['row']['out_partition_id']; //调出库区ID
|
|
$product_id = $request['row']['product_id']; //商品ID
|
|
$out_before_num = $request['row']['out_before_num']; //调出前数量
|
|
$e_warehouse_id = $request['row']['e_warehouse_id']; //调入仓库ID
|
|
$e_partition_id = $request['row']['e_partition_id']; //调入库区ID
|
|
$e_before_num = $request['row']['e_before_num']; //调入前数量
|
|
$number = $request['row']['number']; //调拨数量
|
|
$remark = $request['row']['remark']; //备注
|
|
$updatetime = time(); //更新时间
|
|
$firmid = $this->auth->firmid; //企业ID
|
|
|
|
halt($request['row']);
|
|
//更新调入关联表/新增调入关联表
|
|
$e_wp = Db::name('ykjp_wp_relationship')->field('id')->where(['warehouse_id' => $e_warehouse_id, 'partition_id' => $e_partition_id, 'product_id' => $product_id])->where("firmid", $this->auth->firmid)->find();
|
|
if ($e_wp) {
|
|
//如果当前调入仓库商品存在关联表数据,则更新关联表数据
|
|
halt(1);
|
|
} else {
|
|
//如果不存在当前调入仓库商品存在关联表数据,则插入关联表数据
|
|
Db::name('ykjp_wp_relationship')->insert([
|
|
'warehouse_id' => $e_warehouse_id,
|
|
'partition_id' => $e_partition_id,
|
|
'product_id' => $product_id,
|
|
'inventory' => $number,
|
|
'updatetime' => $updatetime,
|
|
'firmid' => $firmid
|
|
]);
|
|
}
|
|
halt(3);
|
|
|
|
|
|
halt(123123);
|
|
//提交数据(插入调拨表->插入流水表(调拨出库和调拨入库)->更新调出关联表->更新调入关联表/新增调入关联表->更新(出入库)仓库表->更新(出入库)库区表)
|
|
// 启动事务
|
|
Db::startTrans();
|
|
try {
|
|
|
|
//插入调拨表 ok
|
|
Db::name('ykjp_transfer')->insert($request['row']);
|
|
|
|
//插入调拨出库流水表
|
|
Db::name('ykjp_inventory_statement')->insert([
|
|
'product_id' => $product_id,
|
|
'warehouse_id' => $out_warehouse_id,
|
|
'partition_id' => $out_partition_id,
|
|
'number' => $number,
|
|
'type' => '调拨出库',
|
|
'updatetime' => $updatetime,
|
|
'firmid' => $firmid
|
|
]);
|
|
|
|
//插入调拨入库流水表
|
|
Db::name('ykjp_inventory_statement')->insert([
|
|
'product_id' => $product_id,
|
|
'warehouse_id' => $e_warehouse_id,
|
|
'partition_id' => $e_partition_id,
|
|
'number' => $number,
|
|
'type' => '调拨入库',
|
|
'updatetime' => $updatetime,
|
|
'firmid' => $firmid
|
|
]);
|
|
|
|
// 更新调出关联表
|
|
Db::name('ykjp_wp_relationship')->where(['warehouse_id' => $out_warehouse_id, 'partition_id' => $out_partition_id, 'product_id' => $product_id])->where("firmid", $this->auth->firmid)->update([
|
|
'updatetime' => time(),
|
|
'inventory' => Db::raw('inventory-' . $number),
|
|
]);
|
|
|
|
//更新关联表
|
|
$data['inventory'] = array('exp', 'inventory' . $op . $number);
|
|
$data['updatetime'] = time();
|
|
Db::name('ykjp_wp_relationship')->where(['warehouse_id' => $warehouse_id, 'partition_id' => $partition_id, 'product_id' => $product_id])->where("firmid", $this->auth->firmid)->update([
|
|
'updatetime' => time(),
|
|
'inventory' => Db::raw('inventory' . $op . $number),
|
|
]);
|
|
|
|
//更新商品表
|
|
Db::name('ykjp_product')->where("firmid", $this->auth->firmid)->where('id', $product_id)->$fun('inventory', $number);
|
|
|
|
//更新仓库表
|
|
Db::name('ykjp_warehouse')->where("firmid", $this->auth->firmid)->where('id', $warehouse_id)->$fun('inventory', $number);
|
|
|
|
//更新库区表
|
|
Db::name('ykjp_partition')->where("firmid", $this->auth->firmid)->where('id', $partition_id)->$fun('inventory', $number);
|
|
|
|
// 提交事务
|
|
Db::commit();
|
|
$this->success('提交成功', null, null);
|
|
} catch (PDOException $e) {
|
|
|
|
Db::rollback();
|
|
$this->error('提交失败');
|
|
} catch (Exception $e) {
|
|
|
|
Db::rollback();
|
|
$this->error('提交失败');
|
|
}
|
|
}
|
|
return $this->view->fetch('add');
|
|
}
|
|
|
|
/**
|
|
* 获取仓库列表
|
|
*/
|
|
public function warehouse() {
|
|
$warehouselist = Db::name('ykjp_warehouse')->where("firmid", $this->auth->firmid)->field('id as value,name')->order('id desc')->select();
|
|
$this->success('', null, $warehouselist);
|
|
}
|
|
|
|
/**
|
|
* 获取分区列表
|
|
*/
|
|
public function partition() {
|
|
$id = $this->request->request('id');
|
|
$partitionlist = Db::name('ykjp_partition')->where('warehouse_id', $id)->where("firmid", $this->auth->firmid)->field('id as value,name')->order('id desc')->select();
|
|
$this->success('', null, $partitionlist);
|
|
}
|
|
|
|
/**
|
|
* 获取产品列表
|
|
*/
|
|
public function product() {
|
|
$id = $this->request->request('id');
|
|
$productlist = Db::name('ykjp_product')
|
|
->alias('p')
|
|
->join('ykjp_wp_relationship w', 'w.product_id = p.id')
|
|
->field('p.id as value,p.name')
|
|
->where('w.partition_id', $id)
|
|
->where("w.firmid", $this->auth->firmid)
|
|
->select();
|
|
$this->success('', null, $productlist);
|
|
}
|
|
|
|
/**
|
|
* 获取账面库存
|
|
*/
|
|
public function get_num() {
|
|
$where = $this->request->request();
|
|
$surface_num = Db::name('ykjp_wp_relationship')
|
|
->field('inventory')
|
|
->where($where)
|
|
->where("firmid", $this->auth->firmid)
|
|
->find();
|
|
$this->success('', null, $surface_num);
|
|
}
|
|
|
|
}
|
|
|