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