76 lines
2.0 KiB
ABAP
76 lines
2.0 KiB
ABAP
CLASS {{p}}tenancy_checker DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
|
PUBLIC SECTION.
|
|
INTERFACES {{p}}if_tenancy_check.
|
|
|
|
PRIVATE SECTION.
|
|
METHODS income_factor
|
|
IMPORTING iv_employment TYPE {{p}}if_tenancy_check=>ty_employment
|
|
iv_pets TYPE abap_bool
|
|
RETURNING VALUE(rv_factor) TYPE i.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}tenancy_checker IMPLEMENTATION.
|
|
METHOD {{p}}if_tenancy_check~check.
|
|
IF iv_rent <= 0.
|
|
rv_reason = {{p}}if_tenancy_check=>c_reason-rent.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
IF iv_income <= 0.
|
|
rv_reason = {{p}}if_tenancy_check=>c_reason-income.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
IF iv_persons < 1.
|
|
rv_reason = {{p}}if_tenancy_check=>c_reason-persons.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
IF iv_persons > 2 * iv_rooms.
|
|
rv_reason = {{p}}if_tenancy_check=>c_reason-capacity.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
IF iv_employment <> {{p}}if_tenancy_check=>c_employment-permanent
|
|
AND iv_employment <> {{p}}if_tenancy_check=>c_employment-fixed
|
|
AND iv_employment <> {{p}}if_tenancy_check=>c_employment-self.
|
|
rv_reason = {{p}}if_tenancy_check=>c_reason-employment.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
DATA(lv_factor) = income_factor( iv_employment = iv_employment
|
|
iv_pets = iv_pets ).
|
|
IF iv_income < iv_rent * lv_factor.
|
|
rv_reason = {{p}}if_tenancy_check=>c_reason-ratio.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
rv_reason = {{p}}if_tenancy_check=>c_reason-ok.
|
|
ENDMETHOD.
|
|
|
|
METHOD {{p}}if_tenancy_check~deposit.
|
|
IF iv_rent <= 0.
|
|
rv_deposit = 0.
|
|
ELSEIF iv_pets = abap_true.
|
|
rv_deposit = 3 * iv_rent.
|
|
ELSE.
|
|
rv_deposit = 2 * iv_rent.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
METHOD income_factor.
|
|
CASE iv_employment.
|
|
WHEN {{p}}if_tenancy_check=>c_employment-permanent.
|
|
rv_factor = 3.
|
|
WHEN {{p}}if_tenancy_check=>c_employment-fixed.
|
|
rv_factor = 4.
|
|
WHEN OTHERS.
|
|
rv_factor = 5.
|
|
ENDCASE.
|
|
IF iv_pets = abap_true.
|
|
rv_factor = rv_factor + 1.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
ENDCLASS.
|