OpenConcerto

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

svn://code.openconcerto.org/openconcerto

Compare Revisions

Ignore whitespace Rev 169 → Rev 170

/trunk/Modules/Module Project/src/org/openconcerto/modules/project/translation_fr.xml
1,3 → 1,3
<translation lang="fr">
<action id="project.accept" label="Marquer comme accepté" />
<action id="project.accept" label="Marquer comme accepté et transfert en commande client" />
</translation>
/trunk/Modules/Module Project/src/org/openconcerto/modules/project/element/ProjectSQLElement.java
8,6 → 8,7
 
import javax.swing.SwingUtilities;
 
import org.openconcerto.erp.config.ComptaPropsConfiguration;
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement;
import org.openconcerto.erp.core.common.element.NumerotationAutoSQLElement;
import org.openconcerto.sql.Configuration;
16,7 → 17,10
import org.openconcerto.sql.model.SQLRow;
import org.openconcerto.sql.model.SQLRowAccessor;
import org.openconcerto.sql.model.SQLRowValues;
import org.openconcerto.sql.model.SQLSelect;
import org.openconcerto.sql.model.SQLTable;
import org.openconcerto.sql.model.Where;
import org.openconcerto.sql.request.ComboSQLRequest;
import org.openconcerto.sql.sqlobject.ElementComboBox;
import org.openconcerto.sql.sqlobject.JUniqueTextField;
import org.openconcerto.sql.view.EditFrame;
24,6 → 28,7
import org.openconcerto.ui.component.ITextArea;
import org.openconcerto.utils.ExceptionHandler;
import org.openconcerto.utils.ListMap;
import org.openconcerto.utils.cc.ITransformer;
 
