@LoanDelinquencyFeature
Feature: LoanDelinquency

  @TestRailId:C2963
  Scenario: Verify Loan delinquency pause API - PAUSE and RESUME by loanId
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
    When Admin sets the business date to "20 October 2023"
    When Admin initiate a DELINQUENCY RESUME with startDate: "20 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
      | RESUME | 20 October 2023 |                 |

  @TestRailId:C2964
  Scenario: Verify Loan delinquency pause API - PAUSE and RESUME by loanExternalId
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin initiate a DELINQUENCY PAUSE by loanExternalId with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
    When Admin sets the business date to "20 October 2023"
    When Admin initiate a DELINQUENCY RESUME by loanExternalId with startDate: "20 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
      | RESUME | 20 October 2023 |                 |

  @TestRailId:C2965
  Scenario: Verify Loan delinquency pause API - PAUSE and RESUME actions supported only
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    Then Initiating a delinquency-action other than PAUSE or RESUME in action field results an error - startDate: "16 October 2023", endDate: "30 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
    When Admin sets the business date to "20 October 2023"
    When Admin initiate a DELINQUENCY RESUME by loanExternalId with startDate: "20 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
      | RESUME | 20 October 2023 |                 |

  @TestRailId:C2966
  Scenario: Verify Loan delinquency pause API - PAUSE with start date on actual business date
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |

  @TestRailId:C2967
  Scenario: Verify Loan delinquency pause API - PAUSE with start date later than actual business date
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "25 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 25 October 2023 | 30 October 2023 |

  @TestRailId:C2968
  Scenario: Verify Loan delinquency pause API - PAUSE with start date before than actual business date is possible
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "14 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 14 October 2023 | 30 October 2023 |

  @TestRailId:C2969
  Scenario: Verify Loan delinquency pause API - PAUSE action on non-active loan result an error
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
#    pending approval
    Then Loan status will be "SUBMITTED_AND_PENDING_APPROVAL"
    Then Initiating a DELINQUENCY PAUSE on a non-active loan results an error - startDate: "16 October 2023", endDate: "30 October 2023"
#    approved
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    Then Loan status will be "APPROVED"
    Then Initiating a DELINQUENCY PAUSE on a non-active loan results an error - startDate: "16 October 2023", endDate: "30 October 2023"
#    overpaid
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    And Customer makes "AUTOPAY" repayment on "01 October 2023" with 1000 EUR transaction amount
    Then Loan status will be "OVERPAID"
    Then Initiating a DELINQUENCY PAUSE on a non-active loan results an error - startDate: "16 October 2023", endDate: "30 October 2023"
#   closed
    And Admin makes Credit Balance Refund transaction on "01 October 2023" with 250 EUR transaction amount
    Then Loan status will be "CLOSED_OBLIGATIONS_MET"
    When Admin sets the business date to "16 October 2023"
    Then Initiating a DELINQUENCY PAUSE on a non-active loan results an error - startDate: "16 October 2023", endDate: "30 October 2023"

  @TestRailId:C2970
  Scenario: Verify Loan delinquency pause API - RESUME action on non-active loan result an error
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
#    overpaid
    When Admin sets the business date to "16 October 2023"
    And Customer makes "AUTOPAY" repayment on "16 October 2023" with 1000 EUR transaction amount
    Then Loan status will be "OVERPAID"
    Then Initiating a DELINQUENCY RESUME on a non-active loan results an error - startDate: "16 October 2023"
