@@ -2650,7 +2650,7 @@ public void generateDebtorBalanceReport(final boolean onlyDueBills) {
2650
2650
}
2651
2651
2652
2652
public ReportTemplateRowBundle generateDebtorBalanceReportBills (List <BillTypeAtomic > bts , List <PaymentMethod > billPaymentMethods ,
2653
- boolean onlyDueBills ) {
2653
+ boolean onlyDueBills ) {
2654
2654
Map <String , Object > parameters = new HashMap <>();
2655
2655
String jpql = "SELECT new com.divudi.data.ReportTemplateRow(bill) "
2656
2656
+ "FROM Bill bill "
@@ -3704,28 +3704,32 @@ public void generateDiscountReport() {
3704
3704
bundle = new ReportTemplateRowBundle ();
3705
3705
3706
3706
if (visitType .equalsIgnoreCase ("IP" )) {
3707
- opdBts .add (BillTypeAtomic .INWARD_SERVICE_BATCH_BILL );
3708
- opdBts .add (BillTypeAtomic .INWARD_SERVICE_BILL );
3709
- opdBts .add (BillTypeAtomic .INWARD_SERVICE_BATCH_BILL_CANCELLATION );
3710
- opdBts .add (BillTypeAtomic .INWARD_SERVICE_BILL_CANCELLATION );
3711
- opdBts .add (BillTypeAtomic .INWARD_FINAL_BILL );
3707
+ if (reportType .equalsIgnoreCase ("detail" )) {
3708
+ opdBts .add (BillTypeAtomic .INWARD_SERVICE_BILL );
3709
+ opdBts .add (BillTypeAtomic .INWARD_SERVICE_BILL_CANCELLATION );
3710
+ opdBts .add (BillTypeAtomic .INWARD_FINAL_BILL );
3711
+ } else if (reportType .equalsIgnoreCase ("summary" )) {
3712
+ opdBts .add (BillTypeAtomic .INWARD_SERVICE_BATCH_BILL );
3713
+ opdBts .add (BillTypeAtomic .INWARD_SERVICE_BATCH_BILL_CANCELLATION );
3714
+ }
3712
3715
} else if (visitType .equalsIgnoreCase ("OP" )) {
3713
- opdBts .add (BillTypeAtomic .PACKAGE_OPD_BILL_WITH_PAYMENT );
3714
- opdBts .add (BillTypeAtomic .PACKAGE_OPD_BATCH_BILL_WITH_PAYMENT );
3715
- opdBts .add (BillTypeAtomic .PACKAGE_OPD_BILL_PAYMENT_COLLECTION_AT_CASHIER );
3716
- opdBts .add (BillTypeAtomic .PACKAGE_OPD_BATCH_BILL_CANCELLATION );
3717
- opdBts .add (BillTypeAtomic .PACKAGE_OPD_BILL_CANCELLATION );
3718
- opdBts .add (BillTypeAtomic .PACKAGE_OPD_BILL_REFUND );
3719
-
3720
- opdBts .add (BillTypeAtomic .OPD_BILL_WITH_PAYMENT );
3721
- opdBts .add (BillTypeAtomic .OPD_BILL_CANCELLATION );
3722
- opdBts .add (BillTypeAtomic .OPD_BILL_REFUND );
3723
-
3724
- opdBts .add (BillTypeAtomic .OPD_BATCH_BILL_WITH_PAYMENT );
3725
- opdBts .add (BillTypeAtomic .OPD_BATCH_BILL_CANCELLATION );
3726
-
3727
- opdBts .add (BillTypeAtomic .OPD_BILL_PAYMENT_COLLECTION_AT_CASHIER );
3728
- opdBts .add (BillTypeAtomic .OPD_BATCH_BILL_PAYMENT_COLLECTION_AT_CASHIER );
3716
+ if (reportType .equalsIgnoreCase ("detail" )) {
3717
+ opdBts .add (BillTypeAtomic .PACKAGE_OPD_BILL_WITH_PAYMENT );
3718
+ opdBts .add (BillTypeAtomic .PACKAGE_OPD_BILL_PAYMENT_COLLECTION_AT_CASHIER );
3719
+ opdBts .add (BillTypeAtomic .PACKAGE_OPD_BILL_CANCELLATION );
3720
+ opdBts .add (BillTypeAtomic .PACKAGE_OPD_BILL_REFUND );
3721
+ opdBts .add (BillTypeAtomic .OPD_BILL_WITH_PAYMENT );
3722
+ opdBts .add (BillTypeAtomic .OPD_BILL_CANCELLATION );
3723
+ opdBts .add (BillTypeAtomic .OPD_BILL_REFUND );
3724
+ opdBts .add (BillTypeAtomic .OPD_BILL_PAYMENT_COLLECTION_AT_CASHIER );
3725
+
3726
+ } else if (reportType .equalsIgnoreCase ("summary" )) {
3727
+ opdBts .add (BillTypeAtomic .PACKAGE_OPD_BATCH_BILL_WITH_PAYMENT );
3728
+ opdBts .add (BillTypeAtomic .PACKAGE_OPD_BATCH_BILL_CANCELLATION );
3729
+ opdBts .add (BillTypeAtomic .OPD_BATCH_BILL_WITH_PAYMENT );
3730
+ opdBts .add (BillTypeAtomic .OPD_BATCH_BILL_CANCELLATION );
3731
+ opdBts .add (BillTypeAtomic .OPD_BATCH_BILL_PAYMENT_COLLECTION_AT_CASHIER );
3732
+ }
3729
3733
}
3730
3734
3731
3735
if (reportType .equalsIgnoreCase ("detail" )) {
@@ -3743,6 +3747,25 @@ public void generateDiscountReport() {
3743
3747
}
3744
3748
}
3745
3749
3750
+ public double calculateDiscount (final BillItem billItem , final List <ReportTemplateRow > reportTemplateRows ) {
3751
+ if (!billItem .getItem ().isDiscountAllowed ()) {
3752
+ return 0.0 ;
3753
+ }
3754
+
3755
+ double totalDiscount = billItem .getBill ().getDiscount ();
3756
+ int billItemCount = 0 ;
3757
+
3758
+ for (ReportTemplateRow row : reportTemplateRows ) {
3759
+ BillItem item = row .getBillItem ();
3760
+
3761
+ if (item .getBill ().equals (billItem .getBill ()) && item .getItem ().isDiscountAllowed ()) {
3762
+ billItemCount ++;
3763
+ }
3764
+ }
3765
+
3766
+ return billItemCount > 0 ? totalDiscount / billItemCount : 0.0 ;
3767
+ }
3768
+
3746
3769
public ReportTemplateRowBundle generateDiscountBills (List <BillTypeAtomic > bts ) {
3747
3770
Map <String , Object > parameters = new HashMap <>();
3748
3771
@@ -3936,6 +3959,12 @@ public ReportTemplateRowBundle generateDiscountBillItems(List<BillTypeAtomic> bt
3936
3959
3937
3960
List <ReportTemplateRow > rs = (List <ReportTemplateRow >) paymentFacade .findLightsByJpql (jpql , parameters , TemporalType .TIMESTAMP );
3938
3961
3962
+ for (ReportTemplateRow row : rs ) {
3963
+ BillItem billItem = row .getBillItem ();
3964
+
3965
+ billItem .setDiscount (calculateDiscount (billItem , rs ));
3966
+ }
3967
+
3939
3968
ReportTemplateRowBundle b = new ReportTemplateRowBundle ();
3940
3969
b .setReportTemplateRows (rs );
3941
3970
b .createRowValuesFromBillItems ();
@@ -4306,8 +4335,8 @@ public void exportDetailedWeeklyOPDReportToPDF() {
4306
4335
}
4307
4336
4308
4337
private void addWeeklyReportSection (Document document , String sectionTitle , List <String > itemList ,
4309
- List <Integer > daysOfWeek , Map <Integer , Map <String , Map <Integer , Double >>> weeklyDailyBillItemMap ,
4310
- int week , com .itextpdf .text .Font headerFont , com .itextpdf .text .Font regularFont ) throws DocumentException {
4338
+ List <Integer > daysOfWeek , Map <Integer , Map <String , Map <Integer , Double >>> weeklyDailyBillItemMap ,
4339
+ int week , com .itextpdf .text .Font headerFont , com .itextpdf .text .Font regularFont ) throws DocumentException {
4311
4340
document .add (new com .itextpdf .text .Paragraph (sectionTitle , headerFont ));
4312
4341
document .add (com .itextpdf .text .Chunk .NEWLINE );
4313
4342
0 commit comments