fee_service.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794
  1. <?php
  2. class fee_service {
  3. private $accountItem;
  4. private $verify;
  5. private $receipt;
  6. private $XDeode;
  7. private $category;
  8. private $staff;
  9. function __construct() {
  10. Doo::loadModel ( 'cld/account_item_cld' );
  11. $this->accountItem = new account_item_cld ();
  12. Doo::loadModel ( 'cld/verify_cld' );
  13. $this->verify = new verify_cld ();
  14. Doo::loadModel ( 'cld/receipt_cld' );
  15. $this->receipt = new receipt_cld ();
  16. Doo::loadClass ( 'XDeode' );
  17. $this->XDeode = new XDeode ( 9 );
  18. Doo::loadModel ( 'receiptDetail' );
  19. Doo::loadModel ( 'cld/category_cld' );
  20. $this->category = new category_cld ();
  21. Doo::loadModel ( 'cld/traveDate_cld' );
  22. $this->traveDate_cld = new traveDate_cld ();
  23. Doo::loadModel ( 'cld/staff_cld' );
  24. $this->staff = new staff_cld ();
  25. }
  26. // 费用 报销单-创建-参数校验
  27. public function ValidRuleReceiptCreate($data = array()) {
  28. if (empty ( $data ['verifyId'] )) {
  29. die ( 'illegal request-请选择审批组' );
  30. }
  31. $data ['verifyId'] = $this->XDeode->decode ( $data ['verifyId'] );
  32. if (! is_numeric ( $data ['verifyId'] )) {
  33. die ( 'illegal request-请选择审批组' );
  34. }
  35. if (empty ( $data ['officeId'] )) {
  36. die ( 'illegal request-请选择办事处' );
  37. }
  38. $data ['officeId'] = $this->XDeode->decode ( $data ['officeId'] );
  39. if (! is_numeric ( $data ['officeId'] )) {
  40. die ( 'illegal request-请选择办事处' );
  41. }
  42. if ($data ['traveData'] == "" && $data ['officeData'] == "" && $data ['trainData'] == "") {
  43. die ( 'illegal request-请选择费用类型' );
  44. }
  45. // 字符串转换Json
  46. $hasType = 0;
  47. if ($data ['traveData'] != "") {
  48. $data ['traveJson'] = json_decode ( $data ['traveData'], true );
  49. if ($data ['traveJson'] ['show']) {
  50. $hasType ++;
  51. // 日期合法性检查
  52. //print_r($data ['traveJson']);die;
  53. }
  54. }
  55. if ($data ['officeData'] != "") {
  56. $data ['officeJson'] = json_decode ( $data ['officeData'], true );
  57. if ($data ['officeJson'] ['show']) {
  58. $hasType ++;
  59. }
  60. }
  61. if ($data ['trainData'] != "") {
  62. $data ['trainJson'] = json_decode ( $data ['trainData'], true );
  63. if ($data ['trainJson'] ['show']) {
  64. $hasType ++;
  65. }
  66. }
  67. if ($hasType == 0) {
  68. die ( 'illegal request-请选择费用类型' );
  69. }
  70. return $data;
  71. }
  72. // 获得费用的细则
  73. public function GetAccountItem() {
  74. $data = $this->accountItem->GetAll ();
  75. $list = array (
  76. 'daily' => array (),
  77. 'other' => array (),
  78. 'trave' => array (),
  79. 'train' => array ()
  80. );
  81. foreach ( $data as $value ) {
  82. $value ['price'] = 0;
  83. if ($value ['category'] == "日常相关费用") {
  84. array_push ( $list ['daily'], $value );
  85. }
  86. if ($value ['category'] == "其他") {
  87. array_push ( $list ['other'], $value );
  88. }
  89. if ($value ['category'] == "内部培训费用") {
  90. array_push ( $list ['train'], $value );
  91. }
  92. if ($value ['category'] == "差旅相关费用") {
  93. $value ['remark'] = "";
  94. array_push ( $list ['trave'], $value );
  95. }
  96. }
  97. return $list;
  98. }
  99. // 审批组
  100. public function GetVerifyType($subordinate="",$subordinate2="") {
  101. $list = $this->verify->getVerifyBySubordinate($subordinate,$subordinate2);
  102. return $list;
  103. }
  104. // 获得报销单
  105. public function GetReceipt($receiptId) {
  106. $detail = $this->receipt->Get ( $receiptId );
  107. $detail ['verify'] = $this->XDeode->encode ( $detail ['verify'] );
  108. $detail ['cid'] = $this->XDeode->encode ( $detail ['cid'] );
  109. $detail ['receiptId'] = $this->XDeode->encode ( $detail ['rid'] );
  110. //费用结算-用于流水
  111. $relust = bcsub ( $detail ['sum'], $detail ['loanSum'], 2 );
  112. $detail ['relust'] = $relust;
  113. $detail ['relustABS'] = abs ( $relust );
  114. return $detail;
  115. }
  116. // 创建报销单
  117. public function ReceiptCreate($data, $staff) {
  118. $receipt = new receipt_cld ();
  119. // 1.办事处相关费用
  120. $total = 0;
  121. if (! empty ( $data ['officeData'] )) {
  122. if ($data ['officeJson'] ['show']) {
  123. foreach ( $data ['officeJson'] ['daily'] as $value ) {
  124. $total = bcadd ( $total, $value ['price'], 2 );
  125. }
  126. foreach ( $data ['officeJson'] ['other'] as $value ) {
  127. $total = bcadd ( $total, $value ['price'], 2 );
  128. }
  129. }
  130. }
  131. // 差旅相关费用
  132. if (! empty ( $data ['traveData'] )) {
  133. if ($data ['traveJson'] ['show']) {
  134. foreach ( $data ['traveJson'] ['trave'] as $value ) {
  135. $total = bcadd ( $total, $value ['price'], 2 );
  136. }
  137. }
  138. }
  139. // 内部培训费用
  140. if (! empty ( $data ['trainData'] )) {
  141. if ($data ['trainJson'] ['show']) {
  142. foreach ( $data ['trainJson'] ['train'] as $value ) {
  143. $total = bcadd ( $total, $value ['price'], 2 );
  144. }
  145. }
  146. }
  147. $receipt->officeJson = $data ['officeData'];
  148. $receipt->traveJson = $data ['traveData'];
  149. $receipt->trainJson = $data ['trainData'];
  150. $receipt->remittanceName = $data ['remittanceName'];
  151. $receipt->bankName = $data ['bankName'];
  152. $receipt->bankNumber = $data ['bankNumber'];
  153. $receipt->remittanceBankType = $data ['remittanceBankType'];
  154. if ($data ['remittanceBankType'] == 1) {
  155. $receipt->coupletNumber = $data ['coupletNumber'];
  156. }
  157. $receipt->status = 5;
  158. $receipt->date = date ( "Y-m-d" );
  159. $receipt->staff = $staff ['sid'];
  160. $receipt->cid = $data ['officeId'];
  161. $receipt->verify = $data ['verifyId'];
  162. $receipt->sum = $total;
  163. $receipt->receiptOrder = "#B" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
  164. Doo::loadModel ( 'execute' );
  165. $execute = new execute ();
  166. $executeDetail = $execute->getOne ( array (
  167. 'where' => 'mold="报销单执行人"',
  168. 'asArray' => true
  169. ) );
  170. $receipt->executeCopy = $executeDetail ['staff'];
  171. $receipt->version = 1;
  172. $rid = $receipt->insert ();
  173. // 附件
  174. if (! empty ( $data ['enclosurFiles'] )) {
  175. Doo::loadModel ( 'enclosur' );
  176. $data ['enclosurFiles'] = json_decode ( $data ['enclosurFiles'], true );
  177. foreach ( $data ['enclosurFiles'] as $value ) {
  178. $enclosur = new enclosur ();
  179. $enclosur->name = $value ['path'];
  180. $enclosur->rid = $rid;
  181. $enclosur->insert ();
  182. }
  183. }
  184. // 创建报销单详情
  185. $this->makeReceiptDetailCreate ( $data, $staff, $rid );
  186. return "";
  187. }
  188. // 编辑报销单
  189. public function ReceiptEdi($data, $staff) {
  190. $receiptId = $this->XDeode->decode ( $data ['receiptId'] );
  191. if (! is_numeric ( $receiptId )) {
  192. die ( 'illegal request-找不到该报销单-参数不正确' );
  193. }
  194. $detail = $this->receipt->Get ( $receiptId );
  195. if (empty ( $detail )) {
  196. die ( 'illegal request-找不到该报销单' );
  197. }
  198. $receipt = new receipt_cld ();
  199. // 1.办事处相关费用
  200. $total = 0;
  201. if (! empty ( $data ['officeData'] )) {
  202. if ($data ['officeJson'] ['show']) {
  203. foreach ( $data ['officeJson'] ['daily'] as $value ) {
  204. $total = bcadd ( $total, $value ['price'], 2 );
  205. }
  206. foreach ( $data ['officeJson'] ['other'] as $value ) {
  207. $total = bcadd ( $total, $value ['price'], 2 );
  208. }
  209. }
  210. }
  211. // 差旅相关费用
  212. if (! empty ( $data ['traveData'] )) {
  213. if ($data ['traveJson'] ['show']) {
  214. foreach ( $data ['traveJson'] ['trave'] as $value ) {
  215. $total = bcadd ( $total, $value ['price'], 2 );
  216. }
  217. }
  218. }
  219. // 内部培训费用
  220. if (! empty ( $data ['trainData'] )) {
  221. if ($data ['trainJson'] ['show']) {
  222. foreach ( $data ['trainJson'] ['train'] as $value ) {
  223. $total = bcadd ( $total, $value ['price'], 2 );
  224. }
  225. }
  226. }
  227. $receipt->officeJson = $data ['officeData'];
  228. $receipt->traveJson = $data ['traveData'];
  229. $receipt->trainJson = $data ['trainData'];
  230. $receipt->remittanceName = $data ['remittanceName'];
  231. $receipt->bankName = $data ['bankName'];
  232. $receipt->bankNumber = $data ['bankNumber'];
  233. $receipt->remittanceBankType = $data ['remittanceBankType'];
  234. if ($data ['remittanceBankType'] == 1) {
  235. $receipt->coupletNumber = $data ['coupletNumber'];
  236. }
  237. $receipt->cid = $data ['officeId'];
  238. if($data ['status']!=4){
  239. $receipt->verify = $data ['verifyId'];
  240. }
  241. $receipt->sum = $total;
  242. Doo::loadModel ( 'execute' );
  243. $execute = new execute ();
  244. $executeDetail = $execute->getOne ( array (
  245. 'where' => 'mold="报销单执行人"',
  246. 'asArray' => true
  247. ) );
  248. $receipt->executeCopy = $executeDetail ['staff'];
  249. $receipt->rid = $receiptId;
  250. $receipt->update ();
  251. // 先删除
  252. $receiptDetail = new receiptDetail ();
  253. $receiptDetail->delete ( array (
  254. 'where' => 'rid=' . $receiptId
  255. ) );
  256. // 新增报销单详情
  257. $this->makeReceiptDetailCreate ( $data, $staff, $receiptId );
  258. // 附件
  259. if (! empty ( $data ['enclosurFiles'] )) {
  260. Doo::loadModel ( 'enclosur' );
  261. $data ['enclosurFiles'] = json_decode ( $data ['enclosurFiles'], true );
  262. foreach ( $data ['enclosurFiles'] as $value ) {
  263. $enclosur = new enclosur ();
  264. $enclosur->name = $value ['path'];
  265. $enclosur->rid = $receiptId;
  266. $enclosur->insert ();
  267. }
  268. }
  269. return "";
  270. }
  271. //更新借款报销单数据
  272. public function LoanReceiptEdi($receiptId){
  273. $receiptId = $this->XDeode->decode ( $receiptId );
  274. if (! is_numeric ( $receiptId )) {
  275. die ( 'illegal request-找不到该报销单-参数不正确' );
  276. }
  277. $detail = $this->receipt->Get ( $receiptId );
  278. if (empty ( $detail )) {
  279. die ( 'illegal request-找不到该报销单' );
  280. }
  281. $receipt = new receipt_cld ();
  282. if ($detail['status']!=7){
  283. $receipt->loanSum = $detail ['sum'];
  284. }
  285. $receipt->date = date ( "Y-m-d" );
  286. $receipt->pastDate = '0000-00-00';
  287. $receipt->verifyStaff = '';
  288. $receipt->executeStaff = '';
  289. $receipt->status = 7;
  290. $receipt->version = 1;
  291. $receipt->rid = $receiptId;
  292. $receipt->update ();
  293. }
  294. // 获得借款报销单
  295. public function GetLoanReceipt($loanReceiptId,$staff) {
  296. Doo::loadModel ( 'loanReceipt' );
  297. $loanReceipt = new loanReceipt ();
  298. $loan = $loanReceipt->getOne ( array (
  299. 'where' => 'rid=' . $loanReceiptId,
  300. 'desc' => 'rid',
  301. 'asArray' => true
  302. ) );
  303. $categoryDetil = $this->category->getOne ( array (
  304. 'where' => 'cid=' . $loan ['cid'],
  305. 'asArray' => true
  306. ) );
  307. $loan ['category'] = $categoryDetil ['title'];
  308. $loan ['accountItem'] = json_decode ( $loan ['accountItem'], true );
  309. $loan ['loanItem'] = json_decode ( $loan ['loanItem'], true );
  310. $loan ['BIGsum'] = $this->num_to_rmb ( $loan ['sum'] );
  311. $loan ['verifyList'] = $this->makeVerifyProcess ( $loan ['verify'], $loan ['verifyStaff'],$staff );
  312. return $loan;
  313. }
  314. // 获得差旅日期
  315. public function GetTraveDateAll($sid){
  316. $traveData=$this->traveDate_cld->GetAllBySid($sid);
  317. $data=array();
  318. foreach ($traveData as $key=>$value){
  319. if(!empty($value['start'])&&!empty($value['end'])){
  320. array_push($data, array(strtotime($value['start']),strtotime($value['end'])));
  321. }
  322. }
  323. return $data;
  324. }
  325. //费用分页
  326. public function GetFeePage($data=array()){
  327. if (!empty($data['categoryId'])){
  328. $data['categoryId']=$this->XDeode->decode($data['categoryId']);
  329. }
  330. if (!empty($data['staffId'])){
  331. $data['staffId']=$this->XDeode->decode($data['staffId']);
  332. }
  333. if(empty($data['year'])){
  334. $data['year']=date ( "Y" );
  335. }
  336. if(!is_numeric($data['pSize'])){
  337. $data['pSize']=20;
  338. }
  339. if(!is_numeric($data['cPage'])){
  340. $data['cPage']=0;
  341. }else{
  342. $data['cPage']=( $data['cPage']-1) * $data['pSize'];
  343. }
  344. $data=$this->receipt->GetPage($data);
  345. //获得办事处信息
  346. $office=$this->category->GetAll();
  347. //获得员工信息
  348. $staffList=$this->staff->find(array('asArray' => TRUE));
  349. foreach ($data['list'] as $key=>$value){
  350. $data['list'][$key]['ridOld']=$value['rid'];
  351. $data['list'][$key]['rid']=$this->XDeode->encode($value['rid']);
  352. $data['list'][$key]['cid']=$this->XDeode->encode($value['cid']);
  353. $data['list'][$key]['staff']=$this->XDeode->encode($value['staff']);
  354. $data['list'][$key]['categoryValue']="";
  355. $data['list'][$key]['statusValue']=$this->feeStatusValue[$value['status']];
  356. foreach ($office as $k=>$v){
  357. if($v['cid']==$data['list'][$key]['cid']){
  358. $data['list'][$key]['categoryValue']=$v['title'];
  359. }
  360. }
  361. $data['list'][$key]['staffName']="";
  362. foreach ($staffList as $k=>$v){
  363. if($v['sid']==$value['staff']){
  364. $data['list'][$key]['staffName']=$v['username'];
  365. }
  366. }
  367. $data['list'][$key]['Rtype']=$this->feeTypeValue[$value['Rtype']];
  368. if($this->getFeeLoanType($value)){
  369. $data['list'][$key]['Rtype'].="报销单";
  370. }
  371. if($value['pastDate']=="0000-00-00"){
  372. $data['list'][$key]['pastDate']="";
  373. }
  374. if($value['version']==1){
  375. $data['list'][$key]['explanation']=$this->getReceiptVerson1Explanation($value);
  376. }
  377. }
  378. return $data;
  379. }
  380. private $feeTypeValue=array(
  381. 0=>"报销单",
  382. 1=>"借款",
  383. 2=>"对公汇款",
  384. 3=>"培训班费用",
  385. );
  386. private $feeStatusValue=array(
  387. 1=>"待执行",
  388. 2=>"审批中",
  389. 3=>"终止",
  390. 4=>"撤回",
  391. 5=>"待提交",
  392. 6=>"待执行",
  393. 7=>"待提交",
  394. 8=>"执行完成",
  395. 9=>"执行完成",
  396. 10=>"已锁定",
  397. );
  398. //获得借款-报销单类型 0借款 1借款报销单
  399. private function getFeeLoanType($value){
  400. $type=0;
  401. if($value['Rtype']==1){
  402. if($value['version']==1){
  403. $type=1;
  404. }else{
  405. if(!empty($value['accountItem'])){
  406. $type=1;
  407. }
  408. }
  409. }
  410. return $type;
  411. }
  412. //获得新版报销单费用说明
  413. private function getReceiptVerson1Explanation($value){
  414. $version_1_explanation="";
  415. if($value['version']==1){
  416. if(!empty($value['officeJson'])){
  417. $officeJson=json_decode($value['officeJson'],true);
  418. $version_1_explanation.=$officeJson['officeExplain'][0]['officeExplain']."\n";
  419. }
  420. if(!empty($value['traveJson'])){
  421. $traveJson=json_decode($value['traveJson'],true);
  422. $version_1_explanation.=$traveJson['traveExplain'][0]['traveExplain']."\n";
  423. }
  424. if(!empty($value['trainJson'])){
  425. $trainJson=json_decode($value['trainJson'],true);
  426. $version_1_explanation.=$trainJson['trainExplain'][0]['trainExplain']."\n";
  427. }
  428. }
  429. return $version_1_explanation;
  430. }
  431. // 获得审批流程
  432. private function makeVerifyProcess($verifyId, $verifyStaff,$staffMy) {
  433. // 检测编辑状态
  434. $verifyList = $this->verify->getOne ( array (
  435. 'where' => 'vid=' . $verifyId,
  436. 'asArray' => true
  437. ) );
  438. $verifyList = json_decode ( $verifyList ['staff'], true ); // status opinion
  439. $verifyStaff = json_decode ( $verifyStaff, true );
  440. Doo::loadModel ( 'role' );
  441. $role = new role ();
  442. Doo::loadModel ( 'staff' );
  443. $staff = new staff ();
  444. $flag = true;
  445. $roleKey = 0;
  446. $endStaffArray = array ();
  447. $roleArrayCopy = array ();
  448. foreach ( $verifyList as $k => $v ) {
  449. // init verifyStaff
  450. if ($v [1] == 'ROLE') {
  451. if (! empty ( $verifyStaff )) {
  452. $endStaffArray = end ( $verifyStaff );
  453. // if ($v[0]==$endStaffArray['nextStaff']){
  454. // $roleId=$v[0];
  455. // }
  456. }
  457. $roleVerify = json_decode ( $v [3], true );
  458. $roleKey = $k;
  459. $roleArray = array ();
  460. $rolename = $role->getOne ( array (
  461. 'where' => 'rid=' . $v [0],
  462. 'asArray' => true
  463. ) );
  464. foreach ( $roleVerify as $o => $p ) {
  465. $staffID = explode ( '_', $p );
  466. $staffInfo = $staff->getOne ( array (
  467. 'where' => 'sid=' . $staffID [0],
  468. 'asArray' => true
  469. ) );
  470. // print_r($staffID);
  471. $exp = array (
  472. 0 => $staffInfo ['sid'],
  473. 1 => $staffID [1],
  474. 2 => $staffInfo ['avatar'],
  475. 'date' => '',
  476. 'date' => '',
  477. 'opinion' => '',
  478. 'status' => '',
  479. 'rolename' => $rolename ['name']
  480. );
  481. array_push ( $roleArray, $exp );
  482. }
  483. $roleArrayCopy [$v [0]] = $roleArray;
  484. // $verifyList[$k]['roleArray']=$roleArray;
  485. }
  486. $verifyList [$k] ['date'] = "";
  487. $verifyList [$k] ['opinion'] = "";
  488. $verifyList [$k] ['status'] = "";
  489. if (empty ( $verifyStaff )) {
  490. $verifyList [$k] ['date'] = "";
  491. $verifyList [$k] ['opinion'] = "";
  492. if (($verifyList [0] [0] == $this->staff [0] ['sid']) && $flag) {
  493. $verifyList [$k] ['status'] = 4;
  494. $flag = false;
  495. }
  496. } else {
  497. foreach ( $verifyStaff as $m => $u ) {
  498. if ($v [0] == $m) {
  499. $verifyList [$k] ['date'] = $u ['date'];
  500. $verifyList [$k] ['opinion'] = $u ['opinion'];
  501. $verifyList [$k] ['status'] = $u ['status'];
  502. $flag = false;
  503. break;
  504. }
  505. }
  506. $endStaffArray = end ( $verifyStaff );
  507. if (isset ( $endStaffArray ['ROLE'] )) {
  508. } else {
  509. }
  510. }
  511. }
  512. $rolename ['name'] = '';
  513. if (! empty ( $verifyStaff ))
  514. $endStaffArray = end ( $verifyStaff );
  515. $KOP = false;
  516. foreach ( $roleArrayCopy as $P => $A ) {
  517. foreach ( $A as $MKI => $AVL ) {
  518. if (! empty ( $verifyStaff )) {
  519. // FIXME
  520. // print_r($this->staff);
  521. // die;
  522. // &&$rolename['rid']==$endStaffArray['nextStaff']
  523. if ($staffMy ['sid'] == $AVL [0] && isset ( $endStaffArray ['ROLE'] ) && $rolename ['rid'] == $endStaffArray ['nextStaff']) {
  524. $button = 4;
  525. $roleArrayCopy [$P] [$MKI] ['status'] = 4;
  526. }
  527. foreach ( $verifyStaff as $m => $u ) {
  528. $AVLFK = $AVL [0] . '_R';
  529. // echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo '<br/>';
  530. if (strcmp ( $AVLFK, $m ) == 0) { // &&isset($u['ROLE'])&&$u['ROLE']==1
  531. $roleArrayCopy [$P] [$MKI] ['date'] = $u ['date'];
  532. $roleArrayCopy [$P] [$MKI] ['opinion'] = $u ['opinion'];
  533. $roleArrayCopy [$P] [$MKI] ['status'] = $u ['status'];
  534. break;
  535. }
  536. }
  537. } else {
  538. if ($staffMy ['sid'] == $AVL [0] && $verifyList [0] [1] == 'ROLE') {
  539. $button = 4;
  540. $roleArrayCopy [$P] [$MKI] ['status'] = 4;
  541. }
  542. }
  543. // $roleArray[$MKI]['rolename']=$rolename['name'];
  544. $KOP = true;
  545. }
  546. }
  547. foreach ( $roleArrayCopy as $k => $v ) {
  548. foreach ( $verifyList as $m => $n ) {
  549. if ($n [0] == $k) {
  550. array_splice ( $verifyList, $m, 1, $v );
  551. }
  552. }
  553. }
  554. return $verifyList;
  555. }
  556. private function makeReceiptDetailCreate($data, $staff, $rid) {
  557. // 报销单详情
  558. if (! empty ( $data ['officeData'] )) {
  559. if ($data ['officeJson'] ['show']) {
  560. foreach ( $data ['officeJson'] ['daily'] as $value ) {
  561. if ($value ['price'] != 0) {
  562. $itemData = array (
  563. "staff" => $staff ['sid'],
  564. "itemCategory" => $value ['category'],
  565. "item" => $value ['name'],
  566. "price" => $value ['price'],
  567. "date" => date ( "Y-m-d" ),
  568. "cid" => $data ['officeId'],
  569. "rid" => $rid,
  570. "status" => 4
  571. );
  572. $this->ReceiptDetailCreate ( $itemData );
  573. }
  574. }
  575. foreach ( $data ['officeJson'] ['other'] as $value ) {
  576. if ($value ['price'] != 0) {
  577. $itemData = array (
  578. "staff" => $staff ['sid'],
  579. "itemCategory" => $value ['category'],
  580. "item" => $value ['name'],
  581. "price" => $value ['price'],
  582. "date" => date ( "Y-m-d" ),
  583. "cid" => $data ['officeId'],
  584. "rid" => $rid,
  585. "status" => 4
  586. );
  587. $this->ReceiptDetailCreate ( $itemData );
  588. }
  589. }
  590. }
  591. }
  592. // 差旅相关费用
  593. if (! empty ( $data ['traveData'] )) {
  594. if ($data ['traveJson'] ['show']) {
  595. foreach ( $data ['traveJson'] ['trave'] as $value ) {
  596. if ($value ['price'] != 0) {
  597. $itemData = array (
  598. "staff" => $staff ['sid'],
  599. "itemCategory" => $value ['category'],
  600. "item" => $value ['name'],
  601. "price" => $value ['price'],
  602. "date" => date ( "Y-m-d" ),
  603. "cid" => $data ['officeId'],
  604. "rid" => $rid,
  605. "status" => 4
  606. );
  607. $this->ReceiptDetailCreate ( $itemData );
  608. }
  609. }
  610. }
  611. }
  612. // 内部培训费用
  613. if (! empty ( $data ['trainData'] )) {
  614. if ($data ['trainJson'] ['show']) {
  615. foreach ( $data ['trainJson'] ['train'] as $value ) {
  616. if ($value ['price'] != 0) {
  617. $itemData = array (
  618. "staff" => $staff ['sid'],
  619. "itemCategory" => $value ['category'],
  620. "item" => $value ['name'],
  621. "price" => $value ['price'],
  622. "date" => date ( "Y-m-d" ),
  623. "cid" => $data ['officeId'],
  624. "rid" => $rid,
  625. "status" => 4
  626. );
  627. $this->ReceiptDetailCreate ( $itemData );
  628. }
  629. }
  630. }
  631. }
  632. }
  633. // 新增报销单详情
  634. public function ReceiptDetailCreate($data = array()) {
  635. $receiptDetail = new receiptDetail ();
  636. $receiptDetail->staff = $data ['staff'];
  637. $receiptDetail->item = $data ['item'];
  638. $receiptDetail->itemCategory = $data ['itemCategory'];
  639. $receiptDetail->price = $data ['price'];
  640. $receiptDetail->date = $data ['date'];
  641. $receiptDetail->cid = $data ['cid'];
  642. $receiptDetail->rid = $data ['rid'];
  643. $receiptDetail->status = $data ['status'];
  644. $receiptDetail->insert ();
  645. }
  646. public function num_to_rmb($num) {
  647. $c1 = "零壹贰叁肆伍陆柒捌玖";
  648. $c2 = "分角元拾佰仟万拾佰仟亿";
  649. // 精确到分后面就不要了,所以只留两个小数位
  650. $num = round ( $num, 2 );
  651. // 将数字转化为整数
  652. $num = $num * 100;
  653. if (strlen ( $num ) > 10) {
  654. return "金额太大,请检查";
  655. }
  656. $i = 0;
  657. $c = "";
  658. while ( 1 ) {
  659. if ($i == 0) {
  660. // 获取最后一位数字
  661. $n = substr ( $num, strlen ( $num ) - 1, 1 );
  662. } else {
  663. $n = $num % 10;
  664. }
  665. // 每次将最后一位数字转化为中文
  666. $p1 = substr ( $c1, 3 * $n, 3 );
  667. $p2 = substr ( $c2, 3 * $i, 3 );
  668. if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {
  669. $c = $p1 . $p2 . $c;
  670. } else {
  671. $c = $p1 . $c;
  672. }
  673. $i = $i + 1;
  674. // 去掉数字最后一位了
  675. $num = $num / 10;
  676. // echo $num.'</br>';
  677. $num = ( int ) $num;
  678. // $num =floor($num);
  679. // $num = round ( $num, 0, PHP_ROUND_HALF_DOWN );
  680. // echo $num.'</br>';
  681. // 结束循环
  682. if ($num == 0) {
  683. break;
  684. }
  685. }
  686. // echo $c.'</br>';
  687. $j = 0;
  688. $slen = strlen ( $c );
  689. while ( $j < $slen ) {
  690. // utf8一个汉字相当3个字符
  691. $m = substr ( $c, $j, 6 );
  692. // 处理数字中很多0的情况,每次循环去掉一个汉字“零”
  693. if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {
  694. $left = substr ( $c, 0, $j );
  695. $right = substr ( $c, $j + 3 );
  696. $c = $left . $right;
  697. $j = $j - 3;
  698. $slen = $slen - 3;
  699. }
  700. $j = $j + 3;
  701. }
  702. // 这个是为了去掉类似23.0中最后一个“零”字
  703. if (substr ( $c, strlen ( $c ) - 3, 3 ) == '零') {
  704. $c = substr ( $c, 0, strlen ( $c ) - 3 );
  705. }
  706. // 将处理的汉字加上“整”
  707. if (empty ( $c )) {
  708. return "零元整";
  709. } else {
  710. return $c . "整";
  711. }
  712. }
  713. }
  714. ?>