#   closed
    And Admin makes Credit Balance Refund transaction on "16 October 2023" with 250 EUR transaction amount
    Then Loan status will be "CLOSED_OBLIGATIONS_MET"
    Then Initiating a DELINQUENCY RESUME on a non-active loan results an error - startDate: "16 October 2023"

  @TestRailId:C2971
  Scenario: Verify Loan delinquency pause API - Overlapping PAUSE periods result an error
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
    When Admin sets the business date to "20 October 2023"
    Then Overlapping PAUSE periods result an error - startDate: "20 October 2023", endDate: "30 October 2023"

  @TestRailId:C2972
  Scenario: Verify Loan delinquency pause API - RESUME without an active PAUSE period results an error
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    Then Initiating a DELINQUENCY RESUME without an active PAUSE period results an error - startDate: "01 October 2023"

  @TestRailId:C2973
  Scenario: Verify Loan delinquency pause API - RESUME with start date before than actual business date results an error
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
    When Admin sets the business date to "20 October 2023"
    Then Initiating a DELINQUENCY RESUME with start date other than actual business date results an error - startDate: "01 October 2023"

  @TestRailId:C2974
  Scenario: Verify Loan delinquency pause API - RESUME with start date later than actual business date results an error
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
    When Admin sets the business date to "20 October 2023"
    Then Initiating a DELINQUENCY RESUME with start date other than actual business date results an error - startDate: "21 October 2023"

  @TestRailId:C2975
  Scenario: Verify Loan delinquency pause API - RESUME with end date results an error
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |
    When Admin sets the business date to "20 October 2023"
    Then Initiating a DELINQUENCY RESUME with an endDate results an error - startDate: "20 October 2023", endDate: "30 October 2023"

  @Skip @TestRailId:C2992
  Scenario: Verify Loan level loan delinquency - loan goes into delinquency pause then will be resumed
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "05 October 2023"
    When Admin runs inline COB job for Loan
    Then Admin checks that delinquency range is: "RANGE_1" and has delinquentDate "2023-10-04"
    When Admin sets the business date to "17 November 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "17 November 2023" and endDate: "30 December 2023"
    Then Delinquency-actions have the following data:
      | action | startDate        | endDate          |
      | PAUSE  | 17 November 2023 | 30 December 2023 |
    When Admin runs inline COB job for Loan
    Then Admin checks that delinquency range is: "RANGE_30" and has delinquentDate "2023-10-04"
    When Admin sets the business date to "01 December 2023"
    When Admin initiate a DELINQUENCY RESUME with startDate: "01 December 2023"
    Then Delinquency-actions have the following data:
      | action | startDate        | endDate          |
      | PAUSE  | 17 November 2023 | 30 December 2023 |
      | RESUME | 01 December 2023 |                  |
    When Admin runs inline COB job for Loan
    Then Admin checks that delinquency range is: "RANGE_30" and has delinquentDate "2023-10-04"

  @TestRailId:C2979
  Scenario: Verify Installment level loan delinquency - loan goes into delinquency bucket
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 December 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 3       | RANGE_30 | 500.00 |
      | 4       | RANGE_60 | 500.00 |
    Then Installment level delinquency event has correct data

  @TestRailId:C2980
  Scenario: Verify Installment level loan delinquency - loan goes from one delinquency bucket to an other
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 November 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 1       | RANGE_1  | 250.00 |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 500.00 |
    Then Installment level delinquency event has correct data
    When Admin sets the business date to "16 December 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 3       | RANGE_30 | 500.00 |
      | 4       | RANGE_60 | 500.00 |
    Then Installment level delinquency event has correct data

  @TestRailId:C2981
  Scenario: Verify Installment level loan delinquency - loan goes out from delinquency by late repayment
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 December 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 3       | RANGE_30 | 500.00 |
      | 4       | RANGE_60 | 500.00 |
    Then Installment level delinquency event has correct data
    When Admin sets the business date to "17 December 2023"
    And Customer makes "AUTOPAY" repayment on "17 December 2023" with 1000 EUR transaction amount
    Then Installment level delinquency event has correct data
    Then INSTALLMENT level delinquency is null

  @TestRailId:C2982
  Scenario: Verify Installment level loan delinquency - some of the installments go out from delinquency by late repayment
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "25 October 2023"
    When Admin runs inline COB job for Loan
    Then Installment level delinquency event has correct data
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 500.00 |
    When Admin sets the business date to "26 October 2023"
    And Customer makes "AUTOPAY" repayment on "26 October 2023" with 250 EUR transaction amount
    Then Installment level delinquency event has correct data
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |

  @TestRailId:C2983
  Scenario: Verify Installment level loan delinquency - loan goes out from delinquency by Goodwill credit transaction
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 December 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 3       | RANGE_30 | 500.00 |
      | 4       | RANGE_60 | 500.00 |
    Then Installment level delinquency event has correct data
    When Admin sets the business date to "17 December 2023"
    When Customer makes "GOODWILL_CREDIT" transaction with "AUTOPAY" payment type on "17 December 2023" with 1000 EUR transaction amount and system-generated Idempotency key
    Then Installment level delinquency event has correct data
    Then INSTALLMENT level delinquency is null

  @TestRailId:C2984
  Scenario: Verify Installment level loan delinquency - some of the installments go out from delinquency by Goodwill credit transaction
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "25 October 2023"
    When Admin runs inline COB job for Loan
    Then Installment level delinquency event has correct data
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 500.00 |
    When Admin sets the business date to "26 October 2023"
    When Customer makes "GOODWILL_CREDIT" transaction with "AUTOPAY" payment type on "26 October 2023" with 250 EUR transaction amount and system-generated Idempotency key
    Then Installment level delinquency event has correct data
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |

  @TestRailId:C2985
  Scenario: Verify Installment level loan delinquency - loan with charges goes into delinquency bucket
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin adds "LOAN_NSF_FEE" due date charge with "05 October 2023" due date and 20 EUR transaction amount
    When Admin sets the business date to "20 October 2023"
    When Admin adds "LOAN_SNOOZE_FEE" due date charge with "20 October 2023" due date and 20 EUR transaction amount
    When Admin sets the business date to "16 December 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 3       | RANGE_30 | 520.00 |
      | 4       | RANGE_60 | 520.00 |
    Then Installment level delinquency event has correct data

  @TestRailId:C2987
  Scenario: Verify Installment level loan delinquency - loan goes into delinquency pause
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 November 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 1       | RANGE_1  | 250.00 |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 500.00 |
    Then Installment level delinquency event has correct data
    When Admin sets the business date to "17 November 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "17 November 2023" and endDate: "30 November 2023"
    Then Delinquency-actions have the following data:
      | action | startDate        | endDate          |
      | PAUSE  | 17 November 2023 | 30 November 2023 |
    When Admin runs inline COB job for Loan
    Then Installment level delinquency event has correct data
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 1       | RANGE_1  | 250.00 |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 500.00 |
    When Admin sets the business date to "30 November 2023"
    When Admin runs inline COB job for Loan
    Then Installment level delinquency event has correct data
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 1       | RANGE_1  | 250.00 |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 500.00 |
    When Admin sets the business date to "01 January 2024"
    When Admin runs inline COB job for Loan
    Then Installment level delinquency event has correct data
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 3       | RANGE_30 | 500.00 |
      | 4       | RANGE_60 | 500.00 |

  @TestRailId:C2988
  Scenario: Verify Installment level loan delinquency - loan goes into delinquency pause then will be resumed
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 November 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 1       | RANGE_1  | 250.00 |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 500.00 |
    Then Installment level delinquency event has correct data
    When Admin sets the business date to "17 November 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "17 November 2023" and endDate: "30 December 2023"
    Then Delinquency-actions have the following data:
      | action | startDate        | endDate          |
      | PAUSE  | 17 November 2023 | 30 December 2023 |
    When Admin runs inline COB job for Loan
    Then Installment level delinquency event has correct data
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 1       | RANGE_1  | 250.00 |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 500.00 |
    When Admin sets the business date to "01 December 2023"
    When Admin initiate a DELINQUENCY RESUME with startDate: "01 December 2023"
    Then Delinquency-actions have the following data:
      | action | startDate        | endDate          |
      | PAUSE  | 17 November 2023 | 30 December 2023 |
      | RESUME | 01 December 2023 |                  |
    When Admin runs inline COB job for Loan
    Then Installment level delinquency event has correct data
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 1       | RANGE_1  | 250.00 |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 500.00 |

  @TestRailId:C2990
  Scenario: Verify that a non-super user with CREATE_DELINQUENCY_ACTION permission can initiate a DELINQUENCY PAUSE
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin creates new user with "CREATE_DELINQUENCY_ACTION_USER" username, "CREATE_DELINQUENCY_ACTION_ROLE" role name and given permissions:
      | CREATE_DELINQUENCY_ACTION |
      | REPAYMENT_LOAN            |
    When Created user with CREATE_DELINQUENCY_ACTION permission initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 30 October 2023 |

  @TestRailId:C2991
  Scenario: Verify that a non-super user with no CREATE_DELINQUENCY_ACTION permission gets an error when initiate a DELINQUENCY PAUSE
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "16 October 2023"
    When Admin creates new user with "NO_CREATE_DELINQUENCY_ACTION_USER" username, "NO_CREATE_DELINQUENCY_ACTION_ROLE" role name and given permissions:
      | REPAYMENT_LOAN |
    Then Created user with no CREATE_DELINQUENCY_ACTION permission gets an error when initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "30 October 2023"

  @TestRailId:C2999
  Scenario: Verify Loan delinquency pause E2E - full PAUSE period
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "02 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 250.0            | 04 October 2023 | 0              | 1           |
    Then INSTALLMENT level delinquency is null
    When Admin sets the business date to "04 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 250.0            | 04 October 2023 | 0              | 3           |
    Then INSTALLMENT level delinquency is null
    When Admin sets the business date to "05 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 250.0            | 04 October 2023 | 1              | 4           |
