|
@@ -0,0 +1,857 @@
|
|
|
+<?php
|
|
|
+class software_service {
|
|
|
+ private $longle_log;
|
|
|
+ private $action_log;
|
|
|
+
|
|
|
+ private $verify;
|
|
|
+ private $receipt;
|
|
|
+ private $XDeode;
|
|
|
+ private $category;
|
|
|
+ private $staff;
|
|
|
+ function __construct() {
|
|
|
+ Doo::loadModel ( 'cld/longle_log_cld' );
|
|
|
+ $this->longle_log = new longle_log_cld ();
|
|
|
+ Doo::loadModel ( 'cld/action_log_cld' );
|
|
|
+ $this->action_log = new action_log_cld ();
|
|
|
+
|
|
|
+ Doo::loadModel ( 'cld/receipt_cld' );
|
|
|
+ $this->receipt = new receipt_cld ();
|
|
|
+ Doo::loadClass ( 'XDeode' );
|
|
|
+ $this->XDeode = new XDeode ( 9 );
|
|
|
+ Doo::loadModel ( 'receiptDetail' );
|
|
|
+ Doo::loadModel ( 'cld/category_cld' );
|
|
|
+ $this->category = new category_cld ();
|
|
|
+ Doo::loadModel ( 'cld/traveDate_cld' );
|
|
|
+ $this->traveDate_cld = new traveDate_cld ();
|
|
|
+ Doo::loadModel ( 'cld/staff_cld' );
|
|
|
+ $this->staff = new staff_cld ();
|
|
|
+ }
|
|
|
+
|
|
|
+ public function ValidRuleSoftwareCount($data = array()){
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+// 2021-01-2-22开始使用longle_log统计 现在使用action_log来统计
|
|
|
+ public function GetSoftwareCount($data = array()){
|
|
|
+ $list=array();
|
|
|
+ // 初始化表格
|
|
|
+ $result=array(
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-12"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-11"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-10"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-09"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-08"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-07"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-06"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-05"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-04"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-03"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-02"),
|
|
|
+ array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-01"),
|
|
|
+
|
|
|
+// $data['year']."-12"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-12"),
|
|
|
+// $data['year']."-11"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-11"),
|
|
|
+// $data['year']."-10"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-10"),
|
|
|
+// $data['year']."-09"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-09"),
|
|
|
+// $data['year']."-08"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-08"),
|
|
|
+// $data['year']."-07"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-07"),
|
|
|
+// $data['year']."-06"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-06"),
|
|
|
+// $data['year']."-05"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-05"),
|
|
|
+// $data['year']."-04"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-04"),
|
|
|
+// $data['year']."-03"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-03"),
|
|
|
+// $data['year']."-02"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-02"),
|
|
|
+// $data['year']."-01"=>array("lend"=>0,"sale"=>0,"give"=>0,"upgrade"=>0,"date"=>$data['year']."-01"),
|
|
|
+ );
|
|
|
+
|
|
|
+ if (!empty($data['staffId'])){
|
|
|
+ $list=$this->action_log->GetSoftwareCountByStaffId($data['staffId'],$data['year']);
|
|
|
+ }else{
|
|
|
+ if(!empty($data['categoryId'])){
|
|
|
+ $list=$this->action_log->GetSoftwareCountByCategoryId($data['categoryId'],$data['year']);
|
|
|
+ }else{
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// 总数统计
|
|
|
+ foreach ($list as $value){
|
|
|
+ $resultKey=date("Y-m", strtotime($value['updatetime']) );
|
|
|
+ foreach ($result as $k=>$v){
|
|
|
+ if($value['status']==4&&$resultKey==$v["date"]){
|
|
|
+ $result[$k]["lend"]=$result[$k]["lend"]+1;
|
|
|
+ break;
|
|
|
+ }elseif ($value['status']==5&&$resultKey==$v["date"]){
|
|
|
+ $result[$k]["sale"]=$result[$k]["sale"]+1;
|
|
|
+ break;
|
|
|
+ }elseif ($value['status']==6&&$resultKey==$v["date"]){
|
|
|
+ $result[$k]["give"]=$result[$k]["give"]+1;
|
|
|
+ break;
|
|
|
+ }elseif ($value['status']==7&&$resultKey==$v["date"]){
|
|
|
+ $result[$k]["upgrade"]=$result[$k]["upgrade"]+1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 费用 报销单-创建-参数校验
|
|
|
+ public function ValidRuleReceiptCreate($data = array()) {
|
|
|
+ if (empty ( $data ['verifyId'] )) {
|
|
|
+ die ( 'illegal request-请选择审批组' );
|
|
|
+ }
|
|
|
+ $data ['verifyId'] = $this->XDeode->decode ( $data ['verifyId'] );
|
|
|
+ if (! is_numeric ( $data ['verifyId'] )) {
|
|
|
+ die ( 'illegal request-请选择审批组' );
|
|
|
+ }
|
|
|
+
|
|
|
+ if (empty ( $data ['officeId'] )) {
|
|
|
+ die ( 'illegal request-请选择办事处' );
|
|
|
+ }
|
|
|
+ $data ['officeId'] = $this->XDeode->decode ( $data ['officeId'] );
|
|
|
+ if (! is_numeric ( $data ['officeId'] )) {
|
|
|
+ die ( 'illegal request-请选择办事处' );
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($data ['traveData'] == "" && $data ['officeData'] == "" && $data ['trainData'] == "") {
|
|
|
+ die ( 'illegal request-请选择费用类型' );
|
|
|
+ }
|
|
|
+
|
|
|
+ // 字符串转换Json
|
|
|
+ $hasType = 0;
|
|
|
+ if ($data ['traveData'] != "") {
|
|
|
+ $data ['traveJson'] = json_decode ( $data ['traveData'], true );
|
|
|
+ if ($data ['traveJson'] ['show']) {
|
|
|
+ $hasType ++;
|
|
|
+ // 日期合法性检查
|
|
|
+
|
|
|
+ //print_r($data ['traveJson']);die;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($data ['officeData'] != "") {
|
|
|
+ $data ['officeJson'] = json_decode ( $data ['officeData'], true );
|
|
|
+ if ($data ['officeJson'] ['show']) {
|
|
|
+ $hasType ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($data ['trainData'] != "") {
|
|
|
+ $data ['trainJson'] = json_decode ( $data ['trainData'], true );
|
|
|
+ if ($data ['trainJson'] ['show']) {
|
|
|
+ $hasType ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($hasType == 0) {
|
|
|
+ die ( 'illegal request-请选择费用类型' );
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获得费用的细则
|
|
|
+ public function GetAccountItem() {
|
|
|
+ $data = $this->accountItem->GetAll ();
|
|
|
+ $list = array (
|
|
|
+ 'daily' => array (),
|
|
|
+ 'other' => array (),
|
|
|
+ 'trave' => array (),
|
|
|
+ 'train' => array ()
|
|
|
+ );
|
|
|
+ foreach ( $data as $value ) {
|
|
|
+ $value ['price'] = 0;
|
|
|
+ if ($value ['category'] == "日常相关费用") {
|
|
|
+ array_push ( $list ['daily'], $value );
|
|
|
+ }
|
|
|
+ if ($value ['category'] == "其他") {
|
|
|
+ array_push ( $list ['other'], $value );
|
|
|
+ }
|
|
|
+ if ($value ['category'] == "内部培训费用") {
|
|
|
+ array_push ( $list ['train'], $value );
|
|
|
+ }
|
|
|
+ if ($value ['category'] == "差旅相关费用") {
|
|
|
+ $value ['remark'] = "";
|
|
|
+ array_push ( $list ['trave'], $value );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $list;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 审批组
|
|
|
+ public function GetVerifyType($subordinate="",$subordinate2="") {
|
|
|
+ $list = $this->verify->getVerifyBySubordinate($subordinate,$subordinate2);
|
|
|
+ return $list;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获得报销单
|
|
|
+ public function GetReceipt($receiptId) {
|
|
|
+ $detail = $this->receipt->Get ( $receiptId );
|
|
|
+ $detail ['verify'] = $this->XDeode->encode ( $detail ['verify'] );
|
|
|
+ $detail ['cid'] = $this->XDeode->encode ( $detail ['cid'] );
|
|
|
+ $detail ['receiptId'] = $this->XDeode->encode ( $detail ['rid'] );
|
|
|
+
|
|
|
+ //费用结算-用于流水
|
|
|
+ $relust = bcsub ( $detail ['sum'], $detail ['loanSum'], 2 );
|
|
|
+ $detail ['relust'] = $relust;
|
|
|
+ $detail ['relustABS'] = abs ( $relust );
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return $detail;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建报销单
|
|
|
+ public function ReceiptCreate($data, $staff) {
|
|
|
+ $receipt = new receipt_cld ();
|
|
|
+
|
|
|
+ // 1.办事处相关费用
|
|
|
+ $total = 0;
|
|
|
+ if (! empty ( $data ['officeData'] )) {
|
|
|
+ if ($data ['officeJson'] ['show']) {
|
|
|
+ foreach ( $data ['officeJson'] ['daily'] as $value ) {
|
|
|
+ $total = bcadd ( $total, $value ['price'], 2 );
|
|
|
+ }
|
|
|
+ foreach ( $data ['officeJson'] ['other'] as $value ) {
|
|
|
+ $total = bcadd ( $total, $value ['price'], 2 );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 差旅相关费用
|
|
|
+ if (! empty ( $data ['traveData'] )) {
|
|
|
+ if ($data ['traveJson'] ['show']) {
|
|
|
+ foreach ( $data ['traveJson'] ['trave'] as $value ) {
|
|
|
+ $total = bcadd ( $total, $value ['price'], 2 );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 内部培训费用
|
|
|
+ if (! empty ( $data ['trainData'] )) {
|
|
|
+ if ($data ['trainJson'] ['show']) {
|
|
|
+ foreach ( $data ['trainJson'] ['train'] as $value ) {
|
|
|
+ $total = bcadd ( $total, $value ['price'], 2 );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $receipt->officeJson = $data ['officeData'];
|
|
|
+ $receipt->traveJson = $data ['traveData'];
|
|
|
+ $receipt->trainJson = $data ['trainData'];
|
|
|
+
|
|
|
+ $receipt->remittanceName = $data ['remittanceName'];
|
|
|
+ $receipt->bankName = $data ['bankName'];
|
|
|
+ $receipt->bankNumber = $data ['bankNumber'];
|
|
|
+ $receipt->remittanceBankType = $data ['remittanceBankType'];
|
|
|
+ if ($data ['remittanceBankType'] == 1) {
|
|
|
+ $receipt->coupletNumber = $data ['coupletNumber'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $receipt->status = 5;
|
|
|
+ $receipt->date = date ( "Y-m-d" );
|
|
|
+ $receipt->staff = $staff ['sid'];
|
|
|
+ $receipt->cid = $data ['officeId'];
|
|
|
+ $receipt->verify = $data ['verifyId'];
|
|
|
+ $receipt->sum = $total;
|
|
|
+ $receipt->receiptOrder = "#B" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
|
|
|
+
|
|
|
+ Doo::loadModel ( 'execute' );
|
|
|
+ $execute = new execute ();
|
|
|
+ $executeDetail = $execute->getOne ( array (
|
|
|
+ 'where' => 'mold="报销单执行人"',
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+ $receipt->executeCopy = $executeDetail ['staff'];
|
|
|
+ $receipt->version = 1;
|
|
|
+ $rid = $receipt->insert ();
|
|
|
+
|
|
|
+ // 附件
|
|
|
+ if (! empty ( $data ['enclosurFiles'] )) {
|
|
|
+ Doo::loadModel ( 'enclosur' );
|
|
|
+ $data ['enclosurFiles'] = json_decode ( $data ['enclosurFiles'], true );
|
|
|
+ foreach ( $data ['enclosurFiles'] as $value ) {
|
|
|
+ $enclosur = new enclosur ();
|
|
|
+ $enclosur->name = $value ['path'];
|
|
|
+ $enclosur->rid = $rid;
|
|
|
+ $enclosur->insert ();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建报销单详情
|
|
|
+ $this->makeReceiptDetailCreate ( $data, $staff, $rid );
|
|
|
+
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ // 编辑报销单
|
|
|
+ public function ReceiptEdi($data, $staff) {
|
|
|
+ $receiptId = $this->XDeode->decode ( $data ['receiptId'] );
|
|
|
+ if (! is_numeric ( $receiptId )) {
|
|
|
+ die ( 'illegal request-找不到该报销单-参数不正确' );
|
|
|
+ }
|
|
|
+ $detail = $this->receipt->Get ( $receiptId );
|
|
|
+ if (empty ( $detail )) {
|
|
|
+ die ( 'illegal request-找不到该报销单' );
|
|
|
+ }
|
|
|
+
|
|
|
+ $receipt = new receipt_cld ();
|
|
|
+ // 1.办事处相关费用
|
|
|
+ $total = 0;
|
|
|
+ if (! empty ( $data ['officeData'] )) {
|
|
|
+ if ($data ['officeJson'] ['show']) {
|
|
|
+ foreach ( $data ['officeJson'] ['daily'] as $value ) {
|
|
|
+ $total = bcadd ( $total, $value ['price'], 2 );
|
|
|
+ }
|
|
|
+ foreach ( $data ['officeJson'] ['other'] as $value ) {
|
|
|
+ $total = bcadd ( $total, $value ['price'], 2 );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 差旅相关费用
|
|
|
+ if (! empty ( $data ['traveData'] )) {
|
|
|
+ if ($data ['traveJson'] ['show']) {
|
|
|
+ foreach ( $data ['traveJson'] ['trave'] as $value ) {
|
|
|
+ $total = bcadd ( $total, $value ['price'], 2 );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 内部培训费用
|
|
|
+ if (! empty ( $data ['trainData'] )) {
|
|
|
+ if ($data ['trainJson'] ['show']) {
|
|
|
+ foreach ( $data ['trainJson'] ['train'] as $value ) {
|
|
|
+ $total = bcadd ( $total, $value ['price'], 2 );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $receipt->officeJson = $data ['officeData'];
|
|
|
+ $receipt->traveJson = $data ['traveData'];
|
|
|
+ $receipt->trainJson = $data ['trainData'];
|
|
|
+
|
|
|
+ $receipt->remittanceName = $data ['remittanceName'];
|
|
|
+ $receipt->bankName = $data ['bankName'];
|
|
|
+ $receipt->bankNumber = $data ['bankNumber'];
|
|
|
+ $receipt->remittanceBankType = $data ['remittanceBankType'];
|
|
|
+ if ($data ['remittanceBankType'] == 1) {
|
|
|
+ $receipt->coupletNumber = $data ['coupletNumber'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $receipt->cid = $data ['officeId'];
|
|
|
+ if($data ['status']!=4){
|
|
|
+ $receipt->verify = $data ['verifyId'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $receipt->sum = $total;
|
|
|
+
|
|
|
+ Doo::loadModel ( 'execute' );
|
|
|
+ $execute = new execute ();
|
|
|
+ $executeDetail = $execute->getOne ( array (
|
|
|
+ 'where' => 'mold="报销单执行人"',
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+ $receipt->executeCopy = $executeDetail ['staff'];
|
|
|
+ $receipt->rid = $receiptId;
|
|
|
+ $receipt->update ();
|
|
|
+
|
|
|
+ // 先删除
|
|
|
+ $receiptDetail = new receiptDetail ();
|
|
|
+ $receiptDetail->delete ( array (
|
|
|
+ 'where' => 'rid=' . $receiptId
|
|
|
+ ) );
|
|
|
+ // 新增报销单详情
|
|
|
+ $this->makeReceiptDetailCreate ( $data, $staff, $receiptId );
|
|
|
+
|
|
|
+ // 附件
|
|
|
+ if (! empty ( $data ['enclosurFiles'] )) {
|
|
|
+ Doo::loadModel ( 'enclosur' );
|
|
|
+ $data ['enclosurFiles'] = json_decode ( $data ['enclosurFiles'], true );
|
|
|
+ foreach ( $data ['enclosurFiles'] as $value ) {
|
|
|
+ $enclosur = new enclosur ();
|
|
|
+ $enclosur->name = $value ['path'];
|
|
|
+ $enclosur->rid = $receiptId;
|
|
|
+ $enclosur->insert ();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新借款报销单数据
|
|
|
+ public function LoanReceiptEdi($receiptId){
|
|
|
+ $receiptId = $this->XDeode->decode ( $receiptId );
|
|
|
+ if (! is_numeric ( $receiptId )) {
|
|
|
+ die ( 'illegal request-找不到该报销单-参数不正确' );
|
|
|
+ }
|
|
|
+ $detail = $this->receipt->Get ( $receiptId );
|
|
|
+ if (empty ( $detail )) {
|
|
|
+ die ( 'illegal request-找不到该报销单' );
|
|
|
+ }
|
|
|
+
|
|
|
+ $receipt = new receipt_cld ();
|
|
|
+ if ($detail['status']!=7){
|
|
|
+ $receipt->loanSum = $detail ['sum'];
|
|
|
+ }
|
|
|
+ $receipt->date = date ( "Y-m-d" );
|
|
|
+ $receipt->pastDate = '0000-00-00';
|
|
|
+ $receipt->verifyStaff = '';
|
|
|
+ $receipt->executeStaff = '';
|
|
|
+ $receipt->status = 7;
|
|
|
+ $receipt->version = 1;
|
|
|
+ $receipt->rid = $receiptId;
|
|
|
+ $receipt->update ();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获得借款报销单
|
|
|
+ public function GetLoanReceipt($loanReceiptId) {
|
|
|
+ Doo::loadModel ( 'loanReceipt' );
|
|
|
+ $loanReceipt = new loanReceipt ();
|
|
|
+ $loan = $loanReceipt->getOne ( array (
|
|
|
+ 'where' => 'rid=' . $loanReceiptId,
|
|
|
+ 'desc' => 'rid',
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+
|
|
|
+ $categoryDetil = $this->category->getOne ( array (
|
|
|
+ 'where' => 'cid=' . $loan ['cid'],
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+ $loan ['category'] = $categoryDetil ['title'];
|
|
|
+ $loan ['accountItem'] = json_decode ( $loan ['accountItem'], true );
|
|
|
+ $loan ['loanItem'] = json_decode ( $loan ['loanItem'], true );
|
|
|
+ $loan ['BIGsum'] = $this->num_to_rmb ( $loan ['sum'] );
|
|
|
+
|
|
|
+ $loan ['verifyList'] = $this->makeVerifyProcess ( $loan ['verify'], $loan ['verifyStaff'] );
|
|
|
+
|
|
|
+ return $loan;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获得差旅日期
|
|
|
+ public function GetTraveDateAll($sid){
|
|
|
+ $traveData=$this->traveDate_cld->GetAllBySid($sid);
|
|
|
+ $data=array();
|
|
|
+
|
|
|
+ foreach ($traveData as $key=>$value){
|
|
|
+ if(!empty($value['start'])&&!empty($value['end'])){
|
|
|
+ array_push($data, array(strtotime($value['start']),strtotime($value['end'])));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ //费用分页
|
|
|
+ public function GetFeePage($data=array()){
|
|
|
+ if (!empty($data['categoryId'])){
|
|
|
+ $data['categoryId']=$this->XDeode->decode($data['categoryId']);
|
|
|
+ }
|
|
|
+ if (!empty($data['staffId'])){
|
|
|
+ $data['staffId']=$this->XDeode->decode($data['staffId']);
|
|
|
+ }
|
|
|
+ if(empty($data['year'])){
|
|
|
+ $data['year']=date ( "Y" );
|
|
|
+ }
|
|
|
+ if(!is_numeric($data['pSize'])){
|
|
|
+ $data['pSize']=20;
|
|
|
+ }
|
|
|
+ if(!is_numeric($data['cPage'])){
|
|
|
+ $data['cPage']=0;
|
|
|
+ }else{
|
|
|
+ $data['cPage']=( $data['cPage']-1) * $data['pSize'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $data=$this->receipt->GetPage($data);
|
|
|
+ //获得办事处信息
|
|
|
+ $office=$this->category->GetAll();
|
|
|
+ //获得员工信息
|
|
|
+ $staffList=$this->staff->find(array('asArray' => TRUE));
|
|
|
+
|
|
|
+ foreach ($data['list'] as $key=>$value){
|
|
|
+ $data['list'][$key]['ridOld']=$value['rid'];
|
|
|
+ $data['list'][$key]['rid']=$this->XDeode->encode($value['rid']);
|
|
|
+ $data['list'][$key]['cid']=$this->XDeode->encode($value['cid']);
|
|
|
+ $data['list'][$key]['staff']=$this->XDeode->encode($value['staff']);
|
|
|
+ $data['list'][$key]['categoryValue']="";
|
|
|
+ $data['list'][$key]['statusValue']=$this->feeStatusValue[$value['status']];
|
|
|
+ foreach ($office as $k=>$v){
|
|
|
+ if($v['cid']==$data['list'][$key]['cid']){
|
|
|
+ $data['list'][$key]['categoryValue']=$v['title'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data['list'][$key]['staffName']="";
|
|
|
+ foreach ($staffList as $k=>$v){
|
|
|
+ if($v['sid']==$value['staff']){
|
|
|
+ $data['list'][$key]['staffName']=$v['username'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data['list'][$key]['Rtype']=$this->feeTypeValue[$value['Rtype']];
|
|
|
+ if($this->getFeeLoanType($value)){
|
|
|
+ $data['list'][$key]['Rtype'].="报销单";
|
|
|
+ }
|
|
|
+
|
|
|
+ if($value['pastDate']=="0000-00-00"){
|
|
|
+ $data['list'][$key]['pastDate']="";
|
|
|
+ }
|
|
|
+
|
|
|
+ if($value['version']==1){
|
|
|
+ $data['list'][$key]['explanation']=$this->getReceiptVerson1Explanation($value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ private $feeTypeValue=array(
|
|
|
+ 0=>"报销单",
|
|
|
+ 1=>"借款",
|
|
|
+ 2=>"对公汇款",
|
|
|
+ 3=>"培训班费用",
|
|
|
+ );
|
|
|
+
|
|
|
+ private $feeStatusValue=array(
|
|
|
+ 1=>"待执行",
|
|
|
+ 2=>"审批中",
|
|
|
+ 3=>"终止",
|
|
|
+ 4=>"撤回",
|
|
|
+ 5=>"待提交",
|
|
|
+ 6=>"待执行",
|
|
|
+ 7=>"待提交",
|
|
|
+ 8=>"执行完成",
|
|
|
+ 9=>"执行完成",
|
|
|
+ 10=>"已锁定",
|
|
|
+ );
|
|
|
+
|
|
|
+ //获得借款-报销单类型 0借款 1借款报销单
|
|
|
+ private function getFeeLoanType($value){
|
|
|
+ $type=0;
|
|
|
+ if($value['Rtype']==1){
|
|
|
+ if($value['version']==1){
|
|
|
+ $type=1;
|
|
|
+ }else{
|
|
|
+ if(!empty($value['accountItem'])){
|
|
|
+ $type=1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $type;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获得新版报销单费用说明
|
|
|
+ private function getReceiptVerson1Explanation($value){
|
|
|
+ $version_1_explanation="";
|
|
|
+ if($value['version']==1){
|
|
|
+ if(!empty($value['officeJson'])){
|
|
|
+ $officeJson=json_decode($value['officeJson'],true);
|
|
|
+ $version_1_explanation.=$officeJson['officeExplain'][0]['officeExplain']."\n";
|
|
|
+ }
|
|
|
+ if(!empty($value['traveJson'])){
|
|
|
+ $traveJson=json_decode($value['traveJson'],true);
|
|
|
+ $version_1_explanation.=$traveJson['traveExplain'][0]['traveExplain']."\n";
|
|
|
+ }
|
|
|
+ if(!empty($value['trainJson'])){
|
|
|
+ $trainJson=json_decode($value['trainJson'],true);
|
|
|
+ $version_1_explanation.=$trainJson['trainExplain'][0]['trainExplain']."\n";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $version_1_explanation;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获得审批流程
|
|
|
+ private function makeVerifyProcess($verifyId, $verifyStaff) {
|
|
|
+ // 检测编辑状态
|
|
|
+ $verifyList = $this->verify->getOne ( array (
|
|
|
+ 'where' => 'vid=' . $verifyId,
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+ $verifyList = json_decode ( $verifyList ['staff'], true ); // status opinion
|
|
|
+ $verifyStaff = json_decode ( $verifyStaff, true );
|
|
|
+
|
|
|
+ Doo::loadModel ( 'role' );
|
|
|
+ $role = new role ();
|
|
|
+ Doo::loadModel ( 'staff' );
|
|
|
+ $staff = new staff ();
|
|
|
+
|
|
|
+ $flag = true;
|
|
|
+ $roleKey = 0;
|
|
|
+ $endStaffArray = array ();
|
|
|
+ $roleArrayCopy = array ();
|
|
|
+ foreach ( $verifyList as $k => $v ) {
|
|
|
+ // init verifyStaff
|
|
|
+
|
|
|
+ if ($v [1] == 'ROLE') {
|
|
|
+
|
|
|
+ if (! empty ( $verifyStaff )) {
|
|
|
+ $endStaffArray = end ( $verifyStaff );
|
|
|
+ // if ($v[0]==$endStaffArray['nextStaff']){
|
|
|
+ // $roleId=$v[0];
|
|
|
+ // }
|
|
|
+ }
|
|
|
+
|
|
|
+ $roleVerify = json_decode ( $v [3], true );
|
|
|
+ $roleKey = $k;
|
|
|
+ $roleArray = array ();
|
|
|
+ $rolename = $role->getOne ( array (
|
|
|
+ 'where' => 'rid=' . $v [0],
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+
|
|
|
+ foreach ( $roleVerify as $o => $p ) {
|
|
|
+ $staffID = explode ( '_', $p );
|
|
|
+ $staffInfo = $staff->getOne ( array (
|
|
|
+ 'where' => 'sid=' . $staffID [0],
|
|
|
+ 'asArray' => true
|
|
|
+ ) );
|
|
|
+ // print_r($staffID);
|
|
|
+ $exp = array (
|
|
|
+ 0 => $staffInfo ['sid'],
|
|
|
+ 1 => $staffID [1],
|
|
|
+ 2 => $staffInfo ['avatar'],
|
|
|
+ 'date' => '',
|
|
|
+ 'date' => '',
|
|
|
+ 'opinion' => '',
|
|
|
+ 'status' => '',
|
|
|
+ 'rolename' => $rolename ['name']
|
|
|
+ );
|
|
|
+ array_push ( $roleArray, $exp );
|
|
|
+ }
|
|
|
+ $roleArrayCopy [$v [0]] = $roleArray;
|
|
|
+ // $verifyList[$k]['roleArray']=$roleArray;
|
|
|
+ }
|
|
|
+
|
|
|
+ $verifyList [$k] ['date'] = "";
|
|
|
+ $verifyList [$k] ['opinion'] = "";
|
|
|
+ $verifyList [$k] ['status'] = "";
|
|
|
+ if (empty ( $verifyStaff )) {
|
|
|
+ $verifyList [$k] ['date'] = "";
|
|
|
+ $verifyList [$k] ['opinion'] = "";
|
|
|
+ if (($verifyList [0] [0] == $this->staff [0] ['sid']) && $flag) {
|
|
|
+ $verifyList [$k] ['status'] = 4;
|
|
|
+ $flag = false;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+
|
|
|
+ foreach ( $verifyStaff as $m => $u ) {
|
|
|
+ if ($v [0] == $m) {
|
|
|
+ $verifyList [$k] ['date'] = $u ['date'];
|
|
|
+ $verifyList [$k] ['opinion'] = $u ['opinion'];
|
|
|
+ $verifyList [$k] ['status'] = $u ['status'];
|
|
|
+ $flag = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $endStaffArray = end ( $verifyStaff );
|
|
|
+ if (isset ( $endStaffArray ['ROLE'] )) {
|
|
|
+ } else {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $rolename ['name'] = '';
|
|
|
+
|
|
|
+ if (! empty ( $verifyStaff ))
|
|
|
+ $endStaffArray = end ( $verifyStaff );
|
|
|
+
|
|
|
+ $KOP = false;
|
|
|
+ foreach ( $roleArrayCopy as $P => $A ) {
|
|
|
+
|
|
|
+ foreach ( $A as $MKI => $AVL ) {
|
|
|
+ if (! empty ( $verifyStaff )) {
|
|
|
+ // &&$rolename['rid']==$endStaffArray['nextStaff']
|
|
|
+ if ($this->staff [0] ['sid'] == $AVL [0] && isset ( $endStaffArray ['ROLE'] ) && $rolename ['rid'] == $endStaffArray ['nextStaff']) {
|
|
|
+ $button = 4;
|
|
|
+ $roleArrayCopy [$P] [$MKI] ['status'] = 4;
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach ( $verifyStaff as $m => $u ) {
|
|
|
+ $AVLFK = $AVL [0] . '_R';
|
|
|
+ // echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo '<br/>';
|
|
|
+
|
|
|
+ if (strcmp ( $AVLFK, $m ) == 0) { // &&isset($u['ROLE'])&&$u['ROLE']==1
|
|
|
+ $roleArrayCopy [$P] [$MKI] ['date'] = $u ['date'];
|
|
|
+ $roleArrayCopy [$P] [$MKI] ['opinion'] = $u ['opinion'];
|
|
|
+ $roleArrayCopy [$P] [$MKI] ['status'] = $u ['status'];
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+
|
|
|
+ if ($this->staff [0] ['sid'] == $AVL [0] && $verifyList [0] [1] == 'ROLE') {
|
|
|
+ $button = 4;
|
|
|
+ $roleArrayCopy [$P] [$MKI] ['status'] = 4;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // $roleArray[$MKI]['rolename']=$rolename['name'];
|
|
|
+ $KOP = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach ( $roleArrayCopy as $k => $v ) {
|
|
|
+ foreach ( $verifyList as $m => $n ) {
|
|
|
+ if ($n [0] == $k) {
|
|
|
+ array_splice ( $verifyList, $m, 1, $v );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $verifyList;
|
|
|
+ }
|
|
|
+ private function makeReceiptDetailCreate($data, $staff, $rid) {
|
|
|
+
|
|
|
+ // 报销单详情
|
|
|
+ if (! empty ( $data ['officeData'] )) {
|
|
|
+ if ($data ['officeJson'] ['show']) {
|
|
|
+ foreach ( $data ['officeJson'] ['daily'] as $value ) {
|
|
|
+ if ($value ['price'] != 0) {
|
|
|
+ $itemData = array (
|
|
|
+ "staff" => $staff ['sid'],
|
|
|
+ "itemCategory" => $value ['category'],
|
|
|
+ "item" => $value ['name'],
|
|
|
+ "price" => $value ['price'],
|
|
|
+ "date" => date ( "Y-m-d" ),
|
|
|
+ "cid" => $data ['officeId'],
|
|
|
+ "rid" => $rid,
|
|
|
+ "status" => 4
|
|
|
+ );
|
|
|
+ $this->ReceiptDetailCreate ( $itemData );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ foreach ( $data ['officeJson'] ['other'] as $value ) {
|
|
|
+ if ($value ['price'] != 0) {
|
|
|
+ $itemData = array (
|
|
|
+ "staff" => $staff ['sid'],
|
|
|
+ "itemCategory" => $value ['category'],
|
|
|
+ "item" => $value ['name'],
|
|
|
+ "price" => $value ['price'],
|
|
|
+ "date" => date ( "Y-m-d" ),
|
|
|
+ "cid" => $data ['officeId'],
|
|
|
+ "rid" => $rid,
|
|
|
+ "status" => 4
|
|
|
+ );
|
|
|
+ $this->ReceiptDetailCreate ( $itemData );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 差旅相关费用
|
|
|
+ if (! empty ( $data ['traveData'] )) {
|
|
|
+ if ($data ['traveJson'] ['show']) {
|
|
|
+ foreach ( $data ['traveJson'] ['trave'] as $value ) {
|
|
|
+ if ($value ['price'] != 0) {
|
|
|
+ $itemData = array (
|
|
|
+ "staff" => $staff ['sid'],
|
|
|
+ "itemCategory" => $value ['category'],
|
|
|
+ "item" => $value ['name'],
|
|
|
+ "price" => $value ['price'],
|
|
|
+ "date" => date ( "Y-m-d" ),
|
|
|
+ "cid" => $data ['officeId'],
|
|
|
+ "rid" => $rid,
|
|
|
+ "status" => 4
|
|
|
+ );
|
|
|
+ $this->ReceiptDetailCreate ( $itemData );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 内部培训费用
|
|
|
+ if (! empty ( $data ['trainData'] )) {
|
|
|
+ if ($data ['trainJson'] ['show']) {
|
|
|
+ foreach ( $data ['trainJson'] ['train'] as $value ) {
|
|
|
+ if ($value ['price'] != 0) {
|
|
|
+ $itemData = array (
|
|
|
+ "staff" => $staff ['sid'],
|
|
|
+ "itemCategory" => $value ['category'],
|
|
|
+ "item" => $value ['name'],
|
|
|
+ "price" => $value ['price'],
|
|
|
+ "date" => date ( "Y-m-d" ),
|
|
|
+ "cid" => $data ['officeId'],
|
|
|
+ "rid" => $rid,
|
|
|
+ "status" => 4
|
|
|
+ );
|
|
|
+ $this->ReceiptDetailCreate ( $itemData );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增报销单详情
|
|
|
+ public function ReceiptDetailCreate($data = array()) {
|
|
|
+ $receiptDetail = new receiptDetail ();
|
|
|
+ $receiptDetail->staff = $data ['staff'];
|
|
|
+ $receiptDetail->item = $data ['item'];
|
|
|
+ $receiptDetail->itemCategory = $data ['itemCategory'];
|
|
|
+ $receiptDetail->price = $data ['price'];
|
|
|
+ $receiptDetail->date = $data ['date'];
|
|
|
+ $receiptDetail->cid = $data ['cid'];
|
|
|
+ $receiptDetail->rid = $data ['rid'];
|
|
|
+ $receiptDetail->status = $data ['status'];
|
|
|
+ $receiptDetail->insert ();
|
|
|
+ }
|
|
|
+ public function num_to_rmb($num) {
|
|
|
+ $c1 = "零壹贰叁肆伍陆柒捌玖";
|
|
|
+ $c2 = "分角元拾佰仟万拾佰仟亿";
|
|
|
+ // 精确到分后面就不要了,所以只留两个小数位
|
|
|
+ $num = round ( $num, 2 );
|
|
|
+ // 将数字转化为整数
|
|
|
+ $num = $num * 100;
|
|
|
+ if (strlen ( $num ) > 10) {
|
|
|
+ return "金额太大,请检查";
|
|
|
+ }
|
|
|
+ $i = 0;
|
|
|
+ $c = "";
|
|
|
+ while ( 1 ) {
|
|
|
+ if ($i == 0) {
|
|
|
+ // 获取最后一位数字
|
|
|
+ $n = substr ( $num, strlen ( $num ) - 1, 1 );
|
|
|
+ } else {
|
|
|
+ $n = $num % 10;
|
|
|
+ }
|
|
|
+ // 每次将最后一位数字转化为中文
|
|
|
+ $p1 = substr ( $c1, 3 * $n, 3 );
|
|
|
+ $p2 = substr ( $c2, 3 * $i, 3 );
|
|
|
+
|
|
|
+ if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {
|
|
|
+ $c = $p1 . $p2 . $c;
|
|
|
+ } else {
|
|
|
+ $c = $p1 . $c;
|
|
|
+ }
|
|
|
+ $i = $i + 1;
|
|
|
+ // 去掉数字最后一位了
|
|
|
+
|
|
|
+ $num = $num / 10;
|
|
|
+ // echo $num.'</br>';
|
|
|
+ $num = ( int ) $num;
|
|
|
+ // $num =floor($num);
|
|
|
+ // $num = round ( $num, 0, PHP_ROUND_HALF_DOWN );
|
|
|
+ // echo $num.'</br>';
|
|
|
+ // 结束循环
|
|
|
+ if ($num == 0) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // echo $c.'</br>';
|
|
|
+ $j = 0;
|
|
|
+ $slen = strlen ( $c );
|
|
|
+ while ( $j < $slen ) {
|
|
|
+ // utf8一个汉字相当3个字符
|
|
|
+ $m = substr ( $c, $j, 6 );
|
|
|
+ // 处理数字中很多0的情况,每次循环去掉一个汉字“零”
|
|
|
+ if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {
|
|
|
+ $left = substr ( $c, 0, $j );
|
|
|
+ $right = substr ( $c, $j + 3 );
|
|
|
+ $c = $left . $right;
|
|
|
+ $j = $j - 3;
|
|
|
+ $slen = $slen - 3;
|
|
|
+ }
|
|
|
+ $j = $j + 3;
|
|
|
+ }
|
|
|
+ // 这个是为了去掉类似23.0中最后一个“零”字
|
|
|
+ if (substr ( $c, strlen ( $c ) - 3, 3 ) == '零') {
|
|
|
+ $c = substr ( $c, 0, strlen ( $c ) - 3 );
|
|
|
+ }
|
|
|
+ // 将处理的汉字加上“整”
|
|
|
+ if (empty ( $c )) {
|
|
|
+ return "零元整";
|
|
|
+ } else {
|
|
|
+ return $c . "整";
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+?>
|