Cierre mensual
Cierre Mensual
Se aplica filtro entre fechas en documentos embebidos
Procesos:
Filtrar
Formulario
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<ui:composition template="/layout/template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:b="http://bootsfaces.net/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:a="http://xmlns.jcp.org/jsf/composite/avbravo">
<ui:define name="content">
<!--<h:outputStylesheet library="bsf" name="css/thumbnails.css"/>-->
<style>
.thumbnail { max-width: 100%; }
img.thumbnail:hover, img.thumbnail:focus {
border: 1px solid;
border-cierremensual: #428BCA;
}
</style>
<b:form id="form" prependId="false" rendered="#{loginController.loggedIn and applicationMenu.cierremensual.create}" onkeypress="if (event.keyCode == 13) {
return false;
}">
<h:panelGroup id="content" layout="block">
<!-- <p:growl id="msg"/>-->
<a:messages id="msg"/>
<b:panel title="#{msg['titleview.cierremensual']}" look="primary" >
<b:panelGrid id="panel" colSpans="2,10" size="xs" >
<p:outputLabel value="#{msg['field.anio']}" />
<a:inputText value="#{cierremensualController.cierremensual.anio}" id="anio" label="#{msg['field.anio']}" />
<p:outputLabel value="#{msg['field.mes']}" />
<a:mesSelectOneMenu id="mes"
value="#{cierremensualController.cierremensual.mes}" />
<p:outputLabel value="#{msg['field.descripcion']}" />
<a:inputText value="#{cierremensualController.cierremensual.descripcion}" id="descripcion" label="#{msg['field.descripcion']}" />
<p:outputLabel value="#{msg['field.totalfacturas']}" />
<p:outputLabel value="#{cierremensualController.totalFacturas}" id="totalfacturas" />
<p:outputLabel value="#{msg['field.porcentajesimbolo']}" />
<p:outputLabel value="#{cierremensualController.porcentajemorosidad.porcentajemorosidad}" id="porcentaje" />
<a:save rendered="#{applicationMenu.cierremensual.create and cierremensualController.writable}"
save="#{cierremensualController.save()}" />
<b:row>
<b:column span="2">
<b:commandButton iconAwesome="fa-eraser"
look="success"
title="#{app['button.clear']}"
action="#{cierremensualController.prepare('new',cierremensualController.cierremensual)}"
update=":form:content" >
<f:ajax />
</b:commandButton>
</b:column>
<b:column span="2">
<b:commandButton immediate="true"
look="primary"
iconAwesome="fa-share"
rendered="#{applicationMenu.cierremensual.list}"
title="#{app['button.search']}"
action="#{cierremensualController.prepare('golist',cierremensualController.cierremensual)}"/>
</b:column>
</b:row>
</b:panelGrid>
</b:panel>
</h:panelGroup>
</b:form>
<a:denegado renderedcondition="#{!loginController.loggedIn or !applicationMenu.cierremensual.create}" />
<br/><br/><br/>
</ui:define>
</ui:composition>
CierremensualServices.java
Verifica si el pagare esta pendiente
Aplicar un filtro por cada elemento.
public List<Factura> facturasConPagarePendiente(Integer anio, Integer mes){
List<Factura> list = new ArrayList<>();
try {
Date firstDate = DateUtil.primerDiaDelMesEnFecha(anio, mes);
Date lastDate = DateUtil.getDateLastOfMonth(anio, mes);
Bson filterfactura = Filters.and(Filters.eq("almacen.idalmacen", 6), Filters.or(Filters.eq("estatusfactura.idestatusfactura", 1), Filters.eq("estatusfactura.idestatusfactura", 2), Filters.eq("estatusfactura.idestatusfactura", 6), Filters.eq("estatusfactura.idestatusfactura", 7)));
//Filter para cada elemento
Bson filterpagare = functionFilter(0, firstDate,lastDate);
for (int i = 1; i < 13; i++) {
Bson f = functionFilter(i, firstDate,lastDate);
filterpagare = Filters.or(filterpagare, f);
}
Bson filter = Filters.and(filterfactura, filterpagare);
List<Factura> listFactura = facturaRepository.filters(filter, new Document("idfactura", 1));
} catch (Exception e) {
JsfUtil.errorMessage("findById() " + e.getLocalizedMessage());
}
return list;
}
Controller
En el init() indicamos las bases de datos dinámicas
@PostConstruct
public void init() {
try {
//Asigna la base de datos a la tienda logueada
facturaRepository.setDatabase("store_" + loginController.getAlmacen().getIdalmacen());
facturadetalleRepository.setDatabase("store_" + loginController.getAlmacen().getIdalmacen());
cierremensualRepository.setDatabase("store_" + loginController.getAlmacen().getIdalmacen());
//autoincrementableStoreejbRepository.setDatabase("store_"+loginController.getAlmacen().getIdalmacen());
totalFacturas = 0;
String action = loginController.get("cierremensual");
String id = loginController.get("idcierremensual");
String pageSession = loginController.get("pagecierremensual");
//Search
if (loginController.get("searchcierremensual") == null || loginController.get("searchcierremensual").equals("")) {
loginController.put("searchcierremensual", "_init");
}
writable = false;
cierremensualList = new ArrayList<>();
cierremensualFiltered = new ArrayList<>();
cierremensual = new Cierremensual();
cierremensualSelected = new Cierremensual();
cierremensualDataModel = new CierremensualDataModel(cierremensualList);
if (pageSession != null) {
page = Integer.parseInt(pageSession);
}
Integer c = cierremensualRepository.sizeOfPage(rowPage);
page = page > c ? c : page;
if (action != null) {
switch (action) {
case "gonew":
cierremensual = new Cierremensual();
cierremensual.setAnio(DateUtil.getAnioActual());
cierremensual.setMes(DateUtil.getNombreMes(DateUtil.getMesActual()));
cierremensual.setDescripcion("Cierre mensual");
cierremensualSelected = cierremensual;
writable = false;
//totalFacturas = facturaRepository.count(new Document("almacen.idalmacen",loginController.getAlmacen().getIdalmacen()).append("estatusfactura.idfactura",1));
Bson filter = Filters.and(Filters.eq("almacen.idalmacen", loginController.getAlmacen().getIdalmacen()), Filters.ne("estatusfactura.idestatusfactura", 5));
totalFacturas = facturaRepository.count(filter);
if (porcentajemorosidadRepository.count(new Document("activo", "si")) == 0) {
JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.nohayregistroporcentejamorosidad"));
} else {
writable = true;
}
Optional<Porcentajemorosidad> optional0 = porcentajemorosidadRepository.find(eq("activo","si"));
if (optional0.isPresent()) {
porcentajemorosidad = optional0.get();
}
break;
case "view":
if (id != null) {
Optional<Cierremensual> optional = cierremensualRepository.find("idcierremensual", Integer.parseInt(id));
if (optional.isPresent()) {
cierremensual = optional.get();
cierremensualSelected = optional.get();
_old = cierremensual.getDescripcion();
writable = true;
}
}
break;
case "golist":
move();
break;
}
} else {
move();
}
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
}// </editor-fold>
save()
validar que este en un rango valido
Convertir el nombre de mes a numero
@Override
public String save() {
try {
if (!DateUtil.isValidCierreMensual(cierremensual.getAnio(), cierremensual.getMes(), 25, rf.getArb())) {
return "";
}
Integer numeromesseleccionado = DateUtil.numeroMesStartEneroWith1(cierremensual.getMes());
Date firstDate = DateUtil.primerDiaDelMesEnFecha(cierremensual.getAnio(), numeromesseleccionado);
Date lastDate = DateUtil.getDateLastOfMonth(cierremensual.getAnio(), numeromesseleccionado);
System.out.println("----> firstDate " + firstDate + " lastDate " + lastDate);
List<Factura> listFactura = cierremensualServices.facturasConPagarePendiente(cierremensual.getAnio(), DateUtil.numeroMesStartEneroWith1(cierremensual.getMes()));
if (listFactura == null || listFactura.isEmpty()) {
} else {
}
}
Last updated