#   --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    When Admin sets the business date to "06 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "06 October 2023" and endDate: "30 October 2023"
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 250.0            | 04 October 2023 | 2              | 5           |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    When Admin sets the business date to "30 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 500.0            | 04 October 2023 | 2              | 29          |
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    When Admin sets the business date to "31 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 500.0            | 04 October 2023 | 3              | 30          |
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | false  | 06 October 2023  | 30 October 2023 |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |

  @TestRailId:C3000
  Scenario: Verify Loan delinquency pause E2E - PAUSE period with RESUME
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
#    --- Delinquency pause ---
    When Admin sets the business date to "15 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "15 October 2023" and endDate: "30 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 15 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 15 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 250.0            | 04 October 2023 | 11             | 14          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    Then Installment level delinquency event has correct data
#    --- Delinquency resume ---
    When Admin sets the business date to "25 October 2023"
    When Admin initiate a DELINQUENCY RESUME with startDate: "25 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 15 October 2023  | 25 October 2023 |
    When Admin sets the business date to "26 October 2023"
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | false  | 15 October 2023  | 25 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 15 October 2023 | 30 October 2023 |
      | RESUME | 25 October 2023 |                 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 500.0            | 04 October 2023 | 12             | 25          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    Then Installment level delinquency event has correct data

  @TestRailId:C3001
  Scenario: Verify Loan delinquency pause E2E - PAUSE period with RESUME and second PAUSE
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
#    --- Delinquency pause ---
    When Admin sets the business date to "15 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "15 October 2023" and endDate: "30 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 15 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 15 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 250.0            | 04 October 2023 | 11             | 14          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    Then Installment level delinquency event has correct data
