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; } }