public class ProjectSQLElement extends ComptaSQLConfElement {
 
35,6 → 40,9
protected List<String> getListFields() {
final List<String> l = new ArrayList<String>();
l.add("ID_CLIENT");
if (getTable().contains("ID_SOCIETE_COMMON")) {
l.add("ID_SOCIETE_COMMON");
}
l.add("ID_TYPE_AFFAIRE");
l.add("NUMERO");
l.add("ID_ETAT_AFFAIRE");
43,6 → 51,25
return l;
}
 
protected void _initComboRequest(ComboSQLRequest req) {
super._initComboRequest(req);
if (getTable().contains("ID_SOCIETE_COMMON")) {
final ComptaPropsConfiguration comptaPropsConfiguration = ((ComptaPropsConfiguration) Configuration.getInstance());
final int socID = comptaPropsConfiguration.getSocieteID();
req.setSelectTransf(new ITransformer<SQLSelect, SQLSelect>() {
 
@Override
public SQLSelect transformChecked(SQLSelect input) {
Where w = new Where(getTable().getField("ID_SOCIETE_COMMON"), "=", (Object) null).or(new Where(getTable().getField("ID_SOCIETE_COMMON"), "=", 1))
.or(new Where(getTable().getField("ID_SOCIETE_COMMON"), "=", socID));
 
input.andWhere(w);
return input;
}
});
}
}
 
@Override
protected List<String> getComboFields() {
final List<String> l = new ArrayList<String>();
77,7 → 104,9
this.addView("ID_CLIENT", "1;" + REQ);
this.addView("ID_COMMERCIAL", "1");
this.addView("ID_DEVIS", "1");
 
if (getTable().contains("ID_SOCIETE_COMMON")) {
this.addView("ID_SOCIETE_COMMON", "1");
}
this.addView("ID_TYPE_AFFAIRE", "1;left");
final ElementComboBox boxEtatAffaire = new ElementComboBox();
this.addView(boxEtatAffaire, "ID_ETAT_AFFAIRE", "1;left;" + REQ);
/trunk/Modules/Module Project/src/org/openconcerto/modules/project/element/ProjectStateSQLElement.java
1,6 → 1,6
package org.openconcerto.modules.project.element;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
 
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement;
9,11 → 9,11
import org.openconcerto.utils.ListMap;
 
public class ProjectStateSQLElement extends ComptaSQLConfElement {
public static int A_TRAITER = 2;
public static int EN_COURS = 3;
public static int TRAITEMENT_TERMINE = 4;
public static int A_FACTURER = 5;
public static int DOSSIER_CLOS = 6;
public static final int A_TRAITER = 2;
public static final int EN_COURS = 3;
public static final int TRAITEMENT_TERMINE = 4;
public static final int A_FACTURER = 5;
public static final int DOSSIER_CLOS = 6;
 
public ProjectStateSQLElement() {
super("ETAT_AFFAIRE", "un état affaire", "états affaires");
21,16 → 21,12
 
@Override
protected List<String> getListFields() {
final List<String> l = new ArrayList<String>();
l.add("NOM");
return l;
return Arrays.asList("NOM");
}
 
@Override
protected List<String> getComboFields() {
final List<String> l = new ArrayList<String>();
l.add("NOM");
return l;
return Arrays.asList("NOM");
}
 
@Override
50,6 → 46,6
 
@Override
protected String createCode() {
return createCodeFromPackage() + ".state";
return "project.state";
}
}
/trunk/Modules/Module Project/src/org/openconcerto/modules/project/element/ProjectTypeSQLElement.java
1,6 → 1,6
package org.openconcerto.modules.project.element;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
 
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement;
16,16 → 16,12
 
@Override
protected List<String> getListFields() {
final List<String> l = new ArrayList<String>();
l.add("NOM");
return l;
return Arrays.asList("NOM");
}
 
@Override
protected List<String> getComboFields() {
final List<String> l = new ArrayList<String>();
l.add("NOM");
return l;
return Arrays.asList("NOM");
}
 
@Override
45,6 → 41,6
 
@Override
protected String createCode() {
return createCodeFromPackage() + ".kind";
return "project.type";
}
}
/trunk/Modules/Module Project/src/org/openconcerto/modules/project/panel/HistoriqueAffaireBilanPanel.java
New file
0,0 → 1,288
package org.openconcerto.modules.project.panel;
 
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Collection;
 
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
 
import org.openconcerto.erp.modules.ModuleFactory;
import org.openconcerto.sql.model.SQLRowAccessor;
import org.openconcerto.sql.model.SQLRowValues;
import org.openconcerto.sql.view.list.IListe;
import org.openconcerto.sql.view.list.ITableModel;
import org.openconcerto.ui.DefaultGridBagConstraints;
import org.openconcerto.utils.GestionDevise;
 
public class HistoriqueAffaireBilanPanel extends JPanel {
 
private DecimalFormat decimalFormat = new DecimalFormat("0.00");
 
private double pourcentCommande = 0;
private final JLabel labelPourcentCommande = new JLabel("", SwingConstants.RIGHT);
 
private long montantCommandeClient = 0;
private final JLabel labelCommandeClient = new JLabel("", SwingConstants.RIGHT);
 
private long montantBudget = 0;
private final JLabel labelBudget = new JLabel("", SwingConstants.RIGHT);
 
private long montantCommande = 0;
private final JLabel labelCommande = new JLabel("", SwingConstants.RIGHT);
 
private long montantCommandeP = 0;
private final JLabel labelCommandeP = new JLabel("", SwingConstants.RIGHT);
 
private long montantFacturer = 0;
private final JLabel labelFacturer = new JLabel("", SwingConstants.RIGHT);
 
private long montantRegler = 0;
private final JLabel labelMontantRegler = new JLabel("", SwingConstants.RIGHT);
 
private long montantRemise = 0;
 
private long montantRestantFacturer = 0;
private final JLabel labelRestantFacturer = new JLabel("", SwingConstants.RIGHT);
 
private final JLabel labelAvoir = new JLabel("");
private String motifAvoir = "";
 
private long montantAchat = 0;
private final JLabel labelAchat = new JLabel("", SwingConstants.RIGHT);
 
private final JLabel labelPercentBilan = new JLabel("", SwingConstants.RIGHT);
 
private final JLabel labelPercentMargeHT = new JLabel("", SwingConstants.RIGHT);
 
private final JLabel labelPercentMBBilan = new JLabel("", SwingConstants.RIGHT);
 
private final JLabel labelPercentMBAchat = new JLabel("", SwingConstants.RIGHT);
 
private static ModuleFactory factory;
 
public HistoriqueAffaireBilanPanel() {
super();
 
setLayout(new GridBagLayout());
GridBagConstraints c = new DefaultGridBagConstraints();
c.insets = new Insets(2, 2, 2, 75);
c.gridx = GridBagConstraints.RELATIVE;
 
c.gridwidth = GridBagConstraints.REMAINDER;
add(this.labelAvoir, c);
 
c.gridy++;
c.gridwidth = 1;
add(this.labelCommandeClient, c);
// add(this.labelCommandeP, c);
add(this.labelPercentMargeHT, c);
add(this.labelFacturer, c);
 
c.gridy++;
// add(this.labelPourcentCommande, c);
add(this.labelBudget, c);
add(this.labelCommande, c);
add(this.labelPercentMBBilan, c);
// add(this.labelMontantRegler, c);
 
c.gridy++;
// add(this.labelPercentBilan, c);
// add(this.labelPourcentCommande, c);
// add(this.labelAchat, c);
// add(this.labelPercentMBAchat, c);
// add(this.labelRestantFacturer, c);
 
// add(this.labelDemande);
//
// add(this.labelDemandeM);
//
// add(this.labelDemandeT);
//
// add(this.labelCommande);
//
// add(this.labelCommandeMonteur);
//
// add(this.labelCommandeTransporteur);
}
 
public synchronized void updateBilanPreBilan(final IListe listeCmdF) {
// if (rowAffaire == null || rowAffaire.isUndefined()) {
// this.montantCommande = 0;
// this.montantCommandeP = 0;
// return;
// }
long montant = 0;
 
if (listeCmdF != null) {
// Commande F
for (int i = 0; i < listeCmdF.getRowCount(); i++) {
final SQLRowValues rowAt = ITableModel.getLine(listeCmdF.getModel(), i).getRow();
 
montant += rowAt.getLong("T_HT");
}
}
 
this.montantCommande = montant;
 
updateLabels();
}
 
public synchronized void updateFacturer(final IListe liste, final IListe listeAvoir) {
// List<SQLRowAccessor> rows =
// liste.getSource().getLine(viewIndex)SelectedRows()Model().get;
if (liste == null || listeAvoir == null) {
return;
}
 
String motif = "";
long montant = 0;
BigDecimal montantRegler = BigDecimal.ZERO;
long montantRemise = 0;
for (int i = 0; i < liste.getRowCount(); i++) {
final SQLRowValues rowAt = ITableModel.getLine(liste.getModel(), i).getRow();
long ht = rowAt.getLong("T_HT");
long ttc = rowAt.getLong("T_TTC");
montant += ht;
 
// BigDecimal regler = new
// BigDecimal(calc.getReglement(rowAt.getForeign("ID_MOUVEMENT").getInt("ID_PIECE"),
// null));
// if (ht != ttc) {
// if (rowAt.getDate("DATE").getTime().compareTo(date2014) <= 0) {
// regler = regler.divide(new BigDecimal(1.196D), MathContext.DECIMAL128);
// } else {
// regler = regler.divide(new BigDecimal(1.2D), MathContext.DECIMAL128);
// }
// // regler = regler.divide(new BigDecimal(1.2D), MathContext.DECIMAL128);
// }
// montantRegler = montantRegler.add(regler);
 
}
 
// EncoursCalculator calc = new EncoursCalculator();
for (int i = 0; i < listeAvoir.getRowCount(); i++) {
final SQLRowValues rowAt = ITableModel.getLine(listeAvoir.getModel(), i).getRow();
if (rowAt.getBoolean("A_DEDUIRE")) {
montant -= rowAt.getLong("MONTANT_HT");
// montantRegler -= rowAt.getLong("MONTANT_TTC");
}
// else {
// long long1 = calc.getMontantAvoir(rowAt);
// montant -= long1;
// montantRemise += long1;
// motif += rowAt.getString("MOTIF") + "(-" + GestionDevise.currencyToString(long1,
// true) + " €)";
// }
}
this.motifAvoir = motif;
this.montantFacturer = montant;
this.montantRemise = montantRemise;
this.montantRegler = montantRegler.setScale(0, RoundingMode.HALF_UP).longValue();
updateLabels();
}
 
public synchronized void updateAchat(final IListe listeAchat, final IListe listeAchatAvoir) {
if (listeAchat == null) {
return;
}
final ITableModel model = listeAchat.getModel();
final ITableModel modelAvoir = listeAchatAvoir.getModel();
final Runnable r = new Runnable() {
@Override
public void run() {
// TODO Raccord de méthode auto-généré
long m = 0;
for (int i = 0; i < model.getRowCount(); i++) {
final SQLRowValues rowAt = model.getRow(i).getRow();
m += rowAt.getLong("MONTANT_HT");
}
 
for (int i = 0; i < modelAvoir.getRowCount(); i++) {
final SQLRowValues rowAt = modelAvoir.getRow(i).getRow();
m -= rowAt.getLong("MONTANT_HT");
}
montantAchat = m;
 
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
updateLabels();
}
});
}
};
model.invokeLater(r);
modelAvoir.invokeLater(r);
 
}
 
