Compare commits

...

2 Commits

Author SHA1 Message Date
a02e7c2f8e - LOCACIONES - DETALLES VARIOS
- DEVOLUCIONES - QUE LAS DEVOLUCIONES DEN OPCION DE ELEGIR LA FORMA EN QUE SE REALIZARA DICHA DEVOLUCION (EFECTIVO, TARJETA, TRANFERENCIA...)
2025-07-07 15:13:21 -06:00
b399377788 - PRASE - CAJA - INICIOS - CORRECCIÓN DE NOMBRE DE COLUMNAS 2025-05-16 18:49:48 -06:00
15 changed files with 121 additions and 31 deletions

View File

@ -1063,7 +1063,7 @@ public class ClosingDayController extends ConnectionManager implements Serializa
+ "AND e.cobro = :userID ";
private final String query_solicitudes_cancelacion_poliza = "SELECT e.monto_devolucion, "
+ " 'Primas no devengadas' AS tipo_pago, "
+ " CONCAT('Primas no devengadas - ', e.metodo_devolucion) AS tipo_pago, "
+ "p.id as person, "
+ "CONCAT('Poliza: ', pol.folio), " + complete_name + ", e.id "
+ "FROM solicitud_cancelacion_poliza e "

View File

@ -764,7 +764,7 @@ public class PagosPolizaController extends ConnectionManager implements Serializ
detalleDevolucion.setCantidadPagada(solicitud.getMontoDevolucion());
detalleDevolucion.setCobro(solicitud.getUsuarioCorte());
detalleDevolucion.setFolio("");
detalleDevolucion.setMetodoPago(MetodoPago.EFECTIVO);
detalleDevolucion.setMetodoPago(solicitud.getMetodoDevolucion());
detalleDevolucion.setCreatedOn(fechaActual);
detalleDevolucion.setCreatedBy(user);
detalleDevolucion.setHistorialAbonoMultiple(null);

View File

@ -8,6 +8,7 @@ import com.arrebol.taxiservicios.model.catalog.Location;
import com.arrebol.taxiservicios.model.core.User;
import com.arrebol.taxiservicios.model.enums.EstatusSolicitud;
import com.arrebol.taxiservicios.model.enums.GenericEnumType;
import com.arrebol.taxiservicios.model.enums.MetodoPago;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
@ -79,6 +80,10 @@ public class SolicitudCancelacionPoliza implements Serializable {
@Column(name = "monto_devolucion")
private Double montoDevolucion;
@Enumerated(EnumType.STRING)
@Column(name = "metodo_devolucion", nullable = true)
private MetodoPago metodoDevolucion;
@Column(name = "comentario")
private String comentario;
@ -217,4 +222,12 @@ public class SolicitudCancelacionPoliza implements Serializable {
this.fechaPago = fechaPago;
}
public MetodoPago getMetodoDevolucion() {
return metodoDevolucion;
}
public void setMetodoDevolucion(MetodoPago metodoDevolucion) {
this.metodoDevolucion = metodoDevolucion;
}
}

View File

@ -8,6 +8,7 @@ import com.arrebol.taxiservicios.model.catalog.Location;
import com.arrebol.taxiservicios.model.core.User;
import com.arrebol.taxiservicios.model.enums.EstatusSolicitud;
import com.arrebol.taxiservicios.model.enums.GenericEnumType;
import com.arrebol.taxiservicios.model.enums.MetodoPago;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
@ -91,6 +92,10 @@ public class SolicitudDevolucionDetellePagoPoliza implements Serializable {
@Column(name = "monto_devolucion")
private Double montoDevolucion;
@Enumerated(EnumType.STRING)
@Column(name = "metodo_devolucion", nullable = true)
private MetodoPago metodoDevolucion;
@Column(name = "comentario")
private String comentario;
@ -237,4 +242,12 @@ public class SolicitudDevolucionDetellePagoPoliza implements Serializable {
this.lastUpdatedBy = lastUpdatedBy;
}
public MetodoPago getMetodoDevolucion() {
return metodoDevolucion;
}
public void setMetodoDevolucion(MetodoPago metodoDevolucion) {
this.metodoDevolucion = metodoDevolucion;
}
}

View File

@ -704,6 +704,7 @@ public class AddClosingDayBean extends TaxiGenericBean implements Serializable {
+ "FROM solicitud_cancelacion_poliza WHERE DATE(fecha_pago) > " + sub_query_to_find_previously_closing_day + " "
+ " AND id_solicitante = :userID "
+ " AND estatus_solicitud = 'APROBADO' "
+ " AND metodo_devolucion = 'EFECTIVO' "
+ " AND estatus_activo = 'ENABLED' ";
}

