OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 50 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
50 ilm 1
package org.openconcerto.modules.storage.docs.ovh;
2
 
3
import java.awt.event.ActionEvent;
4
import java.io.File;
5
import java.util.Calendar;
6
import java.util.List;
7
 
8
import javax.swing.AbstractAction;
9
import javax.swing.Action;
10
import javax.swing.JMenuItem;
11
import javax.swing.JOptionPane;
12
 
13
import org.openconcerto.erp.core.sales.invoice.element.SaisieVenteFactureSQLElement;
14
import org.openconcerto.erp.core.sales.invoice.report.VenteFactureXmlSheet;
15
import org.openconcerto.erp.core.sales.quote.element.DevisSQLElement;
16
import org.openconcerto.erp.core.sales.quote.report.DevisXmlSheet;
17
import org.openconcerto.sql.Configuration;
18
import org.openconcerto.sql.element.SQLElementDirectory;
19
import org.openconcerto.sql.model.SQLRow;
20
import org.openconcerto.sql.model.SQLRowAccessor;
127 ilm 21
import org.openconcerto.sql.model.SQLRowValues;
50 ilm 22
import org.openconcerto.sql.model.SQLTable;
23
import org.openconcerto.sql.view.list.IListeAction;
24
import org.openconcerto.utils.ExceptionHandler;
25
 
26
public class CloudNASListAction implements IListeAction {
27
 
28
    @Override
29
    public ButtonsBuilder getHeaderButtons() {
30
        return ButtonsBuilder.emptyInstance();
31
    }
32
 
33
    @Override
34
    public Action getDefaultAction(IListeEvent evt) {
35
        return null;
36
    }
37
 
38
    @Override
39
    public PopupBuilder getPopupContent(PopupEvent evt) {
40
        final PopupBuilder actions = new PopupBuilder(this.getClass().getPackage().getName());
127 ilm 41
        final List<SQLRowValues> rows = evt.getSelectedRows();
50 ilm 42
        final JMenuItem createCallAction = createAction("Envoyer sur Cloud NAS", rows);
43
        actions.addItem(createCallAction);
44
        return actions;
45
    }
46
 
127 ilm 47
    private JMenuItem createAction(final String label, final List<SQLRowValues> rows) {
50 ilm 48
        return new JMenuItem(new AbstractAction(label) {
49
            @Override
50
            public void actionPerformed(ActionEvent e) {
51
                try {
52
                    final Thread t = new Thread(new Runnable() {
53
                        @Override
54
                        final public void run() {
55
                            try {
56
                                CloudNASStorageEngine utils = new CloudNASStorageEngine();
57
                                utils.connect();
58
                                final SQLElementDirectory directory = Configuration.getInstance().getDirectory();
59
                                final SQLTable invoiceTable = directory.getElement(SaisieVenteFactureSQLElement.class).getTable();
60
                                final SQLTable quoteTable = directory.getElement(DevisSQLElement.class).getTable();
61
                                for (SQLRowAccessor sqlRowAccessor : rows) {
62
 
63
                                    if (sqlRowAccessor.getTable().equals(invoiceTable)) {
64
                                        final SQLRow row = sqlRowAccessor.asRow();
65
                                        Calendar c = row.getDate("DATE");
66
                                        final VenteFactureXmlSheet venteFactureXmlSheet = new VenteFactureXmlSheet(row);
67
                                        File pdf = venteFactureXmlSheet.getGeneratedPDFFile();
68
                                        if (!pdf.exists()) {
69
                                            venteFactureXmlSheet.getOrCreateDocumentFile();
70
                                            venteFactureXmlSheet.showPrintAndExport(false, false, true);
71
                                        }
72
                                        utils.store(pdf, "Factures/" + c.get(Calendar.YEAR), pdf.getName(), true);
73
                                    } else if (sqlRowAccessor.getTable().equals(quoteTable)) {
74
                                        final SQLRow row = sqlRowAccessor.asRow();
75
                                        Calendar c = row.getDate("DATE");
76
                                        final DevisXmlSheet devisXmlSheet = new DevisXmlSheet(row);
77
                                        File pdf = devisXmlSheet.getGeneratedPDFFile();
78
                                        if (!pdf.exists()) {
79
                                            devisXmlSheet.getOrCreateDocumentFile();
80
                                            devisXmlSheet.showPrintAndExport(false, false, true);
81
                                        }
82
                                        utils.store(pdf, "Devis/" + c.get(Calendar.YEAR), pdf.getName(), true);
83
                                    }
84
 
85
                                }
86
                                utils.disconnect();
87
                            } catch (Exception e) {
88
                                JOptionPane.showMessageDialog(null, e.getMessage());
89
                            }
90
 
91
                        }
92
                    });
93
                    t.start();
94
                } catch (Exception ex) {
95
                    ExceptionHandler.handle("Echec de l'envoi", ex);
96
                }
97
            }
98
        });
99
    }
100
}