#    --- Delinquency resume ---
    When Admin sets the business date to "25 October 2023"
    When Admin initiate a DELINQUENCY RESUME with startDate: "25 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 15 October 2023  | 25 October 2023 |
    When Admin sets the business date to "26 October 2023"
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | false  | 15 October 2023  | 25 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 15 October 2023 | 30 October 2023 |
      | RESUME | 25 October 2023 |                 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 500.0            | 04 October 2023 | 12             | 25          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    Then Installment level delinquency event has correct data
#   --- Delinquency runs ---
    When Admin sets the business date to "13 November 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | false  | 15 October 2023  | 25 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 15 October 2023 | 30 October 2023 |
      | RESUME | 25 October 2023 |                 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 750.0            | 04 October 2023 | 30             | 43          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 1       | RANGE_1  | 250.00 |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 250.00 |
#    --- Second delinquency pause ---
    When Admin sets the business date to "14 November 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "14 November 2023" and endDate: "30 November 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd   |
      | false  | 15 October 2023  | 25 October 2023  |
      | true   | 14 November 2023 | 30 November 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate        | endDate          |
      | PAUSE  | 15 October 2023  | 30 October 2023  |
      | RESUME | 25 October 2023  |                  |
      | PAUSE  | 14 November 2023 | 30 November 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 750.0            | 04 October 2023 | 31             | 44          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 1       | RANGE_1  | 250.00 |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 250.00 |
    Then Installment level delinquency event has correct data
