Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions developer_docs/git/commit-conventions.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,23 @@ Co-Authored-By: Claude <noreply@anthropic.com>

## Auto-Close Behavior
When Claude pushes commits that complete an issue, automatically include the appropriate closing keyword in the commit message.

## Branch Naming Conventions

### Hotfix Branches
When creating hotfix branches targeting production branches (e.g., `ruhunu-prod`), the branch name **must** end with `-hotfix`. This is required for the PR to be mergeable.

**Format:** `<issue-number>-<description>-hotfix`

**Examples:**
- `19635-configurable-bill-serial-digits-hotfix`
- `19500-fix-grn-return-hotfix`

### Feature Branches
Feature branches should be based on `origin/development` (never `master`) and follow the pattern:

**Format:** `<issue-number>-<description>`

**Examples:**
- `19635-configurable-bill-number-serial-digits`
- `19500-fix-grn-return-approval`
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ private void loadPharmacyConfigurationDefaults() {
// Future development: Apply these patterns to additional bill types as needed

getShortTextValueByKey("Bill Number Delimiter", "/");
getIntegerValueByKey("Bill Number Serial Digit Count", 6);

// Generic bill numbering strategies (for backward compatibility)
getBooleanValueByKey("Bill Number Generation Strategy for Department ID is Prefix Dept Ins Year Count", false);
Expand Down
51 changes: 31 additions & 20 deletions src/main/java/com/divudi/ejb/BillNumberGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,17 @@ private String getLockKey(Institution institution) {
return institution.getId() + "-" + "null" + "-" + "null";
}

private static final int MAX_SERIAL_DIGITS = 12;

private String formatSerialNumber(Long serialNumber) {
Integer digits = configOptionApplicationController.getIntegerValueByKey("Bill Number Serial Digit Count", 6);
if (digits == null || digits < 1) {
digits = 6;
}
digits = Math.min(digits, MAX_SERIAL_DIGITS);
return String.format("%0" + digits + "d", serialNumber);
}

private String getBillNumberDelimiter() {
String delimiter = configOptionApplicationController.getShortTextValueByKey("Bill Number Delimiter", "/");
if (delimiter == null) {
Expand Down Expand Up @@ -2160,7 +2171,7 @@ public String departmentBillNumberGeneratorYearly(Department dep, BillTypeAtomic

// Append formatted 6-digit bill number
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits

// Return the formatted bill number
return result.toString();
Expand Down Expand Up @@ -2220,7 +2231,7 @@ public String departmentRequestNumberGeneratorYearly(Department dep, RequestType
result.append(getBillNumberDelimiter());

// Append formatted 6-digit bill number
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits

// Return the formatted bill number
return result.toString();
Expand Down Expand Up @@ -2263,7 +2274,7 @@ public String departmentBillNumberGeneratorYearlyWithPrefixDeptInsYearCount(Depa
result.append(String.format("%02d", year)); // Ensure year is always two digits
result.append(getBillNumberDelimiter());
// Append formatted 6-digit bill number
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits
// Return the formatted bill number
return result.toString();
}
Expand Down Expand Up @@ -2305,7 +2316,7 @@ public String departmentBillNumberGeneratorYearlyWithPrefixInsDeptYearCount(Depa
result.append(String.format("%02d", year)); // Ensure year is always two digits
result.append(getBillNumberDelimiter());
// Append formatted 6-digit bill number
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits
// Return the formatted bill number
return result.toString();
}
Expand Down Expand Up @@ -2345,7 +2356,7 @@ public String departmentBillNumberGeneratorYearlyWithPrefixInsYearCount(Departme
result.append(String.format("%02d", year)); // Ensure year is always two digits
result.append(getBillNumberDelimiter());
// Append formatted 6-digit bill number
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits
// Return the formatted bill number
return result.toString();
}
Expand Down Expand Up @@ -2382,7 +2393,7 @@ public String institutionBillNumberGeneratorYearlyWithPrefixInsYearCount(Departm
int year = Calendar.getInstance().get(Calendar.YEAR) % 100; // Get last two digits of year
result.append(String.format("%02d", year)); // Ensure year is always two digits
// Append formatted 6-digit bill number
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits
// Return the formatted bill number
return result.toString();
}
Expand Down Expand Up @@ -2496,7 +2507,7 @@ public String departmentBillNumberGeneratorYearlyWithPrefixInsYearCountInstituti
result.append(String.format("%02d", year)); // Ensure year is always two digits
result.append(getBillNumberDelimiter());
// Append formatted 6-digit bill number
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits
// Return the formatted bill number
return result.toString();
}
Expand Down Expand Up @@ -2536,7 +2547,7 @@ public String institutionBillNumberGeneratorYearlyWithPrefixInsYearCountInstitut
result.append(String.format("%02d", year)); // Ensure year is always two digits
result.append(getBillNumberDelimiter());
// Append formatted 6-digit bill number
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits
// Return the formatted bill number
return result.toString();
}
Expand Down Expand Up @@ -2626,7 +2637,7 @@ public String departmentBillNumberGeneratorYearly(Department dep, List<BillTypeA
result.append(getBillNumberDelimiter());
result.append(String.format("%02d", year));
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd));
result.append(formatSerialNumber(dd));

String finalResult = result.toString();
return finalResult;
Expand Down Expand Up @@ -2677,7 +2688,7 @@ public String departmentBatchBillNumberGeneratorYearlyForInpatientAndOpdServices
result.append(getBillNumberDelimiter());
result.append(String.format("%02d", year));
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd));
result.append(formatSerialNumber(dd));

