{
  "meta": {
    "$_GET": [
      {
        "type": "text",
        "name": "sort"
      },
      {
        "type": "text",
        "name": "dir"
      }
    ]
  },
  "exec": {
    "steps": [
      {
        "name": "",
        "module": "auth",
        "action": "restrict",
        "options": {
          "provider": "security",
          "permissions": [
            "Active"
          ]
        }
      },
      {
        "name": "list",
        "module": "dbupdater",
        "action": "custom",
        "options": {
          "connection": "db",
          "sql": {
            "query": "SELECT \n    lm.id,\n    lm.loan_name,\n    lm.starting_date,\n    lm.ending_date,\n    lm.total_amount AS principle_amount,\n    lm.no_of_emi,\n    lm.interest_amount,\n    c.name AS loan_type,\n    c1.name AS loan_provider,\n    lm.due_date,\n    lm.emi_amount,\n\n    COUNT(ld.id) AS total_emi,\n\n    SUM(CASE WHEN ld.status = 0 THEN 1 ELSE 0 END) AS total_pending_emi,\n\n    SUM(CASE WHEN ld.status = 0 THEN ld.loan_amount ELSE 0 END) AS total_remaining_amount,\n   \n    SUM(CASE WHEN ld.status = 1 THEN ld.loan_amount ELSE 0 END) AS total_paid_amount,\n\n    -- ✅ % Loan Paid\n    ROUND(\n    CASE \n        WHEN lm.no_of_emi > 0\n        THEN (\n            SUM(CASE WHEN ld.status = 1 THEN 1 ELSE 0 END)\n            / lm.no_of_emi\n        ) * 100\n        ELSE 0\n    END\n,2) AS percentage_paid\nFROM loan_master lm\nINNER JOIN collections c \n    ON c.id = lm.loan_type \nINNER JOIN collections c1 \n    ON c1.id = lm.loan_provider \nLEFT JOIN loan_details ld \n    ON ld.loan_id = lm.id\nWHERE lm.status = 0\nGROUP BY lm.id;",
            "params": []
          }
        },
        "output": true,
        "meta": [
          {
            "name": "id",
            "type": "number"
          },
          {
            "name": "loan_name",
            "type": "text"
          },
          {
            "name": "starting_date",
            "type": "date"
          },
          {
            "name": "ending_date",
            "type": "date"
          },
          {
            "name": "principle_amount",
            "type": "number"
          },
          {
            "name": "no_of_emi",
            "type": "number"
          },
          {
            "name": "interest_amount",
            "type": "number"
          },
          {
            "name": "loan_type",
            "type": "text"
          },
          {
            "name": "loan_provider",
            "type": "text"
          },
          {
            "name": "due_date",
            "type": "text"
          },
          {
            "name": "emi_amount",
            "type": "number"
          },
          {
            "name": "total_emi",
            "type": "text"
          },
          {
            "name": "total_pending_emi",
            "type": "text"
          },
          {
            "name": "total_remaining_amount",
            "type": "number"
          }
        ],
        "outputType": "array",
        "collapsed": true
      }
    ]
  }
}