2387 行
109 KiB
PHP
可执行文件
2387 行
109 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Retail\Controller;
|
|
|
|
use Think\Controller;
|
|
//[1.2.84]
|
|
class FlowController extends BaseController
|
|
{
|
|
public function index()
|
|
{
|
|
$storeid = session('storeid');
|
|
$catemachantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$cates = M("retail_goods_class")->where(array('storeid' => $storeid, 'merchantid' => $catemachantid, 'status' => 0, 'type' => 3))->select();
|
|
$supplier = M("retail_supplier")->where(array('merchantid' => $catemachantid, 'status' => 1))->select();
|
|
$this->assign('cate', $cates);
|
|
$this->assign('info', $supplier);
|
|
$order = M('retail_floworder')->where(array('audit' => 1, 'status' => 1, 'type' => 1, 'storeid' => $storeid))->find();
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
} else {
|
|
$Ad['storeid'] = $storeid;
|
|
$Ad['audit'] = 1;
|
|
$Ad['type'] = 1;
|
|
$Ad['status'] = 1;
|
|
$ret = M('retail_floworder')->add($Ad);
|
|
$floworderid = $ret;
|
|
}
|
|
session('floworderid', $floworderid);
|
|
$this->assign('floworderid', $floworderid);
|
|
$this->display();
|
|
}
|
|
|
|
public function searchgoods()
|
|
{
|
|
if (IS_POST) {
|
|
$keyword = I('post.keyword');
|
|
$storeid = session('storeid');
|
|
$w['store_id'] = $storeid;
|
|
$w['goods_code|goods_number|goods_name'] = $keyword;
|
|
$w['status'] = array('in','0,1');
|
|
$goods = M('retail_goods')->where($w)
|
|
->field("id as goodsid,goods_name,goods_number as good_number,purchase_price,retail_price,goods_num,company,specifications,goods_code,store_id")
|
|
->find();
|
|
if ($goods) {
|
|
$goods['purch_price'] = $goods['purchase_price'];
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '查询成功';
|
|
$goods['givenum'] = 0;
|
|
$goods['num'] = "";
|
|
$rt['goods'] = $goods;
|
|
} else {
|
|
$rt['status'] = 0;
|
|
$rt['m'] = M()->_sql();
|
|
$rt['msg'] = '未找符合条件的数据';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
public function getgoodsarr()
|
|
{
|
|
if (IS_POST) {
|
|
$floworderid = I('post.floworderid');
|
|
$rt['post'] = I('post.');
|
|
if (!$floworderid) {
|
|
$rt['status'] = 0;
|
|
$rt['msg'] = '查询失败';
|
|
} else {
|
|
$w['floworderid'] = $floworderid;
|
|
$w['status'] = 1;
|
|
$data = M('retail_flow')->where($w)->select();
|
|
if ($data) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '查询成功';
|
|
$rt['data'] = $data;
|
|
} else {
|
|
$rt['status'] = 0;
|
|
$rt['msg'] = '查询失败';
|
|
}
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
public function dostock()
|
|
{
|
|
if (IS_POST) {
|
|
$data = I('post.');
|
|
$data['addtime'] = time();
|
|
$data['storeid'] = $data['store_id'];
|
|
$one = M('retail_flow')
|
|
->where(array('storeid' => $data['storeid'], 'goodsid' => $data['goodsid'], 'status' => 1, 'floworderid' => $data['floworderid']))
|
|
->find();
|
|
if ($one) {
|
|
$rt['status'] = 0;
|
|
$rt['msg'] = '该商品已加入进货单,请确认';
|
|
} else {
|
|
$ret = M('retail_flow')->add($data);
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '加入成功';
|
|
$rt['data'] = M('retail_flow')->where(array('id' => $ret))->find();
|
|
} else {
|
|
$rt['status'] = 0;
|
|
$rt['msg'] = '加入失败';
|
|
}
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
// 修改数量
|
|
public function changenum()
|
|
{
|
|
if (IS_POST) {
|
|
$type = I('post.type');
|
|
$id = I('post.id');
|
|
$num = I('post.num');
|
|
if ($type == 1) {
|
|
$savedata['num'] = $num;
|
|
} else {
|
|
$savedata['givenum'] = $num;
|
|
}
|
|
$ret = M('retail_flow')->where(array('id' => $id))->save($savedata);
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '修改成功';
|
|
} else {
|
|
$rt['status'] = 0;
|
|
$rt['msg'] = '修改成功';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
// 确认订货单
|
|
public function submitfloworder()
|
|
{
|
|
if (IS_POST) {
|
|
$user = session("ls_userinfo");
|
|
$storeid = session('storeid');
|
|
$id = I('post.id');
|
|
$dismoney = I('post.dismoney');
|
|
$allgoods = M('retail_flow')->where(array('floworderid' => $id, 'status' => 1, 'storeid' => $storeid))->select();
|
|
$allmoney = 0;
|
|
$allnum = 0;
|
|
$allgivenum = 0;
|
|
foreach ($allgoods as $k => $v) {
|
|
$allmoney += $v['num'] * $v['purch_price'];
|
|
$allnum += $v['num'];
|
|
$allgivenum += $v['givenum'];
|
|
}
|
|
$q = true;
|
|
$str = date('YmdHis');
|
|
$i = 0;
|
|
while ($q) {
|
|
$ordernum = $str . rand(100000, 999999);
|
|
$one = M('retail_floworder')->where(array('storeid' => $storeid, 'ordernum' => $ordernum))->find();
|
|
if (!$one) {
|
|
$q = false;
|
|
} else {
|
|
$i++;
|
|
if ($i >= 10) {
|
|
$str += 1;
|
|
$i = 0;
|
|
}
|
|
}
|
|
}
|
|
// 供货商
|
|
$supplier_id = I('post.supplier_id');
|
|
$supplier_id = $supplier_id ? $supplier_id : 0;
|
|
if ($supplier_id == -1) {
|
|
$supplier_id = 0;
|
|
}
|
|
$savedata['supplier_id'] = $supplier_id;
|
|
// 调拨目标门店
|
|
$tostoreid = I('post.tostoreid');
|
|
$tostoreid = $tostoreid ? $tostoreid : 0;
|
|
$savedata['tostoreid'] = $tostoreid;
|
|
$savedata['audit'] = 2;
|
|
$savedata['ctime'] = time();
|
|
$savedata['allmoney'] = $allmoney;
|
|
$savedata['dismoney'] = $dismoney;
|
|
$savedata['paymoney'] = $allmoney - $dismoney;
|
|
$savedata['allnum'] = $allnum;
|
|
$savedata['ordernum'] = $ordernum;
|
|
$savedata['allgivenum'] = $allgivenum;
|
|
$savedata['adminid'] = $user['id'];
|
|
$savedata['admintype'] = $user['account_type'];
|
|
$ret = M('retail_floworder')->where(array('id' => $id))->save($savedata);
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '修改成功';
|
|
} else {
|
|
$rt['status'] = 0;
|
|
$rt['msg'] = '修改成功';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
public function myimport()
|
|
{
|
|
if (IS_POST) {
|
|
$upload = new \Think\Upload (); // 实例化上传类
|
|
$upload->maxSize = 1048576 * 10; // 设置附件上传大小10M
|
|
$upload->exts = array(
|
|
'xls'
|
|
); // 设置附件上传类型
|
|
$upload->rootPath = 'Uploads'; // 设置附件上传根目录
|
|
$upload->savePath = '/Temp/'; // 设置附件上传(子)目录
|
|
$upload->saveName = array(
|
|
'uniqid',
|
|
''
|
|
);
|
|
// 上传文件
|
|
$info = $upload->upload();
|
|
if (empty($info)) {
|
|
$rt['status'] = 3;
|
|
$rt['msg'] = '表格类型不正确,应为.xls后缀的数据表格,或者数据表格大于10M';
|
|
$this->ajaxReturn($rt);
|
|
exit;
|
|
}
|
|
$path['path'] = '/' . 'Uploads' . $info['file']['savepath'] . $info['file']['savename'];
|
|
$arr = $this->importExecl("." . $path['path']);
|
|
$myrt['arr'] = $arr;
|
|
if ($arr['error'] == 0) {
|
|
$myrt['status'] = 2;
|
|
$myrt['msg'] = '数据表格格式不正确,请下载导入模板,按模板填入数据。';
|
|
$this->ajaxReturn($myrt);
|
|
exit;
|
|
} else {
|
|
header('Content-Type: text/html; charset=utf-8'); //网页编码
|
|
$goodsarr = $arr['data'][0]['Content'];
|
|
$goodsarr = json_decode(json_encode($goodsarr), true);
|
|
$titlearr = $goodsarr[1];
|
|
$floworderid = session('floworderid');
|
|
$keyarr = array();
|
|
foreach ($titlearr as $k => $v) {
|
|
if ($v == '商品名称') {
|
|
$keyarr['goods_name'] = $k;
|
|
} else if ($v == '条码') {
|
|
$keyarr['goods_code'] = $k;
|
|
} else if ($v == '货号') {
|
|
$keyarr['goods_number'] = $k;
|
|
} else if ($v == '进货量') {
|
|
$keyarr['num'] = $k;
|
|
} else if ($v == '赠送量') {
|
|
$keyarr['givenum'] = $k;
|
|
} else if ($v == '单位') {
|
|
$keyarr['company'] = $k;
|
|
} else if ($v == '进货价') {
|
|
$keyarr['purch_price'] = $k;
|
|
} else if ($v == '规格') {
|
|
$keyarr['specifications'] = $k;
|
|
}
|
|
}
|
|
$faultarr = array();
|
|
$time = time();
|
|
foreach ($goodsarr as $key => $val) {
|
|
if ($key == 1) {
|
|
continue;
|
|
}
|
|
$storeid = session('storeid');
|
|
$w['store_id'] = $storeid;
|
|
$w['goods_code'] = $val[$keyarr['goods_code']];
|
|
if ($val[$keyarr['goods_code']]) {
|
|
$goods = M('retail_goods')->where($w)
|
|
->field("id as goodsid,goods_name,goods_number,purchase_price,retail_price,goods_num,company,specifications,goods_code,storeid")
|
|
->find();
|
|
} else {
|
|
$goods = false;
|
|
}
|
|
|
|
if (!$goods) {
|
|
$w2['store_id'] = $storeid;
|
|
$w2['goods_number'] = $val[$keyarr['good_number']];
|
|
if ($val[$keyarr['good_number']]) {
|
|
$goods = M('retail_goods')->where($w2)
|
|
->field("id as goodsid,goods_name,goods_number,purchase_price,retail_price,goods_num,company,specifications,goods_code,storeid")
|
|
->find();
|
|
} else {
|
|
$goods = false;
|
|
}
|
|
}
|
|
if ($goods) {
|
|
$Ad = array();
|
|
$Ad['storeid'] = $storeid;
|
|
$Ad['goodsid'] = $goods['goodsid'];
|
|
$Ad['good_number'] = $val[$keyarr['good_number']];
|
|
$Ad['goods_num'] = $goods['goods_num'];
|
|
$Ad['goods_name'] = $val[$keyarr['goods_name']] ? $val[$keyarr['goods_name']] : $goods['goods_name'];
|
|
$Ad['purch_price'] = $val[$keyarr['purch_price']] ? $val[$keyarr['purch_price']] : $goods['purchase_price'];
|
|
$Ad['retail_price'] = $goods['retail_price'];
|
|
$Ad['num'] = $val[$keyarr['num']];
|
|
$Ad['givenum'] = $val[$keyarr['givenum']];
|
|
$Ad['company'] = $val[$keyarr['company']] ? $val[$keyarr['company']] : $goods['company'];
|
|
$Ad['specifications'] = $val[$keyarr['specifications']] ? $val[$keyarr['specifications']] : $goods['specifications'];
|
|
$Ad['floworderid'] = $floworderid;
|
|
$Ad['addtime'] = $time;
|
|
$Ad['money'] = $Ad['num'] * $Ad['purch_price'];
|
|
$Ad['goods_code'] = $val[$keyarr['goods_code']];
|
|
$one = M('retail_flow')
|
|
->where(array('storeid' => $Ad['storeid'], 'goodsid' => $Ad['goodsid'], 'status' => 1, 'floworderid' => $Ad['floworderid']))
|
|
->find();
|
|
if ($one) {
|
|
$val['reson'] = '商品重复(已有),确认条码/货号';// 重复了
|
|
$faultarr[] = $val;
|
|
} else {
|
|
$ret = M('retail_flow')->add($Ad);
|
|
}
|
|
} else {
|
|
$val['reson'] = '商品档案中无该商品';// 未找到正常的
|
|
$faultarr[] = $val;
|
|
}
|
|
}
|
|
if (count($faultarr) > 0) {
|
|
// 生成错误表格,并返回路径。
|
|
$path2 = './Uploads/temp/' . $floworderid . '.txt';
|
|
file_put_contents($path2, json_encode($faultarr));
|
|
$rt['status'] = 1;
|
|
$rt['path'] = $path2;
|
|
$rt['msg'] = '导入成功,但有' . count($faultarr) . '项未导入成功';
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '导入成功';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
exit();
|
|
}
|
|
}
|
|
}
|
|
|
|
// 上传导入文件
|
|
function importExecl($file)
|
|
{
|
|
if (!file_exists($file)) {
|
|
return array("error" => 0, 'message' => 'file not found!');
|
|
}
|
|
Vendor("PHPExcel.PHPExcel.IOFactory");
|
|
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
|
|
try {
|
|
$PHPReader = $objReader->load($file);
|
|
} catch (\Exception $e) {
|
|
}
|
|
if (!isset($PHPReader)) return array("error" => 0, 'message' => 'read error!');
|
|
$allWorksheets = $PHPReader->getAllSheets();
|
|
$i = 0;
|
|
foreach ($allWorksheets as $objWorksheet) {
|
|
$sheetname = $objWorksheet->getTitle();
|
|
$allRow = $objWorksheet->getHighestRow();//how many rows
|
|
$highestColumn = $objWorksheet->getHighestColumn();//how many columns
|
|
$allColumn = \PHPExcel_Cell::columnIndexFromString($highestColumn);
|
|
$array[$i]["Title"] = $sheetname;
|
|
$array[$i]["Cols"] = $allColumn;
|
|
$array[$i]["Rows"] = $allRow;
|
|
$arr = array();
|
|
$isMergeCell = array();
|
|
foreach ($objWorksheet->getMergeCells() as $cells) {//merge cells
|
|
foreach (\PHPExcel_Cell::extractAllCellReferencesInRange($cells) as $cellReference) {
|
|
$isMergeCell[$cellReference] = true;
|
|
}
|
|
}
|
|
for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
|
|
$row = array();
|
|
for ($currentColumn = 0; $currentColumn < $allColumn; $currentColumn++) {
|
|
;
|
|
$cell = $objWorksheet->getCellByColumnAndRow($currentColumn, $currentRow);
|
|
$afCol = \PHPExcel_Cell::stringFromColumnIndex($currentColumn + 1);
|
|
$bfCol = \PHPExcel_Cell::stringFromColumnIndex($currentColumn - 1);
|
|
$col = \PHPExcel_Cell::stringFromColumnIndex($currentColumn);
|
|
$address = $col . $currentRow;
|
|
$value = $objWorksheet->getCell($address)->getValue();
|
|
if (substr($value, 0, 1) == '=') {
|
|
return array("error" => 0, 'message' => 'can not use the formula!');
|
|
exit;
|
|
}
|
|
/* if($cell->getDataType()==PHPExcel_Cell_DataType::TYPE_NUMERIC){
|
|
$cellstyleformat=$cell->getParent()->getStyle( $cell->getCoordinate() )->getNumberFormat();
|
|
$formatcode=$cellstyleformat->getFormatCode();
|
|
if (preg_match('/^([$[A-Z]*-[0-9A-F]*])*[hmsdy]/i', $formatcode)) {
|
|
$value=gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));
|
|
}else{
|
|
$value=PHPExcel_Style_NumberFormat::toFormattedString($value,$formatcode);
|
|
}
|
|
}*/
|
|
if ($isMergeCell[$col . $currentRow] && $isMergeCell[$afCol . $currentRow] && !empty($value)) {
|
|
$temp = $value;
|
|
} elseif ($isMergeCell[$col . $currentRow] && $isMergeCell[$col . ($currentRow - 1)] && empty($value)) {
|
|
$value = $arr[$currentRow - 1][$currentColumn];
|
|
} elseif ($isMergeCell[$col . $currentRow] && $isMergeCell[$bfCol . $currentRow] && empty($value)) {
|
|
$value = $temp;
|
|
}
|
|
$row[$currentColumn] = $value;
|
|
}
|
|
$arr[$currentRow] = $row;
|
|
}
|
|
$array[$i]["Content"] = $arr;
|
|
$i++;
|
|
}
|
|
//spl_autoload_register(array('Think','autoload'));//must, resolve ThinkPHP and //PHPExcel conflicts
|
|
unset($objWorksheet);
|
|
unset($PHPReader);
|
|
unset($PHPExcel);
|
|
unlink($file);
|
|
return array("error" => 1, "data" => $array);
|
|
}
|
|
|
|
// 下载导入模板。
|
|
public function downfile()
|
|
{
|
|
$url = './Public/flow/zip/1.zip';
|
|
if (!file_exists($url)) { //判断文件是否存在
|
|
echo "文件不存在";
|
|
exit();
|
|
}
|
|
ob_clean();
|
|
$file = fopen($url, "r");
|
|
Header("Content-type:application/octet-stream");
|
|
header("Accept-Ranges: bytes");
|
|
header("Accept-Length: " . filesize($url));
|
|
header("Content-Disposition: attachment; filename=导入模板.zip");
|
|
echo fread($file, filesize($url));
|
|
fclose($file);
|
|
}
|
|
|
|
public function delgoodsitem()
|
|
{
|
|
if (IS_POST) {
|
|
$id = I('post.id');
|
|
$savedata['status'] = 2;
|
|
$ret = $ret = M('retail_flow')->where(array('id' => $id))->save($savedata);
|
|
if ($ret !== false) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '删除成功';
|
|
} else {
|
|
$rt['status'] = 0;
|
|
$rt['msg'] = '删除失败';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
// 订货单数据
|
|
public function order()
|
|
{
|
|
$storeid = session('storeid');
|
|
$catemachantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$supplier = M("retail_supplier")->where(array('merchantid' => $catemachantid, 'status' => 1))->select();
|
|
$this->assign('info', $supplier);
|
|
$arr = array(
|
|
'flow_order_export' => '/index.php/Retail/Flow/flow_order_export',
|
|
'showfloworder' => '/index.php/Retail/Flow/showfloworder',
|
|
'doaudit' => '/index.php/Retail/Flow/doaudit',
|
|
'cancelfloworder' => '/index.php/Retail/Flow/cancelfloworder',
|
|
);
|
|
$authArr = checkFunction($arr);
|
|
$this->assign('authArr', $authArr);
|
|
$this->display();
|
|
}
|
|
|
|
// 订货单数据
|
|
public function orderlist()
|
|
{
|
|
// $user = session("ls_userinfo");
|
|
$ordernum = I('get.ordernum');
|
|
if ($ordernum) {
|
|
$w['ordernum'] = $ordernum;
|
|
}
|
|
$supplier_id = I('get.supplier_id');
|
|
if ($supplier_id) {
|
|
$w['supplier_id'] = $supplier_id;
|
|
}
|
|
$date = I('get.date'); // 时间查询条件
|
|
if (!empty($date)) {
|
|
$time = explode('至', $date);
|
|
$start_time = strtotime(date('Y-m-d', strtotime($time[0])));
|
|
$end_time = strtotime(date('Y-m-d', strtotime($time[1]))) + 86400;
|
|
$w['ctime'] = array('between', array($start_time, $end_time));
|
|
}
|
|
$storeid = session('storeid');
|
|
$w['storeid'] = $storeid;
|
|
$w['status'] = 1;//正常单据。
|
|
$w['type'] = 1;//进货单。
|
|
$w['audit'] = array('in', array(2, 3));
|
|
$p = I('get.page');
|
|
$l = I('get.limit');
|
|
$count = M('retail_floworder')->where($w)->count();
|
|
$data = M('retail_floworder')->where($w)->page($p, $l)->order('ctime desc')->select();
|
|
if ($data) {
|
|
foreach ($data as $k => $v) {
|
|
$data[$k]['ctime'] = date('Y-m-d H:i:s', $v['ctime']);
|
|
$data[$k]['index'] = 1 + $k + ($p - 1) * $l;
|
|
if ($v['supplier_id'] == 0) {
|
|
$data[$k]['supplier'] = '自采/其他';
|
|
} else {
|
|
$data[$k]['supplier'] = M('retail_supplier')->where(array('id' => $v['supplier_id']))->getField('supplier_name');
|
|
}
|
|
if ($v['admintype'] == 2) {
|
|
$data[$k]['adminname'] = M('retail_manager')->where(array('id' => $v['adminid']))->getField('name');
|
|
} else if ($v['admintype'] == 1) {
|
|
$data[$k]['adminname'] = M('retail_merchant')->where(array('id' => $v['adminid']))->getField('name');
|
|
}
|
|
if ($v['audit'] == 1) {
|
|
$data[$k]['auditname'] = '未确认';
|
|
} else if ($v['audit'] == 2) {
|
|
$data[$k]['auditname'] = '未审核';
|
|
} else if ($v['audit'] == 3) {
|
|
$data[$k]['auditname'] = '已审核';
|
|
}
|
|
}
|
|
}
|
|
$rt['code'] = 0;
|
|
$rt['msg'] = '';
|
|
$rt['count'] = $count;
|
|
$rt['data'] = $data;
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
|
|
// 查看进货单详情
|
|
|
|
public function showfloworder()
|
|
{
|
|
$storeid = session('storeid');
|
|
$catemachantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$supplier = M("retail_supplier")->where(array('merchantid' => $catemachantid, 'status' => 1))->select();
|
|
$this->assign('info', $supplier);
|
|
$id = I('get.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id))->find();
|
|
$this->assign('order', $order);
|
|
$arr = array(
|
|
'expUser' => '/index.php/Retail/Flow/expUser',
|
|
);
|
|
$authArr = checkFunction($arr);
|
|
$this->assign('authArr', $authArr);
|
|
$this->display();
|
|
}
|
|
|
|
// 查看报损单详情
|
|
|
|
public function showdamage()
|
|
{
|
|
$id = I('get.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id))->find();
|
|
$this->assign('order', $order);
|
|
$this->display();
|
|
}
|
|
|
|
public function printflow()
|
|
{
|
|
$storeid = session('storeid');
|
|
$store = M('retail_store')->where(array('id' => $storeid))->find();
|
|
// print_r($store);
|
|
$this->assign('store', $store);
|
|
$id = I('get.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id))->find();
|
|
$supplier = M("retail_supplier")->where(array('id' => $order['supplier_id'], 'status' => 1))->find();
|
|
$manager = M('retail_manager')->where(array('storeid' => $storeid, 'status' => 1))->find();
|
|
$this->assign('manager', $manager);
|
|
$this->assign('supplier', $supplier);
|
|
$this->assign('time', date('Y-m-d H:i:s'));
|
|
$this->assign('order', $order);
|
|
$this->display();
|
|
}
|
|
|
|
//导出excel
|
|
public function expUser()
|
|
{
|
|
$storeid = session('storeid');
|
|
$id = I('get.id');
|
|
$type = I('get.type');
|
|
$w['status'] = 1;
|
|
$w['storeid'] = $storeid;
|
|
$w['floworderid'] = $id;
|
|
$order = M('retail_floworder')->where(array('id' => $id))->find();
|
|
$supplier = M('retail_supplier')->where(array('id' => $order['supplier_id']))->getField('supplier_name');
|
|
$info = M('retail_flow')->where(array('storeid' => $storeid, 'status' => array('in', '0,1'), 'floworderid' => $order['id']))->select();
|
|
foreach ($info as $k => $v) {
|
|
$info[$k]['money'] = round($v['num'] * $v['purch_price'], 2);
|
|
}
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
if ($type == 'refund') {
|
|
$str = "退货单订单信息:退货给" . $supplier . '供货商,总数量' . $order['allnum'] . ",总金额" . $order['allmoney'] . '(元),结算金额' . $order['paymoney'] . '(元),修改金额' . $order['dismoney'] . '(元)';
|
|
$filename = "退货单明细";
|
|
$headArr = array(
|
|
array('goods_name', '商品名称'),
|
|
array('good_number', '货号'),
|
|
array('goods_code', '条码'),
|
|
array('purch_price', '进货价'),
|
|
array('retail_price', '零售价'),
|
|
array('num', '退货量'),
|
|
array('company', '单位'),
|
|
array('specifications', '规格'),
|
|
array('money', '小计'),
|
|
);
|
|
} else {
|
|
$str = "订单信息:由" . $supplier . '供货商供应,总数量' . $order['allnum'] . ',总赠送量' . $order['allgivenum'] . ",总进价" . $order['allmoney'] . '(元),结算金额' . $order['paymoney'] . '(元),优惠' . $order['dismoney'] . '(元)';
|
|
$filename = "进货单明细";
|
|
$headArr = array(
|
|
array('goods_name', '商品名称'),
|
|
array('good_number', '货号'),
|
|
array('goods_code', '条码'),
|
|
array('purch_price', '进货价'),
|
|
array('retail_price', '零售价'),
|
|
array('num', '进货量'),
|
|
array('givenum', '赠送量'),
|
|
array('company', '单位'),
|
|
array('specifications', '规格'),
|
|
array('money', '小计'),
|
|
);
|
|
}
|
|
|
|
$this->getExcel($filename, $headArr, $info, $str);
|
|
}
|
|
|
|
private function getExcel($expTitle, $expCellName, $expTableData, $str = "")
|
|
{
|
|
|
|
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
|
|
$fileName = $expTitle . date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
|
|
$cellNum = count($expCellName);
|
|
$dataNum = count($expTableData);
|
|
$common = $str;
|
|
|
|
vendor("PHPExcel.PHPExcel");
|
|
$objPHPExcel = new \PHPExcel();
|
|
$cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');
|
|
|
|
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1');//合并单元格
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $common);
|
|
// $objPHPExcel->setActiveSheetIndex(1)->setCellValue('A1', $str);
|
|
for ($i = 0; $i < $cellNum; $i++) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]);
|
|
}
|
|
|
|
for ($i = 0; $i < $dataNum; $i++) {
|
|
for ($j = 0; $j < $cellNum; $j++) {
|
|
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), ' ' . $expTableData[$i][$expCellName[$j][0]]);
|
|
|
|
}
|
|
}
|
|
foreach ($cellName as $value) {
|
|
$objPHPExcel->getActiveSheet()->getColumnDimension($value)->setWidth(20);
|
|
|
|
}
|
|
header('pragma:public');
|
|
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
|
|
header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
|
|
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
|
$objWriter->save('php://output');
|
|
exit();
|
|
}
|
|
|
|
public function doaudit()
|
|
{
|
|
if (IS_POST) {
|
|
$storeid = session('storeid');
|
|
$merchantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$id = I('post.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id, 'audit' => 2))->find();
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
$w['floworderid'] = $floworderid;
|
|
$w['status'] = 1;
|
|
$data = M('retail_flow')->where($w)->select();
|
|
// 循环添加库存
|
|
$time = time();
|
|
$num = 0;
|
|
foreach ($data as $k => $v) {
|
|
$id = $v['goodsid'];
|
|
$goods_num = $v['num'] + $v['givenum'];
|
|
$supplier_id = $order['supplier_id'];
|
|
$old = M("retail_goods")->where(array('id' => $id))->getField("goods_num");
|
|
|
|
$success = M('retail_goods')->where(array('id' => $id))->setInc('goods_num', $goods_num); // 系统库存添加。
|
|
if(!$success){
|
|
$log['success'] = 2;
|
|
$num ++;
|
|
}
|
|
//首先判断id是否正确
|
|
$log['goods_id'] = $id;//商品id
|
|
$log['original_stock'] = $old;//初始库存
|
|
$log['do_num'] = $goods_num;//操作库存记录
|
|
$log['type'] = 1;//1表示库存增加
|
|
$log['addtime'] = $time;
|
|
$log['merchantid'] = $merchantid;
|
|
$log['storeid'] = $storeid;
|
|
$log['supplier_id'] = $supplier_id;
|
|
$log['present_stock'] = $old + $goods_num;
|
|
$log['floworderid'] = $order['id'];
|
|
$log['ordernum'] = $order['ordernum'];
|
|
$log['remark'] = '进货单审核添加库存';
|
|
$addLog = M("retail_quantity_logs")->add($log); // 添加库存记录
|
|
}
|
|
$ret = M('retail_floworder')->where(array('id' => $floworderid))->save(array('audit' => 3));
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核成功';
|
|
if($num>0){
|
|
$rt['msg'] = '审核成功,但有'.$num.'项库存未添加成功';
|
|
}
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核失败';
|
|
}
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '改单据不能被审核';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
// 取消订单
|
|
public function cancelfloworder()
|
|
{
|
|
if (IS_POST) {
|
|
$id = I('post.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id, 'audit' => 2))->find();
|
|
if ($order) {
|
|
$ret = M('retail_floworder')->where(array('id' => $id, 'audit' => 2))->save(array('status' => 2));
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '作废成功';
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '作废失败';
|
|
}
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '该单据不能作废';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
// 下载导入失败的数据表格
|
|
public function downfaultfile()
|
|
{
|
|
$id = I('get.id');
|
|
$path2 = './Uploads/temp/' . $id . '.txt';
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
$arr = file_get_contents($path2);
|
|
$arr = json_decode($arr, true);
|
|
$filename = "导入失败单据明细";
|
|
$headArr = array(
|
|
array('0', '商品名称'),
|
|
array('1', '条码'),
|
|
array('2', '货号'),
|
|
array('3', '进货量'),
|
|
array('4', '赠送量'),
|
|
array('5', '单位'),
|
|
array('6', '进货价'),
|
|
array('reson', '失败原因'),
|
|
);
|
|
unlink($path2);
|
|
$this->getExcel($filename, $headArr, $arr);
|
|
}
|
|
|
|
public function damage()
|
|
{
|
|
$arr = array(
|
|
'flow_damage_export' => '/index.php/Retail/Flow/flow_damage_export',
|
|
'showdamage' => '/index.php/Retail/Flow/showdamage',
|
|
'doauditreduce' => '/index.php/Retail/Flow/doauditreduce',
|
|
'cancelfloworder' => '/index.php/Retail/Flow/cancelfloworder',
|
|
);
|
|
$authArr = checkFunction($arr);
|
|
$this->assign('authArr', $authArr);
|
|
$this->display();
|
|
}
|
|
|
|
public function newdamage()
|
|
{
|
|
$storeid = session('storeid');
|
|
$order = M('retail_floworder')->where(array('audit' => 1, 'status' => 1, 'type' => 4, 'storeid' => $storeid))->find();
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
} else {
|
|
$Ad['storeid'] = $storeid;
|
|
$Ad['audit'] = 1;
|
|
$Ad['type'] = 4;
|
|
$Ad['status'] = 1;
|
|
$ret = M('retail_floworder')->add($Ad);
|
|
$floworderid = $ret;
|
|
}
|
|
session('floworderid', $floworderid);
|
|
$this->assign('floworderid', $floworderid);
|
|
$this->display();
|
|
}
|
|
|
|
public function damageorderlist()
|
|
{
|
|
$ordernum = I('get.ordernum');
|
|
if ($ordernum) {
|
|
$w['ordernum'] = $ordernum;
|
|
}
|
|
$supplier_id = I('get.supplier_id');
|
|
if ($supplier_id) {
|
|
$w['supplier_id'] = $supplier_id;
|
|
}
|
|
$date = I('get.date'); // 时间查询条件
|
|
if (!empty($date)) {
|
|
$time = explode('至', $date);
|
|
$start_time = strtotime(date('Y-m-d', strtotime($time[0])));
|
|
$end_time = strtotime(date('Y-m-d', strtotime($time[1]))) + 86400;
|
|
$w['ctime'] = array('between', array($start_time, $end_time));
|
|
}
|
|
$storeid = session('storeid');
|
|
$w['storeid'] = $storeid;
|
|
$w['status'] = 1;//正常单据。
|
|
$w['type'] = 4;//进货单。
|
|
$w['audit'] = array('in', array(2, 3));
|
|
$p = I('get.page');
|
|
$l = I('get.limit');
|
|
$count = M('retail_floworder')->where($w)->count();
|
|
$data = M('retail_floworder')->where($w)->page($p, $l)->order('ctime desc')->select();
|
|
if ($data) {
|
|
foreach ($data as $k => $v) {
|
|
$data[$k]['ctime'] = date('Y-m-d H:i:s', $v['ctime']);
|
|
$data[$k]['index'] = 1 + $k + ($p - 1) * $l;
|
|
$data[$k]['supplier'] = M('retail_supplier')->where(array('id' => $v['supplier_id']))->getField('supplier_name');
|
|
if ($v['admintype'] == 2) {
|
|
$data[$k]['adminname'] = M('retail_manager')->where(array('id' => $v['adminid']))->getField('name');
|
|
} else if ($v['admintype'] == 1) {
|
|
$data[$k]['adminname'] = M('retail_merchant')->where(array('id' => $v['adminid']))->getField('name');
|
|
}
|
|
if ($v['audit'] == 1) {
|
|
$data[$k]['auditname'] = '未确认';
|
|
} else if ($v['audit'] == 2) {
|
|
$data[$k]['auditname'] = '未审核';
|
|
} else if ($v['audit'] == 3) {
|
|
$data[$k]['auditname'] = '已审核';
|
|
}
|
|
}
|
|
}
|
|
$rt['code'] = 0;
|
|
$rt['msg'] = '';
|
|
$rt['count'] = $count;
|
|
$rt['data'] = $data;
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
|
|
// 报损单审核
|
|
public function doauditreduce()
|
|
{
|
|
if (IS_POST) {
|
|
$storeid = session('storeid');
|
|
$merchantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$id = I('post.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id, 'audit' => 2, 'type' => 4))->find();
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
$w['floworderid'] = $floworderid;
|
|
$w['status'] = 1;
|
|
$data = M('retail_flow')->where($w)->select();
|
|
// 循环添加库存
|
|
$time = time();
|
|
foreach ($data as $k => $v) {
|
|
$id = $v['goodsid'];
|
|
$goods_num = $v['num'] + $v['givenum'];
|
|
$supplier_id = $order['supplier_id'];
|
|
$old = M("retail_goods")->where(array('id' => $id))->getField("goods_num");
|
|
//首先判断id是否正确
|
|
$log['goods_id'] = $id;//商品id
|
|
$log['original_stock'] = $old;//初始库存
|
|
$log['do_num'] = $goods_num;//操作库存记录
|
|
$log['type'] = 2;//1表示库存增加
|
|
$log['addtime'] = $time;
|
|
$log['merchantid'] = $merchantid;
|
|
$log['storeid'] = $storeid;
|
|
$log['supplier_id'] = -1;
|
|
$log['present_stock'] = $old - $goods_num;
|
|
$log['floworderid'] = $order['id'];
|
|
$log['ordernum'] = $order['ordernum'];
|
|
$log['remark'] = '报损单审核减少库存';
|
|
$addLog = M("retail_quantity_logs")->add($log); // 添加库存记录
|
|
M('retail_goods')->where(array('id' => $id))->setDec('goods_num', $goods_num); // 系统库存添加。
|
|
}
|
|
$ret = M('retail_floworder')->where(array('id' => $floworderid))->save(array('audit' => 3));
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核成功';
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核失败';
|
|
}
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '改单据不能被审核';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
// 新建调货单。
|
|
public function newallocating()
|
|
{
|
|
$storeid = session('storeid');
|
|
$merchantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$order = M('retail_floworder')->where(array('audit' => 1, 'status' => 1, 'type' => 2, 'storeid' => $storeid))->find();
|
|
$StoreList = M('retail_store')->where(array('merchantid' => $merchantid, 'store_status' => 0, 'id' => array('neq', $storeid)))->select();
|
|
$this->assign('info', $StoreList);
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
} else {
|
|
$Ad['storeid'] = $storeid;
|
|
$Ad['audit'] = 1;
|
|
$Ad['type'] = 2;
|
|
$Ad['status'] = 1;
|
|
$ret = M('retail_floworder')->add($Ad);
|
|
$floworderid = $ret;
|
|
}
|
|
session('floworderid', $floworderid);
|
|
$this->assign('floworderid', $floworderid);
|
|
$this->display();
|
|
}
|
|
|
|
// 调货单
|
|
public function allocating()
|
|
{
|
|
$arr = array(
|
|
'flow_allocating_export' => '/index.php/Retail/Flow/flow_allocating_export',
|
|
'showallocating' => '/index.php/Retail/Flow/showallocating',
|
|
'doauditallocatingout' => '/index.php/Retail/Flow/doauditallocatingout',
|
|
'cancelfloworder' => '/index.php/Retail/Flow/cancelfloworder',
|
|
);
|
|
$authArr = checkFunction($arr);
|
|
$this->assign('authArr', $authArr);
|
|
$this->display();
|
|
}
|
|
|
|
public function allocatingorderlist()
|
|
{
|
|
$ordernum = I('get.ordernum');
|
|
if ($ordernum) {
|
|
$w['ordernum'] = $ordernum;
|
|
}
|
|
$date = I('get.date'); // 时间查询条件
|
|
if (!empty($date)) {
|
|
$time = explode('至', $date);
|
|
$start_time = strtotime(date('Y-m-d', strtotime($time[0])));
|
|
$end_time = strtotime(date('Y-m-d', strtotime($time[1]))) + 86400;
|
|
$w['ctime'] = array('between', array($start_time, $end_time));
|
|
}
|
|
$ordertype = I('get.ordertype');
|
|
$ordertype = $ordertype ? $ordertype : 1;
|
|
$storeid = session('storeid');
|
|
if ($ordertype == 1) {
|
|
$w['storeid'] = $storeid;
|
|
$w['audit'] = array('in', array(2, 3));
|
|
} else if ($ordertype == 2) {
|
|
$w['tostoreid'] = $storeid;
|
|
$w['audit'] = 3;
|
|
}
|
|
$w['status'] = 1;//正常单据。
|
|
$w['type'] = 2;//进货单。
|
|
$p = I('get.page');
|
|
$l = I('get.limit');
|
|
$count = M('retail_floworder')->where($w)->count();
|
|
$data = M('retail_floworder')->where($w)->page($p, $l)->order('ctime desc')->select();
|
|
if ($data) {
|
|
foreach ($data as $k => $v) {
|
|
$data[$k]['ctime'] = date('Y-m-d H:i:s', $v['ctime']);
|
|
$data[$k]['index'] = 1 + $k + ($p - 1) * $l;
|
|
$data[$k]['ordertype'] = $ordertype;
|
|
$data[$k]['supplier'] = M('retail_supplier')->where(array('id' => $v['supplier_id']))->getField('supplier_name');
|
|
if ($v['admintype'] == 2) {
|
|
$data[$k]['adminname'] = M('retail_manager')->where(array('id' => $v['adminid']))->getField('name');
|
|
} else if ($v['admintype'] == 1) {
|
|
$data[$k]['adminname'] = M('retail_merchant')->where(array('id' => $v['adminid']))->getField('name');
|
|
}
|
|
if ($ordertype == 1) {
|
|
if ($v['audit'] == 1) {
|
|
$data[$k]['auditname'] = '未确认';
|
|
} else if ($v['audit'] == 2) {
|
|
$data[$k]['auditname'] = '未审核';
|
|
} else if ($v['audit'] == 3) {
|
|
$data[$k]['auditname'] = '已审核';
|
|
if ($v['toaudit'] == 1) {
|
|
$data[$k]['auditname'] = '已审核(未确认)';
|
|
} else if ($v['toaudit'] == 4) {
|
|
$data[$k]['auditname'] = '已审核(已拒绝)';
|
|
} else {
|
|
$data[$k]['auditname'] = '已审核(已接收)';
|
|
}
|
|
}
|
|
$data[$k]['tostoreid'] = M('retail_store')->where(array('id' => $v['tostoreid']))->getField('storetag');
|
|
} else if ($ordertype == 2) {
|
|
if ($v['toaudit'] == 1) {
|
|
$data[$k]['auditname'] = '等待确认';
|
|
} else if ($v['toaudit'] == 2) {
|
|
$data[$k]['auditname'] = '确认未审核';
|
|
} else if ($v['toaudit'] == 3) {
|
|
$data[$k]['auditname'] = '已审核';
|
|
} else if ($v['toaudit'] == 4) {
|
|
$data[$k]['auditname'] = '已拒绝';
|
|
}
|
|
$data[$k]['tostoreid'] = M('retail_store')->where(array('id' => $v['storeid']))->getField('storetag');
|
|
}
|
|
}
|
|
}
|
|
$rt['code'] = 0;
|
|
$rt['msg'] = '';
|
|
$rt['count'] = $count;
|
|
$rt['data'] = $data;
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
|
|
// 展示调货单详情
|
|
public function showallocating()
|
|
{
|
|
$storeid = session('storeid');
|
|
$id = I('get.id');
|
|
$ordertype = I('get.type');
|
|
$merchantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$order = M('retail_floworder')->where(array('status' => 1, 'type' => 2, 'id' => $id))->find();
|
|
$StoreList = M('retail_store')->where(array('merchantid' => $merchantid, 'store_status' => 0, 'id' => array('neq', $storeid)))->select();
|
|
if ($ordertype == 2) {
|
|
$order['tostoreid'] = $order['storeid'];
|
|
$str = '调入单据';
|
|
} else {
|
|
$str = '调出单据';
|
|
}
|
|
$this->assign('str', $str);
|
|
$this->assign('info', $StoreList);
|
|
$this->assign('order', $order);
|
|
$this->display();
|
|
}
|
|
|
|
// 确认审核调出单---不会减少库存
|
|
public function doauditallocatingout()
|
|
{
|
|
if (IS_POST) {
|
|
$id = I('post.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id, 'audit' => 2, 'type' => 2))->find();
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
$ret = M('retail_floworder')->where(array('id' => $floworderid))->save(array('audit' => 3));
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核成功';
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核失败';
|
|
}
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '改单据不能被审核';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
// 确认调入单。---发货门店将减少库存。
|
|
public function toauditallocating()
|
|
{
|
|
if (IS_POST) {
|
|
$storeid = session('storeid');
|
|
$merchantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$id = I('post.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id, 'audit' => 3, 'type' => 2, 'toaudit' => 1))->find();
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
$w['floworderid'] = $floworderid;
|
|
$w['status'] = 1;
|
|
$data = M('retail_flow')->where($w)->select();
|
|
// 循环添加库存
|
|
$time = time();
|
|
$storeid = $order['storeid']; // 发货门店。
|
|
foreach ($data as $k => $v) {
|
|
$id = $v['goodsid'];
|
|
$goods_num = $v['num'] + $v['givenum'];
|
|
$old = M("retail_goods")->where(array('id' => $id))->getField("goods_num");
|
|
//首先判断id是否正确
|
|
$log['goods_id'] = $id;//商品id
|
|
$log['original_stock'] = $old;//初始库存
|
|
$log['do_num'] = $goods_num;//操作库存记录
|
|
$log['type'] = 2;//1表示库存增加
|
|
$log['addtime'] = $time;
|
|
$log['merchantid'] = $merchantid;
|
|
$log['storeid'] = $storeid;
|
|
$log['supplier_id'] = -2;
|
|
$log['present_stock'] = $old - $goods_num;
|
|
$log['floworderid'] = $order['id'];
|
|
$log['ordernum'] = $order['ordernum'];
|
|
$log['remark'] = '调出单被确认-减少库存';
|
|
$addLog = M("retail_quantity_logs")->add($log); // 添加库存记录
|
|
M('retail_goods')->where(array('id' => $id))->setDec('goods_num', $goods_num); // 系统库存添加。
|
|
}
|
|
$ret = M('retail_floworder')->where(array('id' => $floworderid))->save(array('toaudit' => 2));
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核成功';
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核失败';
|
|
}
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '该单据不能被审核';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
// 审核调入商品
|
|
|
|
public function toauditallocatingin()
|
|
{
|
|
$id = I('post.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id, 'type' => 2, 'toaudit' => 2))->find();
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
$ret = M('retail_floworder')->where(array('id' => $floworderid))->save(array('toaudit' => 3));
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核成功';
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核失败';
|
|
}
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '改单据不能被审核';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
|
|
// 拒绝跳入单据
|
|
|
|
public function canceltoauditallocating()
|
|
{
|
|
$id = I('post.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id, 'type' => 2, 'toaudit' => 1))->find();
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
$ret = M('retail_floworder')->where(array('id' => $floworderid))->save(array('toaudit' => 4));
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核成功';
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核失败';
|
|
}
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '改单据不能被审核';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
|
|
// 退货出库------------------
|
|
// 新建退货单
|
|
public function newrefund()
|
|
{
|
|
$storeid = session('storeid');
|
|
$merchantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$order = M('retail_floworder')->where(array('audit' => 1, 'status' => 1, 'type' => 3, 'storeid' => $storeid))->find();
|
|
$supplier = M("retail_supplier")->where(array('merchantid' => $merchantid, 'status' => 1))->select();
|
|
$this->assign('info', $supplier);
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
} else {
|
|
$Ad['storeid'] = $storeid;
|
|
$Ad['audit'] = 1;
|
|
$Ad['type'] = 3;
|
|
$Ad['status'] = 1;
|
|
$ret = M('retail_floworder')->add($Ad);
|
|
$floworderid = $ret;
|
|
}
|
|
session('floworderid', $floworderid);
|
|
$this->assign('floworderid', $floworderid);
|
|
$this->display();
|
|
}
|
|
|
|
// 退货单列表
|
|
public function refund()
|
|
{
|
|
$storeid = session('storeid');
|
|
$catemachantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$supplier = M("retail_supplier")->where(array('merchantid' => $catemachantid, 'status' => 1))->select();
|
|
$this->assign('info', $supplier);
|
|
$arr = array(
|
|
'flow_refund_export' => '/index.php/Retail/Flow/flow_refund_export',
|
|
'showrefund' => '/index.php/Retail/Flow/showrefund',
|
|
'dorefund' => '/index.php/Retail/Flow/dorefund',
|
|
'cancelfloworder' => '/index.php/Retail/Flow/cancelfloworder',
|
|
);
|
|
$authArr = checkFunction($arr);
|
|
$this->assign('authArr', $authArr);
|
|
$this->display();
|
|
}
|
|
|
|
public function refundlist()
|
|
{
|
|
$ordernum = I('get.ordernum');
|
|
if ($ordernum) {
|
|
$w['ordernum'] = $ordernum;
|
|
}
|
|
$supplier_id = I('get.supplier_id');
|
|
if ($supplier_id) {
|
|
$w['supplier_id'] = $supplier_id;
|
|
}
|
|
$date = I('get.date'); // 时间查询条件
|
|
if (!empty($date)) {
|
|
$time = explode('至', $date);
|
|
$start_time = strtotime(date('Y-m-d', strtotime($time[0])));
|
|
$end_time = strtotime(date('Y-m-d', strtotime($time[1]))) + 86400;
|
|
$w['ctime'] = array('between', array($start_time, $end_time));
|
|
}
|
|
$storeid = session('storeid');
|
|
$w['storeid'] = $storeid;
|
|
$w['status'] = 1;//正常单据。
|
|
$w['type'] = 3;//退货单。
|
|
$w['audit'] = array('in', array(2, 3));
|
|
$p = I('get.page');
|
|
$l = I('get.limit');
|
|
$count = M('retail_floworder')->where($w)->count();
|
|
$data = M('retail_floworder')->where($w)->page($p, $l)->order('ctime desc')->select();
|
|
if ($data) {
|
|
foreach ($data as $k => $v) {
|
|
$data[$k]['ctime'] = date('Y-m-d H:i:s', $v['ctime']);
|
|
$data[$k]['index'] = 1 + $k + ($p - 1) * $l;
|
|
$data[$k]['supplier'] = M('retail_supplier')->where(array('id' => $v['supplier_id']))->getField('supplier_name');
|
|
if ($v['admintype'] == 2) {
|
|
$data[$k]['adminname'] = M('retail_manager')->where(array('id' => $v['adminid']))->getField('name');
|
|
} else if ($v['admintype'] == 1) {
|
|
$data[$k]['adminname'] = M('retail_merchant')->where(array('id' => $v['adminid']))->getField('name');
|
|
}
|
|
if ($v['audit'] == 1) {
|
|
$data[$k]['auditname'] = '未确认';
|
|
} else if ($v['audit'] == 2) {
|
|
$data[$k]['auditname'] = '未审核';
|
|
} else if ($v['audit'] == 3) {
|
|
$data[$k]['auditname'] = '已审核';
|
|
}
|
|
}
|
|
}
|
|
$rt['code'] = 0;
|
|
$rt['msg'] = '';
|
|
$rt['count'] = $count;
|
|
$rt['data'] = $data;
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
|
|
// 审核退款
|
|
public function dorefund()
|
|
{
|
|
if (IS_POST) {
|
|
$storeid = session('storeid');
|
|
$merchantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$id = I('post.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id, 'audit' => 2, 'type' => 3))->find();
|
|
if ($order) {
|
|
$floworderid = $order['id'];
|
|
$w['floworderid'] = $floworderid;
|
|
$w['status'] = 1;
|
|
$data = M('retail_flow')->where($w)->select();
|
|
// 循环添加库存
|
|
$time = time();
|
|
foreach ($data as $k => $v) {
|
|
$id = $v['goodsid'];
|
|
$goods_num = $v['num'] + $v['givenum'];
|
|
$old = M("retail_goods")->where(array('id' => $id))->getField("goods_num");
|
|
//首先判断id是否正确
|
|
$log['goods_id'] = $id;//商品id
|
|
$log['original_stock'] = $old;//初始库存
|
|
$log['do_num'] = $goods_num;//操作库存记录
|
|
$log['type'] = 2;//1表示库存增加
|
|
$log['addtime'] = $time;
|
|
$log['merchantid'] = $merchantid;
|
|
$log['storeid'] = $storeid;
|
|
$log['supplier_id'] = -3;
|
|
$log['present_stock'] = $old - $goods_num;
|
|
$log['floworderid'] = $order['id'];
|
|
$log['ordernum'] = $order['ordernum'];
|
|
$log['remark'] = '退货单审核减少库存';
|
|
$addLog = M("retail_quantity_logs")->add($log); // 添加库存记录
|
|
M('retail_goods')->where(array('id' => $id))->setDec('goods_num', $goods_num); // 系统库存添加。
|
|
}
|
|
$ret = M('retail_floworder')->where(array('id' => $floworderid))->save(array('audit' => 3));
|
|
if ($ret) {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核成功';
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '审核失败';
|
|
}
|
|
} else {
|
|
$rt['status'] = 1;
|
|
$rt['msg'] = '改单据不能被审核';
|
|
}
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
}
|
|
|
|
// 退货单详情
|
|
public function showrefund()
|
|
{
|
|
$storeid = session('storeid');
|
|
$catemachantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$supplier = M("retail_supplier")->where(array('merchantid' => $catemachantid, 'status' => 1))->select();
|
|
$this->assign('info', $supplier);
|
|
$id = I('get.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id))->find();
|
|
$this->assign('order', $order);
|
|
$arr = array(
|
|
'expUser' => '/index.php/Retail/Flow/expUser',
|
|
);
|
|
$authArr = checkFunction($arr);
|
|
$this->assign('authArr', $authArr);
|
|
$this->display();
|
|
}
|
|
|
|
// 退货单打印页面
|
|
public function printrefundflow()
|
|
{
|
|
$storeid = session('storeid');
|
|
$store = M('retail_store')->where(array('id' => $storeid))->find();
|
|
$this->assign('store', $store);
|
|
$id = I('get.id');
|
|
$order = M('retail_floworder')->where(array('id' => $id))->find();
|
|
$supplier = M("retail_supplier")->where(array('id' => $order['supplier_id'], 'status' => 1))->find();
|
|
$manager = M('retail_manager')->where(array('storeid' => $storeid, 'status' => 1))->find();
|
|
$this->assign('manager', $manager);
|
|
$this->assign('supplier', $supplier);
|
|
$this->assign('time', date('Y-m-d H:i:s'));
|
|
$this->assign('order', $order);
|
|
$this->display();
|
|
}
|
|
|
|
// 货流金额数据列表。
|
|
|
|
public function flowmoneylist()
|
|
{
|
|
$arr = array(
|
|
'exportflowmoney' => '/index.php/Retail/Flow/exportflowmoney',
|
|
);
|
|
$authArr = checkFunction($arr);
|
|
$this->assign('authArr', $authArr);
|
|
$this->display();
|
|
}
|
|
|
|
public function flowmoneylistinfo()
|
|
{
|
|
$storeid = session('storeid');
|
|
$where2['tostoreid'] = $storeid;
|
|
$where2['toaudit'] = array('in', '2,3');
|
|
$where2['_logic'] = 'and';
|
|
$where['_complex'] = $where2;
|
|
$where['storeid'] = $storeid;
|
|
$where['_logic'] = 'or';
|
|
$map['_complex'] = $where;
|
|
$map['status'] = 1;
|
|
$map['audit'] = 3;
|
|
$type = I('get.type');
|
|
if ($type) {
|
|
$map['type'] = $type;
|
|
}
|
|
$p = I('get.page');
|
|
$l = I('get.limit');
|
|
$data = M('retail_floworder')->where($map)->page($p, $l)->order('ctime desc')->select();
|
|
$count = M('retail_floworder')->where($map)->count();
|
|
foreach ($data as $k => $v) {
|
|
$data[$k]['ctime'] = date('Y-m-d H:i:s', $v['ctime']);
|
|
$data[$k]['index'] = 1 + $k + ($p - 1) * $l;
|
|
$data[$k]['supplier'] = M('retail_supplier')->where(array('id' => $v['supplier_id']))->getField('supplier_name');
|
|
if ($v['admintype'] == 2) {
|
|
$data[$k]['adminname'] = M('retail_manager')->where(array('id' => $v['adminid']))->getField('name');
|
|
} else if ($v['admintype'] == 1) {
|
|
$data[$k]['adminname'] = M('retail_merchant')->where(array('id' => $v['adminid']))->getField('name');
|
|
}
|
|
if ($v['type'] == 1) {
|
|
$data[$k]['type'] = '进货单';
|
|
$data[$k]['allnum'] = $data[$k]['allnum'] + $data[$k]['allgivenum'];
|
|
} else if ($v['type'] == 2) {
|
|
$data[$k]['type'] = '调拨单';
|
|
if ($data[$k]['storeid'] == $storeid) {
|
|
$data[$k]['type'] = '调拨单(调出)';
|
|
} else if ($data[$k]['tostoreid'] == $storeid) {
|
|
$data[$k]['type'] = '调拨单(调入)';
|
|
}
|
|
} else if ($v['type'] == 3) {
|
|
$data[$k]['type'] = '退货单';
|
|
} else if ($v['type'] == 4) {
|
|
$data[$k]['type'] = '报损单';
|
|
}
|
|
$data[$k]['allmoney'] = round(($v['allmoney'] - $v['dismoney']), 2);
|
|
}
|
|
$rt['code'] = 0;
|
|
$rt['msg'] = '';
|
|
$rt['count'] = $count;
|
|
$rt['data'] = $data;
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
|
|
public function money()
|
|
{
|
|
$storeid = session('storeid');
|
|
$map['storeid'] = $storeid;
|
|
$map['status'] = 1;
|
|
$map['audit'] = 3;
|
|
$map['type'] = 1;
|
|
$type1 = M('retail_floworder')->where($map)->sum('allmoney - dismoney');
|
|
$map['type'] = 3;
|
|
$type3 = M('retail_floworder')->where($map)->sum('allmoney - dismoney');
|
|
$map['type'] = 4;
|
|
$type4 = M('retail_floworder')->where($map)->sum('allmoney - dismoney');
|
|
// $map21['storeid'] = $storeid;
|
|
$map21['tostoreid'] = $storeid;
|
|
$map21['status'] = 1;
|
|
$map21['type'] = 2;
|
|
$map21['toaudit'] = array('in', '2,3');
|
|
$map21['audit'] = 3;
|
|
$type21 = M('retail_floworder')->where($map21)->sum('allmoney - dismoney');
|
|
// $map22['tostoreid'] = $storeid;
|
|
$map22['storeid'] = $storeid;
|
|
$map22['status'] = 1;
|
|
$map22['type'] = 2;
|
|
$map22['toaudit'] = array('in', '2,3');
|
|
$map22['audit'] = 3;
|
|
$type22 = M('retail_floworder')->where($map22)->sum('allmoney - dismoney');
|
|
$rt['type1'] = $type1 ? round($type1, 2) : 0;
|
|
$rt['type21'] = $type21 ? round($type21, 2) : 0;
|
|
$rt['type22'] = $type22 ? round($type22, 2) : 0;
|
|
$rt['type3'] = $type3 ? round($type3, 2) : 0;
|
|
$rt['type4'] = $type4 ? round($type4, 2) : 0;
|
|
$this->ajaxReturn($rt);
|
|
}
|
|
|
|
// 按类型导出货流账单
|
|
|
|
public function exportflowmoney()
|
|
{
|
|
$storeid = session('storeid');
|
|
$type = I('get.type');
|
|
if (!$type) {
|
|
$this->error('请选择一种类型再导出');
|
|
}
|
|
$w['status'] = 1;
|
|
$w['storeid'] = $storeid;
|
|
//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
|
|
import("Vendor.PHPExcel.PHPExcel");
|
|
import("Vendor.PHPExcel.Writer.Excel5");
|
|
import("Vendor.PHPExcel.IOFactory.php");
|
|
if ($type == '1') {
|
|
// 进货单
|
|
$w['audit'] = 3;
|
|
$w['type'] = 1;
|
|
$data = M('retail_floworder')->where($w)->select();
|
|
foreach ($data as $k => $v) {
|
|
$data[$k]['ctime'] = date('Y-m-d H:i:s', $v['ctime']);
|
|
if ($v['supplier_id'] == 0) {
|
|
$data[$k]['supplier'] = '自采/其他';
|
|
} else {
|
|
$data[$k]['supplier'] = M('retail_supplier')->where(array('id' => $v['supplier_id']))->getField('supplier_name');
|
|
}
|
|
if ($v['admintype'] == 2) {
|
|
$data[$k]['adminname'] = M('retail_manager')->where(array('id' => $v['adminid']))->getField('name');
|
|
} else if ($v['admintype'] == 1) {
|
|
$data[$k]['adminname'] = M('retail_merchant')->where(array('id' => $v['adminid']))->getField('name');
|
|
}
|
|
}
|
|
$filename = "进货单账单";
|
|
$headArr = array(
|
|
array('supplier', '供货商'),
|
|
array('ctime', '制单时间'),
|
|
array('allmoney', '总金额'),
|
|
array('dismoney', '优惠金额'),
|
|
array('paymoney', '结算金额'),
|
|
array('allnum', '进货数量'),
|
|
array('allgivenum', '赠送数量'),
|
|
array('ordernum', '单据号'),
|
|
array('adminname', '操作人'),
|
|
);
|
|
} else if ($type == '3') {
|
|
// 进货单
|
|
$w['audit'] = 3;
|
|
$w['type'] = 3;
|
|
$data = M('retail_floworder')->where($w)->select();
|
|
foreach ($data as $k => $v) {
|
|
$data[$k]['ctime'] = date('Y-m-d H:i:s', $v['ctime']);
|
|
if ($v['supplier_id'] == 0) {
|
|
$data[$k]['supplier'] = '自采/其他';
|
|
} else {
|
|
$data[$k]['supplier'] = M('retail_supplier')->where(array('id' => $v['supplier_id']))->getField('supplier_name');
|
|
}
|
|
if ($v['admintype'] == 2) {
|
|
$data[$k]['adminname'] = M('retail_manager')->where(array('id' => $v['adminid']))->getField('name');
|
|
} else if ($v['admintype'] == 1) {
|
|
$data[$k]['adminname'] = M('retail_merchant')->where(array('id' => $v['adminid']))->getField('name');
|
|
}
|
|
}
|
|
$filename = "退货单账单";
|
|
$headArr = array(
|
|
array('supplier', '供货商'),
|
|
array('ctime', '制单时间'),
|
|
array('allmoney', '总金额'),
|
|
array('dismoney', '修改金额'),
|
|
array('paymoney', '结算金额'),
|
|
array('allnum', '退货数量'),
|
|
array('ordernum', '单据号'),
|
|
array('adminname', '操作人'),
|
|
);
|
|
} else if ($type == '4') {
|
|
// 进货单
|
|
$w['audit'] = 3;
|
|
$w['type'] = 4;
|
|
$data = M('retail_floworder')->where($w)->select();
|
|
foreach ($data as $k => $v) {
|
|
$data[$k]['ctime'] = date('Y-m-d H:i:s', $v['ctime']);
|
|
if ($v['supplier_id'] == 0) {
|
|
$data[$k]['supplier'] = '自采/其他';
|
|
} else {
|
|
$data[$k]['supplier'] = M('retail_supplier')->where(array('id' => $v['supplier_id']))->getField('supplier_name');
|
|
}
|
|
if ($v['admintype'] == 2) {
|
|
$data[$k]['adminname'] = M('retail_manager')->where(array('id' => $v['adminid']))->getField('name');
|
|
} else if ($v['admintype'] == 1) {
|
|
$data[$k]['adminname'] = M('retail_merchant')->where(array('id' => $v['adminid']))->getField('name');
|
|
}
|
|
}
|
|
$filename = "报损单账单";
|
|
$headArr = array(
|
|
array('ctime', '制单时间'),
|
|
array('allmoney', '总金额'),
|
|
array('paymoney', '报损金额'),
|
|
array('allnum', '报损数量'),
|
|
array('ordernum', '单据号'),
|
|
array('adminname', '操作人'),
|
|
);
|
|
} else if ($type == '2') {
|
|
// 进货单
|
|
$where2['tostoreid'] = $storeid;
|
|
$where2['toaudit'] = array('in', '2,3');
|
|
$where2['_logic'] = 'and';
|
|
$where['_complex'] = $where2;
|
|
$where['storeid'] = $storeid;
|
|
$where['_logic'] = 'or';
|
|
$map['_complex'] = $where;
|
|
$map['status'] = 1;
|
|
$map['audit'] = 3;
|
|
$map['type'] = 2;
|
|
$data = M('retail_floworder')->where($map)->select();
|
|
foreach ($data as $k => $v) {
|
|
$data[$k]['ctime'] = date('Y-m-d H:i:s', $v['ctime']);
|
|
if ($v['admintype'] == 2) {
|
|
$data[$k]['adminname'] = M('retail_manager')->where(array('id' => $v['adminid']))->getField('name');
|
|
} else if ($v['admintype'] == 1) {
|
|
$data[$k]['adminname'] = M('retail_merchant')->where(array('id' => $v['adminid']))->getField('name');
|
|
}
|
|
if ($data[$k]['storeid'] == $storeid) {
|
|
$data[$k]['type'] = '调拨单(调出)';
|
|
$data[$k]['storetag'] = M('retail_store')->where(array('id' => $v['tostoreid']))->getField('storetag');
|
|
} else if ($data[$k]['tostoreid'] == $storeid) {
|
|
$data[$k]['type'] = '调拨单(调入)';
|
|
$data[$k]['storetag'] = M('retail_store')->where(array('id' => $v['storeid']))->getField('storetag');
|
|
}
|
|
}
|
|
$filename = "报损单账单";
|
|
$headArr = array(
|
|
array('storetag', '调拨门店'),
|
|
array('ctime', '制单时间'),
|
|
array('allmoney', '总金额'),
|
|
array('paymoney', '结算金额'),
|
|
array('allnum', '调拨数量'),
|
|
array('ordernum', '单据号'),
|
|
array('adminname', '操作人'),
|
|
);
|
|
}
|
|
$this->getExcel($filename, $headArr, $data, $str = "");
|
|
}
|
|
|
|
// 进货单导出明细
|
|
public function flow_order_export()
|
|
{
|
|
$date = I('get.date'); // 日期
|
|
$ordernum = I('get.ordernum'); // 单号
|
|
$supplier_id = I('get.supplier_id'); // 供货商
|
|
$storeid = session('storeid');
|
|
if (!empty($date)) { // 时间查询条件 默认当天
|
|
$time = explode('至', $date);
|
|
$start_time = strtotime(date('Y-m-d', strtotime($time[0])));
|
|
$end_time = strtotime(date('Y-m-d', strtotime($time[1]))) + 86400;
|
|
$where['ctime'] = array('between', array($start_time, $end_time));
|
|
} else {
|
|
$start_time = strtotime(date('Y-m-d', time()));
|
|
$end_time = strtotime(date('Y-m-d', time())) + 86400;
|
|
$where['ctime'] = array('between', array($start_time, $end_time));
|
|
}
|
|
if (!empty($ordernum)) { // 单号查询条件
|
|
$where['ordernum'] = $ordernum;
|
|
}
|
|
if (!empty($supplier_id)) {
|
|
$where['supplier_id'] = $supplier_id;
|
|
}
|
|
$where['type'] = 1; // 进货单
|
|
$where['status'] = 1; // 订单状态
|
|
$where['storeid'] = $storeid;
|
|
$where['audit'] = array('in', array(2, 3));
|
|
//根据条件查出收款明细
|
|
$floworder = M('retail_floworder')->where($where)->order('ctime desc')->select();
|
|
if (!empty($floworder)) {
|
|
foreach ($floworder as $key => &$val) {
|
|
$val['key'] = $key + 1;
|
|
$val['ctime'] = date('Y-m-d H:i:s', $val['ctime']);
|
|
if ($val['supplier_id'] == 0) {
|
|
$val['supplier'] = '自采/其他';
|
|
} else {
|
|
$val['supplier'] = M('retail_supplier')->where(array('id' => $val['supplier_id']))->getField('supplier_name');
|
|
}
|
|
if ($val['admintype'] == 2) {
|
|
$val['adminname'] = M('retail_manager')->where(array('id' => $val['adminid']))->getField('name');
|
|
} else if ($val['admintype'] == 1) {
|
|
$val['adminname'] = M('retail_merchant')->where(array('id' => $val['adminid']))->getField('name');
|
|
}
|
|
if ($val['audit'] == 1) {
|
|
$val['audit'] = '未确定';
|
|
} else if ($val['audit'] == 2) {
|
|
$val['audit'] = '未审核';
|
|
} else {
|
|
$val['audit'] = '已审核';
|
|
}
|
|
}
|
|
} else {
|
|
$floworder = array();
|
|
}
|
|
$floworder_name = '进货单明细';
|
|
$headArr = array(
|
|
array('key', '序号'),
|
|
array('ordernum', '进货单号'),
|
|
array('supplier', '供货商'),
|
|
array('ctime', '制单时间'),
|
|
array('adminname', '制单人'),
|
|
array('allnum', '进货量'),
|
|
array('allgivenum', '赠送量'),
|
|
array('allmoney', '总金额'),
|
|
array('dismoney', '优惠金额'),
|
|
array('paymoney', '支付金额'),
|
|
array('audit', '单据状态')
|
|
);
|
|
$str = $floworder_name . '导出时间' . date('Y-m-d H:i:s', time());
|
|
$this->getExcel($floworder_name, $headArr, $floworder, $str);
|
|
}
|
|
|
|
// 退货单导出明细
|
|
public function flow_refund_export()
|
|
{
|
|
$date = I('get.date'); // 日期
|
|
$ordernum = I('get.ordernum'); // 单号
|
|
$supplier_id = I('get.supplier_id'); // 供货商
|
|
$storeid = session('storeid');
|
|
if (!empty($date)) { // 时间查询条件 默认当天
|
|
$time = explode('至', $date);
|
|
$start_time = strtotime(date('Y-m-d', strtotime($time[0])));
|
|
$end_time = strtotime(date('Y-m-d', strtotime($time[1]))) + 86400;
|
|
$where['ctime'] = array('between', array($start_time, $end_time));
|
|
} else {
|
|
$start_time = strtotime(date('Y-m-d', time()));
|
|
$end_time = strtotime(date('Y-m-d', time())) + 86400;
|
|
$where['ctime'] = array('between', array($start_time, $end_time));
|
|
}
|
|
if (!empty($ordernum)) { // 单号查询条件
|
|
$where['ordernum'] = $ordernum;
|
|
}
|
|
if (!empty($supplier_id)) {
|
|
$where['supplier_id'] = $supplier_id;
|
|
}
|
|
$where['type'] = 3; // 退货单
|
|
$where['status'] = 1; // 订单状态
|
|
$where['storeid'] = $storeid;
|
|
$where['audit'] = array('in', array(2, 3));
|
|
//根据条件查出收款明细
|
|
$flow_refund = M('retail_floworder')->where($where)->order('ctime desc')->select();
|
|
if (!empty($flow_refund)) {
|
|
foreach ($flow_refund as $key => &$val) {
|
|
$val['key'] = $key + 1;
|
|
$val['ctime'] = date('Y-m-d H:i:s', $val['ctime']);
|
|
if ($val['supplier_id'] == 0) {
|
|
$val['supplier'] = '自采/其他';
|
|
} else {
|
|
$val['supplier'] = M('retail_supplier')->where(array('id' => $val['supplier_id']))->getField('supplier_name');
|
|
}
|
|
if ($val['admintype'] == 2) {
|
|
$val['adminname'] = M('retail_manager')->where(array('id' => $val['adminid']))->getField('name');
|
|
} else if ($val['admintype'] == 1) {
|
|
$val['adminname'] = M('retail_merchant')->where(array('id' => $val['adminid']))->getField('name');
|
|
}
|
|
if ($val['audit'] == 1) {
|
|
$val['audit'] = '未确定';
|
|
} else if ($val['audit'] == 2) {
|
|
$val['audit'] = '未审核';
|
|
} else {
|
|
$val['audit'] = '已审核';
|
|
}
|
|
}
|
|
} else {
|
|
$flow_refund = array();
|
|
}
|
|
$flow_refund_name = '退货单明细';
|
|
$headArr = array(
|
|
array('key', '序号'),
|
|
array('ordernum', '进货单号'),
|
|
array('supplier', '供货商'),
|
|
array('ctime', '制单时间'),
|
|
array('adminname', '制单人'),
|
|
array('allnum', '退货量'),
|
|
array('allmoney', '总金额'),
|
|
array('dismoney', '修改金额'),
|
|
array('paymoney', '支付金额'),
|
|
array('audit', '单据状态')
|
|
);
|
|
$str = $flow_refund_name . '导出时间' . date('Y-m-d H:i:s', time());
|
|
$this->getExcel($flow_refund_name, $headArr, $flow_refund, $str);
|
|
}
|
|
|
|
// 报损单导出明细
|
|
public function flow_damage_export()
|
|
{
|
|
$date = I('get.date'); // 日期
|
|
$ordernum = I('get.ordernum'); // 单号
|
|
$supplier_id = I('get.supplier_id'); // 供货商
|
|
$storeid = session('storeid');
|
|
if (!empty($date)) { // 时间查询条件 默认当天
|
|
$time = explode('至', $date);
|
|
$start_time = strtotime(date('Y-m-d', strtotime($time[0])));
|
|
$end_time = strtotime(date('Y-m-d', strtotime($time[1]))) + 86400;
|
|
$where['ctime'] = array('between', array($start_time, $end_time));
|
|
} else {
|
|
$start_time = strtotime(date('Y-m-d', time()));
|
|
$end_time = strtotime(date('Y-m-d', time())) + 86400;
|
|
$where['ctime'] = array('between', array($start_time, $end_time));
|
|
}
|
|
if (!empty($ordernum)) { // 单号查询条件
|
|
$where['ordernum'] = $ordernum;
|
|
}
|
|
if (!empty($supplier_id)) {
|
|
$where['supplier_id'] = $supplier_id;
|
|
}
|
|
$where['type'] = 4; // 退货单
|
|
$where['status'] = 1; // 订单状态
|
|
$where['storeid'] = $storeid;
|
|
$where['audit'] = array('in', array(2, 3));
|
|
//根据条件查出收款明细
|
|
$flow_damage = M('retail_floworder')->where($where)->order('ctime desc')->select();
|
|
if (!empty($flow_damage)) {
|
|
foreach ($flow_damage as $key => &$val) {
|
|
$val['key'] = $key + 1;
|
|
$val['ctime'] = date('Y-m-d H:i:s', $val['ctime']);
|
|
if ($val['supplier_id'] == 0) {
|
|
$val['supplier'] = '自采/其他';
|
|
} else {
|
|
$val['supplier'] = M('retail_supplier')->where(array('id' => $val['supplier_id']))->getField('supplier_name');
|
|
}
|
|
if ($val['admintype'] == 2) {
|
|
$val['adminname'] = M('retail_manager')->where(array('id' => $val['adminid']))->getField('name');
|
|
} else if ($val['admintype'] == 1) {
|
|
$val['adminname'] = M('retail_merchant')->where(array('id' => $val['adminid']))->getField('name');
|
|
}
|
|
if ($val['audit'] == 1) {
|
|
$val['audit'] = '未确定';
|
|
} else if ($val['audit'] == 2) {
|
|
$val['audit'] = '未审核';
|
|
} else {
|
|
$val['audit'] = '已审核';
|
|
}
|
|
}
|
|
} else {
|
|
$flow_damage = array();
|
|
}
|
|
$flow_damage_name = '报损单明细';
|
|
$headArr = array(
|
|
array('key', '序号'),
|
|
array('ordernum', '进货单号'),
|
|
array('ctime', '制单时间'),
|
|
array('adminname', '制单人'),
|
|
array('allnum', '报损量'),
|
|
array('allmoney', '报损总金额'),
|
|
array('audit', '单据状态')
|
|
);
|
|
$str = $flow_damage_name . '导出时间' . date('Y-m-d H:i:s', time());
|
|
$this->getExcel($flow_damage_name, $headArr, $flow_damage, $str);
|
|
}
|
|
|
|
// 调拨单导出明细
|
|
public function flow_allocating_export()
|
|
{
|
|
$date = I('get.date'); // 日期
|
|
$ordernum = I('get.ordernum'); // 单号
|
|
$ordertype = I('get.ordertype'); // 订单类型
|
|
$storeid = session('storeid');
|
|
if (!empty($date)) { // 时间查询条件 默认当天
|
|
$time = explode('至', $date);
|
|
$start_time = strtotime(date('Y-m-d', strtotime($time[0])));
|
|
$end_time = strtotime(date('Y-m-d', strtotime($time[1]))) + 86400;
|
|
$where['ctime'] = array('between', array($start_time, $end_time));
|
|
} else {
|
|
$start_time = strtotime(date('Y-m-d', time()));
|
|
$end_time = strtotime(date('Y-m-d', time())) + 86400;
|
|
$where['ctime'] = array('between', array($start_time, $end_time));
|
|
}
|
|
if (!empty($ordernum)) { // 单号查询条件
|
|
$where['ordernum'] = $ordernum;
|
|
}
|
|
|
|
$ordertype = $ordertype ? $ordertype : 1;
|
|
if ($ordertype == 1) {
|
|
$where['storeid'] = $storeid;
|
|
$where['audit'] = array('in', array(2, 3));
|
|
} else if ($ordertype == 2) {
|
|
$where['tostoreid'] = $storeid;
|
|
$where['audit'] = 3;
|
|
}
|
|
$where['type'] = 2; // 退货单
|
|
$where['status'] = 1; // 订单状态
|
|
//根据条件查出收款明细
|
|
$flow_allocating = M('retail_floworder')->where($where)->order('ctime desc')->select();
|
|
if (!empty($flow_allocating)) {
|
|
foreach ($flow_allocating as $key => &$val) {
|
|
$val['key'] = $key + 1;
|
|
$val['ctime'] = date('Y-m-d H:i:s', $val['ctime']);
|
|
$val['ordertype'] = $ordertype;
|
|
if ($val['supplier_id'] == 0) {
|
|
$val['supplier'] = '自采/其他';
|
|
} else {
|
|
$val['supplier'] = M('retail_supplier')->where(array('id' => $val['supplier_id']))->getField('supplier_name');
|
|
}
|
|
if ($val['admintype'] == 2) {
|
|
$val['adminname'] = M('retail_manager')->where(array('id' => $val['adminid']))->getField('name');
|
|
} else if ($val['admintype'] == 1) {
|
|
$val['adminname'] = M('retail_merchant')->where(array('id' => $val['adminid']))->getField('name');
|
|
}
|
|
if ($ordertype == 1) {
|
|
if ($val['audit'] == 1) {
|
|
$val['audit'] = '未确认';
|
|
} else if ($val['audit'] == 2) {
|
|
$val['audit'] = '未审核';
|
|
} else if ($val['audit'] == 3) {
|
|
$val['auditname'] = '已审核';
|
|
if ($val['toaudit'] == 1) {
|
|
$val['audit'] = '已审核(未确认)';
|
|
} else if ($val['toaudit'] == 4) {
|
|
$val['audit'] = '已审核(已拒绝)';
|
|
} else {
|
|
$val['audit'] = '已审核(已接收)';
|
|
}
|
|
}
|
|
$val['tostoreid'] = M('retail_store')->where(array('id' => $val['tostoreid']))->getField('storetag');
|
|
} else if ($ordertype == 2) {
|
|
if ($val['toaudit'] == 1) {
|
|
$val['audit'] = '等待确认';
|
|
} else if ($val['toaudit'] == 2) {
|
|
$val['audit'] = '确认未审核';
|
|
} else if ($val['toaudit'] == 3) {
|
|
$val['audit'] = '已审核';
|
|
} else if ($val['toaudit'] == 4) {
|
|
$val['audit'] = '已拒绝';
|
|
}
|
|
$val['tostoreid'] = M('retail_store')->where(array('id' => $v['storeid']))->getField('storetag');
|
|
}
|
|
}
|
|
} else {
|
|
$flow_allocating = array();
|
|
}
|
|
$flow_allocating_name = '调拨单明细';
|
|
$headArr = array(
|
|
array('key', '序号'),
|
|
array('ordernum', '进货单号'),
|
|
array('ctime', '制单时间'),
|
|
array('adminname', '制单人'),
|
|
array('tostoreid', '调拨门店'),
|
|
array('allnum', '调拨量'),
|
|
array('allmoney', '调拨总金额'),
|
|
array('audit', '单据状态')
|
|
);
|
|
$str = $flow_allocating_name . '导出时间' . date('Y-m-d H:i:s', time());
|
|
$this->getExcel($flow_allocating_name, $headArr, $flow_allocating, $str);
|
|
}
|
|
|
|
//商户进货单列表
|
|
public function purchase()
|
|
{
|
|
$arr = array(
|
|
'purchase_detail' => '/index.php/Retail/Flow/purchase_detail',
|
|
'purchase_examine' => '/index.php/Retail/Flow/purchase_examine',
|
|
'voidorder' => '/index.php/Retail/Flow/voidorder',
|
|
);
|
|
$authArr = checkFunction($arr);
|
|
$this->assign('authArr', $authArr);
|
|
$this->display();
|
|
}
|
|
|
|
public function purchase_merchant()
|
|
{
|
|
$user = session('ls_userinfo');
|
|
$storeid = session('storeid');
|
|
if (empty($storeid) || empty($user)) {
|
|
$res['code'] = 0;
|
|
$res['msg'] = '';
|
|
$res['count'] = 0;
|
|
$res['data'] = array();
|
|
$this->ajaxReturn($res);
|
|
exit;
|
|
}
|
|
$order_id = I('get.order_id');
|
|
$order_state = I('get.order_state');
|
|
$date = I('get.date');
|
|
if (!empty($order_id)) {
|
|
$where['order_id'] = array('like', '%' . $order_id . '%');
|
|
}
|
|
if (!empty($order_state)) {
|
|
$where['examine'] = $order_state;
|
|
}
|
|
if (!empty($date)) {
|
|
$date = explode('至', $date);
|
|
$start_time = strtotime(date('Y-m-d 00:00:00', strtotime($date[0])));
|
|
$endtime = strtotime(date('Y-m-d 23:59:59', strtotime($date[1])));
|
|
$where['addtime'] = array('between', array($start_time, $endtime));
|
|
}
|
|
$page = I('get.page');
|
|
$limit = I('get.limit');
|
|
$where['target_storeid'] = $storeid;
|
|
$where['merchantid'] = $user['merchantid'];
|
|
$where['type'] = 1;
|
|
$where['status'] = 1;
|
|
$goods_info = M('retail_allocation')->where($where)->order('addtime desc')->page($page, $limit)->select();
|
|
if ($goods_info) {
|
|
$count = M('retail_allocation')->where($where)->count();
|
|
foreach ($goods_info as $key => &$val) {
|
|
$val['index'] = $key + 1;
|
|
$val['addtime'] = date('Y-m-d H:i:s', $val['addtime']);
|
|
if ($val['examine'] == 1) {
|
|
$val['state'] = '未审核';
|
|
} else if ($val['examine'] == 2) {
|
|
$val['state'] = '审核通过';
|
|
} else if ($val['examine'] == 3) {
|
|
$val['state'] = '审核失败';
|
|
}
|
|
}
|
|
$res['code'] = 0;
|
|
$res['msg'] = '';
|
|
$res['count'] = $count;
|
|
$res['data'] = $goods_info;
|
|
} else {
|
|
$res['code'] = 0;
|
|
$res['msg'] = '';
|
|
$res['count'] = 0;
|
|
$res['data'] = array();
|
|
}
|
|
$this->ajaxReturn($res);
|
|
}
|
|
|
|
//查看商户进货详情
|
|
public function purchase_detail()
|
|
{
|
|
$id = I('get.id');
|
|
$this->assign('id', $id);
|
|
$this->display();
|
|
}
|
|
|
|
//查看商户进货详情
|
|
public function purchase_detail_list()
|
|
{
|
|
$id = I('post.floworderid');
|
|
$goods_bank_info = M('retail_allocation_goods_bank')->where(array('allocation_id' => $id))->select();
|
|
if ($goods_bank_info) {
|
|
foreach ($goods_bank_info as $key => &$val) {
|
|
$val['index'] = $key + 1;
|
|
}
|
|
$res['status'] = 1;
|
|
$res['data'] = $goods_bank_info;
|
|
} else {
|
|
$res['status'] = 0;
|
|
$res['data'] = array();
|
|
}
|
|
$this->ajaxReturn($res);
|
|
}
|
|
|
|
//门店进货商户审核
|
|
public function purchase_examine()
|
|
{
|
|
$storeid = session('storeid');
|
|
$merchantid = M('retail_store')->where(array('id' => $storeid))->getField('merchantid');
|
|
$id = I('post.id');
|
|
$stime = time();
|
|
$allocation_info = M('retail_allocation')->where(array('id' => $id))->find(); //商户的出货单
|
|
if ($allocation_info) {
|
|
$goods_bank_info = M('retail_allocation_goods_bank')->where(array('allocation_id' => $allocation_info['id']))->select();
|
|
if ($goods_bank_info) {
|
|
foreach ($goods_bank_info as $key => $val) {
|
|
$store_goods['goods_number'] = $val['good_number'];
|
|
$store_goods['status'] = 0;
|
|
$store_goods['store_id'] = $storeid;
|
|
$store_goods['merchant_id'] = $merchantid;
|
|
$store_goods_info = M('retail_goods')->where($store_goods)->find();
|
|
if ($store_goods_info) {
|
|
//已经存在该商品判断是否存在条码相同的其他商品
|
|
if (!empty($val['goods_code'])) {
|
|
$goods_code['goods_code'] = $val['goods_code'];
|
|
$goods_code['id'] = array('neq', $store_goods_info['id']);
|
|
$goods_code['status'] = 0;
|
|
$goods_code['store_id'] = $storeid;
|
|
$goods_code['merchant_id'] = $merchantid;
|
|
$code_goods_info = M('retail_goods')->where($goods_code)->find();
|
|
if ($code_goods_info) {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '请检查' . $code_goods_info['goods_name'] . '与商户' . $store_goods_info['goods_name'] . '条码重复';
|
|
$this->ajaxReturn($res);
|
|
exit;
|
|
}
|
|
}
|
|
if ($store_goods_info['attribute_state'] != $val['attribute']) {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '请检查商户商品' . $val['goods_name'] . '与门店商品' . $store_goods_info['goods_name'] . '规格不同';
|
|
$this->ajaxReturn($res);
|
|
exit;
|
|
}
|
|
if ($val['attribute'] == 2) {
|
|
//有规格的商品allocat_sku_goods
|
|
$sku_mgoods_ids = M('retail_allocat_sku_goods')->where(array('goods_bannk_id' => $val['id']))->getField('sku_mgoods_id',true);
|
|
$sku_mgoods_ids = $sku_mgoods_ids?$sku_mgoods_ids:array('0');
|
|
$m_sku_goods_info = M('retail_sku_mgoods')->where(array('id' => array('in', $sku_mgoods_ids)))->select();
|
|
$m_sku_goods_info = $m_sku_goods_info?$m_sku_goods_info:array(array('sku_id_list'=>'0'));
|
|
$s_sku_goods_info = M('retail_sku_goods')->where(array('goods_id' => $store_goods_info['id'], 'status' => 1, 'state' => 0))->select();
|
|
$s_sku_goods_info = $s_sku_goods_info?$s_sku_goods_info:array(array('sku_id_list'=>'0'));
|
|
//判断规格是否一致
|
|
$m_sku_attr = M('retail_sku_list')->where(array('id' => array('in', $m_sku_goods_info[0]['sku_id_list'])))->getField('attr_id', true);
|
|
$s_sku_attr = M('retail_sku_list')->where(array('id' => array('in', $s_sku_goods_info[0]['sku_id_list'])))->getField('attr_id', true);
|
|
$m_sku_attr = asort($m_sku_attr);
|
|
$s_sku_attr = asort($s_sku_attr);
|
|
if ((string)$m_sku_attr != (string)$s_sku_attr) {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '商户商品' . $val['goods_name'] . '与门店商品' . $store_goods_info['goods_name'] . '规格不同';
|
|
$this->ajaxReturn($res);
|
|
exit;
|
|
}
|
|
}
|
|
}else{
|
|
if(!empty($val['goods_code'])){
|
|
$goods_code['goods_code'] = $val['goods_code'];
|
|
$goods_code['status'] = 0;
|
|
$goods_code['store_id'] = $storeid;
|
|
$goods_code['merchant_id'] = $merchantid;
|
|
$code_goods_info = M('retail_goods')->where($goods_code)->find();
|
|
if ($code_goods_info) {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '请检查' . $code_goods_info['goods_name'] . '与商户' . $store_goods_info['goods_name'] . '条码重复';
|
|
$this->ajaxReturn($res);
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//可以直接存入
|
|
foreach ($goods_bank_info as $key => $val) {
|
|
//因图片管理器所以查询图片
|
|
$goods_image_id = M('retail_mgoods')->where(array('id'=>$val['goodsid']))->getField("goods_image_id");
|
|
$store_goods['goods_number'] = $val['good_number'];
|
|
$store_goods['status'] = 0;
|
|
$store_goods['store_id'] = $storeid;
|
|
$store_goods_info = M('retail_goods')->where($store_goods)->find();
|
|
if ($store_goods_info){
|
|
//存在该商品
|
|
$mgoods_banner = array();
|
|
$mgoods_banner = M('retail_mgoods_banner')->where(array('mgoods_id'=>$val['goodsid']))->field("image,image_id")->select();
|
|
if(!empty($mgoods_banner)){
|
|
$store_goods_bannerid = M('retail_goods_banner')->where(array('goods_id'=>$store_goods_info['id']))->getField('id',true);
|
|
if($store_goods_bannerid){
|
|
M('retail_goods_banner')->where(array('id'=>array('in',$store_goods_bannerid)))->delete();
|
|
}
|
|
$banner_time = time();
|
|
foreach ($mgoods_banner as $keybanner=>&$valbanner){
|
|
$goods_banner['storeid'] = $storeid;
|
|
$goods_banner['goods_id'] = $store_goods_info['id'];
|
|
$goods_banner['image'] = $valbanner['image'];
|
|
$goods_banner['image_id'] = $valbanner['image_id'];
|
|
$goods_banner['addtime'] = $banner_time;
|
|
M('retail_goods_banner')->add($goods_banner);
|
|
}
|
|
}
|
|
$data['goods_img_id'] = $goods_image_id;
|
|
$data['goods_name'] = $val['goods_name'];
|
|
$data['goods_class_id'] = $val['goods_class_id'];
|
|
$data['goods_code'] = $val['goods_code'];
|
|
$data['details'] = $val['details'];
|
|
$data['goods_brand_id'] = $val['goods_brand_id'];
|
|
if ($val['attribute'] == 2){
|
|
//有规格处理规格
|
|
$m_sku_list_ids = M('retail_allocat_sku_goods')->where(array('goods_bannk_id' => $val['id']))->getField('sku_mgoods_id',true);
|
|
$m_sku_list_info = M('retail_sku_mgoods')->where(array('id'=>array('in',$m_sku_list_ids)))->select();
|
|
$m_sku_list_info = $m_sku_list_info?$m_sku_list_info:array(array('sku_id_list'=>'0'));
|
|
$m_sku_id_list_count = count(explode(',',$m_sku_list_info[0]['sku_id_list']));
|
|
$s_sku_list_info = M('retail_sku_goods')->where(array('goods_id'=>$store_goods_info['id'],'state'=>0,'status'=>1))->select();
|
|
foreach ($m_sku_list_info as $ke=>&$va){
|
|
$arrList = array();
|
|
foreach($s_sku_list_info as $k=>&$v){
|
|
$m_sku_id_list_arr = explode(',',$va['sku_id_list']);
|
|
$s_sku_id_list_arr = explode(',',$v['sku_id_list']);
|
|
$sku_list_num = 0;
|
|
foreach ($m_sku_id_list_arr as $mkey=>&$mval){
|
|
if(in_array($mval,$s_sku_id_list_arr)){
|
|
$sku_list_num = $sku_list_num + 1;
|
|
}
|
|
}
|
|
$arrList[] = $sku_list_num;
|
|
if($sku_list_num == $m_sku_id_list_count){
|
|
if($v['sku_id_list'] != $va['sku_id_list']){
|
|
M('retail_sku_goods')->where(array('id'=>$v['id']))->save(array('sku_id_list'=>$va['sku_id_list']));
|
|
}
|
|
M('retail_sku_goods')->where(array('id'=>$v['id']))->save(array('sku_num'=>$va['sku_num']));
|
|
$savenum = M('retail_allocat_sku_goods')->where(array('goods_bannk_id'=>$val['id'],'sku_mgoods_id'=>$va['id']))->getField('shipment_num');
|
|
M('retail_sku_goods')->where(array('id'=>$v['id']))->setInc('goods_num',$savenum);
|
|
break;
|
|
}
|
|
}
|
|
if(!in_array($m_sku_id_list_count,$arrList)){
|
|
$sku_goods_num = M('retail_allocat_sku_goods')->where(array('goods_bannk_id'=>$val['id'],'sku_mgoods_id'=>$va['id']))->getField('shipment_num');
|
|
$s_sku_goods['storeid'] = $storeid;
|
|
$s_sku_goods['goods_id'] = $store_goods_info['id'];
|
|
$s_sku_goods['sku_id_list'] = $va['sku_id_list'];
|
|
$s_sku_goods['purchase_price'] = $va['purch_price'];
|
|
$s_sku_goods['online_price'] = $va['online_price'];
|
|
$s_sku_goods['retail_price'] = $va['retail_price'];
|
|
$s_sku_goods['goods_num'] = $sku_goods_num;
|
|
$s_sku_goods['sku_num'] = $va['sku_num'];
|
|
$s_sku_goods['shop_mem_price'] = $va['shop_mem_price'];
|
|
$s_sku_goods['store_mem_price'] = $va['store_mem_price'];
|
|
$s_sku_goods['add_time'] = $stime;
|
|
$s_sku_goods['status'] = $va['status'];
|
|
$s_sku_goods['state'] = $va['state'];
|
|
$s_sku_goods['type'] = $va['type'];
|
|
$s_sku_goods['sku_code'] = $va['sku_code'];
|
|
$s_sku_goods['goods_img_id'] = $va['goods_img_id'];//图片id
|
|
$add_sku_goods = M('retail_sku_goods')->add($s_sku_goods);
|
|
}
|
|
}
|
|
}
|
|
$store_goods_save = M('retail_goods')->where($store_goods)->save($data);
|
|
//入库明细
|
|
$quantity['original_stock'] = $store_goods_info['goods_num'];
|
|
$quantity['do_num'] = $val['num'];
|
|
$quantity['type'] = 1;
|
|
$quantity['goods_id'] = $store_goods_info['id'];
|
|
$quantity['addtime'] = $stime;
|
|
$quantity['merchantid'] = $merchantid;
|
|
$quantity['storeid'] = $storeid;
|
|
$quantity['supplier_id'] = 1;
|
|
$quantity['present_stock'] = ($store_goods_info['goods_num'] + $val['num']);
|
|
$quantity['remark'] = '商户调拨';
|
|
M('retail_quantity_logs')->add($quantity);
|
|
$goods_num_set = M('retail_goods')->where($store_goods)->setInc('goods_num', $val['num']);
|
|
} else {
|
|
//新增商品
|
|
$sdata['goods_img_id'] = $goods_image_id;
|
|
$sdata['goods_name'] = $val['goods_name'];
|
|
$sdata['goods_class_id'] = $val['goods_class_id'];
|
|
$sdata['goods_number'] = $val['good_number'];
|
|
$sdata['purchase_price'] = $val['purch_price'];
|
|
$sdata['retail_price'] = $val['retail_price'];
|
|
$sdata['online_price'] = $val['online_price'];
|
|
$sdata['vip_online_price'] = $val['online_price'];
|
|
$sdata['vip_retail_price'] = $val['vip_retail_price'];
|
|
$sdata['vip_online_state'] = $val['vip_online_state'];
|
|
$sdata['vip_retail_state'] = $val['vip_retail_state'];
|
|
$sdata['add_time'] = $stime;
|
|
$sdata['status'] = 0;
|
|
$sdata['goods_num'] = $val['num'];
|
|
$sdata['more_num'] = $val['more_num'];
|
|
$sdata['less_num'] = $val['less_num'];
|
|
$sdata['sell_num'] = 0;
|
|
$sdata['company'] = $val['company'];
|
|
$sdata['specifications'] = $val['specifications'];
|
|
$sdata['merchant_id'] = $merchantid;
|
|
$sdata['store_id'] = $storeid;
|
|
$sdata['goods_code'] = $val['goods_code'];
|
|
$sdata['online_state'] = $val['issellonline'];
|
|
$sdata['pricing_method'] = $val['can_exchange_weigh'];
|
|
$sdata['details'] = $val['details'];
|
|
$sdata['check_num'] = '';
|
|
$sdata['supplier_id'] = $val['supplier_id'];
|
|
$sdata['m_goods_id'] = $val['goodsid'];
|
|
$sdata['source_type'] = 2;
|
|
$sdata['attribute_state'] = $val['attribute'];
|
|
$sdata['production_date'] = $val['production_date'];
|
|
$sdata['shelf_life'] = $val['shelf_life'];
|
|
$sdata['shop_mem_status'] = $val['shop_mem_status'];
|
|
$sdata['shop_mem_price'] = $val['shop_mem_price'];
|
|
$sdata['store_mem_status'] = $val['store_mem_status'];
|
|
$sdata['store_mem_price'] = $val['store_mem_price'];
|
|
$sdata['goods_brand_id'] = $val['goods_brand_id'];
|
|
$new_addgoods = M('retail_goods')->add($sdata);
|
|
//入库明细
|
|
$quantity['original_stock'] = 0;
|
|
$quantity['do_num'] = $val['num'];
|
|
$quantity['type'] = 1;
|
|
$quantity['goods_id'] = $new_addgoods;
|
|
$quantity['addtime'] = $stime;
|
|
$quantity['merchantid'] = $merchantid;
|
|
$quantity['storeid'] = $storeid;
|
|
$quantity['supplier_id'] = 1;
|
|
$quantity['present_stock'] = $val['num'];
|
|
$quantity['remark'] = '商户调拨';
|
|
M('retail_quantity_logs')->add($quantity);
|
|
$mgoods_banner = array();
|
|
$mgoods_banner = M('retail_mgoods_banner')->where(array('mgoods_id'=>$val['goodsid']))->field("image,image_id")->select();
|
|
if(!empty($mgoods_banner)){
|
|
$banner_time = time();
|
|
foreach ($mgoods_banner as $key_banner=>&$valbanner){
|
|
$goods_banner['storeid'] = $storeid;
|
|
$goods_banner['goods_id'] = $new_addgoods;
|
|
$goods_banner['image'] = $valbanner['image'];
|
|
$goods_banner['image_id'] = $valbanner['image_id'];
|
|
$goods_banner['addtime'] = $banner_time;
|
|
M('retail_goods_banner')->add($goods_banner);
|
|
}
|
|
}
|
|
if($val['attribute'] == 2){
|
|
//规格处理
|
|
$m_sku_list_ids = M('retail_allocat_sku_goods')->where(array('goods_bannk_id' => $val['id']))->getField('sku_mgoods_id',true);
|
|
$m_sku_list_ids = $m_sku_list_ids?$m_sku_list_ids:array('0');
|
|
$m_sku_list_info = M('retail_sku_mgoods')->where(array('id'=>array('in',$m_sku_list_ids)))->select();
|
|
foreach ($m_sku_list_info as $keysku=>&$valsku){
|
|
$sku_goods_num = M('retail_allocat_sku_goods')->where(array('goods_bannk_id'=>$val['id'],'sku_mgoods_id'=>$valsku['id']))->getField('shipment_num');
|
|
$xzs_sku_goods['store_id'] = $storeid;
|
|
$xzs_sku_goods['goods_id'] = $new_addgoods;
|
|
$xzs_sku_goods['sku_id_list'] = $valsku['sku_id_list'];
|
|
$xzs_sku_goods['purchase_price'] = $valsku['purch_price'];
|
|
$xzs_sku_goods['online_price'] = $valsku['online_price'];
|
|
$xzs_sku_goods['retail_price'] = $valsku['retail_price'];
|
|
$xzs_sku_goods['goods_img_id'] = $valsku['goods_img_id'];
|
|
$xzs_sku_goods['goods_num'] = $sku_goods_num;
|
|
$xzs_sku_goods['sku_num'] = $valsku['sku_num'];
|
|
$xzs_sku_goods['shop_mem_price'] = $valsku['shop_mem_price'];
|
|
$xzs_sku_goods['store_mem_price'] = $valsku['store_mem_price'];
|
|
$xzs_sku_goods['add_time'] = $stime;
|
|
$xzs_sku_goods['status'] = $valsku['status'];
|
|
$xzs_sku_goods['state'] = $valsku['state'];
|
|
$xzs_sku_goods['type'] = $valsku['type'];
|
|
$xzs_sku_goods['sku_code'] = $valsku['sku_code'];
|
|
$add_sku_goods = M('retail_sku_goods')->add($xzs_sku_goods);
|
|
}
|
|
}
|
|
if(!$new_addgoods){
|
|
$res['status'] = 0;
|
|
$res['msg'] = $sdata['goods_name'].'进货失败';
|
|
$this->ajaxReturn($res);
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
$save = M('retail_allocation')->where(array('id' => $id))->save(array('examine'=>2));
|
|
if($save){
|
|
$res['status'] = 1;
|
|
$res['msg'] = '进货成功';
|
|
}else{
|
|
$res['status'] = 1;
|
|
$res['msg'] = '进货成功,进货单状态修改失败';
|
|
}
|
|
$this->ajaxReturn($res);
|
|
} else {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '进货单有误';
|
|
$this->ajaxReturn($res);
|
|
exit;
|
|
}
|
|
} else {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '商户已删除此出货单';
|
|
$this->ajaxReturn($res);
|
|
exit;
|
|
}
|
|
}
|
|
//作废商户进货单
|
|
public function voidorder()
|
|
{
|
|
$id = I('post.id');
|
|
if(!$id){
|
|
$res['status'] = 0;
|
|
$res['msg'] = '参数错误';
|
|
$this->ajaxReturn($res);exit;
|
|
}
|
|
$agoods_sales = M('retail_allocation')->where(array('id'=>$id))->find(); //出货单
|
|
if($agoods_sales){
|
|
$agoods_info = M('retail_allocation_goods_bank')->where(array('allocation_id'=>$agoods_sales['id']))->select(); //出货单的所有商品
|
|
if($agoods_info){
|
|
foreach ($agoods_info as $key=>&$val){
|
|
if($val['attribute'] == 2){
|
|
//有规格的
|
|
$sku_info = M('retail_allocat_sku_goods')->where(array('goods_bannk_id'=>$val['id'],'goods_num'=>array('neq',0),'shipment_num'=>array('neq',0)))->select();
|
|
if($sku_info){
|
|
foreach ($sku_info as $ke=>&$va){
|
|
M('retail_sku_mgoods')->where(array('id'=>$va['sku_mgoods_id']))->setInc('goods_num',$va['shipment_num']);
|
|
}
|
|
}
|
|
}
|
|
M('retail_mgoods')->where(array('id'=>$val['goodsid']))->setInc('goods_num',$val['num']);
|
|
}
|
|
$save_sales = M('retail_allocation')->where(array('id'=>$id))->save(array('examine'=>3)); //出货单
|
|
if($save_sales){
|
|
$res['status'] = 1;
|
|
$res['msg'] = '操作成功';
|
|
$this->ajaxReturn($res);
|
|
}else{
|
|
$res['status'] = 1;
|
|
$res['msg'] = '货物退还成功,进货单状态修改失败';
|
|
$this->ajaxReturn($res);
|
|
}
|
|
}else{
|
|
$res['status'] = 0;
|
|
$res['msg'] = '该出货单';
|
|
$this->ajaxReturn($res);
|
|
}
|
|
}else{
|
|
$res['status'] = 0;
|
|
$res['msg'] = '出货单错误';
|
|
$this->ajaxReturn($res);
|
|
}
|
|
}
|
|
//规格详情
|
|
public function purchase_sku_details()
|
|
{
|
|
$goods_bank_id = I('post.goods_bank_id');
|
|
if($goods_bank_id){
|
|
$goods_info = M('retail_allocation_goods_bank')->where(array('id'=>$goods_bank_id))->find();
|
|
if($goods_info){
|
|
if($goods_info['attribute'] == 2){
|
|
$sku_ids = M('retail_allocat_sku_goods')->where(array('goods_bannk_id'=>$goods_info['id']))->getField('sku_mgoods_id',true);
|
|
$res['status'] = 1;
|
|
$res['info'] = $this->getMGoodsSkuAttr($sku_ids,$goods_bank_id);
|
|
}else{
|
|
$res['status'] = 0;
|
|
$res['msg'] = '该商品不是规格商品';
|
|
}
|
|
}else{
|
|
$res['status'] = 0;
|
|
$res['msg'] = '未找到该商品';
|
|
}
|
|
}else{
|
|
$res['status'] = 0;
|
|
$res['msg'] = '参数错误';
|
|
}
|
|
$this->ajaxReturn($res);
|
|
}
|
|
//获取商品规格信息
|
|
public function getMGoodsSkuAttr($id,$goods_bank_id)
|
|
{
|
|
$skuList = M('retail_sku_mgoods')->where(array('id'=>array('in',$id)))->select();
|
|
$skuAttr = array();
|
|
if (!empty($skuList)) {
|
|
foreach ($skuList as &$value) {
|
|
$tempId = explode(',', $value['sku_id_list']);
|
|
foreach ($tempId as &$v) {
|
|
$v = intval($v);
|
|
$value['name'][] = M('retail_sku_list')->where(array('id' => $v))->getField('name');
|
|
}
|
|
$value['tempId'] = $tempId;
|
|
if($value['goods_num'] == round($value['goods_num'])){
|
|
$value['goods_num'] = round($value['goods_num']);
|
|
}
|
|
if($value['sku_num'] == round($value['sku_num'])){
|
|
$value['sku_num'] = round($value['sku_num']);
|
|
}
|
|
$value['num'] = M('retail_allocat_sku_goods')->where(array('sku_mgoods_id'=>$value['id'],'goods_bannk_id'=>$goods_bank_id))->getField('shipment_num');//出货量
|
|
}
|
|
//为了保证规格顺序
|
|
$skuAttr = array();
|
|
for ($i = 0; $i < count($skuList[0]['tempId']); $i++) {
|
|
$skuAttr[] = M('retail_sku_attr as s')
|
|
->join('ls_retail_sku_list as l on l.attr_id=s.id')
|
|
->where(array('s.state' => 0, 'l.id' => $skuList[0]['tempId'][$i]))
|
|
->group('l.attr_id')
|
|
->field('s.id,s.name')
|
|
->find();
|
|
}
|
|
}
|
|
$data['attr'] = $skuAttr;
|
|
$data['list'] = $skuList;
|
|
return $data;
|
|
}
|
|
} |