field("id,supplier_name")->where($where)->order('id desc')->select(); $map['merchant_id'] = $merchant_id; $map['status'] = 1; $fields = "id,name"; $purchase_warehouse = D('PurchaseWarehouse')->getSelect($map, $page = '', $limit = '', $fields); $this->assign('supplier', json_encode($supplier)); //供货商 $this->assign('purchase_warehouse', json_encode($purchase_warehouse)); } /* * 商品分类 */ private function goodsClass($merchant_id) { $class_name = M('retail_goods_class')->where(array('merchantid' => $merchant_id, 'status' => 0, 'type' => 1))->order('code asc')->select(); $this->assign('goodsClass1', json_encode($class_name)); } /* * 入库单信息 */ public function index() { $arr = array( 'exportOperation' => '/index.php/Retail/WarehousingRecord/export', 'addWarehousing' => '/index.php/Retail/WarehousingRecord/addWarehousing', 'retreatInfo' => '/index.php/Retail/WarehousingRecord/retreatDetails', 'retreat' => '/index.php/Retail/WarehousingRecord/retreat', 'OrderInfo' => '/index.php/Retail/WarehousingRecord/details' ); $authArr = checkFunction($arr); $this->assign('authArr', $authArr); $user = session("merchant_userinfo"); $this->Info($user['id']); $this->display(); } //入库单列表 public function WarehousingRecordList() { $content = I("post."); $content['merchant_id'] = $this->merchant_id; $content['operator_type'] = 1; $warehousingRecord = new WarehousingRecord(); $result = $warehousingRecord->getMerchantWarehousingOrderList($content); $this->ajaxReturn($result); } /* * 新增入库单信息 */ public function addWarehousing() { $arr = array( 'goodsChoice' => '/index.php/Retail/WarehousingRecord/goodsList', 'onSubmit' => '/index.php/Retail/WarehousingRecord/WarehouseOperation', ); $authArr = checkFunction($arr); $this->assign('authArr', $authArr); $user = session("merchant_userinfo"); $this->Info($user['id']); $this->goodsClass($user['id']); $order_number = I('get.order_number'); //采购订单号 $supplier_id = I('get.supplier_id'); //供货商id if (!empty($order_number) && !empty($supplier_id)) { $this->assign('order_number', $order_number); $this->assign('supplier_id', $supplier_id); $this->assign('type', 1); $this->assign('source_type', 1); } $this->display(); } //采购入库的串号信息 public function serialList() { $data = I('post.'); $data['user_type'] = 3; $SerialClass = new SerialNumberGoods(); $result = $SerialClass->returnableSerialList($data); $this->ajaxReturn($result); } //采购入库的商品列表goodsList public function goodsList() { $data = I('post.'); $data['user_type'] = 3; $data['merchant_id'] = $this->merchant_id; $PurchaseClass = new PurchaseGoodsInfo(); $result = $PurchaseClass->warehousePurchaseGoodsList($data); $this->ajaxReturn($result); } //其他入库串号验证 public function serialVerify() { $data = I('post.'); $data['user_type'] = 3; $data['merchant_id'] = $this->merchant_id; $SerialClass = new SerialNumberGoods(); $result = $SerialClass->singleGoodsVerify($data); $this->ajaxReturn($result); } //其他入库选择的商品列表 public function otherList() { $data = I('post.'); $data['operator_type'] = 1; $data['user_type'] = 3; $data['merchant_id'] = $this->merchant_id; $SaleClass = new SaleGoods(); $result = $SaleClass->otherGoodsList($data); $this->ajaxReturn($result); } /* * 退货入库详情 */ public function retreatDetails() { $arr = array( 'exportOperation' => '/index.php/Retail/WarehousingRecord/retreaDetailsExport', ); $authArr = checkFunction($arr); $this->assign('authArr', $authArr); $id = I('get.id'); $operator = I('get.operator'); $this->assign('operator', $operator); $where['id'] = $id; $info = D('WarehousingRecord')->getFind($where); //门店退货详情 $info['add_time'] = date('Y-m-d H:i:s', $info['retreat_time']); $info['remarks'] = str_replace("\n", "", $info['remarks']); $store_name = D('Store')->getStoreName(array('id' => $info['store_id'])); $warehouse_id = D('SStockOutOrder')->getFindField(array('id' => $info['stock_out_id'], 'type' => 1), "warehouse_id"); $warehouse = D('SSaleWarehouse')->getFindField(array('id' => $warehouse_id), "name"); $this->assign('id', $id); $this->assign('info', $info); $this->assign('store_name', $store_name); $this->assign('warehouse', $warehouse); $this->display(); } //退货详情串号列表 public function retreatDetailsSerial() { $data = I('post.'); $data['user_type'] = 4; $data['serial_type'] = 3; $SerialClass = new SerialNumberGoods(); $result = $SerialClass->recordSerialList($data); $this->ajaxReturn($result); } //退货详情 public function retreatDetailsList() { $id = I("post.id"); $where['warehouse_record_id'] = $id; $where['type'] = 1; $SStockOutGoodsModel = new SStockOutGoodsModel(); $list = $SStockOutGoodsModel->getSelect($where); if (!empty($list)) { foreach ($list as $key => &$val) { $val['index'] = $key + 1; $val['sku_num'] = round($val['sku_num'], 3); $val['warehouse_num'] = round($val['stock_num'], 3); $val['warehouse_price'] = round($val['stock_price'], 2); if ($val['attribute_state'] == 2) { $val['goods_code'] = $val['sku_code']; $val['goods_number'] = $val['sku_goods_number']; } } } $res['data'] = $list; $res['status'] = 1; $this->ajaxReturn($res); } /* * 门店退货的商品入库 */ public function retreat() { $arr = array( 'onSubmit' => '/index.php/Retail/WarehousingRecord/retreatOperation', ); $authArr = checkFunction($arr); $this->assign('authArr', $authArr); $id = I('get.id'); $where['id'] = $id; $info = D('WarehousingRecord')->getFind($where); $info['add_time'] = date('Y-m-d H:i:s', $info['retreat_time']); $info['remarks'] = str_replace("\n", "", $info['remarks']); //门店退货详情 $store_name = D('Store')->getStoreName(array('id' => $info['store_id'])); $warehouse = D('SaleWarehouse')->getFind(array('id' => $info['warehouse_id'])); $this->assign('id', $id); $this->assign('info', $info); $this->assign('warehouse', $warehouse); $this->assign('store_name', $store_name); $this->display(); } //门店退货详情 public function retreatGoodsList() { $id = I("post.id"); $where['warehouse_record_id'] = $id; $where['type'] = 1; $SStockOutGoodsModel = new SStockOutGoodsModel(); $SerialClass = new SerialNumberGoods(); $list = $SStockOutGoodsModel->getSelect($where); if (!empty($list)) { foreach ($list as $key => &$val) { $val['index'] = $key + 1; $val['sku_num'] = round($val['sku_num'], 3); $val['stock_num'] = round($val['stock_num'], 3); $val['warehouse_num'] = round($val['stock_num'], 3); $val['warehouse_price'] = round($val['stock_price'], 2); if ($val['attribute_state'] == 2) { $val['goods_code'] = $val['sku_code']; $val['goods_number'] = $val['sku_goods_number']; } //串号信息 if($val['serial_number_state'] == 1){ $result = $SerialClass->recordSerialList([ 'user_type'=>4, 'serial_type'=>3, 'id'=>$val['id'] ]); $val['serial_list'] = $result['data']['list']; } } } $res['status'] = 1; $res['data'] = $list; $this->ajaxReturn($res); } //入库详情 public function details() { $arr = array( 'exportOperation' => '/index.php/Retail/WarehousingRecord/detailsExport', ); $authArr = checkFunction($arr); $this->assign('authArr', $authArr); $id = I("get.id"); $type = I("get.type"); $operator = I('get.operator'); $supplier_id = I('get.supplier_id'); $this->assign('operator', $operator); $this->assign('supplier_id', $supplier_id); $where['id'] = $id; $info = D('WarehousingRecord')->getFind($where); $info['add_time'] = date('Y-m-d H:i:s', $info['add_time']); $info['remarks'] = str_replace("\n", "", $info['remarks']); $warehouse = D('SaleWarehouse')->getFindField(array('id' => $info['warehouse_id']), "name"); switch ($type) { case 0: $stock_name = "其他入库"; break; case 1: $stock_name = "采购入库"; break; case 2: $stock_name = "补货入库"; break; case 3: $stock_name = "盘盈入库"; break; case 4: $stock_name = "退货入库"; $store_name = D('Store')->getStoreName(array('id' => $info['store_id'])); break; } $store_name = $store_name ? $store_name : ""; $this->assign('id', $id); $this->assign('type', $type); $this->assign('info', $info); $this->assign('warehouse', $warehouse); $this->assign('stock_name', $stock_name); $this->assign('store_name', $store_name); $this->display(); } //入库详情串号列表 public function detailSerialList() { $data = I('post.'); $data['user_type'] = 3; $data['serial_type'] = 2; $SerialClass = new SerialNumberGoods(); $result = $SerialClass->recordSerialList($data); $this->ajaxReturn($result); } public function DetailsList() { $id = I("post.id"); $goodsList = D('WarehousingGoods')->getSelect(array('warehouse_record_id' => $id), $page = '', $limit = '', $fields = '', 'id asc'); if ($goodsList) { foreach ($goodsList as $key => &$val) { $val['index'] = $key + 1; if (!empty($val['build_date'])) { $val['build_date'] = date('Y-m-d', $val['build_date']); } $val['sku_num'] = round($val['sku_num'], 3); $val['warehouse_num'] = round($val['warehouse_num'], 3); $val['warehouse_price'] = round($val['warehouse_price'], 2); $val['subtotal'] = round($val['subtotal'], 2); if ($val['attribute_state'] == 2) { $val['goods_number'] = $val['sku_goods_number']; $val['goods_code'] = $val['sku_code']; } } } $res['status'] = 1; $res['data'] = $goodsList; $this->ajaxReturn($res); } /* * *************************************************操作****************************************************** */ //入库提交 public function WarehouseOperation() { $data = I('post.'); $data['merchant_id'] = $this->merchant_id; $data['operator_id'] = session("jurisdiction_user")['id']; if ($data['type'] == 1) { $data['stock'] = 1; } $res = A('Api/Inventory')->MerWarehousing($data); if ($res['status'] == 1) { //操作日志记录 $source = 0;//请求来源: 0 后台 1小助手 $type = 3;//平台:1合伙人端 2代理商端 3商户端 4门店端 $request_data = json_encode($_POST);//请求参数 json数据 if ($data['stock'] == 1) { $desc = '入库单-新增采购入库';//操作行为描述 } else { $desc = '入库单-新增其他入库';//操作行为描述 } action_log($source, $type, $request_data, $desc); } $this->ajaxReturn($res); } //门店退货入库 public function retreatOperation() { $data = I('post.'); $data['merchant_id'] = $this->merchant_id; $data['operator_id'] = session("jurisdiction_user")['id']; if (C('IS_SET_REDIS')) { $ApiRedis = new \Addons\Api\RedisController(); $key_name = "Retail_merchant_id_" . $data['merchant_id'] . "_warehousing_id_" . $data['id']; if ($ApiRedis::$redis->exists($key_name)) { $res['status'] = 0; $res['msg'] = "正在入库,请勿重复操作"; $this->ajaxReturn($res); } $ApiRedis::$redis->setex($key_name, 60, $data['id']); } $WarehouseClass = new WarehouseOperation(); $result = $WarehouseClass->retreatWarehousing($data); if (C('IS_SET_REDIS')) { $ApiRedis::$redis->delete($key_name); } $this->ajaxReturn($result); } //导出 public function export() { $content = I("get."); $content['merchant_id'] = $this->merchant_id; $content['operator_type'] = 1; $warehousingRecord = new WarehousingRecord(); $result = $warehousingRecord->getMerchantWarehousingOrderList($content); $fileds_name = "入库单导出"; $arr = array( array('index', '序号'), array('operator', '操作人'), array('add_time', '入库时间'), array('order_number', '入库单号'), array('supplier_name', '供应商'), array('warehouse_name', '入库仓库'), array('type_name', '入库类型'), array('goods_species', '应收合计(种)'), array('money_total', '应收金额'), array('real_goods_species', '实收合计(种)'), array('real_money_total', '实收金额'), array('remarks', '备注'), array('status_name', '状态'), ); $str = $fileds_name . ',导出日期:' . date('Y-m-d H:i:s', time()); getExcel($fileds_name, $arr, $result['data']['list'], $str); } //入库详情导出 public function detailsExport() { $id = I("get.id"); $type = I("get.type"); $where['id'] = $id; $info = D('WarehousingRecord')->getFind($where); $info['add_time'] = date('Y-m-d H:i:s', $info['add_time']); $warehouse = D('SaleWarehouse')->getFindField(array('id' => $info['warehouse_id']), "name"); switch ($type) { case 0: $stock_name = "其他入库"; break; case 1: $stock_name = "采购入库"; break; case 2: $stock_name = "补货入库"; break; case 3: $stock_name = "盘盈入库"; break; case 4: $stock_name = "退货入库"; $store_name = D('Store')->getStoreName(array('id' => $info['store_id'])); break; } $goodsList = D('WarehousingGoods')->getSelect(array('warehouse_record_id' => $id), $page = '', $limit = '', $fileds = '', 'id asc'); if ($goodsList) { foreach ($goodsList as $key => &$val) { $val['index'] = $key + 1; $val['sku_num'] = strval(round($val['sku_num'], 3)); $val['warehouse_num'] = strval(round($val['warehouse_num'], 3)); $val['warehouse_price'] = strval(round($val['warehouse_price'], 2)); if (!empty($val['build_date'])) { $val['build_date'] = date('Y-m-d', $val['build_date']); } if ($val['attribute_state'] == 2) { $val['goods_number'] = $val['sku_goods_number']; $val['goods_code'] = $val['sku_code']; } } } $store_name = $store_name ? $store_name : ""; $fileds_name = "入库详情导出"; $arr = array( array('index', '序号'), array('goods_name', '商品名称'), array('sku_name', '规格'), array('goods_number', '货号'), array('goods_code', '条码'), array('company', '单位'), array('build_date', '生产日期'), array('quality_guarantee_period', '保质期'), array('sku_num', '规格基数'), array('warehouse_price', '入库价'), array('warehouse_num', '数量'), array('subtotal', '合计'), array('remarks', '备注'), ); $str = array(); $str[0] = $fileds_name . ',导出日期:' . date('Y-m-d H:i:s', time()); if ($type == 4) { $str[1] = '退货门店:' . $store_name . ' 入库单号:' . $info['order_number'] . " 入库仓库:" . $warehouse . " 入库时间:" . $info['add_time']; } else { $str[1] = '入库单号:' . $info['order_number'] . " 入库仓库:" . $warehouse . " 入库时间:" . $info['add_time']; } $str[2] = '类型:' . $stock_name . " 合计:" . $info['real_goods_species'] . "种" . " 金额:" . strval($info['real_money_total']); $str[3] = "备注:" . $info['remarks']; detailGetExcel($fileds_name, $arr, $goodsList, $str); } //门店退货入库详情导出 public function retreaDetailsExport() { $id = I('get.id'); $where['id'] = $id; $info = D('WarehousingRecord')->getFind($where); //门店退货详情 $info['add_time'] = date('Y-m-d H:i:s', $info['retreat_time']); $store_name = D('Store')->getStoreName(array('id' => $info['store_id'])); $warehouse_id = D('SStockOutOrder')->getFindField(array('id' => $info['stock_out_id'], 'type' => 1), "warehouse_id"); $warehouse = D('SSaleWarehouse')->getFindField(array('id' => $warehouse_id), "name"); //门店退货详情 $map['warehouse_record_id'] = $id; $map['type'] = 1; $detailsList = D('SStockOutGoods')->getSelect($map, $page = '', $limit = ''); if ($detailsList) { foreach ($detailsList as $key => &$val) { $val['index'] = $key + 1; $val['sku_num'] = strval(round($val['sku_num'], 3)); $val['warehouse_num'] = strval(round($val['stock_num'], 3)); $val['warehouse_price'] = strval(round($val['stock_price'], 2)); if ($val['attribute_state'] == 2) { $val['goods_code'] = $val['sku_code']; $val['goods_number'] = $val['sku_goods_number']; } } } $fileds_name = "入库详情导出"; $arr = array( array('index', '序号'), array('goods_name', '商品名称'), array('sku_name', '规格'), array('goods_number', '货号'), array('goods_code', '条码'), array('company', '单位'), array('sku_num', '规格基数'), array('warehouse_num', '数量'), array('warehouse_price', '出库价'), array('subtotal', '合计'), array('remarks', '备注'), ); $str = array(); $str[0] = $fileds_name . ',导出日期:' . date('Y-m-d H:i:s', time()); $str[1] = '入库单号:' . $info['order_number'] . " 出货仓库:" . $warehouse . " 类型:门店退货入库"; $str[2] = '门店:' . $store_name . " 创建时间:" . $info['add_time'] . " 合计:" . $info['goods_species'] . " 金额:" . strval($info['money_total']); $str[3] = "备注:" . $info['remarks']; detailGetExcel($fileds_name, $arr, $detailsList, $str); } }