public synchronized void updateCommandeClient(SQLRowAccessor rowAff) {
if (rowAff != null) {
Collection<? extends SQLRowAccessor> rowCmd = rowAff.getReferentRows(rowAff.getTable().getTable("COMMANDE_CLIENT"));
long cmd = 0;
long b = 0;
for (SQLRowAccessor r : rowCmd) {
cmd += r.getLong("T_HT");
Collection<? extends SQLRowAccessor> ref = r.getReferentRows(rowAff.getTable().getTable("CHIFFRAGE_COMMANDE_CLIENT"));
for (SQLRowAccessor sqlRowAccessor : ref) {
b += sqlRowAccessor.getBigDecimal("T_PA_HT").setScale(0, RoundingMode.HALF_UP).longValue();
}
}
 
this.montantBudget = b;
this.montantCommandeClient = cmd;
updateLabels();
}
}
 
public synchronized void updateDevis(SQLRowAccessor rowAff) {
if (rowAff != null) {
Collection<? extends SQLRowAccessor> rowCmd = rowAff.getReferentRows(rowAff.getTable().getTable("DEVIS"));
long cmd = 0;
for (SQLRowAccessor r : rowCmd) {
cmd += r.getLong("T_HA");
}
// this.montantBudget = cmd;
updateLabels();
}
}
 
