Example #1
0
 /**
  * 删除库房
  * @param $id
  * @return boolean
  */
 public function deleted($data)
 {
     try {
         $storeage = new StorageDao();
         //检查仓库是否已经使用
         $storageName = $data["storageName"];
         $stocks = new CurrentStocksDao();
         $count = $stocks->getCount("place='{$storageName}' or station = '{$storageName}'");
         if ($count > 0) {
             $this->setError("该" . $data['stype'] . "含有库存,不能删除!");
             return false;
         }
         $id = $data["id"];
         $result = $storeage->deleteById($id);
     } catch (Exception $e) {
         system_out("StorageAction delete exception:" . $e);
         throw new Exception($e);
     }
     return $result;
 }
Example #2
0
 /**
  * 检查已挂表的表位是否全部确认完毕
  * @param array $data  已经挂了表的表位
  * @param string $state  U 挂表  D 取表
  *
  * @return boolean ;
  *
  */
 public function checkStationConfirmComplete($data, $state)
 {
     $stations = array();
     return true;
     try {
         $confirm = new ConfirmStationAction();
         $result = $confirm->queryUnconfirmStation("state ='{$state}' and confirm=0 ");
         //如果没有记录,则表示全部确认了
         if (!$result) {
             return true;
         }
         $temp = "'" . implode("','", $data) . "'";
         $stocks = new CurrentStocksDao();
         $exits = $stocks->findAll("station in (" . $temp . ")")->toResultSet();
         if ($exits) {
             $temp = array();
             for ($i = 0; $i < sizeof($exits); $i++) {
                 array_push($temp, $exits[$i]["station"]);
             }
             $exits = $temp;
         }
         for ($i = 0; $i < sizeof($result); $i++) {
             $val = $result[$i]["station"];
             $rtn = array_search($val, $exits);
             //如果已经入仓,则跳过
             if (is_numeric($rtn)) {
                 continue;
             }
             $rtn = array_search($val, $data);
             if (is_numeric($rtn)) {
                 $stations[] = $val;
             }
         }
         //返回值
         $rtn = array();
         $data = implode(',', $stations);
         if ($data) {
             $data = '还有表位挂了表未确认:' . $data;
             array_push($rtn, $data);
         }
         //是否有两个表,确认了同一个表位
         $confirm = new ConfirmStationAction();
         $result = $confirm->checkWhetherDuplic();
         if ($result) {
             for ($i = 0; $i < sizeof($result); $i++) {
                 $err = "[" . $result[$i]["station"] . "]表位确认了多个表[" . $result[$i]['code'] . "]请更正";
                 array_push($rtn, $err);
             }
         }
         //如果没有错误信息,则返回true
         return $rtn ? $rtn : true;
     } catch (Executive $e) {
         system_out("StocksManager.checkStationConfirmComplete error:{$e}");
         throw new Exception($e);
     }
 }
 /**
  * 确认表所放的位置
  *
  * @param $billno	单据号
  * @param $data  	数据 array("station"=>,"code"=>)
  * @return boolean
  */
 public function confirmInstation($billdata, $data)
 {
     $sysno = $billdata['sysno'];
     $billdate = $billdata['billDate'];
     //明细表
     $stocks = new StocksDao();
     $stocks->startTrans();
     //当前库存表
     $current = new CurrentStocksDao();
     $current->startTrans();
     //未确认表位
     $unconfirm = new UnconfirmstationDao();
     $unconfirm->startTrans();
     try {
         $newinsert = false;
         $station = $data["station"];
         $code = $data["code"];
         $result = $current->findAll("`code`='{$code}'")->toResultSet();
         if (sizeof($result) == 0 && NOBILL_SCAN == false) {
             $stocks->rollback();
             $current->rollback();
             $unconfirm->rollback();
             $this->setError("库存里找不到该条码[{$code}]对应的表计!");
             return false;
         } else {
             if (sizeof($result) == 0) {
                 $newinsert = true;
                 $codeinfo = new CodeInfo();
                 $codedetail = $codeinfo->getInfoByCode($code);
                 $vo = $stocks->createVo('add', '', 'id', 0, $codedetail);
                 $vo->id = 0;
                 $vo->inoutType = 'IN';
                 $vo->code = $code;
                 $vo->sysno = $billdata['sysno'];
                 $vo->placeno = $billdata['placeno'];
                 $vo->place = $billdata['place'];
                 $vo->billType = $billdata['billType'];
                 $vo->billDate = $billdata['billDate'];
                 $vo->billNo = $billdata['billNo'];
                 $vo->sendMan = $billdata['sendMan'];
                 $vo->saveMan = $billdata['saveMan'];
                 $vo->orderNo = $billdata['orderNo'];
                 $vo->client = $billdata['client'];
                 $vo->inqty = 1;
                 $vo->outqty = 0;
                 $vo->station = $station;
                 //inert new records
                 $stocksmanageraction = new StocksManagerAction();
                 $savedata["modify"] = array($vo->toArray());
                 $result = $stocksmanageraction->save($savedata);
                 if (!$result) {
                     system_out("create new recod error:" . $stocksmanageraction->getError());
                     $this->setError($stocksmanageraction->getError());
                     return false;
                 }
             }
         }
         $sql = "UPDATE " . (DB_PREFIX ? DB_PREFIX . "_" : "") . "currentstocks\n\t\t\t           SET `station`='{$station}'\n\t\t\t\t\t WHERE `code` ='{$code}'";
         system_out("update sql:" . $sql);
         $current->execute($sql);
         if (!$newinsert) {
             //返写stocks
             $result = StocksIndexAction::getTableNameByDate($billdate);
             if ($result == '') {
                 $stocks->rollback();
                 $current->rollback();
                 $unconfirm->rollback();
                 system_out("get tablename error,billdate:" . $billdate);
                 $this->setError("获取存储表出错!");
                 return false;
             }
             $tablename = $result;
             $sql = "UPDATE\t`{$tablename}`\n\t\t\t\t\t\t   SET `station` = '{$station}'\n\t\t\t\t\t\t WHERE `code` = '{$code}' and\n\t\t\t\t\t\t \t\t`sysno` = '{$sysno}' ";
             $stocks->execute($sql);
         }
         //标记已经确认的开灯记录
         $sql = "UPDATE " . (DB_PREFIX ? DB_PREFIX . "_" : "") . "unconfirmstation\n\t\t\t           SET  `confirm` = 1\n\t\t\t\t\t WHERE  `station` = '{$station}' and `state`='U'";
         $unconfirm->execute($sql);
     } catch (Exception $e) {
         $stocks->rollback();
         $current->rollback();
         $unconfirm->rollback();
         system_out("UnconfirmstationAction.confirmInstation error:{$e},\n\t\t\t\t\t\tsysno:{$sysno},data:" . print_r($data, true));
         throw new Exception($e);
     }
     //commit
     $stocks->commit();
     $current->commit();
     $unconfirm->commit();
     return true;
 }
 /**
  * 保存
  *
  * @param Array $data  Example:$data["modify"] = array()
  *                             $data["delete"} = array()
  * @return boolean true if succeed
  */
 public function save($data)
 {
     //明细表
     $stocks = new StocksDao();
     $stocks->startTrans();
     //当前库存表
     $current = new CurrentStocksDao();
     $current->startTrans();
     $modify = $data["modify"];
     $delete = $data["delete"];
     //删除的数据
     for ($i = 0; $i < sizeof($delete); $i++) {
         try {
             $tablename = StocksIndexAction::getSaveTableName($delete[$i]["billDate"]);
             if ($delete[$i]["id"] != '') {
                 $vo = $stocks->find("id=" . $delete[$i]["id"], $tablename);
                 //if($vo==true && $vo->station != '' && $vo->station != null)
                 //{
                 //	$stocks->rollback();
                 //	$current->rollback() ;
                 //	$this->setError("[" . $delete[$i]["code"] . "]已经确认位置,不能删除");
                 //	return false ;
                 //}
                 $rtn = $stocks->deleteById($delete[$i]["id"], $tablename);
                 //减库存
                 if ($vo != null && !$vo->isEmpty()) {
                     $rtn = $this->createCurrentStocks($current, '', $vo->toArray());
                     if (!$rtn) {
                         $stocks->rollback();
                         $current->rollback();
                         $this->setError($this->getError());
                         return false;
                     }
                 }
             }
             //end if
         } catch (Exception $e) {
             $current->rollback();
             $stocks->rollback();
             throw new Exception($e);
         }
         //end try
     }
     //end for
     //保存人员近参数表
     $otherparm = new OtherParmSetupAction();
     $otherparm->addParm('other', 'member', $modify[0]['sendMan']);
     $mis = new MIS();
     //添加/修改的数据
     for ($i = 0; $i < sizeof($modify); $i++) {
         //保存进库存明细表
         try {
             $tablename = StocksIndexAction::getSaveTableName($modify[$i]["billDate"]);
             if ($modify[$i]["id"] == '' || $modify[$i]["id"] == null || $modify[$i]["id"] == 0) {
                 $vo = $stocks->createVo('add', '', 'id', 0, $modify[$i]);
                 $result = $stocks->add($vo, $tablename);
                 if (!$result) {
                     $stocks->rollback();
                     $current->rollback();
                     system_out("StocksManagerActin.save error:新增数据保存出错,errcode:{$result}");
                     $this->setError("数据保存出错!");
                     return false;
                 }
                 //生成当前库存表
                 $rtn = $this->createCurrentStocks($current, $vo->toArray(), '');
                 if (!$rtn) {
                     $current->rollback();
                     $stocks->rollback();
                     $this->setError($this->getError());
                     return false;
                 }
                 //增加条码索引
                 if ($vo->code != '' && $vo->code != null) {
                     CodeIndexAction::addCodeIndex($vo->billDate, $vo->code);
                 }
                 //输出出库列表
                 $result = $mis->outPut($modify[$i]);
             } else {
                 $vo = $stocks->find("id=" . $modify[$i]["id"], $tablename);
                 if (!$vo) {
                     $stocks->rollback();
                     $current->rollback();
                     $this->setError("数据保存出错,数据在保存前已被删除!");
                     return false;
                 }
                 $oldvo = clone $vo;
                 //给Vo对象赋值
                 $this->refreshStocksInfo(&$vo, $modify[$i]);
                 $result = $stocks->save($vo, $tablename);
                 if (!$result) {
                     $stocks->rollback();
                     $current->rollback();
                     system_out("StocksManagerActin.save error:修改数据保存出错,errcode:{$result}");
                     $this->setError("数据保存出错,数据在保存前已被删除!");
                     return false;
                 }
                 //生成当前库存表
                 $rtn = $this->createCurrentStocks($current, $vo->toArray(), $oldvo->toArray());
                 if (!$rtn) {
                     $current->rollback();
                     $stocks->rollback();
                     $this->setError($this->getError());
                     return false;
                 }
             }
             //end if
         } catch (Exception $e) {
             $current->rollback();
             $stocks->rollback();
             throw new Exception($e);
         }
         //end try
     }
     //end for
     $stocks->commit();
     $current->commit();
     return true;
 }
