Guest User

Untitled

a guest
Jul 18th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.05 KB | None | 0 0
  1. select advance_id, employee_id, employee_code, employee_name, employee_last_name, mission_number,
  2. service_code, service_label, DATE_CREATION, description, AMOUNT_ADVANCE, round(amount_used,decimals_number)
  3. amount_used, currency_id,
  4. rate_eur, rate_local
  5. from
  6. (
  7. select advance_id, employee_id, employee_code, employee_name, employee_last_name, mission_number,
  8. service_code, service_label, DATE_CREATION, description, AMOUNT_ADVANCE, currency_id,
  9. rate_eur, rate_local, amount_used = (CASE WHEN
  10. (AMOUNT_ADVANCE-AMOUNT_RETURN)-(AMOUNT_AFFECTED_CONVERSION+AMOUNT_AFFECTED_EXPENSE+AMOUNT_AFFECTED_NOTE) > 0
  11. THEN (AMOUNT_AFFECTED_CONVERSION+AMOUNT_AFFECTED_EXPENSE+AMOUNT_AFFECTED_NOTE)
  12. WHEN (AMOUNT_ADVANCE-AMOUNT_RETURN) < 0 THEN 0
  13. ELSE AMOUNT_ADVANCE-AMOUNT_RETURN END),
  14. decimals_number, mission_date_end, mission_id, amount_return
  15. FROM( -- GENERATING RESULT TABLE
  16. SELECT ADV_T.*,
  17. 'AMOUNT_RETURN' = (CASE WHEN RET_T.AMOUNT_RETURN IS NULL THEN 0
  18. ELSE RET_T.AMOUNT_RETURN END),
  19. 'AMOUNT_AFFECTED_CONVERSION' = (CASE WHEN CON_T.AMOUNT_AFFECTED_CONVERSION IS NULL THEN 0
  20. ELSE CON_T.AMOUNT_AFFECTED_CONVERSION END),
  21. 'AMOUNT_AFFECTED_EXPENSE' = (CASE WHEN EXP_T.AMOUNT_AFFECTED_EXPENSE IS NULL THEN 0
  22. ELSE EXP_T.AMOUNT_AFFECTED_EXPENSE END),
  23. 'AMOUNT_AFFECTED_NOTE' = (CASE WHEN NOT_T.AMOUNT_AFFECTED_NOTE IS NULL THEN 0
  24. ELSE NOT_T.AMOUNT_AFFECTED_NOTE END)
  25.  
  26. FROM( -- GENERATING ADV_T (ADVANCE TABLE)
  27. SELECT A.*,
  28. EMPLOYEE.CODE 'employee_code',
  29. pers.name 'employee_last_name',
  30. pers.surname 'employee_name',
  31. service.code 'service_code',
  32. service.label 'service_label',
  33. C.CURRENCY_CODE 'CURRENCY_CODE',
  34. C.decimals_number,
  35. (case when A.mission_id = 0 then 0 else mission.number_piece end) 'mission_number',
  36. mission.date_end 'mission_date_end'
  37.  
  38. FROM FC_BS_ADVANCE A
  39. left outer join SU_ST_EMPLOYEE EMPLOYEE on (EMPLOYEE.EMPLOYEE_ID = A.EMPLOYEE_ID)
  40. left outer join su_st_personalinfo pers on (pers.personalinfo_id = EMPLOYEE.personalinfo_id)
  41. left outer join CT_AC_CURRENCY C on (C.CURRENCY_ID = A.CURRENCY_ID)
  42. left outer join SU_ST_SERVICE service on (service.service_id = EMPLOYEE.service_id)
  43. left outer join SU_ST_COMPANY company on (company.company_id = EMPLOYEE.company_id)
  44. left outer join fc_bs_mission_order mission on (mission.mission_id = A.MISSION_ID)
  45. WHERE (A.ADVANCE_ID > 0) AND
  46. (A.EMPLOYEE_ID= ? or 1 = ?) AND
  47. (service.service_id = ? or 1 = ?) and
  48. (company.company_id = ? or 1 = ?) and
  49. (A.ADVANCE_ID != 0) AND
  50. (A.IS_CLOSED=0) AND
  51. (A.IS_DELETED=0)
  52. ) AS ADV_T
  53. -- CALCULATING RETURN AMOUNT
  54. LEFT OUTER JOIN
  55. (SELECT Z.ADVANCE_ID 'SOURCE_RETURN_ID', SUM(Z.AMOUNT_RETURN*A.RATE_EUR/Z.RATE_EUR) 'AMOUNT_RETURN'
  56. FROM FC_BS_ADV_RETURN Z ,FC_BS_ADVANCE A
  57. WHERE (Z.IS_DELETED=0)
  58. AND (A.ADVANCE_ID=Z.ADVANCE_ID)
  59. AND (A.ADVANCE_ID > 0)
  60. GROUP BY Z.ADVANCE_ID
  61. )AS RET_T
  62. ON (RET_T.SOURCE_RETURN_ID=ADV_T.ADVANCE_ID)
  63. -- CALCULATING AFFECTED AMOUNT BY CONVERSIONS
  64. LEFT OUTER JOIN
  65. (SELECT Z.ORIGINAL_ADVANCE_ID , SUM(Z.AMOUNT_SRC) 'AMOUNT_AFFECTED_CONVERSION'
  66. FROM FC_BS_ADVANCE Z
  67. WHERE (Z.IS_DELETED=0)
  68. GROUP BY Z.ORIGINAL_ADVANCE_ID
  69. )AS CON_T
  70. ON (CON_T.ORIGINAL_ADVANCE_ID=ADV_T.ADVANCE_ID)
  71. -- CALCULATING AFFECTED AMOUNT BY EXPENSES
  72. LEFT OUTER JOIN
  73. (SELECT Z.ADVANCE_ID, SUM(Z.AMOUNT_ADVANCE) 'AMOUNT_AFFECTED_EXPENSE'
  74. FROM FC_BS_EXPENSE Z
  75. WHERE Z.IS_REFUSED=0
  76. GROUP BY Z.ADVANCE_ID
  77. ) AS EXP_T
  78. ON (EXP_T.ADVANCE_ID=ADV_T.ADVANCE_ID)
  79. -- CALCULATING AFFECTED AMOUNT BY EXPENSE NOTE
  80. LEFT OUTER JOIN
  81. (SELECT Z.ADVANCE_ID, SUM(Z.AMOUNT_USED) 'AMOUNT_AFFECTED_NOTE'
  82. FROM FC_BS_ADV_NOTE_LIST Z
  83. GROUP BY ADVANCE_ID
  84. ) AS NOT_T
  85. ON (NOT_T.ADVANCE_ID=ADV_T.ADVANCE_ID)
  86. -- RESULT TABLE FORMED
  87. ) AS RESULT
  88. )as res
  89. where (mission_id = 0 and round(amount_used,decimals_number) = 0 AND amount_return = 0) or
  90. (mission_id != 0 and mission_date_end <= getDate() and round(amount_used,decimals_number) = 0 AND
  91. amount_return = 0) or
  92. (amount_advance - amount_return - round(amount_used, decimals_number) > 0 AND
  93. advance_id in (select distinct advance_id
  94. from fc_bs_adv_note_list))
  95. order by employee_code, date_creation
Add Comment
Please, Sign In to add comment