#    --- Second delinquency ends ---
    When Admin sets the business date to "30 November 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd   |
      | false  | 15 October 2023  | 25 October 2023  |
      | true   | 14 November 2023 | 30 November 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate        | endDate          |
      | PAUSE  | 15 October 2023  | 30 October 2023  |
      | RESUME | 25 October 2023  |                  |
      | PAUSE  | 14 November 2023 | 30 November 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_30       | 1000.0           | 04 October 2023 | 31             | 60          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 2       | RANGE_3  | 500.00 |
      | 3       | RANGE_30 | 250.00 |
#    --- Delinquency runs again ---
    When Admin sets the business date to "01 December 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd   |
      | false  | 15 October 2023  | 25 October 2023  |
      | false  | 14 November 2023 | 30 November 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate        | endDate          |
      | PAUSE  | 15 October 2023  | 30 October 2023  |
      | RESUME | 25 October 2023  |                  |
      | PAUSE  | 14 November 2023 | 30 November 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_30       | 1000.0           | 04 October 2023 | 32             | 61          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 2       | RANGE_3  | 500.00 |
      | 3       | RANGE_30 | 250.00 |
    Then Installment level delinquency event has correct data

  @TestRailId:C3002
  Scenario: Verify Loan delinquency pause E2E - full repayment (late/due date) during PAUSE period
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
#    --- Delinquency pause ---
    When Admin sets the business date to "06 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "06 October 2023" and endDate: "30 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 250.0            | 04 October 2023 | 2              | 5           |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    Then Installment level delinquency event has correct data
#    --- Full repayment for late/due date installments ---
    When Admin sets the business date to "16 October 2023"
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 250.0            | 04 October 2023 | 2              | 15          |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    And Customer makes "AUTOPAY" repayment on "16 October 2023" with 500 EUR transaction amount
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 0.0              | null           | 0              | 0           |
    Then INSTALLMENT level delinquency is null

  @TestRailId:C3003
  Scenario: Verify Loan delinquency pause E2E - partial repayment during PAUSE period
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
#    --- Delinquency pause ---
    When Admin sets the business date to "06 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "06 October 2023" and endDate: "30 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 250.0            | 04 October 2023 | 2              | 5           |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    Then Installment level delinquency event has correct data
#    --- Full repayment for late/due date installments ---
    When Admin sets the business date to "16 October 2023"
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 250.0            | 04 October 2023 | 2              | 15          |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    And Customer makes "AUTOPAY" repayment on "16 October 2023" with 150 EUR transaction amount
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 100.0            | 04 October 2023 | 2              | 15          |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 100.00 |

  @TestRailId:C3004
  Scenario: Verify Loan delinquency pause E2E - full repayment (only late) during PAUSE period then RESUME
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
#    --- Delinquency pause ---
    When Admin sets the business date to "06 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "06 October 2023" and endDate: "30 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 250.0            | 04 October 2023 | 2              | 5           |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    Then Installment level delinquency event has correct data