View File

@ -63,6 +63,7 @@ public class PagosPolizasBean extends TaxiGenericBean implements Serializable {
private HistorialAbonoMultiple selectedHistorialAbonoMultiple;
private String comentarioDevolucionPago;
private String metodoDevolucionPago;
private String detallePagoDisponibleParaDevocion;
@PostConstruct
@ -266,8 +267,11 @@ public class PagosPolizasBean extends TaxiGenericBean implements Serializable {
solicitud.setUsuarioCorte(getLoggedUser());
solicitud.setEstatusSolicitud(EstatusSolicitud.PENDIENTE);
solicitud.setMontoDevolucion(getSelectedDetellePago().getCantidadPagada());
solicitud.setMetodoDevolucion(MetodoPago.valueOf(getMetodoDevolucionPago()));
solicitud.setComentario(getComentarioDevolucionPago());
getPagosPolizaController().createSolicitudDevolucionDetellePagoPoliza(solicitud, getLoggedUser());
setComentarioDevolucionPago("");
setMetodoDevolucionPago("EFECTIVO");
showMessage(FacesMessage.SEVERITY_INFO, "Solicitud realizada", "Solicitud de devolución de abono realizada correctamente");
} catch (Exception e) {
logger.error("solicitarDevolusionDePago(): " + e);
@ -526,6 +530,14 @@ public class PagosPolizasBean extends TaxiGenericBean implements Serializable {
this.comentarioDevolucionPago = comentarioDevolucionPago;
}
public String getMetodoDevolucionPago() {
return metodoDevolucionPago;
}
public void setMetodoDevolucionPago(String metodoDevolucionPago) {
this.metodoDevolucionPago = metodoDevolucionPago;
}
public String getDetallePagoDisponibleParaDevocion() {
return detallePagoDisponibleParaDevocion;
}

View File

@ -279,6 +279,7 @@ public class PolizaBean extends TaxiGenericBean implements Serializable, Datatab
public void cargarDevolucion() {
setComentario("");
setMontoRenbolso(getSelectedPoliza().getCantidadPagada());
setMetodoPago("EFECTIVO");
}
public void editarPoliza() {
@ -460,6 +461,7 @@ public class PolizaBean extends TaxiGenericBean implements Serializable, Datatab
socitud.setFechaPago(null);
socitud.setEstatusSolicitud(EstatusSolicitud.PENDIENTE);
socitud.setMontoDevolucion(getMontoRenbolso());
socitud.setMetodoDevolucion(MetodoPago.valueOf(getMetodoPagoRenbolso()));
socitud.setComentario(getComentario());
if (getController().saveSolicitudCancelacionPoliza(socitud, getLoggedUser())) {
showMessage(FacesMessage.SEVERITY_INFO, "Solicitud realizada", "Solicitud de cancelación de poliza realizada correctamente");
@ -865,6 +867,7 @@ public class PolizaBean extends TaxiGenericBean implements Serializable, Datatab
private Boolean editPoliza;
private Date initDate;
private String metodoPago;
private String metodoPagoRenbolso;
private Double primerPago;
private Poliza selectedPoliza;
@ -1312,6 +1315,14 @@ public class PolizaBean extends TaxiGenericBean implements Serializable, Datatab
this.metodoPago = metodoPago;
}
public String getMetodoPagoRenbolso() {
return metodoPagoRenbolso;
}
public void setMetodoPagoRenbolso(String metodoPagoRenbolso) {
this.metodoPagoRenbolso = metodoPagoRenbolso;
}
public Double getMontoRenbolso() {
return montoRenbolso;
}

View File

@ -48,8 +48,8 @@
<p:menuitem id="sub_admin_client" value="#{grant['admin.client.name']}s" icon="&#xE8D3;" outcome="#{i18n['outcome.client']}" rendered="#{loginBean.isUserInRole('admin.client.name')}"/>
<p:menuitem id="sub_admin_provider" value="Terceros" icon="&#xE03F;" outcome="#{i18n['outcome.provider']}" rendered="#{loginBean.isUserInRole('admin.provider.name')}" />
<p:menuitem id="sub_admin_expense_invoice" value="Ingresos/Egresos" icon="&#xe227;" outcome="#{i18n['outcome.admin.expense.invoice']}" rendered="#{loginBean.isUserInRole('admin.income.expenses.name')}" />
<p:menuitem id="sub_admin_devolucion_pago" value="Solicitudes de devoción pagos" icon="&#xe227;" outcome="#{i18n['outcome.prase.polizas.aprobarDevolucionDePagos']}" rendered="#{loginBean.isUserInRole('admin.devolucion.pagos.aprobe.name')}" />
<p:menuitem id="sub_admin_devolucion_poliza" value="Solicitudes de devoción poliza" icon="&#xe227;" outcome="#{i18n['outcome.prase.polizas.aprobarDevolucionPoliza']}" rendered="#{loginBean.isUserInRole('admin.cancelacion.poliza.name')}" />
<p:menuitem id="sub_admin_devolucion_pago" value="Solicitudes de devolución pagos" icon="&#xe227;" outcome="#{i18n['outcome.prase.polizas.aprobarDevolucionDePagos']}" rendered="#{loginBean.isUserInRole('admin.devolucion.pagos.aprobe.name')}" />
<p:menuitem id="sub_admin_devolucion_poliza" value="Solicitudes de devolución poliza" icon="&#xe227;" outcome="#{i18n['outcome.prase.polizas.aprobarDevolucionPoliza']}" rendered="#{loginBean.isUserInRole('admin.cancelacion.poliza.name')}" />
</p:submenu>
<p:submenu id="menu_catalog" label="Catálogos" icon="&#xe85d;">

View File

@ -117,10 +117,10 @@
<p:column headerText="#{i18n['menu.admin.expense.column.description']}" sortBy="#{expense.description}" filterBy="#{expense.description}">
<h:outputText value="#{expense.description}" />
</p:column>
<p:column headerText="Creado por" sortBy="#{expense.createdBy.person.firstName} #{expense.createdBy.person.lastName} #{expense.createdBy.person.middleName}" filterBy="#{expense.createdBy.person.firstName} #{expense.createdBy.person.lastName} #{expense.createdBy.person.middleName}">
<p:column headerText="Usuario destino" sortBy="#{expense.createdBy.person.firstName} #{expense.createdBy.person.lastName} #{expense.createdBy.person.middleName}" filterBy="#{expense.createdBy.person.firstName} #{expense.createdBy.person.lastName} #{expense.createdBy.person.middleName}">
<h:outputText value="#{expense.createdBy.person.firstName} #{expense.createdBy.person.lastName} #{expense.createdBy.person.middleName}" />
</p:column>
<p:column headerText="Modificado por" sortBy="#{expense.lastUpdatedBy.person.firstName} #{expense.lastUpdatedBy.person.lastName} #{expense.lastUpdatedBy.person.middleName}" filterBy="#{expense.lastUpdatedBy.person.firstName} #{expense.lastUpdatedBy.person.lastName} #{expense.lastUpdatedBy.person.middleName}">
<p:column headerText="Creador por" sortBy="#{expense.lastUpdatedBy.person.firstName} #{expense.lastUpdatedBy.person.lastName} #{expense.lastUpdatedBy.person.middleName}" filterBy="#{expense.lastUpdatedBy.person.firstName} #{expense.lastUpdatedBy.person.lastName} #{expense.lastUpdatedBy.person.middleName}">
<h:outputText value="#{expense.lastUpdatedBy.person.firstName} #{expense.lastUpdatedBy.person.lastName} #{expense.lastUpdatedBy.person.middleName}" />
</p:column>
<p:column headerText="Locación" sortBy="#{expense.location.name}" filterBy="#{expense.location.name}">

View File

@ -59,6 +59,10 @@
<p:column headerText="Estatus" sortBy="#{data.estatusSolicitud.type}" filterBy="#{data.estatusSolicitud.type}">
<h:outputText value="#{data.estatusSolicitud.type}" />
</p:column>
<p:column headerText="Método de devolución" sortBy="#{data.metodoDevolucion.type}" filterBy="#{data.metodoDevolucion.type}">
<h:outputText value="#{data.metodoDevolucion.type}" />
</p:column>
<p:column headerText="Comentarios" sortBy="#{data.comentario}" filterBy="#{data.comentario}">
<h:outputText value="#{data.comentario}" />

View File

@ -47,6 +47,10 @@
<p:column headerText="Estatus" sortBy="#{data.estatusSolicitud.type}" filterBy="#{data.estatusSolicitud.type}">
<h:outputText value="#{data.estatusSolicitud.type}" />
</p:column>
<p:column headerText="Método de devolución" sortBy="#{data.metodoDevolucion.type}" filterBy="#{data.metodoDevolucion.type}">
<h:outputText value="#{data.metodoDevolucion.type}" />
</p:column>
<p:column headerText="Comentarios" sortBy="#{data.comentario}" filterBy="#{data.comentario}">
<h:outputText value="#{data.comentario}" />

View File

@ -131,6 +131,7 @@
oncomplete="PF('dlg2').show()"
update="carBrandForm:carBrandDialog"
action="#{polizaBean.cargarPoliza()}"
style="margin-bottom: 0.3em;"
rendered="#{data.active and (data.estatus eq 'COTIZACION' or data.estatus eq 'PENDIENTE' or data.estatus eq 'LIQUIDADO')}">
<f:setPropertyActionListener value="#{data}" target="#{polizaBean.selectedPoliza}"/>
</p:commandButton>
@ -181,55 +182,55 @@
<h:outputText value="#{data.folio}" style="text-transform: capitalize;">
</h:outputText>
</p:column>
<p:column headerText="Estatus" sortBy="#{data.estatus.value}" filterBy="#{data.estatus.value}">
<h:outputText value="#{data.estatus.value}" style="text-transform: capitalize;">
</h:outputText>
</p:column>
<p:column headerText="Cliente" sortBy="#{data.customer.firstName} #{data.customer.secondName} #{data.customer.lastName} #{data.customer.middleName}" filterBy="#{data.customer.firstName} #{data.customer.secondName} #{data.customer.lastName} #{data.customer.middleName}">
<h:outputText value="#{data.customer.firstName} #{data.customer.secondName} #{data.customer.lastName} #{data.customer.middleName}" style="text-transform: capitalize;">
</h:outputText>
</p:column>
<p:column headerText="Teléfono" sortBy="#{data.telefonoCliente}" filterBy="#{data.telefonoCliente}">
<h:outputText value="#{data.telefonoCliente}" style="text-transform: capitalize;">
</h:outputText>
</p:column>
<p:column headerText="Vehículo" sortBy="#{data.taxi.placa} #{data.taxi.vehicle.name} #{data.taxi.vehicle.brand.name} #{data.taxi.color.name} #{data.taxi.year}" filterBy="#{data.taxi.placa} #{data.taxi.vehicle.name} #{data.taxi.vehicle.brand.name} #{data.taxi.color.name} #{data.taxi.year}">
<h:outputText value="#{data.taxi.placa} #{data.taxi.vehicle.name} #{data.taxi.vehicle.brand.name} #{data.taxi.color.name} #{data.taxi.year}" style="text-transform: capitalize;">
</h:outputText>
</p:column>
<p:column headerText="Fecha inicial" sortBy="#{data.initDate}" filterBy="#{data.initDate}">
<h:outputText value="#{data.initDate}" style="text-transform: capitalize;">
<f:convertDateTime type="date" locale="es" pattern="dd - MMMM - yyyy"/>
</h:outputText>
</p:column>
<p:column headerText="Fecha vencimiento" sortBy="#{data.endDate}" filterBy="#{data.endDate}">
<h:outputText value="#{data.endDate}" style="text-transform: capitalize;">
<f:convertDateTime type="date" locale="es" pattern="dd - MMMM - yyyy"/>
</h:outputText>
</p:column>
<p:column headerText="Tipo" sortBy="#{data.tipoPoliza.name}" filterBy="#{data.tipoPoliza.name}">
<h:outputText value="#{data.tipoPoliza.name}" style="text-transform: capitalize;">
</h:outputText>
</p:column>
<p:column headerText="Costo" sortBy="#{data.amount}" filterBy="#{data.amount}">
<h:outputText value="#{data.amount}" style="text-transform: capitalize;">
<f:convertNumber pattern="¤#,##0.00" locale="en_US" currencySymbol="$" />
</h:outputText>
</p:column>
<p:column headerText="Asesor" sortBy="#{data.asesor.firstName} #{data.asesor.lastName}" filterBy="#{data.asesor.firstName} #{data.asesor.lastName}">
<h:outputText value="#{data.asesor.firstName} #{data.asesor.lastName}" style="text-transform: capitalize;">
</h:outputText>
</p:column>
<p:column headerText="Comentarios" sortBy="#{data.comentarios}" filterBy="#{data.comentarios}">
<h:outputText value="#{data.comentarios}" style="text-transform: capitalize;">
</h:outputText>
@ -791,7 +792,7 @@
<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">
@ -1295,7 +1296,23 @@
<label>Indique el monto a devolver</label>
<p:message for="montoRenbolso" display="text"/>
</h:panelGroup>
</div>
</div>
<div class="taxy-padding" style="padding-top: 2em">
<h:panelGroup id="metodoPago" styleClass="md-inputfield" >
<p:selectOneMenu
id="metodoPagoSlct"
style="width:100%"
value="#{polizaBean.metodoPagoRenbolso}"
required="true"
requiredMessage="Seleccione el método por medio del cual se realizara el rembolso">
<f:selectItem itemLabel="Efectivo" itemValue="EFECTIVO" />
<f:selectItem itemLabel="Tarjeta" itemValue="TARJETA" />
<f:selectItem itemLabel="Depósito" itemValue="DEPOSITO" />
<f:selectItem itemLabel="Transferencia" itemValue="TRASFERENCIA" />
</p:selectOneMenu>
<p:message for="metodoPagoSlct" display="text"/>
</h:panelGroup>
</div>
<p:commandButton id="addButtonC" value="Confirmar" actionListener="#{polizaBean.solicitarCacelacionPoliza()}" update="eliminarPolizaForm, form" />
</p:outputPanel>
</p:dialog>

View File

@ -412,13 +412,31 @@
<h:form id="devolverDetatallePagoForm">
<p:dialog widgetVar="devolverDetatallePagoDialog" height="30%" width="30%" id="devolverDetatallePagoDialog" header="Solicitar devolución de detalle de pago" modal="true">
<p:ajax event="close" update="devolverDetatallePagoDialog" />
<p:outputPanel style="margin-top: 1em" >
<h:panelGroup styleClass="md-inputfield" >
<p:inputText id="comentario" value="#{pagosPolizasBean.comentarioDevolucionPago}" style="width: 100%;" />
<label>Motivo por el cual solicita la devoción</label>
<p:message for="comentario" display="text"/>
</h:panelGroup>
<p:outputPanel>
<div class="taxy-padding" style="padding-top: 2em">
<h:panelGroup styleClass="md-inputfield" >
<p:inputText id="comentario" value="#{pagosPolizasBean.comentarioDevolucionPago}" style="width: 100%;" />
<label>Motivo por el cual solicita la devoción</label>
<p:message for="comentario" display="text"/>
</h:panelGroup>
</div>
<div class="taxy-padding" style="padding-top: 2em">
<h:panelGroup id="metodoPago" styleClass="md-inputfield" >
<p:selectOneMenu
id="metodoPagoSlct"
style="width:100%"
value="#{pagosPolizasBean.metodoDevolucionPago}"
required="true"
requiredMessage="Seleccione el método por medio del cual se realizara el rembolso">
<f:selectItem itemLabel="Efectivo" itemValue="EFECTIVO" />
<f:selectItem itemLabel="Tarjeta" itemValue="TARJETA" />
<f:selectItem itemLabel="Depósito" itemValue="DEPOSITO" />
<f:selectItem itemLabel="Transferencia" itemValue="TRASFERENCIA" />
</p:selectOneMenu>
<p:message for="metodoPagoSlct" display="text"/>
</h:panelGroup>
</div>
<p:commandButton id="addButton1" value="Solicitar" actionListener="#{pagosPolizasBean.solicitarDevolusionDePago()}" update="form, devolverDetatallePagoForm" />

View File

@ -131,7 +131,7 @@
required="true"
requiredMessage="La localidad es requerida">
<f:selectItem itemLabel="Ubicación" itemValue="#{null}" noSelectionOption="true"/>
<f:selectItems value="#{userBean.listUserLocation}" var="locations" itemValue="#{locations.location.id}" itemLabel="#{locations.location.name}"/>
<f:selectItems value="#{userBean.locations}" var="locations" itemValue="#{locations.id}" itemLabel="#{locations.name}"/>
</p:selectOneMenu>
<p:message for="locationSlct" display="text"/>
</h:panelGroup>

View File

@ -126,11 +126,8 @@
filterMatchMode="contains"
required="true"
requiredMessage="La localidad es requerida">
<f:selectItem itemLabel="Ubicación"
itemValue="#{null}" noSelectionOption="true"/>
<f:selectItems value="#{userBean.listUserLocation}"
var="locations" itemValue="#{locations.location.id}"
itemLabel="#{locations.location.name}"/>
<f:selectItem itemLabel="Ubicación" itemValue="#{null}" noSelectionOption="true"/>
<f:selectItems value="#{userBean.locations}" var="locations" itemValue="#{locations.id}" itemLabel="#{locations.name}"/>
</p:selectOneMenu>
<p:message for="locationSlct" display="text"/>
</h:panelGroup>