Bill Scheduler

Overview

This bill scheduler is a cronjob scheduler for calculating the supervision bill. It runs based on environment configuration. It triggers multiple APIs to generate the supervision bill.

Dependency

  • MDMS

  • User

  • Contract

  • Expense Calculator

Key Functionalities

  • It creates supervision bills based on ACTIVE contracts using expense-calculate service /v1/_calculate API.

Code

Bill Scheduler

Configuration

  • Create a role in ACCESSCONTROL-ROLES/roles.json MDMS like this.

  • Create a SYSTEM user with BILL_CREATOR and SYSTEM roles. Find the curl below.

  • The same username will be used to generate bills BILL_GEN_CRONJOB, it’s defined in the environment config.

  • Cron job duration will be configured using environment variables from here.

curl --location 'http://localhost:8082/user/users/_createnovalidate' \
--header 'Content-Type: application/json' \
--data-raw '{
    "RequestInfo": {
        "api_id": "1",
        "ver": "1",
        "ts": null,
        "action": "create",
        "did": "",
        "key": "",
        "msg_id": "",
        "requester_id": "",
        "userInfo": {
            "userName": "BillCreator",
            "name": "BillCreator",
            "gender": "male",
            "mobileNumber": "9999999999",
            "active": true,
            "type": "EMPLOYEE",
            "tenantId": "{STATE_TANENT_ID}",
            "password": "eGov@123",
            "roles": [
                {
                    "code": "SUPERUSER",
                    "tenantId": "{STATE_TANENT_ID}"
                }
            ]
        }
    },
    "User": {
        "userName": "BILL_GEN_CRONJOB",
        "name": "Bill Generator",
        "gender": "male",
        "mobileNumber": "0000000000",
        "active": true,
        "type": "SYSTEM",
        "tenantId": "{STATE_TANENT_ID}",
        "password": "eGov@123",
        "roles": [
            {
                "code": "SYSTEM",
                "tenantId": "{STATE_TANENT_ID}"
            },
            {
                "code": "BILL_CREATOR",
                "name": "BILL_CREATOR",
                "tenantId": "{STATE_TANENT_ID}"
            }
        ]
    }
}'

Deployment

Helm Charts

Update schedular

You can update the configuration of scheduler in two ways

  1. Add the config in the DevOps environment file, and restart the service it will trigger the scheduler based on the updated environment configuration, and restart the expense-cronjob service.

expense-cronjob:
  cron:
    schedule: "*/1 * * * *"
    suspend: "false"
  1. Using commands Change schedule - kubectl patch cronjobs expense-cronjob -p '{"spec" : {"schedule": "*/10 * * * *" }}'

    Pause cron job -

    kubectl patch cronjobs expense-cronjob -p '{"spec" : {"suspend" : true }}' Resume cron job -

    kubectl patch cronjobs expense-cronjob -p '{"spec" : {"suspend" : false}}' Create new cronjob scheduler - kubectl create job --from=cronjob/expense-cronjob expense-cronjob

Last updated

​​  ​All content on this page by eGov Foundation is licensed under a Creative Commons Attribution 4.0 International License.