Water Connection advance changes are added to allow the customer to pay the advance amount. This amount is adjusted when a new demand is generated. We can enable or disable advance based on the configuration.
Before you proceed with the documentation, make sure the following pre-requisites are met -
- Java 8
- Kafka server is up and running
- egov-persister service is running and has the water service persister configs path added to it
- PSQL server is running and a database is created to store water connection/application data
- The following services should be up and running:
- egov-persister
- egov-mdms
- ws-services
- billing-service
- ws-calculator
- egov-apportion-service
- Accepts advance amount during water connection creation and while collecting payment
- Creates demand for consumer type waterConnection-advance
- Adjusts the new demand with existing advance with apportion service
Deploy the latest version of ws-service, ws-calculator, billing-service, egov-apportion-service
Billing Service tax head configuration
{% code lineNumbers="true" %}
{
"businessService": "ws-services-calculation",
"code": "WS",
"collectionModesNotAllowed": [
"DD",
"CHEQUE",
"CARD",
"OFFLINE_NEFT",
"OFFLINE_RTGS",
"POSTAL_ORDER",
"ONLINE"
],
"partPaymentAllowed": true,
"isAdvanceAllowed": true,
"demandUpdateTime": 86400000,
"isVoucherCreationEnabled": false,
"billGineiURL" : "egov-searcher/bill-genie/waterbills/_get",
"isBillAmendmentEnabled":true
}
{% endcode %}
Tax head master service configuration
{% code lineNumbers="true" %}
{
"category": "ADVANCE_COLLECTION",
"service": "WS",
"name": "Ws advance carry forward",
"code": "WS_ADVANCE_CARRYFORWARD",
"isDebit": true,
"isActualDemand": false,
"order": "0",
"isRequired": true,
"IsBillamend": false
},
{% endcode %}
- Creating a new bill for the advance amount in BillServiceV2.
Removing the following line while adding the bill objects to the list
if (billAmount.compareTo(BigDecimal.ZERO) >= 0)
- Passing Active status filter for demand search during apportioning in DemandService.
DemandCriteria searchCriteria = DemandCriteria.builder().tenantId(tenantId)
.status(Demand.StatusEnum.ACTIVE.toString()).consumerCode(Collections.singleton(consumerCode)). businessService(businessService).build();
- New Demand audit history API in Demandcontroller.
An API that returns the audit history of demandDetails.demand/_history
Water service changes:
- Create water connection API :
Adding a check for payment type advance. If advance, passing a boolean isAdvanceCollection to calculationRequest to water calculator service. - Update water connection API:
Adding a check for payment type advance. If advance, passing a boolean isAdvanceCollection to calculationRequest to water calculator service.
Adding a check for advance in the validateUpdate method to set the current demand to CANCELLED.
Water calculator service changes:
- Calling estimation service getEstimationMap based on isAdvanceCalculation boolean. If true, reading taxAmount from criteria.getWaterConnection().getAdvance();
- Changes in getEstimatesForTax for a new taxHeadCode ADVANCE_COLLECTION with value WS_ADVANCE_CARRYFORWARD
- Getting the advance amount in getCalculation with taxHeadCode ADVANCE_COLLECTION
4.Calling generateDemand method based on isAdvanceCalculation. If true, create a demand object with consumerType “waterConnection-advance“.