private void updateLabels() {
long mbP = this.montantCommandeClient - this.montantCommandeP;
final long mbB = this.montantCommandeClient - this.montantCommande;
long mbA = this.montantFacturer - this.montantAchat;
 
final double percentMBPreBilan = Math.round((this.montantCommandeClient == 0 ? 0 : (double) mbP / (double) this.montantCommandeClient) * 10000.0D) / 100.0D;
final double percentMBBilan = Math.round((this.montantCommandeClient == 0 ? 0 : (double) mbB / (double) this.montantCommandeClient) * 10000.0D) / 100.0D;
final double percentMBAchat = Math.round((this.montantFacturer == 0 || this.montantAchat == 0 ? 0 : (double) mbA / (double) this.montantFacturer) * 10000.0D) / 100.0D;
 
SwingUtilities.invokeLater(new Runnable() {
public void run() {
HistoriqueAffaireBilanPanel.this.labelAvoir.setText(motifAvoir);
HistoriqueAffaireBilanPanel.this.labelPourcentCommande.setText(decimalFormat.format(pourcentCommande) + "% des commandes livrées");
 
// HistoriqueAffaireBilanPanel.this.labelPercentMBPreBilan.setText(decimalFormat.format(percentMBPreBilan)
// + "% MB Prébilan");
HistoriqueAffaireBilanPanel.this.labelPercentMBBilan.setText(decimalFormat.format(percentMBBilan) + "% MB sur commande");
HistoriqueAffaireBilanPanel.this.labelPercentMBAchat.setText(decimalFormat.format(percentMBAchat) + "% MB Achats");
HistoriqueAffaireBilanPanel.this.labelCommandeClient.setText("Montant du marché : " + GestionDevise.currencyToString(montantCommandeClient) + "€");
HistoriqueAffaireBilanPanel.this.labelFacturer.setText("Montant facturé : " + GestionDevise.currencyToString(montantFacturer) + "€");
HistoriqueAffaireBilanPanel.this.labelAchat.setText("Total Achats : " + GestionDevise.currencyToString(montantAchat) + "€");
HistoriqueAffaireBilanPanel.this.labelCommandeP.setText("Total PréBilan : " + GestionDevise.currencyToString(montantCommandeP) + "€");
HistoriqueAffaireBilanPanel.this.labelCommande.setText("Total Commandes F. : " + GestionDevise.currencyToString(montantCommande) + "€");
HistoriqueAffaireBilanPanel.this.labelBudget.setText("Budget chiffré à : " + GestionDevise.currencyToString(montantBudget) + "€");
HistoriqueAffaireBilanPanel.this.labelMontantRegler.setText("Règlements effectués : " + GestionDevise.currencyToString(montantRegler) + "€");
HistoriqueAffaireBilanPanel.this.labelRestantFacturer.setText("Reste à facturer : " + GestionDevise.currencyToString(montantCommandeClient - montantFacturer - montantRemise) + "€");
HistoriqueAffaireBilanPanel.this.labelPercentMargeHT.setText("Marge HT : " + GestionDevise.currencyToString(mbB) + "€");
}
});
 
}
}
/trunk/Modules/Module Project/src/org/openconcerto/modules/project/Module.java
375,11 → 375,16
 
@Override
protected Object show_(SQLRowAccessor r) {
Collection<? extends SQLRowAccessor> rows = r.getReferentRows(elt.getTable().getTable("AFFAIRE"));
if (rows.size() == 1) {
return rows.iterator().next().getString("NUMERO");
final SQLRowAccessor foreignAff = r.getForeign("ID_AFFAIRE");
if (foreignAff != null && !foreignAff.isUndefined()) {
return foreignAff.getString("NUMERO");
} else {
return "";
Collection<? extends SQLRowAccessor> rows = r.getReferentRows(elt.getTable().getTable("AFFAIRE"));
if (rows.size() == 1) {
return rows.iterator().next().getString("NUMERO");
} else {
return "";
}
}
}
 
386,8 → 391,9
@Override
public Set<FieldPath> getPaths() {
SQLTable table = elt.getTable();
Path p = new Path(table).add(table.getTable("AFFAIRE"), Direction.REFERENT);
return CollectionUtils.createSet(new FieldPath(p, "NUMERO"));
Path pDev = new Path(table).add(table.getField("ID_AFFAIRE"));
Path pAff = new Path(table).add(table.getTable("AFFAIRE"), Direction.REFERENT);
return CollectionUtils.createSet(new FieldPath(pDev, "NUMERO"), new FieldPath(pAff, "NUMERO"));
}
});
new CmdToBrSQLInjector();
499,9 → 505,12
 
