|
@@ -1,7 +1,11 @@
|
|
|
<?php
|
|
|
|
|
|
/**
|
|
|
- * @author darkredz
|
|
|
+ * 开票功能控制器
|
|
|
+ * @author CP
|
|
|
+ * @version 1.0
|
|
|
+ * @namespace invoice
|
|
|
+ * @package invoiceController
|
|
|
*/
|
|
|
class InvoiceController extends DooController {
|
|
|
public $staff;
|
|
@@ -9,337 +13,437 @@ class InvoiceController extends DooController {
|
|
|
public $executeId;
|
|
|
public static $NEW = 0;
|
|
|
public static $NEW2 = 0;
|
|
|
- private $INVOICEKEY="APPROVAL";
|
|
|
-
|
|
|
+ private $INVOICEKEY = "APPROVAL";
|
|
|
function __construct() {
|
|
|
- if(isset($_COOKIE["staff"])){
|
|
|
-
|
|
|
- if(!empty($_COOKIE["staff"])){
|
|
|
-
|
|
|
+ if (isset ( $_COOKIE ["staff"] )) {
|
|
|
+
|
|
|
+ if (! empty ( $_COOKIE ["staff"] )) {
|
|
|
+
|
|
|
Doo::loadModel ( 'staff' );
|
|
|
- Doo::loadModel('verify');
|
|
|
- $verify=new verify();
|
|
|
+ Doo::loadModel ( 'verify' );
|
|
|
+ $verify = new verify ();
|
|
|
$staff = new staff ();
|
|
|
- Doo::loadModel("execute");
|
|
|
- $execute=new execute();
|
|
|
-
|
|
|
- $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);
|
|
|
+ Doo::loadModel ( "execute" );
|
|
|
+ $execute = new execute ();
|
|
|
+
|
|
|
+ $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]);
|
|
|
+ } 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]);
|
|
|
+
|
|
|
+ // 判断执行人的审批权限
|
|
|
+ $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();
|
|
|
+
|
|
|
+ $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"){
|
|
|
+
|
|
|
+ if ($routeRs ['1'] != "login") {
|
|
|
header ( 'Content-Type:text/html;charset=utf-8' );
|
|
|
- @header ( "Location: /login" );
|
|
|
+ @header ( "Location: /login" );
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- function invoice(){
|
|
|
-
|
|
|
- $data['memu']="invoice";
|
|
|
- $data['staff']=$this->staff;
|
|
|
- $data['receiptMemu']='invoice';
|
|
|
- $data['verifyId']=$this->verifyId;
|
|
|
- $data['executeId']=$this->executeId;
|
|
|
+ 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;
|
|
|
+ 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();
|
|
|
-
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 提交一份开票申请,并记录下操作日志
|
|
|
+ *
|
|
|
+ * @since 1.0.0
|
|
|
+ *
|
|
|
+ * @var integer cid 办事处ID
|
|
|
+ * @var integer invoiceType 发票类型
|
|
|
+ * @var integer doPost 是否邮寄
|
|
|
+ * @var integer invoicePrice 开票金额
|
|
|
+ * @var string invoiceElement 开票内容
|
|
|
+ * @var string invoiceTitle 发票抬头
|
|
|
+ * @var string invoiceCompany 单位名称
|
|
|
+ * @var string TIN 纳税人识别码
|
|
|
+ * @var string address 注册地址
|
|
|
+ * @var string phone 注册电话
|
|
|
+ * @var string bank 开户银行
|
|
|
+ * @var string bankAccount 银行账户
|
|
|
+ * @var string recipients 收件人
|
|
|
+ * @var string recipientsPhone 收件人手机/电话
|
|
|
+ * @var string recipientsAddress 收件地址
|
|
|
+ * @var string mailItems 邮寄物品
|
|
|
+ * @var string remark 备注
|
|
|
+ * @return string 返回跳转开票主页路径
|
|
|
+ */
|
|
|
+ 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 ();
|
|
|
+ Doo::loadModel ( 'invoiceOperationLog' );
|
|
|
+ $invoiceOperationLog = new invoiceOperationLog ();
|
|
|
|
|
|
+ $categoryDetil = $lCategory->getOne ( array (
|
|
|
+ 'SELECT' => 'title',
|
|
|
+ 'where' => 'cid=' . $cid,
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+ $invoiceManageDetail = $invoiceManage->getOne ( array (
|
|
|
+ 'SELECT' => 'title',
|
|
|
+ 'where' => 'mold="发票审批"',
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
|
|
|
- $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->invoiceCompany=$invoiceCompany;
|
|
|
- $invoice->TIN=$TIN;
|
|
|
- $invoice->address=$address;
|
|
|
- $invoice->phone=$phone;
|
|
|
- $invoice->bank=$bank;
|
|
|
- $invoice->bankAccount=$bankAccount;
|
|
|
+ $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->invoiceCompany = $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->mailItems=$mailItems;
|
|
|
+
|
|
|
+ $invoice->doPost = $doPost;
|
|
|
+ if ($doPost == 1) {
|
|
|
+ $invoice->recipients = $recipients;
|
|
|
+ $invoice->recipientsPhone = $recipientsPhone;
|
|
|
+ $invoice->recipientsAddress = $recipientsAddress;
|
|
|
+ $invoice->mailItems = $mailItems;
|
|
|
}
|
|
|
- $invoice->status=1;
|
|
|
- $invoice->invoiceSerial="#F".date("Ymd").mt_rand(1000,9999);
|
|
|
- $invoice->date=date("Y-m-d H:i:s");
|
|
|
- $invoice->updateTime=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->remark=$remark;
|
|
|
+ $invoice->status = 1;
|
|
|
+ $invoice->invoiceSerial = "#F" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
|
|
|
+ $invoice->date = date ( "Y-m-d H:i:s" );
|
|
|
+ $invoice->updateTime = 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->remark = $remark;
|
|
|
+ $iid = $invoice->insert ();
|
|
|
|
|
|
- $invoice->insert();
|
|
|
+ $item = array (
|
|
|
+ 'date' => date ( "Y-m-d H:i:s" ),
|
|
|
+ 'operation' => "提交审批",
|
|
|
+ 'status' => 1,
|
|
|
+ 'img' => $this->staff [0] ['avatar'],
|
|
|
+ 'username' => $this->staff [0] ['username'],
|
|
|
+ 'uid' => $this->staff [0] ['sid'],
|
|
|
+ 'iid' => $iid
|
|
|
+ );
|
|
|
+ $invoiceOperationLog->setInvoiceOperationLog ( $item );
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return "/invoice";
|
|
|
}
|
|
|
-
|
|
|
- function invoiceApproval(){
|
|
|
-
|
|
|
- Doo::loadModel('invoice');
|
|
|
- $invoice=new invoice();
|
|
|
- Doo::loadModel('invoiceManage');
|
|
|
- $invoiceManage=new invoiceManage();
|
|
|
- Doo::loadClass('XDeode');
|
|
|
- $XDeode=new XDeode(5);
|
|
|
- Doo::loadModel('staff');
|
|
|
- $staff=new staff();
|
|
|
+ function invoiceApproval() {
|
|
|
+ Doo::loadModel ( 'invoice' );
|
|
|
+ $invoice = new invoice ();
|
|
|
+ Doo::loadModel ( 'invoiceManage' );
|
|
|
+ $invoiceManage = new invoiceManage ();
|
|
|
+ Doo::loadClass ( 'XDeode' );
|
|
|
+ $XDeode = new XDeode ( 5 );
|
|
|
+ Doo::loadModel ( 'staff' );
|
|
|
+ $staff = new staff ();
|
|
|
|
|
|
- $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']);
|
|
|
+ $invoiceList = $invoice->find ( array (
|
|
|
+ 'where' => 'status=1 and pendingApprovals=' . $this->staff [0] ['sid'],
|
|
|
+ 'desc' => 'iid',
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+ foreach ( $invoiceList as $key => $value ) {
|
|
|
+ $invoiceList [$key] ['iidKey'] = $XDeode->encode ( $value ['iid'] );
|
|
|
|
|
|
- $lastApprover=json_decode($value['processApprovals'],true);
|
|
|
- if (!empty($lastApprover)){
|
|
|
- $lastApproverKey=array_keys($lastApprover);
|
|
|
- $lastApprover=end($lastApprover);
|
|
|
+ $lastApprover = json_decode ( $value ['processApprovals'], true );
|
|
|
+ if (! empty ( $lastApprover )) {
|
|
|
+ $lastApproverKey = array_keys ( $lastApprover );
|
|
|
+ $lastApprover = end ( $lastApprover );
|
|
|
|
|
|
- $staffDetail=$staff->getOne(array('where'=>'sid='.end($lastApproverKey),'asArray'=>true));
|
|
|
- $lastApprover['username']=$staffDetail['username'];
|
|
|
+ $staffDetail = $staff->getOne ( array (
|
|
|
+ 'where' => 'sid=' . end ( $lastApproverKey ),
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+ $lastApprover ['username'] = $staffDetail ['username'];
|
|
|
}
|
|
|
- $invoiceList[$key]['lastApprover']=$lastApprover;
|
|
|
+ $invoiceList [$key] ['lastApprover'] = $lastApprover;
|
|
|
}
|
|
|
-
|
|
|
- $data['invoiceList']=$invoiceList;
|
|
|
-
|
|
|
- $data['memu']="invoice";
|
|
|
- $data['staff']=$this->staff;
|
|
|
- $data['receiptMemu']='invoiceApproval';
|
|
|
- $data['verifyId']=$this->verifyId;
|
|
|
- $data['executeId']=$this->executeId;
|
|
|
+
|
|
|
+ $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);
|
|
|
- if (!is_numeric($iid))
|
|
|
- die('illegal request');
|
|
|
+ function invoiceDetail() {
|
|
|
+ Doo::loadClass ( 'XDeode' );
|
|
|
+ $XDeode = new XDeode ( 5 );
|
|
|
|
|
|
- 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;
|
|
|
+ $iid = isset ( $this->params ['iid'] ) ? $this->params ['iid'] : "";
|
|
|
+ $iid = $XDeode->decode ( $iid );
|
|
|
+ if (! is_numeric ( $iid ))
|
|
|
+ die ( 'illegal request' );
|
|
|
+
|
|
|
+ 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
|
|
|
+ ) );
|
|
|
+
|
|
|
+ $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'):"";
|
|
|
- $iid=$this->authcode($iid);
|
|
|
- if (!is_numeric($iid))
|
|
|
- die('illegal request');
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 对发票进行审批,其中操作有终止,退回,同意动作。操作成功并记录下操作日志
|
|
|
+ *
|
|
|
+ * @since 1.0.0
|
|
|
+ *
|
|
|
+ * @var integer iid 开票ID 已加密
|
|
|
+ * @var integer status 发票审批状态
|
|
|
+ * @var integer opintion 审批发票的意见
|
|
|
+ * @return string 如操作成功返回审批首页
|
|
|
+ */
|
|
|
+ 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' ) : "";
|
|
|
+ $iid = $this->authcode ( $iid );
|
|
|
+ if (! is_numeric ( $iid ))
|
|
|
+ die ( 'illegal request' );
|
|
|
+
|
|
|
+ if (! empty ( $iid ) && ! empty ( $status ) && ! empty ( $opinion )) {
|
|
|
+ if (! ($status == 2 || $status == 3 || $status == 4))
|
|
|
+ die ( 'illegal request' );
|
|
|
+ Doo::loadModel ( 'invoice' );
|
|
|
+ $invoice = new invoice ();
|
|
|
+ Doo::loadModel ( 'invoiceOperationLog' );
|
|
|
+ $invoiceOperationLog = new invoiceOperationLog ();
|
|
|
|
|
|
- if (!empty($iid)&&!empty($status)&&!empty($opinion)){
|
|
|
- if (!($status==2||$status==3||$status==4))
|
|
|
- die('illegal request');
|
|
|
- Doo::loadModel('invoice');
|
|
|
- $invoice=new invoice();
|
|
|
-
|
|
|
- $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);
|
|
|
-
|
|
|
- if ($status==3){
|
|
|
- $invoice->status=$status;
|
|
|
- //操作日志
|
|
|
- }else{
|
|
|
- if(empty($processApprovals)){//记录下一个IDKEY
|
|
|
- $processApprovals=array($this->staff[0]['sid']=>array('date'=>date("Y-m-d H:i:s"),'opinion'=>$opinion,'status'=>$status));
|
|
|
- if ($status!=4&&isset($invoiceManage[1]))
|
|
|
- $invoice->pendingApprovals=$invoiceManage[1][0];
|
|
|
- $invoice->processApprovals=json_encode($processApprovals);
|
|
|
- }else{
|
|
|
- $processApprovals[$this->staff[0]['sid']]=array('date'=>date("Y-m-d H:i:s"),'opinion'=>$opinion,'status'=>$status);
|
|
|
+ $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 );
|
|
|
+
|
|
|
+ if ($status == 3) {
|
|
|
+ $invoice->status = $status;
|
|
|
+ $item = array (
|
|
|
+ 'operation' => "退回"
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ if (empty ( $processApprovals )) {
|
|
|
+ $processApprovals = array (
|
|
|
+ $this->staff [0] ['sid'] => array (
|
|
|
+ 'date' => date ( "Y-m-d H:i:s" ),
|
|
|
+ 'opinion' => $opinion,
|
|
|
+ 'status' => $status
|
|
|
+ )
|
|
|
+ );
|
|
|
+ if ($status != 4 && isset ( $invoiceManage [1] ))
|
|
|
+ $invoice->pendingApprovals = $invoiceManage [1] [0];
|
|
|
+ $invoice->processApprovals = json_encode ( $processApprovals );
|
|
|
+ } else {
|
|
|
+ $processApprovals [$this->staff [0] ['sid']] = array (
|
|
|
+ 'date' => date ( "Y-m-d H:i:s" ),
|
|
|
+ 'opinion' => $opinion,
|
|
|
+ 'status' => $status
|
|
|
+ );
|
|
|
|
|
|
- $pendingApprovals=0;
|
|
|
- foreach ($invoiceManage as $key=>$value){
|
|
|
- if ($value[0]==$this->staff[0]['sid']){
|
|
|
- if (isset($invoiceManage[$key+1]))
|
|
|
- $pendingApprovals=$invoiceManage[$key+1][0];
|
|
|
+ $pendingApprovals = 0;
|
|
|
+ foreach ( $invoiceManage as $key => $value ) {
|
|
|
+ if ($value [0] == $this->staff [0] ['sid']) {
|
|
|
+ if (isset ( $invoiceManage [$key + 1] ))
|
|
|
+ $pendingApprovals = $invoiceManage [$key + 1] [0];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if($status!=4&&!empty($pendingApprovals))
|
|
|
- $invoice->pendingApprovals=$pendingApprovals;
|
|
|
- $invoice->processApprovals=json_encode($processApprovals);
|
|
|
+ if ($status != 4 && ! empty ( $pendingApprovals ))
|
|
|
+ $invoice->pendingApprovals = $pendingApprovals;
|
|
|
+ $invoice->processApprovals = json_encode ( $processApprovals );
|
|
|
}
|
|
|
|
|
|
- if(count($processApprovals)==count($invoiceManage)&&$status!=4){
|
|
|
- $invoice->status=$status;
|
|
|
- $invoice->pendingApprovals=0;
|
|
|
- }elseif ($status==4)
|
|
|
- $invoice->status=$status;
|
|
|
+ $item = array (
|
|
|
+ 'operation' => "同意"
|
|
|
+ );
|
|
|
+ if (count ( $processApprovals ) == count ( $invoiceManage ) && $status != 4) {
|
|
|
+ $invoice->status = $status;
|
|
|
+ $invoice->pendingApprovals = 0;
|
|
|
+ } elseif ($status == 4) {
|
|
|
+ $invoice->status = $status;
|
|
|
+ $item = array (
|
|
|
+ 'operation' => "终止"
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
- $invoice->updateTime=date("Y-m-d H:i:s");
|
|
|
- $invoice->update(array('where'=>'iid='.$iid));//print_r($processApprovals);
|
|
|
+ $invoice->updateTime = date ( "Y-m-d H:i:s" );
|
|
|
+ $invoice->update ( array (
|
|
|
+ 'where' => 'iid=' . $iid
|
|
|
+ ) );
|
|
|
+
|
|
|
+ $item += array (
|
|
|
+ 'date' => date ( "Y-m-d H:i:s" ),
|
|
|
+ 'img' => $this->staff [0] ['avatar'],
|
|
|
+ 'username' => $this->staff [0] ['username'],
|
|
|
+ 'uid' => $this->staff [0] ['sid'],
|
|
|
+ 'status' => $status,
|
|
|
+ 'iid' => $iid
|
|
|
+ );
|
|
|
+ $invoiceOperationLog->setInvoiceOperationLog ( $item );
|
|
|
|
|
|
return '/invoiceApproval';
|
|
|
}
|
|
|
+ die ( 'illegal request' );
|
|
|
}
|
|
|
-
|
|
|
- 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 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);
|
|
|
+ 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 属性名称
|
|
|
+ *
|
|
|
+ * @param string $name
|
|
|
+ * 属性名称
|
|
|
* @return fixed 值
|
|
|
*/
|
|
|
function get_args($name) {
|
|
@@ -348,7 +452,6 @@ class InvoiceController extends DooController {
|
|
|
return $_GET [$name];
|
|
|
else
|
|
|
return addslashes ( $_GET [$name] );
|
|
|
-
|
|
|
} elseif (isset ( $_POST [$name] )) {
|
|
|
if (is_array ( $_POST [$name] ))
|
|
|
return $_POST [$name];
|
|
@@ -357,71 +460,71 @@ class InvoiceController extends DooController {
|
|
|
} 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 );
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 加密或解密指定字符串
|
|
|
+ *
|
|
|
+ * @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 '';
|
|
|
+ return $keyc . str_replace ( '=', '', base64_encode ( $result ) );
|
|
|
}
|
|
|
- } else {
|
|
|
- return $keyc . str_replace ( '=', '', base64_encode ( $result ) );
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-class ReceiptController{
|
|
|
+class ReceiptController {
|
|
|
public static $NEW = 0;
|
|
|
public static $NEW2 = 0;
|
|
|
}
|