fee_service.php 18 KB

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