fee_controller.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. <?php
  2. /*
  3. * @description: 费用管理控制类 @Author: CP @Date: 2020-11-11 17:51:05 @FilePath: \cld\protected\controller\fee\fee_controller.php
  4. */
  5. require "protected/services/fee_service.php";
  6. require "protected/services/region_service.php";
  7. require "protected/services/office_service.php";
  8. require "protected/class/comm_cld.php";
  9. class fee_controller extends DooController {
  10. private $staff;
  11. private $verifyId;
  12. private $executeId;
  13. private $feeService;
  14. private $regionService;
  15. private $officeService;
  16. public function beforeRun($resource, $action) {
  17. $this->accessAuth ( $resource, $action );
  18. }
  19. function __construct() {
  20. $this->session ();
  21. $this->feeService = new fee_service ();
  22. $this->regionService = new region_service ();
  23. $this->officeService = new office_service ();
  24. }
  25. // 访问权限-费用管理
  26. private function accessAuth($resource, $action) {
  27. Doo::loadClass ( 'XDeode' );
  28. $XDeode = new XDeode ( 5 );
  29. $sid = $XDeode->decode ( $_COOKIE ["staff"] );
  30. // 1.单独判断公司汇总的访问权限
  31. if ($action == 'companyCategoryCollect') {
  32. Doo::loadModel ( "receiptAuthorityManage" );
  33. $invoiceCompanyManage = new receiptAuthorityManage ();
  34. $icm = $invoiceCompanyManage->getInvoiceCMByStaff ( $sid );
  35. if (empty ( $icm ))
  36. die ( 'illegal request-无权访问该页面' );
  37. }
  38. // 2.获得登陆用户信息
  39. Doo::loadModel ( 'cld/staff_cld' );
  40. $staff = new staff_cld ();
  41. $this->staff = $staff->Get ( $sid );
  42. // 3.是否有权限访问
  43. $accessModular = 'RECEIPTS';
  44. if (empty ( $this->staff ['cldAccessArray'] )) {
  45. die ( 'illegal request-无权访问费用页面,向总部申请权限' );
  46. } else {
  47. if (in_array ( $accessModular, $this->staff ['cldAccessArray'] )) {
  48. if (Doo::acl ()->isAllowed ( $accessModular, $resource, $action )) {
  49. $flag = true;
  50. } else {
  51. $flag = false;
  52. }
  53. } else {
  54. die ( 'illegal request-无权访问费用页面' );
  55. }
  56. }
  57. if (! $flag)
  58. die ( 'illegal request-无权访问费用页面' );
  59. }
  60. // 登陆判定
  61. private function session() {
  62. if (isset ( $_COOKIE ["staff"] )) {
  63. if (! empty ( $_COOKIE ["staff"] )) {
  64. Doo::loadModel ( 'staff' );
  65. Doo::loadModel ( 'verify' );
  66. $verify = new verify ();
  67. $staff = new staff ();
  68. Doo::loadModel ( "execute" );
  69. $execute = new execute ();
  70. $verifyList = $verify->find ( array (
  71. 'select' => 'staff',
  72. 'asArray' => true
  73. ) );
  74. $list = array ();
  75. // 判断角色的审批权限
  76. foreach ( $verifyList as $key => $value ) {
  77. $ver = json_decode ( $value ['staff'] );
  78. foreach ( $ver as $k => $v ) {
  79. if ($v [1] == 'ROLE') {
  80. $roleList = json_decode ( $v [3] );
  81. foreach ( $roleList as $t => $g ) {
  82. $gList = explode ( "_", $g );
  83. array_push ( $list, $gList [0] );
  84. // print_r($list);
  85. }
  86. } else
  87. array_push ( $list, $v [0] );
  88. }
  89. }
  90. // 判断执行人的审批权限
  91. $executeList = $execute->find ( array (
  92. 'where' => 'mold !="日常收支"',
  93. 'select' => 'staff',
  94. 'asArray' => true
  95. ) );
  96. $list2 = array ();
  97. foreach ( $executeList as $key => $value ) {
  98. $ver = json_decode ( $value ['staff'] );
  99. foreach ( $ver as $k => $v ) {
  100. array_push ( $list2, $v [0] );
  101. }
  102. }
  103. $eidList = file_get_contents ( "protected/config/execute/execute.ini" );
  104. $eidList = array_filter ( explode ( ",", $eidList ) );
  105. $this->executeId = array_merge ( $list2, $eidList );
  106. // print_r($this->executeId);
  107. $this->verifyId = $list;
  108. // $this->staff = $staff->getUserByIdList ( $_COOKIE ["staff"] );
  109. return "/";
  110. }
  111. }
  112. Doo::loadCore ( 'uri/DooUriRouter' );
  113. $router = new DooUriRouter ();
  114. $routeRs = $router->execute ( Doo::app ()->route, Doo::conf ()->SUBFOLDER );
  115. if ($routeRs ['1'] != "login") {
  116. header ( 'Content-Type:text/html;charset=utf-8' );
  117. @header ( "Location: /login" );
  118. }
  119. }
  120. // 构建申请报销单页面
  121. public function GetViewReceiptCreate() {
  122. // 请求
  123. $data ['action'] = "/receipt/create";
  124. // 费用 项目细则
  125. $accountItem = $this->feeService->GetAccountItem ();
  126. $data ['accountItem'] = json_encode ( $accountItem );
  127. // 地区
  128. $region = $this->regionService->GetRegionTwo ();
  129. $data ['region'] = json_encode ( $region );
  130. // 审批
  131. $data ['verify'] = json_encode ( $this->feeService->GetVerify () );
  132. // 办事处
  133. $data ['office'] = $this->officeService->GetAll ();
  134. // 默认办事处
  135. $data ['officeId'] = $this->staff ['cid'];
  136. //设置默认差旅地区
  137. $traveDefault=$this->makeTraveDefault($region);
  138. $data['defaultTraveProvince']=$traveDefault['defaultTraveProvince'];
  139. $data['defaultTraveProvinceIndex']=$traveDefault['defaultTraveProvinceIndex'];
  140. // $defaultTraveProvince="";
  141. // if($this->staff['category']=="总部"){
  142. // $defaultTraveProvince="广东省";
  143. // }else{
  144. // $defaultTraveProvince=str_replace("办","省",$this->staff['category']);
  145. // }
  146. // $data['defaultTraveProvince']=$defaultTraveProvince;
  147. // // 获得二级地区的index
  148. // $defaultTraveProvinceIndex=0;
  149. // foreach ($region as $key=>$value){
  150. // if($value['name']==$defaultTraveProvince){
  151. // $defaultTraveProvinceIndex=$key;
  152. // }
  153. // }
  154. // $data['defaultTraveProvinceIndex']=$defaultTraveProvinceIndex;
  155. // 附件
  156. $data ['enclosurList'] = array ();
  157. $data ['staff'] = $this->staff;
  158. $data ['verifyId'] = $this->verifyId;
  159. $data ['executeId'] = $this->executeId;
  160. $data ['receiptMemu'] = 'saeaBorad';
  161. $data ['memu'] = "receipt";
  162. $this->render ( "/fee/create/receipt", $data );
  163. }
  164. // 编辑保险单
  165. public function GetViewReceiptEdit() {
  166. $receiptId = isset ( $this->params ['receiptId'] ) ? $this->params ['receiptId'] : '';
  167. if (empty ( $receiptId )) {
  168. die ( 'illegal request-请求参数错误,重新请求' );
  169. }
  170. $receiptId = GetDecryptId ( $receiptId );
  171. $detail = $this->feeService->GetReceipt ( $receiptId );
  172. // 附件相关
  173. Doo::loadModel ( 'enclosur' );
  174. $enclosur = new enclosur ();
  175. $data ['enclosurList'] = $enclosur->getEnclosurByRid ( $detail ['rid'] );
  176. // 费用 项目细则
  177. $accountItem = $this->feeService->GetAccountItem ();
  178. $data ['accountItem'] = json_encode ( $accountItem );
  179. // 报销单数据
  180. $data ['data'] = json_encode ( $this->makeReceiptEdiData ( $detail, $accountItem, $this->feeService->GetVerify () ) );
  181. // 请求
  182. $data ['action'] = "/receipt/edit";
  183. // 地区
  184. $region = $this->regionService->GetRegionTwo ();
  185. $data ['region'] = json_encode ( $region );
  186. // 审批
  187. $data ['verify'] = "[]";
  188. // 办事处
  189. $data ['office'] = $this->officeService->GetAll ();
  190. // 默认办事处
  191. $data ['officeId'] = $detail ['cid'];
  192. $data ['receiptId'] = $detail ['receiptId'];
  193. //设置默认差旅地区
  194. $traveDefault=$this->makeTraveDefault($region);
  195. $data['defaultTraveProvince']=$traveDefault['defaultTraveProvince'];
  196. $data['defaultTraveProvinceIndex']=$traveDefault['defaultTraveProvinceIndex'];
  197. $data ['staff'] = $this->staff;
  198. $data ['verifyId'] = $this->verifyId;
  199. $data ['executeId'] = $this->executeId;
  200. $data ['receiptMemu'] = 'saeaBorad';
  201. $data ['memu'] = "receipt";
  202. $this->render ( "/fee/create/receipt", $data );
  203. }
  204. // 创建报销单
  205. public function PostReceiptCreate() {
  206. // 1.获得参数
  207. $data = array (
  208. "officeData" => get_args ( 'officeData' ),
  209. "traveData" => get_args ( 'traveData' ),
  210. "trainData" => get_args ( 'trainData' ),
  211. "enclosurFiles" => get_args ( 'enclosurFiles' ),
  212. "verifyId" => get_args ( 'verifyId' ),
  213. "officeId" => get_args ( 'officeId' ),
  214. "remittanceName" => get_args ( 'remittanceName' ),
  215. "remittanceBankType" => get_args ( 'remittanceBankType' ),
  216. "bankName" => get_args ( 'bankName' ),
  217. "bankNumber" => get_args ( 'bankNumber' ),
  218. "coupletNumber" => get_args ( 'coupletNumber' )
  219. );
  220. // 2.参数校验
  221. $data = $this->feeService->ValidRuleReceiptCreate ( $data );
  222. // 3.具体数据处理
  223. $msg = $this->feeService->ReceiptCreate ( $data, $this->staff );
  224. return "/saeaBorad";
  225. }
  226. // 更新报销单
  227. public function PostReceiptEdit() {
  228. // 1.获得参数
  229. $data = array (
  230. "receiptId" => get_args ( 'receiptId' ),
  231. "officeData" => get_args ( 'officeData' ),
  232. "traveData" => get_args ( 'traveData' ),
  233. "trainData" => get_args ( 'trainData' ),
  234. "enclosurFiles" => get_args ( 'enclosurFiles' ),
  235. "verifyId" => get_args ( 'verifyId' ),
  236. "officeId" => get_args ( 'officeId' ),
  237. "remittanceName" => get_args ( 'remittanceName' ),
  238. "remittanceBankType" => get_args ( 'remittanceBankType' ),
  239. "bankName" => get_args ( 'bankName' ),
  240. "bankNumber" => get_args ( 'bankNumber' ),
  241. "coupletNumber" => get_args ( 'coupletNumber' )
  242. );
  243. // 2.参数校验
  244. $data = $this->feeService->ValidRuleReceiptCreate ( $data );
  245. // 3.具体数据处理
  246. $msg = $this->feeService->ReceiptEdi ( $data, $this->staff );
  247. return "/saeaBorad";
  248. }
  249. // 创建借款报销单
  250. public function GetViewLoanReceiptCreate() {
  251. $receiptId = isset ( $this->params ['receiptId'] ) ? $this->params ['receiptId'] : '';
  252. if (empty ( $receiptId )) {
  253. die ( 'illegal request-请求参数错误,重新请求' );
  254. }
  255. $data ['receiptId'] = $receiptId;
  256. $receiptId = GetDecryptId ( $receiptId );
  257. $detail = $this->feeService->GetReceipt ( $receiptId );
  258. // 设置借款信息
  259. $loan = $this->feeService->GetLoanReceipt ( $detail ['loanRid'] );
  260. $data ['loan'] = $loan;
  261. // 费用 项目细则
  262. $accountItem = $this->feeService->GetAccountItem ();
  263. $data ['accountItem'] = json_encode ( $accountItem );
  264. // 报销单数据
  265. if ($detail ['status'] != 7) {
  266. $detail ['verify'] = '';
  267. }
  268. $data ['data'] = json_encode ( $this->makeReceiptEdiData ( $detail, $accountItem, $this->feeService->GetVerify () ) );
  269. // 地区
  270. $region = $this->regionService->GetRegionTwo ();
  271. $data ['region'] = json_encode ( $region );
  272. // 审批
  273. $data ['verify'] = json_encode ( $this->feeService->GetVerify () );
  274. // 办事处
  275. $data ['office'] = $this->officeService->GetAll ();
  276. // 默认办事处
  277. $data ['officeId'] = $this->staff ['cid'];
  278. // 附件
  279. $data ['enclosurList'] = array ();
  280. // 请求
  281. $data ['action'] = "/loan/receipt/edit";
  282. $traveDefault=$this->makeTraveDefault($region);
  283. $data['defaultTraveProvince']=$traveDefault['defaultTraveProvince'];
  284. $data['defaultTraveProvinceIndex']=$traveDefault['defaultTraveProvinceIndex'];
  285. // $defaultTraveProvince="";
  286. // if($this->staff['category']=="总部"){
  287. // $defaultTraveProvince="广东省";
  288. // }else{
  289. // $defaultTraveProvince=str_replace("办","省",$this->staff['category']);
  290. // }
  291. // $data['defaultTraveProvince']=$defaultTraveProvince;
  292. // 获得二级地区的index
  293. // $defaultTraveProvinceIndex=0;
  294. // foreach ($region as $key=>$value){
  295. // if($value['name']==$defaultTraveProvince){
  296. // $defaultTraveProvinceIndex=$key;
  297. // }
  298. // }
  299. // $data['defaultTraveProvinceIndex']=$defaultTraveProvinceIndex;
  300. $data ['staff'] = $this->staff;
  301. $data ['verifyId'] = $this->verifyId;
  302. $data ['executeId'] = $this->executeId;
  303. $data ['receiptMemu'] = 'saeaBorad';
  304. $data ['memu'] = "receipt";
  305. $this->render ( "/fee/create/receipt", $data );
  306. }
  307. // 保存借款报销单
  308. public function PostLoanReceiptEdit() {
  309. // 1.获得参数
  310. $data = array (
  311. "receiptId" => get_args ( 'receiptId' ),
  312. "officeData" => get_args ( 'officeData' ),
  313. "traveData" => get_args ( 'traveData' ),
  314. "trainData" => get_args ( 'trainData' ),
  315. "enclosurFiles" => get_args ( 'enclosurFiles' ),
  316. "verifyId" => get_args ( 'verifyId' ),
  317. "officeId" => get_args ( 'officeId' ),
  318. "remittanceName" => get_args ( 'remittanceName' ),
  319. "remittanceBankType" => get_args ( 'remittanceBankType' ),
  320. "bankName" => get_args ( 'bankName' ),
  321. "bankNumber" => get_args ( 'bankNumber' ),
  322. "coupletNumber" => get_args ( 'coupletNumber' )
  323. );
  324. // 2.参数校验
  325. $data = $this->feeService->ValidRuleReceiptCreate ( $data );
  326. // 3.处理借款报销单数据
  327. $msg = $this->feeService->LoanReceiptEdi ( $data ['receiptId'] );
  328. // 4.具体数据处理
  329. $msg = $this->feeService->ReceiptEdi ( $data, $this->staff );
  330. return "/saeaBorad";
  331. }
  332. // 审批页面
  333. public function GetViewReceiptApproval() {
  334. $receiptId = isset ( $this->params ['receiptId'] ) ? $this->params ['receiptId'] : '';
  335. if (empty ( $receiptId )) {
  336. die ( 'illegal request-请求参数错误,重新请求' );
  337. }
  338. $receiptId = GetDecryptId ( $receiptId );
  339. $detail = $this->feeService->GetReceipt ( $receiptId );
  340. // 设置借款信息
  341. if (!empty($detail ['loanRid'])){
  342. $loan = $this->feeService->GetLoanReceipt ( $detail ['loanRid'] );
  343. $data ['loan'] = $loan;
  344. }
  345. // $receiptList [$key] ['loanSumCN'] = $this->num_to_rmb ( $value ['loanSum'] );
  346. // $receiptList [$key] ['sumCN'] = $this->num_to_rmb ( $value ['sum'] );
  347. // $receiptList [$key] ['relustCN'] = $this->num_to_rmb ( abs ( $relust ) );
  348. $data['receipt']=$detail;
  349. $data ['staff'] = $this->staff;
  350. $data ['verifyId'] = $this->verifyId;
  351. $data ['executeId'] = $this->executeId;
  352. $data ['receiptMemu'] = 'saeaBorad';
  353. $data ['memu'] = "receipt";
  354. $this->render ( "/fee/approval/receipt", $data );
  355. }
  356. // 获得个人所有的差旅时间
  357. public function GetJsonTraveDateAll(){
  358. $traveData=$this->feeService->GetTraveDateAll($this->staff['sid']);
  359. echo json_encode($traveData);
  360. }
  361. private function makeTraveDefault($region){
  362. $defaultTraveProvince="";
  363. if($this->staff['category']=="总部"||$this->staff['category']=="总部1"){
  364. $defaultTraveProvince="广东省";
  365. }else{
  366. $defaultTraveProvince=str_replace("办","省",$this->staff['category']);
  367. }
  368. // 获得二级地区的index
  369. $defaultTraveProvinceIndex=0;
  370. foreach ($region as $key=>$value){
  371. if($value['name']==$defaultTraveProvince){
  372. $defaultTraveProvinceIndex=$key;
  373. }
  374. }
  375. return array("defaultTraveProvince"=>$defaultTraveProvince,"defaultTraveProvinceIndex"=>$defaultTraveProvinceIndex);
  376. }
  377. // 构造页面数据
  378. private function makeReceiptEdiData($data, $accountItem, $verify) {
  379. $officeJson = array (
  380. "id" => 0,
  381. "name" => "办事处相关费用",
  382. "show" => false,
  383. "anchor" => "officeAnchor",
  384. "active" => false,
  385. "daily" => $accountItem ['daily'],
  386. "other" => $accountItem ['other'],
  387. "officeExplain" => array (
  388. 0 => array (
  389. "officeExplain" => ""
  390. )
  391. )
  392. );
  393. if (! empty ( $data ['officeJson'] )) {
  394. $officeJson = json_decode ( $data ['officeJson'], true );
  395. }
  396. $traveJson = array (
  397. "id" => 1,
  398. "name" => "差旅相关费用",
  399. "show" => false,
  400. "anchor" => "traveAnchor",
  401. "active" => false,
  402. "trave" => $accountItem ['trave'],
  403. "traveList" => array (),
  404. "traveExplain" => array (
  405. 0 => array (
  406. "traveExplain" => ""
  407. )
  408. )
  409. );
  410. if (! empty ( $data ['traveJson'] )) {
  411. $traveJson = json_decode ( $data ['traveJson'], true );
  412. }
  413. $trainJson = array (
  414. "id" => 2,
  415. "name" => "内部培训费用",
  416. "show" => false,
  417. "anchor" => "trainAnchor",
  418. "active" => false,
  419. "train" => $accountItem ['train'],
  420. "trainExplain" => array (
  421. 0 => array (
  422. "trainExplain" => ""
  423. )
  424. )
  425. );
  426. if (! empty ( $data ['trainJson'] )) {
  427. $trainJson = json_decode ( $data ['trainJson'], true );
  428. }
  429. return array (
  430. "receiptTypeMenu" => array (
  431. 0 => $officeJson,
  432. 1 => $traveJson,
  433. 2 => $trainJson
  434. ),
  435. "verify" => $verify,
  436. "verifyId" => $data ['verify'],
  437. "remittanceBankType" => 0,
  438. "enclosurFiles" => array (),
  439. "aletMsg" => '',
  440. "displayStsates" => 'none'
  441. );
  442. }
  443. }
  444. ?>