Example #5
0
 /**
  * 库存一览表
  *
  * @param string $condition
  */
 public function queryCurrentStocksGeneral($condition)
 {
     try {
         $storage = new StorageDao();
         $sql = "select storageNo,storageName from " . (DB_PREFIX ? DB_PREFIX . "_" : "") . "storage where stype = '库房' or stype='库区' order by storageNo";
         $storageList = $storage->query($sql)->toArray();
         $stocks = new CurrentStocksDao();
         $sql = "select goodsName,spec from " . (DB_PREFIX ? DB_PREFIX . "_" : "") . "currentstocks ";
         if ($condition != '') {
             $sql = $sql . " where " . $condition;
         }
         $sql .= "group by goodsName,spec";
         //echo $sql ;
         $goodsList = $stocks->query($sql)->toArray();
         //数据
         $data = array();
         for ($i = 0; $i < sizeof($goodsList); $i++) {
             $item = array();
             $item["goodsName"] = $goodsList[$i]["goodsName"];
             $item["spec"] = $goodsList[$i]["spec"];
             //计算每个仓库的值
             foreach ($storageList as $place) {
                 $sql = "goodsName = '" . $goodsList[$i]["goodsName"] . "' and spec ='" . $goodsList[$i]["spec"] . "' and placeno like'" . $place['storageNo'] . "%'";
                 if ($condition != '') {
                     $sql = $sql . " and " . $condition;
                 }
                 //echo $sql ."<br>";
                 $sum = $stocks->getSum('qty', $sql);
                 $item[$place['storageNo']] = $sum;
             }
             array_push($data, $item);
         }
         //计算合计
         $sumrecord['goodsName'] = '合计:';
         foreach ($storageList as $place) {
             $sumrecord[$place['storageNo']] = ExFunction::ex_array_sum($data, $place['storageNo']);
         }
         array_push($data, $sumrecord);
         //表的结构
         $item = array("goodsName", "spec");
         $label = array("goodsName" => "品名", "spec" => "型号");
         foreach ($storageList as $place) {
             array_push($item, $place['storageNo']);
             $label[$place['storageNo']] = $place['storageName'];
         }
         $columnitem = $item;
         $enabled = array("_type_" => "*");
         $visible = array("_type_" => "*");
         $align = array();
         $width = array("qty" => 50);
         $inputtype = array();
         $struct["item"] = $item;
         $struct["label"] = $label;
         $struct["columnitem"] = $columnitem;
         $struct["enabled"] = $enabled;
         $struct["visible"] = $visible;
         $struct["align"] = $align;
         $struct["width"] = $width;
         $struct["inputtype"] = $inputtype;
         //返回值
         $rtn["struct"] = $struct;
         $rtn["data"] = $data;
         return $rtn;
     } catch (Exception $e) {
         throw new Exception($e);
     }
 }