-taegeta de pagos
This commit is contained in:
parent
b70c05bb3b
commit
401eaee2e3
@ -15,6 +15,7 @@ import com.arrebol.apc.model.core.User;
|
|||||||
import com.arrebol.apc.model.core.constance.LoanCfg;
|
import com.arrebol.apc.model.core.constance.LoanCfg;
|
||||||
import com.arrebol.apc.model.enums.ActiveStatus;
|
import com.arrebol.apc.model.enums.ActiveStatus;
|
||||||
import com.arrebol.apc.model.loan.Loan;
|
import com.arrebol.apc.model.loan.Loan;
|
||||||
|
import com.arrebol.apc.model.views.CustomerView;
|
||||||
import com.arrebol.apc.model.views.LoanDetailZeroView;
|
import com.arrebol.apc.model.views.LoanDetailZeroView;
|
||||||
import com.arrebol.apc.model.views.LoanFinishedView;
|
import com.arrebol.apc.model.views.LoanFinishedView;
|
||||||
import com.arrebol.apc.repository.GenericEntityRepository;
|
import com.arrebol.apc.repository.GenericEntityRepository;
|
||||||
@ -33,6 +34,11 @@ import org.hibernate.Transaction;
|
|||||||
*/
|
*/
|
||||||
public class CustomerController extends PeopleController implements Serializable {
|
public class CustomerController extends PeopleController implements Serializable {
|
||||||
|
|
||||||
|
public CustomerView findCustomerViewByPeopleId(String peopleId) {
|
||||||
|
logger.debug("findCustomerViewByPeopleId");
|
||||||
|
return (CustomerView) genericEntityRepository.selectAPCEntityById(CustomerView.class, peopleId);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Searching all customers.
|
* Searching all customers.
|
||||||
@ -76,8 +82,6 @@ public class CustomerController extends PeopleController implements Serializable
|
|||||||
|
|
||||||
transaction = session.beginTransaction();
|
transaction = session.beginTransaction();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
results = session.createQuery("SELECT l FROM Loan l WHERE customer = :customer AND loanStatus != 'DELETED' ORDER BY createdOn DESC")
|
results = session.createQuery("SELECT l FROM Loan l WHERE customer = :customer AND loanStatus != 'DELETED' ORDER BY createdOn DESC")
|
||||||
.setParameter("customer", peopleId)
|
.setParameter("customer", peopleId)
|
||||||
.setMaxResults(2)
|
.setMaxResults(2)
|
||||||
@ -94,9 +98,6 @@ public class CustomerController extends PeopleController implements Serializable
|
|||||||
rollback(transaction);
|
rollback(transaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ import com.arrebol.apc.controller.admin.ClosingDayController;
|
|||||||
import com.arrebol.apc.controller.admin.CustomerController;
|
import com.arrebol.apc.controller.admin.CustomerController;
|
||||||
import com.arrebol.apc.controller.admin.EndorsementController;
|
import com.arrebol.apc.controller.admin.EndorsementController;
|
||||||
import com.arrebol.apc.controller.admin.LoanController;
|
import com.arrebol.apc.controller.admin.LoanController;
|
||||||
|
import com.arrebol.apc.controller.admin.PeopleController;
|
||||||
import com.arrebol.apc.controller.catalog.LoanTypeController;
|
import com.arrebol.apc.controller.catalog.LoanTypeController;
|
||||||
import com.arrebol.apc.controller.catalog.RouteController;
|
import com.arrebol.apc.controller.catalog.RouteController;
|
||||||
import com.arrebol.apc.controller.dashboard.CustomerWithoutRenovationViewService;
|
import com.arrebol.apc.controller.dashboard.CustomerWithoutRenovationViewService;
|
||||||
@ -41,6 +42,7 @@ import com.arrebol.apc.model.payroll.TotalExpectedPaymentDailyByUser;
|
|||||||
import com.arrebol.apc.model.system.logs.Bitacora;
|
import com.arrebol.apc.model.system.logs.Bitacora;
|
||||||
import com.arrebol.apc.model.views.AdvanceUserDailyDetail;
|
import com.arrebol.apc.model.views.AdvanceUserDailyDetail;
|
||||||
import com.arrebol.apc.model.views.AdvanceUserDailyView;
|
import com.arrebol.apc.model.views.AdvanceUserDailyView;
|
||||||
|
import com.arrebol.apc.model.views.CustomerView;
|
||||||
import com.arrebol.apc.model.views.CustomerWithoutRenovationView;
|
import com.arrebol.apc.model.views.CustomerWithoutRenovationView;
|
||||||
import com.arrebol.apc.model.views.LoanDetailZeroView;
|
import com.arrebol.apc.model.views.LoanDetailZeroView;
|
||||||
import com.arrebol.apc.model.views.LoanFinishedView;
|
import com.arrebol.apc.model.views.LoanFinishedView;
|
||||||
@ -53,6 +55,8 @@ import java.math.BigDecimal;
|
|||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -370,6 +374,413 @@ public class DashboardBean extends GenericBean implements Serializable {
|
|||||||
showMessage(FacesMessage.SEVERITY_INFO, "Cambio de bono", "La venta empezó a contar como bono de cliente nuevo.");
|
showMessage(FacesMessage.SEVERITY_INFO, "Cambio de bono", "La venta empezó a contar como bono de cliente nuevo.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void cargarBoletaPagos() {
|
||||||
|
CustomerView clienteViewBoleta = customerCtrl.findCustomerViewByPeopleId(selectedLoan.getCustomer().getId());
|
||||||
|
People clienteBoleta = peopleCtrl.findPeopleById(selectedLoan.getCustomer().getId());
|
||||||
|
String pagos = "";
|
||||||
|
for (int i = 0; i < 50; i++) {
|
||||||
|
pagos = pagos
|
||||||
|
+ " <tr>\n"
|
||||||
|
+ " <td></td>\n"
|
||||||
|
+ " <td></td>\n"
|
||||||
|
+ " <td></td>\n"
|
||||||
|
+ " <td></td>\n"
|
||||||
|
+ " <td></td>\n"
|
||||||
|
+ " <td></td>\n"
|
||||||
|
+ " </tr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
String html = " <style>\n"
|
||||||
|
+ " .platilla {\n"
|
||||||
|
+ " font-family: Arial, sans-serif;\n"
|
||||||
|
+ " margin: 20px auto;\n"
|
||||||
|
+ " max-width: 1200px;\n"
|
||||||
|
+ " padding: 0 15px;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " .section {\n"
|
||||||
|
+ " margin-bottom: 30px;\n"
|
||||||
|
+ " border-bottom: 1px solid #ccc;\n"
|
||||||
|
+ " padding-bottom: 15px;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " .row {\n"
|
||||||
|
+ " display: flex;\n"
|
||||||
|
+ " flex-wrap: wrap;\n"
|
||||||
|
+ " gap: 10px 30px;\n"
|
||||||
|
+ " margin-bottom: 8px;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " .field {\n"
|
||||||
|
+ " display: flex;\n"
|
||||||
|
+ " align-items: baseline;\n"
|
||||||
|
+ " min-width: 300px;\n"
|
||||||
|
+ " flex: 1 1 40%;\n"
|
||||||
|
+ " margin-bottom: 5px;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " .label {\n"
|
||||||
|
+ " font-weight: bold;\n"
|
||||||
|
+ " min-width: 160px;\n"
|
||||||
|
+ " color: #2c3e50;\n"
|
||||||
|
+ " margin-right: 10px;\n"
|
||||||
|
+ " flex-shrink: 0;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " .value {\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " word-break: break-word;\n"
|
||||||
|
+ " flex-grow: 1;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " table {\n"
|
||||||
|
+ " border-collapse: collapse;\n"
|
||||||
|
+ " margin-top: 10px;\n"
|
||||||
|
+ " width: 100%;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " td,\n"
|
||||||
|
+ " th {\n"
|
||||||
|
+ " border: 1px solid #ddd;\n"
|
||||||
|
+ " padding: 8px;\n"
|
||||||
|
+ " text-align: left;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " textarea {\n"
|
||||||
|
+ " width: 100%;\n"
|
||||||
|
+ " min-height: 80px;\n"
|
||||||
|
+ " padding: 10px;\n"
|
||||||
|
+ " resize: vertical;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " @media (max-width: 768px) {\n"
|
||||||
|
+ " .field {\n"
|
||||||
|
+ " flex: 1 1 100%;\n"
|
||||||
|
+ " min-width: auto;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " .label {\n"
|
||||||
|
+ " min-width: 120px;\n"
|
||||||
|
+ " font-size: 0.9em;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ " </style>\n"
|
||||||
|
+ "</head>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ "<div class=\"platilla\">\n"
|
||||||
|
+ " <h1>" + clienteBoleta.getContrato() + " - " + clienteViewBoleta.getRouteName() + "</h1>\n"
|
||||||
|
+ " <h2>CLIENTE</h2>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"section\">\n"
|
||||||
|
+ " <h3>Datos del Cliente</h3>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Dirección completa:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getAddressHome() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Colonia/Municipio:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getPersonalColonia() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Entre calles:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getPersonalCruzamientos() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Teléfono/Celular:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getPersonalCelular() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Ciudad:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getPersonalCiudad() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"section\">\n"
|
||||||
|
+ " <h3>Características del Domicilio</h3>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Fachada:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getFachadaDecisionFachada() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">PUERTA:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getFachadaDescripcionPuerta() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">VENTANA:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getFachadaDescripcionVentanas() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">FRENTE A NÚM:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getFachadaFrenteNumero() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">ENTRE NÚM:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getFachadaEntreNumero1() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">Y NÚM:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getFachadaEntreNumero2() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Señas especiales:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getFachadaSenasVivienda() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"section\">\n"
|
||||||
|
+ " <h3>TRABAJO</h3>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Trabajo:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajo() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Domicilio:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoDomicilio() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">ENTRE:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoCruzamientos() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">CD:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoCiudad() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">COL:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoColonia() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">TEL.1:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoTelefono1() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">EXT:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoTelefonoExtra1() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">TEL.2:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoTelefono2() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">EXT:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoTelefonoExtra2() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">TURNO:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoTurno() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">DEPARTAMENTO:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getTrabajoDepartamento() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"section\">\n"
|
||||||
|
+ " <h3>Avales</h3>\n"
|
||||||
|
+ " <div class=\"sub-section\">\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Aval:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + selectedLoan.getEndorsement().getFullName() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">DOM:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + selectedLoan.getEndorsement().getAddressHome() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">COL:</div>\n"
|
||||||
|
+ " <div class=\"value\">D" + selectedLoan.getEndorsement().getPersonalColonia() + "ATO</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">CRUZA:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + selectedLoan.getEndorsement().getPersonalCruzamientos() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">CD:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + selectedLoan.getEndorsement().getPersonalCiudad() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">TEL:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + selectedLoan.getEndorsement().getPersonalCelular() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">TEL. TRA:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + selectedLoan.getEndorsement().getTrabajoTelefono1() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">EXT:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + selectedLoan.getEndorsement().getTrabajoTelefonoExtra1() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"section\">\n"
|
||||||
|
+ " <h3>Referencias</h3>\n"
|
||||||
|
+ " <div class=\"sub-section\">\n"
|
||||||
|
+ " <h4>Referencia 1</h4>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Nombre:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1Nombre() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">PARENTESCO:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1Parentesco() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">DOM:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1Domicilio() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">COL:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1Colonia() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">CRUZA:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1Cruzamientos() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">CD:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1Ciudad() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">TEL:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1TelefonoParticular() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">CEL:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1CelularParticular() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">TEL. TRA:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1TelefonoTrabajo() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">EXT:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia1ExtraTelefonoTrabajo() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"sub-section\">\n"
|
||||||
|
+ " <h4>Referencia 2</h4>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Nombre:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2Nombre() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">PARENTESCO:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2Parentesco() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">DOM:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2Domicilio() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">COL:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2Colonia() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">CRUZA:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2Cruzamientos() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">CD:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2Ciudad() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">TEL:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2TelefonoParticular() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">CEL:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2CelularParticular() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">TEL. TRA:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2TelefonoTrabajo() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">EXT:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getReferencia2ExtraTelefonoTrabajo() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"section\">\n"
|
||||||
|
+ " <h3>Datos del Crédito</h3>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">COBRAR EN:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getDatosCreditoCobrarEn() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">ENTREGADO EN:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getDatosCreditoEntradaEn() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Fecha de compra:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + formatDate(clienteBoleta.getDatosCreditoFechaCompra()) + "</div>\n"
|
||||||
|
+ " <div class=\"label\">Primer pago:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + formatDate(clienteBoleta.getDatosCreditoPrimerPago()) + "</div>\n"
|
||||||
|
+ " <div class=\"label\">Vence:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + calcularUltimoPago(clienteBoleta.getDatosCreditoPrimerPago(), clienteBoleta.getDatosCreditoNumeroPagos() == null ? 0 : clienteBoleta.getDatosCreditoNumeroPagos(), clienteBoleta.getDatosCreditoFormaPago() == null ? null : clienteBoleta.getDatosCreditoFormaPago().toString()) + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Vendedor:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getDatosCreditoVendedor() + "</div>\n"
|
||||||
|
+ " <div class=\"label\">Forma de pago:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + clienteBoleta.getDatosCreditoFormaPago() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <div class=\"label\">Investigación crediticia:</div>\n"
|
||||||
|
+ " <div class=\"value\"></div>\n"
|
||||||
|
+ " <div class=\"label\">Monto por pago:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + selectedLoan.getLoanType().getPaymentDaily() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"section\">\n"
|
||||||
|
+ " <h4>Observación de pago:</h4>\n"
|
||||||
|
+ " <div class=\"row\">\n"
|
||||||
|
+ " <textarea style=\"width:100%; height:70px; padding:10px\" disabled=\"true\"></textarea>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <h3>Compra</h3>\n"
|
||||||
|
+ " <table>\n"
|
||||||
|
+ " <tr>\n"
|
||||||
|
+ " <th>Cant</th>\n"
|
||||||
|
+ " <th>Artículo</th>\n"
|
||||||
|
+ " <th>Precio</th>\n"
|
||||||
|
+ " <th>Importe</th>\n"
|
||||||
|
+ " </tr>\n"
|
||||||
|
+ " <tr>\n"
|
||||||
|
+ " <td>1</td>\n"
|
||||||
|
+ " <td>" + selectedLoan.getLoanType().getLoanTypeName() + "</td>\n"
|
||||||
|
+ " <td>" + selectedLoan.getLoanType().getPayment() + "</td>\n"
|
||||||
|
+ " <td>" + selectedLoan.getLoanType().getPayment() + "</td>\n"
|
||||||
|
+ " </tr>\n"
|
||||||
|
+ " </table>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"row\" style=\"margin-top:15px; font-size:1.1em\">\n"
|
||||||
|
+ " <div class=\"label\">Total de la compra:</div>\n"
|
||||||
|
+ " <div class=\"value\">" + selectedLoan.getLoanType().getPaymentTotal() + "</div>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"section\">\n"
|
||||||
|
+ " <h3>Apuntes del Cobrador</h3>\n"
|
||||||
|
+ " <textarea style=\"width:100%; height:70px; padding:10px\" disabled=\"true\"></textarea>\n"
|
||||||
|
+ " </div>\n"
|
||||||
|
+ "\n"
|
||||||
|
+ " <div class=\"section\">\n"
|
||||||
|
+ " <h3>PAGOS</h3>\n"
|
||||||
|
+ " <table>\n"
|
||||||
|
+ " <tr>\n"
|
||||||
|
+ " <th>FECHA</th>\n"
|
||||||
|
+ " <th>FOLIO</th>\n"
|
||||||
|
+ " <th>CONCEPTO</th>\n"
|
||||||
|
+ " <th>CARGOS</th>\n"
|
||||||
|
+ " <th>ABONOS</th>\n"
|
||||||
|
+ " <th>SALDO</th>\n"
|
||||||
|
+ " </tr>\n"
|
||||||
|
+ pagos
|
||||||
|
+ " </table>\n"
|
||||||
|
+ " </div>"
|
||||||
|
+ "</div>";
|
||||||
|
|
||||||
|
html = html.replaceAll("\\bnull\\b", " ");
|
||||||
|
setPlantillaHTML(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String formatDate(Date date) {
|
||||||
|
if (date == null) {
|
||||||
|
return null; // Evita NullPointerException
|
||||||
|
}
|
||||||
|
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); // Puedes cambiar el formato
|
||||||
|
return formatter.format(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void main(String[] args) {
|
||||||
|
Date today = new Date();
|
||||||
|
System.out.println("Fecha formateada: " + formatDate(today));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String calcularUltimoPago(Date fechaInicio, int numeroPagos, String periodoPago) {
|
||||||
|
if (fechaInicio == null || numeroPagos <= 0 || periodoPago == null) {
|
||||||
|
return "NA";
|
||||||
|
}
|
||||||
|
LocalDate fechaInicioLocal = fechaInicio.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||||
|
int diasAIncrementar;
|
||||||
|
switch (periodoPago.toUpperCase()) {
|
||||||
|
case "SEMANAL":
|
||||||
|
diasAIncrementar = 7;
|
||||||
|
break;
|
||||||
|
case "QUINCENAL":
|
||||||
|
diasAIncrementar = 15;
|
||||||
|
break;
|
||||||
|
case "MENSUAL":
|
||||||
|
LocalDate fechaUltimoPagoMes = fechaInicioLocal.plusMonths(numeroPagos - 1);
|
||||||
|
return formatDate(fechaUltimoPagoMes);
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Periodo de pago no válido");
|
||||||
|
}
|
||||||
|
LocalDate fechaUltimoPago = fechaInicioLocal.plusDays(diasAIncrementar * (numeroPagos - 1));
|
||||||
|
return formatDate(fechaUltimoPago);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String formatDate(LocalDate date) {
|
||||||
|
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
|
||||||
|
return formatter.format(Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()));
|
||||||
|
}
|
||||||
|
|
||||||
public void removeBonusNewCustomer() {
|
public void removeBonusNewCustomer() {
|
||||||
loanCtrl.updateBonusNewCustomer(ActiveStatus.DISABLED, selectedLoan.getId(), getLoggedUser().getUser().getId());
|
loanCtrl.updateBonusNewCustomer(ActiveStatus.DISABLED, selectedLoan.getId(), getLoggedUser().getUser().getId());
|
||||||
loan.clear();
|
loan.clear();
|
||||||
@ -1264,6 +1675,22 @@ public class DashboardBean extends GenericBean implements Serializable {
|
|||||||
this.lastStableSmallBox = lastStableSmallBox;
|
this.lastStableSmallBox = lastStableSmallBox;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPlantillaHTML() {
|
||||||
|
return plantillaHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPlantillaHTML(String plantillaHTML) {
|
||||||
|
this.plantillaHTML = plantillaHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PeopleController getPeopleCtrl() {
|
||||||
|
return peopleCtrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPeopleCtrl(PeopleController peopleCtrl) {
|
||||||
|
this.peopleCtrl = peopleCtrl;
|
||||||
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private CustomerWithoutRenovationViewService customerWithoutRenovationViewService;
|
private CustomerWithoutRenovationViewService customerWithoutRenovationViewService;
|
||||||
|
|
||||||
@ -1276,6 +1703,7 @@ public class DashboardBean extends GenericBean implements Serializable {
|
|||||||
private LoanTypeController loanTypeCtrl;
|
private LoanTypeController loanTypeCtrl;
|
||||||
private RouteController routeCtrl;
|
private RouteController routeCtrl;
|
||||||
private BitacoraController bitacoraCtrl;
|
private BitacoraController bitacoraCtrl;
|
||||||
|
private PeopleController peopleCtrl;
|
||||||
|
|
||||||
private BigDecimal totalAmountDaily;
|
private BigDecimal totalAmountDaily;
|
||||||
private BigDecimal totalTransferSenderDaily;
|
private BigDecimal totalTransferSenderDaily;
|
||||||
@ -1341,6 +1769,8 @@ public class DashboardBean extends GenericBean implements Serializable {
|
|||||||
private Date lastStableSmallBox;
|
private Date lastStableSmallBox;
|
||||||
private boolean stableSmallBoxToday;
|
private boolean stableSmallBoxToday;
|
||||||
|
|
||||||
|
private String plantillaHTML;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private CustomerService customerService;
|
private CustomerService customerService;
|
||||||
|
|
||||||
@ -1357,6 +1787,7 @@ public class DashboardBean extends GenericBean implements Serializable {
|
|||||||
loanTypeCtrl = new LoanTypeController();
|
loanTypeCtrl = new LoanTypeController();
|
||||||
routeCtrl = new RouteController();
|
routeCtrl = new RouteController();
|
||||||
bitacoraCtrl = new BitacoraController();
|
bitacoraCtrl = new BitacoraController();
|
||||||
|
peopleCtrl = new PeopleController();
|
||||||
commentsBitacora = "";
|
commentsBitacora = "";
|
||||||
setGenericValidateController(new GenericValidationController());
|
setGenericValidateController(new GenericValidationController());
|
||||||
setLastStableSmallBox(getGenericValidateController().lastStableSmallBoxByDate(getLoggedUser().getUser()));
|
setLastStableSmallBox(getGenericValidateController().lastStableSmallBoxByDate(getLoggedUser().getUser()));
|
||||||
|
@ -121,6 +121,7 @@
|
|||||||
|
|
||||||
</p:dataTable>
|
</p:dataTable>
|
||||||
<p:contextMenu for="dtLoan">
|
<p:contextMenu for="dtLoan">
|
||||||
|
<p:menuitem value="Imprimí tarjeta" icon="ui-icon-people" oncomplete="PF('tarjetaDialog').show();" update="tarjetaForm" actionListener="#{dashboardManager.cargarBoletaPagos()}"/>
|
||||||
<p:menuitem value="Cambiar propietario" icon="ui-icon-people" onclick="PF('dlg2').show();" update="dtLoan,:dashboardResumen:msgs" />
|
<p:menuitem value="Cambiar propietario" icon="ui-icon-people" onclick="PF('dlg2').show();" update="dtLoan,:dashboardResumen:msgs" />
|
||||||
<p:menuitem rendered="#{dashboardManager.getAction()}" value="Agregar abono" icon="ui-icon-check" onclick="PF('dlg3').show();" update="dtLoan,:dashboardResumen:msgs"/>
|
<p:menuitem rendered="#{dashboardManager.getAction()}" value="Agregar abono" icon="ui-icon-check" onclick="PF('dlg3').show();" update="dtLoan,:dashboardResumen:msgs"/>
|
||||||
<p:menuitem value="Agregar depósito" icon="ui-icon-check" onclick="PF('dlg7').show();" update="dtLoan,:dashboardResumen:msgs"/>
|
<p:menuitem value="Agregar depósito" icon="ui-icon-check" onclick="PF('dlg7').show();" update="dtLoan,:dashboardResumen:msgs"/>
|
||||||
@ -439,6 +440,24 @@
|
|||||||
</p:dialog>
|
</p:dialog>
|
||||||
</h:form>
|
</h:form>
|
||||||
|
|
||||||
|
<h:form id="tarjetaForm">
|
||||||
|
<p:growl id="msgsDialogtarjeta" showDetail="true"/>
|
||||||
|
<p:dialog widgetVar="tarjetaDialog" id="tarjetaDialog" header="" modal="true" responsive="true" showEffect="clip" hideEffect="clip" style="max-height: 45em; overflow-y: scroll;" width="90em" >
|
||||||
|
<p:outputPanel id="pnlPrintMultiple" class="no-page-break scrollable-panel">
|
||||||
|
<h:outputText value="#{dashboardManager.plantillaHTML}" escape="false" />
|
||||||
|
</p:outputPanel>
|
||||||
|
|
||||||
|
<f:facet name="footer">
|
||||||
|
<h:panelGroup id="botones" >
|
||||||
|
<p:commandButton value="Imprimir" title="Imprimir" icon="ui-icon-print">
|
||||||
|
<p:printer target="pnlPrintMultiple" />
|
||||||
|
</p:commandButton>
|
||||||
|
</h:panelGroup>
|
||||||
|
</f:facet>
|
||||||
|
|
||||||
|
</p:dialog>
|
||||||
|
</h:form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ui:define>
|
</ui:define>
|
||||||
|
Loading…
Reference in New Issue
Block a user