{
  "meta": {
    "$_GET": [
      {
        "type": "text",
        "name": "offset"
      },
      {
        "type": "text",
        "name": "limit"
      },
      {
        "type": "text",
        "name": "sort"
      },
      {
        "type": "text",
        "name": "dir"
      },
      {
        "type": "text",
        "name": "search"
      }
    ]
  },
  "exec": {
    "steps": [
      {
        "name": "",
        "module": "auth",
        "action": "restrict",
        "options": {
          "provider": "security",
          "permissions": [
            "Active"
          ]
        }
      },
      {
        "name": "list",
        "module": "dbconnector",
        "action": "paged",
        "options": {
          "connection": "db",
          "sql": {
            "type": "SELECT",
            "columns": [
              {
                "table": "expense",
                "column": "invoice_number"
              },
              {
                "table": "expense",
                "column": "quantity"
              },
              {
                "table": "expense",
                "column": "purchase_date"
              },
              {
                "table": "expense",
                "column": "receipt_url"
              },
              {
                "table": "expense",
                "column": "remark"
              },
              {
                "table": "expense",
                "column": "amount"
              },
              {
                "table": "sc",
                "column": "subcategory_name",
                "alias": "item_name"
              },
              {
                "table": "c1",
                "column": "name",
                "alias": "unit"
              }
            ],
            "params": [
              {
                "operator": "equal",
                "type": "expression",
                "name": ":P1",
                "value": "{{$_GET.search}}",
                "test": ""
              },
              {
                "operator": "contains",
                "type": "expression",
                "name": ":P2",
                "value": "{{$_GET.search}}",
                "test": ""
              },
              {
                "operator": "contains",
                "type": "expression",
                "name": ":P3",
                "value": "{{$_GET.search}}",
                "test": ""
              }
            ],
            "table": {
              "name": "expense"
            },
            "primary": "id",
            "joins": [
              {
                "table": "sub_categories",
                "column": "*",
                "alias": "sc",
                "type": "INNER",
                "clauses": {
                  "condition": "AND",
                  "rules": [
                    {
                      "table": "sc",
                      "column": "id",
                      "operator": "equal",
                      "operation": "=",
                      "value": {
                        "table": "expense",
                        "column": "category_id"
                      }
                    }
                  ]
                },
                "primary": "id"
              },
              {
                "table": "collections",
                "column": "*",
                "alias": "c1",
                "type": "INNER",
                "clauses": {
                  "condition": "AND",
                  "rules": [
                    {
                      "table": "c1",
                      "column": "id",
                      "operator": "equal",
                      "operation": "=",
                      "value": {
                        "table": "expense",
                        "column": "unit"
                      }
                    }
                  ]
                },
                "primary": "id"
              }
            ],
            "query": "select `expense`.`invoice_number`, `expense`.`quantity`, `expense`.`purchase_date`, `expense`.`receipt_url`, `expense`.`remark`, `expense`.`amount`, `sc`.`subcategory_name` as `item_name`, `c1`.`name` as `unit` from `expense` inner join `sub_categories` as `sc` on `sc`.`id` = `expense`.`category_id` inner join `collections` as `c1` on `c1`.`id` = `expense`.`unit` where (`expense`.`amount` = ? or `sc`.`subcategory_name` like ? or `c1`.`name` like ?) order by `expense`.`purchase_date` DESC",
            "orders": [
              {
                "table": "expense",
                "column": "purchase_date",
                "direction": "DESC",
                "recid": 1
              }
            ],
            "wheres": {
              "condition": "AND",
              "rules": [
                {
                  "condition": "OR",
                  "rules": [
                    {
                      "id": "expense.amount",
                      "field": "expense.amount",
                      "type": "double",
                      "operator": "equal",
                      "value": "{{$_GET.search}}",
                      "data": {
                        "table": "expense",
                        "column": "amount",
                        "type": "number",
                        "columnObj": {
                          "type": "decimal",
                          "primary": false,
                          "nullable": false,
                          "name": "amount"
                        }
                      },
                      "operation": "="
                    },
                    {
                      "id": "sc.subcategory_name",
                      "field": "sc.subcategory_name",
                      "type": "string",
                      "operator": "contains",
                      "value": "{{$_GET.search}}",
                      "data": {
                        "table": "sc",
                        "column": "subcategory_name",
                        "type": "text",
                        "columnObj": {
                          "type": "string",
                          "maxLength": 50,
                          "primary": false,
                          "nullable": false,
                          "name": "subcategory_name"
                        }
                      },
                      "operation": "LIKE"
                    },
                    {
                      "id": "c1.name",
                      "field": "c1.name",
                      "type": "string",
                      "operator": "contains",
                      "value": "{{$_GET.search}}",
                      "data": {
                        "table": "c1",
                        "column": "name",
                        "type": "text",
                        "columnObj": {
                          "type": "string",
                          "maxLength": 50,
                          "primary": false,
                          "nullable": false,
                          "name": "name"
                        }
                      },
                      "operation": "LIKE"
                    }
                  ],
                  "conditional": "{{$_GET.search}}"
                }
              ],
              "conditional": null,
              "valid": true
            }
          }
        },
        "output": true,
        "meta": [
          {
            "name": "offset",
            "type": "number"
          },
          {
            "name": "limit",
            "type": "number"
          },
          {
            "name": "total",
            "type": "number"
          },
          {
            "name": "page",
            "type": "object",
            "sub": [
              {
                "name": "offset",
                "type": "object",
                "sub": [
                  {
                    "name": "first",
                    "type": "number"
                  },
                  {
                    "name": "prev",
                    "type": "number"
                  },
                  {
                    "name": "next",
                    "type": "number"
                  },
                  {
                    "name": "last",
                    "type": "number"
                  }
                ]
              },
              {
                "name": "current",
                "type": "number"
              },
              {
                "name": "total",
                "type": "number"
              }
            ]
          },
          {
            "name": "data",
            "type": "array",
            "sub": [
              {
                "type": "number",
                "name": "invoice_number"
              },
              {
                "type": "number",
                "name": "quantity"
              },
              {
                "type": "date",
                "name": "purchase_date"
              },
              {
                "type": "text",
                "name": "receipt_url"
              },
              {
                "type": "text",
                "name": "remark"
              },
              {
                "type": "number",
                "name": "amount"
              },
              {
                "type": "text",
                "name": "item_name"
              },
              {
                "type": "text",
                "name": "unit"
              }
            ]
          }
        ],
        "outputType": "object"
      }
    ]
  }
}