invoice_service.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /*
  3. * @description:
  4. * @Author: CP
  5. * @Date: 2021-01-21 10:54:21
  6. * @FilePath: \cld\protected\services\invoice_service.php
  7. */
  8. class invoice_service
  9. {
  10. private $invoiceTraining;
  11. private $invoice;
  12. private $invoiceItem;
  13. private $XDeode;
  14. function __construct()
  15. {
  16. Doo::loadClass('XDeode');
  17. $this->XDeode = new XDeode(9);
  18. $this->XDeode5 = new XDeode(5);
  19. Doo::loadModel('cld/invoice_training_cld');
  20. $this->invoiceTraining = new invoice_training_cld();
  21. Doo::loadModel('cld/invoice_cld');
  22. $this->invoice = new invoice_cld();
  23. Doo::loadModel('cld/invoice_item');
  24. $this->invoiceItem = new invoice_item();
  25. }
  26. // 获得发票项
  27. public function getInvoiceItem()
  28. {
  29. // 获得全部发票项
  30. $list = $this->invoiceItem->getAll();
  31. $data = array();
  32. foreach ($list as $value) {
  33. $item = $this->makeInvoiceItem($value);
  34. array_push($data, $item);
  35. }
  36. return $data;
  37. }
  38. /* 获得办事处和创建的 培训班发票 */
  39. public function getTrainByCategoryStaff($status, $categoryIdString, $staffId)
  40. {
  41. Doo::loadModel('staff');
  42. $staff = new staff();
  43. Doo::loadModel('L_category');
  44. $lCategory = new L_category();
  45. // 1.获得培训班
  46. $list = $this->invoiceTraining->getStatusByCategoryStaff($status, $categoryIdString, $staffId);
  47. // 2.获得培训班发票总数-
  48. foreach ($list as $key => $value) {
  49. $list[$key]['trainingKey'] = $this->XDeode5->encode($value['itid']);
  50. $detail = $staff->getStaffBySid($value['creator']);
  51. $list[$key]['staff'] = $detail;
  52. $detail = $lCategory->getCategoryById($value['cid']);
  53. $list[$key]['category'] = $detail;
  54. // 每个培训班发票总数和金额,入账总数
  55. $invoiceList = $this->invoice->GetTrainByUnFinish($value['itid']);
  56. $list[$key]['invoiceTotal'] = count($invoiceList);
  57. $priceTotle = 0;
  58. $BalancePriceTotle = 0;
  59. foreach ($invoiceList as $k => $v) {
  60. $priceTotle += $v['invoicePrice'];
  61. if ($v['status'] == 2 && $v['untreadStatus'] == 3) {
  62. $BalancePriceTotle += $v['invoiceBalance'];
  63. } else {
  64. $BalancePriceTotle += $v['invoicePrice'];
  65. }
  66. }
  67. $list[$key]['invoiceTotalAmount'] = $priceTotle;
  68. $list[$key]['invoiceArriveAmount'] = $priceTotle - $BalancePriceTotle;
  69. $list[$key]['arriveSchedule'] = 0;
  70. if ($list[$key]['invoiceTotal'] != 0) {
  71. $list[$key]['arriveSchedule'] = round($list[$key]['invoiceArriveAmount'] / $list[$key]['invoiceTotalAmount'] * 100, 2);
  72. }
  73. }
  74. return $list;
  75. // print_r ( $list );
  76. // die ();
  77. }
  78. private function makeInvoiceItem($data)
  79. {
  80. $resultData = array();
  81. if (!empty($data)) {
  82. $resultData = [
  83. 'id' => $this->XDeode->encode($data['id']),
  84. 'name' => $data['name'],
  85. 'rate' => $data['rate'],
  86. 'sort' => $data['sort'],
  87. ];
  88. }
  89. return $resultData;
  90. }
  91. }