| Line 1090... |
Line 1090... |
| 1090 |
} else {
|
1090 |
} else {
|
| 1091 |
leadActivity.setSchelduleTimestamp(null);
|
1091 |
leadActivity.setSchelduleTimestamp(null);
|
| 1092 |
}
|
1092 |
}
|
| 1093 |
leadActivity.setCreatedTimestamp(LocalDateTime.now());
|
1093 |
leadActivity.setCreatedTimestamp(LocalDateTime.now());
|
| 1094 |
leadActivityRepository.persist(leadActivity);
|
1094 |
leadActivityRepository.persist(leadActivity);
|
| 1095 |
if (!lead.getStatus().equals(LeadStatus.notInterested)) {
|
1095 |
if (!lead.getStatus().equals(LeadStatus.notInterested) && !lead.getStatus().equals(LeadStatus.onHold)) {
|
| 1096 |
LeadDetailModel leadDetail = new LeadDetailModel();
|
1096 |
LeadDetailModel leadDetail = new LeadDetailModel();
|
| 1097 |
leadDetail.setLeadId(lead.getId());
|
1097 |
leadDetail.setLeadId(lead.getId());
|
| 1098 |
leadDetail.setOutletName(createRefferalRequest.getOutletName());
|
1098 |
leadDetail.setOutletName(createRefferalRequest.getOutletName());
|
| 1099 |
leadDetail.setCounterSize(createRefferalRequest.getCounterSize());
|
1099 |
leadDetail.setCounterSize(createRefferalRequest.getCounterSize());
|
| 1100 |
|
1100 |
|
| Line 1158... |
Line 1158... |
| 1158 |
&& lead.getAssignTo() == 0
|
1158 |
&& lead.getAssignTo() == 0
|
| 1159 |
&& AI_LEAD_SOURCE.equals(lead.getSource())
|
1159 |
&& AI_LEAD_SOURCE.equals(lead.getSource())
|
| 1160 |
&& isBgcAtOrAbove(authUser.getId(), EscalationType.L2, EscalationType.L3, EscalationType.L4, EscalationType.L5)
|
1160 |
&& isBgcAtOrAbove(authUser.getId(), EscalationType.L2, EscalationType.L3, EscalationType.L4, EscalationType.L5)
|
| 1161 |
&& isBgcL1(assignToId);
|
1161 |
&& isBgcL1(assignToId);
|
| 1162 |
|
1162 |
|
| - |
|
1163 |
// "On Hold" behaves like notInterested for gate-bypass purposes: parked leads
|
| - |
|
1164 |
// don't need geo verification or lead-detail filled in yet.
|
| - |
|
1165 |
boolean skipsBeatGates = createLeadActivityRequest.getStatus() == LeadStatus.notInterested
|
| - |
|
1166 |
|| createLeadActivityRequest.getStatus() == LeadStatus.onHold;
|
| - |
|
1167 |
|
| 1163 |
if (createLeadActivityRequest.getStatus() != LeadStatus.notInterested && assigneeIsSales && !bgcDirectAssign) {
|
1168 |
if (!skipsBeatGates && assigneeIsSales && !bgcDirectAssign) {
|
| 1164 |
LeadLiveLocation approvedGeo = leadLiveLocationRepository.selectApprovedByLeadId(createLeadActivityRequest.getId());
|
1169 |
LeadLiveLocation approvedGeo = leadLiveLocationRepository.selectApprovedByLeadId(createLeadActivityRequest.getId());
|
| 1165 |
if (approvedGeo == null) {
|
1170 |
if (approvedGeo == null) {
|
| 1166 |
throw new ProfitMandiBusinessException("Lead", "", "Live geo-location for this lead has not been approved yet. Please approve the geo-location before editing.");
|
1171 |
throw new ProfitMandiBusinessException("Lead", "", "Live geo-location for this lead has not been approved yet. Please approve the geo-location before editing.");
|
| 1167 |
}
|
1172 |
}
|
| 1168 |
}
|
1173 |
}
|
| 1169 |
|
1174 |
|
| 1170 |
if (leadDetail == null && !createLeadActivityRequest.getStatus().equals(LeadStatus.notInterested) && leadAuthUser.isActive()) {
|
1175 |
if (leadDetail == null && !skipsBeatGates && leadAuthUser.isActive()) {
|
| 1171 |
if (bgcDirectAssign) {
|
1176 |
if (bgcDirectAssign) {
|
| 1172 |
// Direct BGC L2 → L1 routing on an unassigned AI lead. AI intake does not
|
1177 |
// Direct BGC L2 → L1 routing on an unassigned AI lead. AI intake does not
|
| 1173 |
// seed a lead_detail row (business fields are captured later during field
|
1178 |
// seed a lead_detail row (business fields are captured later during field
|
| 1174 |
// work), so drop in an empty placeholder to satisfy downstream code that
|
1179 |
// work), so drop in an empty placeholder to satisfy downstream code that
|
| 1175 |
// treats a null row as "form not yet filled".
|
1180 |
// treats a null row as "form not yet filled".
|