Files
2026-04-19 01:39:41 +08:00

647 lines
28 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Inventory extends CI_Controller {
public function __construct(){
parent::__construct();
$this->common_model->checkpurview();
}
//商品列表
public function index() {
$page = max(intval($this->input->get_post('page',TRUE)),1);
$rows = max(intval($this->input->get_post('rows',TRUE)),100);
$skey = str_enhtml($this->input->get_post('skey',TRUE));
$categoryid = intval($this->input->get_post('assistId',TRUE));
$barCode = intval($this->input->get_post('barCode',TRUE));
$where = '(a.isDelete=0)';
$where .= $skey ? ' and (sonGoods like "%'.$skey.'%" or name like "%'.$skey.'%" or number like "%'.$skey.'%" or spec like "%'.$skey.'%")' : '';
$where .= $barCode ? ' and barCode="'.$barCode.'"' : '';
if ($categoryid > 0) {
$cid = array_column($this->mysql_model->get_results('category','(isDelete=0) and find_in_set('.$categoryid.',path)'),'id');
if (count($cid)>0) {
$cid = join(',',$cid);
$where .= ' and categoryid in('.$cid.')';
}
}
$list = $this->data_model->get_goods($where.' order by a.id desc limit '.$rows*($page-1).','.$rows);
foreach ($list as $arr=>$row) {
$v[$arr]['amount'] = (float)$row['iniamount'];
$v[$arr]['barCode'] = $row['barCode'];
$v[$arr]['categoryName'] = $row['categoryName'];
$v[$arr]['currentQty'] = $row['totalqty']; //当前库存
$v[$arr]['delete'] = intval($row['disable'])==1 ? true : false; //是否禁用
$v[$arr]['discountRate'] = 0;
$v[$arr]['id'] = intval($row['id']);
$v[$arr]['isSerNum'] = intval($row['isSerNum']);
$v[$arr]['josl'] = $row['josl'];
$v[$arr]['name'] = $row['name'];
$v[$arr]['number'] = $row['number'];
$v[$arr]['pinYin'] = $row['pinYin'];
$v[$arr]['locationId'] = intval($row['locationId']);
$v[$arr]['locationName'] = $row['locationName'];
$v[$arr]['locationNo'] = '';
$v[$arr]['purPrice'] = $row['purPrice'];
$v[$arr]['quantity'] = $row['iniqty'];
$v[$arr]['salePrice'] = $row['salePrice'];
$v[$arr]['skuClassId'] = $row['skuClassId'];
$v[$arr]['spec'] = $row['spec'];
$v[$arr]['unitCost'] = $row['iniunitCost'];
$v[$arr]['unitId'] = intval($row['unitId']);
$v[$arr]['unitName'] = $row['unitName'];
$v[$arr]['remark'] = $row['remark'];
}
$json['status'] = 200;
$json['msg'] = 'success';
$json['data']['page'] = $page;
$json['data']['records'] = $this->data_model->get_goods($where,3);
$json['data']['total'] = ceil($json['data']['records']/$rows);
$json['data']['rows'] = isset($v) ? $v :'';
die(json_encode($json));
}
//商品选择 最近出售价格
public function listBySelected() {
$arr = array('so'=>150601,'sa'=>150501);
$contactid = intval($this->input->post('contactId',TRUE));
$type = str_enhtml($this->input->post('type',TRUE));
$id = intval($this->input->post('ids',TRUE));
$list = $this->data_model->get_invoice_info('a.isDelete=0 and transType='.$arr[$type].' and a.invId='.$id.' and a.buId='.$contactid.' limit 0,3',2);
foreach ($list as $arr=>$row) {
$v[$arr]['advanceDays'] = 0;
$v[$arr]['amount'] = (float)$row['amount'];
$v[$arr]['barCode'] = '';
$v[$arr]['categoryName'] = '';
$v[$arr]['currentQty'] = 0;
$v[$arr]['delete'] = false;
$v[$arr]['discountRate'] = 0;
$v[$arr]['id'] = intval($row['invId']);
$v[$arr]['isSerNum'] = 0;
$v[$arr]['isWarranty'] = 0;
$v[$arr]['josl'] = '';
$v[$arr]['locationId'] = intval($row['locationId']);
$v[$arr]['locationName'] = $row['locationName'];
$v[$arr]['locationNo'] = $row['locationNo'];
$v[$arr]['name'] = $row['invName'];
$v[$arr]['nearPrice'] = $row['price'];
$v[$arr]['number'] = $row['invNumber'];
$v[$arr]['pinYin'] = $row['pinYin'];
$v[$arr]['purPrice'] = $row['purPrice'];
$v[$arr]['quantity'] = $row['quantity'];
$v[$arr]['salePrice'] = $row['salePrice'];
$v[$arr]['skuClassId'] = 0;
$v[$arr]['skuId'] = 0;
$v[$arr]['skuName'] = 0;
$v[$arr]['skuNumber'] = 0;
$v[$arr]['spec'] = $row['invSpec'];
$v[$arr]['unitCost'] = 0;
$v[$arr]['unitId'] = intval($row['unitId']);
$v[$arr]['unitName'] = $row['mainUnit'];
}
$json['status'] = 200;
$json['msg'] = 'success';
$json['data']['result'] = isset($v) ? $v : array();
die(json_encode($json));
}
//获取信息
public function query() {
$id = intval($this->input->post('id',TRUE));
str_alert(200,'success',$this->get_goods_info($id));
}
//检测编号
public function getNextNo() {
$skey = str_enhtml($this->input->post('skey',TRUE));
$this->mysql_model->get_count('goods',array('isDelete'=>0,'number'=>$skey)) > 0 && str_alert(-1,'商品编号已经存在');
str_alert(200,'success');
}
//检测条码
public function checkBarCode() {
$barCode = str_enhtml($this->input->post('barCode',TRUE));
$this->mysql_model->get_count('goods',array('isDelete'=>0,'barCode'=>$barCode)) > 0 && str_alert(-1,'商品条码已经存在');
str_alert(200,'success');
}
//检测规格
public function checkSpec() {
$spec = str_enhtml($this->input->post('spec',TRUE));
$this->mysql_model->get_count('assistsku',array('isDelete'=>0,'skuName'=>$spec)) > 0 && str_alert(-1,'商品规格已经存在');
str_alert(200,'success');
}
//检测名称
public function checkname() {
$skey = str_enhtml($this->input->post('barCode',TRUE));
echo '{"status":200,"msg":"success","data":{"number":""}}';
}
//获取图片信息
public function getImagesById() {
$id = intval($this->input->post('id',TRUE));
$list = $this->mysql_model->get_results('goods_img',array('isDelete'=>0,'invId'=>$id));
foreach ($list as $arr=>$row) {
$v[$arr]['pid'] = $row['id'];
$v[$arr]['status'] = 1;
$v[$arr]['name'] = $row['name'];
$v[$arr]['url'] = site_url().'/basedata/inventory/getImage?action=getImage&pid='.$row['id'];
$v[$arr]['thumbnailUrl'] = site_url().'/basedata/inventory/getImage?action=getImage&pid='.$row['id'];
$v[$arr]['deleteUrl'] = '';
$v[$arr]['deleteType'] = '';
}
$json['status'] = 200;
$json['msg'] = 'success';
$json['files'] = isset($v) ? $v : array();
die(json_encode($json));
}
//上传图片信息
public function uploadImages() {
require_once './application/libraries/UploadHandler.php';
$config = array(
'script_url' => base_url().'inventory/uploadimages',
'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/data/upfile/goods/',
'upload_url' => base_url().'data/upfile/goods/',
'delete_type' =>'',
'print_response' =>false
);
$uploadHandler = new UploadHandler($config);
$list = (array)json_decode(json_encode($uploadHandler->response['files'][0]), true);
$info = elements(array('name','size','type','url','thumbnailUrl','deleteUrl','deleteType'),$list,NULL);
$newid = $this->mysql_model->insert('goods_img',$info);
$files[0]['pid'] = intval($newid);
$files[0]['status'] = 1;
$files[0]['size'] = (float)$list['size'];
$files[0]['name'] = $list['name'];
$files[0]['url'] = site_url().'/basedata/inventory/getImage?action=getImage&pid='.$newid;
$files[0]['thumbnailUrl'] = site_url().'/basedata/inventory/getImage?action=getImage&pid='.$newid;
$files[0]['deleteUrl'] = '';
$files[0]['deleteType'] = '';
$json['status'] = 200;
$json['msg'] = 'success';
$json['files'] = $files;
die(json_encode($json));
}
//保存上传图片信息
public function addImagesToInv() {
$data = $this->input->post('postData');
if (strlen($data)>0) {
$v = $s = array();
$data = (array)json_decode($data, true);
$id = isset($data['id']) ? $data['id'] : 0;
!isset($data['files']) || count($data['files']) < 1 && str_alert(-1,'请先添加图片!');
foreach($data['files'] as $arr=>$row) {
if ($row['status']==1) {
$v[$arr]['id'] = $row['pid'];
$v[$arr]['invId'] = $id;
} else {
$s[$arr]['id'] = $row['pid'];
$s[$arr]['invId'] = $id;
$s[$arr]['isDelete'] = 1;
}
}
$this->mysql_model->update('goods_img',array_values($v),'id');
$this->mysql_model->update('goods_img',array_values($s),'id');
str_alert(200,'success');
}
str_alert(-1,'保存失败');
}
//获取图片信息
public function getImage() {
$id = intval($this->input->get_post('pid',TRUE));
$data = $this->mysql_model->get_rows('goods_img',array('id'=>$id));
if (count($data)>0) {
$url = './data/upfile/goods/'.$data['name'];
$info = getimagesize($url);
$imgdata = fread(fopen($url,'rb'),filesize($url));
header('content-type:'.$info['mime'].'');
echo $imgdata;
}
}
//新增
public function add(){
$this->common_model->checkpurview(69);
$data = $this->input->post(NULL,TRUE);
if ($data) {
$data = $this->validform($data);
$this->mysql_model->get_count('goods',array('isDelete'=>0,'number'=>$data['number'])) > 0 && str_alert(-1,'商品编号重复');
$this->db->trans_begin();
$info = array(
'barCode','baseUnitId','unitName','categoryId','categoryName','propertys',
'discountRate1','discountRate2','highQty','locationId','pinYin',
'locationName','lowQty','name','number','purPrice','warehouseWarning',
'remark','salePrice','spec','vipPrice','wholesalePrice','warehousePropertys','sonGoods','dopey'
);
//add by michen 20170715
$data['dopey']=0;
if(strlen($data['sonGoods'])>0){
$sonlist = (array)json_decode($data['sonGoods'],true) ;
if(count($sonlist)>0){
$data['dopey']=1;
foreach ($sonlist as $sonkey => $sonrow){
if(empty($sonrow['gid']))
str_alert(-1,'您所选择的商品ID不存在请重新选择');
else if($this->mysql_model->get_count('goods',array('isDelete'=>0,'id'=>$sonrow['gid'],'number'=>$sonrow['number'])) <= 0)
str_alert(-1,'您所选择的子商品编号“'.$sonrow['number'].'”不存在!请重新选择!');
}
}
}
$info = elements($info,$data,NULL);
$data['id'] = $this->mysql_model->insert('goods',$info);
if (strlen($data['propertys'])>0) {
$list = (array)json_decode($data['propertys'],true);
foreach ($list as $arr=>$row) {
$v[$arr]['invId'] = $data['id'];
$v[$arr]['locationId'] = intval($row['locationId']);
$v[$arr]['qty'] = (float)$row['quantity'];
$v[$arr]['price'] = (float)$row['unitCost'];
$v[$arr]['amount'] = (float)$row['amount'];
$v[$arr]['skuId'] = intval($row['skuId']);
$v[$arr]['billDate'] = date('Y-m-d');;
$v[$arr]['billNo'] = '期初数量';
$v[$arr]['billType'] = 'INI';
$v[$arr]['transTypeName'] = '期初数量';
}
if (isset($v)) {
$this->mysql_model->insert('invoice_info',$v);
}
}
if (strlen($data['warehousePropertys'])>0) {
$list = (array)json_decode($data['warehousePropertys'],true);
foreach ($list as $arr=>$row) {
$s[$arr]['invId'] = $data['id'];
$s[$arr]['locationId'] = intval($row['locationId']);
$s[$arr]['highQty'] = (float)$row['highQty'];
$s[$arr]['lowQty'] = (float)$row['lowQty'];
}
if (isset($s)) {
$this->mysql_model->insert('warehouse',$s);
}
}
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
str_alert(-1,'SQL错误回滚');
} else {
$this->db->trans_commit();
$this->common_model->logs('新增商品:'.$data['name']);
str_alert(200,'success',$data);
}
}
str_alert(-1,'添加失败');
}
//修改
public function update(){
$this->common_model->checkpurview(70);
$data = $this->input->post(NULL,TRUE);
if ($data) {
$data = $this->validform($data);
$this->mysql_model->get_count('goods',array('id !='=>$data['id'],'isDelete'=>0,'number'=>$data['number'])) > 0 && str_alert(-1,'商品编号重复');
$this->db->trans_begin();
$info = array(
'barCode','baseUnitId','unitName','categoryId','categoryName','propertys',
'discountRate1','discountRate2','highQty','locationId','pinYin',
'locationName','lowQty','name','number','purPrice','warehouseWarning',
'remark','salePrice','spec','vipPrice','wholesalePrice','warehousePropertys','sonGoods','dopey'
);
//add by michen 20170715
$data['dopey']=0;
if(strlen($data['sonGoods'])>0){
$sonlist = (array)json_decode($data['sonGoods'],true) ;
if(count($sonlist)>0){
$data['dopey']=1;
foreach ($sonlist as $sonkey => $sonrow){
if(empty($sonrow['gid']))
str_alert(-1,'您所选择的商品ID不存在请重新选择');
else if($this->mysql_model->get_count('goods',array('isDelete'=>0,'id'=>$sonrow['gid'],'number'=>$sonrow['number'])) <= 0)
str_alert(-1,'您所选择的子商品编号“'.$sonrow['number'].'”不存在!请重新选择!');
}
}
}
$info = elements($info, $data,NULL);
$this->mysql_model->update('goods',$info,array('id'=>$data['id']));
if (strlen($data['propertys'])>0) {
$list = (array)json_decode($data['propertys'],true);
foreach ($list as $arr=>$row) {
$v[$arr]['invId'] = $data['id'];
$v[$arr]['locationId'] = isset($row['locationId']) ? $row['locationId'] : 0;
$v[$arr]['qty'] = isset($row['quantity']) ? $row['quantity']:0;
$v[$arr]['price'] = isset($row['unitCost']) ? $row['unitCost']:0;
$v[$arr]['amount'] = isset($row['amount']) ? $row['amount']:0;
$v[$arr]['skuId'] = isset($row['skuId']) ? $row['skuId']:0;
$v[$arr]['billDate'] = date('Y-m-d');
$v[$arr]['billNo'] = '期初数量';
$v[$arr]['billType'] = 'INI';
$v[$arr]['transTypeName'] = '期初数量';
}
if (isset($v)) {
$this->mysql_model->delete('invoice_info',array('invId'=>$data['id'],'billType'=>'INI'));
$this->mysql_model->insert('invoice_info',$v);
}
}
if (strlen($data['warehousePropertys'])>0) {
$list = (array)json_decode($data['warehousePropertys'],true);
foreach ($list as $arr=>$row) {
$s[$arr]['invId'] = $data['id'];
$s[$arr]['locationId'] = isset($row['locationId']) ? $row['locationId'] : 0;
$s[$arr]['highQty'] = isset($row['highQty']) ? $row['highQty']:0;
$s[$arr]['lowQty'] = isset($row['lowQty']) ? $row['lowQty']:0;
}
if (isset($s)) {
$this->mysql_model->delete('warehouse',array('invId'=>$data['id']));
$this->mysql_model->insert('warehouse',$s);
}
}
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
str_alert(-1,'SQL错误回滚');
} else {
$this->db->trans_commit();
$this->common_model->logs('修改商品:ID='.$data['id'].'名称:'.$data['name']);
str_alert(200,'success',$this->get_goods_info($data['id']));
}
}
str_alert(-1,'修改失败');
}
//删除
public function delete(){
$this->common_model->checkpurview(71);
$id = str_enhtml($this->input->post('id',TRUE));
$data = $this->mysql_model->get_results('goods','(id in('.$id.')) and (isDelete=0)');
if (count($data) > 0) {
$this->mysql_model->get_count('invoice_info','(invId in('.$id.')) and (isDelete=0) and (billType<>"INI")')>0 && str_alert(-1,'其中有商品发生业务不可删除');
$sql = $this->mysql_model->update('goods',array('isDelete'=>1),'(id in('.$id.'))');
$this->mysql_model->update('invoice_info',array('isDelete'=>1),'(invId in('.$id.'))');
if ($sql) {
$name = array_column($data,'name');
$this->common_model->logs('删除商品:ID='.$id.' 名称:'.join(',',$name));
str_alert(200,'success',array('msg'=>'','id'=>'['.$id.']'));
}
str_alert(-1,'删除失败');
}
}
//导出
public function exporter() {
$this->common_model->checkpurview(72);
$name = 'goods_'.date('YmdHis').'.xls';
sys_csv($name);
$this->common_model->logs('导出商品:'.$name);
$skey = str_enhtml($this->input->get_post('skey',TRUE));
$categoryid = intval($this->input->get_post('assistId',TRUE));
$barCode = intval($this->input->get_post('barCode',TRUE));
$where = '(a.isDelete=0)';
$where .= $skey ? ' and (name like "%'.$skey.'%" or number like "%'.$skey.'%" or spec like "%'.$skey.'%")' : '';
$where .= $barCode ? ' and barCode="'.$barCode.'"' : '';
if ($categoryid > 0) {
$cid = array_column($this->mysql_model->get_results('category','(isDelete=1) and find_in_set('.$categoryid.',path)'),'id');
if (count($cid)>0) {
$cid = join(',',$cid);
$where .= ' and categoryid in('.$cid.')';
}
}
$data['storage'] = array_column($this->mysql_model->get_results('storage'),'name','id');
$data['list'] = $this->data_model->get_goods($where.' order by a.id desc');
$this->load->view('settings/goods-export',$data);
}
//状态
public function disable(){
$this->common_model->checkpurview(72);
$disable = intval($this->input->post('disable',TRUE));
$id = str_enhtml($this->input->post('invIds',TRUE));
if (strlen($id) > 0) {
$sql = $this->mysql_model->update('goods',array('disable'=>$disable),'(id in('.$id.'))');
if ($sql) {
$this->common_model->logs('商品'.$disable==1?'禁用':'启用'.':ID:'.$id.'');
str_alert(200,'success');
}
}
str_alert(-1,'操作失败');
}
//库存预警
public function listinventoryqtywarning() {
$locationId = intval($this->input->get_post('locationId',TRUE));
$warnType = intval($this->input->get_post('warnType',TRUE));
$assistId = intval($this->input->get_post('assistId',TRUE));
$skey = str_enhtml($this->input->get_post('skey',TRUE));
$page = max(intval($this->input->get_post('page',TRUE)),1);
$rows = max(intval($this->input->get_post('rows',TRUE)),20);
$where = 'a.isDelete=0';
if ($warnType==1) {
$having = 'HAVING qty<lowQty';
} elseif($warnType==2) {
$having = 'HAVING qty>highQty';
} else {
$having = 'HAVING qty>highQty or qty<lowQty';
}
if ($assistId > 0) {
$cid = array_column($this->mysql_model->get_results('category','(isDelete=1) and find_in_set('.$assistId.',path)'),'id');
if (count($cid)>0) {
$cid = join(',',$cid);
$where .= ' and b.categoryId in('.$cid.')';
}
}
$where .= $skey ? ' and (b.name like "%'.$skey.'%" or b.number like "%'.$skey.'%" or b.spec like "%'.$skey.'%")' : '';
$where .= $locationId>0 ? ' and a.locationId='.$locationId.'' : '';
$where .= $this->common_model->get_location_purview();
$offset = $rows*($page-1);
$list = $this->data_model->get_inventory($where.' GROUP BY invId,locationId '.$having.' limit '.$offset.','.$rows);
foreach ($list as $arr=>$row) {
$v[$arr]['highQty'] = (float)$row['highQty'];
$v[$arr]['id'] = intval($row['invId']);
$v[$arr]['lowQty'] = (float)$row['lowQty'];
$v[$arr]['name'] = $row['invName'];
$v[$arr]['locationName'] = $row['locationName'];
$v[$arr]['number'] = $row['invNumber'];
$v[$arr]['categoryName'] = $row['categoryName'];
$v[$arr]['warning'] = $row['qty1'] > 0 ? $row['qty1'] : $row['qty2'];
$v[$arr]['qty'] = (float)$row['qty'];
$v[$arr]['unitName'] = $row['unitName'];
$v[$arr]['spec'] = $row['invSpec'];
}
$json['status'] = 200;
$json['msg'] = 'success';
$json['data']['page'] = $page;
$json['data']['records'] = $this->data_model->get_inventory($where.' GROUP BY invId,locationId '.$having,3);
$json['data']['total'] = ceil($json['data']['records']/$rows);
$json['data']['rows'] = isset($v) ? array_values($v) : array();
die(json_encode($json));
}
public function warningExporter() {
$this->common_model->checkpurview();
$name = 'InventoryWarning_'.date('YmdHis').'.xls';
sys_csv($name);
$this->common_model->logs('导出库存预警商品:'.$name);
$locationId = intval($this->input->get_post('locationId',TRUE));
$warnType = intval($this->input->get_post('warnType',TRUE));
$assistId = intval($this->input->get_post('assistId',TRUE));
$skey = str_enhtml($this->input->get_post('skey',TRUE));
$where = 'a.isDelete=0';
if ($warnType==1) {
$having = 'HAVING qty<lowQty';
} elseif($warnType==2) {
$having = 'HAVING qty>highQty';
} else {
$having = 'HAVING qty>highQty or qty<lowQty';
}
if ($assistId > 0) {
$cid = array_column($this->mysql_model->get_results('category','(isDelete=1) and find_in_set('.$assistId.',path)'),'id');
if (count($cid)>0) {
$cid = join(',',$cid);
$where .= ' and b.categoryId in('.$cid.')';
}
}
$where .= $skey ? ' and (b.name like "%'.$skey.'%" or b.number like "%'.$skey.'%" or b.spec like "%'.$skey.'%")' : '';
$where .= $locationId>0 ? ' and a.locationId='.$locationId.'' : '';
$where .= $this->common_model->get_location_purview();
$data['list'] = $this->data_model->get_inventory($where.' GROUP BY invId,locationId '.$having);
$this->load->view('settings/inventory-warning-exporter',$data);
}
//通过ID 获取商品信息
private function get_goods_info($id) {
$data = $this->mysql_model->get_rows('goods',array('id'=>$id,'isDelete'=>0));
if (count($data)>0) {
$data['id'] = $id;
$data['count'] = 0;
$data['name'] = $data['name'];
$data['spec'] = $data['spec'];
$data['number'] = $data['number'];
$data['salePrice'] = (float)$data['salePrice'];
$data['purPrice'] = (float)$data['purPrice'];
$data['wholesalePrice']= (float)$data['wholesalePrice'];
$data['vipPrice'] = (float)$data['vipPrice'];
$data['discountRate1'] = (float)$data['discountRate1'];
$data['discountRate2'] = (float)$data['discountRate2'];
$data['unitTypeId'] = intval($data['unitTypeId']);
$data['baseUnitId'] = intval($data['baseUnitId']);
$data['locationId'] = intval($data['locationId']);
$data['assistIds'] = '';
$data['assistName'] = '';
$data['assistUnit'] = '';
$data['remark'] = $data['remark'];
$data['categoryId'] = intval($data['categoryId']);
$data['unitId'] = intval($data['unitId']);
$data['length'] = '';
$data['weight'] = '';
$data['jianxing'] = '';
$data['barCode'] = $data['barCode'];
$data['josl'] = '';
$data['warehouseWarning'] = intval($data['warehouseWarning']);
$data['warehouseWarningSku'] = 0;
$data['skuClassId'] = 0;
$data['isSerNum'] = 0;
$data['pinYin'] = $data['pinYin'];
$data['delete'] = false;
$data['isWarranty'] = 0;
$data['safeDays'] = 0;
$data['advanceDay'] = 0;
$data['property'] = $data['property'] ? $data['property'] : NULL;
$propertys = $this->data_model->get_invoice_info('a.isDelete=0 and a.invId='.$id.' and a.billType="INI"');
foreach ($propertys as $arr=>$row) {
$v[$arr]['id'] = intval($row['id']);
$v[$arr]['locationId'] = intval($row['locationId']);
$v[$arr]['inventoryId'] = intval($row['invId']);
$v[$arr]['locationName'] = $row['locationName'];
$v[$arr]['quantity'] = (float)$row['qty'];
$v[$arr]['unitCost'] = (float)$row['price'];
$v[$arr]['amount'] = (float)$row['amount'];
$v[$arr]['skuId'] = intval($row['skuId']);
$v[$arr]['skuName'] = '';
$v[$arr]['date'] = $row['billDate'];
$v[$arr]['tempId'] = 0;
$v[$arr]['batch'] = '';
$v[$arr]['invSerNumList'] = '';
}
$data['propertys'] = isset($v) ? $v : array();
if ($data['warehousePropertys']) {
$warehouse = (array)json_decode($data['warehousePropertys'],true);
foreach ($warehouse as $arr=>$row) {
$s[$arr]['locationId'] = intval($row['locationId']);
$s[$arr]['locationName'] = $row['locationName'];
$s[$arr]['highQty'] = (float)$row['highQty'];
$s[$arr]['lowQty'] = (float)$row['lowQty'];
}
}
$data['warehousePropertys'] = isset($s) ? $s : array();
if (strlen($data['sonGoods'])>0) {
$list = (array)json_decode($data['sonGoods'],true);
foreach ($list as $arr=>$row) {
$v[$arr]['number'] = $row['number'];
$v[$arr]['name'] = $row['name'];
$v[$arr]['spec'] = $row['spec'];
$v[$arr]['unitName'] = $row['unitName'];
$v[$arr]['qty'] = intval($row['qty']);
$v[$arr]['salePrice'] = intval($row['salePrice']);
$v[$arr]['gid'] = intval($row['gid']);//add by michen 20170719
}
}
$data['sonGoods'] = isset($v) ? $v : array();
}
return $data;
}
//公共验证
private function validform($data) {
$this->load->library('lib_cn2pinyin');
strlen($data['name']) < 1 && str_alert(-1,'商品名称不能为空');
strlen($data['number']) < 1 && str_alert(-1,'商品编号不能为空');
$data['categoryId'] = intval($data['categoryId']);
$data['baseUnitId'] = intval($data['baseUnitId']);
$data['categoryId'] < 1 && str_alert(-1,'商品类别不能为空');
$data['baseUnitId'] < 1 && str_alert(-1,'计量单位不能为空');
$data['id'] = isset($data['id']) ? intval($data['id']):0;
$data['lowQty'] = isset($data['lowQty']) ? (float)$data['lowQty'] :0;
$data['highQty'] = isset($data['highQty']) ? (float)$data['highQty']:0;
$data['purPrice'] = isset($data['purPrice']) ? (float)$data['purPrice']:0;
$data['salePrice'] = isset($data['salePrice']) ? (float)$data['salePrice']:0;
$data['vipPrice'] = isset($data['vipPrice']) ? (float)$data['vipPrice']:0;
$data['warehouseWarning'] = isset($data['warehouseWarning']) ? intval($data['warehouseWarning']):0;
$data['discountRate1'] = (float)$data['discountRate1'];
$data['discountRate2'] = (float)$data['discountRate2'];
$data['wholesalePrice'] = isset($data['wholesalePrice']) ? (float)$data['wholesalePrice']:0;
$data['unitName'] = $this->mysql_model->get_row('unit',array('id'=>$data['baseUnitId']),'name');
$data['categoryName'] = $this->mysql_model->get_row('category',array('id'=>$data['categoryId']),'name');
$data['pinYin'] = $this->lib_cn2pinyin->encode($data['name']);
!$data['categoryName'] && str_alert(-1,'商品类别不存在');
if (strlen($data['propertys'])>0) {
$list = (array)json_decode($data['propertys'],true);
$storage = $this->mysql_model->get_results('storage',array('disable'=>0));
$locationId = array_column($storage,'id');
$locationName = array_column($storage,'name','id');
foreach ($list as $arr=>$row) {
!in_array($row['locationId'],$locationId) && str_alert(-1,$locationName[$row['locationId']].'仓库不存在或不可用!');
}
}
$data['warehousePropertys'] = isset($data['warehousePropertys']) ? $data['warehousePropertys'] :'[]';
$data['warehousePropertys'] = count(json_decode($data['warehousePropertys'],true))>0 ? $data['warehousePropertys'] :'';
return $data;
}
}
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */