fr.amapj.view.views.mespaiements.MesPaiementsView.java Source code

Java tutorial

Introduction

Here is the source code for fr.amapj.view.views.mespaiements.MesPaiementsView.java

Source

/*
 *  Copyright 2013-2018 Emmanuel BRUN (contact@amapj.fr)
 * 
 *  This file is part of AmapJ.
 *  
 *  AmapJ is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU Affero General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
    
 *  AmapJ is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Affero General Public License for more details.
 *
 *  You should have received a copy of the GNU Affero General Public License
 *  along with AmapJ.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * 
 */
package fr.amapj.view.views.mespaiements;

import java.text.SimpleDateFormat;
import java.util.List;

import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;

import fr.amapj.model.models.contrat.reel.EtatPaiement;
import fr.amapj.service.services.mespaiements.DetailPaiementAFournirDTO;
import fr.amapj.service.services.mespaiements.DetailPaiementFourniDTO;
import fr.amapj.service.services.mespaiements.MesPaiementsDTO;
import fr.amapj.service.services.mespaiements.MesPaiementsService;
import fr.amapj.service.services.mespaiements.PaiementAFournirDTO;
import fr.amapj.service.services.mespaiements.PaiementFourniDTO;
import fr.amapj.service.services.session.SessionManager;
import fr.amapj.view.engine.template.FrontOfficeView;
import fr.amapj.view.engine.widgets.CurrencyTextFieldConverter;

/**
 * Page permettant  l'utilisateur de visualiser tous ses paiements
 * 
 */
public class MesPaiementsView extends FrontOfficeView {

    static private String LABEL_TEXTEFOND = "textefond";

    static private String LABEL_CONTRAT = "contrat";
    static private String LABEL_CHEQUEAFOURNIR = "chequeafournir";

    static private String LABEL_MOIS = "mois";
    static private String LABEL_CHEQUE = "cheque";

    static private String PANEL_CONTRAT = "contrat";
    static private String PANEL_CHEQUEAFOURNIR = "chequeafournir";

    static private String PANEL_AVENIR = "avenir";
    static private String PANEL_MOIS = "mois";

    SimpleDateFormat df = new SimpleDateFormat("EEEEE dd MMMMM yyyy");

    public String getMainStyleName() {
        return "paiement";
    }

    /**
     * Ajoute un label sur toute la largeur  la ligne indique
     */
    private Label addLabel(String str) {
        Label tf = new Label(str);
        tf.addStyleName(LABEL_TEXTEFOND);
        addComponent(tf);
        return tf;

    }

    @Override
    public void enter() {
        MesPaiementsDTO mesPaiementsDTO = new MesPaiementsService().getMesPaiements(SessionManager.getUserId());

        // Le titre
        addLabel("Les chques que je dois donner  l'AMAP");

        Panel p0 = new Panel();
        p0.setWidth("100%");
        p0.addStyleName(PANEL_CHEQUEAFOURNIR);

        VerticalLayout vl1 = new VerticalLayout();
        vl1.setMargin(true);
        p0.setContent(vl1);
        addComponent(p0);

        // la liste des chques  donner
        List<PaiementAFournirDTO> paiementAFournirs = mesPaiementsDTO.paiementAFournir;

        if (paiementAFournirs.size() == 0) {
            String str = "Vous tes  jour de vos paiements, vous n'avez pas de chques  fournir  l'AMAP <br/>";
            Label l = new Label(str, ContentMode.HTML);
            l.addStyleName(LABEL_CHEQUEAFOURNIR);
            vl1.addComponent(l);
        }

        for (PaiementAFournirDTO paiementAFournir : paiementAFournirs) {
            String str = formatContrat(paiementAFournir);
            Label l = new Label(str, ContentMode.HTML);
            l.addStyleName(LABEL_CONTRAT);

            Panel p1 = new Panel();
            p1.setContent(l);
            p1.addStyleName(PANEL_CONTRAT);
            vl1.addComponent(p1);

            for (DetailPaiementAFournirDTO detail : paiementAFournir.paiements) {
                str = detail.formatPaiement();
                Label ld = new Label(str, ContentMode.HTML);
                ld.addStyleName(LABEL_CHEQUEAFOURNIR);
                vl1.addComponent(ld);

            }

            // Une ligne vide
            vl1.addComponent(new Label("<br/>", ContentMode.HTML));
        }

        // Le titre
        addLabel("Le planning de mes paiements  venir mois par mois");

        Panel p = new Panel();
        p.setWidth("100%");
        p.addStyleName(PANEL_AVENIR);

        VerticalLayout vl = new VerticalLayout();
        vl.setMargin(true);
        p.setContent(vl);
        addComponent(p);

        // la liste des chques qui seront bientot encaisss      
        for (PaiementFourniDTO paiementFourni : mesPaiementsDTO.paiementFourni) {
            String str = formatMois(paiementFourni);
            Label l = new Label(str, ContentMode.HTML);
            l.addStyleName(LABEL_MOIS);

            Panel p1 = new Panel();
            p1.setContent(l);
            p1.addStyleName(PANEL_MOIS);
            vl.addComponent(p1);

            for (DetailPaiementFourniDTO detail : paiementFourni.paiements) {
                str = formatPaiement(detail);
                Label cheque = new Label(str, ContentMode.HTML);
                cheque.addStyleName(LABEL_CHEQUE);
                vl.addComponent(cheque);
            }

            // Une ligne vide
            vl.addComponent(new Label("<br/>", ContentMode.HTML));
        }
    }

    private String formatContrat(PaiementAFournirDTO paiementAFournir) {
        // Ligne 0
        String str = "Nom du contrat : " + paiementAFournir.nomContrat + "<br/>"
                + " Date limite de remise des chques: " + df.format(paiementAFournir.dateRemise) + "<br/>"
                + " Ordre des chques : " + paiementAFournir.libCheque;

        return str;
    }

    private String formatMois(PaiementFourniDTO paiementFourni) {
        String montant = new CurrencyTextFieldConverter().convertToString(paiementFourni.totalMois) + " ";
        String str = paiementFourni.moisPaiement + " - Total du mois : " + montant;
        return str;
    }

    private String formatPaiement(DetailPaiementFourniDTO detail) {
        String montant = new CurrencyTextFieldConverter().convertToString(detail.montant) + " ";
        String str = "Montant : " + montant + " - Contrat :" + detail.nomContrat + " - Ordre du chque :"
                + detail.libCheque;

        if (detail.etatPaiement == EtatPaiement.A_FOURNIR) {
            str = str + " (Chque  fournir  l'AMAP)";
        }

        return str;
    }

}