123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 |
- <?php
- /**
- * @author darkredz
- */
- class InvoiceController extends DooController {
- public $staff;
- public $verifyId;
- public $executeId;
- public static $NEW = 0;
- public static $NEW2 = 0;
- private $INVOICEKEY="APPROVAL";
-
- function __construct() {
- if(isset($_COOKIE["staff"])){
-
- if(!empty($_COOKIE["staff"])){
-
- Doo::loadModel ( 'staff' );
- Doo::loadModel('verify');
- $verify=new verify();
- $staff = new staff ();
- Doo::loadModel("execute");
- $execute=new execute();
- //8956
- $verifyList=$verify->find(array('select'=>'staff','asArray'=>true));
- $list=array();
-
- //判断角色的审批权限
- foreach ($verifyList as $key=>$value){
- $ver=json_decode($value['staff']);
-
- foreach ($ver as $k=>$v){
- if ($v[1]=='ROLE'){
- $roleList=json_decode($v[3]);
- foreach ($roleList as $t=>$g){
- $gList=explode("_", $g);
- array_push($list, $gList[0]);
- //print_r($list);
- }
- }else
- array_push($list, $v[0]);
- }
- }
-
- //判断执行人的审批权限
- $executeList=$execute->find(array('select'=>'staff','asArray'=>true));
- $list2=array();
- foreach ($executeList as $key=>$value){
- $ver=json_decode($value['staff']);
-
- foreach ($ver as $k=>$v){
- array_push($list2, $v[0]);
- }
- }
-
- $eidList=file_get_contents("protected/config/execute/execute.ini");
- $eidList=array_filter(explode(",", $eidList));
-
- $this->executeId= array_merge($list2,$eidList);
-
- $this->verifyId=$list;
- $this->staff=$staff->getUserByIdList($_COOKIE["staff"]);
- ReceiptController::$NEW= $this->getReceiptCount();
- ReceiptController::$NEW2= $this->getExeCount();
- return "/";
- }
- }
-
- Doo::loadCore ( 'uri/DooUriRouter' );
- $router = new DooUriRouter ();
- $routeRs = $router->execute ( Doo::app ()->route, Doo::conf ()->SUBFOLDER );
-
- if($routeRs['1']!="login"){
- header ( 'Content-Type:text/html;charset=utf-8' );
- @header ( "Location: /login" );
- }
- }
-
- function invoice(){
-
- $data['memu']="invoice";
- $data['staff']=$this->staff;
- $data['receiptMemu']='invoice';
- $data['verifyId']=$this->verifyId;
- $data['executeId']=$this->executeId;
- $this->render ( "/admin/invoice", $data );
- }
-
- function invoiceAdd(){
- Doo::loadModel('L_category');
- $lCategory=new L_category();
-
- $category=$lCategory->find(array('asArray'=>true));
-
- $data['category']=$category;
-
- $data['memu']="invoice";
- $data['staff']=$this->staff;
- $data['receiptMemu']='invoice';
- $data['verifyId']=$this->verifyId;
- $data['executeId']=$this->executeId;
- $this->render ( "/admin/invoiceAdd", $data );
- }
-
- function invoiceAddDo(){
- $cid=$this->get_args('cid')&&is_numeric($this->get_args('cid'))?$this->get_args('cid'):0;
- $invoiceType=$this->get_args('invoiceType')&&is_numeric($this->get_args('invoiceType'))?$this->get_args('invoiceType'):0;
- $doPost=$this->get_args('doPost')&&is_numeric($this->get_args('doPost'))?$this->get_args('doPost'):0;
- $invoicePrice=$this->get_args('invoicePrice')?$this->get_args('invoicePrice'):"";
- $invoiceElement=$this->get_args('invoiceElement')?$this->get_args('invoiceElement'):"";
- $invoiceTitle=$this->get_args('invoiceTitle')?$this->get_args('invoiceTitle'):"";
- $invoiceCompany=$this->get_args('invoiceCompany')?$this->get_args('invoiceCompany'):"";
- $TIN=$this->get_args('TIN')?$this->get_args('TIN'):"";
- $address=$this->get_args('address')?$this->get_args('address'):"";
- $phone=$this->get_args('phone')?$this->get_args('phone'):"";
- $bank=$this->get_args('bank')?$this->get_args('bank'):"";
- $bankAccount=$this->get_args('bankAccount')?$this->get_args('bankAccount'):"";
- $recipients=$this->get_args('recipients')?$this->get_args('recipients'):"";
- $recipientsPhone=$this->get_args('recipientsPhone')?$this->get_args('recipientsPhone'):"";
- $recipientsAddress=$this->get_args('recipientsAddress')?$this->get_args('recipientsAddress'):"";
-
- $mailItems=$this->get_args('mailItems')?$this->get_args('mailItems'):"";
- $remark=$this->get_args('remark')?$this->get_args('remark'):"";
-
- if(!empty($cid)&&!empty($invoicePrice)&&!empty($invoiceElement)){
- Doo::loadModel('invoice');
- $invoice=new invoice();
- Doo::loadModel('L_category');
- $lCategory=new L_category();
- Doo::loadModel('invoiceManage');
- $invoiceManage=new invoiceManage();
-
- $categoryDetil=$lCategory->getOne(array('SELECT'=>'title','where'=>'cid='.$cid,'asArray'=>true));
- $invoiceManageDetail=$invoiceManage->getOne(array('SELECT'=>'title','where'=>'mold="发票审批"','asArray'=>true));
-
- $invoice->cid=$cid;
- $invoice->categoryName=$categoryDetil['title'];
- $invoice->invoiceElement=$invoiceElement;
- $invoice->invoicePrice=$invoicePrice;
-
- $invoice->invoiceType=$invoiceType;
- if ($invoiceType==0)
- $invoice->invoiceTitle=$invoiceTitle;
- elseif ($invoiceType==1){
- $invoice->invoiceTitle=$invoiceCompany;
- $invoice->TIN=$TIN;
- $invoice->address=$address;
- $invoice->phone=$phone;
- $invoice->bank=$bank;
- $invoice->bankAccount=$$bankAccount;
- }
-
- $invoice->doPost=$doPost;
- if ($doPost==1){
- $invoice->recipients=$recipients;
- $invoice->recipientsPhone=$recipientsPhone;
- $invoice->recipientsAddress=$recipientsAddress;
- }
- $invoice->status=1;
- $invoice->invoiceSerial="#F".date("Ymd").mt_rand(1000,9999);
- $invoice->date=date("'Y-m-d H:i:s");
- $invoice->sid=$this->staff[0]['sid'];
- $invoice->userName=$this->staff[0]['username'];
- $invoice->invoiceManage=$invoiceManageDetail['staff'];
- $staffId=$a=json_decode($invoiceManageDetail['staff']);
- $invoice->pendingApprovals=$staffId[0][0];
- $invoice->insert();
- }
-
- return "/invoice";
- }
-
- function invoiceApproval(){
-
- Doo::loadModel('invoice');
- $invoice=new invoice();
- Doo::loadModel('invoiceManage');
- $invoiceManage=new invoiceManage();
- Doo::loadClass('XDeode');
- $XDeode=new XDeode(5);
-
- $invoiceList=$invoice->find(array('where'=>'status=1 and pendingApprovals='.$this->staff[0]['sid'],'asArray'=>true));
- foreach ($invoiceList as $key=>$value){
- $invoiceList[$key]['iidKey']=$XDeode->encode($value['iid']);//base64_encode($value['iid']);
- }
-
- $data['invoiceList']=$invoiceList;
-
- $data['memu']="invoice";
- $data['staff']=$this->staff;
- $data['receiptMemu']='invoiceApproval';
- $data['verifyId']=$this->verifyId;
- $data['executeId']=$this->executeId;
- $this->render ( "/admin/invoiceApproval", $data );
- }
-
- function invoiceDetail(){
- Doo::loadClass('XDeode');
- $XDeode=new XDeode(5);
-
- $iid=isset($this->params['iid'])?$this->params['iid']:"";
- $iid=$XDeode->decode($iid);//base64_decode($iid);
-
- Doo::loadModel('invoice');
- $invoice=new invoice();
- Doo::loadModel('invoiceManage');
- $invoiceManage=new invoiceManage();
-
-
- $invoiceDetail=$invoice->getOne(array('where'=>'status=1 and pendingApprovals='.$this->staff[0]['sid'].' and iid='.$iid,'asArray'=>true));
-
- $invoiceManageDetail=$invoiceManage->getOne(array('SELECT'=>'title','where'=>'mold="发票审批"','asArray'=>true));
-
- $a=json_decode($invoiceManageDetail['staff']);
-
-
- $data['invoiceDetail']=$invoiceDetail;
-
- $data['INVOICEKEY']=$this->authcode($invoiceDetail['iid'],'');
- $data['memu']="invoice";
- $data['staff']=$this->staff;
- $data['receiptMemu']='invoiceApproval';
- $data['verifyId']=$this->verifyId;
- $data['executeId']=$this->executeId;
- $this->render ( "/admin/invoiceApprovalDetail", $data );
- }
-
- function invoiceApprovalDo(){
- $iid=$this->get_args('invoiceKey')?$this->get_args('invoiceKey'):"";
- $status=$this->get_args('status')&&is_numeric($this->get_args('status'))?$this->get_args('status'):0;
- $opinion=$this->get_args('opinion')?$this->get_args('opinion'):"";
-
- if (!empty($iid)&&!empty($status)&&!empty($opinion)){
- if (!($status==2||$status==3||$status==4))
- die('illegal request');
- Doo::loadModel('invoice');
- $invoice=new invoice();
-
- $iid=$this->authcode($iid);
- $invoiceDetail=$invoice->getOne(array('where'=>'status=1 and iid='.$iid.' and pendingApprovals='.$this->staff[0]['sid'],'asArray'=>true));
- if (empty($invoiceDetail))
- die('illegal request');
- $processApprovals=json_decode($invoiceDetail['processApprovals'],true);
- $invoiceManage=json_decode($invoiceDetail['invoiceManage'],true);
-
- $invoice->status=$status;
- if ($status==3){
- //操作日志
- }else{
- if(empty($processApprovals)){//记录下一个IDKEY
- $processApprovals=array($this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status));
- //if($status==4)
- // $processApprovals=array('final'=>$status,$this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status));
- if ($status!=4)
- $invoice->pendingApprovals=$invoiceManage[1][0];
- $invoice->processApprovals=$processApprovals;
- }else{
-
- $processApprovals[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status);
- if($status!=4)
- $invoice->pendingApprovals=$invoiceManage[1][0];
-
- $invoice->processApprovals=$processApprovals;
- }
- }
-
- print_r($processApprovals);
-
- //$invoice->
- /*
- if (isset($verifyStaff['final'])){//rDetail
- $receipt->verifyBreakup=$verifyString;
- $receipt->status=3;
- $receiptDetailObj->status=3;
- $receiptDetailObj->update(array('where'=>'rid='.$rid));
-
-
-
-
- if (!empty($roleId)){
- Doo::loadModel("role");
- $role=new role();
- $roleInfo=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
-
- $receiptLog->rolename=$roleInfo['name'];
- }
-
- $receiptLog->username=$this->staff[0]['username'];
- $receiptLog->uid=$this->staff[0]['sid'];
- $receiptLog->date=date("Y-m-d");
- $receiptLog->opinion=$opinion;
- $receiptLog->img=$this->staff[0]['avatar'];
- $receiptLog->status=3;
- $receiptLog->rid=$rid;
- $receiptLog->insert();
-
-
- }elseif(count($verifyStaff)==count($verifyDetail)){//要修改 角色的数量
- $receipt->status=1;$reviseSum=0;
- $receipt->verifyBreakup=$verifyString;
- if(!empty($receiptDetail['reviseDetail'])){//statistics item rDetail
- $reviseDetail=json_decode($receiptDetail['reviseDetail'],true);
-
- foreach ($reviseDetail as $key=>$value){
- $receiptDetailObj=new receiptDetail();
- $receiptDetailObj->staff=$receiptDetail['staff'];// $this->staff[0]['sid'];
- $receiptDetailObj->item=$value['description'];
- $receiptDetailObj->itemCategory="报销金额调整";
- $receiptDetailObj->price=$value['price'];
- $receiptDetailObj->date=$receiptDetail['date'];
- $receiptDetailObj->cid=$this->staff[0]['cid'];
- $receiptDetailObj->rid=$rid;
- $receiptDetailObj->status=1;
- $receiptDetailObj->insert();
- $reviseSum+=$value['price'];
- }
-
- $itemStatistics=new itemStatistics();
- $itemStatistics->cid=$receiptDetail['cid'];//$this->staff[0]['cid'];
- $itemStatistics->staff=$receiptDetail['staff'];//$this->staff[0]['sid'];
- $itemStatistics->price=$reviseSum;
- $itemStatistics->itemCategory="报销金额调整";
- $itemStatistics->date=$receiptDetail['date'];
- $itemStatistics->insert();
- }
- $receiptDetailObj=new receiptDetail();
- $receiptDetailObj->status=1;
- $receiptDetailObj->pastDate=date("Y-m-d");
- $receiptDetailObj->update(array('where'=>'rid='.$rid));
-
- $dateArray=explode("-", $receiptDetail['date']);
- $dateCondition=" and Year(date) =".$dateArray[0]." and Month(date) = ".$dateArray[1];
- $stat=$statistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].$dateCondition,'asArray'=>true));
- if(empty($stat)){
- $statistics->date=$receiptDetail['date'];
- $statistics->cid=$receiptDetail['cid'];//$this->staff[0]['cid'];
- $statistics->staff=$receiptDetail['staff'];//$this->staff[0]['sid'];
- $statistics->agPrice=$receiptDetail['sum'];
- $statistics->rePrice=$reviseSum;
- $statistics->insert();
- }else{
- $statistics->agPrice=$stat['agPrice']+$receiptDetail['sum'];
- $statistics->rePrice=$stat['rePrice']+$reviseSum;
- $statistics->update(array('where'=>'sid='.$stat['sid']));
- }
-
- $dateArray=explode("-", $receiptDetail['date']);
- $dateCondition=" and Year(date) =".$dateArray[0]." and Month(date) = ".$dateArray[1];
- $accountItem=json_decode($receiptDetail['accountItem'],true);
- foreach ($accountItem['cSum'] as $key=>$value){
- if($key=="agencySum"){
- $iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].' and itemCategory="'.$this->AGENCY.'"'.$dateCondition,'asArray'=>true));
- if(empty($iStatistics)){
- $itemStatistics->cid=$receiptDetail['cid'];;
- $itemStatistics->staff=$receiptDetail['staff'];
- $itemStatistics->price=$value;
- $itemStatistics->itemCategory=$this->AGENCY;
- $itemStatistics->date=$receiptDetail['date'];
- $itemStatistics->insert();
- }else{
- if (!empty($value)){
- $itemStatistics->price=$value+$iStatistics['price'];
- $itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
- }
- }
- }elseif($key=="travelSum"){
- $iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].' and itemCategory="'.$this->TRAVEL.'"'.$dateCondition,'asArray'=>true));
- if(empty($iStatistics)){
- $itemStatistics->cid=$receiptDetail['cid'];
- $itemStatistics->staff=$receiptDetail['staff'];
- $itemStatistics->price=$value;
- $itemStatistics->itemCategory=$this->TRAVEL;
- $itemStatistics->date=$receiptDetail['date'];
- $itemStatistics->insert();
- }else{
- if (!empty($value)){
- $itemStatistics->price=$value+$iStatistics['price'];
- $itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
- }
- }
- }elseif($key=="trainSum"){
- $iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].' and itemCategory="'.$this->TRAIN.'"'.$dateCondition,'asArray'=>true));
- if(empty($iStatistics)){
- $itemStatistics->cid=$receiptDetail['cid'];
- $itemStatistics->staff=$receiptDetail['staff'];
- $itemStatistics->price=$value;
- $itemStatistics->itemCategory=$this->TRAIN;
- $itemStatistics->date=$receiptDetail['date'];
- $itemStatistics->insert();
- }else{
- if (!empty($value)){
- $itemStatistics->price=$value+$iStatistics['price'];
- $itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
- }
- }
- }elseif($key=="otherSum"){
- $iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].' and itemCategory="'.$this->OTHER.'"'.$dateCondition,'asArray'=>true));
- if(empty($iStatistics)){
- $itemStatistics->cid=$receiptDetail['cid'];
- $itemStatistics->staff=$receiptDetail['staff'];
- $itemStatistics->price=$value;
- $itemStatistics->itemCategory=$this->OTHER;
- $itemStatistics->date=$receiptDetail['date'];
- $itemStatistics->insert();
- }else{
- if (!empty($value)){
- $itemStatistics->price=$value+$iStatistics['price'];
- $itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
- }
- }
- }
- }
- $receipt->pastDate=date("Y-m-d");
- }
-
- */
-
-
- echo $iid.$status.$opinion;
-
- }
- }
-
- private function getExeCount(){
- Doo::loadModel('receipt');
- $receipt=new receipt();
- $receiptList=$receipt->find(array('where'=>'(executeCopy like \'%["'.$this->staff[0]['sid'].'%\' and executeStaff NOT LIKE \'%'.$this->staff[0]['sid'].'%\' ) and (status=1 or status=6)','desc'=>'rid','asArray'=>true));
-
- return count($receiptList);
- }
-
- private function getReceiptCount(){
-
- $status=2;
- $year=date('Y');
-
- Doo::loadModel('receipt');
- $receipt=new receipt();
- Doo::loadModel('verify');
- $dateCondition=" and Year(date) =".$year;
-
- $approvalCondition=' and nowStaff like "%'.$this->staff[0]['sid'].'%" ';
- $receiptList=$receipt->find(array('where'=>' status='.$status.$dateCondition.$approvalCondition,'desc'=>'rid','asArray'=>true));
-
- return count($receiptList);
- }
-
- function _GetFileEXT($filename) {
- $pics = explode ( '.', $filename );
- $num = count ( $pics );
- return $pics [$num - 1];
- }
-
- /**
- * 获取get或者POST值
- * @param string $name 属性名称
- * @return fixed 值
- */
- function get_args($name) {
- if (isset ( $_GET [$name] )) {
- if (is_array ( $_GET [$name] ))
- return $_GET [$name];
- else
- return addslashes ( $_GET [$name] );
-
- } elseif (isset ( $_POST [$name] )) {
- if (is_array ( $_POST [$name] ))
- return $_POST [$name];
- else
- return addslashes ( $_POST [$name] );
- } else
- return false;
- }
-
- /**
- * 加密或解密指定字符串
- * @param string $string 要加密或解密的字符串
- * @param string $operation 当取值为'DECODE'时表示解密,否则为加密
- * @param string $key 加解密的key
- * @param $expiry 超时值
- * */
- function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
- $ckey_length = 4;
- if (! $key) {
- $key = $this->INVOICEKEY;
- }
- $key = md5 ( $key );
- $keya = md5 ( substr ( $key, 0, 16 ) );
- $keyb = md5 ( substr ( $key, 16, 16 ) );
- $keyc = $ckey_length ? ($operation == 'DECODE' ? substr ( $string, 0, $ckey_length ) : substr ( md5 ( microtime () ), - $ckey_length )) : '';
-
- $cryptkey = $keya . md5 ( $keya . $keyc );
- $key_length = strlen ( $cryptkey );
-
- $string = $operation == 'DECODE' ? base64_decode ( substr ( $string, $ckey_length ) ) : sprintf ( '%010d', $expiry ? $expiry + time () : 0 ) . substr ( md5 ( $string . $keyb ), 0, 16 ) . $string;
- $string_length = strlen ( $string );
-
- $result = '';
- $box = range ( 0, 255 );
-
- $rndkey = array ();
- for($i = 0; $i <= 255; $i ++) {
- $rndkey [$i] = ord ( $cryptkey [$i % $key_length] );
- }
-
- for($j = $i = 0; $i < 256; $i ++) {
- $j = ($j + $box [$i] + $rndkey [$i]) % 256;
- $tmp = $box [$i];
- $box [$i] = $box [$j];
- $box [$j] = $tmp;
- }
-
- for($a = $j = $i = 0; $i < $string_length; $i ++) {
- $a = ($a + 1) % 256;
- $j = ($j + $box [$a]) % 256;
- $tmp = $box [$a];
- $box [$a] = $box [$j];
- $box [$j] = $tmp;
- $result .= chr ( ord ( $string [$i] ) ^ ($box [($box [$a] + $box [$j]) % 256]) );
- }
-
- if ($operation == 'DECODE') {
- if ((substr ( $result, 0, 10 ) == 0 || substr ( $result, 0, 10 ) - time () > 0) && substr ( $result, 10, 16 ) == substr ( md5 ( substr ( $result, 26 ) . $keyb ), 0, 16 )) {
- return substr ( $result, 26 );
- } else {
- return '';
- }
- } else {
- return $keyc . str_replace ( '=', '', base64_encode ( $result ) );
- }
- }
- }
- class ReceiptController{
- public static $NEW = 0;
- public static $NEW2 = 0;
- }
- ?>
|