- POLIZA - EDICION EN MODO DE CONTRATO (MENSUAL, TRIMESTRAL, SEMESTRAL O ANUAL)
This commit is contained in:
parent
1264aa127b
commit
e36c5f1b27
@ -184,6 +184,41 @@ public class PagosPolizaController extends ConnectionManager implements Serializ
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<DetellePagoPoliza> fillDetellePagoPolizaPagadosByPoliza(Poliza poliza) {
|
||||
logger.info("fillDetellePagoPolizaByPoliza");
|
||||
List<DetellePagoPoliza> resultList = null;
|
||||
Transaction transaction = null;
|
||||
try {
|
||||
logger.info("Searching pagos for poliza..");
|
||||
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
|
||||
transaction = session.beginTransaction();
|
||||
CriteriaBuilder builder = session.getCriteriaBuilder();
|
||||
|
||||
CriteriaQuery<DetellePagoPoliza> criteria = builder.createQuery(DetellePagoPoliza.class);
|
||||
Root<DetellePagoPoliza> root = criteria.from(DetellePagoPoliza.class);
|
||||
|
||||
Predicate criterio1 = builder.equal(root.get("pagoPoliza").get("poliza"), poliza);
|
||||
Predicate criterio1_2 = builder.equal(root.get("estatusActivo"), GenericEnumType.ENABLED);
|
||||
Predicate criterio2 = builder.equal(root.get("pagoPoliza").get("estatusActivo"), GenericEnumType.ENABLED);
|
||||
Predicate criterio3 = builder.equal(root.get("pagoPoliza").get("pagoEstatus"), GenericEnumType.ENABLED);
|
||||
Predicate criterio4 = builder.equal(root.get("pagoPoliza").get("pagoEstatus"), GenericEnumType.INCOMPLETE);
|
||||
|
||||
criteria.where(builder.and(criterio1, criterio1_2, criterio2), builder.or(criterio3, criterio4));
|
||||
|
||||
resultList = session.createQuery(criteria).getResultList();
|
||||
|
||||
logger.info("Total of pagos found: " + (null == resultList ? -1 : resultList.size()));
|
||||
transaction.commit();
|
||||
} catch (HibernateException e) {
|
||||
logger.error("Pagos cannot be loaded ");
|
||||
rollback(transaction);
|
||||
} catch (Exception e) {
|
||||
logger.error("Method fillPagosPolizaByPoliza ", e);
|
||||
rollback(transaction);
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
|
||||
public boolean updatePago(PagosPoliza pago, User user) {
|
||||
logger.info("addPagos");
|
||||
boolean success = false;
|
||||
@ -785,6 +820,85 @@ public class PagosPolizaController extends ConnectionManager implements Serializ
|
||||
}
|
||||
}
|
||||
|
||||
public boolean editarPolizaModoPago(Poliza selectedPoliza, int numeroPagos, List<Calendar> fechasPago, List<DetellePagoPoliza> detallesPagosRealizados, List<PagosPoliza> pagos, User user) {
|
||||
logger.info("editarPolizaModoPago()");
|
||||
Date fechaActual = correcciónDeHr(new Date(), -7);
|
||||
Session session = null;
|
||||
Transaction transaction = null;
|
||||
try {
|
||||
session = HibernateUtil.getSessionFactory().getCurrentSession();
|
||||
transaction = session.beginTransaction();
|
||||
// 1. Actualizar póliza
|
||||
selectedPoliza.setLastUpdatedBy(user);
|
||||
selectedPoliza.setLastUpdatedOn(fechaActual);
|
||||
session.update(selectedPoliza);
|
||||
// 2. Obtener y desactivar pagos existentes
|
||||
|
||||
for (PagosPoliza pago : pagos) {
|
||||
pago.setEstatusActivo(GenericEnumType.DISABLED);
|
||||
pago.setLastUpdatedBy(user);
|
||||
pago.setLastUpdatedOn(fechaActual);
|
||||
session.update(pago);
|
||||
}
|
||||
// 3. Crear nuevos pagos
|
||||
double contador = selectedPoliza.getCantidadPagada() == 0 ? 2 : 1;
|
||||
for (Calendar fecha : fechasPago) {
|
||||
PagosPoliza nuevoPago = new PagosPoliza();
|
||||
nuevoPago.setId(UUID.randomUUID().toString());
|
||||
nuevoPago.setPoliza(selectedPoliza);
|
||||
nuevoPago.setEstatusActivo(GenericEnumType.ENABLED);
|
||||
nuevoPago.setTipoPago(TipoAbono.ABONO);
|
||||
nuevoPago.setFechaAPagar(fecha.getTime());
|
||||
nuevoPago.setCreatedBy(user);
|
||||
nuevoPago.setCreatedOn(fechaActual);
|
||||
if (contador == 1) {
|
||||
// Primer pago
|
||||
if (numeroPagos == 1) {
|
||||
nuevoPago.setPago(selectedPoliza.getAmount());
|
||||
nuevoPago.setCantidadPagada(selectedPoliza.getCantidadPagada());
|
||||
nuevoPago.setDiferenciaPago(selectedPoliza.getAmount() - selectedPoliza.getCantidadPagada());
|
||||
nuevoPago.setPagoEstatus(Math.abs(nuevoPago.getDiferenciaPago()) < 0.01 ? GenericEnumType.ENABLED : GenericEnumType.INCOMPLETE);
|
||||
} else {
|
||||
nuevoPago.setPago(selectedPoliza.getCantidadPagada());
|
||||
nuevoPago.setCantidadPagada(selectedPoliza.getCantidadPagada());
|
||||
nuevoPago.setDiferenciaPago(0D);
|
||||
nuevoPago.setPagoEstatus(GenericEnumType.ENABLED);
|
||||
}
|
||||
// Asociar pagos existentes
|
||||
for (DetellePagoPoliza pagosRalizado : detallesPagosRealizados) {
|
||||
pagosRalizado.setPagoPoliza(nuevoPago);
|
||||
pagosRalizado.setLastUpdatedBy(user);
|
||||
pagosRalizado.setLastUpdatedOn(fechaActual);
|
||||
session.update(pagosRalizado);
|
||||
}
|
||||
contador = 2;
|
||||
} else {
|
||||
// Pagos subsiguientes
|
||||
if (selectedPoliza.getCantidadPagada() == 0.0) {
|
||||
nuevoPago.setPago(((selectedPoliza.getAmount() - selectedPoliza.getCantidadPagada())) / (numeroPagos));
|
||||
} else {
|
||||
nuevoPago.setPago(((selectedPoliza.getAmount() - selectedPoliza.getCantidadPagada())) / (numeroPagos - 1));
|
||||
}
|
||||
nuevoPago.setCantidadPagada(0D);
|
||||
nuevoPago.setPagoEstatus(GenericEnumType.DISABLED);
|
||||
}
|
||||
session.save(nuevoPago);
|
||||
}
|
||||
transaction.commit();
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
if (transaction != null) {
|
||||
transaction.rollback();
|
||||
}
|
||||
logger.error("Error en editarPolizaModoPago: ", e);
|
||||
return false;
|
||||
} finally {
|
||||
if (session != null && session.isOpen()) {
|
||||
session.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Date correcciónDeHr(Date fecha, int horas) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(fecha);
|
||||
|
@ -306,11 +306,63 @@ public class PolizaBean extends TaxiGenericBean implements Serializable, Datatab
|
||||
showMessage(FacesMessage.SEVERITY_INFO, "Actualización realizada", "Póliza actualizada correctamente.");
|
||||
logger.info("Póliza actualizada correctamente");
|
||||
} catch (Exception e) {
|
||||
showMessage(FacesMessage.SEVERITY_INFO, "Error", "Ocurrió un error al tratar de actualizar la póliza.");
|
||||
showMessage(FacesMessage.SEVERITY_ERROR, "Error", "Ocurrió un error al tratar de actualizar la póliza.");
|
||||
logger.error("editarPoliza(): " + e);
|
||||
}
|
||||
}
|
||||
|
||||
public void editarPolizaModoPago() {
|
||||
logger.info("editarPolizaModoPago()");
|
||||
try {
|
||||
if (getIdPeriocidad().equals("0")) {
|
||||
showMessage(FacesMessage.SEVERITY_WARN, "Error", "La periodicidad es obligatoria");
|
||||
return;
|
||||
}
|
||||
if (getSelectedPoliza().getAmount() < getSelectedPoliza().getCantidadPagada()) {
|
||||
showMessage(FacesMessage.SEVERITY_WARN, "Error", "El nuevo monto no puede ser menor que la cantidad que ya se ha pagado");
|
||||
return;
|
||||
}
|
||||
// se define la fecha de inicio
|
||||
getSelectedPoliza().setInitDate(correcciónDeDias(getInitDate(), 1));
|
||||
Calendar fechaInicial = Calendar.getInstance();
|
||||
fechaInicial.setTime(getSelectedPoliza().getInitDate());
|
||||
// se determina le numero de pagos que se realizaran
|
||||
int numeroPagos = 0;
|
||||
switch (getIdPeriocidad()) {
|
||||
case "ANUAL":
|
||||
numeroPagos = 1;
|
||||
break;
|
||||
case "SEMESTRAL":
|
||||
numeroPagos = 2;
|
||||
break;
|
||||
case "TRIMESTRAL":
|
||||
numeroPagos = 4;
|
||||
break;
|
||||
case "MENSUAL":
|
||||
numeroPagos = 12;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
List<DetellePagoPoliza> detallesPagosRealizados = getPagosPolizaController().fillDetellePagoPolizaPagadosByPoliza(getSelectedPoliza());
|
||||
List<PagosPoliza> pagos = getPagosPolizaController().fillPagosPolizaByPoliza(getSelectedPoliza());
|
||||
// se generan las fechas de pago
|
||||
List<Calendar> fechasPago = generarFechasDePago(fechaInicial, numeroPagos, 0);
|
||||
if (getPagosPolizaController().editarPolizaModoPago(getSelectedPoliza(), numeroPagos, fechasPago, detallesPagosRealizados, pagos, getLoggedUser())) {
|
||||
clearPolizaForm();
|
||||
getPolizaList();
|
||||
showMessage(FacesMessage.SEVERITY_INFO, "Actualización realizada", "Póliza actualizada correctamente.");
|
||||
logger.info("Póliza actualizada correctamente");
|
||||
} else {
|
||||
showMessage(FacesMessage.SEVERITY_ERROR, "ERROR", "Ocurrió un error al tratar de actualizar la póliza.");
|
||||
logger.info("Ocurrió un error al tratar de actualizar la póliza");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
showMessage(FacesMessage.SEVERITY_FATAL, "ERROR", "Ocurrió un error al tratar de actualizar la póliza.");
|
||||
logger.error("editarPolizaModoPago(): " + e);
|
||||
}
|
||||
}
|
||||
|
||||
public List<Calendar> generarFechasDePago(Calendar fechaInicial, int numeroPagos, int periodoGracia) {
|
||||
logger.info("Generación fechas");
|
||||
//lista de fechas
|
||||
|
@ -237,11 +237,25 @@
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Acciones" style="width: 4em">
|
||||
<p:commandButton
|
||||
id="edit1"
|
||||
icon="ui-icon-pencil"
|
||||
title="Editar el modo de contrato"
|
||||
class="ui-button-icon-only green-pixcua"
|
||||
oncomplete="PF('editModoPagoDialog').show()"
|
||||
style="padding-top: 1em; background-color: orange"
|
||||
update="editModoPagoForm"
|
||||
rendered="#{data.active and (data.estatus eq 'COTIZACION' or data.estatus eq 'PENDIENTE')}">
|
||||
<f:setPropertyActionListener value="#{data}" target="#{polizaBean.selectedPoliza}"/>
|
||||
<p:confirm header="Editar el modo de contrato" message="El cambiar modo de pago cambiará la estructura de las fechas de pagos adjuntando los pagos ya realizados al primer abono y dividiendo el sobrante entre los pagos faltantes" icon="pi pi-info-circle"/>
|
||||
</p:commandButton>
|
||||
|
||||
<p:commandButton
|
||||
icon="ui-icon-pencil"
|
||||
title="Editar"
|
||||
class="ui-button-icon-only green-pixcua"
|
||||
oncomplete="PF('dlg2').show()"
|
||||
style="padding-top: 1em"
|
||||
update="carBrandForm:carBrandDialog"
|
||||
action="#{polizaBean.cargarPoliza()}"
|
||||
rendered="#{data.active and (data.estatus eq 'COTIZACION' or data.estatus eq 'PENDIENTE')}">
|
||||
@ -252,7 +266,7 @@
|
||||
icon="ui-icon-close"
|
||||
title="Cancelar póliza"
|
||||
class="rounded-button"
|
||||
style="background: red"
|
||||
style="background: red; padding-top: 1em"
|
||||
oncomplete="PF('eliminarPoliza').show()"
|
||||
update="eliminarPolizaForm:eliminarPoliza"
|
||||
action="#{polizaBean.cargarDevolucion()}"
|
||||
@ -350,6 +364,19 @@
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Acciones" style="width: 4em">
|
||||
<p:commandButton
|
||||
id="edit2"
|
||||
icon="ui-icon-pencil"
|
||||
title="Editar el modo de contrato"
|
||||
class="ui-button-icon-only green-pixcua"
|
||||
oncomplete="PF('editModoPagoDialog').show()"
|
||||
style="padding-top: 1em; background-color: orange"
|
||||
update="editModoPagoForm"
|
||||
rendered="#{data.active and (data.estatus eq 'COTIZACION' or data.estatus eq 'PENDIENTE')}">
|
||||
<f:setPropertyActionListener value="#{data}" target="#{polizaBean.selectedPoliza}"/>
|
||||
<p:confirm header="Editar el modo de contrato" message="El cambiar modo de pago cambiará la estructura de las fechas de pagos adjuntando los pagos ya realizados al primer abono y dividiendo el sobrante entre los pagos faltantes" icon="pi pi-info-circle"/>
|
||||
</p:commandButton>
|
||||
|
||||
<p:commandButton
|
||||
value="$"
|
||||
title="Pagos"
|
||||
@ -368,6 +395,7 @@
|
||||
title="Editar"
|
||||
class="ui-button-icon-only green-pixcua"
|
||||
oncomplete="PF('dlg2').show()"
|
||||
style="padding-top: 1em"
|
||||
update="carBrandForm:carBrandDialog"
|
||||
action="#{polizaBean.cargarPoliza()}"
|
||||
rendered="#{data.active and (data.estatus eq 'COTIZACION' or data.estatus eq 'PENDIENTE')}">
|
||||
@ -476,6 +504,19 @@
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Acciones" style="width: 4em">
|
||||
<p:commandButton
|
||||
id="edit3"
|
||||
icon="ui-icon-pencil"
|
||||
title="Editar el modo de contrato"
|
||||
class="ui-button-icon-only green-pixcua"
|
||||
oncomplete="PF('editModoPagoDialog').show()"
|
||||
style="padding-top: 1em; background-color: orange"
|
||||
update="editModoPagoForm"
|
||||
rendered="#{data.active and (data.estatus eq 'COTIZACION' or data.estatus eq 'PENDIENTE')}">
|
||||
<f:setPropertyActionListener value="#{data}" target="#{polizaBean.selectedPoliza}"/>
|
||||
<p:confirm header="Editar el modo de contrato" message="El cambiar modo de pago cambiará la estructura de las fechas de pagos adjuntando los pagos ya realizados al primer abono y dividiendo el sobrante entre los pagos faltantes" icon="pi pi-info-circle"/>
|
||||
</p:commandButton>
|
||||
|
||||
<p:commandButton
|
||||
value="$"
|
||||
title="Pagos"
|
||||
@ -607,6 +648,7 @@
|
||||
title="Editar"
|
||||
class="ui-button-icon-only green-pixcua"
|
||||
oncomplete="PF('dlg2').show()"
|
||||
style="padding-top: 1em"
|
||||
update="carBrandForm:carBrandDialog"
|
||||
action="#{polizaBean.cargarPoliza()}"
|
||||
rendered="#{data.active and (data.estatus eq 'COTIZACION' or data.estatus eq 'PENDIENTE')}">
|
||||
@ -617,7 +659,7 @@
|
||||
icon="ui-icon-close"
|
||||
title="Cancelar póliza"
|
||||
class="rounded-button"
|
||||
style="background: red"
|
||||
style="background: red; padding-top: 1em"
|
||||
oncomplete="PF('eliminarPoliza').show()"
|
||||
update="eliminarPolizaForm:eliminarPoliza"
|
||||
action="#{polizaBean.cargarDevolucion()}"
|
||||
@ -730,15 +772,17 @@
|
||||
</p:dataTable>
|
||||
</p:tab>
|
||||
</p:tabView>
|
||||
|
||||
<p:confirmDialog global="true" showEffect="fade" hideEffect="fade" responsive="true" width="350">
|
||||
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no ui-button-flat"/>
|
||||
<p:commandButton value="Si" type="button" styleClass="ui-confirmdialog-yes" />
|
||||
</p:confirmDialog>
|
||||
|
||||
</h:form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h:form id="confirmForm">
|
||||
<p:confirmDialog id="globalConfirmMsg" global="true" showEffect="clip" hideEffect="clip" width="350">
|
||||
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no ui-button-flat"/>
|
||||
<p:commandButton value="Si" type="button" styleClass="ui-confirmdialog-yes" />
|
||||
</p:confirmDialog>
|
||||
</h:form>
|
||||
|
||||
<h:form id="carBrandForm">
|
||||
<p:growl id="msgsDialog" showDetail="true"/>
|
||||
<p:dialog widgetVar="dlg2" width="40em" id="carBrandDialog" header="#{polizaBean.polizaAdd.id==null ?'Agregar':'Editar'} póliza" modal="true" responsive="true" showEffect="clip" hideEffect="clip">
|
||||
@ -888,6 +932,47 @@
|
||||
</p:dialog>
|
||||
</h:form>
|
||||
|
||||
<h:form id="editModoPagoForm">
|
||||
<p:growl id="msgsDialog" showDetail="true"/>
|
||||
<p:dialog widgetVar="editModoPagoDialog" width="40em" id="editModoPagoDialog" header="Cambiar modo de pago" modal="true" responsive="true" showEffect="clip" hideEffect="clip">
|
||||
<p:ajax event="close" update="editModoPagoDialog" listener="#{polizaBean.clearPolizaForm()}" />
|
||||
<h:panelGroup styleClass="md-inputfield" style="margin-top: 2em; margin-bottom: 2em" >
|
||||
|
||||
<h:panelGroup styleClass="md-inputfield" style="margin-top: 2em; margin-bottom: 2em" >
|
||||
<p:calendar id="paymentDate" value="#{polizaBean.initDate}" readonlyInput="true" navigator="true" locale="es" pattern="dd - MMMM - yyyy" required="true" requiredMessage="La fecha es requerida" style="width: 100%;" />
|
||||
<label>Fecha de inicio</label>
|
||||
<p:message for="paymentDate" display="text"/>
|
||||
</h:panelGroup>
|
||||
|
||||
<h:panelGroup styleClass="md-inputfield" style="margin-top: 2em; margin-bottom: 2em" >
|
||||
<p:selectOneMenu
|
||||
id="periocidadSlct"
|
||||
style="width:100%"
|
||||
value="#{polizaBean.idPeriocidad}"
|
||||
required="true"
|
||||
requiredMessage="Periodicidad es obligatoria" >
|
||||
<f:selectItem itemLabel="Selecione la periodicidad de pago" itemValue="0" />
|
||||
<f:selectItem itemLabel="Anual" itemValue="ANUAL" />
|
||||
<f:selectItem itemLabel="Semestral" itemValue="SEMESTRAL" />
|
||||
<f:selectItem itemLabel="Trimestral" itemValue="TRIMESTRAL" />
|
||||
<f:selectItem itemLabel="Mensual" itemValue="MENSUAL" />
|
||||
</p:selectOneMenu>
|
||||
<p:message for="periocidadSlct" display="text"/>
|
||||
</h:panelGroup>
|
||||
|
||||
<h:panelGroup styleClass="md-inputfield" style="margin-top: 2em;" >
|
||||
<p:inputText id="amount" value="#{polizaBean.selectedPoliza.amount}" required="true" requiredMessage="El costo es obligatorio" style="width: 100%;" />
|
||||
<label>Costo</label>
|
||||
<p:message for="amount" display="text"/>
|
||||
</h:panelGroup>
|
||||
|
||||
<div class="ui-g-12">
|
||||
<p:commandButton id="addButton2" value="#{i18n['button.edit']}" rendered="#{polizaBean.selectedPoliza.id!=null}" actionListener="#{polizaBean.editarPolizaModoPago()}" oncomplete="validNewCarBrand(xhr, status, args)" update=":form,msgsDialog,editModoPagoForm"/>
|
||||
</div>
|
||||
</h:panelGroup>
|
||||
</p:dialog>
|
||||
</h:form>
|
||||
|
||||
<h:form id="agregarClienteForm">
|
||||
<p:growl id="msgsDialog" showDetail="true"/>
|
||||
<p:dialog id="agregarClienteDialog" widgetVar="agregarClienteDialog" width="45em" height="39em" header="Agregar cliente" modal="true" responsive="true" >
|
||||
|
Loading…
Reference in New Issue
Block a user