goodsobj = m('goods'); } private function gettypename($tid) { return $this->goodsobj->gettypename($tid); } public function aftershow($table, $rows) { $typearr = $depotarr = array(); $mid = (int)$this->post('mid','0');//根据主表出入库操作 if($rows){ $aid = '0'; foreach($rows as $k=>$rs){ $rows[$k]['typeid'] = $this->gettypename($rs['typeid']); $aid.=','.$rs['id'].''; if($rs['stock']=='0')$rows[$k]['stock'] = ''; if($rs['stock']<0)$rows[$k]['ishui']=1; } $rows = $this->pandian($aid, $rows); }else{ if($mid>0){ m('goodm')->update('state=1', $mid); } } if($this->loadci==1){ $type = (int)$this->post('type'); $typearr= $this->option->getdata('kutype'.$type.''); $where = m('admin')->getcompanywhere(1); $depotarr = m('godepot')->getall('1=1'.$where.'','id,depotname as name,depotnum','`sort`'); foreach($depotarr as $k=>$rs){ $depotarr[$k]['namea']= $rs['name']; $depotarr[$k]['name'] = ''.$rs['depotnum'].'.'.$rs['name'].''; } } return array( 'rows' => $rows, 'typearr' => $typearr, 'depotarr' => $depotarr, ); } public function beforeshow($table) { $key = $this->post('key'); $typeid = (int)$this->post('typeid'); $mid = (int)$this->post('mid','0');//根据主表出入库操作 $where = ''; if($typeid != 0){ $alltpeid = $this->option->getalldownid($typeid); $where .= ' and `typeid` in('.$alltpeid.')'; } if($key!=''){ $where .= " and (`name` like '%$key%' or `num` like '%$key%' or `guige` like '%$key%' or `xinghao` like '%$key%') "; } $where.=m('admin')->getcompanywhere(1); if($mid>0){ /* $carro = m('goodn')->getall('mid='.$mid.' and `couns`<`count`'); $typeids = '0'; foreach($carro as $k=>$rs)$typeids.=','.$rs['aid'].''; $where .= ' and `id` in('.$typeids.')'; */ return array( 'where' => 'and b.`mid`='.$mid.' and b.`couns` 'a.*,(b.`count`-b.`couns`)maxcount', 'table' => '`[Q]goods` a left join `[Q]goodn` b on a.`id`=b.`aid`' ); } return $where; } //盘点对应仓库库存计算 private function pandian($aid,$rows) { if($this->post('atype')!='pan')return $rows; $ckarr = m('goods')->getstock($aid, $this->post('dt')); foreach($rows as $k=>&$rs){ $rs['stock'] = ''; if(isset($ckarr[$rs['id']])){ $kdsra= $ckarr[$rs['id']]; $rs['stock'] = $kdsra[0]=='0'?'':$kdsra[0]; //总库存 foreach($kdsra as $k1=>$v1){ if($k1>0)$rs['stockdepotid'.$k1.''] = $v1=='0'?'':$v1; //对应仓库库存 } } } return $rows; } public function xiangbeforeshow($table) { $key = $this->post('key'); $dt = $this->post('dt'); $types = $this->post('types'); $typeid = (int)$this->post('typeid', 0); $depotid = (int)$this->post('depotid', 0); $where = ''; if($typeid>0){ $alltpeid = $this->option->getalldownid($typeid); $where.=" and b.typeid in($alltpeid)"; } if($key!=''){ $where .= " and (b.`name` like '%$key%' or a.optname like '%$key%' or c.depotname like '%$key%' )"; } if($dt!=''){ $where .= " and a.`applydt` like '$dt%' "; } if($depotid>0){ $where .= " and a.`depotid`='$depotid'"; } if($types){ $typea = explode('_', $types); $where.= ' and a.type='.substr($typea[0],1).' and a.kind='.$typea[1].''; } $where .= m('admin')->getcompanywhere(1,'a.'); $table = '`[Q]goodss` a left join `[Q]goods` b on a.aid=b.id left join `[Q]godepot` c on a.depotid=c.id'; $fields = 'a.id,b.name,a.count,c.depotname,a.type,a.kind,a.status,a.optname,b.typeid,b.xinghao,b.guige,a.applydt,a.explain,a.mid'; return array( 'where' => $where, 'table' => $table, 'fields' => $fields, ); } public function xiangaftershow($table, $rows) { $tyeparr = array(); if($rows){ $typearr0= $this->option->getdata('kutype0'); $typearr1= $this->option->getdata('kutype1'); $tyeparr['a0_3'] = '调拨入库'; $tyeparr['a1_3'] = '调拨出库'; foreach($typearr0 as $k=>$rs)$tyeparr['a0_'.$rs['value'].''] = $rs['name']; foreach($typearr1 as $k=>$rs)$tyeparr['a1_'.$rs['value'].''] = $rs['name']; $statusar= array('待审核','已审核','审核未通过'); $typearr = array(); foreach($rows as $k=>$rs){ $tid = $rs['typeid']; if(isset($typearr[$tid])){ $rows[$k]['typeid'] = $typearr[$tid]; }else{ $rows[$k]['typeid'] = $this->db->getpval('[Q]option','pid','name', $tid,'/','id',2); $typearr[$tid] = $rows[$k]['typeid']; } $skey = 'a'.$rs['type'].'_'.$rs['kind'].''; $kind = ''; if(isset($tyeparr[$skey]))$kind = $tyeparr[$skey]; $rows[$k]['kind'] = $kind; $rows[$k]['status'] = $statusar[$rs['status']]; if($rs['mid']>0)$rows[$k]['checkdisabled'] = true;//有主表ID,不能删除 } } $barr = array('rows' => $rows,'tyeparr'=>$tyeparr); return $barr; } /** * 删除出入库详情 */ public function delxiangAjax() { $ids = c('check')->onlynumber($this->post('id','0')); m('goodss')->delete("id in($ids) and `mid`=0"); backmsg(); } public function chukuoptAjax() { $dt = $this->post('dt'); $type = (int)$this->post('type'); $depotid= (int)$this->post('depotid'); $kind = (int)$this->post('kind'); $mid = (int)$this->post('mid','0'); $sm = $this->post('sm'); $cont = $this->post('cont'); $sharr = c('array')->strtoarray($cont); $arr['applydt'] = $dt; $arr['type'] = $type; $arr['kind'] = $kind; $arr['depotid'] = $depotid; $arr['explain'] = $sm; $arr['uid'] = $this->adminid; $arr['optid'] = $this->adminid; $arr['optdt'] = $this->now; $arr['comid'] = m('admin')->getcompanyid(); $arr['optname'] = $this->adminname; $arr['status'] = 1; $aid = '0'; $ndbs = m('goodn'); $mtype = -1; //根据主表出入库操作 if($mid>0){ $mrs = m('goodm')->getone("`id`='$mid' and `status`=1"); if(!$mrs)return '该单据还未审核完成,不能出入库操作'; //读取已入库数量 $arwos = $ndbs->getall('`mid`='.$mid.' and `couns`<`count`'); $ruks = array(); foreach($arwos as $k1=>$rs1){ $ruks[$rs1['aid']] = array( 'kes' => floatval($rs1['count']) - floatval($rs1['couns']),//还可入库数 'id' => $rs1['id'], 'couns' => floatval($rs1['couns']) ); } $mtype = (int)$mrs['type']; //3就是调拨 $arr['comid'] = $mrs['comid']; } //调拨必须先出库原来的 if($mtype==3 && $depotid==$mrs['custid'])return '调拨出入库仓库不能相同'; foreach($sharr as $k=>$rs){ $arr['aid'] = $rs[0]; $count = (int)$rs[1]; $arr['depotid'] = $depotid; $arr['type'] = $type; $arr['explain'] = $sm; if($count<0)$count = 0-$count; if($mid>0){ if(!isset($ruks[$arr['aid']]))continue; $shua = $ruks[$arr['aid']]; if($count>$shua['kes'])$count=$shua['kes'];//超过 $arr['mid'] = $mid; } if($count==0)continue; $arr['count'] = $count; if($type==1)$arr['count'] = 0- $arr['count'];//出库为负数 $ussid = $this->db->record('[Q]goodss', $arr); $aid.=','.$rs[0].''; //更新已出入库的数量 if($mid>0 && $ussid){ $ndbs->update('`couns`=`couns`+'.$count.'', $shua['id']); } if($mtype==3){ $arr['depotid'] = $mrs['custid']; //仓库 $arr['type'] = 1; //出库 $arr['count'] = 0 - $count; //$arr['explain'] = '调拨出库'; $this->db->record('[Q]goodss', $arr); } } if($aid!='0')m('goods')->setstock($aid); if($mid>0){ m('goods')->upstatem($mid); } return 'success'; } //刷新库存 public function reloadkcAjax() { m('goods')->setstock(); } //出入库操作 public function croptbeforeshow($table) { $key = $this->post('key'); $where= ''; if($key!=''){ $where.=" and (b.`uname` like '%$key%' or b.`sericnum` like '$key%')"; } $where .= m('admin')->getcompanywhere(1,'a.'); return array( 'where' => 'and a.`status`=1 and a.`type`<>6 and a.`state`<>1 '.$where.'', 'table' => '`[Q]'.$table.'` a left join `[Q]flow_bill` b on a.id=b.mid and b.`table`=\''.$table.'\'', 'fields' => 'a.id,a.applydt,a.optdt,a.`explain`,a.`state`,a.`type`,b.uname,b.sericnum,b.udeptname' ); } public function croptaftershow($table, $rows) { $dgs = m('goods'); $typeb = array('0' ,'1' ,'2' ,'3', '4','5'); $typea = array('领用单' ,'采购单' ,'销售单' ,'调拨单', '归还单','退货单'); $biana = array('goodly' ,'caigou' ,'custxiao','diaobo', 'goodgh','tuihuo'); $chux = array('0','2'); if($rows)foreach($rows as $k=>&$rs){ $rs['mknum'] = arrvalue($biana, $rs['type']); $rs['typev'] = $rs['type']; $rs['type'] = arrvalue($typea, $rs['type']); $lx = 0; //入 if(in_array($rs['typev'],$chux))$lx=1; $rs['state'] = $dgs->crkstate($rs['state'], $lx); } return array( 'rows' => $rows ); } //根据仓库统计 public function pdck_beforeshow($table) { $depotid = (int)$this->post('depotid'); $where = 'and a.`depotid`='.$depotid.''; $key = $this->post('key'); $dt = $this->post('dt'); if($key!=''){ $where .= " and (b.`name` like '%$key%' or b.`num` like '%$key%' or b.`guige` like '%$key%' or b.`xinghao` like '%$key%') "; } if($dt!=''){ $where .= " and a.`applydt` <= '$dt'"; } return array( 'table' => '`[Q]goodss` a left join `[Q]goods` b on a.`aid`=b.`id`', 'where' => $where, 'fields'=> 'b.*,sum(a.`count`) as `stock`', 'group' => 'a.`aid`' ); } public function pdck_aftershow($table, $rows) { foreach($rows as $k=>$rs){ $rows[$k]['typeid'] = $this->gettypename($rs['typeid']); if($rs['stock']<='0')$rows[$k]['ishui']=1; } return array( 'rows' => $rows ); } //打印二维码 public function printewmAction() { $sid = c('check')->onlynumber($this->get('sid')); $rows= m('goods')->getall('id in('.$sid.')'); foreach($rows as $k=>$rs){ $rows[$k]['url'] = $this->jm->base64encode('task.php?a=x&num=goods&mid='.$rs['id'].''); } $this->assign('rows', $rows); $this->displayfile = ''.P.'/main/assetm/tpl_assetm_printewm.html'; $this->title = '物品二维码打印'; } }