Dépôt officiel du code source de l'ERP OpenConcerto
Blame | Last modification | View Log | RSS feed
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2011 OpenConcerto, by ILM Informatique. All rights reserved.
*
* The contents of this file are subject to the terms of the GNU General Public License Version 3
* only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
* copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each file.
*/
package org.openconcerto.erp.core.finance.accounting.element;
import org.openconcerto.erp.core.common.ui.DeviseField;
import org.openconcerto.erp.core.finance.tax.model.TaxeCache;
import org.openconcerto.sql.element.BaseSQLComponent;
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement;
import org.openconcerto.sql.element.SQLComponent;
import org.openconcerto.sql.sqlobject.SQLRequestComboBox;
import org.openconcerto.ui.DefaultGridBagConstraints;
import org.openconcerto.utils.GestionDevise;
import org.openconcerto.utils.ListMap;
import org.openconcerto.utils.text.SimpleDocumentListener;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import com.ibm.icu.math.BigDecimal;
public class FraisDocumentSQLElement extends ComptaSQLConfElement {
public FraisDocumentSQLElement() {
super("FRAIS_DOCUMENT");
}
protected List<String> getListFields() {
final List<String> list = new ArrayList<String>(2);
list.add("CODE");
list.add("NOM");
list.add("MONTANT_HT");
list.add("ID_TAXE");
list.add("MONTANT_TTC");
return list;
}
protected List<String> getComboFields() {
final List<String> list = new ArrayList<String>(2);
list.add("CODE");
list.add("NOM");
list.add("MONTANT_TTC");
return list;
}
@Override
public Set<String> getReadOnlyFields() {
Set<String> s = new HashSet<>();
s.add("MONTANT_TTC");
return s;
}
@Override
public ListMap<String, String> getShowAs() {
return ListMap.singleton(null, "CODE", "NOM");
}
public SQLComponent createComponent() {
return new BaseSQLComponent(this) {
public void addViews() {
this.setLayout(new GridBagLayout());
final GridBagConstraints c = new DefaultGridBagConstraints();
// Code
final JLabel labelCode = new JLabel(getLabelFor("CODE"));
c.weightx = 0;
this.add(labelCode, c);
c.gridx++;
c.weightx = 1;
final JTextField textCode = new JTextField();
this.add(textCode, c);
// Nom
c.gridx++;
c.weightx = 0;
final JLabel labelNom = new JLabel(getLabelFor("NOM"));
this.add(labelNom, c);
c.gridx++;
c.weightx = 1;
final JTextField textNom = new JTextField();
this.add(textNom, c);
// Montant
c.gridy++;
c.gridx = 0;
c.weightx = 0;
final JLabel labelTaux = new JLabel(getLabelFor("MONTANT_HT"));
this.add(labelTaux, c);
c.gridx++;
c.weightx = 1;
final DeviseField textTaux = new DeviseField();
this.add(textTaux, c);
c.gridx++;
c.weightx = 0;
final JLabel labelTaxe = new JLabel(getLabelFor("ID_TAXE"));
this.add(labelTaxe, c);
c.gridx++;
c.weightx = 1;
final SQLRequestComboBox boxTaxe = new SQLRequestComboBox();
this.add(boxTaxe, c);
c.gridx++;
c.weightx = 0;
final JLabel labelTTC = new JLabel(getLabelFor("MONTANT_TTC"));
this.add(labelTTC, c);
c.gridx++;
c.weightx = 1;
final DeviseField textTTC = new DeviseField();
textTTC.setEditable(false);
this.add(textTTC, c);
this.addRequiredSQLObject(boxTaxe, "ID_TAXE");
boxTaxe.addModelListener("wantedID", new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
textTTC.setValue(getMontantTTC(textTaux, boxTaxe));
}
});
textTaux.getDocument().addDocumentListener(new SimpleDocumentListener() {
@Override
public void update(DocumentEvent e) {
textTTC.setValue(getMontantTTC(textTaux, boxTaxe));
}
});
this.addRequiredSQLObject(textTTC, "MONTANT_TTC");
this.addRequiredSQLObject(textTaux, "MONTANT_HT");
this.addRequiredSQLObject(textNom, "NOM");
this.addRequiredSQLObject(textCode, "CODE");
}
public long getMontantTTC(DeviseField fieldHT, SQLRequestComboBox boxTVA) {
long l = 0;
long p = GestionDevise.parseLongCurrency(fieldHT.getText().trim());
if (!boxTVA.isEmpty()) {
Float t = TaxeCache.getCache().getTauxFromId(boxTVA.getWantedID());
if (t != null) {
l = new BigDecimal(p).multiply(new BigDecimal(t).movePointLeft(2).add(BigDecimal.ONE)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue();
}
}
return l;
}
};
}
}