1513 lines
74 KiB
PHP
Executable File
1513 lines
74 KiB
PHP
Executable File
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
class Mobile extends CI_Controller {
|
|
|
|
public function __construct(){
|
|
parent::__construct();
|
|
}
|
|
|
|
public function login(){
|
|
$user = get_cookie('user');
|
|
$pwd = get_cookie('pwd');//die($user.$pwd);
|
|
if(!empty($user) && !empty($pwd)){
|
|
$list = $this->getUser($user,$pwd);
|
|
if(count($list)>0){
|
|
$data = reset($list);
|
|
$this->input->set_cookie('user',$data['number'],3600000);
|
|
$this->input->set_cookie('pwd',$data['passWord'],3600000);
|
|
$this->input->set_cookie('userName',$data['name'],3600000);
|
|
$this->input->set_cookie('deptId',$data['deptId'],3600000);
|
|
$this->input->set_cookie('deptName',$data['deptName'],3600000);
|
|
$this->input->set_cookie('score',$data['score'],3600000);
|
|
redirect('mobile/good','refresh');
|
|
}
|
|
}
|
|
$this->load->view('mobile/login',NULL);
|
|
}
|
|
|
|
public function loginIn(){
|
|
$user = str_enhtml($this->input->get_post('user',TRUE));
|
|
$pwd = str_enhtml($this->input->get_post('pwd',TRUE));
|
|
$list = $this->getUser($user,$pwd);
|
|
if(count($list)>0){
|
|
$data = reset($list);
|
|
$this->input->set_cookie('user',$data['number'],3600000);
|
|
$this->input->set_cookie('pwd',$data['passWord'],3600000);
|
|
$this->input->set_cookie('userName',$data['name'],3600000);
|
|
$this->input->set_cookie('deptId',$data['deptId'],3600000);
|
|
$this->input->set_cookie('deptName',$data['deptName'],3600000);
|
|
$this->input->set_cookie('score',$data['score'],3600000);
|
|
$rtn['code'] = '200';
|
|
$rtn['msg'] = 'good';
|
|
}else{
|
|
$rtn['code'] = '-1';
|
|
$rtn['msg'] = '账号或密码错误';
|
|
}
|
|
die(json_encode($rtn));
|
|
}
|
|
|
|
public function loginOut(){
|
|
$this->input->set_cookie('user','',3600000);
|
|
$this->input->set_cookie('pwd','',3600000);
|
|
redirect('mobile/login','refresh');
|
|
}
|
|
|
|
public function selfs(){
|
|
$this->load->view('mobile/self',NULL);
|
|
}
|
|
|
|
public function bigCust(){
|
|
$this->load->view('mobile/bigCust',NULL);
|
|
}
|
|
|
|
public function good(){
|
|
$user = get_cookie('user');
|
|
$pwd = get_cookie('pwd');//die($user.$pwd);
|
|
if(empty($user)||empty($pwd)){
|
|
$this->load->view('mobile/login',NULL);return;
|
|
}
|
|
$this->load->view('mobile/good',NULL);
|
|
}
|
|
|
|
public function invoice(){
|
|
$this->load->view('mobile/invoice',NULL);
|
|
}
|
|
|
|
|
|
//商品列表
|
|
public function getGoods() {
|
|
$page = max(intval($this->input->get_post('page',TRUE)),1);
|
|
$rows = max(intval($this->input->get_post('rows',TRUE)),10);
|
|
$skey = str_enhtml($this->input->get_post('skey',TRUE));
|
|
$where = '(a.isDelete=0)';
|
|
$where .= $skey ? ' and (name like "%'.$skey.'%" or number like "%'.$skey.'%" or spec like "%'.$skey.'%")' : '';
|
|
$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 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 getImageById() {
|
|
$id = intval($this->input->get('id',TRUE));
|
|
$data = $this->mysql_model->get_rows('goods_img',array('isDelete'=>0,'invId'=>$id));
|
|
//die(var_export($data,true));
|
|
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;
|
|
}else{
|
|
$url = './statics/mobile/images/no.png';
|
|
$info = getimagesize($url);
|
|
$imgdata = fread(fopen($url,'rb'),filesize($url));
|
|
header('content-type:'.$info['mime'].'');
|
|
echo $imgdata;
|
|
}
|
|
}
|
|
|
|
//获取图片信息
|
|
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().'/mobile/getImage?action=getImage&pid='.$row['id'];
|
|
$v[$arr]['thumbnailUrl'] = site_url().'/mobile/getImage?action=getImage&pid='.$row['id'];
|
|
$v[$arr]['deleteUrl'] = '';
|
|
$v[$arr]['deleteType'] = '';
|
|
}
|
|
$list = $this->data_model->get_inventory('(a.isDelete=0) and (a.invId='.$id.')'.' GROUP BY a.invId,a.locationId ');
|
|
foreach ($list as $arr=>$row) {
|
|
$s[$arr]['assistName'] = $row['categoryName'];
|
|
$s[$arr]['invSpec'] = $row['invSpec'];
|
|
$s[$arr]['locationId'] = intval($row['locationId']);
|
|
$s[$arr]['skuName'] = '';
|
|
$s[$arr]['qty'] = (float)$row['qty'];
|
|
$s[$arr]['locationName'] = $row['locationName'];
|
|
$s[$arr]['assistId'] = 0;
|
|
$s[$arr]['invCost'] = 0;
|
|
$s[$arr]['unitName'] = $row['unitName'];
|
|
$s[$arr]['skuId'] = 0;
|
|
$s[$arr]['invId'] = intval($row['invId']);
|
|
$s[$arr]['invNumber'] = $row['invNumber'];
|
|
$s[$arr]['invName'] = $row['invName'];
|
|
}
|
|
$json['status'] = 200;
|
|
$json['msg'] = 'success';
|
|
$json['files'] = isset($v) ? $v : array();
|
|
$json['locations'] = isset($s) ? $s : array();
|
|
die(json_encode($json));
|
|
}
|
|
|
|
private function getUser($user,$pwd){
|
|
$sql = 'select
|
|
a.*,b.name as deptName
|
|
from '.$this->db->dbprefix('staff').' as a
|
|
left join '.$this->db->dbprefix('contact').' as b on b.id=a.deptId
|
|
where a.isDelete=0 and a.deptId<>0 and a.number="'.$user.'" and a.passWord="'.$pwd.'"';
|
|
$list = $this->mysql_model->query($sql,2);
|
|
return $list;
|
|
}
|
|
|
|
public function soList(){
|
|
$page = max(intval($this->input->get_post('page',TRUE)),1);
|
|
$rows = max(intval($this->input->get_post('rows',TRUE)),10);
|
|
$skey = str_enhtml($this->input->get_post('skey',TRUE));
|
|
$user = strval($_COOKIE['user']);
|
|
$where = 'a.isDelete=0 and a.billType="SALE"';
|
|
$where .= ' and a.transType=150601 and a.userName="'.$user.'"';
|
|
$offset = $rows * ($page-1);
|
|
$list = $this->data_model->get_order($where.' order by a.id desc limit '.$offset.','.$rows);
|
|
foreach ($list as $arr=>$row) {
|
|
$v[$arr]['checkName'] = $row['checkName'];
|
|
$v[$arr]['checked'] = intval($row['checked']);
|
|
$v[$arr]['salesId'] = intval($row['salesId']);
|
|
$v[$arr]['salesName'] = $row['salesName'];
|
|
$v[$arr]['billDate'] = $row['billDate'];
|
|
$v[$arr]['deliveryDate'] = $row['deliveryDate'];
|
|
$v[$arr]['billStatus'] = intval($row['billStatus']);
|
|
$v[$arr]['billStatusName'] = intval($row['billStatus'])==2 ? '全部出库' :'未出库';
|
|
|
|
$v[$arr]['totalQty'] = (float)$row['totalQty'];
|
|
$v[$arr]['id'] = intval($row['id']);
|
|
$v[$arr]['amount'] = (float)abs($row['amount']);
|
|
|
|
$v[$arr]['transType'] = intval($row['transType']);
|
|
$v[$arr]['rpAmount'] = (float)abs($row['rpAmount']);
|
|
$v[$arr]['contactName'] = $row['contactName'];
|
|
$v[$arr]['description'] = $row['description'];
|
|
$v[$arr]['billNo'] = $row['billNo'];
|
|
$v[$arr]['totalAmount'] = (float)abs($row['totalAmount']);
|
|
$v[$arr]['userName'] = $row['userName'];
|
|
$v[$arr]['transTypeName']= $row['transTypeName'];
|
|
}
|
|
$data['status'] = 200;
|
|
$data['msg'] = 'success';
|
|
$data['data']['page'] = $page;
|
|
$data['data']['records'] = $this->data_model->get_order($where,3);
|
|
$data['data']['total'] = ceil($data['data']['records']/$rows);
|
|
$data['data']['rows'] = isset($v) ? $v : array();
|
|
die(json_encode($data));
|
|
}
|
|
|
|
public function soCount(){
|
|
$user = strval($_COOKIE['user']);
|
|
$this->common_model->logs('a'.$user.'b');
|
|
$where = '(isDelete=0) and (billType="SALE")';
|
|
$where .= ' and (transType=150601) and (userName="'.$user.'")';
|
|
$count = $this->mysql_model->get_count('order',$where);
|
|
$data['status'] = 200;
|
|
$data['msg'] = strval($count);
|
|
die(json_encode($data));
|
|
}
|
|
|
|
//公共验证
|
|
private function validform($data) {
|
|
$data['id'] = isset($data['id']) ? intval($data['id']) : 0;
|
|
$data['buId'] = intval($data['buId']);
|
|
$data['salesId'] = intval($data['salesId']);
|
|
$data['billType'] = 'SALE';
|
|
$data['billDate'] = $data['date'];
|
|
$data['transType'] = intval($data['transType']);
|
|
$data['transTypeName'] = $data['transType']==150601 ? '订货' : '退货';
|
|
$data['description'] = $data['description'];
|
|
$data['totalQty'] = (float)$data['totalQty'];
|
|
$data['totalTax'] = isset($data['totalTax']) ? (float)$data['totalTax'] : 0;
|
|
$data['totalTaxAmount'] = isset($data['totalTaxAmount']) ? (float)$data['totalTaxAmount'] : 0;
|
|
$data['amount'] = $data['transType']==150601 ? abs($data['amount']) : -abs($data['amount']);
|
|
$data['totalAmount'] = $data['transType']==150601 ? abs($data['totalAmount']) : -abs($data['totalAmount']);
|
|
$data['disRate'] = (float)$data['disRate'];
|
|
$data['disAmount'] = (float)$data['disAmount'];
|
|
$data['totalDiscount'] = (float)$data['totalDiscount'];
|
|
$data['uid'] = 0;
|
|
$data['userName'] = $_COOKIE['user'];
|
|
$data['modifyTime'] = date('Y-m-d H:i:s');
|
|
|
|
//修改的时候
|
|
if ($data['id']>0) {
|
|
$invoice = $this->mysql_model->get_rows('order',array('id'=>$data['id'],'billType'=>'SALE','isDelete'=>0));
|
|
count($invoice)<1 && str_alert(-1,'单据不存在、或者已删除');
|
|
$data['checked'] = $invoice['checked'];
|
|
$data['billNo'] = $invoice['billNo'];
|
|
} else {
|
|
$data['billNo'] = str_no('XSDD');
|
|
}
|
|
|
|
$data['disRate'] < 0 && str_alert(-1,'折扣率要为数字,请输入有效数字!');
|
|
abs($data['amount']) < abs($data['disAmount']) && str_alert(-1,'折扣额不能大于合计金额!');
|
|
|
|
//数据验证
|
|
if (is_array($data['entries'])) {
|
|
count($data['entries']) < 1 && str_alert(-1,'提交的是空数据');
|
|
} else {
|
|
str_alert(-1,'提交的是空数据');
|
|
}
|
|
|
|
//供应商验证
|
|
$this->mysql_model->get_count('contact','(id='.intval($data['buId']).')')<1 && str_alert(-1,'客户不存在');
|
|
|
|
//商品录入验证
|
|
$storage = array_column($this->mysql_model->get_results('storage','(disable=0)'),'id');
|
|
foreach ($data['entries'] as $arr=>$row) {
|
|
intval($row['invId'])<1 && str_alert(-1,'请选择商品');
|
|
(float)$row['qty'] < 0 && str_alert(-1,'商品数量要为数字,请输入有效数字!');
|
|
(float)$row['price'] < 0 && str_alert(-1,'商品销售单价要为数字,请输入有效数字!');
|
|
(float)$row['discountRate'] < 0 && str_alert(-1,'折扣率要为数字,请输入有效数字!');
|
|
intval($row['locationId']) < 1 && str_alert(-1,'请选择相应的仓库!');
|
|
!in_array($row['locationId'],$storage) && str_alert(-1,$row['locationName'].'不存在或不可用!');
|
|
}
|
|
$data['postData'] = serialize($data);
|
|
return $data;
|
|
|
|
}
|
|
|
|
public function addOrder(){
|
|
$data = $this->input->post('postData',TRUE);
|
|
$data['buId'] = $_COOKIE['deptId'];
|
|
$data['contactName'] = $_COOKIE['deptName'];
|
|
$data['date'] = date('Y-m-d');
|
|
$data['deliveryDate'] = date('Y-m-d');
|
|
$data['billNo'] = str_no('XSDD');
|
|
if (count($data)>0) {
|
|
$data = $this->validform($data);
|
|
$info = elements(array(
|
|
'billNo','billType','transType','transTypeName','buId',
|
|
'billDate','description','totalQty','amount','rpAmount','totalAmount',
|
|
'hxStateCode','totalArrears','disRate','disAmount','postData',
|
|
'salesId','uid','userName','accId','deliveryDate','modifyTime'),$data);
|
|
$this->db->trans_begin();
|
|
$iid = $this->mysql_model->insert('order',$info);
|
|
$this->invso_info($iid,$data);
|
|
if ($this->db->trans_status() === FALSE) {
|
|
$this->db->trans_rollback();
|
|
str_alert(-1,'SQL错误或者提交的是空数据');
|
|
} else {
|
|
$this->db->trans_commit();
|
|
$this->common_model->logs('新增销货 单据编号:'.$data['billNo']);
|
|
str_alert(200,'success',array('id'=>intval($iid)));
|
|
}
|
|
}
|
|
str_alert(-1,'提交的是空数据');
|
|
}
|
|
|
|
private function invso_info($iid,$data) {
|
|
foreach ($data['entries'] as $arr=>$row) {
|
|
$v[$arr]['iid'] = $iid;
|
|
$v[$arr]['billNo'] = $data['billNo'];
|
|
$v[$arr]['billDate'] = $data['billDate'];
|
|
$v[$arr]['buId'] = $data['buId'];
|
|
$v[$arr]['transType'] = $data['transType'];
|
|
$v[$arr]['transTypeName'] = $data['transTypeName'];
|
|
$v[$arr]['billType'] = $data['billType'];
|
|
$v[$arr]['salesId'] = $data['salesId'];
|
|
$v[$arr]['invId'] = intval($row['invId']);
|
|
$v[$arr]['skuId'] = intval($row['skuId']);
|
|
$v[$arr]['unitId'] = intval($row['unitId']);
|
|
$v[$arr]['locationId'] = intval($row['locationId']);
|
|
$v[$arr]['qty'] = $data['transType']==150601 ? -abs($row['qty']) :abs($row['qty']);
|
|
$v[$arr]['amount'] = $data['transType']==150601 ? abs($row['amount']) :-abs($row['amount']);
|
|
$v[$arr]['price'] = abs($row['price']);
|
|
$v[$arr]['discountRate'] = $row['discountRate'];
|
|
$v[$arr]['deduction'] = $row['deduction'];
|
|
$v[$arr]['description'] = $row['description'];
|
|
$v[$arr]['uid'] = $data['uid'];
|
|
}
|
|
if (isset($v)) {
|
|
if (isset($data['id']) && $data['id']>0) {
|
|
$this->mysql_model->delete('order_info','(iid='.$iid.')');
|
|
}
|
|
$this->mysql_model->insert('order_info',$v);
|
|
}
|
|
}
|
|
|
|
public function getBigOrder(){
|
|
$where = 'a.isDelete=0 and a.billType="SALE"';
|
|
$where .= ' and a.transType=150601 and a.checked=0';
|
|
$list = $this->data_model->get_order($where.' order by a.id desc ');
|
|
foreach ($list as $arr=>$row) {
|
|
$good = $this->mysql_model->get_rows('order_info',array('iid'=>$row['id']));
|
|
$sql = 'select
|
|
a.*,b.name as goodName
|
|
from '.$this->db->dbprefix('order_info').' as a
|
|
left join '.$this->db->dbprefix('goods').' as b on b.id=a.invId
|
|
where a.isDelete=0 and a.iid="'.$row['id'].'"';
|
|
$good = $this->mysql_model->query($sql,1);
|
|
$v[$arr]['goodName'] = $good['goodName'];
|
|
$v[$arr]['contactLevel'] = $row['contactLevel'];
|
|
$v[$arr]['checkName'] = $row['checkName'];
|
|
$v[$arr]['checked'] = intval($row['checked']);
|
|
$v[$arr]['salesId'] = intval($row['salesId']);
|
|
$v[$arr]['salesName'] = $row['salesName'];
|
|
$v[$arr]['billDate'] = $row['billDate'];
|
|
$v[$arr]['deliveryDate'] = $row['deliveryDate'];
|
|
$v[$arr]['billStatus'] = intval($row['billStatus']);
|
|
$v[$arr]['billStatusName'] = intval($row['billStatus'])==2 ? '全部出库' :'未出库';
|
|
|
|
$v[$arr]['totalQty'] = (float)$row['totalQty'];
|
|
$v[$arr]['id'] = intval($row['id']);
|
|
$v[$arr]['amount'] = (float)abs($row['amount']);
|
|
|
|
$v[$arr]['transType'] = intval($row['transType']);
|
|
$v[$arr]['rpAmount'] = (float)abs($row['rpAmount']);
|
|
$v[$arr]['contactName'] = $row['contactName'];
|
|
$v[$arr]['description'] = $row['description'];
|
|
$v[$arr]['billNo'] = $row['billNo'];
|
|
$v[$arr]['totalAmount'] = (float)abs($row['totalAmount']);
|
|
$v[$arr]['userName'] = $row['userName'];
|
|
$v[$arr]['transTypeName']= $row['transTypeName'];
|
|
}
|
|
$data['status'] = 200;
|
|
$data['msg'] = 'success';
|
|
$data['data'] = isset($v) ? $v : array();
|
|
die(json_encode($data));
|
|
}
|
|
/*----------------------------------------以下为新版本---------------------------------------*/
|
|
public function main(){
|
|
$user = get_cookie('user');
|
|
$pwd = get_cookie('pwd');
|
|
if(empty($user)||empty($pwd)){
|
|
$this->load->view('mobile/vlogin',NULL);
|
|
return;
|
|
}
|
|
$u['boss'] = get_cookie('boss');
|
|
$this->load->view('mobile/main',$u);
|
|
}
|
|
public function center(){
|
|
$this->load->view('mobile/center',NULL);
|
|
}
|
|
public function vlogin(){
|
|
$user = get_cookie('user');
|
|
$pwd = get_cookie('pwd');//die($user.$pwd);
|
|
if(!empty($user) && !empty($pwd)){
|
|
$data = $this->mysql_model->get_rows('admin','(username="'.$user.'") or (mobile="'.$pwd.'") ');
|
|
if(count($data)>0){
|
|
if($data['status']==1){
|
|
if ($data['userpwd'] == md5($pwd)) {
|
|
$this->input->set_cookie('user',$user,3600000);
|
|
$this->input->set_cookie('pwd',$pwd,3600000);
|
|
$this->input->set_cookie('uid',$data['uid'],3600000);
|
|
$this->input->set_cookie('userName',$data['name'],3600000);
|
|
if ($data['roleid']==0 || in_array('301',explode(',',$data['lever']))) {
|
|
$boss = 1;
|
|
}else
|
|
$boss = 0;
|
|
$this->input->set_cookie('boss',$boss,3600000);
|
|
redirect('mobile/main','refresh');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$this->load->view('mobile/vlogin',NULL);
|
|
}
|
|
public function vloginIn(){
|
|
$user = str_enhtml($this->input->get_post('user',TRUE));
|
|
$pwd = str_enhtml($this->input->get_post('pwd',TRUE));
|
|
$data = $this->mysql_model->get_rows('admin','(username="'.$user.'") or (mobile="'.$pwd.'") ');
|
|
if(count($data)>0 && $data['status']==1 &&$data['userpwd'] == md5($pwd)){
|
|
$this->input->set_cookie('user',$user,3600000);
|
|
$this->input->set_cookie('pwd',$pwd,3600000);
|
|
$this->input->set_cookie('uid',$data['uid'],3600000);
|
|
$this->input->set_cookie('userName',$data['name'],3600000);
|
|
if ($data['roleid']==0 || in_array('301',explode(',',$data['lever']))) {
|
|
$boss = 1;
|
|
}else
|
|
$boss = 0;
|
|
$this->input->set_cookie('boss',$boss,3600000);
|
|
$rtn['code'] = '200';
|
|
$rtn['msg'] = 'main';
|
|
}else{
|
|
$rtn['code'] = '-1';
|
|
$rtn['msg'] = '账号或密码错误';
|
|
}
|
|
die(json_encode($rtn));
|
|
}
|
|
|
|
public function vloginOut(){
|
|
$this->input->set_cookie('user','',3600000);
|
|
$this->input->set_cookie('pwd','',3600000);
|
|
$this->input->set_cookie('uid','',3600000);
|
|
$this->input->set_cookie('boss','',3600000);
|
|
redirect('mobile/vlogin','refresh');
|
|
}
|
|
|
|
public function vsoold(){
|
|
$this->load->view('mobile/vsoold',NULL);
|
|
}
|
|
public function vsaold(){
|
|
$this->load->view('mobile/vsaold',NULL);
|
|
}
|
|
|
|
public function vso(){
|
|
$this->load->view('mobile/vso',NULL);
|
|
}
|
|
public function vsa(){
|
|
$this->load->view('mobile/vsa',NULL);
|
|
}
|
|
|
|
public function vsr(){
|
|
$this->load->view('mobile/vsr',NULL);
|
|
}
|
|
public function vsor(){
|
|
$this->load->view('mobile/vsor',NULL);
|
|
}
|
|
|
|
public function vpa(){
|
|
$this->load->view('mobile/vpa',NULL);
|
|
}
|
|
public function vpr(){
|
|
$this->load->view('mobile/vpr',NULL);
|
|
}
|
|
|
|
public function vsoList(){
|
|
$page = max(intval($this->input->get_post('page',TRUE)),1);
|
|
$rows = max(intval($this->input->get_post('rows',TRUE)),10);
|
|
$skey = str_enhtml($this->input->get_post('skey',TRUE));
|
|
$transType = intval($this->input->get_post('transType',TRUE));
|
|
$curStatus = str_enhtml($this->input->get_post('curStatus',TRUE));
|
|
$uid = intval($_COOKIE['uid']);
|
|
//$where = 'a.isDelete=0 and a.billType="SALE"';
|
|
$where = 'a.isDelete=0 and a.transType='.$transType.'';
|
|
//$where .= ' and a.transType=150601 ';
|
|
$data = $this->mysql_model->get_rows('admin',array('uid'=>$uid,'status'=>1));
|
|
if (count($data)>0 && ($data['roleid']==0 || in_array('301',explode(',',$data['lever'])))) {
|
|
}else{
|
|
$where .= ' and a.uid="'.$uid.'"';
|
|
}
|
|
$where .= empty($curStatus) ? '' : ($curStatus == 1 ? ' and a.checked=0 ' : ($curStatus == 3 ? ' and a.checked=1 and a.billStatus=2 ' : ' and a.checked=1 and a.billStatus=0 '));
|
|
$offset = $rows * ($page-1);
|
|
$list = $this->data_model->get_order($where.' order by a.id desc limit '.$offset.','.$rows);
|
|
foreach ($list as $arr=>$row) {
|
|
$v[$arr]['checkName'] = $row['checkName'];
|
|
$v[$arr]['checked'] = intval($row['checked']);
|
|
$v[$arr]['salesId'] = intval($row['salesId']);
|
|
$v[$arr]['salesName'] = $row['salesName'];
|
|
$v[$arr]['billDate'] = $row['billDate'];
|
|
$v[$arr]['deliveryDate'] = $row['deliveryDate'];
|
|
$v[$arr]['billStatus'] = intval($row['billStatus']);
|
|
$v[$arr]['billStatusName'] = intval($row['billStatus'])==2 ? '全部出库' :'未出库';
|
|
|
|
$v[$arr]['totalQty'] = (float)$row['totalQty'];
|
|
$v[$arr]['id'] = intval($row['id']);
|
|
$v[$arr]['amount'] = (float)abs($row['amount']);
|
|
$v[$arr]['disRate'] = (float)$row['disRate'];
|
|
$v[$arr]['disAmount'] = (float)abs($row['disAmount']);
|
|
$v[$arr]['transType'] = intval($row['transType']);
|
|
$v[$arr]['rpAmount'] = (float)abs($row['rpAmount']);
|
|
$v[$arr]['buId'] = intval($row['buId']);
|
|
$v[$arr]['contactName'] = $row['contactName'];
|
|
$v[$arr]['description'] = $row['description'];
|
|
$v[$arr]['billNo'] = $row['billNo'];
|
|
$v[$arr]['totalAmount'] = (float)abs($row['totalAmount']);
|
|
$v[$arr]['userName'] = $row['userName'];
|
|
$v[$arr]['transTypeName']= $row['transTypeName'];
|
|
$listdetail = $this->data_model->get_order_info('a.isDelete=0 and a.iid='.$row['id'].' order by a.id');
|
|
foreach ($listdetail as $ary=>$row) {
|
|
$w[$ary]['invSpec'] = $row['invSpec'];
|
|
$w[$ary]['taxRate'] = (float)$row['taxRate'];
|
|
$w[$ary]['srcOrderEntryId'] = intval($row['srcOrderEntryId']);
|
|
$w[$ary]['srcOrderNo'] = $row['srcOrderNo'];
|
|
$w[$ary]['srcOrderId'] = intval($row['srcOrderId']);
|
|
$w[$ary]['goods'] = $row['invNumber'].' '.$row['invName'].' '.$row['invSpec'];
|
|
$w[$ary]['invName'] = $row['invName'];
|
|
$w[$ary]['qty'] = (float)abs($row['qty']);
|
|
$w[$ary]['locationName'] = $row['locationName'];
|
|
$w[$ary]['amount'] = (float)abs($row['amount']);
|
|
$w[$ary]['taxAmount'] = (float)$row['taxAmount'];
|
|
$w[$ary]['price'] = (float)$row['price'];
|
|
$w[$ary]['tax'] = (float)$row['tax'];
|
|
$w[$ary]['mainUnit'] = $row['mainUnit'];
|
|
$w[$ary]['deduction'] = (float)$row['deduction'];
|
|
$w[$ary]['invId'] = intval($row['invId']);
|
|
$w[$ary]['invNumber'] = $row['invNumber'];
|
|
$w[$ary]['locationId'] = intval($row['locationId']);
|
|
$w[$ary]['locationName'] = $row['locationName'];
|
|
$w[$ary]['discountRate'] = $row['discountRate'];
|
|
$w[$ary]['description'] = $row['description'];
|
|
$w[$ary]['unitId'] = intval($row['unitId']);
|
|
$w[$ary]['mainUnit'] = $row['mainUnit'];
|
|
}
|
|
$v[$arr]['entries'] = isset($w) ? $w : array();
|
|
}
|
|
$data['status'] = 200;
|
|
$data['msg'] = 'success';
|
|
$data['data']['page'] = $page;
|
|
$data['data']['records'] = $this->data_model->get_order($where,3);
|
|
$data['data']['total'] = ceil($data['data']['records']/$rows);
|
|
$data['data']['rows'] = isset($v) ? $v : array();
|
|
die(json_encode($data));
|
|
}
|
|
|
|
public function vsaList(){
|
|
$page = max(intval($this->input->get_post('page',TRUE)),1);
|
|
$rows = max(intval($this->input->get_post('rows',TRUE)),10);
|
|
$skey = str_enhtml($this->input->get_post('skey',TRUE));
|
|
$transType = intval($this->input->get_post('transType',TRUE));
|
|
$curStatus = str_enhtml($this->input->get_post('curStatus',TRUE));
|
|
$uid = intval($_COOKIE['uid']);
|
|
$where = 'a.isDelete=0 and a.transType='.$transType.'';
|
|
$data = $this->mysql_model->get_rows('admin',array('uid'=>$uid,'status'=>1));
|
|
if (count($data)>0 && ($data['roleid']==0 || in_array('301',explode(',',$data['lever'])))) {
|
|
}else{
|
|
$where .= ' and a.uid="'.$uid.'"';
|
|
}
|
|
$where .= empty($curStatus) ? '' : ($curStatus == 1 ? ' and a.checked=0 ' : ($curStatus == 3 ? ' and a.checked=2 ' : ' and a.checked=1 '));
|
|
$offset = $rows * ($page-1);
|
|
$list = $this->data_model->get_invoice($where.' order by a.id desc limit '.$offset.','.$rows);
|
|
foreach ($list as $arr=>$row) {
|
|
$v[$arr]['hxStateCode'] = intval($row['hxStateCode']);
|
|
//add begin
|
|
$hasCheck = (float)abs($row['hasCheck']);
|
|
if($hasCheck <= 0)
|
|
$hxStateCode = 0;
|
|
else if($hasCheck >= (float)abs($row['amount']))
|
|
$hxStateCode = 2;
|
|
else
|
|
$hxStateCode = 1;
|
|
//add end
|
|
$v[$arr]['hxStateCode'] = $hxStateCode;
|
|
$v[$arr]['checkName'] = $row['checkName'];
|
|
$v[$arr]['checked'] = intval($row['checked']);
|
|
$v[$arr]['salesId'] = intval($row['salesId']);
|
|
$v[$arr]['salesName'] = $row['salesName'];
|
|
$v[$arr]['billDate'] = $row['billDate'];
|
|
$v[$arr]['billStatus'] = $row['billStatus'];
|
|
$v[$arr]['totalQty'] = (float)$row['totalQty'];
|
|
$v[$arr]['id'] = intval($row['id']);
|
|
$v[$arr]['buId'] = intval($row['buId']);
|
|
$v[$arr]['disRate'] = (float)$row['disRate'];
|
|
$v[$arr]['disAmount'] = (float)$row['disAmount'];
|
|
$v[$arr]['arrears'] = (float)abs($row['arrears']);
|
|
$v[$arr]['accId'] = (float)$row['accId'];
|
|
$v[$arr]['amount'] = (float)abs($row['amount']);
|
|
$v[$arr]['billStatusName'] = $row['billStatus']==0 ? '未出库' : '全部出库';
|
|
$v[$arr]['transType'] = intval($row['transType']);
|
|
$v[$arr]['rpAmount'] = (float)abs($row['hasCheck']);
|
|
$v[$arr]['totalQty'] = (float)abs($row['totalQty']);
|
|
$v[$arr]['contactName'] = $row['contactName'];
|
|
$v[$arr]['serialno'] = $row['serialno'];
|
|
$v[$arr]['description'] = $row['description'];
|
|
$v[$arr]['billNo'] = $row['billNo'];
|
|
$v[$arr]['totalAmount'] = (float)abs($row['totalAmount']);
|
|
$v[$arr]['userName'] = $row['userName'];
|
|
$v[$arr]['transTypeName']= $row['transTypeName'];
|
|
//add by michen 20170724 begin
|
|
$v[$arr]['udf01'] = $row['udf01'];
|
|
$v[$arr]['udf02'] = $row['udf02'];
|
|
$v[$arr]['udf03'] = $row['udf03'];
|
|
//add by michen 20170724 end
|
|
$listdetail = $this->data_model->get_invoice_info('a.isDelete=0 and a.iid='.$row['id'].' order by a.id');
|
|
foreach ($listdetail as $ary=>$row) {
|
|
$w[$ary]['invSpec'] = $row['invSpec'];
|
|
$w[$ary]['taxRate'] = (float)$row['taxRate'];
|
|
$w[$ary]['srcOrderEntryId'] = intval($row['srcOrderEntryId']);
|
|
$w[$ary]['srcOrderNo'] = $row['srcOrderNo'];
|
|
$w[$ary]['srcOrderId'] = intval($row['srcOrderId']);
|
|
$w[$ary]['goods'] = $row['invNumber'].' '.$row['invName'].' '.$row['invSpec'];
|
|
$w[$ary]['invName'] = $row['invName'];
|
|
$w[$ary]['qty'] = (float)abs($row['qty']);
|
|
$w[$ary]['locationName'] = $row['locationName'];
|
|
$w[$ary]['amount'] = (float)abs($row['amount']);
|
|
$w[$ary]['taxAmount'] = (float)$row['taxAmount'];
|
|
$w[$ary]['price'] = (float)$row['price'];
|
|
$w[$ary]['tax'] = (float)$row['tax'];
|
|
$w[$ary]['mainUnit'] = $row['mainUnit'];
|
|
$w[$ary]['deduction'] = (float)$row['deduction'];
|
|
$w[$ary]['invId'] = intval($row['invId']);
|
|
$w[$ary]['invNumber'] = $row['invNumber'];
|
|
$w[$ary]['locationId'] = intval($row['locationId']);
|
|
$w[$ary]['locationName'] = $row['locationName'];
|
|
$w[$ary]['discountRate'] = $row['discountRate'];
|
|
$w[$ary]['description'] = $row['description'];
|
|
$w[$ary]['unitId'] = intval($row['unitId']);
|
|
$w[$ary]['mainUnit'] = $row['mainUnit'];
|
|
$w[$ary]['serialno'] = $row['serialno'];
|
|
}
|
|
$v[$arr]['entries'] = isset($w) ? $w : array();
|
|
}
|
|
$data['status'] = 200;
|
|
$data['msg'] = 'success';
|
|
$data['data']['page'] = $page;
|
|
$data['data']['records'] = $this->data_model->get_invoice($where,3);
|
|
$data['data']['total'] = ceil($data['data']['records']/$rows);
|
|
$data['data']['rows'] = isset($v) ? $v : array();
|
|
die(json_encode($data));
|
|
}
|
|
|
|
public function vsoCount(){
|
|
$uid = intval($_COOKIE['uid']);
|
|
$this->common_model->logs('a'.$uid.'b');
|
|
$transType = intval($this->input->get_post('transType',TRUE));
|
|
$where = '(isDelete=0) and (transType='.$transType.')';
|
|
$data = $this->mysql_model->get_rows('admin',array('uid'=>$uid,'status'=>1));
|
|
if (count($data)>0 && ($data['roleid']==0 || in_array('301',explode(',',$data['lever'])))) {
|
|
}else{
|
|
$where .= ' and (uid="'.$uid.'")';
|
|
}
|
|
$count = $this->mysql_model->get_count('order',$where);
|
|
$data['status'] = 200;
|
|
$data['msg'] = strval($count);
|
|
die(json_encode($data));
|
|
}
|
|
|
|
public function vsaCount(){
|
|
$uid = intval($_COOKIE['uid']);
|
|
$this->common_model->logs('a'.$uid.'b');
|
|
//$where = '(isDelete=0) and (billType="SALE")';
|
|
$transType = intval($this->input->get_post('transType',TRUE));
|
|
$where = '(isDelete=0) and (transType='.$transType.')';
|
|
//$where .= ' and (transType=150601) ';
|
|
$data = $this->mysql_model->get_rows('admin',array('uid'=>$uid,'status'=>1));
|
|
if (count($data)>0 && ($data['roleid']==0 || in_array('301',explode(',',$data['lever'])))) {
|
|
}else{
|
|
$where .= ' and (uid="'.$uid.'")';
|
|
}
|
|
$count = $this->mysql_model->get_count('invoice',$where);
|
|
$data['status'] = 200;
|
|
$data['msg'] = strval($count);
|
|
die(json_encode($data));
|
|
}
|
|
|
|
public function vstock(){
|
|
$this->load->view('mobile/vstock',NULL);
|
|
}
|
|
|
|
public function getDayBillNum(){
|
|
$orderNum = $this->mysql_model->get_count('order','(isDelete=0) and (billType="SALE") and (billdate=DATE_FORMAT(now(),"%Y-%m-%d"))');
|
|
$purNum = $this->mysql_model->get_count('invoice','(isDelete=0) and (transType="150501") and (billdate=DATE_FORMAT(now(),"%Y-%m-%d"))');
|
|
$purRtnNum = $this->mysql_model->get_count('invoice','(isDelete=0) and (transType="150502") and (billdate=DATE_FORMAT(now(),"%Y-%m-%d"))');
|
|
$saleNum = $this->mysql_model->get_count('invoice','(isDelete=0) and (transType="150601") and (billdate=DATE_FORMAT(now(),"%Y-%m-%d"))');
|
|
$saleRtnNum = $this->mysql_model->get_count('invoice','(isDelete=0) and (transType="150602") and (billdate=DATE_FORMAT(now(),"%Y-%m-%d"))');
|
|
$v['orderNum'] = $orderNum;
|
|
$v['purNum'] = $purNum;
|
|
$v['purRtnNum'] = $purRtnNum;
|
|
$v['saleNum'] = $saleNum;
|
|
$v['saleRtnNum'] = $saleRtnNum;
|
|
$data['status'] = 200;
|
|
$data['msg'] = 'success';
|
|
$data['data'] = $v;
|
|
die(json_encode($data));
|
|
}
|
|
|
|
public function vreport(){
|
|
$this->load->view('mobile/vreport',NULL);
|
|
}
|
|
|
|
public function get_goods_beginning($where='',$beginDate,$type=2) {
|
|
$sql = 'select
|
|
a.id,a.name as invName, a.number as invNumber,a.unitName, a.spec as invSpec,b.qty
|
|
from '.$this->db->dbprefix('goods').' as a
|
|
inner join
|
|
(select invId,sum(qty) as qty from '.$this->db->dbprefix('invoice_info').' where isDelete=0 and billDate="'.$beginDate.'" group by invId) as b
|
|
on a.id=b.invId
|
|
where '.$where;
|
|
return $this->mysql_model->query($sql,$type);
|
|
}
|
|
|
|
public function vreportDetail() {
|
|
$sum1 = $sum2 = $sum3 = $sum4 = $sum5 = 0;
|
|
$where = '';
|
|
$page = max(intval($this->input->get_post('page',TRUE)),1);
|
|
$rows = max(intval($this->input->get_post('rows',TRUE)),5);
|
|
$storageNo = str_enhtml($this->input->get_post('storageNo',TRUE));
|
|
$goodsNo = str_enhtml($this->input->get_post('goodsNo',TRUE));
|
|
$beginDate = str_enhtml($this->input->get_post('beginDate',TRUE));
|
|
$endDate = str_enhtml($this->input->get_post('endDate',TRUE));
|
|
$where1 = 'a.isDelete=0';
|
|
$where2 = 'a.isDelete=0 and a.transType>0';
|
|
$where2 .= $beginDate ? ' and a.billDate>="'.$beginDate.'"' : '';
|
|
//$where2 .= $endDate ? ' and a.billDate<="'.$endDate.'"' : '';
|
|
$where2 .= $beginDate ? ' and a.billDate<="'.$beginDate.'"' : '';
|
|
$list1 = $this->get_goods_beginning($where1.' order by a.id',$beginDate);
|
|
$list2 = $this->data_model->get_invoice_info($where2.' order by a.billDate,a.id');
|
|
foreach ($list1 as $arr=>$row) {
|
|
$v[$arr]['date'] = '';
|
|
$v[$arr]['billNo'] = '';
|
|
$v[$arr]['billId'] = '';
|
|
$v[$arr]['billType'] = '';
|
|
$v[$arr]['buName'] = '';
|
|
$v[$arr]['transType'] = '期初数量';
|
|
$v[$arr]['transTypeId'] = '';
|
|
$v[$arr]['invNo'] = $row['invNumber'];
|
|
$v[$arr]['invName'] = $row['invName'];
|
|
$v[$arr]['spec'] = '';
|
|
$v[$arr]['unit'] = $row['unitName'];
|
|
$v[$arr]['entryId'] = '';
|
|
$v[$arr]['location'] = '';
|
|
$v[$arr]['locationNo'] = '';
|
|
$v[$arr]['inout'] = 0;
|
|
$v[$arr]['qty'] = '';
|
|
$v[$arr]['baseQty'] = '';
|
|
$v[$arr]['inqty'] = '';
|
|
$v[$arr]['outqty'] = '';
|
|
$v[$arr]['totalqty'] = round($row['qty'],$this->systems['qtyPlaces']);
|
|
foreach ($list2 as $arr1=>$row1) {
|
|
$arr = time() + $arr1;
|
|
if ($row['id']==$row1['invId']) {
|
|
$inqty = $row1['qty']>0 ? abs($row1['qty']) : '';
|
|
$outqty = $row1['qty']<0 ? abs($row1['qty']) : '';
|
|
$sum1 += $inqty;
|
|
$sum2 += $outqty;
|
|
$totalqtys = $row['qty'] + $sum1 - $sum2;
|
|
$v[$arr]['date'] = $row1['billDate'];
|
|
$v[$arr]['billNo'] = $row1['billNo'];
|
|
$v[$arr]['billId'] = $row1['iid'];
|
|
$v[$arr]['billType'] = $row1['billType'];
|
|
$v[$arr]['buName'] = $row1['contactName'];
|
|
$v[$arr]['transType'] = $row1['transTypeName'];
|
|
$v[$arr]['transTypeId'] = $row1['transType'];
|
|
$v[$arr]['invNo'] = $row1['invNumber'];
|
|
$v[$arr]['invName'] = $row1['invName'];
|
|
$v[$arr]['spec'] = $row1['invSpec'];
|
|
$v[$arr]['unit'] = $row1['mainUnit'];
|
|
$v[$arr]['entryId'] = '';
|
|
$v[$arr]['location'] = $row1['locationName'];
|
|
$v[$arr]['locationNo'] = $row1['locationNo'];
|
|
$v[$arr]['inout'] = $inqty>0 ? 1 :-1;
|
|
$v[$arr]['qty'] = 0;
|
|
$v[$arr]['baseQty'] = 0;
|
|
$v[$arr]['unitCost'] = 0;
|
|
$v[$arr]['cost'] = 0;
|
|
$v[$arr]['inqty'] = round($inqty,$this->systems['qtyPlaces']);
|
|
$v[$arr]['outqty'] = round($outqty,$this->systems['qtyPlaces']);
|
|
$v[$arr]['totalqty'] = round($totalqtys,$this->systems['qtyPlaces']);
|
|
}
|
|
}
|
|
$sum3 += $sum1;
|
|
$sum4 += $sum2;
|
|
$sum5 += $totalqtys;
|
|
$totalqtys = $sum1 = $sum2 = 0;
|
|
}
|
|
$data['status'] = 200;
|
|
$data['msg'] = 'success';
|
|
$data['data']['page'] = $page;
|
|
$data['data']['records'] = 1;
|
|
$data['data']['total'] = ceil($data['data']['records']/$rows);
|
|
$data['data']['rows'] = isset($v) ? array_values($v) : array();
|
|
$data['data']['userdata']['date'] = '';
|
|
$data['data']['userdata']['billNo'] = '';
|
|
$data['data']['userdata']['billId'] = '';
|
|
$data['data']['userdata']['billType'] = '';
|
|
$data['data']['userdata']['buName'] = '';
|
|
$data['data']['userdata']['type'] = '';
|
|
$data['data']['userdata']['transTypeId']= '';
|
|
$data['data']['userdata']['invNo'] = '';
|
|
$data['data']['userdata']['invName'] = '';
|
|
$data['data']['userdata']['spec'] = '';
|
|
$data['data']['userdata']['unit'] = '';
|
|
$data['data']['userdata']['location'] = '';
|
|
$data['data']['userdata']['locationNo'] = '';
|
|
$data['data']['userdata']['inout'] = '';
|
|
$data['data']['userdata']['qty'] = 0;
|
|
$data['data']['userdata']['baseQty'] = '';
|
|
$data['data']['userdata']['unitCost'] = '';
|
|
$data['data']['userdata']['cost'] = '';
|
|
$data['data']['userdata']['cost_5'] = '';
|
|
$data['data']['userdata']['inqty'] = round($sum3,$this->systems['qtyPlaces']);
|
|
$data['data']['userdata']['outqty'] = round($sum4,$this->systems['qtyPlaces']);
|
|
$data['data']['userdata']['totalqty'] = round($sum5,$this->systems['qtyPlaces']);
|
|
die(json_encode($data));
|
|
}
|
|
|
|
public function vcstList() {
|
|
$type = str_enhtml($this->input->get_post('type',TRUE));
|
|
empty($type) && $type=-10;
|
|
$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)),10);
|
|
$where = '(isDelete=0) and type='.$type;
|
|
$where .= $skey ? ' and (number like "%'.$skey.'%" or name like "%'.$skey.'%" or linkMans like "%'.$skey.'%")' : '';
|
|
$list = $this->mysql_model->get_results('contact',$where,'id desc',$rows*($page-1),$rows);
|
|
//if($type == 10){
|
|
foreach ($list as $arr=>$row) {
|
|
$v[$arr]['id'] = intval($row['id']);
|
|
$v[$arr]['number'] = $row['number'];
|
|
$v[$arr]['cCategory'] = intval($row['cCategory']);
|
|
$v[$arr]['customerType'] = $row['cCategoryName'];
|
|
$v[$arr]['pinYin'] = $row['pinYin'];
|
|
$v[$arr]['name'] = $row['name'];
|
|
$v[$arr]['type'] = $row['type'];
|
|
$v[$arr]['delete'] = intval($row['disable'])==1 ? true : false;
|
|
$v[$arr]['cLevel'] = intval($row['cLevel']);
|
|
$v[$arr]['amount'] = (float)$row['amount'];
|
|
$v[$arr]['periodMoney'] = (float)$row['periodMoney'];
|
|
$v[$arr]['difMoney'] = (float)$row['difMoney'];
|
|
$v[$arr]['remark'] = $row['remark'];
|
|
$v[$arr]['taxRate'] = (float)$row['taxRate'];
|
|
$v[$arr]['links'] = '';
|
|
$v[$arr]['linkMen'] = $row['linkMans'];//add by michen 20170724
|
|
if (strlen($row['linkMans'])>0) {
|
|
$list = (array)json_decode($row['linkMans'],true);
|
|
foreach ($list as $arr1=>$row1) {
|
|
if ($row1['linkFirst']==1) {
|
|
$v[$arr]['contacter'] = $row1['linkName'];
|
|
$v[$arr]['mobile'] = $row1['linkMobile'];
|
|
$v[$arr]['place'] = $row1['linkPlace'];
|
|
$v[$arr]['telephone'] = $row1['linkPhone'];
|
|
$v[$arr]['linkIm'] = $row1['linkIm'];
|
|
$v[$arr]['city'] = $row1['city'];
|
|
$v[$arr]['county'] = $row1['county'];
|
|
$v[$arr]['province'] = $row1['province'];
|
|
$v[$arr]['deliveryAddress'] = $row1['address'];
|
|
$v[$arr]['firstLink']['first'] = $row1['linkFirst'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$json['status'] = 200;
|
|
$json['msg'] = 'success';
|
|
$json['data']['page'] = $page;
|
|
$json['data']['records'] = $this->mysql_model->get_count('contact',$where);
|
|
$json['data']['total'] = ceil($json['data']['records']/$rows);
|
|
$json['data']['rows'] = isset($v) ? array_values($v) : array();
|
|
die(json_encode($json));
|
|
}
|
|
|
|
//新增
|
|
public function vaddOrder(){
|
|
$data = $this->input->post('postData',TRUE);
|
|
$data['date'] = date('Y-m-d');
|
|
$data['deliveryDate'] = date('Y-m-d');
|
|
$data['billNo'] = str_no('XSDD');
|
|
if (count($data)>0) {
|
|
$data = $this->vsovalidform($data);
|
|
$info = elements(array(
|
|
'billNo','billType','transType','transTypeName','buId',
|
|
'billDate','description','totalQty','amount','rpAmount','totalAmount',
|
|
'hxStateCode','totalArrears','disRate','disAmount','postData',
|
|
'salesId','uid','userName','accId','deliveryDate','modifyTime'),$data);
|
|
$this->db->trans_begin();
|
|
if($data[id]<=0)
|
|
$iid = $this->mysql_model->insert('order',$info);
|
|
else{
|
|
$iid = $data['id'];
|
|
$this->mysql_model->update('order',$info,'(id='.$data['id'].')');
|
|
}
|
|
$this->invso_info($iid,$data);
|
|
if ($this->db->trans_status() === FALSE) {
|
|
$this->db->trans_rollback();
|
|
str_alert(-1,'SQL错误或者提交的是空数据');
|
|
} else {
|
|
$this->db->trans_commit();
|
|
$this->common_model->logs('新增销货 单据编号:'.$data['billNo']);
|
|
str_alert(200,'success',array('id'=>intval($iid)));
|
|
}
|
|
}
|
|
str_alert(-1,'提交的是空数据');
|
|
}
|
|
|
|
//新增
|
|
public function vaddSa(){
|
|
$data = $this->input->post('postData',TRUE);
|
|
$data['date'] = date('Y-m-d');
|
|
$data['billNo'] = str_no('XS');
|
|
if (count($data)>0) {
|
|
$data = $this->vsavalidform($data);
|
|
$info = elements(array(
|
|
'billNo','billType','transType','transTypeName','buId','billDate','srcOrderNo','srcOrderId',
|
|
'description','totalQty','amount','arrears','rpAmount','totalAmount','hxStateCode',
|
|
'totalArrears','disRate','disAmount','postData','createTime',
|
|
'salesId','uid','userName','accId','modifyTime','udf01','udf02','udf03'),$data,NULL);
|
|
$this->db->trans_begin();
|
|
if($data[id]<=0)
|
|
$iid = $this->mysql_model->insert('invoice',$info);
|
|
else{
|
|
$iid = $data['id'];
|
|
$this->mysql_model->update('invoice',$info,'(id='.$data['id'].')');
|
|
}
|
|
$this->invoice_info($iid,$data);
|
|
$this->account_info($iid,$data);
|
|
if ($this->db->trans_status() === FALSE) {
|
|
$this->db->trans_rollback();
|
|
str_alert(-1,'SQL错误或者提交的是空数据');
|
|
} else {
|
|
$this->db->trans_commit();
|
|
$this->common_model->logs('新增销货 单据编号:'.$data['billNo']);
|
|
str_alert(200,'success',array('id'=>intval($iid)));
|
|
}
|
|
}
|
|
str_alert(-1,'提交的是空数据');
|
|
}
|
|
|
|
//新增
|
|
public function vaddPu(){
|
|
$data = $this->input->post('postData',TRUE);
|
|
$data['date'] = date('Y-m-d');
|
|
$data['billNo'] = str_no('CG');
|
|
if (count($data)>0) {
|
|
$data = $this->vpuvalidform($data);
|
|
$info = elements(array(
|
|
'billNo','billType','transType','transTypeName','buId','billDate','srcOrderNo','srcOrderId',
|
|
'description','totalQty','amount','arrears','rpAmount','totalAmount','hxStateCode',
|
|
'totalArrears','disRate','disAmount','postData','createTime',
|
|
'salesId','uid','userName','accId','modifyTime','udf01','udf02','udf03'),$data,NULL);
|
|
$this->db->trans_begin();
|
|
if($data[id]<=0)
|
|
$iid = $this->mysql_model->insert('invoice',$info);
|
|
else{
|
|
$iid = $data['id'];
|
|
$this->mysql_model->update('invoice',$info,'(id='.$data['id'].')');
|
|
}
|
|
$this->invoice_info($iid,$data);
|
|
$this->account_info($iid,$data);
|
|
if ($this->db->trans_status() === FALSE) {
|
|
$this->db->trans_rollback();
|
|
str_alert(-1,'SQL错误或者提交的是空数据');
|
|
} else {
|
|
$this->db->trans_commit();
|
|
$this->common_model->logs('新增购货 单据编号:'.$data['billNo']);
|
|
str_alert(200,'success',array('id'=>intval($iid)));
|
|
}
|
|
}
|
|
str_alert(-1,'提交的是空数据');
|
|
}
|
|
|
|
//组装数据
|
|
private function invoice_info($iid,$data) {
|
|
$i = 1;
|
|
foreach ($data['entries'] as $arr=>$row) {
|
|
$v[$arr]['iid'] = $iid;
|
|
$v[$arr]['uid'] = $data['uid'];
|
|
$v[$arr]['billNo'] = $data['billNo'];
|
|
$v[$arr]['billDate'] = $data['billDate'];
|
|
$v[$arr]['buId'] = $data['buId'];
|
|
$v[$arr]['transType'] = $data['transType'];
|
|
$v[$arr]['transTypeName'] = $data['transTypeName'];
|
|
$v[$arr]['billType'] = $data['billType'];
|
|
$v[$arr]['salesId'] = $data['salesId'];
|
|
$v[$arr]['invId'] = intval($row['invId']);
|
|
$v[$arr]['skuId'] = intval($row['skuId']);
|
|
$v[$arr]['unitId'] = intval($row['unitId']);
|
|
$v[$arr]['locationId'] = intval($row['locationId']);
|
|
$v[$arr]['qty'] = $data['transType']==150601 ? -abs($row['qty']) :abs($row['qty']);
|
|
$v[$arr]['amount'] = $data['transType']==150601 ? abs($row['amount']) :-abs($row['amount']);
|
|
$v[$arr]['price'] = abs($row['price']);
|
|
$v[$arr]['discountRate'] = $row['discountRate'];
|
|
$v[$arr]['deduction'] = $row['deduction'];
|
|
$v[$arr]['serialno'] = $row['serialno'];
|
|
$v[$arr]['description'] = $row['description'];
|
|
if (intval($row['srcOrderId'])>0) {
|
|
$v[$arr]['srcOrderEntryId'] = intval($row['srcOrderEntryId']);
|
|
$v[$arr]['srcOrderId'] = intval($row['srcOrderId']);
|
|
$v[$arr]['srcOrderNo'] = $row['srcOrderNo'];
|
|
} else {
|
|
$v[$arr]['srcOrderEntryId'] = 0;
|
|
$v[$arr]['srcOrderId'] = 0;
|
|
$v[$arr]['srcOrderNo'] = '';
|
|
}
|
|
$v[$arr]['srcDopey'] = '';
|
|
$v[$arr]['srcDopeyName'] = '';
|
|
$v[$arr]['udf01'] = '';
|
|
$v[$arr]['udf02'] = '';
|
|
$v[$arr]['udf06'] = '';
|
|
//add by michen 20170717 begin
|
|
$srcGood = $v[$arr];
|
|
$srcGood['invName'] = $row['invName'];
|
|
$srcGood['invNumber'] = $row['invNumber'];
|
|
$srcGood['invSpec'] = $row['invSpec'];
|
|
$srcGood['mainUnit'] = $row['mainUnit'];
|
|
$srcGood['locationId'] = $row['locationId'];
|
|
$srcGood['locationName'] = $row['locationName'];
|
|
$udf06 = json_encode($srcGood);
|
|
$goods = $this->mysql_model->get_results('goods','(id ='.$row['invId'].') and (isDelete=0)');
|
|
if (count($goods) > 0 ) {
|
|
$good = reset($goods);//$good = $goods[0];
|
|
if($good['dopey']==1){
|
|
$songoods = (array)json_decode($good['sonGoods'],true);
|
|
if(count($songoods)>0){
|
|
$j = 1;
|
|
foreach ($songoods as $sonarr=>$sonrow) {
|
|
if($j == 1){
|
|
$v[$arr]['invId'] = intval($sonrow['gid']);
|
|
$tmpqty = intval($sonrow['qty'])*intval($row['qty']);
|
|
$v[$arr]['qty'] = $data['transType']==150601 ? -abs($tmpqty) :abs($tmpqty);
|
|
$v[$arr]['price'] = intval($row['amount'])/($tmpqty);
|
|
$v[$arr]['amount'] = $data['transType']==150601 ? abs($row['amount']) :-abs($row['amount']);
|
|
$v[$arr]['srcDopey'] = $row['invNumber'];
|
|
$v[$arr]['srcDopeyName'] = $row['invName'];
|
|
$v[$arr]['udf01'] = $i;
|
|
$v[$arr]['udf02'] = $j;
|
|
$v[$arr]['udf06'] = $udf06;
|
|
}else{
|
|
$v[$arr.$j]['iid'] = $iid;
|
|
$v[$arr.$j]['uid'] = $data['uid'];
|
|
$v[$arr.$j]['billNo'] = $data['billNo'];
|
|
$v[$arr.$j]['billDate'] = $data['billDate'];
|
|
$v[$arr.$j]['buId'] = $data['buId'];
|
|
$v[$arr.$j]['transType'] = $data['transType'];
|
|
$v[$arr.$j]['transTypeName'] = $data['transTypeName'];
|
|
$v[$arr.$j]['billType'] = $data['billType'];
|
|
$v[$arr.$j]['salesId'] = $data['salesId'];
|
|
//$v[$arr.$j]['invId'] = intval($sonrow['invId']);
|
|
$v[$arr.$j]['skuId'] = intval($row['skuId']);
|
|
$v[$arr.$j]['unitId'] = intval($row['unitId']);
|
|
$v[$arr.$j]['locationId'] = intval($row['locationId']);
|
|
//$v[$arr.$j]['qty'] = $data['transType']==150601 ? -abs($sonrow['qty']) :abs($sonrow['qty']);
|
|
//$v[$arr.$j]['amount'] = $data['transType']==150601 ? abs($sonrow['amount']) :-abs($sonrow['amount']);
|
|
// $v[$arr.$j]['price'] = abs($sonrow['price']);
|
|
$v[$arr.$j]['discountRate'] = $row['discountRate'];
|
|
$v[$arr.$j]['deduction'] = $row['deduction'];
|
|
$v[$arr.$j]['serialno'] = $row['serialno'];
|
|
$v[$arr.$j]['description'] = $row['description'];
|
|
if (intval($row['srcOrderId'])>0) {
|
|
$v[$arr.$j]['srcOrderEntryId'] = intval($row['srcOrderEntryId']);
|
|
$v[$arr.$j]['srcOrderId'] = intval($row['srcOrderId']);
|
|
$v[$arr.$j]['srcOrderNo'] = $row['srcOrderNo'];
|
|
} else {
|
|
$v[$arr.$j]['srcOrderEntryId'] = 0;
|
|
$v[$arr.$j]['srcOrderId'] = 0;
|
|
$v[$arr.$j]['srcOrderNo'] = '';
|
|
}
|
|
$v[$arr.$j]['invId'] = intval($sonrow['gid']);
|
|
$tmpqty = intval($sonrow['qty'])*intval($row['qty']);
|
|
$v[$arr.$j]['qty'] = $data['transType']==150601 ? -abs($tmpqty) :abs($tmpqty);
|
|
$v[$arr.$j]['price'] = 0;
|
|
$v[$arr.$j]['amount'] = 0;
|
|
$v[$arr.$j]['srcDopey'] = $row['invNumber'];
|
|
$v[$arr.$j]['srcDopeyName'] = $row['invName'];
|
|
$v[$arr.$j]['udf01'] = $i;
|
|
$v[$arr.$j]['udf02'] = $j;
|
|
$v[$arr.$j]['udf06'] = $udf06;
|
|
}
|
|
$j++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$i++;
|
|
//add by michen 20170717 end
|
|
}
|
|
if (isset($v)) {
|
|
if ($data['id']>0) {
|
|
$this->mysql_model->delete('invoice_info',array('iid'=>$iid));
|
|
}
|
|
$this->mysql_model->insert('invoice_info',$v);
|
|
}
|
|
}
|
|
|
|
//组装数据
|
|
private function account_info($iid,$data) {
|
|
foreach ($data['accounts'] as $arr=>$row) {
|
|
$v[$arr]['iid'] = intval($iid);
|
|
$v[$arr]['billNo'] = $data['billNo'];
|
|
$v[$arr]['buId'] = $data['buId'];
|
|
$v[$arr]['billType'] = $data['billType'];
|
|
$v[$arr]['transType'] = $data['transType'];
|
|
$v[$arr]['transTypeName'] = $data['transType']==150601 ? '普通销售' : '销售退回';
|
|
$v[$arr]['billDate'] = $data['billDate'];
|
|
$v[$arr]['accId'] = $row['accId'];
|
|
$v[$arr]['payment'] = $data['transType']==150601 ? abs($row['payment']) : -abs($row['payment']);
|
|
$v[$arr]['wayId'] = $row['wayId'];
|
|
$v[$arr]['settlement'] = $row['settlement'] ;
|
|
$v[$arr]['uid'] = $data['uid'];
|
|
}
|
|
if ($data['id']>0) {
|
|
$this->mysql_model->delete('account_info',array('iid'=>$iid));
|
|
}
|
|
if (isset($v)) {
|
|
$this->mysql_model->insert('account_info',$v);
|
|
}
|
|
}
|
|
|
|
//公共验证
|
|
private function vsovalidform($data) {
|
|
$data['id'] = isset($data['id']) ? intval($data['id']) : 0;
|
|
$data['buId'] = intval($data['buId']);
|
|
$data['salesId'] = intval($data['salesId']);
|
|
$data['billType'] = 'SALE';
|
|
$data['billDate'] = $data['date'];
|
|
$data['transType'] = intval($data['transType']);
|
|
$data['transTypeName'] = $data['transType']==150601 ? '订货' : '退货';
|
|
$data['description'] = $data['description'];
|
|
$data['totalQty'] = (float)$data['totalQty'];
|
|
$data['totalTax'] = isset($data['totalTax']) ? (float)$data['totalTax'] : 0;
|
|
$data['totalTaxAmount'] = isset($data['totalTaxAmount']) ? (float)$data['totalTaxAmount'] : 0;
|
|
$data['amount'] = $data['transType']==150601 ? abs($data['amount']) : -abs($data['amount']);
|
|
$data['totalAmount'] = $data['transType']==150601 ? abs($data['totalAmount']) : -abs($data['totalAmount']);
|
|
$data['disRate'] = (float)$data['disRate'];
|
|
$data['disAmount'] = (float)$data['disAmount'];
|
|
$data['totalDiscount'] = (float)$data['totalDiscount'];
|
|
$data['uid'] = intval($_COOKIE['uid']);
|
|
$data['userName'] = $_COOKIE['userName'];
|
|
$data['modifyTime'] = date('Y-m-d H:i:s');
|
|
|
|
//修改的时候
|
|
if ($data['id']>0) {
|
|
$invoice = $this->mysql_model->get_rows('order',array('id'=>$data['id'],'billType'=>'SALE','isDelete'=>0));
|
|
count($invoice)<1 && str_alert(-1,'单据不存在、或者已删除');
|
|
$data['checked'] = $invoice['checked'];
|
|
$data['billNo'] = $invoice['billNo'];
|
|
} else {
|
|
$data['billNo'] = str_no('XSDD');
|
|
}
|
|
|
|
$data['disRate'] < 0 && str_alert(-1,'折扣率要为数字,请输入有效数字!');
|
|
abs($data['amount']) < abs($data['disAmount']) && str_alert(-1,'折扣额不能大于合计金额!');
|
|
|
|
//数据验证
|
|
if (is_array($data['entries'])) {
|
|
count($data['entries']) < 1 && str_alert(-1,'提交的是空数据');
|
|
} else {
|
|
str_alert(-1,'提交的是空数据');
|
|
}
|
|
|
|
//供应商验证
|
|
$this->mysql_model->get_count('contact','(id='.intval($data['buId']).')')<1 && str_alert(-1,'客户不存在');
|
|
|
|
//商品录入验证
|
|
$storage = array_column($this->mysql_model->get_results('storage','(disable=0)'),'id');
|
|
foreach ($data['entries'] as $arr=>$row) {
|
|
intval($row['invId'])<1 && str_alert(-1,'请选择商品');
|
|
(float)$row['qty'] < 0 && str_alert(-1,'商品数量要为数字,请输入有效数字!');
|
|
(float)$row['price'] < 0 && str_alert(-1,'商品销售单价要为数字,请输入有效数字!');
|
|
(float)$row['discountRate'] < 0 && str_alert(-1,'折扣率要为数字,请输入有效数字!');
|
|
intval($row['locationId']) < 1 && str_alert(-1,'请选择相应的仓库!');
|
|
!in_array($row['locationId'],$storage) && str_alert(-1,$row['locationName'].'不存在或不可用!');
|
|
}
|
|
$data['postData'] = serialize($data);
|
|
return $data;
|
|
|
|
}
|
|
//公共验证
|
|
private function vsavalidform($data) {
|
|
$data['id'] = isset($data['id']) ? intval($data['id']) : 0;
|
|
$data['buId'] = intval($data['buId']);
|
|
$data['accId'] = intval($data['accId']);
|
|
$data['salesId'] = intval($data['salesId']);
|
|
$data['transType'] = intval($data['transType']);
|
|
$data['amount'] = (float)$data['amount'];
|
|
$data['arrears'] = (float)$data['arrears'];
|
|
$data['disRate'] = (float)$data['disRate'];
|
|
$data['disAmount'] = (float)$data['disAmount'];
|
|
$data['rpAmount'] = (float)$data['rpAmount'];
|
|
$data['totalQty'] = (float)$data['totalQty'];
|
|
$data['totalArrears'] = isset($data['totalArrears']) ?(float)$data['totalArrears']:0;
|
|
$data['totalDiscount'] = isset($data['totalDiscount']) ? (float)$data['totalDiscount']:0;
|
|
$data['customerFree'] = isset($data['customerFree']) ? (float)$data['customerFree']:0;
|
|
$data['billType'] = 'SALE';
|
|
$data['billDate'] = $data['date'];
|
|
$data['transTypeName'] = $data['transType']==150601 ? '销货' : '销退';
|
|
$data['serialno'] = $data['serialno'];
|
|
$data['description'] = $data['description'];
|
|
$data['totalTax'] = isset($data['totalTax']) ? (float)$data['totalTax'] :0;
|
|
$data['totalTaxAmount'] = isset($data['totalTaxAmount']) ? (float)$data['totalTaxAmount'] :0;
|
|
|
|
$data['arrears'] < 0 && str_alert(-1,'本次欠款要为数字,请输入有效数字!');
|
|
$data['disRate'] < 0 && str_alert(-1,'折扣率要为数字,请输入有效数字!');
|
|
$data['rpAmount'] < 0 && str_alert(-1,'本次收款要为数字,请输入有效数字!');
|
|
$data['customerFree'] < 0 && str_alert(-1,'客户承担费用要为数字,请输入有效数字!');
|
|
$data['amount'] < $data['rpAmount'] && str_alert(-1,'本次收款不能大于折后金额!');
|
|
$data['amount'] < $data['disAmount'] && str_alert(-1,'折扣额不能大于合计金额!');
|
|
|
|
if ($data['amount']==$data['rpAmount']) {
|
|
$data['hxStateCode'] = 2;
|
|
} else {
|
|
$data['hxStateCode'] = $data['rpAmount']!=0 ? 1 : 0;
|
|
}
|
|
|
|
$data['amount'] = $data['transType']==150601 ? abs($data['amount']) : -abs($data['amount']);
|
|
$data['arrears'] = $data['transType']==150601 ? abs($data['arrears']) : -abs($data['arrears']);
|
|
$data['rpAmount'] = $data['transType']==150601 ? abs($data['rpAmount']) : -abs($data['rpAmount']);
|
|
$data['totalAmount'] = $data['transType']==150601 ? abs($data['totalAmount']) : -abs($data['totalAmount']);
|
|
$data['uid'] = intval($_COOKIE['uid']);
|
|
$data['userName'] = $_COOKIE['userName'];
|
|
$data['modifyTime'] = date('Y-m-d H:i:s');
|
|
$data['createTime'] = $data['modifyTime'];
|
|
$data['accounts'] = isset($data['accounts']) ? $data['accounts'] : array();
|
|
$data['entries'] = isset($data['entries']) ? $data['entries'] : array();
|
|
|
|
count($data['entries']) < 1 && str_alert(-1,'提交的是空数据');
|
|
|
|
|
|
//选择了结算账户 需要验证
|
|
foreach ($data['accounts'] as $arr=>$row) {
|
|
(float)$row['payment'] < 0 && str_alert(-1,'结算金额要为数字,请输入有效数字!');
|
|
}
|
|
|
|
if ($data['id']>0) {
|
|
$invoice = $this->mysql_model->get_rows('invoice',array('id'=>$data['id'],'billType'=>'SALE','isDelete'=>0));
|
|
count($invoice)<1 && str_alert(-1,'单据不存在、或者已删除');
|
|
$data['checked'] = $invoice['checked'];
|
|
$data['billNo'] = $invoice['billNo'];
|
|
} else {
|
|
//$data['billNo'] = str_no('XS');
|
|
}
|
|
|
|
//供应商验证
|
|
$this->mysql_model->get_count('contact',array('id'=>$data['buId']))<1 && str_alert(-1,'客户不存在');
|
|
|
|
//商品录入验证
|
|
$system = $this->common_model->get_option('system');
|
|
|
|
//库存验证
|
|
if ($system['requiredCheckStore']==1) {
|
|
$inventory = $this->data_model->get_invoice_info_inventory();
|
|
}
|
|
|
|
$storage = array_column($this->mysql_model->get_results('storage',array('disable'=>0)),'id');
|
|
foreach ($data['entries'] as $arr=>$row) {
|
|
intval($row['invId'])<1 && str_alert(-1,'请选择商品');
|
|
(float)$row['qty'] < 0 && str_alert(-1,'商品数量要为数字,请输入有效数字!');
|
|
(float)$row['price'] < 0 && str_alert(-1,'商品销售单价要为数字,请输入有效数字!');
|
|
(float)$row['discountRate'] < 0 && str_alert(-1,'折扣率要为数字,请输入有效数字!');
|
|
intval($row['locationId']) < 1 && str_alert(-1,'请选择相应的仓库!');
|
|
!in_array($row['locationId'],$storage) && str_alert(-1,$row['locationName'].'不存在或不可用!');
|
|
//库存判断 修改不验证
|
|
if ($system['requiredCheckStore']==1 && $data['id']<1) {
|
|
if (intval($data['transType'])==150601) { //销售才验证
|
|
if (isset($inventory[$row['invId']][$row['locationId']])) {
|
|
|
|
$inventory[$row['invId']][$row['locationId']] < $row['qty'] && str_alert(-1,$row['locationName'].$row['invName'].'商品库存不足!');
|
|
} else {
|
|
//str_alert(-1,$row['invName'].'库存不足!');
|
|
//add by michen 20170719 for 组合品库存检查
|
|
$gooddata = $this->mysql_model->get_results('goods','(id ='.$row['invId'].') and (isDelete=0)');
|
|
if(count($gooddata)>0){
|
|
$dopey = reset($gooddata);
|
|
if($dopey['dopey'] != 1){
|
|
str_alert(-1,'商品'.$row['invName'].'库存不足!');
|
|
}else{
|
|
$sonlist = (array)json_decode($dopey['sonGoods'],true) ;
|
|
if(count($sonlist)>0){
|
|
foreach ($sonlist as $sonkey=> $sonrow){
|
|
if($inventory[$sonrow['gid']][$row['locationId']] < $row['qty']*$sonrow['qty'])
|
|
str_alert(-1,'商品“'.$row['invName'].'”的子商品“'.$sonrow['name'].'”库存不足!');
|
|
}
|
|
}else{
|
|
str_alert(-1,'商品“'.$row['invName'].'”的子商品“'.$sonrow['name'].'”丢失,请检查!');
|
|
}
|
|
}
|
|
}else{
|
|
str_alert(-1,'商品“'.$row['invName'].'”不存在!');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$data['srcOrderNo'] = $data['entries'][0]['srcOrderNo'] ? $data['entries'][0]['srcOrderNo'] : 0;
|
|
$data['srcOrderId'] = $data['entries'][0]['srcOrderId'] ? $data['entries'][0]['srcOrderId'] : 0;
|
|
$data['postData'] = serialize($data);
|
|
return $data;
|
|
}
|
|
|
|
private function vpuvalidform($data) {
|
|
$data['id'] = isset($data['id']) ? intval($data['id']) : 0;
|
|
$data['billType'] = 'PUR';
|
|
$data['transTypeName'] = $data['transType']==150501 ? '购货' : '退货';
|
|
$data['billDate'] = $data['date'];
|
|
$data['buId'] = intval($data['buId']);
|
|
$data['accId'] = intval($data['accId']);
|
|
$data['transType'] = intval($data['transType']);
|
|
$data['amount'] = (float)$data['amount'];
|
|
$data['arrears'] = (float)$data['arrears'];
|
|
$data['disRate'] = (float)$data['disRate'];
|
|
$data['disAmount'] = (float)$data['disAmount'];
|
|
$data['rpAmount'] = (float)$data['rpAmount'];
|
|
$data['totalQty'] = (float)$data['totalQty'];
|
|
$data['totalArrears'] = (float)$data['totalArrears'];
|
|
$data['accounts'] = isset($data['accounts']) ? $data['accounts'] : array();
|
|
$data['entries'] = isset($data['entries']) ? $data['entries'] : array();
|
|
|
|
$data['arrears'] < 0 && str_alert(-1,'本次欠款要为数字,请输入有效数字!');
|
|
$data['disRate'] < 0 && str_alert(-1,'折扣率要为数字,请输入有效数字!');
|
|
$data['rpAmount'] < 0 && str_alert(-1,'本次收款要为数字,请输入有效数字!');
|
|
$data['amount'] < $data['rpAmount'] && str_alert(-1,'本次收款不能大于折后金额!');
|
|
$data['amount'] < $data['disAmount'] && str_alert(-1,'折扣额不能大于合计金额!');
|
|
|
|
if ($data['amount']==$data['rpAmount']) {
|
|
$data['hxStateCode'] = 2;
|
|
} else {
|
|
$data['hxStateCode'] = $data['rpAmount']!=0 ? 1 : 0;
|
|
}
|
|
|
|
$data['amount'] = $data['transType']==150501 ? abs($data['amount']) : -abs($data['amount']);
|
|
$data['arrears'] = $data['transType']==150501 ? abs($data['arrears']) : -abs($data['arrears']);
|
|
$data['rpAmount'] = $data['transType']==150501 ? abs($data['rpAmount']) : -abs($data['rpAmount']);
|
|
$data['totalAmount'] = $data['transType']==150501 ? abs($data['totalAmount']) : -abs($data['totalAmount']);
|
|
$data['uid'] = $this->jxcsys['uid'];
|
|
$data['userName'] = $this->jxcsys['name'];
|
|
$data['modifyTime'] = date('Y-m-d H:i:s');
|
|
$data['createTime'] = $data['modifyTime'];
|
|
|
|
|
|
|
|
strlen($data['billNo']) < 1 && str_alert(-1,'单据编号不为空');
|
|
count($data['entries']) < 1 && str_alert(-1,'提交的是空数据');
|
|
|
|
|
|
|
|
|
|
if ($data['id']>0) {
|
|
$invoice = $this->mysql_model->get_rows('invoice',array('id'=>$data['id'],'billType'=>'PUR','isDelete'=>0));
|
|
count($invoice)<1 && str_alert(-1,'单据不存在、或者已删除');
|
|
$data['checked'] = $invoice['checked'];
|
|
$data['billNo'] = $invoice['billNo'];
|
|
} else {
|
|
//$data['billNo'] = str_no('CG');
|
|
}
|
|
|
|
|
|
foreach ($data['accounts'] as $arr=>$row) {
|
|
(float)$row['payment'] < 0 && str_alert(-1,'结算金额要为数字,请输入有效数字!');
|
|
}
|
|
|
|
|
|
$this->mysql_model->get_count('contact',array('id'=>$data['buId'])) < 1 && str_alert(-1,'购货单位不存在');
|
|
|
|
|
|
$system = $this->common_model->get_option('system');
|
|
|
|
|
|
if ($system['requiredCheckStore']==1) {
|
|
$inventory = $this->data_model->get_invoice_info_inventory();
|
|
}
|
|
|
|
$storage = array_column($this->mysql_model->get_results('storage',array('disable'=>0)),'id');
|
|
foreach ($data['entries'] as $arr=>$row) {
|
|
intval($row['invId'])<1 && str_alert(-1,'请选择商品');
|
|
(float)$row['qty'] < 0 && str_alert(-1,'商品数量要为数字,请输入有效数字!');
|
|
(float)$row['price'] < 0 && str_alert(-1,'商品销售单价要为数字,请输入有效数字!');
|
|
(float)$row['discountRate'] < 0 && str_alert(-1,'折扣率要为数字,请输入有效数字!');
|
|
intval($row['locationId']) < 1 && str_alert(-1,'请选择相应的仓库!');
|
|
!in_array($row['locationId'],$storage) && str_alert(-1,$row['locationName'].'不存在或不可用!');
|
|
|
|
if ($system['requiredCheckStore']==1 && $data['id']<1) {
|
|
if ($data['transType']==150502) {
|
|
if (isset($inventory[$row['invId']][$row['locationId']])) {
|
|
$inventory[$row['invId']][$row['locationId']] < $row['qty'] && str_alert(-1,$row['locationName'].$row['invName'].'商品库存不足!');
|
|
} else {
|
|
str_alert(-1,$row['invName'].'库存不足!');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$data['srcOrderNo'] = $data['entries'][0]['srcOrderNo'] ? $data['entries'][0]['srcOrderNo'] : 0;
|
|
$data['srcOrderId'] = $data['entries'][0]['srcOrderId'] ? $data['entries'][0]['srcOrderId'] : 0;
|
|
$data['postData'] = serialize($data);
|
|
|
|
return $data;
|
|
}
|
|
|
|
//员工列表
|
|
public function vsalesList(){
|
|
$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)),10);
|
|
$where = '(isDelete=0) and (deptId=0)';
|
|
$where .= $skey ? ' and (number like "%'.$skey.'%" or name like "%'.$skey.'%")' : '';
|
|
$list = $this->mysql_model->get_results('staff',$where,'id desc',$rows*($page-1),$rows);
|
|
foreach ($list as $arr=>$row) {
|
|
$v[$arr]['birthday'] =$row['birthday'];
|
|
$v[$arr]['allowNeg'] = false;
|
|
$v[$arr]['commissionrate'] = $row['commissionrate'];
|
|
$v[$arr]['creatorId'] = $row['creatorId'];
|
|
$v[$arr]['deptId'] = $row['deptId'];
|
|
$v[$arr]['description'] = $row['description'];
|
|
$v[$arr]['email'] = $row['name'];
|
|
$v[$arr]['empId'] = $row['empId'];
|
|
$v[$arr]['empType'] = $row['empType'];
|
|
$v[$arr]['fullId'] = $row['fullId'];
|
|
$v[$arr]['id'] = intval($row['id']);
|
|
$v[$arr]['leftDate'] = NULL;
|
|
$v[$arr]['mobile'] = $row['mobile'];
|
|
$v[$arr]['name'] = $row['name'];
|
|
$v[$arr]['number'] = $row['number'];
|
|
$v[$arr]['parentId'] = $row['parentId'];
|
|
$v[$arr]['sex'] = $row['sex'];
|
|
$v[$arr]['userName'] = $row['userName'];
|
|
$v[$arr]['passWord'] = $row['passWord'];
|
|
$v[$arr]['score'] = $row['score'];
|
|
$v[$arr]['delete'] = intval($row['disable'])==1 ? true : false; //是否禁用
|
|
}
|
|
$json['status'] = 200;
|
|
$json['msg'] = 'success';
|
|
$json['data']['page'] = $page;
|
|
$json['data']['records'] = $this->mysql_model->get_count('staff',$where);
|
|
$json['data']['total'] = ceil($json['data']['records']/$rows);
|
|
$json['data']['rows'] = isset($v) ? array_values($v) : array();
|
|
die(json_encode($json));
|
|
}
|
|
|
|
public function vgetAsales(){
|
|
$where = '(isDelete=0) and (deptId=0)';
|
|
$where .= ' and (number like "%'.$_COOKIE['user'].'%" or name like "%'.$_COOKIE['userName'].'%")';
|
|
$row = $this->mysql_model->get_rows('staff',$where);
|
|
if(count($row)>0){
|
|
$v['birthday'] =$row['birthday'];
|
|
$v['allowNeg'] = false;
|
|
$v['commissionrate'] = $row['commissionrate'];
|
|
$v['creatorId'] = $row['creatorId'];
|
|
$v['deptId'] = $row['deptId'];
|
|
$v['description'] = $row['description'];
|
|
$v['email'] = $row['name'];
|
|
$v['empId'] = $row['empId'];
|
|
$v['empType'] = $row['empType'];
|
|
$v['fullId'] = $row['fullId'];
|
|
$v['id'] = intval($row['id']);
|
|
$v['leftDate'] = NULL;
|
|
$v['mobile'] = $row['mobile'];
|
|
$v['name'] = $row['name'];
|
|
$v['number'] = $row['number'];
|
|
$v['parentId'] = $row['parentId'];
|
|
$v['sex'] = $row['sex'];
|
|
$v['userName'] = $row['userName'];
|
|
$v['passWord'] = $row['passWord'];
|
|
$v['score'] = $row['score'];
|
|
$v['delete'] = intval($row['disable'])==1 ? true : false; //是否禁用
|
|
}
|
|
$json['status'] = 200;
|
|
$json['msg'] = 'success';
|
|
$json['data'] = isset($v) ? $v : array();
|
|
die(json_encode($json));
|
|
}
|
|
|
|
}
|
|
|
|
/* End of file welcome.php */
|
|
/* Location: ./application/controllers/welcome.php */ |