in webpos/src/main/java/org/apache/ofbiz/webpos/search/WebPosSearch.java [88:183]
public static Map<String, Object> findParties(DispatchContext dctx, Map<String, ? extends Object> context) {
Delegator delegator = dctx.getDelegator();
String searchByPartyLastName = (String) context.get("searchByPartyLastName");
String searchByPartyFirstName = (String) context.get("searchByPartyFirstName");
String searchByPartyIdValue = (String) context.get("searchByPartyIdValue");
String partyIdentificationTypeId = (String) context.get("partyIdentificationTypeId");
String billingLocation = (String) context.get("billingLocation");
String shippingLocation = (String) context.get("shippingLocation");
Map<String, Object> result = ServiceUtil.returnSuccess();
List<EntityCondition> andExprs = new LinkedList<>();
List<EntityCondition> orExprs = new LinkedList<>();
EntityCondition mainCond = null;
List<String> orderBy = new LinkedList<>();
// default view settings
DynamicViewEntity dynamicView = new DynamicViewEntity();
dynamicView.addMemberEntity("PT", "Party");
dynamicView.addAlias("PT", "partyId");
dynamicView.addAlias("PT", "statusId");
dynamicView.addAlias("PT", "partyTypeId");
dynamicView.addMemberEntity("PI", "PartyIdentification");
dynamicView.addAlias("PI", "partyIdentificationTypeId");
dynamicView.addAlias("PI", "idValue");
dynamicView.addViewLink("PT", "PI", Boolean.TRUE, ModelKeyMap.makeKeyMapList("partyId"));
dynamicView.addMemberEntity("PER", "Person");
dynamicView.addAlias("PER", "lastName");
dynamicView.addAlias("PER", "firstName");
dynamicView.addViewLink("PT", "PER", Boolean.TRUE, ModelKeyMap.makeKeyMapList("partyId"));
dynamicView.addMemberEntity("PCP", "PartyContactMechPurpose");
dynamicView.addAlias("PCP", "contactMechId");
dynamicView.addAlias("PCP", "contactMechPurposeTypeId");
dynamicView.addAlias("PCP", "fromDate");
dynamicView.addAlias("PCP", "thruDate");
dynamicView.addViewLink("PT", "PCP", Boolean.TRUE, ModelKeyMap.makeKeyMapList("partyId"));
dynamicView.addMemberEntity("CM", "ContactMech");
dynamicView.addAlias("CM", "contactMechId");
dynamicView.addAlias("CM", "contactMechTypeId");
dynamicView.addAlias("CM", "infoString");
dynamicView.addViewLink("PCP", "CM", Boolean.TRUE, ModelKeyMap.makeKeyMapList("contactMechId"));
dynamicView.addMemberEntity("PA", "PostalAddress");
dynamicView.addAlias("PA", "address1");
dynamicView.addAlias("PA", "city");
dynamicView.addAlias("PA", "postalCode");
dynamicView.addAlias("PA", "countryGeoId");
dynamicView.addAlias("PA", "stateProvinceGeoId");
dynamicView.addViewLink("CM", "PA", Boolean.TRUE, ModelKeyMap.makeKeyMapList("contactMechId"));
if (UtilValidate.isNotEmpty(billingLocation) && "Y".equalsIgnoreCase(billingLocation)) {
orExprs.add(EntityCondition.makeCondition("contactMechPurposeTypeId", EntityOperator.EQUALS, "BILLING_LOCATION"));
}
if (UtilValidate.isNotEmpty(shippingLocation) && "Y".equalsIgnoreCase(shippingLocation)) {
orExprs.add(EntityCondition.makeCondition("contactMechPurposeTypeId", EntityOperator.EQUALS, "SHIPPING_LOCATION"));
}
if (!orExprs.isEmpty()) {
andExprs.add(EntityCondition.makeCondition(orExprs, EntityOperator.OR));
}
andExprs.add(EntityCondition.makeCondition("partyTypeId", EntityOperator.EQUALS, "PERSON"));
andExprs.add(EntityCondition.makeCondition("contactMechTypeId", EntityOperator.EQUALS, "POSTAL_ADDRESS"));
if (UtilValidate.isNotEmpty(shippingLocation) && "N".equalsIgnoreCase(shippingLocation) && UtilValidate.isNotEmpty(billingLocation)
&& "N".equalsIgnoreCase(billingLocation)) {
andExprs.add(EntityCondition.makeCondition("contactMechPurposeTypeId", EntityOperator.IN, UtilMisc.toList("SHIPPING_LOCATION",
"BILLING_LOCATION")));
}
mainCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
orderBy.add("lastName");
orderBy.add("firstName");
// search by last name
if (UtilValidate.isNotEmpty(searchByPartyLastName)) {
searchByPartyLastName = searchByPartyLastName.toUpperCase().trim();
andExprs.add(EntityCondition.makeCondition(EntityFunction.upperField("lastName"), EntityOperator.LIKE,
EntityFunction.upper("%" + searchByPartyLastName + "%")));
}
// search by first name
if (UtilValidate.isNotEmpty(searchByPartyFirstName)) {
searchByPartyFirstName = searchByPartyFirstName.toUpperCase().trim();
andExprs.add(EntityCondition.makeCondition(EntityFunction.upperField("firstName"), EntityOperator.LIKE,
EntityFunction.upper("%" + searchByPartyFirstName + "%")));
}
// search by party identification
if (UtilValidate.isNotEmpty(searchByPartyIdValue)) {
searchByPartyIdValue = searchByPartyIdValue.toUpperCase().trim();
andExprs.add(EntityCondition.makeCondition(EntityFunction.upperField("idValue"), EntityOperator.EQUALS, searchByPartyIdValue));
if (UtilValidate.isNotEmpty(partyIdentificationTypeId)) {
andExprs.add(EntityCondition.makeCondition("partyIdentificationTypeId", EntityOperator.EQUALS, partyIdentificationTypeId));
}
}
mainCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
List<GenericValue> parties = null;
try (EntityListIterator pli = delegator.findListIteratorByCondition(dynamicView, mainCond, null, null, orderBy, null)) {
parties = EntityUtil.filterByDate(pli.getCompleteList(), true);
} catch (GenericEntityException e) {
Debug.logError(e, MODULE);
}
result.put("partiesList", parties);
return result;
}