文件
mashangyoujiu/Application/Retail/Controller/FlowController.class.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;
}
}