End Points:
create : tl-services/v1/_create
update : tl-services/v1/_update
search : tl-services/v1/_search
Migration:
Two new columns added for TL Renewal flow. applicationType and workflowCode. To deploy TL Renewal in environment where TL is already running , these 2 columns needs to be migrated to eg_tl_tradelicense and eg_tl_tradelicense_audit table. The following query does this migration:
...
...
All the existing Applications default values for the new columns will be set using below Query.
...
Configurations:
Persister:
...
Hence 2 new Business service configs are pushed for each flow respectively.
Integration changes:
For API /egov-workflow-v2/egov-wf/process/_transition :
The field assignee of type User in ProcessInstance object is changed to list of 'User' called assignes.
User assignee --> List<User> assignesFor Citizen Sendback:
When the action SENDBACKTOCITIZEN is called on the entity the module has to enrich the assignes with the uuids of the owners and creator of the entity
MDMSEDITRENEWAL : https://digit-discuss.atlassian.net/wiki/spaces/EPE/pages/408945692/EDITRENEWAL+Config?atlOrigin=eyJpIjoiMzQzOTMxYjQzNDVmNGJkZmFhYmFhZGE5NGVmMzZlYWIiLCJwIjoiYyJ9
mdms:
Code Block |
---|
{
"businessService": "TL.RENEWAL",
"code": "TL.RENEWAL",
"collectionModesNotAllowed": [
"DD"
],
"partPaymentAllowed": false,
"isAdvanceAllowed": false,
"isVoucherCreationEnabled": true,
"isActive": true
}, |
Code Block |
---|
{
"category": "FEE",
"service": "TL",
"name": "TL Renewal Tax",
"code": "TL_RENEWAL_TAX",
"isDebit": false,
"isActualDemand": true,
"order": "2",
"isRequired": false
},
{
"category": "REBATE",
"service": "TL",
"name": "TL Renewal Rebate",
"code": "TL_RENEWAL_REBATE",
"isDebit": true,
"isActualDemand": false,
"order": "0",
"isRequired": false
},
{
"category": "PENALTY",
"service": "TL",
"name": "TL Renewal Penalty",
"code": "TL_RENEWAL_PENALTY",
"isDebit": false,
"isActualDemand": false,
"order": "1",
"isRequired": false
},
{
"category": "TAX",
"service": "TL",
"name": "TL Renewal adhoc rebate",
"code": "TL_RENEWAL_ADHOC_REBATE",
"isDebit": true,
"isActualDemand": false,
"order": "0",
"isRequired": false
},
{
"category": "TAX",
"service": "TL",
"name": "TL Renewal adhoc penalty",
"code": "TL_RENEWAL_ADHOC_PENALTY",
"isDebit": false,
"isActualDemand": false,
"order": "1",
"isRequired": false
} |
Code Block |
---|
{
"fromDate": 1585679399000,
"toDate": 1617172199000,
"periodCycle": "ANNUAL",
"service": "TL",
"code": "TLRENEWAL2020",
"financialYear": "2020-21"
}, |
https://raw.githubusercontent.com/egovernments/egov-mdms-data/master/data/pb/egf-master/FinancialYear.json
Code Block |
---|
{
"id": "7",
"tenantId": "pb",
"finYearRange": "2020-21",
"name": "2020-21",
"code": "2020-21",
"startingDate": 1585679399000,
"endingDate": 1617172199000,
"active": true,
"isActiveForPosting": false,
"isClosed": false,
"transferClosingBalance": false,
"module": "TL"
}, |
application.properties :
EDITRENEWAL
& DIRECTRENEWAL
businessService codes are added.
Code Block |
---|
create.directRenewal.workflow.name=DIRECTRENEWAL
create.editRenewal.workflow.name=EDITRENEWAL |
TradelicenseSearcCriteria.java
licenseNumber variable is now list if String. Hence licenseNumber is replaced everywhere with licenseNumbers
Code Block |
---|
@JsonProperty("licenseNumbers")
private List<String> licenseNumbers; |
TLQueryBuilder.java
Code Block |
---|
List<String> licenseNumbers = criteria.getLicenseNumbers();
if (!CollectionUtils.isEmpty(licenseNumbers)) {
addClauseIfRequired(preparedStmtList, builder);
builder.append(" tl.licensenumber IN (").append(createQuery(licenseNumbers)).append(")");
addToPreparedStatement(preparedStmtList, licenseNumbers);
} |
Frontend:
All APPROVED and EXPIRED applications are configured with 2 buttons ‘EDIT FOR RENEWAL' and 'SUBMIT FOR RENEWAL’ .
Edit for Renewal : Will be redirected to edit flow , where Citizen/ Counter employee have acces to change specific fields. New set of documents can be updated for Renewal flow, which is configured in mdms.
Documents Configuration :
https://github.com/egovernments/egov-mdms-data/blob/master/data/pb/TradeLicense/TradeType.json
Frontend:
COMMON -
APPROVED Application configured with 2 buttons “EDIT FOR RENEWAL” and “SUBMIT FOR RENEWAL” and these button will be blocked once the renewal process gets initiatedLicense Number will be shown in the header.
Direct Renewal : Will be applied directly for Renewal. Which send application to PENDINGPAYMENT status.
SUBMIT FOR RENEWAL- Directly Submitted without editing.
EDIT FOR RENEWAL- Once can edit the specific fields while few fields will be blocked for editing. Extraa documents can be uploaded also he can change already uploaded documents.(Configured via MDMS). In flow instead of old application number licence number will be shown and the next financial year will be auto populated.
TL certificate is configured for renewal application.
Employee
Search Screen: Application type is added as a new filter for application search and In search results Financial year and Application types are added.
CITIZEN:
On approved application citizen will get a different label for renewal in my application section.
...
TL Certificate configuration :
https://github.com/egovernments/configs/blob/master/pdf-service/data-config/tlrenewalcertificate.json - Data Config
https://github.com/egovernments/configs/blob/master/pdf-service/format-config/tlrenewalcertificate.json - Format Config
Employee :
Search Screen :
'Application Type' search param added.
...
Search Results have 2 more columns now.
Financial Year and Application Type :
...
CITIZEN:
On approved application RENEWAL BUTTON is visible to citizen.
...
Trade License Renewal Fees, Rebate and Penalty
When the the Trade License application is submitted for renewal, the renewal application fees is calculated depends on the billing slab provided in the system.
Code Block |
---|
"billingSlab": [
{
"tenantId": "pb.amritsar",
"id": "a949d9b3-a5de-4e2e-9565-b61f41bc5a7b",
"licenseType": "TEMPORARY",
"structureType": "IMMOVABLE.PUCCA",
"tradeType": "GOODS.MANUFACTURE.TST-3",
"accessoryCategory": null,
"type": "FLAT",
"uom": null,
"fromUom": 0.0,
"toUom": 0.0,
"rate": 500.00,
"auditDetails": {
"createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
"lastModifiedBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
"createdTime": 1539756637943,
"lastModifiedTime": 1539756637943
}
},
{
"tenantId": "pb.amritsar",
"id": "6e3b0523-8e3f-490e-be0e-0d8cf74efd6c",
"licenseType": "TEMPORARY",
"structureType": "IMMOVABLE.PUCCA",
"tradeType": "GOODS.WHOLESALE.TST-160",
"accessoryCategory": null,
"type": "FLAT",
"uom": null,
"fromUom": 0.0,
"toUom": 0.0,
"rate": 500.00,
"auditDetails": {
"createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
"lastModifiedBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
"createdTime": 1539756637943,
"lastModifiedTime": 1539756637943
}
},
{
"tenantId": "pb.amritsar",
"id": "a270598a-fa39-4124-9bc2-bd2e6f6075af",
"licenseType": "TEMPORARY",
"structureType": "IMMOVABLE.PUCCA",
"tradeType": "GOODS.RETAIL.TST-81",
"accessoryCategory": null,
"type": "FLAT",
"uom": null,
"fromUom": 0.0,
"toUom": 0.0,
"rate": 1000.00,
"auditDetails": {
"createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
"lastModifiedBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
"createdTime": 1539756637943,
"lastModifiedTime": 1539756637943
}
},
{
"tenantId": "pb.amritsar",
"id": "d957f0b7-b45b-4095-b4f2-2191bd88a9e9",
"licenseType": "TEMPORARY",
"structureType": "IMMOVABLE.PUCCA",
"tradeType": "GOODS.MANUFACTURE.TST-23",
"accessoryCategory": null,
"type": "FLAT",
"uom": null,
"fromUom": 0.0,
"toUom": 0.0,
"rate": 150.00,
"auditDetails": {
"createdBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
"lastModifiedBy": "11b0e02b-0145-4de2-bc42-c97b96264807",
"createdTime": 1539756637943,
"lastModifiedTime": 1539756637943
}
}
] |
The calculation is also depend on the type i.e “FLAT” and “RATE” . If the calculation “type” in billing slab is FLAT the amount mentioned in rate field is the renewal fees and if the type is RATE then fees = rate x uomValue (from trade unit).
When a person fails to apply for renewal of his/her trade license application for proper financial year then some penalty charges has to pay. The penalty charge is X% of renewal fees. For example TL renewal financial year is 2019-20 and current financial year going on is 2020-21 then person has to pay penalty. When a person submitted the renewal application for proper financial year then certain amount is rebated from fees. Rebate charge is Y% of renewal fees. The rebate and penalty percentage is set by state/ULB.
MDMS configuration for Rebate and Penalty
Notification
The notification for renewal depends upon the Action and Status of the application.
Below is the mapping of Action_Status to localisation code
Action_Status | Localisation Code |
INITIATE_INITIATED | tl.renew.en.counter.initiate |
APPLY_APPLIED | tl.renew.en.counter.submit |
FORWARD_FIELDINSPECTION | tl.renew.en.field.inspection |
FORWARD_PENDINGAPPROVAL | tl.renew.en.pending.approval |
REJECT_REJECTED | tl.renew.en.counter.rejected |
APPROVE_PENDINGPAYMENT | tl.renew.en.counter.approved |
INITIATE_PENDINGPAYMENT | tl.renew.en.counter.approved |
TL Renewal Localisation Messages :
https://docs.google.com/spreadsheets/d/1o1qYwGB33SMksdgGLWZaxZLj7Q2sA_KU6opRQBfAYN8/edit#gid=0