String finalResult = result.toString();
return finalResult;
Expand Down Expand Up @@ -2728,7 +2739,7 @@ public String departmentIndividualBillNumberGeneratorYearlyForInpatientAndOpdSer
result.append(getBillNumberDelimiter());
result.append(String.format("%02d", year));
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd));
result.append(formatSerialNumber(dd));

String finalResult = result.toString();
return finalResult;
Expand Down Expand Up @@ -2816,7 +2827,7 @@ public String departmentBillNumberGeneratorYearly(Department dep, Department bil

// Append formatted 6-digit bill number
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits

// Return the formatted bill number
return result.toString();
Expand Down Expand Up @@ -2877,7 +2888,7 @@ public String departmentBillNumberGeneratorYearlyByFromDepartmentAndToDepartment

// Append formatted 6-digit bill number
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits

// Return the formatted bill number
return result.toString();
Expand Down Expand Up @@ -2936,7 +2947,7 @@ public String departmentBillNumberGeneratorYearly(Department dep, BillTypeAtomic

// Append formatted 6-digit bill number
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits

// Return the formatted bill number
return result.toString();
Expand Down Expand Up @@ -2978,7 +2989,7 @@ public String departmentBillNumberGeneratorYearly(Institution ins, Department de

// Append formatted 6-digit bill number
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd));
result.append(formatSerialNumber(dd));
// billNumber.setLastBillNumber(dd);
// billNumberFacade.editAndFlush(billNumber);
// Ensure bill number is always six digits
Expand All @@ -3005,7 +3016,7 @@ public String departmentBillNumberGeneratorYearly(Institution ins, Department de

// Append formatted 6-digit bill number
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd)); // Ensure bill number is always six digits
result.append(formatSerialNumber(dd)); // Ensure bill number is always six digits

// Return the formatted bill number
return result.toString();
Expand Down Expand Up @@ -3392,7 +3403,7 @@ public String cashierSettlementBillNumberGeneratorYearlyWithPrefixDeptInsYearCou
int year = Calendar.getInstance().get(Calendar.YEAR) % 100;
result.append(String.format("%02d", year));
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd));
result.append(formatSerialNumber(dd));

return result.toString();
}
Expand Down Expand Up @@ -3434,7 +3445,7 @@ public String cashierSettlementBillNumberGeneratorYearlyWithPrefixInsDeptYearCou
int year = Calendar.getInstance().get(Calendar.YEAR) % 100;
result.append(String.format("%02d", year));
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd));
result.append(formatSerialNumber(dd));

return result.toString();
}
Expand Down Expand Up @@ -3475,7 +3486,7 @@ public String cashierSettlementBillNumberGeneratorYearlyWithPrefixInsYearCountIn
int year = Calendar.getInstance().get(Calendar.YEAR) % 100;
result.append(String.format("%02d", year));
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd));
result.append(formatSerialNumber(dd));

return result.toString();
}
Expand Down Expand Up @@ -3516,7 +3527,7 @@ public String cashierSettlementInsIdGeneratorYearlyWithPrefixInsYearCountInstitu
int year = Calendar.getInstance().get(Calendar.YEAR) % 100;
result.append(String.format("%02d", year));
result.append(getBillNumberDelimiter());
result.append(String.format("%06d", dd));
result.append(formatSerialNumber(dd));

return result.toString();
}
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/com/divudi/ws/common/ConfigResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,20 @@ public Response setLongTextValue(@PathParam("key") String key,
return successResponse();
}

@POST
@Path("setInteger/{key}/{value}")
@Produces(MediaType.TEXT_PLAIN)
public Response setIntegerValue(@PathParam("key") String key,
@PathParam("value") int value,
@Context HttpHeaders headers) {
String apiKey = headers.getHeaderString("Config");
if (!apiKeyController.isValidKey(apiKey)) {
return unauthorizedResponse();
}
configOptionApplicationController.setIntegerValueByKey(key, value);
return successResponse();
}

private Response successResponse() {
return Response.ok("Configuration updated successfully.").build();
}
Expand Down
Loading