#    --- Full repayment for late/due date installments ---
    When Admin sets the business date to "16 October 2023"
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 250.0            | 04 October 2023 | 2              | 15          |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    And Customer makes "AUTOPAY" repayment on "16 October 2023" with 250 EUR transaction amount
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 30 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 0.0              | null           | 0              | 0           |
    Then INSTALLMENT level delinquency is null
#   --- Delinquency resume ---
    When Admin sets the business date to "25 October 2023"
    When Admin initiate a DELINQUENCY RESUME with startDate: "25 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 06 October 2023  | 25 October 2023 |
    When Admin sets the business date to "26 October 2023"
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | false  | 06 October 2023  | 25 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
      | RESUME | 25 October 2023 |                 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 250.0            | 19 October 2023 | 0              | 10          |
    Then INSTALLMENT level delinquency is null
#   --- Delinquency runs ---
    When Admin sets the business date to "15 November 2023"
    When Admin runs inline COB job for Loan
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | false  | 06 October 2023  | 25 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 06 October 2023 | 30 October 2023 |
      | RESUME | 25 October 2023 |                 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 500.0            | 19 October 2023 | 8              | 30          |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    Then Installment level delinquency event has correct data

  @TestRailId:C3013
  Scenario: Verify that in case of resume on end/start date of continous pause periods first period ends automatically, second period ended by resume
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "25 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "25 October 2023" and endDate: "30 October 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 25 October 2023 | 30 October 2023 |
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 25 October 2023  | 30 October 2023 |
    When Admin sets the business date to "30 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "30 October 2023" and endDate: "15 November 2023"
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate          |
      | PAUSE  | 25 October 2023 | 30 October 2023  |
      | PAUSE  | 30 October 2023 | 15 November 2023 |
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd   |
      | true   | 25 October 2023  | 30 October 2023  |
      | true   | 30 October 2023  | 15 November 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 500.0            | 04 October 2023 | 21             | 29          |
    Then INSTALLMENT level delinquency is null
    When Admin initiate a DELINQUENCY RESUME with startDate: "30 October 2023"
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 500.0            | 04 October 2023 | 21             | 29          |
    Then INSTALLMENT level delinquency is null
    When Admin runs inline COB job for Loan
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate          |
      | PAUSE  | 25 October 2023 | 30 October 2023  |
      | PAUSE  | 30 October 2023 | 15 November 2023 |
      | RESUME | 30 October 2023 |                  |
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | true   | 25 October 2023  | 30 October 2023 |
      | true   | 30 October 2023  | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 500.0            | 04 October 2023 | 21             | 29          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 500.00 |
    When Admin sets the business date to "31 October 2023"
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | false  | 25 October 2023  | 30 October 2023 |
      | false  | 30 October 2023  | 30 October 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 500.0            | 04 October 2023 | 22             | 30          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 500.00 |

  @TestRailId:C3014
  Scenario: Verify that creating a loan with Advanced payment allocation with product no Advanced payment allocation set results an error
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with Advanced payment allocation and with product no Advanced payment allocation set results an error:
      | LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN30       | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |

  @TestRailId:C3015
  Scenario: Verify Backdated Pause Delinquency - Event Trigger: LoanDelinquencyRangeChangeBusinessEvent, LoanAccountDelinquencyPauseChangedBusinessEvent check
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "25 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 500.0            | 04 October 2023 | 21             | 24          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 500.00 |
    When Admin sets the business date to "27 October 2023"
