Skip to content

Commit

Permalink
Merge pull request #9835 from hmislk/Issue#9600-Debtor-Analysis-Due-S…
Browse files Browse the repository at this point in the history
…earch-(Credit-Company)

Debtor Analysis-Due Search (Credit Company) #9600  Closes #9600
  • Loading branch information
Irani96 authored Dec 24, 2024
2 parents 2f45d77 + 4629e7e commit 56a64cb
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 117 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,19 @@
import com.divudi.facade.InstitutionFacade;
import com.divudi.facade.PatientEncounterFacade;
import com.divudi.java.CommonFunctions;

import java.io.OutputStream;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.TemporalType;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
Expand Down Expand Up @@ -633,7 +628,7 @@ private void setInwardValues(Institution inst, String1Value5 dataTable5Value, Pa
}

private void setInwardValues(Institution inst, String1Value5 dataTable5Value, PaymentMethod paymentMethod,
Institution institutionOfDepartment, Department department, Institution site) {
Institution institutionOfDepartment, Department department, Institution site) {
List<PatientEncounter> lst = getCreditBean().getCreditPatientEncounters(
inst, true, paymentMethod, institutionOfDepartment, department, site);
for (PatientEncounter b : lst) {
Expand Down Expand Up @@ -849,25 +844,51 @@ public void createInwardCreditDueWithAdditionalFilters() {
InstitutionEncounters newIns = new InstitutionEncounters();
newIns.setInstitution(ins);
newIns.setPatientEncounters(lst);
for (PatientEncounter b : lst) {

// Use an iterator to safely remove items from the list while iterating
Iterator<PatientEncounter> iterator = lst.iterator();
while (iterator.hasNext()) {
PatientEncounter b = iterator.next();

if (withOutDueUpdate) {
if (isDue(b)) {
// Safe removal with iterator
iterator.remove();
continue;
}
}

// Set payment totals for each PatientEncounter
b.setTransPaidByPatient(createInwardPaymentTotal(b, getFromDate(), getToDate(), BillType.InwardPaymentBill));
b.setTransPaidByCompany(createInwardPaymentTotalCredit(b, getFromDate(), getToDate(), BillType.CashRecieveBill));

// Update totals for newIns
newIns.setTotal(newIns.getTotal() + b.getFinalBill().getNetTotal());
newIns.setPaidTotalPatient(newIns.getPaidTotalPatient() + b.getFinalBill().getPaidAmount());
newIns.setTransPaidTotalPatient(newIns.getTransPaidTotalPatient() + b.getTransPaidByPatient());
newIns.setPaidTotal(newIns.getPaidTotal() + b.getPaidByCreditCompany());
newIns.setTransPaidTotal(newIns.getTransPaidTotal() + b.getTransPaidByCompany());
}

// Update the final totals
finalTotal += newIns.getTotal();
finalPaidTotal += newIns.getPaidTotal();
finalPaidTotalPatient += newIns.getPaidTotalPatient();
finalTransPaidTotal += newIns.getTransPaidTotal();
finalTransPaidTotalPatient += newIns.getTransPaidTotalPatient();

if (newIns.getPatientEncounters().isEmpty()) {
continue;
}

institutionEncounters.add(newIns);
}
}

private boolean isDue(final PatientEncounter pe) {
return pe.getFinalBill().getNetTotal() - (Math.abs(pe.getFinalBill().getPaidAmount()) + Math.abs(pe.getCreditPaidAmount())) > 0;
}

public double createInwardPaymentTotal(PatientEncounter pe, Date fd, Date td, BillType bt) {

String sql;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,108 +68,9 @@
<f:selectItem itemLabel="All Institutions"/>
<f:selectItems value="#{institutionController.companies}" var="ins" itemLabel="#{ins.name}"
itemValue="#{ins}"/>
<p:ajax process="cmbIns" update="cmbDept"/>
</p:selectOneMenu>

<p:spacer width="20"/>

<h:panelGroup layout="block" styleClass="form-group">
<h:outputText value="&#xf3c5;" styleClass="fa mr-2"/> <!-- FontAwesome map marker icon -->
<h:outputLabel value="Site" for="siteMenu" class="m-3"/>
</h:panelGroup>
<p:selectOneMenu
id="siteMenu"
styleClass="w-100 form-control"
value="#{creditCompanyDueController.site}"
filter="true">
<f:selectItem itemLabel="All Sites"/>
<f:selectItems value="#{institutionController.sites}" var="site" itemLabel="#{site.name}"
itemValue="#{site}"/>
<p:ajax process="siteMenu" update="cmbDept"/>
</p:selectOneMenu>

<p:spacer width="20"/>

<h:panelGroup layout="block" styleClass="form-group">
<h:outputText value="&#xf0e8;" styleClass="fa mr-2"/> <!-- FontAwesome sitemap icon -->
<h:outputLabel value="Department" for="cmbDept" class="m-3"/>
</h:panelGroup>
<h:panelGroup id="cmbDept">

<!-- Component 1: Without Institution and Site -->
<p:selectOneMenu
rendered="#{creditCompanyDueController.institutionOfDepartment eq null and creditCompanyDueController.site eq null}"
styleClass="w-100 form-control"
value="#{creditCompanyDueController.department}"
filterMatchMode="contains"
filter="true">
<f:selectItem itemLabel="All Departments"/>
<f:selectItems
value="#{departmentController.getDepartmentsOfInstitutionAndSite()}"
var="d"
itemLabel="#{d.name}"
itemValue="#{d}"/>
</p:selectOneMenu>

<!-- Component 2: With Site Only -->
<p:selectOneMenu
rendered="#{creditCompanyDueController.institutionOfDepartment eq null and creditCompanyDueController.site ne null}"
styleClass="w-100 form-control"
value="#{creditCompanyDueController.department}"
filterMatchMode="contains"
filter="true">
<f:selectItem itemLabel="All Departments"/>
<f:selectItems
value="#{departmentController.getDepartmentsOfInstitutionAndSite(creditCompanyDueController.site)}"
var="d"
itemLabel="#{d.name}"
itemValue="#{d}"/>
</p:selectOneMenu>

<!-- Component 3: With Institution Only -->
<p:selectOneMenu
rendered="#{creditCompanyDueController.institutionOfDepartment ne null and creditCompanyDueController.site eq null}"
styleClass="w-100 form-control"
value="#{creditCompanyDueController.department}"
filterMatchMode="contains"
filter="true">
<f:selectItem itemLabel="All Departments"/>
<f:selectItems
value="#{departmentController.getDepartmentsOfInstitutionAndSiteForInstitution(creditCompanyDueController.institution)}"
var="d"
itemLabel="#{d.name}"
itemValue="#{d}"/>
</p:selectOneMenu>

<!-- Component 4: With Both Institution and Site -->
<p:selectOneMenu
rendered="#{creditCompanyDueController.institutionOfDepartment ne null and creditCompanyDueController.site ne null}"
styleClass="w-100 form-control"
value="#{creditCompanyDueController.department}"
filterMatchMode="contains"
filter="true">
<f:selectItem itemLabel="All Departments"/>
<f:selectItems
value="#{departmentController.getDepartmentsOfInstitutionAndSite(creditCompanyDueController.institutionOfDepartment, creditCompanyDueController.site)}"
var="d"
itemLabel="#{d.name}"
itemValue="#{d}"/>
</p:selectOneMenu>

<p:selectOneMenu
rendered="false"
styleClass="w-100 form-control"
value="#{creditCompanyDueController.department}"
filter="true">
<f:selectItem itemLabel="All Departments"/>
<f:selectItems
value="#{departmentController.getDepartmentsOfInstitutionAndSite(creditCompanyDueController.institutionOfDepartment, creditCompanyDueController.site)}"
var="d"
itemLabel="#{d.name}"
itemValue="#{d}"/>
</p:selectOneMenu>
</h:panelGroup>

</h:panelGrid>

<p:commandButton
Expand Down Expand Up @@ -200,14 +101,14 @@
<p:dataExporter target="lst" fileName="Due Search (Credit Company)" type="xlsx"/>
</p:commandButton>

<p:commandButton
class="ui-button-danger my-4 mx-2"
style="width: 150px"
icon= "fas fa-file-pdf"
ajax="false"
value="PDF"
actionListener="#{creditCompanyDueController.createInwardCreditDueWithAdditionalFilters()}">
<p:dataExporter type="pdf" target="lst" fileName="Due Search (Credit Company)" ></p:dataExporter>
<p:commandButton
class="ui-button-danger my-4 mx-2"
style="width: 150px"
icon="fas fa-file-pdf"
ajax="false"
value="PDF"
actionListener="#{creditCompanyDueController.createInwardCreditDueWithAdditionalFilters()}">
<p:dataExporter target="lst" fileName="Due Search (Credit Company)" type="pdf"/>
</p:commandButton>

<p:dataTable id="lst" value="#{creditCompanyDueController.institutionEncounters}" var="i">
Expand Down

0 comments on commit 56a64cb

Please sign in to comment.