合同业务明细表.sql 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. select m.*,
  2. IF((_this_month.应收), (_this_month.应收), 0) '本月应收',
  3. IF((_this_month.已收), (_this_month.已收), 0) '本月已收',
  4. IF((_this_month.应付), (_this_month.应付), 0) '本月应付',
  5. IF((_this_month.已付), (_this_month.已付), 0) '本月已付',
  6. IF((_until_this_month.应收), (_until_this_month.应收), 0) '截止至本月应收',
  7. IF((_until_this_month.已收), (_until_this_month.已收), 0) '截止至本月已收',
  8. IF((_until_this_month.应付), (_until_this_month.应付), 0) '截止至本月应付',
  9. IF((_until_this_month.已付), (_until_this_month.已付), 0) '截止至本月已付',
  10. IF((_until_this_month.应收-_until_this_month.已收), (_until_this_month.应收-_until_this_month.已收), 0) '截止至本月待收',
  11. IF((_until_this_month.应付-_until_this_month.已付), (_until_this_month.应付-_until_this_month.已付), 0) '截止至本月待付',
  12. IF((_over_due.应收-_over_due.已收), (_over_due.应收-_over_due.已收), 0) '截止至本日逾期待收',
  13. IF((_over_due.应付-_over_due.已付), (_over_due.应付-_over_due.已付), 0) '截止至本日逾期待付',
  14. IF((_until_last_month.已收), (_until_last_month.已收), 0) '截止至上月已收',
  15. IF((_until_last_month.已付), (_until_last_month.已付), 0) '截止至上月已付',
  16. IF(_this_month_audited.收入, _this_month_audited.收入, 0) '本月审核通过收入',
  17. IF(_this_month_audited.支出, _this_month_audited.支出, 0) '本月审核通过支出',
  18. IF(_until_this_month_audited.收入, _until_this_month_audited.收入, 0) '截止至本月审核通过收入',
  19. IF(_until_this_month_audited.支出, _until_this_month_audited.支出, 0) '截止至本月审核通过支出',
  20. IF(_until_last_month_audited.收入, _until_last_month_audited.收入, 0) '截止至上月审核通过收入',
  21. IF(_until_last_month_audited.支出, _until_last_month_audited.支出, 0) '截止至上月审核通过支出',
  22. IF(_this_month_auditing.收入, _this_month_auditing.收入, 0) '本月待审核收入',
  23. IF(_this_month_auditing.支出, _this_month_auditing.支出, 0) '本月待审核支出',
  24. IF(_until_this_month_auditing.收入, _until_this_month_auditing.收入, 0) '截止至本月待审核收入',
  25. IF(_until_this_month_auditing.支出, _until_this_month_auditing.支出, 0) '截止至本月待审核支出'
  26. from (
  27. select
  28. crc.tenant_id,
  29. hhb.dept_id '房源所属门店ID', house_sd.name '房源所属门店名称', hhr.address '房源地址', hhr.house_area '房源面积',
  30. crc_sd.id '合同所属门店部门ID', crc_sd.name '合同所属门店部门',
  31. crc.id '合同ID', crc.contract_no '合同编号', crc.maintainer_id '合同维护人ID', mt_emp.name '合同维护人',
  32. cri.name '租客姓名', crc.begin_time '合同开始日期', crc.end_time '合同结束日期', DATEDIFF(crc.end_time, crc.begin_time)+1 '签约天数',
  33. crc.`type` '合同类型', crc.sign_type '成交方式',
  34. TRIM(TRAILING ',' FROM CONCAT(
  35. IF(crc.contract_status = 1 AND crc.contract_sub_status = 1, '待处理,', ''),
  36. IF(crc.contract_status = 1 AND crc.contract_sub_status = 2 AND crc.sign_status = 1, '待租客签字,', ''),
  37. IF(crc.contract_status = 1 AND crc.contract_sub_status = 2 AND crc.sign_status = 0, '带租客实名,', ''),
  38. IF(crc.contract_status = 2 AND crc.transition_type != 1 AND LENGTH(trim(crc.`down_payment_info`)) > 1 AND JSON_EXTRACT(crc.`down_payment_info`, '$.status') = 0, '待付款,', ''),
  39. IF(crc.contract_status = 2 AND crc.transition_type != 1 AND crc.is_sync_tenant = 1, '待租客确认,', ''),
  40. IF(crc.contract_status = 2 AND crc.transition_type != 1 AND DATE(NOW()) < crc.begin_time, '即将搬入,', ''),
  41. IF(crc.contract_status = 2 AND crc.transition_type != 1 AND LENGTH(trim(crc.`down_payment_info`)) > 1 AND (JSON_EXTRACT(crc.`down_payment_info`, '$.status') = 1 AND DATE(NOW()) >= crc.begin_time AND DATE(NOW()) < DATE_ADD(DATE(crc.end_time), INTERVAL 30 DAY) ), '租约中,', ''),
  42. IF(crc.contract_status = 2 AND crc.transition_type != 1 AND crc.`begin_time` <= DATE(NOW()) AND DATE(NOW()) >= DATE_ADD(DATE(crc.end_time), INTERVAL 30 DAY) AND DATE(NOW())< DATE(crc.end_time), '即将到期,', ''),
  43. IF(crc.contract_status = 2 AND crc.transition_type != 1 AND DATE(NOW()) >= DATE(crc.end_time), '已到期,', ''),
  44. IF(crc.contract_status = 2 AND crc.transition_type = 1, '已续约,', ''),
  45. IF(crc.contract_status = 3 AND crc.terminate_type = 1, '正常退,', ''),
  46. IF(crc.contract_status = 3 AND crc.terminate_type = 2, '违约退,', ''),
  47. IF(crc.contract_status = 4 AND crc.invalid_type = 1, '已作废,', ''),
  48. IF(crc.contract_status = 4 AND crc.invalid_type = 2, '已拒绝,', '')
  49. )) '合同状态',
  50. crc.approval_status '审批状态',
  51. 0 'splitter',
  52. _total.subject_name '费用类型',
  53. IF((_total.应收), (_total.应收), 0) '应收总金额',
  54. IF((_total.应付), (_total.应付), 0) '应付总金额',
  55. _total.fee_subject_id
  56. from yuxin_contract.cont_renter_contract crc
  57. left join yuxin_house.hse_house_room hhr on hhr.is_delete=0 and hhr.id=crc.house_id
  58. left join yuxin_house.hse_house_base hhb on hhb.is_delete=0 and hhb.id=crc.house_id
  59. left join yuxin_setting.setting_department house_sd on house_sd.id=hhb.dept_id and house_sd.is_delete=0
  60. left join yuxin_house.hse_community hc on hc.id=hhb.community_id and hc.is_delete=0
  61. left join yuxin_setting.setting_employee_dept crc_ed on crc_ed.emp_id=crc.maintainer_id and crc_ed.is_delete=0
  62. left join yuxin_setting.setting_department crc_sd on crc_sd.id=crc_ed.dept_id and crc_sd.is_delete=0
  63. left join yuxin_contract.cont_renter_info cri on cri.is_delete=0 and cri.customer_type=1 and cri.contract_id=crc.id
  64. left join yuxin_setting.setting_employee_info sign_emp on sign_emp.id=crc.sign_emp_id and sign_emp.is_delete=0
  65. left join yuxin_setting.setting_employee_info mt_emp on mt_emp.id=crc.maintainer_id and mt_emp.is_delete=0
  66. left join (
  67. select bd.biz_id, bd.fee_subject_id, sd.name 'subject_name',
  68. SUM(IF(bd.fee_direction=1,0,1)*bd.original_money) '应付',
  69. SUM(IF(bd.fee_direction=1,0,1)*bd.occurred_money) '已付',
  70. SUM(IF(bd.fee_direction=1,1,0)*bd.original_money) '应收',
  71. SUM(IF(bd.fee_direction=1,1,0)*bd.occurred_money) '已收'
  72. from yuxin_finance.fin_finance_bill_detail bd
  73. left join yuxin_setting.setting_dictionary sd on sd.id=bd.fee_subject_id
  74. where bd.is_valid=1 and bd.is_delete=0 and bd.biz_type=2
  75. group by bd.biz_id, bd.fee_subject_id, sd.name
  76. ) _total on _total.biz_id= crc.id
  77. where _total.fee_subject_id is not null
  78. ) m
  79. left join (
  80. select bd.biz_id, bd.fee_subject_id,
  81. SUM(IF(bd.fee_direction=1,0,1)*bd.original_money) '应付',
  82. SUM(IF(bd.fee_direction=1,0,1)*bd.occurred_money) '已付',
  83. SUM(IF(bd.fee_direction=1,1,0)*bd.original_money) '应收',
  84. SUM(IF(bd.fee_direction=1,1,0)*bd.occurred_money) '已收'
  85. from yuxin_finance.fin_finance_bill_detail bd
  86. where bd.is_valid=1 and bd.is_delete=0 and bd.biz_type=2 and MONTH(bd.predict_time) = MONTH(CURRENT_DATE()) AND YEAR(bd.predict_time) = YEAR(CURRENT_DATE())
  87. group by bd.biz_id, bd.fee_subject_id
  88. ) _this_month on _this_month.biz_id=m.合同ID and m.fee_subject_id=_this_month.fee_subject_id
  89. left join (
  90. select bd.biz_id, bd.fee_subject_id,
  91. SUM(IF(bd.fee_direction=1,0,1)*bd.original_money) '应付',
  92. SUM(IF(bd.fee_direction=1,0,1)*bd.occurred_money) '已付',
  93. SUM(IF(bd.fee_direction=1,1,0)*bd.original_money) '应收',
  94. SUM(IF(bd.fee_direction=1,1,0)*bd.occurred_money) '已收'
  95. from yuxin_finance.fin_finance_bill_detail bd
  96. where bd.is_valid=1 and bd.is_delete=0 and bd.biz_type=2 and bd.predict_time < CURRENT_DATE() and bd.not_occurred_money>0
  97. group by bd.biz_id, bd.fee_subject_id
  98. ) _over_due on _over_due.biz_id=m.合同ID and m.fee_subject_id=_over_due.fee_subject_id
  99. left join (
  100. select bd.biz_id,
  101. SUM(IF(bd.fee_direction=1,0,1)*bd.original_money) '应付',
  102. SUM(IF(bd.fee_direction=1,0,1)*bd.occurred_money) '已付',
  103. SUM(IF(bd.fee_direction=1,1,0)*bd.original_money) '应收',
  104. SUM(IF(bd.fee_direction=1,1,0)*bd.occurred_money) '已收'
  105. from yuxin_finance.fin_finance_bill_detail bd
  106. where bd.is_valid=1 and bd.is_delete=0 and bd.biz_type=2 and bd.practical_time < CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE)
  107. group by bd.biz_id
  108. ) _until_last_month on _until_last_month.biz_id=m.合同ID and m.fee_subject_id=_over_due.fee_subject_id
  109. left join (
  110. select bd.biz_id, bd.fee_subject_id,
  111. SUM(IF(bd.fee_direction=1,0,1)*bd.original_money) '应付',
  112. SUM(IF(bd.fee_direction=1,0,1)*bd.occurred_money) '已付',
  113. SUM(IF(bd.fee_direction=1,1,0)*bd.original_money) '应收',
  114. SUM(IF(bd.fee_direction=1,1,0)*bd.occurred_money) '已收'
  115. from yuxin_finance.fin_finance_bill_detail bd
  116. where bd.is_valid=1 and bd.is_delete=0 and bd.biz_type=2 and MONTH(bd.predict_time) <= MONTH(CURRENT_DATE()) AND YEAR(bd.predict_time) <= YEAR(CURRENT_DATE())
  117. group by bd.biz_id, bd.fee_subject_id
  118. ) _until_this_month on _until_this_month.biz_id=m.合同ID and m.fee_subject_id=_over_due.fee_subject_id
  119. left join (
  120. select bf.biz_id, sd.name, bd.fee_subject_id,
  121. SUM(IF(bd.fee_direction=1,1,0)*bf.total_money) '收入',
  122. SUM(IF(bd.fee_direction=1,0,1)*bf.total_money) '支出'
  123. from yuxin_bi.bi_bill_flow_detail bfd
  124. left join yuxin_finance.fin_finance_bill_flow bf on bf.id=bfd.flow_id and bf.biz_type=2
  125. left join yuxin_finance.fin_finance_bill_detail bd on bd.id=bfd.bill_detail_id and bf.biz_type=2
  126. left join yuxin_setting.setting_dictionary sd on sd.id=bd.fee_subject_id
  127. where bf.biz_id is not null and bf.audit_status=2 and MONTH(bd.audit_time) = MONTH(CURRENT_DATE()) AND YEAR(bd.audit_time) = YEAR(CURRENT_DATE())
  128. group by bf.biz_id, bd.fee_subject_id, sd.name
  129. ) _this_month_audited on _this_month_audited.biz_id= m.合同ID and m.fee_subject_id=_this_month_audited.fee_subject_id
  130. left join (
  131. select bf.biz_id, sd.name, bd.fee_subject_id,
  132. SUM(IF(bd.fee_direction=1,1,0)*bf.total_money) '收入',
  133. SUM(IF(bd.fee_direction=1,0,1)*bf.total_money) '支出'
  134. from yuxin_bi.bi_bill_flow_detail bfd
  135. left join yuxin_finance.fin_finance_bill_flow bf on bf.id=bfd.flow_id and bf.biz_type=2
  136. left join yuxin_finance.fin_finance_bill_detail bd on bd.id=bfd.bill_detail_id and bf.biz_type=2
  137. left join yuxin_setting.setting_dictionary sd on sd.id=bd.fee_subject_id
  138. where bf.biz_id is not null and bf.audit_status=2 and MONTH(bd.audit_time) <= MONTH(CURRENT_DATE()) AND YEAR(bd.audit_time) <= YEAR(CURRENT_DATE())
  139. group by bf.biz_id, bd.fee_subject_id, sd.name
  140. ) _until_this_month_audited on _until_this_month_audited.biz_id= m.合同ID and m.fee_subject_id=_until_this_month_audited.fee_subject_id
  141. left join (
  142. select bf.biz_id, sd.name, bd.fee_subject_id,
  143. SUM(IF(bd.fee_direction=1,1,0)*bf.total_money) '收入',
  144. SUM(IF(bd.fee_direction=1,0,1)*bf.total_money) '支出'
  145. from yuxin_bi.bi_bill_flow_detail bfd
  146. left join yuxin_finance.fin_finance_bill_flow bf on bf.id=bfd.flow_id and bf.biz_type=2
  147. left join yuxin_finance.fin_finance_bill_detail bd on bd.id=bfd.bill_detail_id and bf.biz_type=2
  148. left join yuxin_setting.setting_dictionary sd on sd.id=bd.fee_subject_id
  149. where bf.biz_id is not null and bf.audit_status=1 and MONTH(bd.audit_time) = MONTH(CURRENT_DATE()) AND YEAR(bd.audit_time) = YEAR(CURRENT_DATE())
  150. group by bf.biz_id, bd.fee_subject_id, sd.name
  151. ) _this_month_auditing on _this_month_auditing.biz_id= m.合同ID and m.fee_subject_id=_this_month_auditing.fee_subject_id
  152. left join (
  153. select bf.biz_id, sd.name, bd.fee_subject_id,
  154. SUM(IF(bd.fee_direction=1,1,0)*bf.total_money) '收入',
  155. SUM(IF(bd.fee_direction=1,0,1)*bf.total_money) '支出'
  156. from yuxin_bi.bi_bill_flow_detail bfd
  157. left join yuxin_finance.fin_finance_bill_flow bf on bf.id=bfd.flow_id and bf.biz_type=2
  158. left join yuxin_finance.fin_finance_bill_detail bd on bd.id=bfd.bill_detail_id and bf.biz_type=2
  159. left join yuxin_setting.setting_dictionary sd on sd.id=bd.fee_subject_id
  160. where bf.biz_id is not null and bf.audit_status=1 and MONTH(bd.audit_time) <= MONTH(CURRENT_DATE()) AND YEAR(bd.audit_time) <= YEAR(CURRENT_DATE())
  161. group by bf.biz_id, bd.fee_subject_id, sd.name
  162. ) _until_this_month_auditing on _until_this_month_auditing.biz_id= m.合同ID and m.fee_subject_id=_until_this_month_auditing.fee_subject_id
  163. left join (
  164. select bf.biz_id, sd.name, bd.fee_subject_id,
  165. SUM(IF(bd.fee_direction=1,1,0)*bf.total_money) '收入',
  166. SUM(IF(bd.fee_direction=1,0,1)*bf.total_money) '支出'
  167. from yuxin_bi.bi_bill_flow_detail bfd
  168. left join yuxin_finance.fin_finance_bill_flow bf on bf.id=bfd.flow_id and bf.biz_type=2
  169. left join yuxin_finance.fin_finance_bill_detail bd on bd.id=bfd.bill_detail_id and bf.biz_type=2
  170. left join yuxin_setting.setting_dictionary sd on sd.id=bd.fee_subject_id
  171. where bf.biz_id is not null and bf.audit_status=2 and MONTH(bd.audit_time) < CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') as DATE)
  172. group by bf.biz_id, bd.fee_subject_id, sd.name
  173. ) _until_last_month_audited on _until_last_month_audited.biz_id= m.合同ID and m.fee_subject_id=_until_last_month_audited.fee_subject_id
  174. ;