fee_controller.php 15 KB

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