#    event checks included in next steps
    When Admin initiate a DELINQUENCY PAUSE with startDate: "25 October 2023" and endDate: "15 November 2023"
    Then Admin checks that delinquency range is: "RANGE_3" and has delinquentDate "2023-10-04"
    Then Installment level delinquency event has correct data
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate          |
      | PAUSE  | 25 October 2023 | 15 November 2023 |
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd   |
      | true   | 25 October 2023  | 15 November 2023 |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_3        | 500.0            | 04 October 2023 | 21             | 26          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 500.00 |

  @TestRailId:C3016
  Scenario: Verify that for pause period calculations business date is being used instead of COB date
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    And Customer makes "AUTOPAY" repayment on "01 October 2023" with 250 EUR transaction amount
#    --- Delinquency pause ---
    When Admin sets the business date to "05 October 2023"
    When Admin initiate a DELINQUENCY PAUSE with startDate: "16 October 2023" and endDate: "25 October 2023"
    When Admin runs inline COB job for Loan
    When Admin sets the business date to "25 October 2023"
    When Admin runs inline COB job for Loan
#    --- Because of grace period 3 days delinguency won't start ---
    When Admin sets the business date to "26 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 250.0            | 19 October 2023 | 0              | 10          |
    Then INSTALLMENT level delinquency is null
#    -----------
    When Admin sets the business date to "27 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 250.0            | 19 October 2023 | 0              | 11          |
    Then INSTALLMENT level delinquency is null
#    -----------
    When Admin sets the business date to "28 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 250.0            | 19 October 2023 | 0              | 12          |
    Then INSTALLMENT level delinquency is null
#    --- After grace period ends delinquency starts ---
    When Admin sets the business date to "29 October 2023"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_1        | 250.0            | 19 October 2023 | 1              | 13          |
#    --- Grace period applied only on Loan level, not on installment level ---
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range   | Amount |
      | 2       | RANGE_3 | 250.00 |
    Then Installment level delinquency event has correct data
    Then Loan Delinquency pause periods has the following data:
      | active | pausePeriodStart | pausePeriodEnd  |
      | false  | 16 October 2023  | 25 October 2023 |
    Then Delinquency-actions have the following data:
      | action | startDate       | endDate         |
      | PAUSE  | 16 October 2023 | 25 October 2023 |

  @TestRailId:C3018
  Scenario: Verify that if Global configuration: next-payment-due-date is set to: earliest-unpaid-date then in Loan details delinquent.nextPaymentDueDate will be the first unpaid installment date
    When Global config "next-payment-due-date" value set to "earliest-unpaid-date"
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "11 October 2023"
    Then Loan details delinquent.nextPaymentDueDate will be "01 October 2023"
    When Admin sets the business date to "21 October 2023"
    Then Loan details delinquent.nextPaymentDueDate will be "01 October 2023"
    When Global config "next-payment-due-date" value set to "earliest-unpaid-date"

  @TestRailId:C3019
  Scenario: Verify that if Global configuration: next-payment-due-date is set to: next-unpaid-due-date then in Loan details delinquent.nextPaymentDueDate will be the next unpaid installment date regardless of the status of previous installments
    When Global config "next-payment-due-date" value set to "next-unpaid-due-date"
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "11 October 2023"
    Then Loan details delinquent.nextPaymentDueDate will be "16 October 2023"
    When Admin sets the business date to "21 October 2023"
    Then Loan details delinquent.nextPaymentDueDate will be "31 October 2023"
    When Global config "next-payment-due-date" value set to "earliest-unpaid-date"

  @TestRailId:C3032
  Scenario: Verify that delinquencyRange field in LoanAccountDelinquencyRangeDataV1 is not null in case of delinquent Loan
    When Admin sets the business date to "01 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    When Admin successfully disburse the loan on "01 October 2023" with "1000" EUR transaction amount
    When Admin sets the business date to "01 December 2023"
    When Admin runs inline COB job for Loan
    Then LoanAccountDelinquencyRangeDataV1 has delinquencyRange field with value "RANGE_30"
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_30       | 1000.0           | 04 October 2023 | 58             | 61          |

  @TestRailId:C3035
  Scenario: Verify that delinquency is NOT applied after loan submitted and approved
    When Admin sets the business date to "30 October 2023"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 October 2023   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 0.0              | null           | 0              | 0           |
    And Admin successfully approves the loan on "01 October 2023" with "1000" amount and expected disbursement date on "01 October 2023"
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate | delinquentDays | pastDueDays |
      | NO_DELINQUENCY | 0.0              | null           | 0              | 0           |

  @TestRailId:C3047
  Scenario: Verify that delinquent.lastRepaymentAmount is calculated correctly in case of auto downpayment
    When Admin sets the business date to "01 February 2024"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 February 2024  | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 February 2024" with "1000" amount and expected disbursement date on "01 February 2024"
    When Admin successfully disburse the loan on "01 February 2024" with "1000" EUR transaction amount
    When Admin sets the business date to "01 April 2024"
    Then In Loan details delinquent.lastRepaymentAmount is 250 EUR with lastRepaymentDate "01 February 2024"

  @TestRailId:C3066 @AdvancedPaymentAllocation
  Scenario: Verify that on Loans in SUBMITTED_AND_PENDING_APPROVAL or APPROVED status delinquency is not applied
    When Admin sets the business date to "01 February 2024"
    When Admin creates a client with random data
    When Admin set "PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION" loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment allocation rule
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION | 01 February 2024  | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 45                | DAYS                  | 15             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    When Admin sets the business date to "01 March 2024"
    When Admin runs inline COB job for Loan
    Then Admin checks that delinquency range is: "NO_DELINQUENCY" and has delinquentDate ""
    And Admin successfully approves the loan on "01 March 2024" with "1000" amount and expected disbursement date on "01 March 2024"
    Then Admin checks that delinquency range is: "NO_DELINQUENCY" and has delinquentDate ""

