fee_service.php 18 KB

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