try {
rowValsDevis.commit();
row.fetchValues();
if (createCommandeClient) {
Configuration.getInstance().getDirectory().getElement(DevisSQLElement.class).transfertCommandeClient(Arrays.asList(row.asRowValues()));
}
} catch (SQLException exn) {
// TODO Bloc catch auto-généré
exn.printStackTrace();
ExceptionHandler.handle("Erreur lors de la création de la commande client!", exn);
}
}
});
673,61 → 682,61
importExport.importProjects();
}
}, MainFrame.HELP_MENU);
if (false) {
ctxt.addMenuItem(new AbstractAction("Fix ID_AFFAIRE") {
@Override
public void actionPerformed(ActionEvent e) {
{
SQLTable tableCmd = ctxt.getElement("COMMANDE_CLIENT").getTable();
SQLSelect selBadCmd = new SQLSelect();
selBadCmd.addSelect(tableCmd.getKey());
selBadCmd.addSelect(tableCmd.getField("ID_AFFAIRE"));
SQLSelectJoin joinTR = selBadCmd.addBackwardJoin("RIGHT", "tr", tableCmd.getTable().getTable("TR_DEVIS").getField("ID_COMMANDE_CLIENT"), null);
SQLSelectJoin joinDevis = selBadCmd.addJoin("LEFT", joinTR.getJoinedTable().getField("ID_DEVIS"));
SQLSelectJoin joinAff = selBadCmd.addBackwardJoin("LEFT", "aff", tableCmd.getTable().getTable("AFFAIRE").getField("ID_DEVIS"), null);
selBadCmd.addSelect(joinAff.getJoinedTable().getKey());
 
ctxt.addMenuItem(new AbstractAction("Fix ID_AFFAIRE") {
@Override
public void actionPerformed(ActionEvent e) {
{
SQLTable tableCmd = ctxt.getElement("COMMANDE_CLIENT").getTable();
SQLSelect selBadCmd = new SQLSelect();
selBadCmd.addSelect(tableCmd.getKey());
selBadCmd.addSelect(tableCmd.getField("ID_AFFAIRE"));
SQLSelectJoin joinTR = selBadCmd.addBackwardJoin("RIGHT", "tr", tableCmd.getTable().getTable("TR_DEVIS").getField("ID_COMMANDE_CLIENT"), null);
SQLSelectJoin joinDevis = selBadCmd.addJoin("LEFT", joinTR.getJoinedTable().getField("ID_DEVIS"));
SQLSelectJoin joinAff = selBadCmd.addBackwardJoin("LEFT", "aff", tableCmd.getTable().getTable("AFFAIRE").getField("ID_DEVIS"), null);
selBadCmd.addSelect(joinAff.getJoinedTable().getKey());
selBadCmd.setWhere(Where.isNull(tableCmd.getField("ID_AFFAIRE")));
System.err.println(selBadCmd.asString());
 
selBadCmd.setWhere(Where.isNull(tableCmd.getField("ID_AFFAIRE")));
System.err.println(selBadCmd.asString());
List<Object[]> result = (List<Object[]>) tableCmd.getDBSystemRoot().getDataSource().executeA(selBadCmd.asString());
try {
for (Object[] objects : result) {
if (objects[2] != null && objects[2].toString().trim().length() > 0)
tableCmd.getRow(((Number) objects[0]).intValue()).createEmptyUpdateRow().put("ID_AFFAIRE", ((Number) objects[2]).intValue()).commit();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
 
List<Object[]> result = (List<Object[]>) tableCmd.getDBSystemRoot().getDataSource().executeA(selBadCmd.asString());
try {
for (Object[] objects : result) {
if (objects[2] != null && objects[2].toString().trim().length() > 0)
tableCmd.getRow(((Number) objects[0]).intValue()).createEmptyUpdateRow().put("ID_AFFAIRE", ((Number) objects[2]).intValue()).commit();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
// List<SQLRow> list = SQLRowListRSH.execute(selBadVF);
}
{
SQLTable tableVF = ctxt.getElement("SAISIE_VENTE_FACTURE").getTable();
SQLSelect selBadVF = new SQLSelect();
selBadVF.addSelect(tableVF.getKey());
selBadVF.addSelect(tableVF.getField("ID_AFFAIRE"));
SQLSelectJoin joinTR = selBadVF.addBackwardJoin("RIGHT", "tr", tableVF.getTable().getTable("TR_COMMANDE_CLIENT").getField("ID_SAISIE_VENTE_FACTURE"), null);
SQLSelectJoin joinCmd = selBadVF.addJoin("LEFT", joinTR.getJoinedTable().getField("ID_COMMANDE_CLIENT"));
selBadVF.addSelect(joinCmd.getJoinedTable().getField("ID_AFFAIRE"));
 
// List<SQLRow> list = SQLRowListRSH.execute(selBadVF);
}
{
SQLTable tableVF = ctxt.getElement("SAISIE_VENTE_FACTURE").getTable();
SQLSelect selBadVF = new SQLSelect();
selBadVF.addSelect(tableVF.getKey());
selBadVF.addSelect(tableVF.getField("ID_AFFAIRE"));
SQLSelectJoin joinTR = selBadVF.addBackwardJoin("RIGHT", "tr", tableVF.getTable().getTable("TR_COMMANDE_CLIENT").getField("ID_SAISIE_VENTE_FACTURE"), null);
SQLSelectJoin joinCmd = selBadVF.addJoin("LEFT", joinTR.getJoinedTable().getField("ID_COMMANDE_CLIENT"));
selBadVF.addSelect(joinCmd.getJoinedTable().getField("ID_AFFAIRE"));
 
selBadVF.setWhere(Where.isNull(tableVF.getField("ID_AFFAIRE")));
System.err.println(selBadVF.asString());
List<Object[]> result = (List<Object[]>) tableVF.getDBSystemRoot().getDataSource().executeA(selBadVF.asString());
try {
for (Object[] objects : result) {
if (objects[2] != null && objects[2].toString().trim().length() > 0)
tableVF.getRow(((Number) objects[0]).intValue()).createEmptyUpdateRow().put("ID_AFFAIRE", ((Number) objects[2]).intValue()).commit();
selBadVF.setWhere(Where.isNull(tableVF.getField("ID_AFFAIRE")));
System.err.println(selBadVF.asString());
List<Object[]> result = (List<Object[]>) tableVF.getDBSystemRoot().getDataSource().executeA(selBadVF.asString());
try {
for (Object[] objects : result) {
if (objects[2] != null && objects[2].toString().trim().length() > 0)
tableVF.getRow(((Number) objects[0]).intValue()).createEmptyUpdateRow().put("ID_AFFAIRE", ((Number) objects[2]).intValue()).commit();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}, MainFrame.CREATE_MENU);
 
}, MainFrame.CREATE_MENU);
}
ctxt.addMenuItem(new AbstractAction("Recalcul Total achat facture prorata") {
@Override
public void actionPerformed(ActionEvent e) {
/trunk/Modules/Module Project/src/org/openconcerto/modules/project/ProjectHistory.java
3,17 → 3,10
*/
package org.openconcerto.modules.project;
 
import java.awt.Component;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
20,9 → 13,9
import java.util.List;
import java.util.Map;
 
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
 
29,17 → 22,22
import org.openconcerto.erp.config.ComptaPropsConfiguration;
import org.openconcerto.erp.config.Gestion;
import org.openconcerto.erp.core.reports.history.ui.ListeHistoriquePanel;
import org.openconcerto.erp.core.supplychain.order.action.ImportProductsToOrder;
import org.openconcerto.modules.project.panel.HistoriqueAffaireBilanPanel;
import org.openconcerto.sql.Configuration;
import org.openconcerto.sql.model.SQLBase;
import org.openconcerto.sql.model.SQLField;
import org.openconcerto.sql.model.SQLRowAccessor;
import org.openconcerto.sql.model.SQLSelect;
import org.openconcerto.sql.model.SQLTable;
import org.openconcerto.sql.model.SQLTableEvent;
import org.openconcerto.sql.model.SQLTableModifiedListener;
import org.openconcerto.sql.model.Where;
import org.openconcerto.sql.request.ComboSQLRequest;
import org.openconcerto.sql.view.IListPanel;
import org.openconcerto.sql.view.list.IListeAction.IListeEvent;
import org.openconcerto.sql.view.list.RowAction.PredicateRowAction;
import org.openconcerto.ui.DefaultGridBagConstraints;
import org.openconcerto.ui.PanelFrame;
import org.openconcerto.ui.SwingThreadUtils;
import org.openconcerto.ui.state.WindowStateManager;
import org.openconcerto.utils.cc.ITransformer;
 
public class ProjectHistory {
private PanelFrame panelFrame;
63,12 → 61,16
final Map<String, List<String>> mapList = new LinkedHashMap<String, List<String>>();
mapList.put("Devis", Arrays.asList("DEVIS"));
mapList.put("Bons de commande", Arrays.asList("COMMANDE_CLIENT"));
mapList.put("Chiffrage", Arrays.asList("CHIFFRAGE_COMMANDE_CLIENT"));
mapList.put("Factures", Arrays.asList("SAISIE_VENTE_FACTURE"));
mapList.put("Avoirs", Arrays.asList("AVOIR_CLIENT"));
mapList.put("Demandes d'achat", Arrays.asList("DEMANDE_ACHAT_ELEMENT"));
mapList.put("Demandes de prix", Arrays.asList("DEMANDE_PRIX"));
mapList.put("Commandes", Arrays.asList("COMMANDE"));
mapList.put("Bons de réception", Arrays.asList("BON_RECEPTION"));
mapList.put("Achats", Arrays.asList("SAISIE_ACHAT"));
// mapList.put("Factures fournisseurs", Arrays.asList("FACTURE_FOURNISSEUR"));
mapList.put("Avoirs fournisseurs", Arrays.asList("AVOIR_FOURNISSEUR"));
 
if (Configuration.getInstance().getRoot().findTable("AFFAIRE_TEMPS") != null) {
mapList.put("Temps", Arrays.asList("AFFAIRE_TEMPS"));
76,12 → 78,31
 
mapList.putAll(moduleTab);
 
final HistoriqueAffaireBilanPanel bilanPanel = new HistoriqueAffaireBilanPanel();
 
final ComboSQLRequest request = new org.openconcerto.sql.request.ComboSQLRequest(b.getTable("AFFAIRE"), Arrays.asList("NUMERO", "ID_CLIENT"));
if (b.getTable("AFFAIRE").contains("ID_SOCIETE_COMMON")) {
 
final int socID = comptaPropsConfiguration.getSocieteID();
request.setSelectTransf(new ITransformer<SQLSelect, SQLSelect>() {
@Override
public SQLSelect transformChecked(SQLSelect input) {
Where w = new Where(b.getTable("AFFAIRE").getField("ID_SOCIETE_COMMON"), "=", (Object) null).or(new Where(b.getTable("AFFAIRE").getField("ID_SOCIETE_COMMON"), "=", 1))
.or(new Where(b.getTable("AFFAIRE").getField("ID_SOCIETE_COMMON"), "=", socID));
 
input.andWhere(w);
return input;
}
});
}
request.setUndefLabel("Toutes les affaires");
request.setFieldSeparator(" ");
Map<String, String> splitter = new HashMap<String, String>();
splitter.put("DEMANDE_ACHAT_ELEMENT", "ID_FAMILLE_ARTICLE");
Map<SQLTable, SQLField> fieldLink = new HashMap<SQLTable, SQLField>();
fieldLink.put(b.getTable("CHIFFRAGE_COMMANDE_CLIENT"), b.getTable("CHIFFRAGE_COMMANDE_CLIENT").getField("ID_COMMANDE_CLIENT"));
this.listPanel = new ListeHistoriquePanel("Affaires", request, mapList, bilanPanel, fieldLink, "Toutes les affaires", true, null, null, splitter);
 
this.listPanel = new ListeHistoriquePanel("Affaires", request, mapList, null, null, "Toutes les affaires", true, null, null);
 
final IListPanel listeDevis = listPanel.getIListePanelFromTableName("DEVIS");
GridBagConstraints c = new DefaultGridBagConstraints();
c.gridy = 4;
97,43 → 118,6
}
});
 
final IListPanel listeDmdAchat = listPanel.getIListePanelFromTableName("DEMANDE_ACHAT_ELEMENT");
PredicateRowAction actionDrop = new PredicateRowAction(new AbstractAction("Importer depuis Fichier Inventor") {
 
@Override
public void actionPerformed(ActionEvent e) {
final Frame frame = SwingThreadUtils.getAncestorOrSelf(Frame.class, (Component) e.getSource());
final FileDialog fd = new FileDialog(frame, "Import fichier inventor", FileDialog.LOAD);
fd.setFilenameFilter(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".xls");
}
});
fd.setVisible(true);
if (fd.getFile() != null) {
 
ImportProductsToOrder importer = new ImportProductsToOrder();
 
int a = JOptionPane.showConfirmDialog(frame, "Etes vous sûr de vouloir importer ces éléments dans l'affaire N°" + listPanel.getSelectedRow().getString("NUMERO") + "?",
"Import invertor", JOptionPane.YES_NO_OPTION);
if (a == JOptionPane.YES_OPTION) {
importer.setRowAffaire(listPanel.getSelectedRow());
try {
importer.importFile(new File(fd.getDirectory(), fd.getFile()), b.getTable("DEMANDE_ACHAT_ELEMENT").getDBRoot());
listeDmdAchat.getListe().getModel().updateAll();
} catch (IOException e1) {
org.openconcerto.utils.ExceptionHandler.handle("Erreur lors de l'import du fichier!", e1);
} catch (SQLException e1) {
org.openconcerto.utils.ExceptionHandler.handle("Erreur lors de l'import du fichier!", e1);
}
}
}
}
}, true);
actionDrop.setPredicate(IListeEvent.createSelectionCountPredicate(0, Integer.MAX_VALUE));
listeDmdAchat.getListe().addIListeAction(actionDrop);
 
final IListPanel listeCmd = listPanel.getIListePanelFromTableName("COMMANDE_CLIENT");
final ProjectHistoryCmdBottomPanel cmdPanel = new ProjectHistoryCmdBottomPanel();
 
163,13 → 147,95
// History
this.panelFrame = new PanelFrame(this.listPanel, "Historique affaires");
this.panelFrame.addWindowListener(new WindowAdapter() {
 
public void windowClosing(WindowEvent e) {
listPanel.removeAllTableListener();
};
 
});
 
this.panelFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 
final SQLTableModifiedListener cmdClientListener = new SQLTableModifiedListener() {
 
@Override
public void tableModified(SQLTableEvent evt) {
if (bilanPanel != null) {
final SQLRowAccessor selectedRow = ProjectHistory.this.listPanel.getSelectedRow();
if (selectedRow != null) {
bilanPanel.updateCommandeClient(selectedRow.asRow());
}
}
}
};
final SQLTableModifiedListener devisListener = new SQLTableModifiedListener() {
 
@Override
public void tableModified(SQLTableEvent evt) {
if (bilanPanel != null) {
final SQLRowAccessor selectedRow = ProjectHistory.this.listPanel.getSelectedRow();
if (selectedRow != null) {
bilanPanel.updateDevis(selectedRow.asRow());
}
}
}
};
this.panelFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
listPanel.removeAllTableListener();
b.getTable("COMMANDE_CLIENT").removeTableModifiedListener(cmdClientListener);
b.getTable("DEVIS").removeTableModifiedListener(devisListener);
};
});
 
b.getTable("COMMANDE_CLIENT").addTableModifiedListener(cmdClientListener);
b.getTable("DEVIS").addTableModifiedListener(devisListener);
 
this.listPanel.addListSelectionListener(new ListSelectionListener() {
 
@Override
public void valueChanged(ListSelectionEvent arg0) {
 
final SQLRowAccessor selectedRow = ProjectHistory.this.listPanel.getSelectedRow();
if (selectedRow != null) {
bilanPanel.updateCommandeClient(selectedRow.asRow());
bilanPanel.updateDevis(selectedRow.asRow());
bilanPanel.updateBilanPreBilan(ProjectHistory.this.listPanel.getIListeFromTableName("COMMANDE"));
}
}
});
 
this.listPanel.addListenerTable(new TableModelListener() {
public void tableChanged(TableModelEvent arg0) {
final SQLRowAccessor selectedRow = ProjectHistory.this.listPanel.getSelectedRow();
if (selectedRow != null) {
bilanPanel.updateBilanPreBilan(ProjectHistory.this.listPanel.getIListeFromTableName("COMMANDE"));
}
}
}, "COMMANDE");
 
this.listPanel.addListenerTable(new TableModelListener() {
public void tableChanged(TableModelEvent arg0) {
bilanPanel.updateAchat(ProjectHistory.this.listPanel.getIListeFromTableName("SAISIE_ACHAT"), ProjectHistory.this.listPanel.getIListeFromTableName("AVOIR_FOURNISSEUR"));
}
}, "SAISIE_ACHAT");
this.listPanel.addListenerTable(new TableModelListener() {
public void tableChanged(TableModelEvent arg0) {
bilanPanel.updateAchat(ProjectHistory.this.listPanel.getIListeFromTableName("SAISIE_ACHAT"), ProjectHistory.this.listPanel.getIListeFromTableName("AVOIR_FOURNISSEUR"));
}
}, "AVOIR_FOURNISSEUR");
 
this.listPanel.addListenerTable(new TableModelListener() {
public void tableChanged(TableModelEvent arg0) {
bilanPanel.updateFacturer(ProjectHistory.this.listPanel.getIListeFromTableName("SAISIE_VENTE_FACTURE"), ProjectHistory.this.listPanel.getIListeFromTableName("AVOIR_CLIENT"));
}
}, "SAISIE_VENTE_FACTURE");
 
this.listPanel.addListenerTable(new TableModelListener() {
public void tableChanged(TableModelEvent arg0) {
bilanPanel.updateFacturer(ProjectHistory.this.listPanel.getIListeFromTableName("SAISIE_VENTE_FACTURE"), ProjectHistory.this.listPanel.getIListeFromTableName("AVOIR_CLIENT"));
}
}, "AVOIR_CLIENT");
}
 
public PanelFrame getFrame() {