#    TODO remove skip when LoanDelinquencyRangeChangeBusinessEvent has wrong values compared to LoanDetails is done and scenario below here does not fail
  @Skip @TestRailId:C3093
  Scenario: Verify that LoanDelinquencyRangeChangeBusinessEvent has the correct Delinquency range, date and amount on both loan- and installment-level
    When Admin sets the business date to "01 January 2024"
    When Admin creates a client with random data
    When Admin creates a fully customized loan with the following data:
      | LoanProduct                                                                                       | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type  | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy            |
      | PIN4_DOWNPAYMENT_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_INSTALLMENT_LEVEL_DELINQUENCY | 01 January 2024   | 1000           | 0                      | FLAT          | SAME_AS_REPAYMENT_PERIOD    | EQUAL_INSTALLMENTS | 90                | DAYS                  | 30             | DAYS                   | 3                  | 0                       | 0                      | 0                    | ADVANCED_PAYMENT_ALLOCATION |
    And Admin successfully approves the loan on "01 January 2024" with "1000" amount and expected disbursement date on "01 January 2024"
    When Admin successfully disburse the loan on "01 January 2024" with "1000" EUR transaction amount
    When Admin sets the business date to "05 March 2024"
    When Admin runs inline COB job for Loan
    Then Loan has the following LOAN level delinquency data:
      | classification | delinquentAmount | delinquentDate  | delinquentDays | pastDueDays |
      | RANGE_60       | 750.0            | 04 January 2024 | 61             | 64          |
    Then Loan has the following INSTALLMENT level delinquency data:
      | rangeId | Range    | Amount |
      | 2       | RANGE_3  | 250.00 |
      | 3       | RANGE_30 | 250.00 |
      | 4       | RANGE_60 | 250.00 |
    Then LoanDelinquencyRangeChangeBusinessEvent has the same Delinquency range, date and amount as in LoanDetails on both loan- and installment-level
