fee_service.php 18 KB

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