Dépôt officiel du code source de l'ERP OpenConcerto
/trunk/OpenConcerto/src/product.properties |
---|
1,5 → 1,5 |
NAME=OpenConcerto |
VERSION=1.6.4b6 |
VERSION=1.6.3 |
ORGANIZATION_NAME=OpenConcerto |
ORGANIZATION_ID=org.openconcerto |
/trunk/OpenConcerto/src/org/openconcerto/erp/action/CreateEditFrameAbstractAction.java |
---|
13,8 → 13,7 |
package org.openconcerto.erp.action; |
import static org.openconcerto.erp.utils.TM.getERP_TM; |
import org.openconcerto.erp.utils.TM; |
import org.openconcerto.sql.PropsConfiguration; |
import org.openconcerto.sql.element.SQLElement; |
import org.openconcerto.sql.view.EditFrame; |
35,9 → 34,10 |
protected CreateEditFrameAbstractAction(final PropsConfiguration conf, final E elem) { |
super(elem); |
// TODO use conf to find TM |
final NounClass nounClass = this.getElem().getName().getNounClass(); |
final String[] translationKeys = nounClass == null ? TRANSLATION_KEY_ARRAY : new String[] { TRANSLATION_KEY + '.' + nounClass.getName(), TRANSLATION_KEY }; |
this.putValue(NAME, StringUtils.firstUp(getERP_TM(conf.getLocale()).translateFirst(MissingMode.STRING, MessageArgs.create("elem", this.getElem().getName()), translationKeys))); |
this.putValue(NAME, StringUtils.firstUp(TM.getTM().translateFirst(MissingMode.NULL, MessageArgs.create("elem", this.getElem().getName()), translationKeys))); |
} |
@Override |
/trunk/OpenConcerto/src/org/openconcerto/erp/action/AboutAction.java |
---|
44,11 → 44,15 |
public final class AboutAction extends AbstractAction { |
private final ComptaPropsConfiguration conf; |
static private final AboutAction instance = new AboutAction(); |
public AboutAction(final ComptaPropsConfiguration conf) { |
public static AboutAction getInstance() { |
return instance; |
} |
private AboutAction() { |
super("Informations"); |
this.conf = conf; |
} |
@Override |
57,7 → 61,7 |
JPanel p = new JPanel(); |
p.setLayout(new BorderLayout()); |
final JScrollPane contentPane = new JScrollPane(new InfoPanel(this.conf.getLocale())); |
final JScrollPane contentPane = new JScrollPane(new InfoPanel()); |
p.add(createComptaInfoPanel(), BorderLayout.NORTH); |
p.add(contentPane, BorderLayout.CENTER); |
p.add(createBenchMarkPanel(), BorderLayout.SOUTH); |
103,9 → 107,9 |
p.add(new JLabel(path), c); |
c.gridy++; |
c.gridx = 0; |
final String serverIp = this.conf.getServerIp(); |
final String serverIp = ComptaPropsConfiguration.getInstanceCompta().getServerIp(); |
if (serverIp.startsWith("file:")) { |
final String dbPath = serverIp.substring(5); |
final String dbPath = ComptaPropsConfiguration.getInstanceCompta().getServerIp().substring(5); |
c.weightx = 0; |
c.anchor = GridBagConstraints.EAST; |
p.add(new JLabelBold("Fichier de base de données : "), c); |
/trunk/OpenConcerto/src/org/openconcerto/erp/action/NouvelleConnexionAction.java |
---|
64,6 → 64,7 |
import org.openconcerto.utils.ExceptionHandler; |
import org.openconcerto.utils.JImage; |
import org.openconcerto.utils.cc.IClosure; |
import org.openconcerto.utils.i18n.TranslationManager; |
import java.awt.Color; |
import java.awt.GridBagConstraints; |
109,6 → 110,9 |
public void run() { |
try { |
TranslationManager.getInstance().addTranslationStreamFromClass(MainFrame.class); |
TranslationManager.getInstance().setLocale(UserProps.getInstance().getLocale()); |
final Boolean booleanValue = UserProps.getInstance().getBooleanValue("HideTips"); |
if (!booleanValue) { |
SwingUtilities.invokeLater(new Runnable() { |
300,7 → 304,7 |
public void run() { |
// laisse le temps au logiciel de demarrer |
try { |
Thread.sleep(1000); |
Thread.sleep(10000); |
} catch (InterruptedException e) { |
e.printStackTrace(); |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/action/CreateListFrameAbstractAction.java |
---|
14,6 → 14,7 |
package org.openconcerto.erp.action; |
import org.openconcerto.erp.config.ComptaPropsConfiguration; |
import org.openconcerto.erp.utils.TM; |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.PropsConfiguration; |
import org.openconcerto.sql.element.SQLElement; |
66,9 → 67,10 |
protected CreateListFrameAbstractAction(final ComptaPropsConfiguration conf, final E elem) { |
super(elem); |
this.conf = conf; |
// TODO use conf to find TM |
final NounClass nounClass = this.getElem().getName().getNounClass(); |
final String[] translationKeys = nounClass == null ? TRANSLATION_KEY_ARRAY : new String[] { TRANSLATION_KEY + '.' + nounClass.getName(), TRANSLATION_KEY }; |
this.putValue(NAME, StringUtils.firstUp(conf.getERP_TM().translateFirst(MissingMode.STRING, MessageArgs.create("elem", this.getElem().getName()), translationKeys))); |
this.putValue(NAME, StringUtils.firstUp(TM.getTM().translateFirst(MissingMode.NULL, MessageArgs.create("elem", this.getElem().getName()), translationKeys))); |
} |
public final ComptaPropsConfiguration getConf() { |
/trunk/OpenConcerto/src/org/openconcerto/erp/injector/CommandeBrSQLInjector.java |
---|
43,10 → 43,7 |
if (getSource().contains("ID_AFFAIRE") && getDestination().contains("ID_AFFAIRE")) { |
map(getSource().getField("ID_AFFAIRE"), getDestination().getField("ID_AFFAIRE")); |
} |
if (getSource().contains("ID_POLE_PRODUIT") && getDestination().contains("ID_POLE_PRODUIT")) { |
map(getSource().getField("ID_POLE_PRODUIT"), getDestination().getField("ID_POLE_PRODUIT")); |
} |
} |
@Override |
protected void merge(SQLRowAccessor srcRow, SQLRowValues rowVals) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationDoc/SheetUtils.java |
---|
19,12 → 19,12 |
import org.openconcerto.utils.ExceptionHandler; |
import org.openconcerto.utils.FileUtils; |
import java.awt.Graphics2D; |
import java.io.File; |
import java.io.FileOutputStream; |
import java.io.FilenameFilter; |
import java.io.IOException; |
import java.util.ArrayList; |
import java.util.Calendar; |
import java.util.Collections; |
import java.util.Comparator; |
import java.util.List; |
32,22 → 32,14 |
import javax.swing.JOptionPane; |
import javax.swing.SwingUtilities; |
import org.apache.pdfbox.pdmodel.PDDocument; |
import org.apache.pdfbox.pdmodel.PDDocumentInformation; |
import org.apache.pdfbox.pdmodel.PDPage; |
import org.apache.pdfbox.pdmodel.PDPageContentStream; |
import org.apache.pdfbox.pdmodel.common.PDRectangle; |
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; |
import org.apache.pdfbox.util.Matrix; |
import org.jopendocument.model.OpenDocument; |
import org.jopendocument.renderer.ODTRenderer; |
import com.lowagie.text.Document; |
import com.lowagie.text.PageSize; |
import com.lowagie.text.pdf.PdfContentByte; |
import com.lowagie.text.pdf.PdfWriter; |
import de.rototor.pdfbox.graphics2d.PdfBoxGraphics2D; |
import de.rototor.pdfbox.graphics2d.PdfBoxGraphics2DFontTextDrawer; |
import de.rototor.pdfbox.graphics2d.PdfBoxGraphics2DFontTextDrawerDefaultFonts; |
public class SheetUtils { |
public static File convertToOldFile(DBRoot root, String fileName, File pathDest, File fDest) { |
140,41 → 132,40 |
public static void convert2PDF(final OpenDocument doc, final File pdfFileToCreate) throws Exception { |
assert (!SwingUtilities.isEventDispatchThread()); |
// Open the PDF document |
Document document = new Document(PageSize.A4, 50, 50, 50, 50); |
try { |
PDDocument document = new PDDocument(); |
PDDocumentInformation info = new PDDocumentInformation(); |
info.setCreator("OpenConcerto"); |
info.setProducer("OpenConcerto"); |
info.setCreationDate(Calendar.getInstance()); |
info.setModificationDate(Calendar.getInstance()); |
document.setDocumentInformation(info); |
FileOutputStream fileOutputStream = new FileOutputStream(pdfFileToCreate); |
PdfBoxGraphics2DFontTextDrawer fontTextDrawer = new PdfBoxGraphics2DFontTextDrawerDefaultFonts(); |
final File dir = new File("Fonts"); |
if (dir.exists()) { |
fontTextDrawer.registerFontFromDirectory(dir); |
} |
// Create the writer |
PdfWriter writer = PdfWriter.getInstance(document, fileOutputStream); |
writer.setPdfVersion(PdfWriter.VERSION_1_6); |
writer.setFullCompression(); |
document.open(); |
PdfContentByte cb = writer.getDirectContent(); |
// Configure the renderer |
ODTRenderer renderer = new ODTRenderer(doc); |
renderer.setIgnoreMargins(false); |
renderer.setPaintMaxResolution(true); |
PDRectangle pageSize = PDRectangle.A4; |
// Scale the renderer to fit width or height |
final double widthFactor = renderer.getPrintWidth() / pageSize.getWidth(); |
final double heightFactor = renderer.getPrintHeight() / pageSize.getHeight(); |
final double widthFactor = renderer.getPrintWidth() / document.getPageSize().getWidth(); |
final double heightFactor = renderer.getPrintHeight() / document.getPageSize().getHeight(); |
renderer.setResizeFactor(Math.max(widthFactor, heightFactor)); |
// Print pages |
for (int i = 0; i < renderer.getPrintedPagesNumber(); i++) { |
PDPage page = new PDPage(pageSize); |
document.addPage(page); |
PdfBoxGraphics2D g2 = new PdfBoxGraphics2D(document, pageSize.getWidth(), pageSize.getHeight()); |
g2.setFontTextDrawer(fontTextDrawer); |
Graphics2D g2 = cb.createGraphics(PageSize.A4.getWidth(), PageSize.A4.getHeight()); |
// If you want to prevent copy/paste, you can use |
// g2 = tp.createGraphicsShapes(w, h, true, 0.9f); |
// centrage horizontal, alignement vertical en haut |
g2.translate((PageSize.A4.getWidth() - renderer.getPrintWidthInPixel()) / 2.0, 0); |
183,17 → 174,15 |
renderer.paintComponent(g2); |
g2.dispose(); |
final PDFormXObject xform = g2.getXFormObject(); |
final Matrix matrix = new Matrix(); |
matrix.translate(0, 0); |
final PDPageContentStream contentStream = new PDPageContentStream(document, page); |
contentStream.transform(matrix); |
contentStream.drawForm(xform); |
contentStream.close(); |
// Add our spreadsheet in the middle of the page |
if (i < renderer.getPrintedPagesNumber() - 1) |
document.newPage(); |
} |
document.save(fileOutputStream); |
// Close the PDF document |
document.close(); |
// writer.close(); |
fileOutputStream.close(); |
} catch (Exception originalExn) { |
ExceptionHandler.handle("Impossible de créer le PDF " + pdfFileToCreate.getAbsolutePath(), originalExn); |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationDoc/OOXMLElement.java |
---|
176,7 → 176,7 |
int aJ = row.getInt("AJOURS"); |
int nJ = row.getInt("LENJOUR"); |
if (aJ + nJ == 0) { |
if (!row.getBoolean("COMPTANT") && row.getBoolean("DATE_FACTURE")) { |
if (row.getBoolean("DATE_FACTURE")) { |
return Configuration.getInstance().getTranslator().getLabelFor(row.getTable().getField("DATE_FACTURE")); |
} else { |
return " "; |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationDoc/provider/FichePayeHeureTotalProvider.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationDoc/provider/FichePayePlafondAProvider.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationDoc/provider/IbanProvider.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationDoc/provider/FichePayeSmicHProvider.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationDoc/provider/FichePayeHeureSupTotalProvider.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationDoc/provider/QteTotalDocProvider.java |
---|
24,19 → 24,13 |
public class QteTotalDocProvider extends UserInitialsValueProvider { |
private enum TypeQteTotalDocProvider { |
QTE_KG, QTE, COLIS, PDS_BRUT, QTE_MULT |
QTE, COLIS |
}; |
private final TypeQteTotalDocProvider type; |
private boolean ha = false; |
public QteTotalDocProvider(TypeQteTotalDocProvider t) { |
this(t, false); |
} |
public QteTotalDocProvider(TypeQteTotalDocProvider t, boolean ha) { |
this.type = t; |
this.ha = ha; |
} |
@Override |
49,41 → 43,26 |
for (SQLRowAccessor sqlRowAccessor : cols) { |
if (!sqlRowAccessor.getTable().contains("NIVEAU") || sqlRowAccessor.getInt("NIVEAU") == 1) { |
String field = "PV_HT"; |
if (this.ha) { |
field = "PA_HT"; |
} |
BigDecimal prixUnitaire = sqlRowAccessor.getBigDecimal(field); |
if (prixUnitaire != null && prixUnitaire.signum() != 0) { |
if (this.type == TypeQteTotalDocProvider.QTE || this.type == TypeQteTotalDocProvider.QTE_KG) { |
if (this.type == TypeQteTotalDocProvider.QTE || sqlRowAccessor.getForeignID("ID_UNITE_VENTE") == 7) { |
if (this.type == TypeQteTotalDocProvider.QTE) { |
BigDecimal qte = sqlRowAccessor.getBigDecimal("QTE_UNITAIRE").multiply(new BigDecimal(sqlRowAccessor.getInt("QTE"))); |
total = total.add(qte); |
} |
} else if (this.type == TypeQteTotalDocProvider.PDS_BRUT) { |
total = total.add(sqlRowAccessor.getBigDecimal("T_POIDS_BRUT")); |
} else if (this.type == TypeQteTotalDocProvider.QTE_MULT) { |
BigDecimal qte = new BigDecimal(sqlRowAccessor.getInt("QTE")); |
total = total.add(qte); |
} else { |
if (sqlRowAccessor.getObject("NB_COLIS") != null) { |
total = total.add(new BigDecimal(sqlRowAccessor.getInt("NB_COLIS"))); |
} |
} |
} |
} |
} |
return total; |
} |
public static void register() { |
SpreadSheetCellValueProviderManager.put("sales.qty.multiple.total", new QteTotalDocProvider(TypeQteTotalDocProvider.QTE_MULT)); |
SpreadSheetCellValueProviderManager.put("sales.qty.total", new QteTotalDocProvider(TypeQteTotalDocProvider.QTE)); |
SpreadSheetCellValueProviderManager.put("purchase.qty.total", new QteTotalDocProvider(TypeQteTotalDocProvider.QTE, true)); |
SpreadSheetCellValueProviderManager.put("sales.qty.total.kg", new QteTotalDocProvider(TypeQteTotalDocProvider.QTE_KG)); |
SpreadSheetCellValueProviderManager.put("sales.package.total", new QteTotalDocProvider(TypeQteTotalDocProvider.COLIS)); |
SpreadSheetCellValueProviderManager.put("sales.package.brut", new QteTotalDocProvider(TypeQteTotalDocProvider.PDS_BRUT)); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationDoc/OOgenerationListeXML.java |
---|
479,18 → 479,11 |
} |
y++; |
} catch (IllegalArgumentException e) { |
SwingUtilities.invokeLater(new Runnable() { |
@Override |
public void run() { |
System.err.println(resolveHint + " : " + value); |
JOptionPane.showMessageDialog(null, "La cellule " + resolveHint + " n'existe pas ou est fusionnée.", "Erreur pendant la génération", JOptionPane.ERROR_MESSAGE); |
} |
}); |
} |
} |
} |
} |
nbCellule = values.length; |
} else { |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/GenerationMvtSepa.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/GenerationMvtDepotChequeClient.java |
---|
96,7 → 96,7 |
rowValsDepotElt.putNulls("MONTANT", "TIERS", "PIECE"); |
rowValsDepotElt.putRowValues("ID_CLIENT").putNulls("NOM", "ID_COMPTE_PCE"); |
final SQLRowValues rowValuesChq = rowValsDepotElt.putRowValues("ID_CHEQUE_A_ENCAISSER"); |
rowValuesChq.putNulls("SANS_VALEUR_ENCAISSEMENT").putRowValues("ID_MOUVEMENT").putRowValues("ID_PIECE").putNulls("NOM"); |
rowValuesChq.putNulls("SANS_VALEUR_ENCAISSEMENT").putRowValues("ID_MOUVEMENT").putNulls("ID_PIECE"); |
rowValuesChq.putNulls("ID_COMPTE_PCE_TIERS").putNulls("NUMERO"); |
List<SQLRowValues> cheques = SQLRowValuesListFetcher.create(rowValsDepotElt).fetch(new Where(rowValsDepotElt.getTable().getField("ID_DEPOT_CHEQUE"), "=", depot.getID())); |
for (SQLRowValues sqlRowAccessor : cheques) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/Piece.java |
---|
15,8 → 15,6 |
import org.openconcerto.sql.model.DBRoot; |
import org.openconcerto.sql.model.SQLInsert; |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.users.User; |
import java.util.ArrayList; |
import java.util.List; |
43,11 → 41,9 |
return mouvements; |
} |
public SQLInsert createInsert(final DBRoot root, User user) { |
public SQLInsert createInsert(final DBRoot root) { |
final SQLInsert insert = new SQLInsert(); |
final SQLTable table = root.getTable("PIECE"); |
insert.add(table.getField("NOM"), this.nom); |
insert.addCreationTrackedField(user, table); |
insert.add(root.getTable("PIECE").getField("NOM"), this.nom); |
return insert; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/Exercice.java |
---|
72,7 → 72,7 |
LOGGER.log(Level.INFO, "insertion de {0} pièces comptables", pieces.size()); |
for (Piece p : pieces) { |
// Pièces |
insertsPiece.add(p.createInsert(root, user)); |
insertsPiece.add(p.createInsert(root)); |
// Vérification des mouvements |
final List<Mouvement> mouvements = p.getMouvements(); |
156,7 → 156,7 |
// journal non déjà existant |
if (codesDesJournauxExistants.get(journal.getCode().toLowerCase()) == null) { |
list.add(journal); |
insertsJournaux.add(journal.createInsert(root, user)); |
insertsJournaux.add(journal.createInsert(root)); |
} |
} |
final List<Number> journauxIds = new ArrayList<>(); |
207,7 → 207,7 |
LOGGER.fine("création du compte : " + c.getNumero().toLowerCase()); |
} |
list.add(c); |
insertsComptes.add(c.createInsert(root, user)); |
insertsComptes.add(c.createInsert(root)); |
} |
} |
List<Number> comptesIds = new ArrayList<>(); |
352,7 → 352,7 |
piece.setId(idsPieces.get(i)); |
for (Mouvement m : piece.getMouvements()) { |
listMvtWithoutIDs.add(m); |
insertsMouvement.add(m.createInsert(root, user)); |
insertsMouvement.add(m.createInsert(root)); |
} |
} |
370,11 → 370,11 |
} |
List<SQLUpdate> mvtUpdate = new ArrayList<>(); |
for (int i = 0; i < idsMouvements.size(); i++) { |
maxMvt++; |
Number mvtId = idsMouvements.get(i); |
SQLUpdate update = new SQLUpdate(new Where(tableMvt.getKey(), "=", mvtId)); |
update.add(tableMvt.getField("NUMERO"), maxMvt); |
mvtUpdate.add(update); |
maxMvt++; |
listMvtWithoutIDs.get(i).setId(mvtId); |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/Compte.java |
---|
16,7 → 16,6 |
import org.openconcerto.sql.model.DBRoot; |
import org.openconcerto.sql.model.SQLInsert; |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.users.User; |
public class Compte { |
private final Long id; |
55,16 → 54,14 |
return ((Compte) obj).numero.equalsIgnoreCase(this.numero); |
} |
SQLInsert createInsert(DBRoot root, User user) { |
SQLInsert createInsert(DBRoot root) { |
final SQLInsert insert = new SQLInsert(); |
final SQLTable table = root.getTable("COMPTE_PCE"); |
insert.add(table.getField("NUMERO"), this.numero); |
insert.add(table.getField("NOM"), this.nom); |
insert.addCreationTrackedField(user, table); |
return insert; |
} |
@Override |
public String toString() { |
return "Compte numero:" + this.numero + " " + this.nom + " (id:" + this.id + ")"; |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/GenerationReglementAchat.java |
---|
21,13 → 21,10 |
import org.openconcerto.sql.model.SQLRow; |
import org.openconcerto.sql.model.SQLRowValues; |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.model.Where; |
import org.openconcerto.sql.request.UpdateBuilder; |
import java.sql.SQLException; |
import java.text.DateFormat; |
import java.text.SimpleDateFormat; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.List; |
64,8 → 61,6 |
List<SQLRow> l = regMontantRow.getReferentRows(regMontantRow.getTable().getTable("REGLER_MONTANT_ELEMENT")); |
int mvtSource = -1; |
List<Integer> factureFids = new ArrayList<Integer>(); |
for (SQLRow sqlRow : l) { |
SQLRow mvtEch = sqlRow.getForeignRow("ID_MOUVEMENT_ECHEANCE"); |
if (mvtEch.getID() != mvtSource) { |
74,13 → 69,7 |
mvtSource = mvtEch.getID(); |
} |
} |
if (!sqlRow.isForeignEmpty("ID_ECHEANCE_FOURNISSEUR")) { |
SQLRow ech = sqlRow.getForeign("ID_ECHEANCE_FOURNISSEUR"); |
if (!ech.isForeignEmpty("ID_FACTURE_FOURNISSEUR")) { |
factureFids.add(ech.getForeignID("ID_FACTURE_FOURNISSEUR")); |
} |
} |
} |
SQLRow rowMvtSource = tableMouvement.getRow(mvtSource); |
if (rowMvtSource == null) { |
135,9 → 124,6 |
ajoutEcriture(); |
} |
setDateReglement(regMontantRow.getTable().getTable("FACTURE_FOURNISSEUR"), factureFids, this.date); |
} else { |
Date dateEch = ModeDeReglementSQLElement.calculDate(modeRegRow.getInt("AJOURS"), modeRegRow.getInt("LENJOUR"), this.date); |
155,7 → 141,7 |
// Ajout dans echeance |
Map<String, Object> mEcheance = new HashMap<String, Object>(); |
this.idMvt = getNewMouvement(rowMvtSource.getString("SOURCE"), rowMvtSource.getInt("IDSOURCE"), rowMvtSource.getID(), rowMvtSource.getInt("ID_PIECE")); |
this.idMvt = getNewMouvement("ECHEANCE_FOURNISSEUR", 1, rowMvtSource.getID(), rowMvtSource.getInt("ID_PIECE")); |
mEcheance.put("ID_MOUVEMENT", new Integer(this.idMvt)); |
mEcheance.put("DATE", dateEch); |
176,15 → 162,6 |
} |
} |
private void setDateReglement(SQLTable table, List<Integer> ids, Date d) throws SQLException { |
if (!ids.isEmpty()) { |
UpdateBuilder b = new UpdateBuilder(table); |
b.setObject("DATE_REGLEMENT", d); |
b.setWhere(new Where(table.getKey(), ids)); |
table.getDBSystemRoot().getDataSource().execute(b.asString()); |
} |
} |
private void paiementCheque(Date dateEch, SQLRow rowMvtSource, int idFourn, int idRegMontant) throws SQLException { |
SQLRow regMontantRow = base.getTable("REGLER_MONTANT").getRow(idRegMontant); |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/GenerationMvtReglementFactureFournisseur.java |
---|
16,10 → 16,8 |
import org.openconcerto.erp.core.common.element.BanqueSQLElement; |
import org.openconcerto.erp.core.finance.accounting.element.ComptePCESQLElement; |
import org.openconcerto.erp.core.finance.accounting.element.JournalSQLElement; |
import org.openconcerto.erp.core.finance.accounting.element.MouvementSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.ModeDeReglementSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.TypeReglementSQLElement; |
import org.openconcerto.erp.core.sales.invoice.element.SaisieVenteFactureSQLElement; |
import org.openconcerto.erp.model.PrixTTC; |
import org.openconcerto.sql.model.SQLRow; |
import org.openconcerto.sql.model.SQLRowValues; |
27,14 → 25,11 |
import org.openconcerto.utils.ExceptionHandler; |
import java.sql.SQLException; |
import java.sql.Timestamp; |
import java.text.DateFormat; |
import java.text.SimpleDateFormat; |
import java.util.ArrayList; |
import java.util.Calendar; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
// FIXME mettre toute les generations dans des threads à part |
83,7 → 78,7 |
this.nom = "Règlement Achat : " + rowFournisseur.getString("NOM") + " Facture : " + saisieRow.getObject("NUMERO").toString() + " (" + typeRegRow.getString("NOM") + ")"; |
// si paiement comptant |
if ((modeRegRow.getInt("AJOURS") == 0) && (modeRegRow.getInt("LENJOUR") == 0) && !typeRegRow.getBoolean("ECHEANCE")) { |
if ((modeRegRow.getInt("AJOURS") == 0) && (modeRegRow.getInt("LENJOUR") == 0)) { |
System.out.println("Règlement Comptant"); |
// test Cheque |
139,7 → 134,6 |
this.putValue("CREDIT", Long.valueOf(prixTTC.getLongValue())); |
ajoutEcriture(); |
} |
setDateReglement(saisieRow, this.date); |
} else { |
Date dateEch = ModeDeReglementSQLElement.calculDate(modeRegRow.getInt("AJOURS"), modeRegRow.getInt("LENJOUR"), this.date); |
157,7 → 151,6 |
// Ajout dans echeance |
Map<String, Object> mEcheance = new HashMap<String, Object>(); |
SQLTable echeanceTable = base.getTable("ECHEANCE_FOURNISSEUR"); |
SQLRow rowMvtPere = tableMouvement.getRow(this.idPere); |
this.idMvt = getNewMouvement("ECHEANCE_FOURNISSEUR", 1, this.idPere, rowMvtPere.getInt("ID_PIECE")); |
164,14 → 157,9 |
mEcheance.put("ID_MOUVEMENT", Integer.valueOf(this.idMvt)); |
mEcheance.put("DATE", new java.sql.Date(dateEch.getTime())); |
mEcheance.put("MONTANT", Long.valueOf(prixTTC.getLongValue())); |
mEcheance.put("ID_FOURNISSEUR", saisieRow.getForeignID("ID_FOURNISSEUR")); |
mEcheance.put("ID_FACTURE_FOURNISSEUR", saisieRow.getID()); |
if (saisieRow.getTable().contains("ID_AFFAIRE") && echeanceTable.contains("ID_AFFAIRE")) { |
if (!saisieRow.isForeignEmpty("ID_AFFAIRE")) { |
mEcheance.put("ID_AFFAIRE", saisieRow.getForeignID("ID_AFFAIRE")); |
} |
} |
mEcheance.put("ID_FOURNISSEUR", Integer.valueOf(saisieRow.getInt("ID_FOURNISSEUR"))); |
SQLTable echeanceTable = base.getTable("ECHEANCE_FOURNISSEUR"); |
SQLRowValues valEcheance = new SQLRowValues(echeanceTable, mEcheance); |
if (valEcheance.getInvalid() == null) { |
239,14 → 227,6 |
} |
private void setDateReglement(SQLRow source, Date d) throws SQLException { |
SQLRowValues rowValsUpdateVF = source.createEmptyUpdateRow(); |
rowValsUpdateVF.put("DATE_REGLEMENT", d); |
rowValsUpdateVF.update(); |
} |
public void run() { |
try { |
genereReglement(); |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/Journal.java |
---|
16,7 → 16,6 |
import org.openconcerto.sql.model.DBRoot; |
import org.openconcerto.sql.model.SQLInsert; |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.users.User; |
public class Journal { |
private final Long id; |
55,12 → 54,11 |
return ((Journal) obj).code.equalsIgnoreCase(this.code); |
} |
SQLInsert createInsert(DBRoot root, User user) { |
SQLInsert createInsert(DBRoot root) { |
final SQLInsert insert = new SQLInsert(); |
final SQLTable table = root.getTable("JOURNAL"); |
insert.add(table.getField("CODE"), this.code); |
insert.add(table.getField("NOM"), this.nom); |
insert.addCreationTrackedField(user, table); |
return insert; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/Mouvement.java |
---|
16,7 → 16,6 |
import org.openconcerto.sql.model.DBRoot; |
import org.openconcerto.sql.model.SQLInsert; |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.users.User; |
import java.math.BigDecimal; |
import java.util.ArrayList; |
62,7 → 61,7 |
return this.id; |
} |
SQLInsert createInsert(DBRoot root, User user) { |
SQLInsert createInsert(DBRoot root) { |
final SQLInsert insert = new SQLInsert(); |
final SQLTable table = root.getTable("MOUVEMENT"); |
// FIXME le numero doit être généré en auto |
78,7 → 77,7 |
if (this.pere != null) { |
insert.add(table.getField("ID_MOUVEMENT_PERE"), this.pere.getId().intValue()); |
} |
insert.addCreationTrackedField(user, table); |
// TODO CREATION_DATE MODIFICATION_DATE |
return insert; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/GenerationReglementVenteNG.java |
---|
20,7 → 20,6 |
import org.openconcerto.erp.core.finance.accounting.element.JournalSQLElement; |
import org.openconcerto.erp.core.finance.accounting.element.MouvementSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.ModeDeReglementSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.SEPAMandateSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.TypeReglementSQLElement; |
import org.openconcerto.erp.model.PrixTTC; |
import org.openconcerto.erp.preferences.GestionCommercialeGlobalPreferencePanel; |
54,21 → 53,21 |
public SQLRow ecrClient = null; |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource) throws SQLException { |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource) throws Exception { |
this(label, rowClient, ttc, d, modeReglement, source, mvtSource, true); |
} |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse) throws SQLException { |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse) throws Exception { |
this(label, rowClient, ttc, d, modeReglement, source, mvtSource, createEncaisse, false); |
} |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse, boolean avance) |
throws SQLException { |
throws Exception { |
this(label, rowClient, ttc, d, modeReglement, source, mvtSource, createEncaisse, avance, rowClient.getString("NOM"), null); |
} |
public GenerationReglementVenteNG(String label, SQLRow rowClient, PrixTTC ttc, Date d, SQLRow modeReglement, SQLRow source, SQLRow mvtSource, boolean createEncaisse, boolean avance, String tiers, |
SQLRowAccessor cptTiers) throws SQLException { |
SQLRowAccessor cptTiers) throws Exception { |
SQLRow typeRegRow = modeReglement.getForeignRow("ID_TYPE_REGLEMENT"); |
setRowAnalytiqueSource(source); |
156,8 → 155,8 |
if (modeReglement.getObject("DATE") != null) { |
dateTmp = modeReglement.getDate("DATE").getTime(); |
} |
// On fixe la date du règlement de la facture à reception du cheque |
setDateReglement(source, this.date); |
// On fixe la date du règlement de la facture |
setDateReglement(source, dateTmp); |
Calendar c = modeReglement.getDate("DATE_DEPOT"); |
if (c != null) { |
183,11 → 182,6 |
this.putValue("ID_JOURNAL", JournalSQLElement.CAISSES); |
} |
if (typeRegRow.getID() == TypeReglementSQLElement.CB && this.rowPrefsCompte.getTable().contains("ID_JOURNAL_CB_ATTENTE") |
&& !this.rowPrefsCompte.isForeignEmpty("ID_JOURNAL_CB_ATTENTE")) { |
this.putValue("ID_JOURNAL", this.rowPrefsCompte.getForeignID("ID_JOURNAL_CB_ATTENTE")); |
} |
int idCompteClient = cptTiers != null && !cptTiers.isUndefined() ? cptTiers.getID() : rowClient.getInt("ID_COMPTE_PCE"); |
if (avance) { |
idCompteClient = rowPrefsCompte.getInt("ID_COMPTE_PCE_AVANCE_CLIENT"); |
220,18 → 214,8 |
this.putValue("ID_COMPTE_PCE", Integer.valueOf(idCompteRegl)); |
} else { |
try { |
fillCompteBanqueFromRow(modeReglement, "VenteCB", false); |
} catch (Exception e) { |
throw new SQLException(e); |
} |
} |
if (typeRegRow.getID() == TypeReglementSQLElement.CB && this.rowPrefsCompte.getTable().contains("ID_COMPTE_PCE_CB_ATTENTE") |
&& !this.rowPrefsCompte.isForeignEmpty("ID_COMPTE_PCE_CB_ATTENTE")) { |
this.putValue("ID_COMPTE_PCE", this.rowPrefsCompte.getForeignID("ID_COMPTE_PCE_CB_ATTENTE")); |
} |
this.putValue("DEBIT", Long.valueOf(ttc.getLongValue())); |
this.putValue("CREDIT", Long.valueOf(0)); |
ajoutEcriture(); |
267,33 → 251,7 |
if (source.getTable().equals(tableSaisieVenteFacture)) { |
valEcheance.put("ID_SAISIE_VENTE_FACTURE", source.getID()); |
} |
if (source.getTable().getName().equals(valEcheance.getTable().getName())) { |
valEcheance.put("ID_SAISIE_VENTE_FACTURE", source.getObject("ID_SAISIE_VENTE_FACTURE")); |
} |
if (modeReglement.getForeign("ID_TYPE_REGLEMENT").getBoolean("SEPA")) { |
final String foreignBanqueFieldName = "ID_" + BanqueSQLElement.TABLENAME; |
if (valEcheance.getTable().contains(foreignBanqueFieldName)) |
valEcheance.put(foreignBanqueFieldName, modeReglement.getInt(foreignBanqueFieldName)); |
valEcheance.put("ETS", modeReglement.getObject("ETS")); |
if (!modeReglement.isForeignEmpty("ID_SEPA_MANDATE")) { |
valEcheance.put("ID_SEPA_MANDATE", modeReglement.getForeignID("ID_SEPA_MANDATE")); |
} else if (rowClient != null && !rowClient.isForeignEmpty("ID_SEPA_MANDATE_DEFAULT")) { |
valEcheance.put("ID_SEPA_MANDATE", rowClient.getForeignID("ID_SEPA_MANDATE_DEFAULT")); |
} else { |
SEPAMandateSQLElement mandateElem = ComptaPropsConfiguration.getInstanceCompta().getDirectory().getElement(SEPAMandateSQLElement.class); |
final String mandateID = mandateElem.generateMandateIdentification("Facturation", '0', true, true); |
// TODO gestion si pas de client (ex : don ou cotisation association) |
if (rowClient != null) { |
final SQLRowValues newVals = mandateElem.createRecurrent(rowClient.getID(), mandateID, source.getDate("DATE").getTime()); |
SQLRow rowMandate = newVals.commit(); |
valEcheance.put("ID_SEPA_MANDATE", rowMandate.getID()); |
rowClient.createEmptyUpdateRow().put("ID_SEPA_MANDATE_DEFAULT", rowMandate.getID()).commit(); |
} |
} |
} |
// ajout de l'ecriture |
SQLRow row = valEcheance.insert(); |
SQLRowValues rowVals = new SQLRowValues(tableMouvement); |
384,8 → 342,7 |
} |
} |
private void paiementCheque(Date dateEch, SQLRow source, PrixTTC ttc, SQLRow rowClient, SQLRow modeRegl, SQLRow mvtSource, boolean avance, String tiers, SQLRowAccessor cptTiers) |
throws SQLException { |
private void paiementCheque(Date dateEch, SQLRow source, PrixTTC ttc, SQLRow rowClient, SQLRow modeRegl, SQLRow mvtSource, boolean avance, String tiers, SQLRowAccessor cptTiers) throws Exception { |
SQLRowValues valCheque = new SQLRowValues(base.getTable("CHEQUE_A_ENCAISSER")); |
SQLPreferences prefs = SQLPreferences.getMemCached(valCheque.getTable().getDBRoot()); |
/trunk/OpenConcerto/src/org/openconcerto/erp/generationEcritures/GenerationMvtAvoirFournisseur.java |
---|
64,9 → 64,7 |
this.putValue("NOM", "Avoir fournisseur : " + avoirRow.getString("NUMERO") + " " + rowFourn.getString("NOM")); |
this.putValue("ID_JOURNAL", GenerationMvtAvoirFournisseur.journal); |
this.putValue("ID_MOUVEMENT", Integer.valueOf(1)); |
if (rowFourn.getTable().getTable("ECRITURE").contains("CODE_CLIENT")) { |
this.putValue("CODE_CLIENT", rowFourn.getString("CODE")); |
} |
// on cree un nouveau mouvement |
if (this.idMvt == 1) { |
getNewMouvement(GenerationMvtAvoirFournisseur.source, this.idAvoirFourn, 1, "Avoir Fournisseur : " + avoirRow.getString("NUMERO")); |
89,7 → 87,6 |
} |
} |
} |
this.putValue("ID_COMPTE_PCE", Integer.valueOf(idCompteAchat)); |
this.putValue("DEBIT", Long.valueOf(0)); |
this.putValue("CREDIT", Long.valueOf(prixHT.getLongValue())); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/reports/history/ui/ListeHistoriquePanel.java |
---|
26,7 → 26,6 |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.element.SQLElement; |
import org.openconcerto.sql.element.SQLElementDirectory; |
import org.openconcerto.sql.model.AliasedTable; |
import org.openconcerto.sql.model.SQLDataSource; |
import org.openconcerto.sql.model.SQLField; |
import org.openconcerto.sql.model.SQLFieldsSet; |
66,7 → 65,6 |
import java.io.File; |
import java.io.FilenameFilter; |
import java.io.IOException; |
import java.math.BigDecimal; |
import java.math.BigInteger; |
import java.sql.SQLException; |
import java.util.ArrayList; |
126,7 → 124,7 |
SQLRowAccessor row = ListeHistoriquePanel.this.jListePanel.getModel().getRowAt(selectIndex); |
if ((row == null || row.isUndefined()) && ListeHistoriquePanel.this.undefinedLabel == null) { |
if ((row == null || row.isUndefined()) && undefinedLabel == null) { |
return; |
} |
162,55 → 160,12 |
w2 = w2.and(new Where(table.getForeignTable(field.getName()).getField("ID_" + ListeHistoriquePanel.this.jListePanel.getModel().getTable().getName()), "=", id)); |
liste.getListe().getRequest().setWhere(w2.and(w)); |
} else { |
if (liste.getElement().getTable().equals(ListeHistoriquePanel.this.jListePanel.getModel().getTable())) { |
final Where whereMatch = new Where(table.getField("ID_" + ListeHistoriquePanel.this.jListePanel.getModel().getTable().getName()), "=", id); |
if ((table.getName().equals("COMMANDE_ELEMENT") || table.getName().equals("BON_RECEPTION_ELEMENT")) |
&& ListeHistoriquePanel.this.jListePanel.getModel().getTable().getName().equals("AFFAIRE")) { |
// FIXME alias forcé à la main, voir pour remplacer avec un |
// selectTransformer |
final String tablePere = table.getName().replaceAll("_ELEMENT", ""); |
AliasedTable tableAlias = new AliasedTable(table.getTable(tablePere), "tAlias__ID_" + tablePere + "__" + tablePere); |
final int idAffaire = id; |
Where wPere = new Where(tableAlias.getField("ID_AFFAIRE"), "=", idAffaire); |
liste.getListe().getRequest().setWhere(whereMatch.or(wPere).and(w)); |
// whereMatch = whereMatch.or(new Where(new |
// AliasedTable(table.getForeignTable("ID_"+tablePere), |
// alias).getField("ID_AFFAIRE"), "=", id)); |
if (liste.getElement().getTable().equals(jListePanel.getModel().getTable())) { |
liste.getListe().getRequest().setWhere(new Where(table.getKey(), "=", id).and(w)); |
} else { |
liste.getListe().getRequest().setWhere(whereMatch.and(w)); |
liste.getListe().getRequest().setWhere(new Where(table.getField("ID_" + ListeHistoriquePanel.this.jListePanel.getModel().getTable().getName()), "=", id).and(w)); |
} |
} else { |
if ((table.getName().equals("MOUVEMENT_STOCK")) && ListeHistoriquePanel.this.jListePanel.getModel().getTable().getName().equals("AFFAIRE")) { |
final String tableStock = "STOCK"; |
AliasedTable tableAlias = new AliasedTable(table.getTable(tableStock), "tAlias__ID_" + tableStock + "__" + tableStock); |
final int idAffaire = table.getTable("AFFAIRE").getRow(id).getForeignID("ID_DEPOT_STOCK"); |
Where w2 = new Where(table.getField("REEL"), "=", Boolean.TRUE); |
w2 = w2.and(new Where(table.getField("SOURCE"), "=", "")); |
Where wPere = new Where(tableAlias.getField("ID_DEPOT_STOCK"), "=", idAffaire).and(w2); |
liste.getListe().getRequest().setWhere(wPere); |
} else { |
final Where whereMatch = new Where(table.getField("ID_" + ListeHistoriquePanel.this.jListePanel.getModel().getTable().getName()), "=", id); |
if ((table.getName().equals("FACTURE_FOURNISSEUR_ELEMENT") || table.getName().equals("COMMANDE_ELEMENT") || table.getName().equals("BON_RECEPTION_ELEMENT")) |
&& ListeHistoriquePanel.this.jListePanel.getModel().getTable().getName().equals("AFFAIRE")) { |
// FIXME alias forcé à la main, voir pour remplacer avec un |
// selectTransformer |
final String tablePere = table.getName().replaceAll("_ELEMENT", ""); |
AliasedTable tableAlias = new AliasedTable(table.getTable(tablePere), "tAlias__ID_" + tablePere + "__" + tablePere); |
final int idAffaire = id; |
Where wPere = new Where(tableAlias.getField("ID_AFFAIRE"), "=", idAffaire); |
liste.getListe().getRequest().setWhere(whereMatch.or(wPere).and(w).and(new Where(table.getField("PA_HT"), "!=", BigDecimal.ZERO))); |
} else { |
liste.getListe().getRequest().setWhere(whereMatch.and(w)); |
} |
} |
} |
} |
} else { |
liste.getListe().getRequest().setWhere(w); |
} |
387,10 → 342,8 |
} |
}; |
} else |
} else { |
{ |
liste = new ListeAddPanel(elt, new IListe(createTableSource), "historique-" + title) { |
@Override |
protected void handleAction(JButton source, ActionEvent evt) { |
546,7 → 499,7 |
this.addAncestorListener(new AncestorListener() { |
@Override |
public void ancestorAdded(AncestorEvent event) { |
ListeHistoriquePanel.this.jListePanel.addListSelectionListener(ListeHistoriquePanel.this.listListener); |
jListePanel.addListSelectionListener(listListener); |
} |
@Override |
556,7 → 509,7 |
@Override |
public void ancestorRemoved(AncestorEvent event) { |
ListeHistoriquePanel.this.jListePanel.removeListSelectionListener(ListeHistoriquePanel.this.listListener); |
jListePanel.removeListSelectionListener(listListener); |
} |
}); |
594,7 → 547,7 |
public void addListSelectionListener(ListSelectionListener l) { |
this.jListePanel.addListSelectionListener(l); |
System.out.println("ListeHistoriquePanel.addListSelectionListener()" + this.jListePanel); |
System.out.println("ListeHistoriquePanel.addListSelectionListener()" + jListePanel); |
} |
public void removeListSelectionListener(ListSelectionListener l) { |
630,17 → 583,11 |
IListe liste = getIListeFromTableName(tableName); |
List<Integer> listeIds = null; |
if (liste != null) { |
ITableModel m = liste.getModel(); |
int size = m.getRowCount(); |
listeIds = new ArrayList<>(size); |
int size = liste.getRowCount(); |
listeIds = new ArrayList<Integer>(size); |
for (int i = 0; i < size; i++) { |
try { |
listeIds.add(m.idFromIndex(i)); |
} catch (Exception e) { |
e.printStackTrace(); |
listeIds.add(liste.idFromIndex(i)); |
} |
} |
} else { |
listeIds = Collections.emptyList(); |
} |
650,7 → 597,7 |
public void removeAllTableListener() { |
this.jListePanel.removeAllTableListener(); |
for (Integer i : this.mapListener.keySet()) { |
IListPanel panel = this.vectListePanel.get(i); |
IListPanel panel = vectListePanel.get(i); |
List<TableModelListener> l = this.mapListener.get(i); |
for (TableModelListener tableModelListener : l) { |
final IListe liste = panel.getListe(); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/credit/component/AvoirFournisseurSQLComponent.java |
---|
110,7 → 110,7 |
} |
} |
vals.put("ID_COMPTE_PCE", idCompteAchat); |
vals.put("ID_TAXE", TaxeCache.getCache().getFirstTaxeAchat().getID()); |
vals.put("ID_TAXE", TaxeCache.getCache().getFirstTaxe().getID()); |
vals.put("NUMERO", NumerotationAutoSQLElement.getNextNumero(getElement().getClass(), new Date())); |
return vals; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/purchase/importer/FacturXExporter.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/order/component/CommandeSQLComponent.java |
---|
91,8 → 91,6 |
import javax.swing.event.TableModelEvent; |
import javax.swing.event.TableModelListener; |
import com.ibm.icu.math.BigDecimal; |
public class CommandeSQLComponent extends TransfertBaseSQLComponent { |
private CommandeItemTable table = new CommandeItemTable(); |
1189,9 → 1187,6 |
final SQLRowValues rowVals = rowElt.createUpdateRow(); |
rowVals.clearPrimaryKeys(); |
rowVals.put("RECU", Boolean.FALSE); |
rowVals.put("RECU_FORCED", Boolean.FALSE); |
rowVals.put("QTE_RECUE", BigDecimal.ZERO); |
this.table.getModel().addRow(rowVals); |
final int rowIndex = this.table.getModel().getRowCount() - 1; |
this.table.getModel().fireTableModelModified(rowIndex); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/order/component/FactureFournisseurSQLComponent.java |
---|
21,7 → 21,6 |
import org.openconcerto.erp.core.common.ui.TotalPanel; |
import org.openconcerto.erp.core.finance.accounting.element.EcritureSQLElement; |
import org.openconcerto.erp.core.finance.accounting.model.CurrencyConverter; |
import org.openconcerto.erp.core.finance.payment.component.ModeDeReglementSQLComponent; |
import org.openconcerto.erp.core.finance.tax.model.TaxeCache; |
import org.openconcerto.erp.core.supplychain.order.ui.FactureFournisseurItemTable; |
import org.openconcerto.erp.generationDoc.gestcomm.FactureFournisseurXmlSheet; |
65,7 → 64,6 |
import java.util.Set; |
import javax.swing.JLabel; |
import javax.swing.JOptionPane; |
import javax.swing.JPanel; |
import javax.swing.JScrollPane; |
import javax.swing.JTextField; |
395,11 → 393,7 |
c.gridy++; |
c.weighty = 0; |
this.add(getBottomPanel(), c); |
ModeDeReglementSQLComponent modeReglComp; |
modeReglComp = (ModeDeReglementSQLComponent) this.eltModeRegl.getSQLChild(); |
modeReglComp.addDateCompListener(this.dateCommande); |
c.gridx = 0; |
c.gridy++; |
c.fill = GridBagConstraints.HORIZONTAL; |
704,9 → 698,6 |
totalTTC.updateTotal(); |
} |
}); |
ModeDeReglementSQLComponent modeReglComp = (ModeDeReglementSQLComponent) this.eltModeRegl.getSQLChild(); |
modeReglComp.addDateCompListener(this.dateCommande); |
return panel; |
} |
745,16 → 736,6 |
this.table.updateField("ID_FACTURE_FOURNISSEUR", row.getID()); |
this.table.createArticle(getSelectedID(), this.getElement()); |
boolean createCompte = (rowFactureOld.getForeignID("ID_FOURNISSEUR") != row.getForeignID("ID_FOURNISSEUR")); |
createCompte = createCompte || (rowFactureOld.getForeignID("ID_COMPTE_PCE") != row.getForeignID("ID_COMPTE_PCE")); |
createCompte = createCompte || rowFactureOld.getLong("T_TTC") != row.getLong("T_TTC"); |
createCompte = createCompte || rowFactureOld.getLong("T_TVA") != row.getLong("T_TVA"); |
createCompte = createCompte || rowFactureOld.getLong("T_HT") != row.getLong("T_HT"); |
if (!createCompte) { |
int a = JOptionPane.showConfirmDialog(null, "Voulez vous recréer la comptabilité ?", "Comptabilité", JOptionPane.YES_NO_OPTION); |
createCompte = a == JOptionPane.YES_OPTION; |
} |
if (createCompte) { |
int idMvt = (row.getObject("ID_MOUVEMENT") == null ? 1 : row.getInt("ID_MOUVEMENT")); |
System.err.println("__________***************** UPDATE" + idMvt); |
766,7 → 747,6 |
} else { |
new GenerationMvtFactureFournisseur(row); |
} |
} |
final FactureFournisseurXmlSheet sheet = new FactureFournisseurXmlSheet(row); |
sheet.createDocumentAsynchronous(); |
sheet.showPrintAndExportAsynchronous(this.panelOO.isVisualisationSelected(), this.panelOO.isImpressionSelected(), true); |
943,10 → 923,7 |
if (idFacture > 1) { |
SQLRow row = fact.getTable().getRow(idFacture); |
SQLRowValues rowVals = new SQLRowValues(fact.getTable()); |
rowVals.put("ID_FOURNISSEUR", row.getForeignID("ID_FOURNISSEUR")); |
if (!row.isForeignEmpty("ID_COMPTE_PCE")) { |
rowVals.put("ID_COMPTE_PCE", row.getForeignID("ID_COMPTE_PCE")); |
} |
rowVals.put("ID_FOURNISSEUR", row.getInt("ID_FOURNISSEUR")); |
// if (getTable().contains("ID_NUMEROTATION_AUTO")) { |
// rowVals.put("NUMERO", |
// NumerotationAutoSQLElement.getNextNumero(SaisieVenteFactureSQLElement.class, new |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/order/component/SaisieAchatSQLComponent.java |
---|
329,7 → 329,7 |
this.addSQLObject(this.comboAvoir, "ID_AVOIR_FOURNISSEUR"); |
this.addSQLObject(this.checkImmo, "IMMO"); |
this.montant.setChoixTaxe(TaxeCache.getCache().getFirstTaxeAchat().getID()); |
this.montant.setChoixTaxe(TaxeCache.getCache().getFirstTaxe().getID()); |
this.nomFournisseur.addModelListener("wantedID", this.listenerModeReglDefaut); |
496,7 → 496,7 |
} |
} |
vals.put("ID_COMPTE_PCE", idCompteAchat); |
vals.put("ID_TAXE", TaxeCache.getCache().getFirstTaxeAchat().getID()); |
vals.put("ID_TAXE", TaxeCache.getCache().getFirstTaxe().getID()); |
return vals; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/order/table/ChiffrageCommandeTable.java |
---|
65,25 → 65,12 |
final SQLTableElement tableElementNom = new SQLTableElement(e.getTable().getField("NOM")); |
list.add(tableElementNom); |
if (e.getTable().contains("ID_TYPE_CMD")) { |
final SQLTableElement cat = new SQLTableElement(e.getTable().getField("ID_TYPE_CMD")); |
list.add(cat); |
} |
if (e.getTable().contains("ID_CATEGORIE_HEURE")) { |
final SQLTableElement cat = new SQLTableElement(e.getTable().getField("ID_CATEGORIE_HEURE")); |
list.add(cat); |
} |
final SQLTableElement fam = new SQLTableElement(e.getTable().getField("ID_FAMILLE_ARTICLE")); |
list.add(fam); |
final SQLField fieldHA = e.getTable().getField("PA_HT"); |
final DeviseNumericCellEditor editorPAHT = new DeviseNumericCellEditor(fieldHA); |
final SQLTableElement pa = new SQLTableElement(fieldHA, BigDecimal.class, editorPAHT); |
pa.setRenderer(new DeviseTableCellRenderer()); |
if (e.getTable().contains("ID_CATEGORIE_HEURE")) { |
pa.setEditable(false); |
} |
list.add(pa); |
final SQLField fieldPV = e.getTable().getField("PV_HT"); |
101,28 → 88,6 |
qteU.setRenderer(new DeviseTableCellRenderer()); |
list.add(qteU); |
if (e.getTable().contains("ANT")) { |
SQLTableElement ant = new SQLTableElement(e.getTable().getField("ANT"), BigDecimal.class) { |
protected Object getDefaultNullValue() { |
return BigDecimal.ZERO; |
} |
}; |
ant.setRenderer(new DeviseTableCellRenderer()); |
list.add(ant); |
} |
if (e.getTable().contains("RESTANT")) { |
SQLTableElement restant = new SQLTableElement(e.getTable().getField("RESTANT"), BigDecimal.class) { |
protected Object getDefaultNullValue() { |
return BigDecimal.ZERO; |
} |
}; |
restant.setRenderer(new DeviseTableCellRenderer()); |
list.add(restant); |
} |
final SQLTableElement unit = new SQLTableElement(e.getTable().getField("ID_UNITE_VENTE")); |
list.add(unit); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/order/element/DemandeAchatItemSQLElement.java |
---|
107,7 → 107,7 |
SQLRowValues rowValsCmdElt = inj.createRowValuesFrom(row); |
rowValsCmdElt.put("ID_STYLE", idNormal); |
rowValsCmdElt.put("ID_MODE_VENTE_ARTICLE", ReferenceArticleSQLElement.A_LA_PIECE); |
rowValsCmdElt.put("ID_TAXE", TaxeCache.getCache().getFirstTaxeAchat().getID()); |
rowValsCmdElt.put("ID_TAXE", TaxeCache.getCache().getFirstTaxe().getID()); |
rowValsCmdElt.put("ID_DEMANDE_PRIX", rowVals); |
rowValsCmdElt.put("ID_DEMANDE_ACHAT_ELEMENT", row.getID()); |
if (row.getObject("ID_ARTICLE") != null && !row.isForeignEmpty("ID_ARTICLE")) { |
165,7 → 165,7 |
SQLRowValues rowValsCmdElt = inj.createRowValuesFrom(row); |
rowValsCmdElt.put("ID_STYLE", idNormal); |
rowValsCmdElt.put("ID_MODE_VENTE_ARTICLE", ReferenceArticleSQLElement.A_LA_PIECE); |
rowValsCmdElt.put("ID_TAXE", TaxeCache.getCache().getFirstTaxeAchat().getID()); |
rowValsCmdElt.put("ID_TAXE", TaxeCache.getCache().getFirstTaxe().getID()); |
rowValsCmdElt.put("ID_COMMANDE", rowVals); |
rowValsCmdElt.put("ID_DEMANDE_ACHAT_ELEMENT", row.getID()); |
if (row.getObject("ID_ARTICLE") != null && !row.isForeignEmpty("ID_ARTICLE")) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/order/element/FactureFournisseurSQLElement.java |
---|
19,27 → 19,17 |
import org.openconcerto.erp.generationDoc.gestcomm.FactureFournisseurXmlSheet; |
import org.openconcerto.erp.model.MouseSheetXmlListeListener; |
import org.openconcerto.sql.element.SQLComponent; |
import org.openconcerto.sql.model.FieldPath; |
import org.openconcerto.sql.model.SQLRowAccessor; |
import org.openconcerto.sql.model.graph.Path; |
import org.openconcerto.sql.view.EditFrame; |
import org.openconcerto.sql.view.EditPanel; |
import org.openconcerto.sql.view.list.BaseSQLTableModelColumn; |
import org.openconcerto.sql.view.list.IListe; |
import org.openconcerto.sql.view.list.IListeAction.IListeEvent; |
import org.openconcerto.sql.view.list.RowAction; |
import org.openconcerto.sql.view.list.SQLTableModelSource; |
import org.openconcerto.sql.view.list.IListeAction.IListeEvent; |
import org.openconcerto.sql.view.list.RowAction.PredicateRowAction; |
import org.openconcerto.ui.table.PercentTableCellRenderer; |
import org.openconcerto.utils.CollectionUtils; |
import org.openconcerto.utils.DecimalUtils; |
import org.openconcerto.utils.ListMap; |
import java.awt.event.ActionEvent; |
import java.math.BigDecimal; |
import java.math.RoundingMode; |
import java.util.ArrayList; |
import java.util.Collection; |
import java.util.HashSet; |
import java.util.List; |
import java.util.Set; |
92,7 → 82,6 |
l.add("T_HT"); |
l.add("T_TTC"); |
l.add("INFOS"); |
l.add("DATE_REGLEMENT"); |
return l; |
} |
111,58 → 100,6 |
return l; |
} |
@Override |
protected void _initTableSource(SQLTableModelSource res) { |
super._initTableSource(res); |
final BaseSQLTableModelColumn colAvancement = new BaseSQLTableModelColumn("Avancement réglement", BigDecimal.class) { |
@Override |
protected Object show_(SQLRowAccessor r) { |
return getAvancement(r); |
} |
@Override |
public Set<FieldPath> getPaths() { |
Path p = new Path(getTable()); |
p = p.add(getTable().getTable("ECHEANCE_FOURNISSEUR")); |
Path p2 = new Path(getTable()); |
p2 = p2.add(getTable().getField("ID_AVOIR_FOURNISSEUR")); |
return CollectionUtils.createSet(new FieldPath(p, "MONTANT"), new FieldPath(p, "REG_COMPTA"), new FieldPath(p, "REGLE"), new FieldPath(p2, "MONTANT_TTC")); |
} |
}; |
res.getColumns().add(colAvancement); |
colAvancement.setRenderer(new PercentTableCellRenderer()); |
} |
private BigDecimal getAvancement(SQLRowAccessor r) { |
Collection<? extends SQLRowAccessor> rows = r.getReferentRows(r.getTable().getTable("ECHEANCE_FOURNISSEUR")); |
long totalEch = 0; |
for (SQLRowAccessor row : rows) { |
if (!row.getBoolean("REGLE") && !row.getBoolean("REG_COMPTA")) { |
totalEch += row.getLong("MONTANT"); |
} |
} |
SQLRowAccessor avoir = r.getForeign("ID_AVOIR_FOURNISSEUR"); |
BigDecimal avoirTTC = BigDecimal.ZERO; |
if (avoir != null && !avoir.isUndefined()) { |
avoirTTC = new BigDecimal(avoir.getLong("MONTANT_TTC")); |
} |
final BigDecimal totalAregler = new BigDecimal(r.getLong("T_TTC")).subtract(avoirTTC); |
if (totalAregler.signum() > 0 && totalEch > 0) { |
return totalAregler.subtract(new BigDecimal(totalEch)).divide(totalAregler, DecimalUtils.HIGH_PRECISION).movePointRight(2).setScale(2, RoundingMode.HALF_UP); |
} else { |
return BigDecimal.ONE.movePointRight(2); |
} |
} |
/* |
* (non-Javadoc) |
* |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/order/action/ListeDesFacturesFournisseurAction.java |
---|
17,17 → 17,12 |
import org.openconcerto.erp.core.common.ui.IListFilterDatePanel; |
import org.openconcerto.erp.core.common.ui.IListTotalPanel; |
import org.openconcerto.erp.core.finance.accounting.ui.ListeGestCommEltPanel; |
import org.openconcerto.erp.core.sales.invoice.ui.DateEnvoiRenderer; |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.element.SQLElement; |
import org.openconcerto.sql.model.SQLField; |
import org.openconcerto.sql.view.IListFrame; |
import org.openconcerto.sql.view.list.IListe; |
import org.openconcerto.sql.view.list.SQLTableModelColumn; |
import org.openconcerto.sql.view.list.SQLTableModelColumnPath; |
import org.openconcerto.sql.view.list.SQLTableModelSource; |
import org.openconcerto.ui.DefaultGridBagConstraints; |
import org.openconcerto.utils.cc.IClosure; |
import java.awt.GridBagConstraints; |
import java.util.Arrays; |
36,7 → 31,6 |
import javax.swing.Action; |
import javax.swing.JFrame; |
import javax.swing.table.TableColumn; |
public class ListeDesFacturesFournisseurAction extends CreateFrameAbstractAction { |
50,31 → 44,6 |
ListeGestCommEltPanel panel = new ListeGestCommEltPanel(element); |
panel.setAddVisible(true); |
IListFrame frame = new IListFrame(panel); |
panel.getListe().setModificationAllowed(true); |
SQLTableModelSource src = panel.getListe().getSource(); |
for (SQLTableModelColumn column : src.getColumns()) { |
if (column.getClass().isAssignableFrom(SQLTableModelColumnPath.class)) { |
((SQLTableModelColumnPath) column).setEditable(false); |
} |
} |
final SQLTableModelColumn dateReglCol = src.getColumn(element.getTable().getField("DATE_REGLEMENT")); |
// Edition des dates de reglement |
if (dateReglCol != null) { |
((SQLTableModelColumnPath) dateReglCol).setEditable(true); |
dateReglCol.setColumnInstaller(new IClosure<TableColumn>() { |
@Override |
public void executeChecked(TableColumn columnDateReglement) { |
final org.openconcerto.ui.table.TimestampTableCellEditor cellEditor = new org.openconcerto.ui.table.TimestampTableCellEditor(); |
cellEditor.setAllowNull(true); |
columnDateReglement.setCellEditor(cellEditor); |
columnDateReglement.setCellRenderer(new DateEnvoiRenderer()); |
} |
}); |
} |
IListTotalPanel total = new IListTotalPanel(frame.getPanel().getListe(), Arrays.asList(element.getTable().getField("T_HT"), element.getTable().getField("T_TTC"))); |
GridBagConstraints c = new DefaultGridBagConstraints(); |
c.gridy = 3; |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/receipt/element/BonReceptionElementSQLElement.java |
---|
37,7 → 37,7 |
protected List<String> getListFields() { |
final List<String> l = new ArrayList<String>(); |
l.add("ID_BON_RECEPTION"); |
l.add("ID_STYLE"); |
l.add("CODE"); |
l.add("NOM"); |
l.add("PA_HT"); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/stock/element/ImportInventairePanel.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/stock/element/EtatStockSQLElement.java |
---|
19,8 → 19,11 |
import org.openconcerto.sql.element.GroupSQLComponent; |
import org.openconcerto.sql.element.SQLComponent; |
import org.openconcerto.sql.element.SQLElement; |
import org.openconcerto.sql.model.ConnectionHandlerNoSetup; |
import org.openconcerto.sql.model.SQLDataSource; |
import org.openconcerto.sql.model.SQLRowAccessor; |
import org.openconcerto.sql.model.Where; |
import org.openconcerto.sql.utils.SQLUtils; |
import org.openconcerto.sql.view.IListFrame; |
import org.openconcerto.sql.view.list.IListe; |
import org.openconcerto.sql.view.list.IListeAction.IListeEvent; |
27,10 → 30,16 |
import org.openconcerto.sql.view.list.RowAction.PredicateRowAction; |
import org.openconcerto.sql.view.list.SQLTableModelSource; |
import org.openconcerto.ui.FrameUtil; |
import org.openconcerto.ui.PanelFrame; |
import org.openconcerto.ui.SwingThreadUtils; |
import org.openconcerto.utils.ExceptionHandler; |
import java.awt.Component; |
import java.awt.FileDialog; |
import java.awt.Frame; |
import java.awt.event.ActionEvent; |
import java.io.File; |
import java.io.IOException; |
import java.sql.SQLException; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.List; |
37,6 → 46,7 |
import javax.swing.AbstractAction; |
import javax.swing.JComponent; |
import javax.swing.JOptionPane; |
import javax.swing.JTextField; |
public class EtatStockSQLElement extends ComptaSQLConfElement { |
49,7 → 59,7 |
@Override |
public void actionPerformed(ActionEvent e) { |
EtatStockSnapshotCreator creator = new EtatStockSnapshotCreator(getTable().getTable("DEPOT_STOCK").getRow(DepotStockSQLElement.DEFAULT_ID), new Date(), getTable().getDBRoot()); |
EtatStockSnapshotCreator creator = new EtatStockSnapshotCreator(new Date(), getTable().getDBRoot()); |
creator.create(); |
} |
}, true); |
93,9 → 103,39 |
PredicateRowAction action = new PredicateRowAction(new AbstractAction("Import Inventaire") { |
@Override |
public void actionPerformed(ActionEvent e) { |
PanelFrame frame = new PanelFrame(new ImportInventairePanel(getDirectory().getElement(DepotStockSQLElement.class)), "Import inventaire"); |
FrameUtil.showPacked(frame); |
final Frame frame = SwingThreadUtils.getAncestorOrSelf(Frame.class, (Component) e.getSource()); |
final FileDialog fd = new FileDialog(frame, "Import Inventaire", FileDialog.LOAD); |
fd.setVisible(true); |
if (fd.getFile() != null) { |
final File f = new File(fd.getDirectory(), fd.getFile()); |
if (!f.exists()) { |
JOptionPane.showMessageDialog(null, "Le ficher selectionné n'existe pas", "Erreur", JOptionPane.ERROR_MESSAGE); |
} else if (f.isDirectory()) { |
JOptionPane.showMessageDialog(null, "Le fichier selectionné n'est pas valide", "Erreur", JOptionPane.ERROR_MESSAGE); |
} else { |
new Thread(new Runnable() { |
@Override |
public void run() { |
final InventaireFromEtatStockImporter impoter = new InventaireFromEtatStockImporter(); |
try { |
SQLUtils.executeAtomic(getTable().getDBSystemRoot().getDataSource(), new ConnectionHandlerNoSetup<Object, IOException>() { |
@Override |
public Object handle(final SQLDataSource ds) throws SQLException, IOException { |
impoter.importArticles(f, getTable().getDBRoot()); |
return null; |
} |
}); |
} catch (Exception e1) { |
ExceptionHandler.handle("Erreur lors de l'importation", e1); |
} |
} |
}).start(); |
} |
} |
} |
}, true); |
action.setPredicate(IListeEvent.getSingleSelectionPredicate()); |
getRowActions().add(action); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/stock/element/InventaireFromEtatStockImporter.java |
---|
27,7 → 27,6 |
import org.openconcerto.sql.model.SQLRowValuesListFetcher; |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.utils.SQLUtils; |
import org.openconcerto.utils.Tuple2; |
import java.io.File; |
import java.io.IOException; |
46,12 → 45,11 |
public class InventaireFromEtatStockImporter { |
private Map<String, SQLRowValues> kits = new HashMap<String, SQLRowValues>(); |
private List<String> codeKits = new ArrayList<String>(); |
private SQLRowAccessor depot; |
Map<String, SQLRowValues> kits = new HashMap<String, SQLRowValues>(); |
List<String> codeKits = new ArrayList<String>(); |
public InventaireFromEtatStockImporter(SQLRowAccessor depot) { |
this.depot = depot; |
public InventaireFromEtatStockImporter() { |
} |
public void importArticles(File file, DBRoot root) throws IOException, SQLException { |
59,7 → 57,7 |
final SQLTable table = root.findTable("ARTICLE"); |
final SQLTable tableArtElt = root.findTable("ARTICLE_ELEMENT"); |
Map<String, Tuple2<SQLRowValues, SQLRowValues>> articles = getArticles(); |
Map<String, SQLRowValues> articles = getArticles(); |
final DataImporter importer = new DataImporter(table) { |
@Override |
83,7 → 81,6 |
SQLRowValues rowVals = new SQLRowValues(table.getTable("ETAT_STOCK")); |
rowVals.put("DATE", today); |
rowVals.put("INVENTAIRE", Boolean.TRUE); |
rowVals.put("ID_DEPOT_STOCK", this.depot.getID()); |
SQLRow rowEtat = rowVals.commit(); |
for (int i = 1; i < m.getRowCount(); i++) { |
98,21 → 95,21 |
final String stringQtyOld = o.get(3).toString(); |
float qtyOld = stringQtyOld.trim().length() == 0 ? 0 : Float.valueOf(stringQtyOld); |
Tuple2<SQLRowValues, SQLRowValues> match = articles.get(code); |
SQLRowValues match = articles.get(code); |
if (match != null) { |
SQLRowAccessor stockValues = match.get1(); |
SQLRowAccessor stockValues = match.getForeign("ID_STOCK"); |
final SQLTable tableMvt = table.getTable("MOUVEMENT_STOCK"); |
SQLRowValues rowValsMvtStockClotureFermeture = new SQLRowValues(tableMvt); |
rowValsMvtStockClotureFermeture.put("QTE", -qtyOld); |
rowValsMvtStockClotureFermeture.put("NOM", "Clôture stock avant inventaire"); |
rowValsMvtStockClotureFermeture.put("ID_ARTICLE", match.get0().getID()); |
rowValsMvtStockClotureFermeture.put("ID_ARTICLE", match.getID()); |
rowValsMvtStockClotureFermeture.put("DATE", today); |
rowValsMvtStockClotureFermeture.put("REEL", Boolean.TRUE); |
rowValsMvtStockClotureFermeture.put("ID_STOCK", stockValues.getID()); |
BigDecimal prc = getPRC(match.get0(), Math.round(qtyOld), today); |
BigDecimal prc = getPRC(match, Math.round(qtyOld), today); |
if (prc == null) { |
prc = BigDecimal.ZERO; |
} |
130,9 → 127,9 |
rowValsItem.put("QTE", qtyOld); |
rowValsItem.put("T_PA", prc.multiply(new BigDecimal(qtyOld))); |
rowValsItem.put("T_PV", BigDecimal.ZERO); |
rowValsItem.put("CODE", match.get0().getString("CODE")); |
rowValsItem.put("NOM", match.get0().getString("NOM")); |
rowValsItem.put("ID_ARTICLE", match.get0().getID()); |
rowValsItem.put("CODE", match.getString("CODE")); |
rowValsItem.put("NOM", match.getString("NOM")); |
rowValsItem.put("ID_ARTICLE", match.getID()); |
rowValsItem.getGraph().store(StoreMode.COMMIT, false); |
SQLRowValues rowValsMvtStockClotureOuverture = new SQLRowValues(tableMvt); |
139,25 → 136,24 |
rowValsMvtStockClotureOuverture.put("QTE", qty); |
rowValsMvtStockClotureOuverture.put("NOM", "Mise en stock inventaire"); |
rowValsMvtStockClotureOuverture.put("ID_ETAT_STOCK", rowEtat.getID()); |
rowValsMvtStockClotureOuverture.put("ID_ARTICLE", match.get0().getID()); |
rowValsMvtStockClotureOuverture.put("ID_ARTICLE", match.getID()); |
rowValsMvtStockClotureOuverture.put("DATE", today); |
rowValsMvtStockClotureOuverture.put("REEL", Boolean.TRUE); |
rowValsMvtStockClotureOuverture.put("ID_STOCK", stockValues.getID()); |
rowValsMvtStockClotureOuverture.put("OUVERTURE", Boolean.TRUE); |
if (tableMvt.contains("PRICE")) { |
rowValsMvtStockClotureOuverture.put("PRICE", getPRC(match.get0(), qty.intValue(), today)); |
rowValsMvtStockClotureOuverture.put("PRICE", getPRC(match, qty.intValue(), today)); |
} |
rowValsMvtStockClotureOuverture.getGraph().store(StoreMode.COMMIT, false); |
// if (!match.isForeignEmpty("ID_STOCK")) { |
// match.getForeign("ID_STOCK").createEmptyUpdateRow().put("QTE_REEL", |
// qty).commit(); |
// } else { |
final SQLRowValues createEmptyUpdateRow = match.get1().createEmptyUpdateRow(); |
createEmptyUpdateRow.put("QTE_REEL", qty); |
if (!match.isForeignEmpty("ID_STOCK")) { |
match.getForeign("ID_STOCK").createEmptyUpdateRow().put("QTE_REEL", qty).commit(); |
} else { |
final SQLRowValues createEmptyUpdateRow = match.createEmptyUpdateRow(); |
createEmptyUpdateRow.putRowValues("ID_STOCK").put("QTE_REEL", qty); |
createEmptyUpdateRow.getGraph().store(StoreMode.COMMIT, false); |
// } |
} |
} else { |
System.err.println("Aucun article correspondant au code " + code); |
309,7 → 305,7 |
// return result; |
} |
private Map<String, Tuple2<SQLRowValues, SQLRowValues>> getArticles() throws SQLException { |
private Map<String, SQLRowValues> getArticles() throws SQLException { |
final SQLTable table = Configuration.getInstance().getRoot().findTable("ARTICLE"); |
SQLRowValues graph = new SQLRowValues(table); |
graph.put("ID", null); |
316,10 → 312,7 |
graph.put("CODE", null); |
graph.put("NOM", null); |
graph.put("NOM", null); |
final SQLTable foreignTableStock = table.getForeignTable("ID_STOCK"); |
SQLRowValues graphStock = new SQLRowValues(foreignTableStock); |
graphStock.putNulls("ID_DEPOT_STOCK", "ID", "QTE_REEL", "QTE_TH", "QTE_LIV_ATTENTE", "QTE_RECEPT_ATTENTE"); |
graphStock.put("ID_ARTICLE", graph); |
graph.putRowValues("ID_STOCK").putNulls("ID_DEPOT_STOCK", "ID", "QTE_REEL", "QTE_TH", "QTE_LIV_ATTENTE", "QTE_RECEPT_ATTENTE"); |
final SQLTable tableArtElt = table.getTable("ARTICLE_ELEMENT"); |
SQLRowValues artElt = new SQLRowValues(tableArtElt); |
327,11 → 320,7 |
artElt.put("QTE", null); |
artElt.put("QTE_UNITAIRE", null); |
artElt.put("ID_ARTICLE_PARENT", graph); |
final SQLRowValues articleParent = artElt.putRowValues("ID_ARTICLE"); |
articleParent.putNulls("ID", "CODE", "NOM"); |
SQLRowValues graphStockItem = new SQLRowValues(foreignTableStock); |
graphStockItem.putNulls("ID_DEPOT_STOCK", "ID", "QTE_REEL", "QTE_TH", "QTE_LIV_ATTENTE", "QTE_RECEPT_ATTENTE"); |
graphStockItem.put("ID_ARTICLE", articleParent); |
artElt.putRowValues("ID_ARTICLE").putNulls("ID", "CODE", "NOM").putRowValues("ID_STOCK").putNulls("ID_DEPOT_STOCK", "QTE_TH", "QTE_REEL", "QTE_LIV_ATTENTE", "QTE_RECEPT_ATTENTE"); |
SQLRowValuesListFetcher fetcher = SQLRowValuesListFetcher.create(graph); |
List<SQLRowValues> results = fetcher.fetch(); |
342,24 → 331,11 |
c.set(Calendar.DAY_OF_MONTH, 31); |
Date dEndYear = c.getTime(); |
Map<String, Tuple2<SQLRowValues, SQLRowValues>> vals = new HashMap<String, Tuple2<SQLRowValues, SQLRowValues>>(); |
Map<String, SQLRowValues> vals = new HashMap<String, SQLRowValues>(); |
for (SQLRowValues sqlRowValues : results) { |
final String code = sqlRowValues.getString("CODE"); |
vals.put(code, sqlRowValues); |
Collection<SQLRowValues> stocks = sqlRowValues.getReferentRows(foreignTableStock); |
SQLRowValues rowValsStock = null; |
for (SQLRowValues sqlRowValues2 : stocks) { |
if (sqlRowValues2.getForeignID("ID_DEPOT_STOCK") == depot.getID()) { |
rowValsStock = sqlRowValues2; |
} |
} |
if (rowValsStock == null) { |
rowValsStock = ProductComponent.findOrCreateStock(sqlRowValues, depot).asRowValues(); |
} |
vals.put(code, Tuple2.create(sqlRowValues, rowValsStock)); |
final Set<SQLRowValues> referentRows = sqlRowValues.getReferentRows(tableArtElt.getField("ID_ARTICLE_PARENT")); |
if (referentRows.size() == 0) { |
// if (!sqlRowValues.isForeignEmpty("ID_STOCK")) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/supplychain/stock/element/EtatStockSnapshotCreator.java |
---|
15,7 → 15,6 |
import org.openconcerto.sql.model.DBRoot; |
import org.openconcerto.sql.model.SQLRow; |
import org.openconcerto.sql.model.SQLRowAccessor; |
import org.openconcerto.sql.model.SQLRowListRSH; |
import org.openconcerto.sql.model.SQLRowValues; |
import org.openconcerto.sql.model.SQLRowValuesListFetcher; |
28,6 → 27,7 |
import java.math.BigDecimal; |
import java.sql.SQLException; |
import java.util.Calendar; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.List; |
37,11 → 37,9 |
private final Date d; |
private final DBRoot root; |
private final SQLRowAccessor depot; |
public EtatStockSnapshotCreator(SQLRowAccessor depot, Date d, DBRoot root) { |
public EtatStockSnapshotCreator(Date d, DBRoot root) { |
this.d = d; |
this.depot = depot; |
this.root = root; |
} |
51,19 → 49,15 |
SQLSelect sel = new SQLSelect(); |
sel.addSelectStar(tableEtatStock); |
Where wEtat = new Where(tableEtatStock.getField("INVENTAIRE"), "=", Boolean.TRUE); |
wEtat = wEtat.and(new Where(tableEtatStock.getField("ID_DEPOT_STOCK"), "=", this.depot.getID())); |
sel.setWhere(wEtat); |
List<SQLRow> rowsEtatStock = SQLRowListRSH.execute(sel); |
Map<Integer, Integer> mapEtatStock = new HashMap<Integer, Integer>(); |
for (SQLRow sqlRow : rowsEtatStock) { |
SQLTable tableMvtStock = this.root.getTable("MOUVEMENT_STOCK"); |
SQLTable tableStock = this.root.getTable("STOCK"); |
SQLSelect selMvt = new SQLSelect(); |
selMvt.addSelect(tableMvtStock.getKey(), "MIN"); |
Where wMvt = new Where(tableMvtStock.getField("OUVERTURE"), "=", Boolean.TRUE); |
wMvt = wMvt.and(new Where(tableMvtStock.getField("ID_ETAT_STOCK"), "=", sqlRow.getID())); |
wMvt = wMvt.and(new Where(tableMvtStock.getField("ID_STOCK"), "=", tableStock.getKey())); |
wMvt = wMvt.and(new Where(tableStock.getField("ID_DEPOT_STOCK"), "=", depot.getID())); |
wMvt = new Where(tableMvtStock.getField("ID_ETAT_STOCK"), "=", sqlRow.getID()); |
selMvt.setWhere(wMvt); |
Integer idMvt = (Integer) tableMvtStock.getDBSystemRoot().getDataSource().executeScalar(selMvt.asString()); |
if (idMvt != null) { |
82,8 → 76,6 |
vals.put("PRICE", null); |
} |
vals.put("ID_ARTICLE", null); |
vals.putRowValues("ID_STOCK").putNulls("QTE_REEL").putRowValues("ID_DEPOT_STOCK").putNulls("ID", "NOM", "CODE"); |
// Calendar cal0116 = Calendar.getInstance(); |
// cal0116.set(2016, Calendar.JANUARY, 1, 0, 0, 0); |
// final Date dateDeb = cal0116.getTime(); |
92,7 → 84,6 |
SQLSelect selEtatD = new SQLSelect(); |
selEtatD.addSelectStar(tableEtatStock); |
Where wEtatD = new Where(tableEtatStock.getField("INVENTAIRE"), "=", Boolean.TRUE); |
wEtatD = wEtatD.and(new Where(tableEtatStock.getField("ID_DEPOT_STOCK"), "=", this.depot.getID())); |
selEtatD.setWhere(wEtatD); |
List<SQLRow> rowsEtatStockD = SQLRowListRSH.execute(selEtatD); |
SQLRow rowEtatStockDeb = null; |
129,7 → 120,6 |
w = w.and(new Where(tableStock.getField("CLOTURE"), "!=", Boolean.TRUE)); |
} |
w = w.and(new Where(tableStock.getField("REEL"), "=", Boolean.TRUE)); |
w = w.and(new Where(sel.getJoin(tableStock.getField("ID_STOCK")).getJoinedTable().getField("ID_DEPOT_STOCK"), "=", depot.getID())); |
sel.setWhere(w); |
return sel; |
160,7 → 150,6 |
SQLRowValues rowVals = new SQLRowValues(tableEtatStock); |
rowVals.put("DATE", d); |
rowVals.put("MONTANT_HA", totalHT); |
rowVals.put("ID_DEPOT_STOCK", depot.getID()); |
for (EtatStock etatItem : mapStockSnap.values()) { |
SQLRowValues rowValsItem = new SQLRowValues(tableEtatStock.getTable("ETAT_STOCK_ELEMENT")); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/customerrelationship/customer/element/CustomerGroup.java |
---|
75,7 → 75,6 |
gPayment.addItem("BIC", LayoutHints.DEFAULT_FIELD_HINTS); |
gPayment.addItem("ID_MODE_REGLEMENT", new LayoutHints(true, true, true, true, true, false, true, true)); |
gPayment.addItem("ID_COMPTE_PCE"); |
gPayment.addItem("ID_SEPA_MANDATE_DEFAULT"); |
gPayment.addItem("ENCOURS_MAX"); |
gPayment.addItem("ID_COMPTE_PCE_PRODUIT"); |
gPayment.addItem("ID_COMPTE_PCE_SERVICE"); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/customerrelationship/customer/element/CustomerSQLComponent.java |
---|
16,10 → 16,8 |
import org.openconcerto.erp.core.common.component.AdresseSQLComponent; |
import org.openconcerto.erp.core.common.element.NumerotationAutoSQLElement; |
import org.openconcerto.erp.core.customerrelationship.customer.ui.AdresseClientItemTable; |
import org.openconcerto.erp.core.finance.accounting.element.ComptePCESQLElement; |
import org.openconcerto.erp.core.sales.product.element.ClientCodeArticleTable; |
import org.openconcerto.erp.core.sales.product.ui.CustomerProductQtyPriceListTable; |
import org.openconcerto.erp.preferences.GestionCommercialeGlobalPreferencePanel; |
import org.openconcerto.erp.preferences.ModeReglementDefautPrefPanel; |
import org.openconcerto.erp.utils.TM; |
import org.openconcerto.sql.Configuration; |
29,11 → 27,8 |
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.UndefinedRowValuesCache; |
import org.openconcerto.sql.model.Where; |
import org.openconcerto.sql.preferences.SQLPreferences; |
import org.openconcerto.sql.sqlobject.JUniqueTextField; |
import org.openconcerto.sql.sqlobject.SQLSearchableTextCombo; |
import org.openconcerto.sql.ui.textmenu.TextFieldWithMenu; |
54,7 → 49,6 |
import java.awt.Component; |
import java.awt.Dimension; |
import java.awt.Font; |
import java.awt.GridBagConstraints; |
import java.awt.GridBagLayout; |
import java.awt.event.ActionEvent; |
76,6 → 70,8 |
import javax.swing.event.DocumentEvent; |
import javax.swing.event.DocumentListener; |
import com.lowagie.text.Font; |
public class CustomerSQLComponent extends GroupSQLComponent { |
private ContactItemTable table; |
private ClientCodeArticleTable tableCustomProduct; |
330,48 → 326,9 |
}); |
} |
} |
SQLPreferences prefs = new SQLPreferences(getTable().getDBRoot()); |
if (prefs.getBoolean(GestionCommercialeGlobalPreferencePanel.COMPTE_CLIENT_AUTO, Boolean.FALSE)) { |
createCompteClientFromCodeAuto(id); |
} |
return id; |
} |
private void createCompteClientFromCodeAuto(int idClient) { |
final SQLRow rowClient = getTable().getRow(idClient); |
if (rowClient.isForeignEmpty("ID_COMPTE_PCE")) { |
SQLRowValues rowVals = rowClient.createEmptyUpdateRow(); |
final String text = rowClient.getString("CODE"); |
String compte = "411" + text; |
SQLTable table = getTable().getForeignTable("ID_COMPTE_PCE"); |
SQLSelect selCompte = new SQLSelect(); |
selCompte.addSelectFunctionStar("COUNT"); |
selCompte.setArchivedPolicy(SQLSelect.BOTH); |
selCompte.setWhere(new Where(table.getField("NUMERO"), "LIKE", compte + "%")); |
System.err.println(selCompte.asString()); |
Object o = getTable().getDBRoot().getDBSystemRoot().getDataSource().executeScalar(selCompte.asString()); |
int nb = 0; |
if (o != null) { |
Long i = (Long) o; |
nb = i.intValue(); |
} |
if (nb > 0) { |
compte = compte + nb; |
} |
int idCpt = ComptePCESQLElement.getId(compte, rowClient.getString("NOM")); |
rowVals.put("ID_COMPTE_PCE", idCpt); |
try { |
rowVals.update(); |
} catch (SQLException e) { |
e.printStackTrace(); |
} |
} |
} |
private JComponent createAdressesComponent() { |
final JTabbedPane tabbedAdresse = new JTabbedPane() { |
public void insertTab(String title, Icon icon, Component component, String tip, int index) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/customerrelationship/mail/EmailTemplate.java |
---|
24,7 → 24,6 |
import java.awt.Container; |
import java.awt.Dimension; |
import java.awt.FlowLayout; |
import java.awt.Font; |
import java.awt.Frame; |
import java.awt.event.ActionEvent; |
import java.awt.event.ActionListener; |
43,6 → 42,8 |
import javax.swing.ListSelectionModel; |
import javax.swing.SwingUtilities; |
import com.lowagie.text.Font; |
public class EmailTemplate { |
private String name; |
private String title; |
136,7 → 137,7 |
if (t.isDefault) { |
l.setFont(l.getFont().deriveFont(Font.BOLD)); |
} else { |
l.setFont(l.getFont().deriveFont(Font.PLAIN)); |
l.setFont(l.getFont().deriveFont(Font.NORMAL)); |
} |
return l; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/customerrelationship/mail/EmailTemplateSQLComponent.java |
---|
25,7 → 25,7 |
@Override |
protected SQLRowValues createDefaults() { |
final SQLRowValues defaultValues = new SQLRowValues(getTable()); |
final SQLRowValues defaultValues = super.createDefaults(); |
defaultValues.put("FORMAT_DATE", "dd/MM/yyyy"); |
return defaultValues; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/element/SaisieKmSQLElement.java |
---|
15,7 → 15,6 |
import org.openconcerto.erp.config.ComptaPropsConfiguration; |
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement; |
import org.openconcerto.erp.core.finance.accounting.ui.AnalytiqueItemTable; |
import org.openconcerto.erp.core.finance.accounting.ui.SaisieKmItemTable; |
import org.openconcerto.erp.generationEcritures.GenerationMvtSaisieKm; |
import org.openconcerto.sql.Configuration; |
115,7 → 114,6 |
SQLTable ecrTable = base.getTable("ECRITURE"); |
SQLTable compteTable = base.getTable("COMPTE_PCE"); |
SQLTable saisieKmTable = base.getTable("SAISIE_KM_ELEMENT"); |
SQLTable assocTable = base.getTable("ASSOCIATION_ANALYTIQUE"); |
SQLRowValues vals = new SQLRowValues(base.getTable("SAISIE_KM")); |
vals.put("ID_MOUVEMENT", new Integer(idMvt)); |
154,18 → 152,9 |
valsTmp.put("DEBIT", rowEcrTmp.getObject("DEBIT")); |
valsTmp.put("CREDIT", rowEcrTmp.getObject("CREDIT")); |
valsTmp.put("ID_ECRITURE", new Integer(rowEcrTmp.getID())); |
List<SQLRow> assocRows = rowEcrTmp.getReferentRows(assocTable); |
if (assocRows.size() > 0) { |
for (int a = 0; a < assocRows.size(); a++) { |
assocRows.get(a).createUpdateRow().put("ID_SAISIE_KM_ELEMENT", valsTmp); |
valsTmp.insert(); |
} |
valsTmp.put("ANALYTIQUE", AnalytiqueItemTable.getStringAssocs(valsTmp)); |
} |
valsTmp.commit(); |
} |
Object[] objTmp = (Object[]) myListEcriture.get(0); |
SQLRow rowEcrTmp = ecrTable.getRow(Integer.parseInt(objTmp[0].toString())); |
vals.put("NOM", rowEcrTmp.getString("NOM")); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/element/EcritureSQLElement.java |
---|
20,7 → 20,6 |
import org.openconcerto.erp.core.edm.AttachmentAction; |
import org.openconcerto.erp.core.finance.accounting.ui.AssociationAnalytiquePanel; |
import org.openconcerto.erp.core.finance.accounting.ui.ConsultationCompteFrame; |
import org.openconcerto.erp.core.finance.accounting.ui.LettragePanel; |
import org.openconcerto.erp.core.finance.accounting.ui.LettrageRenderer; |
import org.openconcerto.erp.core.finance.accounting.ui.ListEcritureRenderer; |
import org.openconcerto.erp.core.finance.accounting.ui.ListeDesEcrituresPanel; |
101,18 → 100,6 |
consult.setPredicate(IListeEvent.getSingleSelectionPredicate()); |
getRowActions().add(consult); |
PredicateRowAction interrogation = new PredicateRowAction(new AbstractAction("Interrogation du compte") { |
public void actionPerformed(ActionEvent event) { |
SQLRowAccessor row = IListe.get(event).getSelectedRow(); |
PanelFrame f = new PanelFrame(new LettragePanel(row.getForeignID("ID_COMPTE_PCE")), "Lettrage manuel par compte"); |
f.setVisible(true); |
} |
}, false); |
interrogation.setPredicate(IListeEvent.getSingleSelectionPredicate()); |
getRowActions().add(interrogation); |
PredicateRowAction contre = new PredicateRowAction(new AbstractAction("Contrepassation") { |
public void actionPerformed(ActionEvent event) { |
EcritureSQLElement.contrePassationPiece(IListe.get(event).getSelectedId()); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/report/BalanceSheet.java |
---|
14,12 → 14,10 |
package org.openconcerto.erp.core.finance.accounting.report; |
import org.openconcerto.erp.config.ComptaPropsConfiguration; |
import org.openconcerto.erp.element.objet.Compte; |
import org.openconcerto.erp.generationDoc.DocumentLocalStorageManager; |
import org.openconcerto.erp.generationDoc.SheetInterface; |
import org.openconcerto.erp.preferences.PrinterNXProps; |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.model.SQLBase; |
import org.openconcerto.sql.model.SQLRow; |
import org.openconcerto.sql.model.SQLRowListRSH; |
import org.openconcerto.sql.model.SQLSelect; |
28,7 → 26,6 |
import org.openconcerto.utils.GestionDevise; |
import java.text.DateFormat; |
import java.util.ArrayList; |
import java.util.Calendar; |
import java.util.Date; |
import java.util.HashMap; |
70,7 → 67,7 |
return TEMPLATE_ID; |
} |
public BalanceSheet(Date du, Date au, String compteDeb, String compteEnd, boolean centralClient, boolean centralFourn, boolean centralFournImmo, boolean displayAll) { |
public BalanceSheet(Date du, Date au, String compteDeb, String compteEnd, boolean centralClient, boolean centralFourn, boolean centralFournImmo) { |
super(); |
Calendar cal = Calendar.getInstance(); |
87,7 → 84,7 |
// this.locationPDF = storage.getPDFOutputDirectory(TEMPLATE_ID); |
this.dateAu = au; |
this.dateDu = du; |
this.viewMode = displayAll; |
this.compteDeb = compteDeb; |
this.compteEnd = compteEnd; |
this.centralClient = centralClient; |
124,124 → 121,8 |
this.mapStyleRow.put(new Integer(row), "Titre 1"); |
} |
private boolean viewMode = true; |
protected void createMap() { |
int posLine = 1; |
int firstLine = 1; |
this.nbPage = 0; |
long totalDebit, totalCredit, sousTotalDebit, sousTotalCredit; |
totalDebit = 0; |
totalCredit = 0; |
sousTotalDebit = 0; |
sousTotalCredit = 0; |
long totalDebitClient = 0; |
long totalCreditClient = 0; |
long totalDebitFourn = 0; |
long totalCreditFourn = 0; |
long totalDebitFournImmo = 0; |
long totalCreditFournImmo = 0; |
String numCptClient = "411"; |
String nomCptClient = "Clients"; |
String numCptFourn = "401"; |
String nomCptFourn = "Fournisseurs"; |
String numCptFournImmo = "404"; |
String nomCptFournImmo = "Fournisseurs d'immobilisations"; |
boolean addedLine = false; |
boolean addedLineImmo = false; |
boolean addedLineFourn = false; |
int j = 0; |
String classe = ""; |
if (viewMode) { |
getBalance(); |
for (int i = 0; i < this.vecteurCompte.size();) { |
System.err.println("START NEW PAGE; POS : " + posLine); |
/*************************************************************************************** |
* ENTETE |
**************************************************************************************/ |
makeEntete(posLine); |
posLine += debutFill - 1; |
/*************************************************************************************** |
* CONTENU |
**************************************************************************************/ |
for (j = 0; (j < endFill - debutFill + 1) && i < this.vecteurCompte.size(); j++) { |
Compte compte = this.vecteurCompte.get(i); |
String numeroCpt = compte.getNumero(); |
String nomCpt = compte.getNom(); |
long deb = compte.getTotalDebit(); |
long cred = compte.getTotalCredit(); |
totalCredit += cred; |
sousTotalCredit += cred; |
totalDebit += deb; |
sousTotalDebit += deb; |
this.mCell.put("A" + posLine, numeroCpt); |
this.mCell.put("B" + posLine, nomCpt); |
this.mCell.put("C" + posLine, new Double(GestionDevise.currencyToString(deb, false))); |
this.mCell.put("D" + posLine, new Double(GestionDevise.currencyToString(cred, false))); |
this.mCell.put("E" + posLine, new Double(GestionDevise.currencyToString(deb - cred, false))); |
if (compte.getSousCompte().isEmpty()) { |
this.mapStyleRow.put(new Integer(posLine), "Normal"); |
} else { |
this.mapStyleRow.put(new Integer(posLine), "Titre 1"); |
} |
i++; |
posLine++; |
} |
if (i >= this.vecteurCompte.size() && j < endFill - debutFill + 1) { |
makeSousTotalClasse(posLine, sousTotalDebit, sousTotalCredit, classe); |
} |
posLine = firstLine + endFill; |
/* |
* if (this.mapStyleRow.get(new Integer(posLine - 1)) != null) { |
* this.mapStyleRow.put(new Integer(posLine - 1), "Titre 2"); } |
*/ |
// Total |
this.mCell.put("C" + posLine, ((totalDebit == 0) ? new Double(0) : new Double(GestionDevise.currencyToString(totalDebit, false)))); |
this.mCell.put("D" + posLine, ((totalCredit == 0) ? new Double(0) : new Double(GestionDevise.currencyToString(totalCredit, false)))); |
this.mCell.put("E" + posLine, (totalDebit - totalCredit == 0) ? new Double(0) : new Double(GestionDevise.currencyToString(totalDebit - totalCredit, false))); |
posLine += 2; |
// bas de page |
makePiedPage(posLine); |
posLine++; |
firstLine = posLine; |
this.nbPage++; |
// if (i >= this.vecteurCompte.size() && j >= (endFill - debutFill + 1)) { |
// |
// makeEntete(posLine); |
// posLine += debutFill - 1; |
// |
// makeSousTotalClasse(posLine, sousTotalDebit, sousTotalCredit, classe); |
// |
// this.nbPage++; |
// } |
} |
} else { |
this.mapReplace = new HashMap(); |
this.mCell = new HashMap(); |
this.mapStyleRow = new HashMap(); |
276,6 → 157,38 |
List l = (List) base.getDataSource().execute(req, new ArrayListHandler()); |
int posLine = 1; |
int firstLine = 1; |
System.err.println("START CREATE Grand livre, NB ecritures " + l.size()); |
this.nbPage = 0; |
long totalDebit, totalCredit, sousTotalDebit, sousTotalCredit; |
totalDebit = 0; |
totalCredit = 0; |
sousTotalDebit = 0; |
sousTotalCredit = 0; |
long totalDebitClient = 0; |
long totalCreditClient = 0; |
long totalDebitFourn = 0; |
long totalCreditFourn = 0; |
long totalDebitFournImmo = 0; |
long totalCreditFournImmo = 0; |
String numCptClient = "411"; |
String nomCptClient = "Clients"; |
String numCptFourn = "401"; |
String nomCptFourn = "Fournisseurs"; |
String numCptFournImmo = "404"; |
String nomCptFournImmo = "Fournisseurs d'immobilisations"; |
boolean addedLine = false; |
boolean addedLineImmo = false; |
boolean addedLineFourn = false; |
int j = 0; |
String classe = ""; |
SQLSelect selCompte = new SQLSelect(); |
selCompte.addSelectStar(tableCompte); |
List<SQLRow> compteRows = SQLRowListRSH.execute(selCompte); |
431,7 → 344,6 |
} |
} |
} |
// on conserve la page d'origine du model |
if (this.nbPage > 0) { |
438,118 → 350,4 |
this.nbPage--; |
} |
} |
private long totalDebitBalance = 0; |
private long totalCreditBalance = 0; |
private List<Compte> vecteurCompte = new ArrayList<Compte>(); |
public void getBalance() { |
// Compte numero -- totalDebit |
Map<Number, Long> mapCompteDebit = new HashMap<Number, Long>(); |
Map<Number, Long> mapCompteCredit = new HashMap<Number, Long>(); |
List<Compte> comptes = new ArrayList<Compte>(); |
this.totalDebitBalance = 0; |
this.totalCreditBalance = 0; |
SQLBase base = ((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete(); |
SQLTable compteTable = base.getTable("COMPTE_PCE"); |
SQLTable ecritureTable = base.getTable("ECRITURE"); |
SQLSelect sel = new SQLSelect(); |
// On recupere le solde des comptes |
sel.addSelect(compteTable.getField("ID")); |
sel.addSelect(ecritureTable.getField("DEBIT"), "SUM"); |
sel.addSelect(ecritureTable.getField("CREDIT"), "SUM"); |
sel.addSelect(compteTable.getField("NUMERO")); |
sel.setDistinct(true); |
Where w = (new Where(tableEcriture.getField("DATE"), this.dateDu, this.dateAu)); |
if (dateDu == null) { |
w = (new Where(tableEcriture.getField("DATE"), "<=", this.dateAu)); |
} |
sel.setWhere(w.and(new Where(compteTable.getField("ID"), "=", ecritureTable.getField("ID_COMPTE_PCE")))); |
String req = sel.asString() + " GROUP BY \"COMPTE_PCE\".\"ID\",\"COMPTE_PCE\".\"NUMERO\" ORDER BY \"COMPTE_PCE\".\"NUMERO\""; |
System.out.println(req); |
Object ob = base.getDataSource().execute(req, new ArrayListHandler()); |
List myList = (List) ob; |
if (myList.size() != 0) { |
for (int i = 0; i < myList.size(); i++) { |
Object[] tmp = (Object[]) myList.get(i); |
mapCompteDebit.put((Number) tmp[0], Long.parseLong(tmp[1].toString())); |
mapCompteCredit.put((Number) tmp[0], Long.parseLong(tmp[2].toString())); |
} |
} |
// Création du vecteur balance |
sel = new SQLSelect(); |
sel.addSelect(compteTable.getKey()); |
sel.addSelect(compteTable.getField("NUMERO")); |
sel.addSelect(compteTable.getField("NOM")); |
sel.addRawOrder("\"COMPTE_PCE\".\"NUMERO\""); |
String reqCompte = sel.asString(); |
System.out.println(req); |
Object obCompte = base.getDataSource().execute(reqCompte, new ArrayListHandler()); |
List myListCompte = (List) obCompte; |
if (myListCompte.size() != 0) { |
for (int i = 0; i < myListCompte.size(); i++) { |
Object[] tmp = (Object[]) myListCompte.get(i); |
System.err.println("Compte " + tmp[1].toString().trim()); |
long totalDebit = 0; |
long totalCredit = 0; |
if (mapCompteDebit.get(tmp[0]) != null) { |
totalDebit = Long.parseLong(mapCompteDebit.get(tmp[0]).toString()); |
} |
if (mapCompteCredit.get(tmp[0]) != null) { |
totalCredit = Long.parseLong(mapCompteCredit.get(tmp[0]).toString()); |
} |
this.totalDebitBalance += totalDebit; |
this.totalCreditBalance += totalCredit; |
List<String> sousCompte = new ArrayList<>(); |
for (int j = i + 1; j < (myListCompte.size() - 1); j++) { |
Object[] tmpNext = (Object[]) myListCompte.get(j); |
if (tmpNext[1].toString().trim().startsWith(tmp[1].toString().trim())) { |
System.err.println("Sous Compte " + tmpNext[1].toString().trim()); |
sousCompte.add(tmpNext[1].toString().trim()); |
if (mapCompteDebit.get(tmpNext[0]) != null) { |
totalDebit += Long.parseLong(mapCompteDebit.get(tmpNext[0]).toString()); |
} |
if (mapCompteCredit.get(tmpNext[0]) != null) { |
totalCredit += Long.parseLong(mapCompteCredit.get(tmpNext[0]).toString()); |
} |
} else { |
break; |
} |
} |
if ((totalDebit != 0.0) || (totalCredit != 0.0)) { |
Compte cpt = new Compte(((Number) tmp[0]).intValue(), tmp[1].toString(), tmp[2].toString(), "", totalDebit, totalCredit); |
cpt.addSousCompte(sousCompte); |
comptes.add(cpt); |
} |
} |
} |
this.vecteurCompte = comptes; |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/report/JournauxSheetXML.java |
---|
191,10 → 191,6 |
values.put("NUMERO_COMPTE", rowEcr.getString("COMPTE_NUMERO")); |
if (tableEcriture.contains("NOM_PIECE")) { |
values.put("NOM_PIECE", rowEcr.getObject("NOM_PIECE")); |
} |
values.put("NUMERO_MOUVEMENT", rowMvt.getObject("NUMERO")); |
Object libelle = rowEcr.getObject("NOM"); |
values.put("LIBELLE", libelle); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/report/Map2033A.java |
---|
17,9 → 17,7 |
import org.openconcerto.erp.config.Gestion; |
import org.openconcerto.erp.core.finance.accounting.model.SommeCompte; |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.model.SQLField; |
import org.openconcerto.sql.model.SQLRow; |
import org.openconcerto.sql.model.Where; |
import org.openconcerto.utils.GestionDevise; |
import java.text.DateFormat; |
26,10 → 24,8 |
import java.text.SimpleDateFormat; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
import javax.swing.JOptionPane; |
import javax.swing.JProgressBar; |
import javax.swing.SwingUtilities; |
121,9 → 117,8 |
// Fix Abaque 208 - 2087 |
long v014 = this.sommeCompte.soldeCompteDebiteur(109, 109, true, this.dateDebut, this.dateFin) + this.sommeCompte.sommeCompteFils("201", this.dateDebut, this.dateFin) |
+ this.sommeCompte.sommeCompteFils("203", this.dateDebut, this.dateFin) + this.sommeCompte.sommeCompteFils("232", this.dateDebut, this.dateFin) |
+ this.sommeCompte.sommeCompteFils("234", this.dateDebut, this.dateFin) + this.sommeCompte.sommeCompteFils("205", this.dateDebut, this.dateFin) |
+ this.sommeCompte.soldeCompte(208, 208, true, this.dateDebut, this.dateFin) - this.sommeCompte.soldeCompte(2087, 2087, true, this.dateDebut, this.dateFin) |
+ this.sommeCompte.sommeCompteFils("237", this.dateDebut, this.dateFin); |
+ this.sommeCompte.sommeCompteFils("205", this.dateDebut, this.dateFin) + this.sommeCompte.soldeCompte(208, 208, true, this.dateDebut, this.dateFin) |
- this.sommeCompte.soldeCompte(2087, 2087, true, this.dateDebut, this.dateFin) + this.sommeCompte.sommeCompteFils("237", this.dateDebut, this.dateFin); |
this.m.put("ACTIF1.1", GestionDevise.currencyToString(v014, false)); |
// 016 -SommeSolde( 280, 280* ) - SommeSolde(2905) - SommeSolde (2908) |
153,8 → 148,7 |
// Racine = "210-215, 218, 230-231, 238" |
// S028=211...215+218+22+231+238 |
long v028 = this.sommeCompte.soldeCompte(211, 215, true, this.dateDebut, this.dateFin) + this.sommeCompte.sommeCompteFils("218", this.dateDebut, this.dateFin) |
+ this.sommeCompte.sommeCompteFils("231", this.dateDebut, this.dateFin) + this.sommeCompte.sommeCompteFils("238", this.dateDebut, this.dateFin) |
+ this.sommeCompte.soldeCompte(24, 24, true, this.dateDebut, this.dateFin); |
+ this.sommeCompte.sommeCompteFils("231", this.dateDebut, this.dateFin) + this.sommeCompte.sommeCompteFils("238", this.dateDebut, this.dateFin); |
this.m.put("ACTIF1.2", GestionDevise.currencyToString(v028, false)); |
// 030 -SommeSolde( 281, 289* )-SommeSolde( 290, 295* ) |
585,9 → 579,7 |
// Racine1 = "7" |
// long v136 = -this.sommeCompte.sommeCompteFils("12", dateDebut, |
// dateFin); |
long v136 = -this.sommeCompte.sommeCompteFils("12", this.dateDebut, this.dateFin) - this.sommeCompte.sommeCompteFils("7", this.dateDebut, this.dateFin) |
- this.sommeCompte.sommeCompteFils("6", this.dateDebut, this.dateFin); |
long v136 = -this.sommeCompte.sommeCompteFils("7", this.dateDebut, this.dateFin) - this.sommeCompte.sommeCompteFils("6", this.dateDebut, this.dateFin); |
this.m.put("PASSIF3.21", GestionDevise.currencyToString(v136, false)); |
// 137 -N-1: +R136 |
855,15 → 847,6 |
this.m.put("PASSIF4.33", ""); |
this.m.put("PASSIF4.34", ""); |
final SQLField field = ComptaPropsConfiguration.getInstanceCompta().getRootSociete().getTable("COMPTE_PCE").getField("NUMERO"); |
Where where = new Where(field, "NOT LIKE", "6%"); |
where = where.and(new Where(field, "NOT LIKE", "7%")); |
where = where.and(new Where(field, "NOT LIKE", "8%")); |
List<String> unused = this.sommeCompte.getNonUsedCompte(where, this.dateDebut, this.dateFin); |
if (unused != null && !unused.isEmpty()) { |
JOptionPane.showMessageDialog(null, "Certains comptes n'ont pas été intégré : " + unused); |
} |
p.generateFrom(this.m); |
SwingUtilities.invokeLater(new Runnable() { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/report/Map2033B.java |
---|
17,9 → 17,7 |
import org.openconcerto.erp.config.Gestion; |
import org.openconcerto.erp.core.finance.accounting.model.SommeCompte; |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.model.SQLField; |
import org.openconcerto.sql.model.SQLRow; |
import org.openconcerto.sql.model.Where; |
import org.openconcerto.utils.GestionDevise; |
import java.text.DateFormat; |
26,10 → 24,8 |
import java.text.SimpleDateFormat; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
import javax.swing.JOptionPane; |
import javax.swing.JProgressBar; |
import javax.swing.SwingUtilities; |
86,9 → 82,7 |
this.m.put("PRODUIT1.1", GestionDevise.currencyToString(v215, false)); |
// 214 -SommeSolde( 700, 705* )-SommeSolde( 7090, 7095* ) |
long v214 = -this.sommeCompte.soldeCompte(700, 705, true, this.dateDeb, this.dateFin) - this.sommeCompte.soldeCompte("709", this.dateDeb, this.dateFin) |
- this.sommeCompte.soldeCompte(7090, 7095, true, this.dateDeb, this.dateFin); |
long v214 = -this.sommeCompte.soldeCompte(700, 705, true, this.dateDeb, this.dateFin) - this.sommeCompte.soldeCompte(7090, 7095, true, this.dateDeb, this.dateFin); |
this.m.put("PRODUIT2.1", GestionDevise.currencyToString(v214, false)); |
// 201 |
375,8 → 369,8 |
* PRODUITS EXCEPTIONNELS |
******************************************************************************************/ |
// 290 -SommeSolde( 77, 77* )-SommeSolde( 787, 789* )-SommeSolde( 797, 799* ) |
long v290 = -this.sommeCompte.soldeCompte(77, 77, true, this.dateDeb, this.dateFin) - this.sommeCompte.soldeCompte(787, 787, true, this.dateDeb, this.dateFin) |
- this.sommeCompte.soldeCompte(797, 797, true, this.dateDeb, this.dateFin); |
long v290 = -this.sommeCompte.soldeCompte(770, 772, true, this.dateDeb, this.dateFin) - this.sommeCompte.soldeCompte(775, 778, true, this.dateDeb, this.dateFin) |
- this.sommeCompte.soldeCompte(787, 787, true, this.dateDeb, this.dateFin) - this.sommeCompte.soldeCompte(797, 797, true, this.dateDeb, this.dateFin); |
this.m.put("PCHARGES3.22", GestionDevise.currencyToString(v290, false)); |
// 245 |
490,14 → 484,6 |
this.m.put("T4.41", ""); |
this.m.put("T2.42", ""); |
final SQLField field = ComptaPropsConfiguration.getInstanceCompta().getRootSociete().getTable("COMPTE_PCE").getField("NUMERO"); |
Where where = new Where(field, "LIKE", "6%"); |
where = where.or(new Where(field, "LIKE", "7%")); |
List<String> unused = this.sommeCompte.getNonUsedCompte(where, this.dateDeb, this.dateFin); |
if (unused != null && !unused.isEmpty()) { |
JOptionPane.showMessageDialog(null, "Certains comptes n'ont pas été intégré : " + unused); |
} |
// final SQLField field = |
// ComptaPropsConfiguration.getInstanceCompta().getRootSociete().getTable("COMPTE_PCE").getField("NUMERO"); |
// Where where = new Where(field, "LIKE", "6%"); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/action/ImportEcritureFECAction.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/ui/ImportEcritureFECPanel.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/ui/ImpressionBalancePanel.java |
---|
50,7 → 50,6 |
private JCheckBox checkClientCentral; |
private JCheckBox checkFournCentral; |
private JCheckBox checkFournImmoCentral; |
private JCheckBox checkTotalRacine; |
private JProgressBar bar = new JProgressBar(0, 3); |
private JTextField compteDeb, compteEnd; |
123,13 → 122,6 |
this.checkFournImmoCentral = new JCheckBox("Centralisation des comptes fournisseurs d'immobilisations"); |
this.add(this.checkFournImmoCentral, c); |
// Centralisation Fournisseurs |
c.gridy++; |
c.gridwidth = GridBagConstraints.REMAINDER; |
c.gridx = 0; |
this.checkTotalRacine = new JCheckBox("Total par racine"); |
this.add(this.checkTotalRacine, c); |
// Progress bar |
c.gridwidth = GridBagConstraints.REMAINDER; |
c.gridy++; |
171,7 → 163,7 |
new Thread(new Runnable() { |
public void run() { |
BalanceSheet bSheet = new BalanceSheet(dateStart.getDate(), dateEnd.getDate(), compteDeb.getText(), compteEnd.getText(), checkClientCentral.isSelected(), |
checkFournCentral.isSelected(), checkFournImmoCentral.isSelected(), checkTotalRacine.isSelected()); |
checkFournCentral.isSelected(), checkFournImmoCentral.isSelected()); |
final SpreadSheetGeneratorCompta generator = new SpreadSheetGeneratorCompta(bSheet, "Balance" + new Date().getTime(), checkImpr.isSelected(), checkVisu.isSelected()); |
SwingUtilities.invokeLater(new Runnable() { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/ui/SaisieKmItemTable.java |
---|
166,7 → 166,7 |
m2.setWhere(w); |
TextTableCellEditorWithCompletion t = (TextTableCellEditorWithCompletion) this.tableElementNumeroCompte.getTableCellEditor(this.table); |
JButton buttonClone = new JButton(TM.tr(Configuration.getInstance().getLocale(), "duplicateLine")); |
JButton buttonClone = new JButton(TM.tr("duplicateLine")); |
buttonClone.addActionListener(new ActionListener() { |
public void actionPerformed(ActionEvent event) { |
cloneLine(table.getSelectedRow()); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/ui/ImportEcriturePanel.java |
---|
112,6 → 112,12 |
button.setEnabled(false); |
final Frame frame = SwingThreadUtils.getAncestorOrSelf(Frame.class, ImportEcriturePanel.this); |
final FileDialog fd = new FileDialog(frame, "Import d'écritures", FileDialog.LOAD); |
fd.setFilenameFilter(new FilenameFilter() { |
@Override |
public boolean accept(File dir, String name) { |
return name.endsWith("." + ContentTypeVersioned.SPREADSHEET.getExtension()); |
} |
}); |
fd.setVisible(true); |
rlPanel.setMode(ReloadPanel.MODE_ROTATE); |
if (fd.getFile() != null) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/ui/LettragePanel.java |
---|
104,10 → 104,6 |
private JDate dateDeb, dateFin, dateLettrage; |
public LettragePanel() { |
this(ComptePCESQLElement.getId("4")); |
} |
public LettragePanel(int idCompte) { |
this.setLayout(new GridBagLayout()); |
GridBagConstraints c = new DefaultGridBagConstraints(); |
final SQLElementDirectory directory = Configuration.getInstance().getDirectory(); |
128,7 → 124,7 |
} |
createComboRequest.setWhere(new Where(eltCpt.getTable().getField("NUMERO"), function, "^4.*$")); |
this.selCompte.init(eltCpt, createComboRequest); |
this.selCompte.setValue(idCompte); |
this.selCompte.setValue(ComptePCESQLElement.getId("4")); |
c.gridx++; |
c.weightx = 1; |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/ui/SaisieJournalItemTable.java |
---|
34,6 → 34,7 |
import org.openconcerto.sql.view.list.RowValuesTableControlPanel; |
import org.openconcerto.sql.view.list.RowValuesTableModel; |
import org.openconcerto.sql.view.list.SQLTableElement; |
import org.openconcerto.sql.view.list.TextTableCellEditorWithCompletion; |
import org.openconcerto.sql.view.list.ValidStateChecker; |
import org.openconcerto.ui.DefaultGridBagConstraints; |
import org.openconcerto.ui.JComponentUtils; |
47,7 → 48,6 |
import java.awt.GridBagLayout; |
import java.awt.event.ActionEvent; |
import java.awt.event.ActionListener; |
import java.awt.event.KeyAdapter; |
import java.awt.event.KeyEvent; |
import java.awt.event.KeyListener; |
import java.awt.event.MouseEvent; |
109,9 → 109,9 |
final SQLElement elt = Configuration.getInstance().getDirectory().getElement("SAISIE_KM_ELEMENT"); |
// TODO Obligation de choisir un compte correct |
final List<SQLTableElement> list = new Vector<>(); |
final List<SQLTableElement> list = new Vector<SQLTableElement>(); |
final SQLTable tableElement = elt.getTable(); |
final SQLTableElement tableElementJour = new SQLTableElement(tableElement.getField("JOUR"), Integer.class, this.rangedIntegerTableCellEditor) { |
final SQLTableElement tableElementJour = new SQLTableElement(tableElement.getField("JOUR"), Integer.class, rangedIntegerTableCellEditor) { |
@Override |
public boolean isCellEditable(SQLRowValues vals, int rowIndex, int columnIndex) { |
158,7 → 158,6 |
final MultiLineTableCellEditor multiLineTableCellEditor = new MultiLineTableCellEditor((RowValuesMultiLineEditTable) analytiqueAssocTable.getTable(), analytiqueAssocTable); |
SQLTableElement eltPourcentAnalytique = new SQLTableElement(tableElement.getField("ANALYTIQUE"), String.class, multiLineTableCellEditor) { |
@Override |
public boolean isCellEditable(SQLRowValues vals, int rowIndex, int columnIndex) { |
return vals.getString("NUMERO") != null && (vals.getString("NUMERO").startsWith("6") || vals.getString("NUMERO").startsWith("7")); |
}; |
174,10 → 173,12 |
final int debitIndex = getColumnIndexForElement(SaisieJournalItemTable.this.debit); |
final int creditIndex = getColumnIndexForElement(SaisieJournalItemTable.this.credit); |
if (debitIndex == columnIndex && ((Number) aValue).longValue() != 0 && ((Number) getValueAt(rowIndex, creditIndex)).longValue() != 0) { |
// float debitVal = ((Float) model.getValueAt(rowIndex, debitIndex); |
if (debitIndex == columnIndex && ((Long) aValue).longValue() != 0 && ((Long) getValueAt(rowIndex, creditIndex)).longValue() != 0) { |
setValueAt(Long.valueOf(0), rowIndex, creditIndex); |
} else { |
if (creditIndex == columnIndex && ((Number) aValue).longValue() != 0 && ((Number) getValueAt(rowIndex, debitIndex)).longValue() != 0) { |
if (creditIndex == columnIndex && ((Long) aValue).longValue() != 0 && ((Long) getValueAt(rowIndex, debitIndex)).longValue() != 0) { |
setValueAt(Long.valueOf(0), rowIndex, debitIndex); |
} |
} |
188,54 → 189,54 |
ToolTipManager.sharedInstance().unregisterComponent(this.table); |
ToolTipManager.sharedInstance().unregisterComponent(this.table.getTableHeader()); |
tableElementNomEcriture.getTableCellEditor(this.table).addCellEditorListener(new CellEditorListener() { |
tableElementNomEcriture.getTableCellEditor(table).addCellEditorListener(new CellEditorListener() { |
@Override |
public void editingStopped(ChangeEvent e) { |
e.getSource(); |
int row = SaisieJournalItemTable.this.table.getSelectedRow(); |
int row = table.getSelectedRow(); |
int col = 4; |
if (SaisieJournalItemTable.this.table.getValueAt(row, col) != null) { |
defaultRowVals.put("NOM_ECRITURE", SaisieJournalItemTable.this.table.getValueAt(row, col)); |
if (table.getValueAt(row, col) != null) { |
defaultRowVals.put("NOM_ECRITURE", table.getValueAt(row, col)); |
} |
// defaultRowVals.put |
} |
@Override |
public void editingCanceled(ChangeEvent e) { |
// |
// TODO Auto-generated method stub |
} |
}); |
tableElementNomPiece.getTableCellEditor(this.table).addCellEditorListener(new CellEditorListener() { |
tableElementNomPiece.getTableCellEditor(table).addCellEditorListener(new CellEditorListener() { |
@Override |
public void editingStopped(ChangeEvent e) { |
e.getSource(); |
int row = SaisieJournalItemTable.this.table.getSelectedRow(); |
int row = table.getSelectedRow(); |
int col = 3; |
if (SaisieJournalItemTable.this.table.getValueAt(row, col) != null) { |
defaultRowVals.put("NOM_PIECE", SaisieJournalItemTable.this.table.getValueAt(row, col)); |
if (table.getValueAt(row, col) != null) { |
defaultRowVals.put("NOM_PIECE", table.getValueAt(row, col)); |
} |
// defaultRowVals.put |
} |
@Override |
public void editingCanceled(ChangeEvent e) { |
// |
// TODO Auto-generated method stub |
} |
}); |
tableElementJour.getTableCellEditor(this.table).addCellEditorListener(new CellEditorListener() { |
tableElementJour.getTableCellEditor(table).addCellEditorListener(new CellEditorListener() { |
@Override |
public void editingStopped(ChangeEvent e) { |
final Object valueAt = SaisieJournalItemTable.this.table.getValueAt(0, 0); |
final Object valueAt = table.getValueAt(0, 0); |
defaultRowVals.put("JOUR", valueAt); |
if (SaisieJournalItemTable.this.table.getRowCount() > 1) { |
for (int i = 1; i < SaisieJournalItemTable.this.table.getRowCount(); i++) { |
SaisieJournalItemTable.this.table.getRowValuesTableModel().putValue(valueAt, i, "JOUR"); |
if (table.getRowCount() > 1) { |
for (int i = 1; i < table.getRowCount(); i++) { |
table.getRowValuesTableModel().putValue(valueAt, i, "JOUR"); |
} |
} |
} |
242,13 → 243,25 |
@Override |
public void editingCanceled(ChangeEvent e) { |
// |
// TODO Auto-generated method stub |
} |
}); |
; |
final KeyListener keyListenerContrepartie = new KeyAdapter() { |
final KeyListener keyListenerContrepartie = new KeyListener() { |
@Override |
public void keyTyped(KeyEvent e) { |
} |
@Override |
public void keyReleased(KeyEvent e) { |
} |
@Override |
public void keyPressed(KeyEvent e) { |
if (e.getKeyCode() == KeyEvent.VK_ENTER) { |
montantValid(defaultRowVals, false, textField); |
268,7 → 281,7 |
@Override |
public ValidState getValidState(Object o) { |
if (o != null) { |
return this.elt.getCompteNumeroValidState(o.toString()); |
return elt.getCompteNumeroValidState(o.toString()); |
} |
return super.getValidState(o); |
} |
285,10 → 298,12 |
m2.setFillWithField("NOM"); |
m2.setWhere(w); |
JButton buttonClone = new JButton(TM.tr(Configuration.getInstance().getLocale(), "duplicateLine")); |
TextTableCellEditorWithCompletion t = (TextTableCellEditorWithCompletion) this.tableElementNumeroCompte.getTableCellEditor(this.table); |
JButton buttonClone = new JButton(TM.tr("duplicateLine")); |
buttonClone.addActionListener(new ActionListener() { |
public void actionPerformed(ActionEvent event) { |
cloneLine(SaisieJournalItemTable.this.table.getSelectedRow()); |
cloneLine(table.getSelectedRow()); |
} |
}); |
buttonClone.setEnabled(false); |
317,7 → 332,7 |
public void tableChanged(TableModelEvent e) { |
// Sélectionne automatiquement la ligne ajoutée |
if (e.getType() == TableModelEvent.INSERT) { |
if (SaisieJournalItemTable.this.table.getRowCount() == 1) { |
if (table.getRowCount() == 1) { |
editCellAt(e.getFirstRow(), 0); |
} else { |
editCellAt(e.getFirstRow(), 1); |
382,7 → 397,7 |
final PropertyChangeListener lActiveAddButton = new PropertyChangeListener() { |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
SaisieJournalItemTable.this.controlPanel.setButtonAjouterEnabled(!panel.getBoxJournal().isEmpty() && !panel.getBoxMois().isEmpty()); |
controlPanel.setButtonAjouterEnabled(!panel.getBoxJournal().isEmpty() && !panel.getBoxMois().isEmpty()); |
} |
}; |
panel.getBoxJournal().addModelListener("wantedID", lActiveAddButton); |
399,7 → 414,7 |
c.set(Calendar.DAY_OF_MONTH, 1); |
c.set(Calendar.YEAR, (Integer) SaisieJournalItemTable.this.panel.spin.getValue()); |
c.set(Calendar.MONTH, SaisieJournalItemTable.this.panel.getSelectedMonth()); |
SaisieJournalItemTable.this.rangedIntegerTableCellEditor.setMax(c.getActualMaximum(Calendar.DAY_OF_MONTH)); |
rangedIntegerTableCellEditor.setMax(c.getActualMaximum(Calendar.DAY_OF_MONTH)); |
} |
} |
} |
414,14 → 429,14 |
long totalD = 0L; |
long totalC = 0L; |
for (int i = 0; i < this.table.getRowCount(); i++) { |
Number c = (Number) this.table.getRowValuesTableModel().getValueAt(i, this.table.getRowValuesTableModel().getColumnForField("DEBIT")); |
Number d = (Number) this.table.getRowValuesTableModel().getValueAt(i, this.table.getRowValuesTableModel().getColumnForField("CREDIT")); |
for (int i = 0; i < table.getRowCount(); i++) { |
Long c = (Long) table.getRowValuesTableModel().getValueAt(i, table.getRowValuesTableModel().getColumnForField("DEBIT")); |
Long d = (Long) table.getRowValuesTableModel().getValueAt(i, table.getRowValuesTableModel().getColumnForField("CREDIT")); |
if (c != null) { |
totalC += c.longValue(); |
totalC += c; |
} |
if (d != null) { |
totalD += d.longValue(); |
totalD += d; |
} |
} |
438,19 → 453,19 |
long totalC = 0L; |
boolean cptOK = true; |
String lib = null; |
for (int i = 0; i < this.table.getRowCount(); i++) { |
Number c = (Number) this.table.getRowValuesTableModel().getValueAt(i, this.table.getRowValuesTableModel().getColumnForField("DEBIT")); |
Number d = (Number) this.table.getRowValuesTableModel().getValueAt(i, this.table.getRowValuesTableModel().getColumnForField("CREDIT")); |
for (int i = 0; i < table.getRowCount(); i++) { |
Long c = (Long) table.getRowValuesTableModel().getValueAt(i, table.getRowValuesTableModel().getColumnForField("DEBIT")); |
Long d = (Long) table.getRowValuesTableModel().getValueAt(i, table.getRowValuesTableModel().getColumnForField("CREDIT")); |
if (c != null) { |
totalC += c.longValue(); |
totalC += c; |
} |
if (d != null) { |
totalD += d.longValue(); |
totalD += d; |
} |
if (lib == null) { |
lib = (String) this.table.getRowValuesTableModel().getValueAt(i, this.table.getRowValuesTableModel().getColumnForField("NOM")); |
lib = (String) table.getRowValuesTableModel().getValueAt(i, table.getRowValuesTableModel().getColumnForField("NOM")); |
} |
String cptNUmber = (String) this.table.getRowValuesTableModel().getValueAt(i, this.table.getRowValuesTableModel().getColumnForField("NUMERO")); |
String cptNUmber = (String) table.getRowValuesTableModel().getValueAt(i, table.getRowValuesTableModel().getColumnForField("NUMERO")); |
cptOK = cptOK && cptNUmber != null && ComptePCESQLElement.isExist(cptNUmber); |
} |
return totalD + totalC != 0 && totalD == totalC && cptOK; |
460,10 → 475,10 |
int day = 1; |
String lib = null; |
for (int i = 0; i < this.table.getRowCount(); i++) { |
day = (Integer) this.table.getRowValuesTableModel().getValueAt(i, this.table.getRowValuesTableModel().getColumnForField("JOUR")); |
for (int i = 0; i < table.getRowCount(); i++) { |
day = (Integer) table.getRowValuesTableModel().getValueAt(i, table.getRowValuesTableModel().getColumnForField("JOUR")); |
if (lib == null) { |
lib = (String) this.table.getRowValuesTableModel().getValueAt(i, this.table.getRowValuesTableModel().getColumnForField("NOM")); |
lib = (String) table.getRowValuesTableModel().getValueAt(i, table.getRowValuesTableModel().getColumnForField("NOM")); |
} |
} |
// Create saisieKM |
475,12 → 490,13 |
} |
public void montantValid(final SQLRowValues defaultRowVals, final boolean fromAnalytique, final JTextField textPiece) { |
System.err.println("Enter"); |
final SQLRowValues vals = SaisieJournalItemTable.this.table.getSelectedRowValues(); |
final int selectedRow = SaisieJournalItemTable.this.table.getSelectedRow(); |
SwingUtilities.invokeLater(new Runnable() { |
public void run() { |
if (SaisieJournalItemTable.this.boxAutoInsert.isSelected() && isSaisieValid()) { |
if (boxAutoInsert.isSelected() && isSaisieValid()) { |
if (SaisieJournalItemTable.this.panel.getSelectedJournal() == SQLRow.NONEXISTANT_ID || SaisieJournalItemTable.this.panel.getSelectedMonth() == -1) { |
JOptionPane.showMessageDialog(SaisieJournalItemTable.this.panel, "Impossible de créer la saisie si aucun journal ou aucun mois n'est sélectionné!"); |
} else { |
487,8 → 503,7 |
createSaisie(defaultRowVals, textPiece); |
} |
} else { |
if (!fromAnalytique && !SaisieJournalItemTable.this.hideAnalytique && vals.getString("NUMERO") != null |
&& (vals.getString("NUMERO").startsWith("6") || vals.getString("NUMERO").startsWith("7"))) { |
if (!fromAnalytique && !hideAnalytique && vals.getString("NUMERO") != null && (vals.getString("NUMERO").startsWith("6") || vals.getString("NUMERO").startsWith("7"))) { |
// Update montant |
Collection<SQLRowValues> rowsLinked = vals.getReferentRows(vals.getTable().getTable("ASSOCIATION_ANALYTIQUE")); |
498,7 → 513,7 |
.setScale(0, RoundingMode.HALF_UP).longValue()); |
} |
editCellAt(selectedRow, SaisieJournalItemTable.this.table.getRowValuesTableModel().getColumnForField("ANALYTIQUE")); |
editCellAt(selectedRow, table.getRowValuesTableModel().getColumnForField("ANALYTIQUE")); |
} else { |
long l = getContrepartie(); |
536,19 → 551,19 |
try { |
id = rowVAlsKM.insert().getID(); |
this.table.updateField("ID_SAISIE_KM", id); |
this.table.clear(); |
table.updateField("ID_SAISIE_KM", id); |
table.clear(); |
GenerationMvtSaisieKm gen = new GenerationMvtSaisieKm(id); |
int idMvt = gen.genereMouvement(); |
// maj de l'id du mouvement correspondant |
SQLRowValues rowValsKMMvt = new SQLRowValues(SaisieJournalItemTable.this.table.getRowValuesTableModel().getSQLElement().getTable().getForeignTable("ID_SAISIE_KM")); |
rowValsKMMvt.put("ID_MOUVEMENT", Integer.valueOf(idMvt)); |
rowValsKMMvt.put("ID_MOUVEMENT", new Integer(idMvt)); |
rowValsKMMvt.update(id); |
defaultRowVals.put("NOM_PIECE", ""); |
defaultRowVals.put("NOM_ECRITURE", ""); |
this.table.getRowValuesTableModel().addNewRow(); |
table.getRowValuesTableModel().addNewRow(); |
pieceText.setText(""); |
} catch (SQLException e) { |
e.printStackTrace(); |
611,11 → 626,11 |
final int debitIndex = model.getColumnIndexForElement(getDebitElement()); |
for (int i = 0; i < this.table.getRowCount(); i++) { |
if (model.isRowValid(i)) { |
final Number fTc = (Number) model.getValueAt(i, creditIndex); |
final Long fTc = (Long) model.getValueAt(i, creditIndex); |
if (fTc != null) { |
totalCred += fTc.longValue(); |
} |
final Number fTd = (Number) model.getValueAt(i, debitIndex); |
final Long fTd = (Long) model.getValueAt(i, debitIndex); |
if (fTd != null) { |
totalDeb += fTd.longValue(); |
} |
638,7 → 653,7 |
assert SwingUtilities.isEventDispatchThread(); |
if (text == null) |
return; |
RowValuesTableModel model = this.table.getRowValuesTableModel(); |
RowValuesTableModel model = table.getRowValuesTableModel(); |
int size = model.getRowCount(); |
for (int i = 0; i < size; i++) { |
SQLRowValues r = model.getRowValuesAt(i); |
649,7 → 664,6 |
model.fireTableDataChanged(); |
} |
@Override |
public void mousePressed(final MouseEvent e) { |
final int rowSel = this.table.getSelectedRow(); |
if (e.getButton() == MouseEvent.BUTTON3 && rowSel >= 0 && rowSel < this.table.getRowCount()) { |
678,28 → 692,22 |
} |
} |
@Override |
public void mouseReleased(final MouseEvent e) { |
// Nothing |
} |
@Override |
public void mouseClicked(final MouseEvent e) { |
// Nothing |
} |
@Override |
public void mouseEntered(final MouseEvent e) { |
// Nothing |
} |
@Override |
public void mouseExited(final MouseEvent e) { |
// Nothing |
} |
private void cloneLine(int row) { |
if (row < 0) { |
System.err.println("RowValuesTableControlPanel.cloneLine() wrong selected line, index = " + row); |
Thread.dumpStack(); |
return; |
} |
SQLRowValues rowVals = this.table.getRowValuesTableModel().getRowValuesAt(row); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/ui/CompteGestCommPreferencePanel.java |
---|
44,9 → 44,9 |
public class CompteGestCommPreferencePanel extends DefaultPreferencePanel { |
private ISQLCompteSelector selCompteCBAttente, selCompteTVAIntraComm, selCompteFourn, selCompteAchat, selCompteValeurEncaissement, selCompteAvanceClient, selCompteClient, selCompteVenteProduits, |
private ISQLCompteSelector selCompteTVAIntraComm, selCompteFourn, selCompteAchat, selCompteValeurEncaissement, selCompteAvanceClient, selCompteClient, selCompteVenteProduits, |
selCompteVenteService, selCompteTVACol, selCompteTVADed, selCompteTVAImmo, selCompteAchatIntra, selCompteFactor, selComptePortSoumis, selComptePortNonSoumis; |
private ElementComboBox selJrnlFactor, selJrnlValEnc, selJrnlCB; |
private ElementComboBox selJrnlFactor, selJrnlValEnc; |
private final static SQLBase base = ((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete(); |
private static final SQLTable tablePrefCompte = base.getTable("PREFS_COMPTE"); |
private SQLRowValues rowPrefCompteVals = new SQLRowValues(tablePrefCompte); |
186,27 → 186,6 |
this.selJrnlValEnc.init(Configuration.getInstance().getDirectory().getElement("JOURNAL")); |
this.add(this.selJrnlValEnc, c); |
// Journal |
c.gridy++; |
c.weightx = 0; |
c.gridx = 0; |
this.add(new JLabel("Journal CB Attente"), c); |
c.weightx = 1; |
c.gridx++; |
this.selJrnlCB = new ElementComboBox(); |
this.selJrnlCB.init(Configuration.getInstance().getDirectory().getElement("JOURNAL")); |
this.add(this.selJrnlCB, c); |
c.gridy++; |
c.weightx = 0; |
c.gridx = 0; |
this.add(new JLabel("Compte CB Attente"), c); |
c.weightx = 1; |
c.gridx++; |
this.selCompteCBAttente = new ISQLCompteSelector(); |
this.selCompteCBAttente.init(); |
this.add(this.selCompteCBAttente, c); |
// Compte vente produits |
c.gridy++; |
c.weightx = 0; |
362,9 → 341,6 |
final int selectedIdEnc = this.selJrnlValEnc.getSelectedId(); |
this.rowPrefCompteVals.put("ID_JOURNAL_VALEUR_ENCAISSEMENT", (selectedIdEnc > 1) ? selectedIdEnc : 1); |
final int selectedIdCB = this.selJrnlCB.getSelectedId(); |
this.rowPrefCompteVals.put("ID_JOURNAL_CB_ATTENTE", (selectedIdCB > 1) ? selectedIdCB : 1); |
this.rowPrefCompteVals.put("ID_COMPTE_PCE_CB_ATTENTE", this.selCompteCBAttente.getSelectedId() > 1 ? this.selCompteCBAttente.getSelectedId() : 1); |
this.rowPrefCompteVals.put("ID_COMPTE_PCE_FOURNISSEUR", this.selCompteFourn.getValue()); |
this.rowPrefCompteVals.put("ID_COMPTE_PCE_CLIENT", this.selCompteClient.getValue()); |
this.rowPrefCompteVals.put("ID_COMPTE_PCE_AVANCE_CLIENT", this.selCompteAvanceClient.getValue()); |
504,20 → 480,7 |
} |
this.selJrnlFactor.setValue(value); |
} |
{ |
// Journal CB |
int value = (this.rowPrefCompteVals.getObject("ID_JOURNAL_CB_ATTENTE") == null ? 1 : this.rowPrefCompteVals.getInt("ID_JOURNAL_CB_ATTENTE")); |
if (value > 1) { |
this.selJrnlCB.setValue(value); |
} |
int valueCpt = (this.rowPrefCompteVals.getObject("ID_COMPTE_PCE_CB_ATTENTE") == null ? 1 : this.rowPrefCompteVals.getInt("ID_COMPTE_PCE_CB_ATTENTE")); |
if (valueCpt > 1) { |
this.selCompteCBAttente.setValue(valueCpt); |
} |
} |
{ |
// Journal Val enc |
int value = (this.rowPrefCompteVals.getObject("ID_JOURNAL_VALEUR_ENCAISSEMENT") == null ? 1 : this.rowPrefCompteVals.getInt("ID_JOURNAL_VALEUR_ENCAISSEMENT")); |
if (value <= 1) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/accounting/model/SommeCompte.java |
---|
123,62 → 123,6 |
return sommeDebit - sommeCredit; |
} |
public long soldeCompte(String numeroCompte, Date dateDebut, Date dateFin) { |
long sommeDebit = 0; |
long sommeCredit = 0; |
SQLTable ecritureTable = base.getTable("ECRITURE"); |
SQLTable compteTable = base.getTable("COMPTE_PCE"); |
SQLSelect sel = new SQLSelect(); |
sel.addSelect(ecritureTable.getField("DEBIT"), "SUM"); |
sel.addSelect(ecritureTable.getField("CREDIT"), "SUM"); |
// sel.addSelect(compteTable.getField("ID")); |
// sel.addSelect(compteTable.getField("NUMERO")); |
// Where w = new Where(ecritureTable.getField("ID_COMPTE_PCE"), "=", |
// compteTable.getField("ID")); |
sel.addJoin("LEFT", ecritureTable.getField("ID_COMPTE_PCE")); |
Where w2 = new Where(compteTable.getField("NUMERO"), "LIKE", numeroCompte); |
this.compteUsed.add(numeroCompte); |
Where w4 = new Where(ecritureTable.getField("DATE"), dateDebut, dateFin); |
if (this.removeClotureCompte) { |
Where w5 = new Where(ecritureTable.getField("NOM"), "NOT LIKE", "Fermeture du compte %"); |
sel.setWhere(w2.and(w4).and(w5)); |
} else { |
sel.setWhere(w2.and(w4)); |
} |
addAnalytiqueJoin(sel); |
// String req = sel.asString() + |
// " GROUP BY \"COMPTE_PCE\".\"ID\",\"COMPTE_PCE\".\"NUMERO\" ORDER BY |
// \"COMPTE_PCE\".\"NUMERO\""; |
String req = sel.asString(); |
Object ob = base.getDataSource().execute(req, new ArrayListHandler()); |
List myList = (List) ob; |
if (myList.size() != 0) { |
for (int i = 0; i < myList.size(); i++) { |
Object[] objTmp = (Object[]) myList.get(i); |
if (objTmp[0] != null) { |
sommeDebit += ((Number) objTmp[0]).longValue(); |
} |
if (objTmp[1] != null) { |
sommeCredit += ((Number) objTmp[1]).longValue(); |
} |
} |
} |
return sommeDebit - sommeCredit; |
} |
/*********************************************************************************************** |
* Calcul le solde débiteur des comptes compris dans l'intervalle numeroStart numeroEnd |
* |
436,7 → 380,7 |
this.compteUsed.clear(); |
} |
public List<String> getNonUsedCompte(Where where, Date dateDebut, Date dateFin) { |
public void getNonUsedCompte(Where where, Date dateDebut, Date dateFin) { |
SQLSelect sel = new SQLSelect(); |
final SQLTable table = base.getTable("COMPTE_PCE"); |
458,6 → 402,6 |
for (String string : s) { |
System.err.println("Compte " + s); |
} |
return s; |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/tax/model/TaxeCache.java |
---|
38,7 → 38,7 |
final DBRoot root = ((ComptaPropsConfiguration) Configuration.getInstance()).getRootSociete(); |
final SQLTable table = root.getTable("TAXE"); |
SQLRowValues rowVals = new SQLRowValues(table); |
rowVals.putNulls("TAUX", "CODE", "NOM", "ID_TAXE", "DEFAULT", "DEFAULT_ACHAT"); |
rowVals.putNulls("TAUX", "CODE", "NOM", "ID_TAXE", "DEFAULT"); |
List<String> compteFields = Arrays.asList("ID_COMPTE_PCE_COLLECTE", "ID_COMPTE_PCE_DED", "ID_COMPTE_PCE", "ID_COMPTE_PCE_VENTE", "ID_COMPTE_PCE_VENTE_SERVICE", "ID_COMPTE_PCE_COLLECTE_INTRA", |
"ID_COMPTE_PCE_DED_INTRA"); |
for (String foreignFieldName : compteFields) { |
51,7 → 51,6 |
private final Map<SQLRowAccessor, Float> mapRowTaux = new LinkedHashMap<>(); |
private static TaxeCache instance; |
private SQLRow firstIdTaxe = null; |
private SQLRow firstIdTaxeAchat = null; |
private TaxeCache() { |
loadCache(); |
62,7 → 61,6 |
this.mapRowTaux.clear(); |
this.mapTaux.clear(); |
this.firstIdTaxe = null; |
this.firstIdTaxeAchat = null; |
final SQLRowValuesListFetcher sel = getSel(); |
73,11 → 71,8 |
if (sqlRow.getBoolean("DEFAULT")) { |
this.firstIdTaxe = sqlRow.asRow(); |
} |
if (sqlRow.getBoolean("DEFAULT_ACHAT")) { |
this.firstIdTaxeAchat = sqlRow.asRow(); |
} |
} |
} |
public static synchronized TaxeCache getCache() { |
if (instance == null) { |
128,20 → 123,6 |
return this.firstIdTaxe; |
} |
public synchronized SQLRow getFirstTaxeAchat() { |
if (this.firstIdTaxeAchat == null) { |
final SQLRowValuesListFetcher sel = getSel(); |
final List<SQLRowValues> rows = sel.fetch(new Where(sel.getReq().getTable("TAXE").getField("DEFAULT_ACHAT"), "=", Boolean.TRUE)); |
if (rows != null && !rows.isEmpty()) { |
this.firstIdTaxeAchat = rows.get(0).asRow(); |
} else { |
this.firstIdTaxeAchat = getFirstTaxe(); |
} |
} |
return this.firstIdTaxeAchat; |
} |
public synchronized Integer getIdFromTaux(Float tax) { |
Set<Integer> s = mapTaux.keySet(); |
for (Integer integer : s) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/payment/element/DepotChequeSQLElement.java |
---|
13,7 → 13,6 |
package org.openconcerto.erp.core.finance.payment.element; |
import org.openconcerto.erp.core.common.element.BanqueSQLElement; |
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement; |
import org.openconcerto.erp.core.finance.payment.component.DepotChequeSQLComponent; |
import org.openconcerto.erp.generationDoc.gestcomm.DepotChequeXmlSheet; |
48,7 → 47,7 |
final List<String> l = new ArrayList<String>(); |
l.add("DATE"); |
l.add("NOM"); |
l.add("ID_" + BanqueSQLElement.TABLENAME); |
l.add("ID_BANQUE"); |
l.add("MONTANT"); |
return l; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/payment/element/SDDMessageSQLElement.java |
---|
75,12 → 75,10 |
import java.util.NavigableMap; |
import java.util.Set; |
import java.util.TreeMap; |
import java.util.concurrent.ExecutionException; |
import java.util.prefs.Preferences; |
import javax.swing.AbstractAction; |
import javax.swing.JFileChooser; |
import javax.swing.SwingWorker; |
import org.jdom2.Document; |
import org.jdom2.Element; |
115,30 → 113,12 |
@Override |
public void actionPerformed(ActionEvent e) { |
final IListe l = IListe.get(e); |
// XML field values are quite large so only fetch them when needed |
final SQLTable t = l.getSource().getPrimaryTable(); |
final Set<Integer> userSelectedIDs = l.getSelection().getUserSelectedIDs(); |
new SwingWorker<List<SQLRow>, Void>() { |
@Override |
protected List<SQLRow> doInBackground() throws Exception { |
final SQLSelect sel = new SQLSelect().addSelectStar(t); |
// XML field values are quite large so only fetch them when needed |
sel.setWhere(new Where(t.getKey(), userSelectedIDs)); |
return SQLRowListRSH.execute(sel); |
sel.setWhere(new Where(t.getKey(), l.getSelection().getUserSelectedIDs())); |
exportXML(l, SQLRowListRSH.execute(sel)); |
} |
@Override |
protected void done() { |
List<SQLRow> execute; |
try { |
execute = get(); |
exportXML(l, execute); |
} catch (InterruptedException | ExecutionException e) { |
e.printStackTrace(); |
} |
} |
}.execute(); |
} |
}, true, false).setPredicate(IListeEvent.getNonEmptySelectionPredicate())); |
this.rowSociété = conf.getRowSociete(); |
this.dbPrefs = new SQLPreferences(conf.getRootSociete()); |
216,12 → 196,8 |
} |
protected static BigDecimal getInvoiceAmount(final SQLRowValues invoice) { |
if (invoice.getTable().getName().equals("SAISIE_VENTE_FACTURE")) { |
return BigDecimal.valueOf(invoice.getLong("NET_A_PAYER")).movePointLeft(2); |
} else { |
return BigDecimal.valueOf(invoice.getLong("MONTANT")).movePointLeft(2); |
} |
} |
static private final class InvoiceElem extends Tuple2<SQLRowValues, Element> { |
protected InvoiceElem(SQLRowValues a, Element b) { |
320,47 → 296,6 |
return IgnoreReason.NONE; |
} |
final IgnoreReason addEcheance(final SQLRowValues prlvt) { |
Date date = prlvt.getDate("DATE").getTime(); |
// don't ask direct debit too far in advance |
if (date.after(this.upperBound)) { |
return IgnoreReason.TOO_FAR_IN_FUTURE; |
} else if (date.before(this.lowerBound)) { |
date = this.lowerBound; |
} |
final Element elem; |
try { |
elem = createDDTx(this.elemCreator, prlvt); |
} catch (MissingInfoException e) { |
return IgnoreReason.MISSING_INFO; |
} |
// needed so that EndToEndId is unique |
if (!this.invoiceNumbers.add(prlvt.getForeign("ID_MOUVEMENT").getForeign("ID_PIECE").getString("NOM"))) |
throw new IllegalStateException("Duplicate invoice number : " + prlvt); |
final SQLRowAccessor mandate = prlvt.getForeign("ID_SEPA_MANDATE"); |
if (!mandate.getBoolean("ACTIVE")) |
throw new IllegalStateException("Inactive mandate for " + prlvt); |
// needed otherwise would have to update seqType while generating |
// MAYBE sum all invoices for a single mandate, but which date to choose ? |
if (!this.invoiceMandates.add(mandate.getString("MandateIdentification"))) |
return IgnoreReason.DUPLICATE_MANDATE; |
this.lockedInvoicesIDs.add(prlvt.getIDNumber()); |
ListMap<String, InvoiceElem> bySeqType = this.map.get(date); |
if (bySeqType == null) { |
bySeqType = new ListMap<>(); |
this.map.put(date, bySeqType); |
} |
bySeqType.add(mandate.getString("SequenceType"), new InvoiceElem(prlvt, elem)); |
this.sum = this.sum.add(BigDecimal.valueOf(prlvt.getLong("MONTANT")).movePointLeft(2)); |
return IgnoreReason.NONE; |
} |
public final int getTransactionCount() { |
return this.lockedInvoicesIDs.size(); |
} |
388,12 → 323,9 |
private final ListMapItf<IgnoreReason, SQLRowValues> ignoredInvoices; |
private final SQLRow insertedMessage; |
private final int invoiceCount; |
private final SQLTable table; |
protected GenerationResult(SQLTable table, Collection<? extends Number> passedIDs, List<SQLRowValues> withDDWithoutMessage, ListMap<IgnoreReason, SQLRowValues> ignoredInvoices, |
SQLRow insertedMessage) { |
protected GenerationResult(Collection<? extends Number> passedIDs, List<SQLRowValues> withDDWithoutMessage, ListMap<IgnoreReason, SQLRowValues> ignoredInvoices, SQLRow insertedMessage) { |
super(); |
this.table = table; |
this.passedIDs = passedIDs; |
this.withDDWithoutMessage = Collections.unmodifiableList(withDDWithoutMessage); |
assert !ignoredInvoices.containsKey(null) && !ignoredInvoices.containsKey(IgnoreReason.NONE); |
421,10 → 353,6 |
return this.invoiceCount; |
} |
public SQLTable getTable() { |
return table; |
} |
@Override |
public String toString() { |
return this.getClass().getSimpleName() + ": of the " + this.passedIDs.size() + " passed, " + this.withDDWithoutMessage.size() + " needed a SDD message, of those " |
432,7 → 360,7 |
} |
} |
public GenerationResult generateXML(final SQLTable table, Collection<? extends Number> invoiceIDs) throws SQLException { |
public GenerationResult generateXML(Collection<? extends Number> invoiceIDs) throws SQLException { |
final Namespace painNS = Namespace.getNamespace("urn:iso:std:iso:20022:tech:xsd:pain.008.001.02"); |
final Element rootElem = new Element("Document", painNS); |
final Namespace xsiNS = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); |
466,7 → 394,8 |
} |
}); |
final SQLField invoiceSDDMessageF = table.getField(SaisieVenteFactureSQLElement.MESSAGE_FIELD_NAME); |
final SQLTable invoiceT = getDirectory().getElement(SaisieVenteFactureSQLElement.class).getTable(); |
final SQLField invoiceSDDMessageF = invoiceT.getField(SaisieVenteFactureSQLElement.MESSAGE_FIELD_NAME); |
return SQLUtils.executeAtomic(getTable().getDBSystemRoot().getDataSource(), new ConnectionHandlerNoSetup<GenerationResult, SQLException>() { |
@Override |
public GenerationResult handle(SQLDataSource ds) throws SQLException { |
473,29 → 402,12 |
final SQLRowValues lockedSociété = selSociété.fetchOne(SDDMessageSQLElement.this.rowSociété.getIDNumber()); |
if (lockedSociété == null) |
throw new IllegalStateException("Missing société " + SDDMessageSQLElement.this.rowSociété); |
if (lockedSociété.getString("IBAN").trim().length() == 0) { |
throw new IllegalStateException("Missing société IBAN " + SDDMessageSQLElement.this.rowSociété); |
} |
if (lockedSociété.getString("BIC").trim().length() == 0) { |
throw new IllegalStateException("Missing société BIC " + SDDMessageSQLElement.this.rowSociété); |
} |
// find and lock invoices with TYPE_REGLEMENT direct debit and no message |
final SQLRowValues invoiceVals = new SQLRowValues(table); |
final boolean fromInvoices = table.getName().equals("SAISIE_VENTE_FACTURE"); |
if (fromInvoices) { |
final SQLRowValues invoiceVals = new SQLRowValues(invoiceT); |
invoiceVals.putRowValues("ID_CLIENT").putNulls("NOM", "BIC", "IBAN"); |
invoiceVals.putRowValues("ID_MODE_REGLEMENT").putNulls("AJOURS", "LENJOUR").putRowValues("ID_SEPA_MANDATE").setAllToNull(); |
invoiceVals.putNulls("NET_A_PAYER", "DATE", "NUMERO", "NOM"); |
} else { |
invoiceVals.putRowValues("ID_CLIENT").putNulls("NOM", "BIC", "IBAN"); |
invoiceVals.putRowValues("ID_SEPA_MANDATE").setAllToNull(); |
invoiceVals.putNulls("MONTANT", "DATE"); |
invoiceVals.putRowValues("ID_MOUVEMENT").putRowValues("ID_PIECE").setAllToNull(); |
} |
final SQLRowValuesListFetcher fetcher = SQLRowValuesListFetcher.create(invoiceVals); |
fetcher.setReturnedRowsUnmodifiable(true); |
// required for locking rows and to make sure that there's a SEPA Mandate |
505,30 → 417,21 |
public SQLSelect transformChecked(SQLSelect sel) { |
// we will update FACTURE.ID_MESSAGE |
sel.setLockStrength(LockStrength.UPDATE); |
if (fromInvoices) { |
final SQLSelectJoin join = sel.getJoin(table.getField("ID_MODE_REGLEMENT")); |
final SQLSelectJoin join = sel.getJoin(invoiceT.getField("ID_MODE_REGLEMENT")); |
join.setWhere(new Where(join.getJoinedTable().getField("ID_TYPE_REGLEMENT"), "=", TypeReglementSQLElement.PRELEVEMENT)); |
} |
return sel; |
} |
}); |
final List<SQLRowValues> ddInvoices = fetcher |
.fetch(new Where(table.getKey(), invoiceIDs).and(new Where(invoiceSDDMessageF, "=", invoiceSDDMessageF.getForeignTable().getUndefinedIDNumber()))); |
.fetch(new Where(invoiceT.getKey(), invoiceIDs).and(new Where(invoiceSDDMessageF, "=", invoiceSDDMessageF.getForeignTable().getUndefinedIDNumber()))); |
final InvoicesByPaymentInfo map = new InvoicesByPaymentInfo(lowerBound, upperBound, new ElementCreator(painNS, SDDMessageSQLElement.this.fieldTranslator)); |
final ListMap<IgnoreReason, SQLRowValues> ignoredInvoices = new ListMap<>(); |
for (final SQLRowValues invoice : ddInvoices) { |
if (fromInvoices) { |
final IgnoreReason ignoredReason = map.addInvoice(invoice); |
if (ignoredReason != IgnoreReason.NONE) { |
ignoredInvoices.add(ignoredReason, invoice); |
} |
} else { |
final IgnoreReason ignoredReason = map.addEcheance(invoice); |
if (ignoredReason != IgnoreReason.NONE) { |
ignoredInvoices.add(ignoredReason, invoice); |
} |
} |
} |
final SQLRow newMsg; |
final int txCount = map.getTransactionCount(); |
578,7 → 481,7 |
getTable().getDBRoot().setMetadata(SERIAL_MD, msgSerial); |
} |
return new GenerationResult(table, invoiceIDs, ddInvoices, ignoredInvoices, newMsg); |
return new GenerationResult(invoiceIDs, ddInvoices, ignoredInvoices, newMsg); |
} |
}); |
} |
652,8 → 555,7 |
res.addContent(creditor); |
final Element creditorAccount = new Element("CdtrAcct", painNS); |
String iban = lockedSociété.getString("IBAN").replaceAll(" ", ""); |
creditorAccount.addContent(new Element("Id", painNS).addContent(elemCreator.createWithNonEmptyText("IBAN", iban, "IBAN"))); |
creditorAccount.addContent(new Element("Id", painNS).addContent(elemCreator.createWithNonEmptyText("IBAN", lockedSociété, "IBAN"))); |
res.addContent(creditorAccount); |
final Element creditorAgent = new Element("CdtrAgt", painNS); |
690,13 → 592,7 |
invoiceElem.get1().addContent(0, paymentId); |
// update mandate fields |
final SQLRowAccessor mandate; |
if (invoiceElem.get0().contains("ID_SEPA_MANDATE")) { |
mandate = invoiceElem.get0().getForeign("ID_SEPA_MANDATE"); |
} else { |
mandate = invoiceElem.get0().getForeign("ID_MODE_REGLEMENT").getForeign("ID_SEPA_MANDATE"); |
} |
final SQLRowAccessor mandate = invoiceElem.get0().getForeign("ID_MODE_REGLEMENT").getForeign("ID_SEPA_MANDATE"); |
final String seqType = mandate.getString("SequenceType"); |
if (seqType.equals(SEPAMandateSQLElement.SEQ_FIRST)) { |
mandate.createEmptyUpdateRow().put("SequenceType", SEPAMandateSQLElement.SEQ_RECURRENT).update(); |
714,14 → 610,7 |
res.addContent(new Element("InstdAmt", painNS).setAttribute("Ccy", "EUR").setText(getInvoiceAmount(invoice).toPlainString())); |
final Element mandateRltdInfo = new Element("MndtRltdInf", painNS); |
final SQLRowAccessor mandate; |
final boolean fromInvoice = invoice.getTable().getName().equals("SAISIE_VENTE_FACTURE"); |
if (fromInvoice) { |
mandate = invoice.getForeign("ID_MODE_REGLEMENT").getForeign("ID_SEPA_MANDATE"); |
} else { |
mandate = invoice.getForeign("ID_SEPA_MANDATE"); |
} |
final SQLRowAccessor mandate = invoice.getForeign("ID_MODE_REGLEMENT").getForeign("ID_SEPA_MANDATE"); |
assert !mandate.isUndefined() : "Undefined mandate returned by fetcher"; |
mandateRltdInfo.addContent(elemCreator.createWithNonEmptyText("MndtId", mandate, "MandateIdentification")); |
mandateRltdInfo.addContent(elemCreator.createWithNonEmptyText("DtOfSgntr", formatDate(mandate.getObjectAs("DateOfSignature", Date.class)))); |
735,12 → 624,7 |
res.addContent(new Element("Purp", painNS).addContent(new Element("Cd", painNS).setText("OTHR"))); |
final String info; |
if (fromInvoice) { |
info = (invoice.getString("NUMERO") + ' ' + invoice.getString("NOM")).trim(); |
} else { |
info = invoice.getForeign("ID_MOUVEMENT").getForeign("ID_PIECE").getString("NOM"); |
} |
final String info = (invoice.getString("NUMERO") + ' ' + invoice.getString("NOM")).trim(); |
if (!info.isEmpty()) |
res.addContent(new Element("RmtInf", painNS).addContent(elemCreator.create("Ustrd").setText(elemCreator.shortenText(info, 140)))); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/payment/element/ReglerMontantSQLElement.java |
---|
15,16 → 15,9 |
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement; |
import org.openconcerto.sql.element.SQLComponent; |
import org.openconcerto.sql.model.FieldPath; |
import org.openconcerto.sql.model.SQLRowAccessor; |
import org.openconcerto.sql.model.graph.Path; |
import org.openconcerto.sql.view.list.BaseSQLTableModelColumn; |
import org.openconcerto.sql.view.list.SQLTableModelSource; |
import org.openconcerto.utils.CollectionUtils; |
import java.util.ArrayList; |
import java.util.List; |
import java.util.Set; |
public class ReglerMontantSQLElement extends ComptaSQLConfElement { |
35,7 → 28,7 |
protected List<String> getListFields() { |
final List<String> l = new ArrayList<String>(); |
l.add("DATE"); |
l.add("ID_FOURNISSEUR"); |
l.add("ID_ECHEANCE_FOURNISSEUR"); |
l.add("ID_MODE_REGLEMENT"); |
l.add("MONTANT"); |
return l; |
48,27 → 41,6 |
return l; |
} |
@Override |
protected void _initTableSource(SQLTableModelSource res) { |
super._initTableSource(res); |
final BaseSQLTableModelColumn racCol = new BaseSQLTableModelColumn("Report échéance", Boolean.class) { |
@Override |
protected Object show_(SQLRowAccessor r) { |
return !r.getForeign("ID_MODE_REGLEMENT").getBoolean("COMPTANT"); |
} |
@Override |
public Set<FieldPath> getPaths() { |
Path p = new Path(getTable()); |
Path p2 = p.add(p.getLast().getField("ID_MODE_REGLEMENT")); |
return CollectionUtils.createSet(new FieldPath(p2, "COMPTANT")); |
} |
}; |
res.getColumns().add(racCol); |
} |
public SQLComponent createComponent() { |
return new ReglerMontantSQLComponent(this); |
}; |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/payment/element/ReglerMontantSQLComponent.java |
---|
16,7 → 16,6 |
import org.openconcerto.erp.core.common.element.BanqueSQLElement; |
import org.openconcerto.erp.core.common.ui.DeviseField; |
import org.openconcerto.erp.core.finance.accounting.element.MouvementSQLElement; |
import org.openconcerto.erp.core.finance.payment.component.ModeDeReglementSQLComponent; |
import org.openconcerto.erp.core.finance.payment.ui.RegleMontantTable; |
import org.openconcerto.erp.generationEcritures.GenerationReglementAchat; |
import org.openconcerto.erp.preferences.ModeReglementDefautPrefPanel; |
146,9 → 145,6 |
this.addView("ID_MODE_REGLEMENT", BaseSQLComponent.REQ + ";" + BaseSQLComponent.DEC + ";" + BaseSQLComponent.SEP); |
final ElementSQLObject eltModeRegl = (ElementSQLObject) this.getView("ID_MODE_REGLEMENT"); |
this.add(eltModeRegl, c); |
ModeDeReglementSQLComponent modeReglComp; |
modeReglComp = (ModeDeReglementSQLComponent) eltModeRegl.getSQLChild(); |
modeReglComp.addDateCompListener(this.date); |
this.addRequiredSQLObject(this.date, "DATE"); |
this.addRequiredSQLObject(this.montant, "MONTANT"); |
191,6 → 187,9 |
int idTypeRegl = rowModeRegl.getInt("ID_TYPE_REGLEMENT"); |
SQLTable tableModeRegl = Configuration.getInstance().getDirectory().getElement("MODE_REGLEMENT").getTable(); |
SQLRowValues rowVals = new SQLRowValues(tableModeRegl); |
if (idTypeRegl > TypeReglementSQLElement.TRAITE) { |
idTypeRegl = TypeReglementSQLElement.CHEQUE; |
} |
rowVals.put("ID_TYPE_REGLEMENT", idTypeRegl); |
rowVals.put("COMPTANT", Boolean.TRUE); |
rowVals.put("AJOURS", 0); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/payment/ui/EncaisseMontantTable.java |
---|
62,18 → 62,15 |
final SQLTableElement tableElement_Mvt = new SQLTableElement(e.getTable().getField("ID_MOUVEMENT_ECHEANCE"), Integer.class, new DefaultCellEditor(new JTextField())); |
tableElement_Mvt.setRenderer(new KeyTableCellRenderer(Configuration.getInstance().getDirectory().getElement("MOUVEMENT"))); |
tableElement_Mvt.setEditable(false); |
list.add(tableElement_Mvt); |
// Date |
final SQLTableElement dateElement = new SQLTableElement(e.getTable().getField("DATE"), Timestamp.class, new TimestampTableCellEditor()); |
dateElement.setEditable(false); |
list.add(dateElement); |
// Total HT |
montantARegler = new SQLTableElement(e.getTable().getField("MONTANT_A_REGLER"), Long.class, new DeviseCellEditor()); |
montantARegler.setRenderer(new DeviseNiceTableCellRenderer()); |
montantARegler.setEditable(false); |
list.add(montantARegler); |
// Total HT |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/payment/component/EncaisserMontantSQLComponent.java |
---|
17,6 → 17,7 |
import org.openconcerto.erp.core.common.ui.DeviseField; |
import org.openconcerto.erp.core.finance.accounting.element.MouvementSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.EncaisserMontantSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.TypeReglementSQLElement; |
import org.openconcerto.erp.core.finance.payment.ui.EncaisseMontantTable; |
import org.openconcerto.erp.preferences.ModeReglementDefautPrefPanel; |
import org.openconcerto.sql.Configuration; |
65,85 → 66,7 |
private JLabel labelWarning = new JLabelWarning("Le montant est trop élevé!"); |
private JDate date; |
private ElementSQLObject eltModeRegl; |
final TableModelListener tableListener = new TableModelListener() { |
@Override |
public void tableChanged(TableModelEvent e) { |
final RowValuesTableModel model = table.getRowValuesTable().getRowValuesTableModel(); |
if (e.getColumn() == TableModelEvent.ALL_COLUMNS || e.getColumn() == model.getColumnIndexForElement(table.getMontantElement())) { |
final int rowCount = model.getRowCount(); |
long total = 0; |
for (int i = 0; i < rowCount; i++) { |
Number nHT = (Number) model.getValueAt(i, model.getColumnIndexForElement(table.getMontantElement())); |
if (nHT != null) { |
total += nHT.longValue(); |
} |
} |
montant.getDocument().removeDocumentListener(listenerMontant); |
montant.setText(GestionDevise.currencyToString(total)); |
montant.getDocument().addDocumentListener(listenerMontant); |
// Selection du mode de reglement |
if (getMode() == SQLComponent.Mode.INSERTION) { |
if (rowCount >= 1) { |
MouvementSQLElement element = getElement().getDirectory().getElement(MouvementSQLElement.class); |
SQLRowValues row1 = model.getRowValuesAt(0); |
if (row1.getObject("ID_MOUVEMENT_ECHEANCE") != null && !row1.isForeignEmpty("ID_MOUVEMENT_ECHEANCE")) { |
final int idScr = element.getSourceId(row1.getForeignID("ID_MOUVEMENT_ECHEANCE")); |
SQLTable tableMvt = element.getTable(); |
if (idScr > 1) { |
SQLRow rowMvt = tableMvt.getRow(idScr); |
String source = rowMvt.getString("SOURCE"); |
int idSource = rowMvt.getInt("IDSOURCE"); |
SQLElement eltSource = element.getDirectory().getElement(source); |
if (eltSource != null) { |
SQLRow rowSource = eltSource.getTable().getRow(idSource); |
if (rowSource != null) { |
SQLRow rowModeRegl = rowSource.getForeignRow("ID_MODE_REGLEMENT"); |
if (rowModeRegl != null) { |
System.err.println("Set mode de règlement"); |
int idTypeRegl = rowModeRegl.getInt("ID_TYPE_REGLEMENT"); |
SQLTable tableModeRegl = Configuration.getInstance().getDirectory().getElement("MODE_REGLEMENT").getTable(); |
SQLRowValues rowVals = new SQLRowValues(tableModeRegl); |
rowVals.put("ID_TYPE_REGLEMENT", idTypeRegl); |
rowVals.put("COMPTANT", Boolean.TRUE); |
rowVals.put("AJOURS", 0); |
rowVals.put("LENJOUR", 0); |
rowVals.put("ID_" + BanqueSQLElement.TABLENAME, rowModeRegl.getInt("ID_" + BanqueSQLElement.TABLENAME)); |
eltModeRegl.setValue(rowVals); |
} |
} |
} |
} |
} |
} |
} |
} |
if (e.getColumn() == TableModelEvent.ALL_COLUMNS || e.getColumn() == model.getColumnIndexForElement(table.getMontantElement()) |
|| e.getColumn() == model.getColumnIndexForElement(table.getMontantAReglerElement())) { |
updateWarning(); |
} |
} |
}; |
final SimpleDocumentListener listenerMontant = new SimpleDocumentListener() { |
@Override |
public void update(DocumentEvent e) { |
table.getRowValuesTable().getRowValuesTableModel().removeTableModelListener(tableListener); |
updateMontant(montant.getText()); |
table.getRowValuesTable().getRowValuesTableModel().addTableModelListener(tableListener); |
updateWarning(); |
} |
}; |
public EncaisserMontantSQLComponent(SQLElement elt) { |
super(elt); |
} |
161,6 → 84,7 |
c.weighty = 1; |
c.fill = GridBagConstraints.BOTH; |
this.add(this.table, c); |
this.table.getRowValuesTable().setEnabled(false); |
c.fill = GridBagConstraints.HORIZONTAL; |
c.gridwidth = 1; |
c.gridy++; |
220,13 → 144,11 |
c.gridx++; |
c.gridwidth = 3; |
c.weightx = 1; |
c.fill = GridBagConstraints.NONE; |
this.add(this.montant, c); |
// Warning |
c.gridx++; |
c.weightx = 0; |
c.gridwidth = GridBagConstraints.REMAINDER; |
this.labelWarning.setHorizontalAlignment(SwingConstants.RIGHT); |
this.add(this.labelWarning, c); |
248,12 → 170,9 |
c.gridy++; |
c.gridwidth = GridBagConstraints.REMAINDER; |
this.addView("ID_MODE_REGLEMENT", BaseSQLComponent.REQ + ";" + BaseSQLComponent.DEC + ";" + BaseSQLComponent.SEP); |
this.eltModeRegl = (ElementSQLObject) this.getView("ID_MODE_REGLEMENT"); |
this.add(this.eltModeRegl, c); |
ModeDeReglementSQLComponent modeReglComp; |
final ElementSQLObject eltModeRegl = (ElementSQLObject) this.getView("ID_MODE_REGLEMENT"); |
this.add(eltModeRegl, c); |
modeReglComp = (ModeDeReglementSQLComponent) this.eltModeRegl.getSQLChild(); |
modeReglComp.addDateCompListener(this.date); |
this.addRequiredSQLObject(this.date, "DATE"); |
this.addRequiredSQLObject(this.montant, "MONTANT"); |
263,7 → 182,78 |
this.addSQLObject(new JTextField(), "TIERS"); |
DefaultGridBagConstraints.lockMinimumSize(this.montant); |
this.montant.getDocument().addDocumentListener(listenerMontant); |
final TableModelListener tableListener = new TableModelListener() { |
@Override |
public void tableChanged(TableModelEvent e) { |
final RowValuesTableModel model = table.getRowValuesTable().getRowValuesTableModel(); |
if (e.getColumn() == TableModelEvent.ALL_COLUMNS || e.getColumn() == model.getColumnIndexForElement(table.getMontantElement())) { |
final int rowCount = model.getRowCount(); |
long total = 0; |
for (int i = 0; i < rowCount; i++) { |
Number nHT = (Number) model.getValueAt(i, model.getColumnIndexForElement(table.getMontantElement())); |
if (nHT != null) { |
total += nHT.longValue(); |
} |
} |
montant.setText(GestionDevise.currencyToString(total)); |
// Selection du mode de reglement |
if (getMode() == SQLComponent.Mode.INSERTION) { |
if (rowCount >= 1 && model.getRowValuesAt(0).getObject("ID_MOUVEMENT_ECHEANCE") != null && !model.getRowValuesAt(0).isForeignEmpty("ID_MOUVEMENT_ECHEANCE")) { |
final int idScr = MouvementSQLElement.getSourceId(model.getRowValuesAt(0).getInt("ID_MOUVEMENT_ECHEANCE")); |
SQLTable tableMvt = Configuration.getInstance().getDirectory().getElement("MOUVEMENT").getTable(); |
if (idScr > 1) { |
SQLRow rowMvt = tableMvt.getRow(idScr); |
String source = rowMvt.getString("SOURCE"); |
int idSource = rowMvt.getInt("IDSOURCE"); |
SQLElement eltSource = Configuration.getInstance().getDirectory().getElement(source); |
if (eltSource != null) { |
SQLRow rowSource = eltSource.getTable().getRow(idSource); |
if (rowSource != null) { |
SQLRow rowModeRegl = rowSource.getForeignRow("ID_MODE_REGLEMENT"); |
if (rowModeRegl != null) { |
System.err.println("Set mode de règlement"); |
int idTypeRegl = rowModeRegl.getInt("ID_TYPE_REGLEMENT"); |
SQLTable tableModeRegl = Configuration.getInstance().getDirectory().getElement("MODE_REGLEMENT").getTable(); |
SQLRowValues rowVals = new SQLRowValues(tableModeRegl); |
if (idTypeRegl == TypeReglementSQLElement.INDEFINI) { |
idTypeRegl = TypeReglementSQLElement.CHEQUE; |
} |
rowVals.put("ID_TYPE_REGLEMENT", idTypeRegl); |
rowVals.put("COMPTANT", Boolean.TRUE); |
rowVals.put("AJOURS", 0); |
rowVals.put("LENJOUR", 0); |
rowVals.put("ID_" + BanqueSQLElement.TABLENAME, rowModeRegl.getInt("ID_" + BanqueSQLElement.TABLENAME)); |
eltModeRegl.setValue(rowVals); |
} |
} |
} |
} |
} |
} |
} |
if (e.getColumn() == TableModelEvent.ALL_COLUMNS || e.getColumn() == model.getColumnIndexForElement(table.getMontantAReglerElement())) { |
updateWarning(); |
} |
} |
}; |
this.montant.getDocument().addDocumentListener(new SimpleDocumentListener() { |
@Override |
public void update(DocumentEvent e) { |
table.getRowValuesTable().getRowValuesTableModel().removeTableModelListener(tableListener); |
updateMontant(montant.getText()); |
table.getRowValuesTable().getRowValuesTableModel().addTableModelListener(tableListener); |
updateWarning(); |
} |
}); |
this.table.getRowValuesTable().getRowValuesTableModel().addTableModelListener(tableListener); |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/finance/payment/component/ModeDeReglementSQLComponent.java |
---|
15,7 → 15,6 |
import org.openconcerto.erp.config.Log; |
import org.openconcerto.erp.core.common.element.BanqueSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.ModeDeReglementSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.TypeReglementSQLElement; |
import org.openconcerto.erp.model.BanqueModifiedListener; |
import org.openconcerto.sql.element.BaseSQLComponent; |
41,7 → 40,6 |
import java.awt.event.ItemListener; |
import java.beans.PropertyChangeEvent; |
import java.beans.PropertyChangeListener; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.Map; |
import java.util.Set; |
281,39 → 279,6 |
}); |
} |
public void addDateCompListener(JDate dateParent) { |
dateParent.addPropertyChangeListener(new PropertyChangeListener() { |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
ModeDeReglementSQLComponent.this.currentDate = dateParent.getValue(); |
refreshDatePrev(); |
} |
}); |
dateParent.addValueListener(new PropertyChangeListener() { |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
ModeDeReglementSQLComponent.this.currentDate = dateParent.getValue(); |
refreshDatePrev(); |
} |
}); |
} |
private void refreshDatePrev() { |
if (this.currentDate != null) { |
int aJ = this.comboA.getValue().trim().length() == 0 ? 0 : Integer.valueOf(this.comboA.getValue()); |
int nJ = this.comboLe.getValue().trim().length() == 0 ? 0 : Integer.valueOf(this.comboLe.getValue()); |
Date d = ModeDeReglementSQLElement.calculDate(aJ, nJ, this.currentDate); |
this.datePrev.setDate(d); |
} else { |
this.datePrev.setDate(null); |
} |
} |
private JDate datePrev = new JDate(); |
private Date currentDate = null; |
private void createPanelEcheance() { |
final GridBagConstraints c = new DefaultGridBagConstraints(); |
325,13 → 290,6 |
this.comboA.setMinimumSize(new Dimension(60, this.comboA.getMinimumSize().height)); |
this.comboA.setPreferredSize(new Dimension(60, this.comboA.getMinimumSize().height)); |
this.comboA.setMaximumSize(new Dimension(60, this.comboA.getMinimumSize().height)); |
this.comboA.addValueListener(new PropertyChangeListener() { |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
refreshDatePrev(); |
} |
}); |
this.panelEcheance.add(this.comboA, c); |
c.gridx += 1; |
c.gridwidth = 1; |
342,21 → 300,7 |
c.fill = GridBagConstraints.HORIZONTAL; |
this.buttonDateFacture.setOpaque(false); |
this.panelEcheance.add(this.buttonDateFacture, c); |
c.gridy++; |
c.gridx = 0; |
c.weightx = 1; |
c.gridwidth = 1; |
// ((BaseSQLComponent)((ElementSQLObject)getSQLParent()).getSQLParent()).getView("DATE"); |
this.panelEcheance.add(new JLabel("Soit le"), c); |
c.gridx++; |
c.gridwidth = 1; |
this.datePrev.setEnabled(false); |
this.panelEcheance.add(this.datePrev, c); |
// c.gridy++; |
c.gridwidth = 2; |
c.gridx = 3; |
c.weightx = 0; |
c.fill = GridBagConstraints.NONE; |
this.buttonFinMois.setOpaque(false); |
370,13 → 314,6 |
this.comboLe.setMinimumSize(new Dimension(60, this.comboLe.getMinimumSize().height)); |
this.comboLe.setPreferredSize(new Dimension(60, this.comboLe.getMinimumSize().height)); |
this.comboLe.setMaximumSize(new Dimension(60, this.comboLe.getMinimumSize().height)); |
this.comboLe.addValueListener(new PropertyChangeListener() { |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
refreshDatePrev(); |
} |
}); |
this.panelEcheance.add(this.comboLe, c); |
this.panelActive = this.panelEcheance; |
this.m.put(Mode.ECHEANCE, this.panelEcheance); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/humanresources/payroll/element/CodeAmenagementPartielSQLElement.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/humanresources/payroll/element/CodeSuspensionSQLElement.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/humanresources/payroll/element/FichePayeSQLElement.java |
---|
21,6 → 21,7 |
import org.openconcerto.erp.core.humanresources.payroll.report.FichePayeSheetXML; |
import org.openconcerto.erp.core.humanresources.payroll.ui.FichePayeRenderer; |
import org.openconcerto.erp.core.humanresources.payroll.ui.PanelCumulsPaye; |
import org.openconcerto.erp.generationEcritures.GenerationMvtFichePaye; |
import org.openconcerto.erp.model.FichePayeModel; |
import org.openconcerto.erp.model.MouseSheetXmlListeListener; |
import org.openconcerto.erp.model.RubriquePayeTree; |
48,9 → 49,9 |
import org.openconcerto.sql.view.list.RowAction.PredicateRowAction; |
import org.openconcerto.ui.DefaultGridBagConstraints; |
import org.openconcerto.ui.JDate; |
import org.openconcerto.ui.component.ITextArea; |
import org.openconcerto.ui.component.InteractionMode; |
import org.openconcerto.utils.ExceptionHandler; |
import org.openconcerto.utils.ListMap; |
import java.awt.GridBagConstraints; |
import java.awt.GridBagLayout; |
101,32 → 102,9 |
}, true); |
actionCumuls.setPredicate(IListeEvent.getSingleSelectionPredicate()); |
getRowActions().add(actionCumuls); |
PredicateRowAction genererNonSimplifie = new PredicateRowAction(new AbstractAction("Créer le bulletin détaillé") { |
@Override |
public void actionPerformed(ActionEvent e) { |
SQLRow row = IListe.get(e).getSelectedRow().asRow(); |
FichePayeSheetXML sheet = new FichePayeSheetXML(row, false); |
try { |
sheet.createDocument(); |
sheet.showPrintAndExport(true, false, true); |
} catch (Exception e1) { |
ExceptionHandler.handle("Erreur lors de la création du document.", e1); |
} |
} |
}, false); |
genererNonSimplifie.setPredicate(IListeEvent.getSingleSelectionPredicate()); |
getRowActions().add(genererNonSimplifie); |
} |
@Override |
public ListMap<String, String> getShowAs() { |
final ListMap<String, String> map = new ListMap<>(); |
map.put("ID_SALARIE", Arrays.asList("CODE", "NOM", "PRENOM", "ID_REGLEMENT_PAYE")); |
return map; |
} |
protected List<String> getListFields() { |
final List<String> l = new ArrayList<String>(); |
l.add("ID_SALARIE"); |
177,6 → 155,7 |
JDate dateDu, dateAu; |
private JScrollPane paneTreeLeft; |
private JPanel pDate; |
private JButton buttonValider, buttonGenCompta; |
public void addViews() { |
208,7 → 187,7 |
c.gridheight = 1; |
c.gridwidth = 2; |
this.selSalCombo = new ElementComboBox(); |
// c.gridx++; |
panelRight.add(this.selSalCombo, c); |
// Mois |
220,6 → 199,7 |
this.dateDu = new JDate(); |
this.dateAu = new JDate(); |
// JTextField textMois = new JTextField(); |
JLabel labelAnnee = new JLabel("Année"); |
this.textAnnee = new JTextField(); |
{ |
245,6 → 225,7 |
this.pDate.add(this.dateAu, cDate); |
c.gridy++; |
// c.gridx++; |
c.fill = GridBagConstraints.HORIZONTAL; |
c.weightx = 1; |
c.weighty = 0; |
252,6 → 233,11 |
c.gridwidth = 2; |
panelRight.add(this.pDate, c); |
} |
// c.gridx += 2; |
// c.weightx = 1; |
// c.gridwidth = 1; |
// c.fill = GridBagConstraints.HORIZONTAL; |
// panelRight.add(new JPanel(), c); |
// Action Button |
317,16 → 303,16 |
// Total Periode |
JPanel panelTotal = new JPanel(new GridBagLayout()); |
panelTotal.setBorder(BorderFactory.createTitledBorder("Totaux sur la période")); |
panelTotal.setBorder(BorderFactory.createTitledBorder("Total période")); |
GridBagConstraints cPanel = new DefaultGridBagConstraints(); |
JLabel labelInfosConges = new JLabel(getLabelFor("DETAILS_CONGES")); |
panelTotal.add(labelInfosConges, cPanel); |
JTextField textConges = new JTextField(); |
ITextArea textConges = new ITextArea(); |
cPanel.gridx++; |
cPanel.weightx = 1; |
cPanel.gridwidth = 5; |
cPanel.gridwidth = GridBagConstraints.REMAINDER; |
panelTotal.add(textConges, cPanel); |
addView(textConges, "DETAILS_CONGES"); |
339,7 → 325,7 |
panelTotal.add(labelBrut, cPanel); |
JTextField textSalBrut = new JTextField(10); |
cPanel.gridx++; |
cPanel.weightx = 1; |
cPanel.weightx = 0; |
panelTotal.add(textSalBrut, cPanel); |
textSalBrut.setEditable(false); |
textSalBrut.setEnabled(false); |
346,12 → 332,10 |
// acompte |
cPanel.gridx++; |
cPanel.weightx = 0; |
JLabel labelAcompte = new JLabel(getLabelFor("ACOMPTE")); |
panelTotal.add(labelAcompte, cPanel); |
JTextField textAcompte = new JTextField(10); |
cPanel.gridx++; |
cPanel.weightx = 1; |
panelTotal.add(textAcompte, cPanel); |
// textAcompte.setEditable(false); |
// textAcompte.setEnabled(false); |
358,23 → 342,19 |
// Conges Acquis |
cPanel.gridx++; |
cPanel.weightx = 0; |
JLabel labelCongesAcquis = new JLabel(getLabelFor("CONGES_ACQUIS")); |
panelTotal.add(labelCongesAcquis, cPanel); |
JTextField textCongesAcquis = new JTextField(10); |
cPanel.gridx++; |
cPanel.weightx = 1; |
panelTotal.add(textCongesAcquis, cPanel); |
// cotisation salariale |
cPanel.gridx = 0; |
cPanel.gridy++; |
cPanel.weightx = 0; |
JLabel labelCotSal = new JLabel(getLabelFor("COT_SAL")); |
panelTotal.add(labelCotSal, cPanel); |
JTextField textCotSal = new JTextField(10); |
cPanel.gridx++; |
cPanel.weightx = 1; |
panelTotal.add(textCotSal, cPanel); |
textCotSal.setEditable(false); |
textCotSal.setEnabled(false); |
381,12 → 361,10 |
// cotisation patronale |
cPanel.gridx++; |
cPanel.weightx = 0; |
JLabel labelCotPat = new JLabel(getLabelFor("COT_PAT")); |
panelTotal.add(labelCotPat, cPanel); |
JTextField textCotPat = new JTextField(10); |
cPanel.gridx++; |
cPanel.weightx = 1; |
panelTotal.add(textCotPat, cPanel); |
textCotPat.setEditable(false); |
textCotPat.setEnabled(false); |
393,11 → 371,9 |
JLabel labelCSG = new JLabel(getLabelFor("CSG")); |
cPanel.gridx++; |
cPanel.weightx = 0; |
panelTotal.add(labelCSG, cPanel); |
JTextField textCSG = new JTextField(10); |
cPanel.gridx++; |
cPanel.weightx = 1; |
panelTotal.add(textCSG, cPanel); |
textCSG.setEditable(false); |
textCSG.setEnabled(false); |
405,34 → 381,28 |
// net imposable |
cPanel.gridx = 0; |
cPanel.gridy++; |
cPanel.weightx = 0; |
JLabel labelNetImp = new JLabel(getLabelFor("NET_IMP")); |
panelTotal.add(labelNetImp, cPanel); |
JTextField textNetImp = new JTextField(10); |
cPanel.gridx++; |
cPanel.weightx = 1; |
panelTotal.add(textNetImp, cPanel); |
textNetImp.setEditable(false); |
textNetImp.setEnabled(false); |
cPanel.gridx++; |
cPanel.weightx = 0; |
JLabel labelNetAPayer = new JLabel(getLabelFor("NET_A_PAYER")); |
panelTotal.add(labelNetAPayer, cPanel); |
JTextField textNetAPayer = new JTextField(10); |
cPanel.gridx++; |
cPanel.weightx = 1; |
panelTotal.add(textNetAPayer, cPanel); |
textNetAPayer.setEditable(false); |
textNetAPayer.setEnabled(false); |
cPanel.gridx++; |
cPanel.weightx = 0; |
JLabel labelCice = new JLabel(getLabelFor("CICE")); |
panelTotal.add(labelCice, cPanel); |
JTextField textCice = new JTextField(10); |
cPanel.gridx++; |
cPanel.weightx = 1; |
panelTotal.add(textCice, cPanel); |
textCice.setEditable(false); |
textCice.setEnabled(false); |
448,6 → 418,18 |
// Cumuls |
c.gridx = 1; |
c.gridy++; |
c.gridwidth = 1; |
c.fill = GridBagConstraints.NONE; |
this.buttonValider = new JButton("Valider"); |
// panelRight.add(buttonValider, c); |
c.gridx++; |
c.gridwidth = 1; |
this.buttonGenCompta = new JButton("Generer la comptabilité"); |
// panelRight.add(buttonGenCompta, c); |
GridBagConstraints cGlobal = new DefaultGridBagConstraints(); |
cGlobal.gridx = 0; |
cGlobal.gridy = 0; |
458,6 → 440,32 |
cGlobal.weighty = 1; |
this.add(new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, this.paneTreeLeft, panelRight), cGlobal); |
// Listeners |
this.buttonGenCompta.addActionListener(new ActionListener() { |
public void actionPerformed(ActionEvent e) { |
try { |
int[] i = new int[1]; |
i[0] = getSelectedID(); |
SQLRow rowMois = getTable().getBase().getTable("MOIS").getRow(selMois.getSelectedId()); |
new GenerationMvtFichePaye(i, rowMois.getString("NOM"), textAnnee.getText()); |
} catch (Exception ex) { |
ExceptionHandler.handle("Erreur de génération des mouvements", ex); |
} |
} |
}); |
this.buttonValider.addActionListener(new ActionListener() { |
public void actionPerformed(ActionEvent e) { |
try { |
validationFiche(); |
} catch (SQLException e1) { |
ExceptionHandler.handle("Error while updating pay slip", e1); |
} |
} |
}); |
buttonUp.addActionListener(new ActionListener() { |
public void actionPerformed(ActionEvent e) { |
557,6 → 565,7 |
cal.set(Calendar.DAY_OF_MONTH, 1); |
cal.set(Calendar.MONTH, selMois.getSelectedId() - 2); |
System.err.println("Du " + cal.getTime()); |
dateDu.setValue(cal.getTime()); |
} |
fireValidChange(); |
582,6 → 591,7 |
cal.set(Calendar.DAY_OF_MONTH, 1); |
cal.set(Calendar.MONTH, selMois.getSelectedId() - 2); |
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); |
System.err.println("Au " + cal.getTime()); |
dateAu.setValue(cal.getTime()); |
} |
fireValidChange(); |
670,6 → 680,7 |
this.selSalCombo.setVisible(((Boolean) r.getObject("VALIDE")).booleanValue()); |
this.paneTreeLeft.setVisible(!((Boolean) r.getObject("VALIDE")).booleanValue()); |
this.buttonValider.setVisible(!((Boolean) r.getObject("VALIDE")).booleanValue()); |
setpDateEnabled(!((Boolean) r.getObject("VALIDE")).booleanValue()); |
} |
this.selSalCombo.setInteractionMode(InteractionMode.DISABLED); |
679,16 → 690,30 |
} |
private void setpDateEnabled(boolean b) { |
// System.err.println("Set date enable --> " + b); |
this.selMois.setInteractionMode((b) ? InteractionMode.READ_WRITE : InteractionMode.DISABLED); |
// this.selMois.setEnabled(b); |
this.textAnnee.setEditable(b); |
this.textAnnee.setEnabled(b); |
this.dateDu.setInteractionMode((b) ? InteractionMode.READ_WRITE : InteractionMode.DISABLED); |
this.dateAu.setInteractionMode((b) ? InteractionMode.READ_WRITE : InteractionMode.DISABLED); |
} |
private void validationFiche() throws SQLException { |
this.update(); |
FichePayeSQLElement.validationFiche(this.getSelectedID()); |
} |
protected SQLRowValues createDefaults() { |
final SQLRowValues rowVals = new SQLRowValues(getTable()); |
final Calendar cal = Calendar.getInstance(); |
System.err.println("**********Set Defaults on FichePaye.date"); |
SQLRowValues rowVals = new SQLRowValues(getTable()); |
Calendar cal = Calendar.getInstance(); |
rowVals.put("ID_MOIS", cal.get(Calendar.MONTH) + 2); |
rowVals.put("ANNEE", cal.get(Calendar.YEAR)); |
714,6 → 739,7 |
if (JOptionPane.showConfirmDialog(null, "Soustraire les cumuls de cette fiche à celle en cours?", "Suppression d'une fiche de paye", |
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { |
// on effectue le cumul |
// System.err.println("Calcul des cumuls"); |
SQLRow rowSal = row.getForeignRow("ID_SALARIE"); |
819,8 → 845,13 |
// creer et associer une nouvelle fiche au salarie |
final SQLRowValues rowValsNewFiche = new SQLRowValues(tableFiche); |
try { |
SQLRow r = rowValsNewFiche.insert(); |
rowValsNewFiche.put("ID", r.getID()); |
// System.err.println("rowValsNewFiche -----> " + r.getID()); |
} catch (SQLException e) { |
e.printStackTrace(); |
} |
// mis a jour de la periode |
int mois = rowFiche.getInt("ID_MOIS"); |
834,6 → 865,22 |
calDu.set(Calendar.DAY_OF_MONTH, calDu.getActualMaximum(Calendar.DAY_OF_MONTH)); |
rowValsNewFiche.put("AU", calDu.getTime()); |
rowValsNewFiche.put("ID_PROFIL_PAYE", rowFiche.getInt("ID_PROFIL_PAYE")); |
/* |
* int ancMois = rowFiche.getInt("ID_MOIS"); int ancAnnee = rowFiche.getInt("ANNEE"); |
* |
* rowValsSal.put("DERNIER_MOIS", ancMois); rowValsSal.put("DERNIERE_ANNEE", ancAnnee); |
* |
* try { rowValsSal.update(rowFiche.getInt("ID_SALARIE")); } catch (SQLException e1) { |
* e1.printStackTrace(); } |
* |
* int mois = ancMois - 2; mois = (mois + 1) % 12; mois += 2; int annee = ancAnnee; if (mois |
* == 2) { annee++; } rowValsNewFiche.put("ID_MOIS", mois); rowValsNewFiche.put("ANNEE", |
* annee); rowValsNewFiche.put("ID_PROFIL_PAYE", rowFiche.getInt("ID_PROFIL_PAYE")); |
* |
* try { rowValsNewFiche.update(); } catch (SQLException e) { e.printStackTrace(); } |
*/ |
rowValsNewFiche.put("ID_SALARIE", rowSal.getID()); |
rowValsSal.put("ID_FICHE_PAYE", rowValsNewFiche.getID()); |
872,6 → 919,7 |
} |
// on effectue le cumul |
// System.err.println("Calcul des cumuls"); |
final SQLRow rowVarSal = tableVariableSal.getRow(rowSal.getInt("ID_VARIABLE_SALARIE")); |
int idCumuls = rowSal.getInt("ID_CUMULS_PAYE"); |
SQLRow rowCumuls = tableCumuls.getRow(idCumuls); |
884,9 → 932,10 |
float netAPayer = rowCumuls.getFloat("NET_A_PAYER_C") + rowFiche.getFloat("NET_A_PAYER") + rowFiche.getFloat("ACOMPTE"); |
rowValsCumul.put("NET_A_PAYER_C", new Float(netAPayer)); |
SQLRow row = rowValsCumul.insert(); |
rowValsCumul.put("ID", row.getID()); |
SQLRow r = rowValsCumul.insert(); |
rowValsCumul.put("ID", r.getID()); |
// System.err.println("Mis a jour de la fiche de paye"); |
rowValsSal.put("ID_CUMULS_PAYE", rowValsCumul.getID()); |
SwingUtilities.invokeLater(new Runnable() { |
1005,7 → 1054,13 |
e1.printStackTrace(); |
} |
} |
/* |
* int mois = ancMois - 2; mois = (mois + 1) % 12; mois += 2; int annee = ancAnnee; if (mois |
* == 2) { annee++; } rowValsNewFiche.put("ID_MOIS", mois); rowValsNewFiche.put("ANNEE", |
* annee); rowValsNewFiche.put("ID_PROFIL_PAYE", rowFiche.getInt("ID_PROFIL_PAYE")); |
* |
* try { rowValsNewFiche.update(); } catch (SQLException e) { e.printStackTrace(); } |
*/ |
} |
// stocke les éléments validés (cumuls congés, paye, ...) |
1039,6 → 1094,7 |
private static void validElements(int id) { |
SQLBase base = ((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete(); |
System.err.println("Validation des éléments de la fiche."); |
String trueString = "1"; |
if (Configuration.getInstance().getBase().getServer().getSQLSystem() == SQLSystem.POSTGRESQL) { |
trueString = "true"; |
1047,6 → 1103,7 |
base.getDataSource().execute(req); |
System.err.println("Validation terminée."); |
} |
private static boolean checkDateValid(int idFiche) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/humanresources/payroll/element/VariablePayeSQLElement.java |
---|
261,7 → 261,6 |
l2.add(tableFichePaye.getField("NET_IMP")); |
l2.add(tableFichePaye.getField("NET_A_PAYER")); |
l2.add(tableFichePaye.getField("CSG")); |
l2.add(tableFichePaye.getField("CSG_REDUITE")); |
mapTree.put("Contenu paye", l2); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/humanresources/payroll/element/ContratSalarieSQLElement.java |
---|
22,8 → 22,6 |
import java.awt.GridBagConstraints; |
import java.awt.GridBagLayout; |
import java.beans.PropertyChangeEvent; |
import java.beans.PropertyChangeListener; |
import java.util.ArrayList; |
import java.util.Arrays; |
import java.util.HashSet; |
100,10 → 98,8 |
this.add(labelNature, c); |
c.gridx++; |
c.weightx = 1; |
c.gridwidth = 3; |
this.add(textNature, c); |
c.gridwidth = 1; |
// Catégorie socioprofessionnelle |
JLabel labelCatSocio = new JLabel(getLabelFor("ID_CODE_EMPLOI")); |
labelCatSocio.setHorizontalAlignment(SwingConstants.RIGHT); |
117,10 → 113,13 |
c.weightx = 1; |
this.add(selCodeCatSocio, c); |
JLabel complPCSLabel = new JLabel(getLabelFor("COMPLEMENT_PCS")); |
complPCSLabel.setHorizontalAlignment(SwingConstants.RIGHT); |
JTextField complPCS = new JTextField(); |
c.gridx++; |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(complPCSLabel, c); |
c.gridx++; |
128,49 → 127,6 |
this.add(complPCS, c); |
addView(complPCS, "COMPLEMENT_PCS"); |
JLabel objetSpecLabel = new JLabel(getLabelFor("SPECTACLE_OBJET")); |
objetSpecLabel.setHorizontalAlignment(SwingConstants.RIGHT); |
JTextField objetSpec = new JTextField(); |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(objetSpecLabel, c); |
c.gridx++; |
c.weightx = 1; |
this.add(objetSpec, c); |
addView(objetSpec, "SPECTACLE_OBJET"); |
objetSpec.setEditable(false); |
JLabel jourContratLabel = new JLabel(getLabelFor("SPECTACLE_JOUR_CONTRAT")); |
jourContratLabel.setHorizontalAlignment(SwingConstants.RIGHT); |
JTextField jourContrat = new JTextField(); |
c.gridx++; |
c.weightx = 0; |
this.add(jourContratLabel, c); |
c.gridx++; |
c.weightx = 1; |
this.add(jourContrat, c); |
addView(jourContrat, "SPECTACLE_JOUR_CONTRAT"); |
jourContrat.setEditable(false); |
final ElementComboBox selCaractActivite = new ElementComboBox(); |
selCaractActivite.setInfoIconVisible(false); |
this.addRequiredSQLObject(selCaractActivite, "ID_CODE_CARACT_ACTIVITE"); |
selCaractActivite.addModelListener("wantedID", new PropertyChangeListener() { |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
final boolean b = selCaractActivite.getSelectedRow() != null && selCaractActivite.getSelectedRow().getString("CODE").equals("04"); |
objetSpec.setEditable(b); |
jourContrat.setEditable(b); |
if (!b) { |
objetSpec.setText(""); |
; |
jourContrat.setText(""); |
} |
} |
}); |
// Contrat de travail |
JLabel labelContratTravail = new JLabel(getLabelFor("ID_CODE_CONTRAT_TRAVAIL")); |
labelContratTravail.setHorizontalAlignment(SwingConstants.RIGHT); |
189,7 → 145,8 |
labelDroitContrat.setHorizontalAlignment(SwingConstants.RIGHT); |
ElementComboBox selDroitContrat = new ElementComboBox(); |
selDroitContrat.setInfoIconVisible(false); |
c.gridx++; |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(labelDroitContrat, c); |
c.gridx++; |
199,7 → 156,8 |
// caracteristiques activité |
JLabel labelCaractActivite = new JLabel(getLabelFor("ID_CODE_CARACT_ACTIVITE")); |
labelCaractActivite.setHorizontalAlignment(SwingConstants.RIGHT); |
ElementComboBox selCaractActivite = new ElementComboBox(); |
selCaractActivite.setInfoIconVisible(false); |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
213,7 → 171,8 |
labelStatutProf.setHorizontalAlignment(SwingConstants.RIGHT); |
ElementComboBox selStatutProf = new ElementComboBox(); |
selStatutProf.setInfoIconVisible(false); |
c.gridx++; |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(labelStatutProf, c); |
c.gridx++; |
230,6 → 189,7 |
c.weightx = 0; |
this.add(labelStatutCat, c); |
c.gridx++; |
c.weighty = 1; |
c.weightx = 1; |
this.add(selStatutCat, c); |
238,28 → 198,39 |
labelStatutCatConv.setHorizontalAlignment(SwingConstants.RIGHT); |
ElementComboBox selStatutCatConv = new ElementComboBox(); |
selStatutCatConv.setInfoIconVisible(false); |
c.gridx++; |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(labelStatutCatConv, c); |
c.gridx++; |
c.weighty = 1; |
c.weightx = 1; |
this.add(selStatutCatConv, c); |
List<String> dsnFF = Arrays.asList("ID_CONTRAT_MODALITE_TEMPS", "ID_CONTRAT_REGIME_MALADIE", "ID_CONTRAT_REGIME_VIEILLESSE", "ID_CONTRAT_DETACHE_EXPATRIE", |
"ID_CONTRAT_DISPOSITIF_POLITIQUE", "ID_CONTRAT_MOTIF_RECOURS"); |
int p = 0; |
"ID_CONTRAT_DISPOSITIF_POLITIQUE"); |
for (String ffName : dsnFF) { |
JLabel labelFF = new JLabel(getLabelFor(ffName)); |
labelFF.setHorizontalAlignment(SwingConstants.RIGHT); |
ElementComboBox selFF = new ElementComboBox(); |
selFF.setInfoIconVisible(false); |
if (p % 2 == 0) { |
c.gridy++; |
c.gridx = 0; |
} else { |
c.weightx = 0; |
this.add(labelFF, c); |
c.gridx++; |
c.weighty = 1; |
c.weightx = 1; |
this.add(selFF, c); |
this.addRequiredSQLObject(selFF, ffName); |
} |
p++; |
JLabel labelFF = new JLabel(getLabelFor("ID_CONTRAT_MOTIF_RECOURS")); |
labelFF.setHorizontalAlignment(SwingConstants.RIGHT); |
ElementComboBox selFF = new ElementComboBox(); |
selFF.setInfoIconVisible(false); |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(labelFF, c); |
c.gridx++; |
266,12 → 237,7 |
c.weighty = 1; |
c.weightx = 1; |
this.add(selFF, c); |
if (ffName.equals("ID_CONTRAT_MOTIF_RECOURS")) { |
this.addSQLObject(selFF, ffName); |
} else { |
this.addRequiredSQLObject(selFF, ffName); |
} |
} |
this.addSQLObject(selFF, "ID_CONTRAT_MOTIF_RECOURS"); |
// Code Arrco, agirc retirés du contrat et ajoutés dans les caisses de cotisations |
372,18 → 338,18 |
// this.add(textCodeRegimeRetraite, c); |
// addRequiredSQLObject(textCodeRegimeRetraite, "CODE_REGIME_RETRAITE_DSN"); |
// JLabel labelDateModif = new JLabel(getLabelFor("DATE_MODIFICATION")); |
// labelDateModif.setHorizontalAlignment(SwingConstants.RIGHT); |
// JDate textDateModif = new JDate(); |
// c.gridy++; |
// c.gridx = 0; |
// c.weightx = 0; |
// this.add(textDateModif, c); |
// c.gridx++; |
// c.weighty = 1; |
// c.weightx = 1; |
// this.add(textDateModif, c); |
// addSQLObject(textDateModif, "DATE_MODIFICATION"); |
JLabel labelDateModif = new JLabel(getLabelFor("DATE_MODIFICATION")); |
labelDateModif.setHorizontalAlignment(SwingConstants.RIGHT); |
JDate textDateModif = new JDate(); |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(textDateModif, c); |
c.gridx++; |
c.weighty = 1; |
c.weightx = 1; |
this.add(textDateModif, c); |
addSQLObject(textDateModif, "DATE_MODIFICATION"); |
// JLabel labelCM = new JLabel(getLabelFor("ID_INFOS_SALARIE_PAYE_MODIFIE")); |
// labelCM.setHorizontalAlignment(SwingConstants.RIGHT); |
410,6 → 376,7 |
c.weightx = 0; |
this.add(labelDateDebut, c); |
c.gridx++; |
c.weighty = 1; |
c.weightx = 1; |
this.add(textDateDebut, c); |
addSQLObject(textDateDebut, "DATE_DEBUT", REQ); |
417,64 → 384,19 |
JLabel labelDateFin = new JLabel(getLabelFor("DATE_PREV_FIN")); |
labelDateFin.setHorizontalAlignment(SwingConstants.RIGHT); |
JDate textDateFin = new JDate(); |
c.gridx++; |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(labelDateFin, c); |
c.gridx++; |
c.weighty = 1; |
c.weightx = 1; |
this.add(textDateFin, c); |
addSQLObject(textDateFin, "DATE_PREV_FIN"); |
JLabel labelAmen = new JLabel(getLabelFor("ID_CODE_AMENAGEMENT_PARTIEL")); |
labelAmen.setHorizontalAlignment(SwingConstants.RIGHT); |
ElementComboBox selAmen = new ElementComboBox(); |
selAmen.setInfoIconVisible(false); |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(labelAmen, c); |
c.gridx++; |
c.weightx = 1; |
this.add(selAmen, c); |
this.addSQLObject(selAmen, "ID_CODE_AMENAGEMENT_PARTIEL"); |
JLabel labelSupsension = new JLabel(getLabelFor("ID_CODE_SUSPENSION")); |
labelSupsension.setHorizontalAlignment(SwingConstants.RIGHT); |
ElementComboBox selSupsension = new ElementComboBox(); |
selSupsension.setInfoIconVisible(false); |
c.gridx++; |
c.weightx = 0; |
this.add(labelSupsension, c); |
c.gridx++; |
c.weightx = 1; |
this.add(selSupsension, c); |
this.addSQLObject(selSupsension, "ID_CODE_SUSPENSION"); |
JLabel labelDateDebutSusp = new JLabel(getLabelFor("DATE_DEBUT_SUSPENSION")); |
labelDateDebutSusp.setHorizontalAlignment(SwingConstants.RIGHT); |
JDate textDateDebutSups = new JDate(); |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
this.add(labelDateDebutSusp, c); |
c.gridx++; |
c.weightx = 1; |
this.add(textDateDebutSups, c); |
this.addSQLObject(textDateDebutSups, "DATE_DEBUT_SUSPENSION"); |
JLabel labelDateFinSups = new JLabel(getLabelFor("DATE_FIN_SUSPENSION")); |
labelDateFinSups.setHorizontalAlignment(SwingConstants.RIGHT); |
JDate textDateFinSuspension = new JDate(); |
c.gridx++; |
c.weightx = 0; |
this.add(labelDateFinSups, c); |
c.gridx++; |
c.weightx = 1; |
this.add(textDateFinSuspension, c); |
this.addSQLObject(textDateFinSuspension, "DATE_FIN_SUSPENSION"); |
this.addRequiredSQLObject(selCodeCatSocio, "ID_CODE_EMPLOI"); |
this.addRequiredSQLObject(selContratTravail, "ID_CODE_CONTRAT_TRAVAIL"); |
this.addRequiredSQLObject(selCaractActivite, "ID_CODE_CARACT_ACTIVITE"); |
this.addRequiredSQLObject(selDroitContrat, "ID_CODE_DROIT_CONTRAT"); |
this.addRequiredSQLObject(selStatutProf, "ID_CODE_STATUT_PROF"); |
this.addRequiredSQLObject(selStatutCat, "ID_CODE_STATUT_CATEGORIEL"); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/humanresources/payroll/element/ReglementPayeSQLElement.java |
---|
57,8 → 57,8 |
protected List<String> getComboFields() { |
final List<String> l = new ArrayList<String>(); |
l.add("IBAN"); |
l.add("BIC"); |
l.add("NOM_BANQUE"); |
l.add("RIB"); |
return l; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/humanresources/payroll/element/RubriqueBrutSQLElement.java |
---|
27,7 → 27,6 |
import org.openconcerto.sql.sqlobject.SQLRequestComboBox; |
import org.openconcerto.ui.DefaultGridBagConstraints; |
import org.openconcerto.utils.ListMap; |
import org.openconcerto.utils.NoneSelectedButtonGroup; |
import java.awt.GridBagConstraints; |
import java.awt.GridBagLayout; |
70,8 → 69,7 |
l.add("COTISABLE"); |
l.add("PART_CP"); |
l.add("TAXABLE_CM"); |
l.add("CSG_NORMAL"); |
l.add("CSG_REDUIT"); |
return l; |
} |
341,28 → 339,6 |
JCheckBox checkCP = new JCheckBox(getLabelFor("PART_CP")); |
panelProp.add(checkCP, cPanel); |
// CSG Normal |
cPanel.gridx = 1; |
cPanel.weightx = 1; |
cPanel.gridy++; |
c.fill = GridBagConstraints.HORIZONTAL; |
cPanel.gridwidth = GridBagConstraints.REMAINDER; |
JCheckBox checkCSGN = new JCheckBox(getLabelFor("CSG_NORMAL")); |
panelProp.add(checkCSGN, cPanel); |
// CSG Réduite |
cPanel.gridx = 1; |
cPanel.weightx = 1; |
cPanel.gridy++; |
c.fill = GridBagConstraints.HORIZONTAL; |
cPanel.gridwidth = GridBagConstraints.REMAINDER; |
JCheckBox checkCSGR = new JCheckBox(getLabelFor("CSG_REDUIT")); |
panelProp.add(checkCSGR, cPanel); |
NoneSelectedButtonGroup groupCSG = new NoneSelectedButtonGroup(); |
groupCSG.add(checkCSGN); |
groupCSG.add(checkCSGR); |
// Type |
JLabel labelSelCodeRubrique = new JLabel("Code DSN (S21.G00.51.011)"); |
labelSelCodeRubrique.setHorizontalAlignment(SwingConstants.RIGHT); |
401,8 → 377,6 |
this.addSQLObject(checkCotis, "COTISABLE"); |
this.addSQLObject(checkCP, "PART_CP"); |
this.addSQLObject(checkImpo, "TAXABLE_CM"); |
this.addSQLObject(checkCSGN, "CSG_NORMAL"); |
this.addSQLObject(checkCSGR, "CSG_REDUIT"); |
selSalarie.addValueListener(new PropertyChangeListener() { |
420,7 → 394,7 |
rowVals.put("TAXABLE_CM", Boolean.TRUE); |
rowVals.put("COTISABLE", Boolean.TRUE); |
rowVals.put("PART_BRUT", Boolean.TRUE); |
rowVals.put("CSG_NORMAL", Boolean.TRUE); |
return rowVals; |
} |
}; |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/humanresources/payroll/report/FichePayeSheetXML.java |
---|
46,16 → 46,13 |
final Map<Integer, String> cotisationSimplifieeLink = new HashMap<>(); |
public FichePayeSheetXML(final SQLRow row) { |
this(row, !new SQLPreferences(row.getTable().getDBRoot()).getBoolean(PayeGlobalPreferencePanel.NOT_PAYE_SIMPL, Boolean.FALSE)); |
} |
public FichePayeSheetXML(final SQLRow row, boolean simplifie) { |
super(row); |
this.printer = PrinterNXProps.getInstance().getStringProperty("FichePayePrinter"); |
this.elt = Configuration.getInstance().getDirectory().getElement("FICHE_PAYE"); |
SQLPreferences prefs = new SQLPreferences(elt.getTable().getDBRoot()); |
boolean prefBulletinSimpl = !prefs.getBoolean(PayeGlobalPreferencePanel.NOT_PAYE_SIMPL, Boolean.FALSE); |
if (simplifie) { |
if (prefBulletinSimpl) { |
SQLSelect sel = new SQLSelect(); |
sel.addSelect(row.getTable().getDBRoot().findTable("RUBRIQUE_COTISATION").getField("LIGNE_PAYE_SIMPLIFIEE")); |
sel.addSelect(row.getTable().getDBRoot().findTable("RUBRIQUE_COTISATION").getKey()); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/humanresources/payroll/report/LivrePayeSheet.java |
---|
21,7 → 21,6 |
import org.openconcerto.sql.model.SQLSelect; |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.model.Where; |
import org.openconcerto.utils.StringUtils; |
import java.text.DateFormat; |
import java.util.Date; |
157,19 → 156,6 |
mapSal.put(new Integer(idSal), ""); |
float montantTestTotal = 0; |
if (rowFicheElt.getObject("MONTANT_SAL_AJ") != null) { |
montantTestTotal += rowFicheElt.getFloat("MONTANT_SAL_AJ"); |
} |
if (rowFicheElt.getObject("MONTANT_SAL_DED") != null) { |
montantTestTotal -= rowFicheElt.getFloat("MONTANT_SAL_DED"); |
} |
if (rowFicheElt.getObject("MONTANT_PAT") != null) { |
montantTestTotal += rowFicheElt.getFloat("MONTANT_PAT"); |
} |
if (montantTestTotal != 0) { |
if (rowFicheElt.getString("SOURCE").equalsIgnoreCase("RUBRIQUE_BRUT")) { |
mapRubriqueBrut.put(new Integer(rowFicheElt.getInt("IDSOURCE")), ""); |
238,8 → 224,8 |
mapValue.put(new Integer(rowFicheElt.getInt("IDSOURCE")) + "_PAT", new Float(montant)); |
mapTotal.put(new Integer(rowFicheElt.getInt("IDSOURCE")) + "_PAT", new Float(montantTotal)); |
} |
} |
} |
// Dump |
/* |
301,7 → 287,7 |
int idRub = ((Number) mapRubriqueBrut.keySet().toArray()[i]).intValue(); |
SQLRow rowRub = tableRubBrut.getRow(idRub); |
this.mCell.put("A" + posLine, StringUtils.limitLength(rowRub.getString("NOM"), 55)); |
this.mCell.put("A" + posLine, rowRub.getObject("NOM")); |
this.mCell.put("B" + posLine, fillLine(mapSalarieBrut, idRub, mapSal, numFirstSal, mapTotalbrut, false)); |
this.mCell.put("C" + posLine, fillLine(mapSalarieBrut, idRub, mapSal, numFirstSal, mapTotalbrut, true)); |
317,7 → 303,7 |
int idRub = ((Number) mapRubriqueCot.keySet().toArray()[i]).intValue(); |
SQLRow rowRub = tableRubCot.getRow(idRub); |
this.mCell.put("A" + posLine, StringUtils.limitLength(rowRub.getString("NOM"), 55)); |
this.mCell.put("A" + posLine, rowRub.getObject("NOM")); |
this.mCell.put("B" + posLine, fillLine(mapSalarieCot, idRub, mapSal, numFirstSal, mapTotalCot, false)); |
this.mCell.put("C" + posLine, fillLine(mapSalarieCot, idRub, mapSal, numFirstSal, mapTotalCot, true)); |
334,7 → 320,7 |
int idRub = ((Number) mapRubriqueNet.keySet().toArray()[i]).intValue(); |
SQLRow rowRub = tableRubNet.getRow(idRub); |
this.mCell.put("A" + posLine, StringUtils.limitLength(rowRub.getString("NOM"), 55)); |
this.mCell.put("A" + posLine, rowRub.getObject("NOM")); |
this.mCell.put("B" + posLine, fillLine(mapSalarieNet, idRub, mapSal, numFirstSal, mapTotalNet, false)); |
this.mCell.put("C" + posLine, fillLine(mapSalarieNet, idRub, mapSal, numFirstSal, mapTotalNet, true)); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/shipment/action/ListeDesBonsDeLivraisonAction.java |
---|
21,6 → 21,7 |
import org.openconcerto.erp.core.sales.shipment.element.BonDeLivraisonSQLElement; |
import org.openconcerto.erp.core.sales.shipment.report.BonLivraisonXmlSheet; |
import org.openconcerto.erp.model.MouseSheetXmlListeListener; |
import org.openconcerto.erp.utils.TM; |
import org.openconcerto.sql.model.FieldPath; |
import org.openconcerto.sql.model.SQLField; |
import org.openconcerto.sql.model.SQLInjector; |
73,9 → 74,9 |
// Tabs |
final JTabbedPane tabs = new JTabbedPane(); |
tabs.addTab(getConf().getERP_TM().translate("sales.shipment.allShipments"), createAllDeliveryPanel(toInvoiceAction)); |
tabs.addTab(getConf().getERP_TM().translate("sales.shipment.nonInvoicedShipments"), createDeliveryWithoutInvoicePanel(toInvoiceAction)); |
tabs.addTab(getConf().getERP_TM().translate("sales.shipment.invoicedShipments"), createDeliveryWithInvoicePanel()); |
tabs.addTab(TM.tr("sales.shipment.allShipments"), createAllDeliveryPanel(toInvoiceAction)); |
tabs.addTab(TM.tr("sales.shipment.nonInvoicedShipments"), createDeliveryWithoutInvoicePanel(toInvoiceAction)); |
tabs.addTab(TM.tr("sales.shipment.invoicedShipments"), createDeliveryWithInvoicePanel()); |
frame.setContentPane(tabs); |
return frame; |
86,7 → 87,7 |
final List<SQLField> fields = new ArrayList<SQLField>(2); |
fields.add(eltCmd.getTable().getField("TOTAL_HT")); |
final IListTotalPanel totalPanel = new IListTotalPanel(panel.getListe(), fields, getConf().getERP_TM().translate("sales.shipment.listTotal")); |
final IListTotalPanel totalPanel = new IListTotalPanel(panel.getListe(), fields, TM.tr("sales.shipment.listTotal")); |
final GridBagConstraints c = new DefaultGridBagConstraints(); |
c.gridwidth = GridBagConstraints.REMAINDER; |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/shipment/ui/BonDeLivraisonItemTable.java |
---|
27,7 → 27,6 |
import org.openconcerto.erp.core.sales.pos.io.BarcodeReader; |
import org.openconcerto.erp.core.sales.pos.ui.BarcodeListener; |
import org.openconcerto.erp.core.sales.product.element.ReferenceArticleSQLElement; |
import org.openconcerto.erp.core.sales.product.element.UniteVenteArticleSQLElement; |
import org.openconcerto.erp.core.sales.product.ui.ArticleRowValuesRenderer; |
import org.openconcerto.erp.core.sales.product.ui.CurrencyWithSymbolRenderer; |
import org.openconcerto.erp.core.sales.product.ui.DeliveredQtyRowValuesRenderer; |
34,7 → 33,6 |
import org.openconcerto.erp.core.sales.product.ui.QteUnitRowValuesRenderer; |
import org.openconcerto.erp.core.sales.product.ui.QtyToDeliverRowValuesRenderer; |
import org.openconcerto.erp.core.sales.product.ui.ReliquatRowValuesTable; |
import org.openconcerto.erp.core.supplychain.stock.element.StockSQLElement; |
import org.openconcerto.erp.preferences.DefaultNXProps; |
import org.openconcerto.erp.preferences.GestionArticleGlobalPreferencePanel; |
import org.openconcerto.sql.Configuration; |
53,8 → 51,6 |
import org.openconcerto.sql.sqlobject.ITextWithCompletion; |
import org.openconcerto.sql.users.rights.UserRights; |
import org.openconcerto.sql.users.rights.UserRightsManager; |
import org.openconcerto.sql.view.EditFrame; |
import org.openconcerto.sql.view.EditPanel.EditMode; |
import org.openconcerto.sql.view.list.AutoCompletionManager; |
import org.openconcerto.sql.view.list.CellDynamicModifier; |
import org.openconcerto.sql.view.list.RowValuesTable; |
70,7 → 66,6 |
import java.awt.Component; |
import java.awt.event.ActionEvent; |
import java.awt.event.ActionListener; |
import java.awt.event.HierarchyEvent; |
import java.awt.event.HierarchyListener; |
import java.awt.event.KeyEvent; |
80,9 → 75,7 |
import java.math.RoundingMode; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
import java.util.Vector; |
import javax.swing.AbstractAction; |
112,20 → 105,12 |
this.reliquatTable = reliquatTable; |
} |
public static Map<String, Boolean> customVisibilityMap = new HashMap<String, Boolean>(); |
@Override |
protected Map<String, Boolean> getCustomVisibilityMap() { |
return customVisibilityMap; |
} |
@Override |
protected void init() { |
final SQLElement e = getSQLElement(); |
SQLPreferences prefs = new SQLPreferences(getSQLElement().getTable().getDBRoot()); |
final boolean selectArticle = prefs.getBoolean(GestionArticleGlobalPreferencePanel.USE_CREATED_ARTICLE, false); |
final boolean activeCalculM2 = prefs.getBoolean(GestionArticleGlobalPreferencePanel.ACTIVE_CALCUL_M2, false); |
final boolean createAuto = prefs.getBoolean(GestionArticleGlobalPreferencePanel.CREATE_ARTICLE_AUTO, true); |
final boolean filterFamilleArticle = prefs.getBoolean(GestionArticleGlobalPreferencePanel.FILTER_BY_FAMILY, false); |
final boolean showEco = prefs.getBoolean(AbstractVenteArticleItemTable.SHOW_ECO_CONTRIBUTION_COLUMNS, false); |
141,11 → 126,7 |
final SQLTableElement tableFamille = new SQLTableElement(e.getTable().getField("ID_FAMILLE_ARTICLE")); |
list.add(tableFamille); |
// Article |
SQLTableElement tableElementDepot = new SQLTableElement(e.getTable().getField("ID_DEPOT_STOCK"), true, true, true); |
list.add(tableElementDepot); |
// Article |
final SQLTableElement tableElementArticle = new SQLTableElement(e.getTable().getField("ID_ARTICLE"), true, true, true) { |
@Override |
public boolean isCellEditable(SQLRowValues vals, int rowIndex, int columnIndex) { |
340,29 → 321,6 |
list.add(eltUnitDevise); |
} |
SQLTableElement eltLongueur = new SQLTableElement(e.getTable().getField("LONGUEUR")) { |
@Override |
public boolean isCellEditable(SQLRowValues vals, int rowIndex, int columnIndex) { |
int idUv = vals.getForeignID("ID_UNITE_VENTE"); |
return idUv == UniteVenteArticleSQLElement.M2; |
} |
}; |
list.add(eltLongueur); |
SQLTableElement eltLargeur = new SQLTableElement(e.getTable().getField("LARGEUR")) { |
@Override |
public boolean isCellEditable(SQLRowValues vals, int rowIndex, int columnIndex) { |
int idUv = vals.getForeignID("ID_UNITE_VENTE"); |
return idUv == UniteVenteArticleSQLElement.M2; |
} |
}; |
list.add(eltLargeur); |
SQLTableElement eltHauteur = new SQLTableElement(e.getTable().getField("HAUTEUR")); |
list.add(eltHauteur); |
SQLTableElement qteU = new SQLTableElement(e.getTable().getField("QTE_UNITAIRE"), BigDecimal.class) { |
@Override |
public boolean isCellEditable(SQLRowValues vals, int rowIndex, int columnIndex) { |
370,8 → 328,6 |
SQLRowAccessor row = vals.getForeign("ID_UNITE_VENTE"); |
if (row != null && !row.isUndefined() && row.getBoolean("A_LA_PIECE")) { |
return false; |
} else if (activeCalculM2 && row != null && !row.isUndefined() && row.getID() == UniteVenteArticleSQLElement.M2) { |
return false; |
} else { |
return super.isCellEditable(vals, rowIndex, columnIndex); |
} |
640,7 → 596,7 |
rowVals.put("PV_T_DEVISE", rowVals.getBigDecimal("PRIX_METRIQUE_VT_1").multiply(globalQty)); |
} |
} |
super.commitData(true); |
super.commitData(); |
} |
}; |
this.setModel(model); |
647,7 → 603,6 |
this.table = new RowValuesTable(model, getConfigurationFile()); |
ToolTipManager.sharedInstance().unregisterComponent(this.table); |
ToolTipManager.sharedInstance().unregisterComponent(this.table.getTableHeader()); |
this.table.getClearCloneTableElement().add("ID_COMMANDE_CLIENT_ELEMENT"); |
if (filterFamilleArticle) { |
((SQLTextComboTableCellEditor) tableElementArticle.getTableCellEditor(this.table)).setDynamicWhere(e.getTable().getTable("ARTICLE").getField("ID_FAMILLE_ARTICLE")); |
681,9 → 636,6 |
completionField.add("PRIX_METRIQUE_VT_3"); |
completionField.add("SERVICE"); |
completionField.add("ID_FAMILLE_ARTICLE"); |
completionField.add("LONGUEUR"); |
completionField.add("LARGEUR"); |
completionField.add("HAUTEUR"); |
if (getSQLElement().getTable().getFieldsName().contains("DESCRIPTIF")) { |
completionField.add("DESCRIPTIF"); |
} |
1119,28 → 1071,6 |
} |
}); |
uniteVente.addModificationListener(qteU); |
eltLargeur.addModificationListener(qteU); |
eltLongueur.addModificationListener(qteU); |
qteU.setModifier(new CellDynamicModifier() { |
public Object computeValueFrom(SQLRowValues row, SQLTableElement source) { |
SQLRowAccessor rowUnite = row.getForeign("ID_UNITE_VENTE"); |
if (rowUnite != null && !rowUnite.isUndefined() && rowUnite.getBoolean("A_LA_PIECE")) { |
return BigDecimal.ONE; |
} else if (activeCalculM2 && rowUnite != null && !rowUnite.isUndefined() && rowUnite.getID() == UniteVenteArticleSQLElement.M2) { |
BigDecimal longueur = row.getBigDecimal("LONGUEUR"); |
BigDecimal largeur = row.getBigDecimal("LARGEUR"); |
if (longueur == null || largeur == null) { |
return BigDecimal.ONE; |
} |
return longueur.multiply(largeur); |
} else { |
return row.getObject("QTE_UNITAIRE"); |
} |
} |
}); |
// Mode Gestion article avancé |
String valModeAvanceVt = DefaultNXProps.getInstance().getStringProperty("ArticleModeVenteAvance"); |
Boolean bModeAvance = Boolean.valueOf(valModeAvanceVt); |
1158,11 → 1088,6 |
setColumnVisible(model.getColumnForField("T_POIDS_COLIS_NET"), false); |
} |
// ACtivation calcul m2 |
setColumnVisible(model.getColumnForField("HAUTEUR"), false); |
setColumnVisible(model.getColumnForField("LARGEUR"), activeCalculM2); |
setColumnVisible(model.getColumnForField("LONGUEUR"), activeCalculM2); |
setColumnVisible(model.getColumnForField("ID_ARTICLE"), selectArticle); |
setColumnVisible(model.getColumnForField("CODE"), !selectArticle || (selectArticle && createAuto)); |
setColumnVisible(model.getColumnForField("NOM"), !selectArticle || (selectArticle && createAuto)); |
1183,23 → 1108,10 |
setColumnVisible(model.getColumnForField("PRIX_METRIQUE_HA_1"), showHAPrice); |
setColumnVisible(model.getColumnForField("MARGE_HT"), showHAPrice); |
setColumnVisible(model.getColumnForField("T_PA_HT"), showHAPrice); |
setColumnVisible(model.getColumnForField("ID_DEPOT_STOCK"), prefs.getBoolean(GestionArticleGlobalPreferencePanel.STOCK_MULTI_DEPOT, false)); |
if (e.getTable().contains("ID_COMMANDE_CLIENT_ELEMENT")) { |
setColumnVisible(model.getColumnForField("ID_COMMANDE_CLIENT_ELEMENT"), false); |
} |
for (String string : AbstractVenteArticleItemTable.getVisibilityMap().keySet()) { |
setColumnVisible(model.getColumnForField(string), AbstractVenteArticleItemTable.getVisibilityMap().get(string)); |
} |
Map<String, Boolean> mapCustom = getCustomVisibilityMap(); |
if (mapCustom != null) { |
for (String string : mapCustom.keySet()) { |
setColumnVisible(model.getColumnForField(string), mapCustom.get(string)); |
} |
} |
// Barcode reader |
final BarcodeReader barcodeReader = ComptaPropsConfiguration.getInstanceCompta().getBarcodeReader(); |
if (barcodeReader != null) { |
1247,34 → 1159,6 |
} |
if (this.table.getRowValuesTableModel().getColumnForField("ID_DEPOT_STOCK") >= 0 && this.table.getRowValuesTableModel().getColumnForField("ID_ARTICLE") >= 0) { |
if (this.buttons == null) { |
this.buttons = new ArrayList<>(); |
} |
JButton buttonStock = new JButton("Consulter le stock"); |
buttonStock.addActionListener(new ActionListener() { |
public void actionPerformed(ActionEvent event) { |
SQLRowValues rowValsSel = table.getSelectedRowValues(); |
if (rowValsSel != null) { |
SQLRowAccessor foreignArt = rowValsSel.getForeign("ID_ARTICLE"); |
if (foreignArt != null && !foreignArt.isUndefined()) { |
SQLRowAccessor rowValsStock = StockSQLElement.getStock(rowValsSel); |
if (rowValsStock != null && !rowValsStock.isUndefined()) { |
EditFrame frame = new EditFrame(table.getRowValuesTableModel().getSQLElement().getDirectory().getElement("STOCK"), EditMode.READONLY); |
frame.selectionId(rowValsStock.getID()); |
frame.setVisible(true); |
} |
} |
} |
} |
}); |
this.buttons.add(buttonStock); |
} |
// On réécrit la configuration au cas ou les preferences aurait changé |
this.table.writeState(); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/credit/component/AvoirClientSQLComponent.java |
---|
956,16 → 956,13 |
} |
rowVals.update(); |
List<SQLRow> rowEch = rowFacture.getReferentRows(rowFacture.getTable().getTable("ECHEANCE_CLIENT")); |
for (SQLRow sqlRow : rowEch) { |
if (!sqlRow.getBoolean("REG_COMPTA") && !sqlRow.getBoolean("REGLE")) { |
// update echeance |
SQLRowValues createEmptyUpdateRow2 = sqlRow.createEmptyUpdateRow(); |
createEmptyUpdateRow2.put("MONTANT", Math.max(0, sqlRow.getLong("MONTANT") - totalAvoir)); |
createEmptyUpdateRow2.commit(); |
break; |
} |
} |
EcritureSQLElement eltEcr = (EcritureSQLElement) Configuration.getInstance().getDirectory().getElement("ECRITURE"); |
final int foreignIDmvt = rowFacture.getForeignID("ID_MOUVEMENT"); |
eltEcr.archiveMouvementProfondeur(foreignIDmvt, false); |
System.err.println("Regeneration des ecritures"); |
new GenerationMvtSaisieVenteFacture(rowFacture.getID(), foreignIDmvt); |
System.err.println("Fin regeneration"); |
} catch (SQLException e1) { |
ExceptionHandler.handle("Erreur lors de l'affection de l'avoir sur la facture!", e1); |
} finally { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/order/component/CommandeClientSQLComponent.java |
---|
864,10 → 864,10 |
super.select(rVals); |
} |
if (r != null) { |
this.table.getRowValuesTable().insertFrom(r); |
this.tableFacturationItem.getRowValuesTable().insertFrom(r); |
this.table.insertFrom("ID_COMMANDE_CLIENT", r.getID()); |
this.tableFacturationItem.insertFrom("ID_COMMANDE_CLIENT", r.getID()); |
if (this.tableChiffrageItem != null) { |
this.tableChiffrageItem.getRowValuesTable().insertFrom(r); |
this.tableChiffrageItem.insertFrom("ID_COMMANDE_CLIENT", r.getID()); |
} |
} |
// this.radioEtat.setVisible(r.getID() > 1); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/order/element/CommandeClientElementSQLElement.java |
---|
74,22 → 74,6 |
rowAction.setPredicate(IListeEvent.getNonEmptySelectionPredicate()); |
getRowActions().add(rowAction); |
PredicateRowAction rowActionBL = new PredicateRowAction(new AbstractAction("Transférer la commande en BL") { |
@Override |
public void actionPerformed(ActionEvent e) { |
List<SQLRowValues> resultId = new ArrayList<>(); |
CommandeClientSQLElement cmdElt = (CommandeClientSQLElement) getForeignElement("ID_COMMANDE_CLIENT"); |
for (SQLRowValues sqlRowAccessor : IListe.get(e).getSelectedRows()) { |
resultId.add(sqlRowAccessor.getForeign("ID_COMMANDE_CLIENT").asRowValues()); |
} |
cmdElt.transfertBonLivraisonClient(resultId); |
} |
}, true); |
rowActionBL.setPredicate(IListeEvent.getNonEmptySelectionPredicate()); |
getRowActions().add(rowActionBL); |
PredicateRowAction rowActionCmd = new PredicateRowAction(new AbstractAction("Modifier la commande associée") { |
@Override |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/order/element/ChiffrageCommandeClientSQLElement.java |
---|
17,14 → 17,11 |
import org.openconcerto.erp.core.common.ui.DeviseTableCellRenderer; |
import org.openconcerto.sql.element.SQLComponent; |
import org.openconcerto.sql.element.UISQLComponent; |
import org.openconcerto.sql.view.list.SQLTableModelColumn; |
import org.openconcerto.sql.view.list.SQLTableModelSource; |
import org.openconcerto.utils.ListMap; |
import java.util.ArrayList; |
import java.util.HashSet; |
import java.util.List; |
import java.util.Set; |
public class ChiffrageCommandeClientSQLElement extends ComptaSQLConfElement { |
33,20 → 30,6 |
} |
@Override |
public Set<String> getReadOnlyFields() { |
Set<String> s = new HashSet<>(); |
s.add("NOM"); |
s.add("ID_FAMILLE_ARTICLE"); |
s.add("PA_HT"); |
s.add("PV_HT"); |
s.add("QTE"); |
s.add("ID_UNITE_VENTE"); |
s.add("T_PA_HT"); |
s.add("T_PV_HT"); |
return s; |
} |
/* |
* (non-Javadoc) |
* |
70,33 → 53,13 |
@Override |
protected void _initTableSource(SQLTableModelSource res) { |
super._initTableSource(res); |
res.getColumn(getTable().getField("QTE")).setRenderer(new DeviseTableCellRenderer()); |
SQLTableModelColumn columnQte = res.getColumn(getTable().getField("QTE")); |
if (columnQte != null) { |
columnQte.setRenderer(new DeviseTableCellRenderer()); |
res.getColumn(getTable().getField("PA_HT")).setRenderer(new DeviseTableCellRenderer()); |
res.getColumn(getTable().getField("MARGE")).setRenderer(new DeviseTableCellRenderer()); |
res.getColumn(getTable().getField("T_PA_HT")).setRenderer(new DeviseTableCellRenderer()); |
} |
if (getTable().contains("ANT")) { |
final SQLTableModelColumn columnAnt = res.getColumn(getTable().getField("ANT")); |
if (columnAnt != null) { |
columnAnt.setRenderer(new DeviseTableCellRenderer()); |
} |
} |
final SQLTableModelColumn columnPA = res.getColumn(getTable().getField("PA_HT")); |
if (columnPA != null) { |
columnPA.setRenderer(new DeviseTableCellRenderer()); |
} |
final SQLTableModelColumn columnmarge = res.getColumn(getTable().getField("MARGE")); |
if (columnmarge != null) { |
columnmarge.setRenderer(new DeviseTableCellRenderer()); |
} |
SQLTableModelColumn column = res.getColumn(getTable().getField("T_PA_HT")); |
if (column != null) { |
column.setRenderer(new DeviseTableCellRenderer()); |
} |
} |
/* |
* (non-Javadoc) |
* |
129,26 → 92,17 |
* @see org.openconcerto.devis.SQLElement#getComponent() |
*/ |
public SQLComponent createComponent() { |
return new UISQLComponent(this, 3) { |
return new UISQLComponent(this) { |
public void addViews() { |
this.addView("NOM", "1"); |
this.addView("ID_FAMILLE_ARTICLE", "1"); |
this.addView("PA_HT", "1"); |
this.addView("PV_HT", "1"); |
this.addView("QTE", "1"); |
if (getTable().contains("RESTANT")) { |
this.addView("RESTANT", "1"); |
this.addView("NOM"); |
this.addView("ID_FAMILLE_ARTICLE"); |
this.addView("PA_HT"); |
this.addView("PV_HT"); |
this.addView("QTE"); |
this.addView("ID_UNITE_VENTE"); |
this.addView("T_PA_HT"); |
this.addView("T_PV_HT"); |
} |
this.addView("ID_UNITE_VENTE", "1"); |
this.addView("T_PA_HT", "1"); |
this.addView("T_PV_HT", "1"); |
if (getTable().contains("ANT")) { |
this.addView("ANT", "1"); |
} |
if (getTable().contains("MOTIF")) { |
this.addView("MOTIF", "1"); |
} |
} |
}; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/account/VenteFactureSituationSQLComponent.java |
---|
67,8 → 67,6 |
import javax.swing.SwingConstants; |
import javax.swing.SwingUtilities; |
import javax.swing.event.DocumentEvent; |
import javax.swing.event.TableModelEvent; |
import javax.swing.event.TableModelListener; |
public class VenteFactureSituationSQLComponent extends TransfertGroupSQLComponent { |
public static final String ID = "sales.invoice.partial"; |
203,7 → 201,7 |
sqlRequestComboBox.setEnabled(false); |
final AcompteField acompteField = ((AcompteField) getEditor("sales.invoice.partial.amount")); |
listenerAcompteField = new SimpleDocumentListener() { |
acompteField.getDocument().addDocumentListener(new SimpleDocumentListener() { |
@Override |
public void update(DocumentEvent e) { |
210,25 → 208,7 |
Acompte a = acompteField.getValue(); |
table.calculPourcentage(a, TypeCalcul.CALCUL_FACTURABLE); |
} |
}; |
acompteField.getDocument().addDocumentListener(listenerAcompteField); |
listenerTable = new TableModelListener() { |
@Override |
public void tableChanged(TableModelEvent e) { |
acompteField.getDocument().removeDocumentListener(listenerAcompteField); |
if (e.getColumn() == table.getModel().getColumnForField("POURCENT_FACTURABLE")) { |
Acompte a = new Acompte(null, table.getTotalHT(TypeCalcul.CALCUL_MONTANT_TOTAL)); |
acompteField.setValue(a); |
} |
acompteField.getDocument().addDocumentListener(listenerAcompteField); |
} |
}; |
table.getRowValuesTable().getModel().addTableModelListener(listenerTable); |
}); |
total.addValueListener(new PropertyChangeListener() { |
@Override |
240,9 → 220,19 |
} |
private SimpleDocumentListener listenerAcompteField; |
private TableModelListener listenerTable; |
int countPole = 0; |
// @Override |
// public Component addView(MutableRowItemView rowItemView, String fields, Object specObj) { |
// |
// if (fields.contains("ID_POLE_PRODUIT") && countPole == 0) { |
// countPole++; |
// return null; |
// } else { |
// return super.addView(rowItemView, fields, specObj); |
// } |
// } |
@Override |
public JComponent getLabel(String id) { |
if (id.equals("sales.invoice.partial.amount")) { |
293,11 → 283,10 |
// Set only VAT Editable |
for (int i = 0; i < items.getRowValuesTable().getColumnModel().getColumnCount(false); i++) { |
final SQLTableElement sqlTableElementAt = items.getRowValuesTable().getRowValuesTableModel().getSQLTableElementAt(i); |
if (sqlTableElementAt.getField() != null && (sqlTableElementAt.getField().getName().equalsIgnoreCase("ID_STYLE") |
|| sqlTableElementAt.getField().getName().equalsIgnoreCase("POURCENT_FACTURABLE") || sqlTableElementAt.getField().getName().equalsIgnoreCase("ID_TAXE"))) { |
if (sqlTableElementAt.getField() == null || !sqlTableElementAt.getField().getName().equalsIgnoreCase("ID_TAXE")) { |
sqlTableElementAt.setEditable(false); |
} else { |
sqlTableElementAt.setEditable(true); |
} else { |
sqlTableElementAt.setEditable(false); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/account/VenteFactureSoldeSQLComponent.java |
---|
14,29 → 14,22 |
package org.openconcerto.erp.core.sales.account; |
import org.openconcerto.erp.core.common.element.NumerotationAutoSQLElement; |
import org.openconcerto.erp.core.common.ui.AbstractVenteArticleItemTable.TypeCalcul; |
import org.openconcerto.erp.core.common.ui.Acompte; |
import org.openconcerto.erp.core.common.ui.AcompteField; |
import org.openconcerto.erp.core.common.ui.AbstractVenteArticleItemTable.TypeCalcul; |
import org.openconcerto.erp.core.sales.invoice.element.SaisieVenteFactureSQLElement; |
import org.openconcerto.erp.core.sales.invoice.ui.FactureSituationItemTable; |
import org.openconcerto.erp.core.supplychain.stock.element.StockItemsUpdater; |
import org.openconcerto.erp.core.supplychain.stock.element.StockItemsUpdater.TypeStockUpdate; |
import org.openconcerto.erp.core.supplychain.stock.element.StockLabel; |
import org.openconcerto.erp.preferences.GestionArticleGlobalPreferencePanel; |
import org.openconcerto.sql.element.GlobalMapper; |
import org.openconcerto.sql.element.SQLElement; |
import org.openconcerto.sql.model.SQLRow; |
import org.openconcerto.sql.model.SQLRowAccessor; |
import org.openconcerto.sql.model.SQLRowValues; |
import org.openconcerto.sql.preferences.SQLPreferences; |
import org.openconcerto.ui.group.Group; |
import org.openconcerto.utils.DecimalUtils; |
import org.openconcerto.utils.ExceptionHandler; |
import org.openconcerto.utils.Tuple2; |
import java.math.BigDecimal; |
import java.math.RoundingMode; |
import java.sql.SQLException; |
import java.util.Collection; |
import java.util.Date; |
import java.util.HashSet; |
73,28 → 66,10 |
@Override |
public int insert(SQLRow order) { |
int id = super.insert(order); |
try { |
updateStock(id); |
} catch (SQLException e) { |
ExceptionHandler.handle("Erreur lors de la mise à jour du stock.", e); |
e.printStackTrace(); |
return super.insert(order); |
} |
return id; |
} |
@Override |
public void update() { |
super.update(); |
try { |
updateStock(getSelectedID()); |
} catch (SQLException e) { |
ExceptionHandler.handle("Erreur lors de la mise à jour du stock.", e); |
e.printStackTrace(); |
} |
} |
@Override |
public void importFrom(List<SQLRowValues> rows) { |
super.importFrom(rows); |
139,34 → 114,6 |
return l; |
} |
protected String getLibelleStock(SQLRowAccessor row, SQLRowAccessor rowElt) { |
return "Saisie vente facture N°" + row.getString("NUMERO"); |
} |
/** |
* Mise à jour des stocks pour chaque article composant la facture |
* |
* @throws SQLException |
*/ |
private void updateStock(int id) throws SQLException { |
SQLPreferences prefs = SQLPreferences.getMemCached(getTable().getDBRoot()); |
if (prefs.getBoolean(GestionArticleGlobalPreferencePanel.STOCK_FACT, true)) { |
SQLRow row = getTable().getRow(id); |
StockItemsUpdater stockUpdater = new StockItemsUpdater(new StockLabel() { |
@Override |
public String getLabel(SQLRowAccessor rowOrigin, SQLRowAccessor rowElt) { |
return getLibelleStock(rowOrigin, rowElt); |
} |
}, row, row.getReferentRows(getTable().getTable("SAISIE_VENTE_FACTURE_ELEMENT")), |
getTable().contains("CREATE_VIRTUAL_STOCK") && row.getBoolean("CREATE_VIRTUAL_STOCK") ? TypeStockUpdate.REAL_VIRTUAL_DELIVER : TypeStockUpdate.REAL_DELIVER); |
stockUpdater.update(); |
} |
} |
// @Override |
// public Component addView(MutableRowItemView rowItemView, String fields, Object specObj) { |
// |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/invoice/element/EcheanceClientSQLElement.java |
---|
14,7 → 14,6 |
package org.openconcerto.erp.core.sales.invoice.element; |
import org.openconcerto.erp.config.ComptaPropsConfiguration; |
import org.openconcerto.erp.config.Gestion; |
import org.openconcerto.erp.core.common.element.ComptaSQLConfElement; |
import org.openconcerto.erp.core.common.element.NumerotationAutoSQLElement; |
import org.openconcerto.erp.core.common.ui.DeviseField; |
52,7 → 51,6 |
import org.openconcerto.sql.utils.SQLUtils; |
import org.openconcerto.sql.view.EditFrame; |
import org.openconcerto.sql.view.EditPanel.EditMode; |
import org.openconcerto.sql.view.EditPanelListener; |
import org.openconcerto.sql.view.list.BaseSQLTableModelColumn; |
import org.openconcerto.sql.view.list.IListe; |
import org.openconcerto.sql.view.list.IListeAction.IListeEvent; |
449,7 → 447,7 |
@Override |
protected void _initListRequest(ListSQLRequest req) { |
super._initListRequest(req); |
req.addToGraphToFetch("REG_COMPTA", "REGLE","NOMBRE_RELANCE"); |
req.addToGraphToFetch("REG_COMPTA", "REGLE"); |
} |
/* |
540,63 → 538,4 |
return createCodeOfPackage() + ".commitment"; |
} |
public void relanceClient(final SQLRow rowEch) { |
final SQLElement relanceElt = getDirectory().getElement("RELANCE"); |
rowEch.fetchValues(); |
if (rowEch != null) { |
int idMvtSource = MouvementSQLElement.getSourceId(rowEch.getForeignID("ID_MOUVEMENT")); |
SQLRow rowMvtSource = getTable().getTable("MOUVEMENT").getRow(idMvtSource); |
if (!rowMvtSource.getString("SOURCE").equalsIgnoreCase("SAISIE_VENTE_FACTURE")) { |
return; |
} |
EditFrame editRelance = new EditFrame(relanceElt); |
editRelance.setIconImages(Gestion.getFrameIcon()); |
editRelance.addEditPanelListener(new EditPanelListener() { |
public void cancelled() { |
// rien |
} |
public void modified() { |
// rien |
} |
public void deleted() { |
// rien |
} |
public void inserted(int id) { |
int nbRelance = rowEch.getInt("NOMBRE_RELANCE"); |
nbRelance++; |
SQLRowValues rowValsEch = new SQLRowValues(rowEch.getTable()); |
rowValsEch.put("NOMBRE_RELANCE", nbRelance); |
rowValsEch.put("DATE_LAST_RELANCE", new Date()); |
try { |
rowValsEch.update(rowEch.getID()); |
relanceElt.getTable().getRow(id).createEmptyUpdateRow().put("ID_ECHEANCE_CLIENT", rowEch.getID()).commit(); |
} catch (SQLException e1) { |
ExceptionHandler.handle("erreur lors de la mise à jour du nombre de relances", e1); |
} |
} |
}); |
SQLRowValues rowVals = new SQLRowValues(relanceElt.getTable()); |
rowVals.put("ID_SAISIE_VENTE_FACTURE", rowMvtSource.getInt("IDSOURCE")); |
rowVals.put("MONTANT", rowEch.getObject("MONTANT")); |
rowVals.put("ID_CLIENT", rowEch.getForeignID("ID_CLIENT")); |
rowVals.put("NUMERO", NumerotationAutoSQLElement.getNextNumero(RelanceSQLElement.class, new Date())); |
editRelance.getSQLComponent().select(rowVals); |
editRelance.pack(); |
editRelance.setVisible(true); |
} |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/invoice/element/SaisieVenteFactureItemSQLElement.java |
---|
164,10 → 164,10 |
* |
* @see org.openconcerto.devis.BaseSQLElement#getListFields() |
*/ |
@Override |
protected List<String> getListFields() { |
List<String> l = new ArrayList<String>(); |
l.add("ID_SAISIE_VENTE_FACTURE"); |
l.add("CODE"); |
l.add("NOM"); |
l.add("DESCRIPTIF"); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/invoice/action/ListeEcheancePrelevementAction.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/invoice/action/ListeDesVentesAction.java |
---|
14,7 → 14,6 |
package org.openconcerto.erp.core.sales.invoice.action; |
import org.openconcerto.erp.action.CreateFrameAbstractAction; |
import org.openconcerto.erp.config.ComptaPropsConfiguration; |
import org.openconcerto.erp.core.common.ui.PanelFrame; |
import org.openconcerto.erp.core.sales.invoice.ui.ListeDesVentesPanel; |
21,17 → 20,15 |
import javax.swing.Action; |
import javax.swing.JFrame; |
public class ListeDesVentesAction extends CreateFrameAbstractAction { |
private final ComptaPropsConfiguration conf; |
public ListeDesVentesAction(final ComptaPropsConfiguration conf) { |
public ListeDesVentesAction() { |
super(); |
this.conf = conf; |
this.putValue(Action.NAME, "Liste des ventes"); |
} |
@Override |
public JFrame createFrame() { |
return new PanelFrame(new ListeDesVentesPanel(this.conf), (String) this.getValue(Action.NAME)); |
return new PanelFrame(new ListeDesVentesPanel(), "Liste des ventes"); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/invoice/ui/ListPanelEcheancesClients.java |
---|
93,8 → 93,6 |
// FIXME : remove queries from AWT |
final SQLTable elementEchT = getListe().getSource().getPrimaryTable(); |
Where wNotRegle = new Where(elementEchT.getField("REGLE"), "=", Boolean.FALSE); |
wNotRegle = wNotRegle.and(new Where(elementEchT.getTable().getField("ID_SEPA_MANDATE"), "=", (Object) null)); |
if (!showRegCompta) { |
wNotRegle = wNotRegle.and(new Where(elementEchT.getField("REG_COMPTA"), "=", Boolean.FALSE)); |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/invoice/ui/ListeDesEcheancesClientsPanel.java |
---|
15,11 → 15,12 |
import org.openconcerto.erp.config.ComptaPropsConfiguration; |
import org.openconcerto.erp.config.Gestion; |
import org.openconcerto.erp.core.common.element.NumerotationAutoSQLElement; |
import org.openconcerto.erp.core.common.ui.IListFilterDatePanel; |
import org.openconcerto.erp.core.common.ui.IListTotalPanel; |
import org.openconcerto.erp.core.customerrelationship.customer.element.RelanceSQLElement; |
import org.openconcerto.erp.core.finance.accounting.element.MouvementSQLElement; |
import org.openconcerto.erp.core.finance.payment.component.EncaisserMontantSQLComponent; |
import org.openconcerto.erp.core.sales.invoice.element.EcheanceClientSQLElement; |
import org.openconcerto.erp.rights.ComptaUserRight; |
import org.openconcerto.erp.rights.NXRights; |
import org.openconcerto.sql.Configuration; |
30,10 → 31,12 |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.users.rights.UserRightsManager; |
import org.openconcerto.sql.view.EditFrame; |
import org.openconcerto.sql.view.EditPanelListener; |
import org.openconcerto.sql.view.IListPanel; |
import org.openconcerto.sql.view.IListener; |
import org.openconcerto.sql.view.list.IListe; |
import org.openconcerto.ui.DefaultGridBagConstraints; |
import org.openconcerto.utils.ExceptionHandler; |
import java.awt.GridBagConstraints; |
import java.awt.GridBagLayout; |
41,8 → 44,10 |
import java.awt.event.ActionListener; |
import java.awt.event.MouseAdapter; |
import java.awt.event.MouseEvent; |
import java.sql.SQLException; |
import java.util.ArrayList; |
import java.util.Arrays; |
import java.util.Date; |
import java.util.List; |
import javax.swing.JButton; |
125,7 → 130,7 |
this.add(this.relancer, c); |
this.relancer.addActionListener(new ActionListener() { |
public void actionPerformed(ActionEvent e) { |
((EcheanceClientSQLElement) panelEcheances.getElement()).relanceClient(getListPanelEcheancesClients().getListe().getSelectedRow().asRow()); |
relanceClient(); |
} |
}); |
} |
267,6 → 272,70 |
} |
private void relanceClient() { |
SQLBase base = ((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete(); |
final SQLElement relanceElt = Configuration.getInstance().getDirectory().getElement("RELANCE"); |
final SQLRow rowSource = this.panelEcheances.getListe().fetchSelectedRow(); |
if (rowSource != null) { |
int idMvtSource = MouvementSQLElement.getSourceId(rowSource.getInt("ID_MOUVEMENT")); |
SQLRow rowMvtSource = base.getTable("MOUVEMENT").getRow(idMvtSource); |
if (!rowMvtSource.getString("SOURCE").equalsIgnoreCase("SAISIE_VENTE_FACTURE")) { |
this.relancer.setEnabled(false); |
return; |
} |
if (this.editRelance == null) { |
this.editRelance = new EditFrame(relanceElt); |
this.editRelance.setIconImages(Gestion.getFrameIcon()); |
this.editRelance.addEditPanelListener(new EditPanelListener() { |
public void cancelled() { |
// rien |
} |
public void modified() { |
// rien |
} |
public void deleted() { |
// rien |
} |
public void inserted(int id) { |
int nbRelance = rowSource.getInt("NOMBRE_RELANCE"); |
nbRelance++; |
SQLRowValues rowValsEch = new SQLRowValues(rowSource.getTable()); |
rowValsEch.put("NOMBRE_RELANCE", nbRelance); |
rowValsEch.put("DATE_LAST_RELANCE", new Date()); |
try { |
rowValsEch.update(rowSource.getID()); |
relanceElt.getTable().getRow(id).createEmptyUpdateRow().put("ID_ECHEANCE_CLIENT", rowSource.getID()).commit(); |
} catch (SQLException e1) { |
ExceptionHandler.handle("erreur lors de la mise à jour du nombre de relances", e1); |
} |
} |
}); |
} |
SQLRowValues rowVals = new SQLRowValues(relanceElt.getTable()); |
rowVals.put("ID_SAISIE_VENTE_FACTURE", rowMvtSource.getInt("IDSOURCE")); |
rowVals.put("MONTANT", rowSource.getObject("MONTANT")); |
rowVals.put("ID_CLIENT", rowSource.getInt("ID_CLIENT")); |
rowVals.put("NUMERO", NumerotationAutoSQLElement.getNextNumero(RelanceSQLElement.class, new Date())); |
this.editRelance.getSQLComponent().select(rowVals); |
this.editRelance.pack(); |
this.editRelance.setVisible(true); |
} else { |
Thread.dumpStack(); |
} |
} |
public IListPanel getListPanelEcheancesClients() { |
return this.panelEcheances; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/invoice/ui/ListeDesVentesPanel.java |
---|
25,8 → 25,8 |
import org.openconcerto.erp.core.sales.pos.POSConfiguration; |
import org.openconcerto.erp.core.sales.pos.ui.TextAreaTicketPanel; |
import org.openconcerto.erp.utils.TM; |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.element.SQLElement; |
import org.openconcerto.sql.element.SQLElementDirectory; |
import org.openconcerto.sql.model.FieldPath; |
import org.openconcerto.sql.model.SQLField; |
import org.openconcerto.sql.model.SQLRowAccessor; |
79,7 → 79,7 |
private JLabelBold textField = new JLabelBold("0"); |
private JLabelBold textField2 = new JLabelBold("0"); |
public ListeDesVentesPanel(final ComptaPropsConfiguration conf) { |
public ListeDesVentesPanel() { |
this.setLayout(new GridBagLayout()); |
GridBagConstraints c = new GridBagConstraints(); |
c.insets = new Insets(2, 2, 1, 2); |
94,8 → 94,7 |
JTabbedPane tabbedPane = new JTabbedPane(); |
final SQLElementDirectory dir = conf.getDirectory(); |
final SQLElement elementVF = dir.getElement("SAISIE_VENTE_FACTURE"); |
final SQLElement elementVF = Configuration.getInstance().getDirectory().getElement("SAISIE_VENTE_FACTURE"); |
// tab Vente facture |
final SQLElement eltFacture = elementVF; |
final SQLTableModelSourceOnline src = eltFacture.getTableSource(true); |
151,7 → 150,91 |
src.getColumns().add(new SQLTableModelColumnPath(new FieldPath(new Path(eltFacture.getTable()).addForeignField(SaisieVenteFactureSQLElement.MESSAGE_FIELD_NAME), "MessageIdentification"))); |
this.listeFact = new ListeGestCommEltPanel(eltFacture, new IListe(src), true); |
final SDDMessageSQLElement sepaMsgElem = eltFacture.getDirectory().getElement(SDDMessageSQLElement.class); |
final String aMessageLabel = sepaMsgElem.getName().getVariant(Grammar_fr.INDEFINITE_ARTICLE_SINGULAR); |
this.listeFact.getListe().addIListeAction(new RowAction.PredicateRowAction(new AbstractAction("Générer " + aMessageLabel, null) { |
@Override |
public void actionPerformed(ActionEvent e) { |
final IListe l = IListe.get(e); |
final List<Integer> selectedIDs = l.getSelection().getSelectedIDs(); |
// TODO dialog with label informing of the successful creation of message for n |
// invoices/n2 messages too far in the future/n3 messages with collection date |
// changed and having a button to open the file chooser |
new SwingWorker<GenerationResult, Void>() { |
@Override |
protected GenerationResult doInBackground() throws Exception { |
return sepaMsgElem.generateXML(selectedIDs); |
} |
@Override |
protected void done() { |
final GenerationResult genRes; |
try { |
genRes = this.get(); |
} catch (Exception e) { |
ExceptionHandler.handle(l, "Impossible de générer " + aMessageLabel, e); |
return; |
} |
final int includedInvoicesCount = genRes.getIncludedInvoicesCount(); |
final Map<String, Object> tmMap = new HashMap<>(); |
tmMap.put("msgElem", sepaMsgElem.getName()); |
tmMap.put("invoiceElem", elementVF.getName()); |
tmMap.put("invoiceElemCount", includedInvoicesCount); |
if (genRes.getDDInvoicesWithoutMessage().isEmpty()) { |
JOptionPane.showMessageDialog(l, TM.getTM().trM("sddMessage.generation.noneNeeded", tmMap)); |
} else if (genRes.getIgnoredInvoices().isEmpty()) { |
JOptionPane.showMessageDialog(l, TM.getTM().trM("sddMessage.generation.noneIgnored", tmMap)); |
} else { |
final int futureCount = genRes.getIgnoredInvoices().getNonNull(IgnoreReason.TOO_FAR_IN_FUTURE).size(); |
final int duplicateCount = genRes.getIgnoredInvoices().getNonNull(IgnoreReason.DUPLICATE_MANDATE).size(); |
final int missingInfoCount = genRes.getIgnoredInvoices().getNonNull(IgnoreReason.MISSING_INFO).size(); |
tmMap.put("futureCount", futureCount); |
tmMap.put("duplicateCount", duplicateCount); |
tmMap.put("missingInfoCount", missingInfoCount); |
final StringBuilder msg = new StringBuilder(256); |
msg.append(TM.getTM().trM("sddMessage.generation.someIgnored", tmMap)); |
if (futureCount > 0) { |
msg.append("\n- "); |
msg.append(TM.getTM().trM("sddMessage.generation.someIgnored.future", tmMap)); |
} |
if (duplicateCount > 0) { |
msg.append("\n- "); |
msg.append(TM.getTM().trM("sddMessage.generation.someIgnored.duplicateMandate", tmMap)); |
} |
if (missingInfoCount > 0) { |
msg.append("\n- "); |
msg.append(TM.getTM().trM("sddMessage.generation.someIgnored.missingInfo", tmMap)); |
} |
final int messageType = duplicateCount == 0 ? JOptionPane.WARNING_MESSAGE : JOptionPane.ERROR_MESSAGE; |
JOptionPane.showMessageDialog(l, msg.toString(), null, messageType); |
} |
if (genRes.getInsertedMessage() != null) { |
sepaMsgElem.exportXML(l, Collections.singletonList(genRes.getInsertedMessage())); |
} |
} |
}.execute(); |
} |
}, false, true).setPredicate(IListeEvent.getNonEmptySelectionPredicate())); |
// TODO remove once we have a join with {SENT, OK, DEFINITIVE_ERROR, TRANSIENT_ERROR} |
this.listeFact.getListe().addIListeAction(new RowAction.PredicateRowAction(new AbstractAction("Prélever à nouveau", null) { |
@Override |
public void actionPerformed(ActionEvent e) { |
final IListe l = IListe.get(e); |
if (JOptionPane.showConfirmDialog(l, "Voulez-vous vraiment prélever à nouveau les factures sélectionnées ? Cette action est définitive.", "Prélever à nouveau", |
JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE) != JOptionPane.OK_OPTION) |
return; |
final List<Integer> selectedIDs = l.getSelection().getSelectedIDs(); |
final UpdateBuilder upd = new UpdateBuilder(l.getSource().getPrimaryTable()); |
upd.setObject(SaisieVenteFactureSQLElement.MESSAGE_FIELD_NAME, upd.getTable().getForeignTable(SaisieVenteFactureSQLElement.MESSAGE_FIELD_NAME).getUndefinedIDNumber()); |
upd.setObject(SaisieVenteFactureSQLElement.END2END_FIELD_NAME, ""); |
// don't allow to debit already payed invoices |
upd.setWhere(new Where(upd.getTable().getKey(), selectedIDs).and(Where.isNull(upd.getTable().getField("DATE_REGLEMENT")))); |
upd.getTable().getDBSystemRoot().getDataSource().execute(upd.asString()); |
for (final Integer id : selectedIDs) |
upd.getTable().fireTableModified(id, upd.getFieldsNames()); |
} |
}, false, true).setPredicate(IListeEvent.getNonEmptySelectionPredicate())); |
this.listeFact.setOpaque(false); |
this.listeFact.getListe().setModificationAllowed(true); |
final JTable tableFact = this.listeFact.getListe().getJTable(); |
233,7 → 316,7 |
{ |
// Tab Vente caisse |
ListeViewPanel panelTicket = new ListeViewPanel(dir.getElement("TICKET_CAISSE")) { |
ListeViewPanel panelTicket = new ListeViewPanel(Configuration.getInstance().getDirectory().getElement("TICKET_CAISSE")) { |
@Override |
protected void handleAction(JButton source, ActionEvent evt) { |
if (source == this.buttonModifier) { |
282,7 → 365,7 |
} |
// Tab Vente comptoir |
{ |
final ListeGestCommEltPanel listeVC = new ListeGestCommEltPanel(dir.getElement("SAISIE_VENTE_COMPTOIR"), true); |
final ListeGestCommEltPanel listeVC = new ListeGestCommEltPanel(Configuration.getInstance().getDirectory().getElement("SAISIE_VENTE_COMPTOIR"), true); |
listeVC.getListe().setModificationAllowed(false); |
listeVC.setOpaque(false); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/invoice/component/SaisieVenteFactureSQLComponent.java |
---|
935,7 → 935,6 |
ModeDeReglementSQLComponent modeReglComp; |
modeReglComp = (ModeDeReglementSQLComponent) this.eltModeRegl.getSQLChild(); |
modeReglComp.addDateCompListener(this.dateSaisie); |
this.selAvoir.getRequest().setWhere(new Where(this.tableAvoir.getField("SOLDE"), "=", Boolean.FALSE)); |
this.selAvoir.fillCombo(); |
1947,13 → 1946,12 |
// FIXME listener pour le module project à déplacer dans le module quand l'interface passera |
// en group |
if (getTable().contains("ID_AFFAIRE") && getView("ID_AFFAIRE") != null && getView("ID_AFFAIRE") instanceof SQLRequestComboBox) { |
if (getTable().contains("ID_AFFAIRE")) { |
final SQLRequestComboBox viewClient = (SQLRequestComboBox) getView("ID_CLIENT").getComp(); |
final SQLRequestComboBox viewAffaire = (SQLRequestComboBox) getView("ID_AFFAIRE").getComp(); |
final SQLRequestComboBox viewComm = (SQLRequestComboBox) getView("ID_COMMERCIAL").getComp(); |
final SQLRequestComboBox viewAgence; |
if (getTable().contains("ID_POLE_PRODUIT") && (SQLRequestComboBox) getView("ID_POLE_PRODUIT") != null) { |
if (getTable().contains("ID_POLE_PRODUIT")) { |
viewAgence = (SQLRequestComboBox) getView("ID_POLE_PRODUIT").getComp(); |
} else { |
viewAgence = null; |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/quote/element/DevisSQLElement.java |
---|
677,19 → 677,16 |
@Override |
protected Object show_(SQLRowAccessor r) { |
SQLRowAccessor rowAd = null; |
SQLRowAccessor rowAd; |
if (!r.isForeignEmpty("ID_ADRESSE_LIVRAISON")) { |
rowAd = r.getForeign("ID_ADRESSE_LIVRAISON"); |
} else if (!r.isForeignEmpty("ID_CLIENT")) { |
if (r.getForeign("ID_CLIENT").getObject("ID_ADRESSE_L") != null && !r.getForeign("ID_CLIENT").isForeignEmpty("ID_ADRESSE_L")) { |
} else if (r.getForeign("ID_CLIENT").getObject("ID_ADRESSE_L") != null && !r.getForeign("ID_CLIENT").isForeignEmpty("ID_ADRESSE_L")) { |
rowAd = r.getForeign("ID_CLIENT").getForeign("ID_ADRESSE_L"); |
} else { |
rowAd = r.getForeign("ID_CLIENT").getForeign("ID_ADRESSE"); |
} |
} |
String lib = rowAd == null ? "" : rowAd.getString("LIBELLE") + " " + rowAd.getString("VILLE"); |
String lib = rowAd.getString("LIBELLE") + " " + rowAd.getString("VILLE"); |
return lib; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/product/action/TransfertStockPanel.java |
---|
214,6 → 214,7 |
public void actionPerformed(ActionEvent e) { |
buttonUpdate.setEnabled(false); |
defaultLabel = label.getText(); |
BigDecimal qteReel = fieldReel.getValue(); |
List<String> multipleRequestsHundred = new ArrayList<String>(100); |
223,10 → 224,9 |
final SQLRow selectedRowArticle = comboArticle.getSelectedRow(); |
final SQLRow selectedRowDepotDepart = comboStockDepart.getSelectedRow(); |
final SQLRow selectedRowDepotArrivee = comboStockArrive.getSelectedRow(); |
{ |
// DEPART |
final SQLRow selectedRowDepotDepart = comboStockDepart.getSelectedRow(); |
final SQLRowAccessor rowStockDepart = ProductComponent.findOrCreateStock(selectedRowArticle, selectedRowDepotDepart); |
StockItem item = new StockItem(selectedRowArticle, rowStockDepart); |
if (!item.isStockInit()) { |
245,15 → 245,16 |
stockItems.add(item); |
double diff = -qteReel.doubleValue(); |
item.updateQty(diff, TypeStockMouvement.REEL); |
multipleRequestsHundred.add(getMvtRequest(dateValue, BigDecimal.ZERO, diff, item, getLabel(label.getText(), selectedRowDepotDepart, selectedRowDepotArrivee), true, usePrice)); |
multipleRequestsHundred.add(getMvtRequest(dateValue, BigDecimal.ZERO, diff, item, label.getText(), true, usePrice)); |
item.updateQty(diff, TypeStockMouvement.THEORIQUE); |
multipleRequestsHundred.add(getMvtRequest(dateValue, BigDecimal.ZERO, diff, item, getLabel(label.getText(), selectedRowDepotDepart, selectedRowDepotArrivee), false, usePrice)); |
multipleRequestsHundred.add(getMvtRequest(dateValue, BigDecimal.ZERO, diff, item, label.getText(), false, usePrice)); |
multipleRequestsHundred.add(item.getUpdateRequest()); |
} |
// ARRIVEE |
{ |
final SQLRow selectedRowDepotArrivee = comboStockArrive.getSelectedRow(); |
final SQLRowAccessor rowStockArrivee = ProductComponent.findOrCreateStock(selectedRowArticle, selectedRowDepotArrivee); |
StockItem item = new StockItem(selectedRowArticle, rowStockArrivee); |
273,10 → 274,10 |
stockItems.add(item); |
double diff = qteReel.doubleValue(); |
item.updateQty(diff, TypeStockMouvement.REEL); |
multipleRequestsHundred.add(getMvtRequest(dateValue, BigDecimal.ZERO, diff, item, getLabel(label.getText(), selectedRowDepotDepart, selectedRowDepotArrivee), true, usePrice)); |
multipleRequestsHundred.add(getMvtRequest(dateValue, BigDecimal.ZERO, diff, item, label.getText(), true, usePrice)); |
item.updateQty(diff, TypeStockMouvement.THEORIQUE); |
multipleRequestsHundred.add(getMvtRequest(dateValue, BigDecimal.ZERO, diff, item, getLabel(label.getText(), selectedRowDepotDepart, selectedRowDepotArrivee), false, usePrice)); |
multipleRequestsHundred.add(getMvtRequest(dateValue, BigDecimal.ZERO, diff, item, label.getText(), false, usePrice)); |
multipleRequestsHundred.add(item.getUpdateRequest()); |
} |
317,12 → 318,6 |
}); |
} |
private String getLabel(String label, SQLRowAccessor fromDepot, SQLRowAccessor toDepot) { |
return label + " de " + fromDepot.getString("NOM") + " vers " + toDepot.getString("NOM"); |
} |
private String getMvtRequest(Date time, BigDecimal prc, double qteFinal, StockItem item, String label, boolean reel, boolean usePrice) { |
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
String mvtStockQuery = "INSERT INTO " + mvtStockTableQuoted + " (\"QTE\",\"DATE\",\"ID_ARTICLE\",\"ID_STOCK\",\"NOM\",\"REEL\",\"ORDRE\""; |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/product/ui/GestionArticlePreferencePanel.java |
---|
16,10 → 16,8 |
import org.openconcerto.erp.config.ComptaPropsConfiguration; |
import org.openconcerto.erp.core.common.ui.AbstractVenteArticleItemTable; |
import org.openconcerto.erp.core.common.ui.TotalPanel; |
import org.openconcerto.erp.core.supplychain.stock.element.DepotStockSQLElement; |
import org.openconcerto.erp.preferences.DefaultNXProps; |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.sqlobject.SQLRequestComboBox; |
import org.openconcerto.ui.DefaultGridBagConstraints; |
import org.openconcerto.ui.VerticalLayout; |
import org.openconcerto.ui.preferences.DefaultPreferencePanel; |
32,7 → 30,6 |
import javax.swing.BorderFactory; |
import javax.swing.JCheckBox; |
import javax.swing.JLabel; |
import javax.swing.JPanel; |
public class GestionArticlePreferencePanel extends DefaultPreferencePanel { |
41,7 → 38,6 |
private final JCheckBox checkService, checkVenteComptoir, checkShowPoids, checkShowStyle, checkSFE; |
private final JCheckBox checkMarge; |
private JCheckBox checkSite; |
private SQLRequestComboBox boxDepot = new SQLRequestComboBox(); |
public GestionArticlePreferencePanel() { |
super(); |
61,18 → 57,7 |
this.checkShowPoids = new JCheckBox("Voir le Poids"); |
this.checkMarge = new JCheckBox("Afficher le taux de marque au lieu du taux de marge"); |
final ComptaPropsConfiguration comptaPropsConfiguration = (ComptaPropsConfiguration) Configuration.getInstance(); |
final DepotStockSQLElement elementDepot = comptaPropsConfiguration.getDirectory().getElement(DepotStockSQLElement.class); |
this.boxDepot.uiInit(elementDepot.createComboRequest()); |
this.add(new JLabel("Dépôt de stock par défaut"), c); |
c.gridx++; |
this.add(this.boxDepot, c); |
c.gridx = 0; |
c.gridy++; |
c.gridwidth = 2; |
this.add(this.checkMarge, c); |
c.gridy++; |
this.add(this.checkService, c); |
122,11 → 107,6 |
} |
props.setProperty("ArticleVenteComptoir", String.valueOf(this.checkVenteComptoir.isSelected())); |
props.setProperty(TotalPanel.MARGE_MARQUE, String.valueOf(this.checkMarge.isSelected())); |
int selId = DepotStockSQLElement.DEFAULT_ID; |
if (!this.boxDepot.isEmpty() && !this.boxDepot.getSelectedRow().isUndefined()) { |
selId = this.boxDepot.getSelectedId(); |
} |
props.setProperty("DepotStockDefault", String.valueOf(selId)); |
props.store(); |
} |
152,11 → 132,6 |
private void setValues() { |
final DefaultProps props = DefaultNXProps.getInstance(); |
// depot |
final int depot = props.getIntProperty("DepotStockDefault"); |
this.boxDepot.setValue(depot); |
// service |
final String service = props.getStringProperty("ArticleService"); |
final Boolean bService = Boolean.valueOf(service); |
192,6 → 167,7 |
// Show Style |
this.checkShowStyle.setSelected(props.getBooleanValue("ArticleShowStyle", false)); |
// Devise |
this.checkMarge.setSelected(props.getBooleanValue(TotalPanel.MARGE_MARQUE, false)); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/product/ui/DeliveredQtyRowValuesRenderer.java |
---|
18,7 → 18,6 |
import org.openconcerto.sql.view.list.RowValuesTable; |
import org.openconcerto.sql.view.list.RowValuesTableModel; |
import org.openconcerto.ui.table.AlternateTableCellRenderer; |
import org.openconcerto.ui.table.XTableColumnModel; |
import org.openconcerto.utils.CollectionUtils; |
import java.awt.Color; |
65,11 → 64,7 |
if (table instanceof RowValuesTable) { |
((JLabel) comp).setHorizontalAlignment(SwingConstants.RIGHT); |
RowValuesTable rowValuesTable = (RowValuesTable) table; |
XTableColumnModel columnModel = rowValuesTable.getColumnModel(); |
RowValuesTableModel model = rowValuesTable.getRowValuesTableModel(); |
boolean qteALivrerVisible = columnModel.isColumnVisible(columnModel.getColumnByModelIndex(model.getColumnForField("QTE_A_LIVRER"))); |
if (qteALivrerVisible) { |
RowValuesTableModel model = ((RowValuesTable) table).getRowValuesTableModel(); |
SQLRowValues rowVals = model.getRowValuesAt(row); |
Number qte; |
91,7 → 86,6 |
} |
} |
} |
} |
return comp; |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/product/model/ProductHelper.java |
---|
25,7 → 25,6 |
import org.openconcerto.sql.model.Where; |
import org.openconcerto.utils.DecimalUtils; |
import org.openconcerto.utils.ListMap; |
import org.openconcerto.utils.Tuple2; |
import org.openconcerto.utils.cc.ITransformer; |
import java.math.BigDecimal; |
453,46 → 452,6 |
} |
public Tuple2<BigDecimal, BigDecimal> getStandardBomPrices(Collection<? extends SQLRowAccessor> rowValuesProductItems) { |
final Map<Long, Integer> productQties = new HashMap<Long, Integer>(); |
for (SQLRowAccessor v : rowValuesProductItems) { |
if (v.getObject("ID_ARTICLE") != null) { |
System.out.println("id:" + v.getObject("ID_ARTICLE")); |
int id = v.getForeignID("ID_ARTICLE"); |
int qte = v.getInt("QTE"); |
Integer qteForId = productQties.get(Long.valueOf(id)); |
if (qteForId == null) { |
productQties.put(Long.valueOf(id), qte); |
} else { |
productQties.put(Long.valueOf(id), qte + qteForId); |
} |
} |
} |
BigDecimal costPV = null; |
BigDecimal costPA = null; |
for (SQLRowAccessor v : rowValuesProductItems) { |
if (v.getObject("ID_ARTICLE") != null) { |
SQLRowAccessor rowChild = v.getForeign("ID_ARTICLE"); |
int qte = v.getInt("QTE"); |
BigDecimal unitCostPV = rowChild.getBigDecimal("PV_HT"); |
BigDecimal unitCostPA = rowChild.getBigDecimal("PA_HT"); |
BigDecimal lineCostPV = unitCostPV.multiply(BigDecimal.valueOf(qte)).multiply(v.getBigDecimal("QTE_UNITAIRE")); |
if (costPV == null) { |
costPV = BigDecimal.ZERO; |
} |
costPV = costPV.add(lineCostPV); |
BigDecimal lineCostPA = unitCostPA.multiply(BigDecimal.valueOf(qte)).multiply(v.getBigDecimal("QTE_UNITAIRE")); |
if (costPA == null) { |
costPA = BigDecimal.ZERO; |
} |
costPA = costPA.add(lineCostPA); |
} |
} |
return Tuple2.create(costPA, costPV); |
} |
public BigDecimal getUnitCost(int id, int qty, TypePrice type) { |
Map<Long, Integer> productQties = new HashMap<Long, Integer>(); |
productQties.put(Long.valueOf(id), Integer.valueOf(qty)); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/product/component/ReferenceArticleSQLComponent.java |
---|
23,7 → 23,6 |
import org.openconcerto.erp.core.sales.product.element.ReferenceArticleSQLElement; |
import org.openconcerto.erp.core.sales.product.element.SupplierPriceListTable; |
import org.openconcerto.erp.core.sales.product.element.UniteVenteArticleSQLElement; |
import org.openconcerto.erp.core.sales.product.model.ProductHelper; |
import org.openconcerto.erp.core.sales.product.ui.ArticleCategorieComptableTable; |
import org.openconcerto.erp.core.sales.product.ui.ArticleDesignationTable; |
import org.openconcerto.erp.core.sales.product.ui.ArticleTarifTable; |
30,7 → 29,9 |
import org.openconcerto.erp.core.sales.product.ui.ProductItemListTable; |
import org.openconcerto.erp.core.sales.product.ui.ProductQtyPriceListTable; |
import org.openconcerto.erp.core.sales.product.ui.RowValuesTableEditionPanel; |
import org.openconcerto.erp.core.supplychain.stock.element.ComposedItemStockUpdater; |
import org.openconcerto.erp.core.supplychain.stock.element.DepotStockSQLElement; |
import org.openconcerto.erp.core.supplychain.stock.element.StockItem; |
import org.openconcerto.erp.model.ISQLCompteSelector; |
import org.openconcerto.erp.preferences.DefaultNXProps; |
import org.openconcerto.erp.preferences.GestionArticleGlobalPreferencePanel; |
49,7 → 50,6 |
import org.openconcerto.sql.sqlobject.SQLTextCombo; |
import org.openconcerto.ui.DefaultGridBagConstraints; |
import org.openconcerto.ui.FormLayouter; |
import org.openconcerto.ui.JDate; |
import org.openconcerto.ui.TitledSeparator; |
import org.openconcerto.ui.component.ITextArea; |
import org.openconcerto.ui.preferences.DefaultProps; |
56,7 → 56,6 |
import org.openconcerto.utils.DecimalUtils; |
import org.openconcerto.utils.ExceptionHandler; |
import org.openconcerto.utils.StringUtils; |
import org.openconcerto.utils.Tuple2; |
import org.openconcerto.utils.text.SimpleDocumentListener; |
import java.awt.Component; |
70,6 → 69,7 |
import java.math.BigDecimal; |
import java.math.RoundingMode; |
import java.sql.SQLException; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.List; |
84,8 → 84,6 |
import javax.swing.SwingConstants; |
import javax.swing.event.DocumentEvent; |
import javax.swing.event.DocumentListener; |
import javax.swing.event.TableModelEvent; |
import javax.swing.event.TableModelListener; |
public class ReferenceArticleSQLComponent extends BaseSQLComponent { |
468,7 → 466,6 |
selectModeVente(ReferenceArticleSQLComponent.this.comboSelModeVente.getSelectedId()); |
} |
}; |
setListenerModeVenteActive(true); |
this.comboSelModeVente.setValue(ReferenceArticleSQLElement.A_LA_PIECE); |
501,31 → 498,9 |
panel.add(textTare, c); |
addView(textTare, "TARE"); |
c.gridy++; |
c.gridx = 0; |
c.weightx = 0; |
JLabel labelDLC = new JLabel(getLabelFor("DLC")); |
panel.add(labelDLC, c); |
c.weightx = 1; |
c.gridx++; |
JDate dateDLC = new JDate(); |
panel.add(dateDLC, c); |
addView(dateDLC, "DLC"); |
c.weightx = 0; |
c.gridy++; |
c.gridx = 0; |
if (getTable().contains("POIDS_COLIS_NET")) { |
JLabel labelPdsColis = new JLabel(getLabelFor("POIDS_COLIS_NET")); |
panel.add(labelPdsColis, c); |
c.weightx = 1; |
c.gridx++; |
JTextField textPdsColis = new JTextField(40); |
panel.add(textPdsColis, c); |
addView(textPdsColis, "POIDS_COLIS_NET"); |
c.gridx++; |
} |
JLabel labelMasque = new JLabel(getLabelFor("MASQUE_CAISSE")); |
c.fill = GridBagConstraints.BOTH; |
panel.add(labelMasque, c); |
614,42 → 589,6 |
panel.add(fieldColoris, c); |
this.addView(fieldColoris, "COLORIS"); |
} |
JTextField fieldLongueur = new JTextField(); |
c.gridy++; |
c.fill = GridBagConstraints.HORIZONTAL; |
c.weightx = 0; |
c.gridwidth = 1; |
panel.add(new JLabel(getLabelFor("LONGUEUR")), c); |
c.weightx = 1; |
c.gridx++; |
panel.add(fieldLongueur, c); |
this.addView(fieldLongueur, "LONGUEUR"); |
JTextField fieldLargeur = new JTextField(); |
c.gridx++; |
c.fill = GridBagConstraints.HORIZONTAL; |
c.weightx = 0; |
c.gridwidth = 1; |
panel.add(new JLabel(getLabelFor("LARGEUR")), c); |
c.weightx = 1; |
c.gridx++; |
panel.add(fieldLargeur, c); |
this.addView(fieldLargeur, "LARGEUR"); |
JTextField fieldHauteur = new JTextField(); |
c.gridy++; |
c.gridx = 0; |
c.fill = GridBagConstraints.HORIZONTAL; |
c.weightx = 0; |
c.gridwidth = 1; |
panel.add(new JLabel(getLabelFor("HAUTEUR")), c); |
c.weightx = 1; |
c.gridx++; |
panel.add(fieldHauteur, c); |
this.addView(fieldHauteur, "HAUTEUR"); |
ITextArea area = new ITextArea(); |
JLabel sep = new JLabel("Descriptif complet"); |
c.gridy++; |
897,6 → 836,25 |
SQLPreferences prefs = new SQLPreferences(ComptaPropsConfiguration.getInstanceCompta().getRootSociete()); |
final boolean supplierCode = prefs.getBoolean(GestionArticleGlobalPreferencePanel.SUPPLIER_PRODUCT_CODE, false); |
if (getTable().getSchema().contains("CODE_FOURNISSEUR") && supplierCode) { |
this.rowValuesDefaultCodeFournisseur = new SQLRowValues(getTable().getTable("CODE_FOURNISSEUR")); |
this.codeFournisseurTable = new CodeFournisseurItemTable(this.rowValuesDefaultCodeFournisseur); |
c.gridy++; |
c.gridx = 0; |
c.gridwidth = 3; |
c.weighty = 1; |
c.weightx = 1; |
c.fill = GridBagConstraints.BOTH; |
panel.add(this.codeFournisseurTable, c); |
comboSelFournisseur.addValueListener(new PropertyChangeListener() { |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
rowValuesDefaultCodeFournisseur.put("ID_FOURNISSEUR", comboSelFournisseur.getSelectedId()); |
} |
}); |
} else { |
// Tarif fournisseur |
c.gridy++; |
c.gridx = 0; |
975,32 → 933,8 |
tableFourSec.removeSelectedRow(); |
} |
}); |
if (getTable().getSchema().contains("CODE_FOURNISSEUR") && supplierCode) { |
c.gridy++; |
c.gridx = 0; |
c.gridwidth = GridBagConstraints.REMAINDER; |
TitledSeparator sepC = new TitledSeparator("Codes fournisseurs"); |
panel.add(sepC, c); |
this.rowValuesDefaultCodeFournisseur = new SQLRowValues(getTable().getTable("CODE_FOURNISSEUR")); |
this.codeFournisseurTable = new CodeFournisseurItemTable(this.rowValuesDefaultCodeFournisseur); |
c.gridy++; |
c.gridx = 0; |
c.gridwidth = GridBagConstraints.REMAINDER; |
c.weighty = 1; |
c.weightx = 1; |
c.fill = GridBagConstraints.BOTH; |
panel.add(this.codeFournisseurTable, c); |
comboSelFournisseur.addValueListener(new PropertyChangeListener() { |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
rowValuesDefaultCodeFournisseur.put("ID_FOURNISSEUR", comboSelFournisseur.getSelectedId()); |
} |
}); |
} |
return panel; |
} |
private JPanel createExportationPanel() { |
1209,68 → 1143,17 |
panel.setOpaque(false); |
GridBagConstraints c = new DefaultGridBagConstraints(); |
final JCheckBox checkAutoPrice = new JCheckBox(getLabelFor("AUTO_PRIX_MIN_VENTE_NOMENCLATURE")); |
panel.add(checkAutoPrice, c); |
this.addView(checkAutoPrice, "AUTO_PRIX_MIN_VENTE_NOMENCLATURE"); |
c.gridx++; |
final JCheckBox checkAutoPriceHA = new JCheckBox(getLabelFor("AUTO_PRIX_ACHAT_NOMENCLATURE")); |
panel.add(checkAutoPriceHA, c); |
this.addView(checkAutoPriceHA, "AUTO_PRIX_ACHAT_NOMENCLATURE"); |
checkAutoPrice.addActionListener(new ActionListener() { |
@Override |
public void actionPerformed(ActionEvent e) { |
updatePricesNomenclature(checkAutoPrice, checkAutoPriceHA); |
} |
}); |
checkAutoPriceHA.addActionListener(new ActionListener() { |
@Override |
public void actionPerformed(ActionEvent e) { |
updatePricesNomenclature(checkAutoPrice, checkAutoPriceHA); |
} |
}); |
c.gridwidth = GridBagConstraints.REMAINDER; |
c.fill = GridBagConstraints.BOTH; |
c.weightx = 1; |
c.weighty = 1; |
c.gridx = 0; |
c.gridy++; |
c.fill = GridBagConstraints.BOTH; |
this.tableBom.setOpaque(false); |
panel.add(new RowValuesTableEditionPanel(this.tableBom), c); |
this.tableBom.getModel().addTableModelListener(new TableModelListener() { |
@Override |
public void tableChanged(TableModelEvent e) { |
updatePricesNomenclature(checkAutoPrice, checkAutoPriceHA); |
} |
}); |
return panel; |
} |
private void updatePricesNomenclature(final JCheckBox checkAutoPrice, final JCheckBox checkAutoPriceHA) { |
final Boolean vtAuto = checkAutoPrice.isSelected(); |
final Boolean haAuto = checkAutoPriceHA.isSelected(); |
if (vtAuto || haAuto) { |
ProductHelper helper = new ProductHelper(getTable().getDBRoot()); |
Tuple2<BigDecimal, BigDecimal> p = helper.getStandardBomPrices(tableBom.getRowValuesTable().getRowValuesTableModel().getCopyOfValues()); |
if (haAuto && p.get0() != null) { |
textPAHT.setText(p.get0().toString()); |
} |
if (vtAuto && p.get1() != null) { |
textPVHT.setText(p.get1().toString()); |
} |
} |
} |
private JPanel createTarifQtePanel() { |
JPanel panel = new JPanel(new GridBagLayout()); |
panel.setOpaque(false); |
1680,28 → 1563,27 |
@Override |
public void update() { |
SQLRow row = this.getTable().getRow(this.getSelectedID()); |
final int selectedID = getSelectedID(); |
super.update(); |
this.tableTarifVente.updateField("ID_ARTICLE", selectedID); |
this.tableCatComptable.updateField("ID_ARTICLE", selectedID); |
this.tableFourSec.updateField("ID_ARTICLE", selectedID); |
this.tableTarifQteVente.updateField("ID_ARTICLE", selectedID); |
this.tableTarifVente.updateField("ID_ARTICLE", getSelectedID()); |
this.tableCatComptable.updateField("ID_ARTICLE", getSelectedID()); |
this.tableFourSec.updateField("ID_ARTICLE", getSelectedID()); |
this.tableTarifQteVente.updateField("ID_ARTICLE", getSelectedID()); |
if (this.tableBom != null) { |
this.tableBom.updateField("ID_ARTICLE_PARENT", selectedID); |
this.tableBom.updateField("ID_ARTICLE_PARENT", getSelectedID()); |
} |
this.tableDes.updateField("ID_ARTICLE", selectedID); |
this.tableCodeClient.updateField("ID_ARTICLE", selectedID); |
this.tableDes.updateField("ID_ARTICLE", getSelectedID()); |
this.tableCodeClient.updateField("ID_ARTICLE", getSelectedID()); |
if (this.codeFournisseurTable != null) { |
this.codeFournisseurTable.updateField("ID_ARTICLE", selectedID); |
this.codeFournisseurTable.updateField("ID_ARTICLE", getSelectedID()); |
} |
((ReferenceArticleSQLElement) getElement()).initStock(selectedID); |
((ReferenceArticleSQLElement) getElement()).initStock(getSelectedID()); |
SQLSelect sel = new SQLSelect(); |
SQLTable tableStock = getTable().getTable("STOCK"); |
sel.addSelect(tableStock.getKey()); |
Where w = new Where(tableStock.getField("ID_ARTICLE"), "=", selectedID).and(new Where(tableStock.getField("ID_DEPOT_STOCK"), "=", row.getForeignID("ID_DEPOT_STOCK"))); |
Where w = new Where(tableStock.getField("ID_ARTICLE"), "=", getSelectedID()).and(new Where(tableStock.getField("ID_DEPOT_STOCK"), "=", row.getForeignID("ID_DEPOT_STOCK"))); |
sel.setWhere(w); |
List<SQLRow> stock = SQLRowListRSH.execute(sel); |
1713,56 → 1595,8 |
} |
} |
Runnable r = new Runnable() { |
@Override |
public void run() { |
SQLRow rowArticle = getTable().getRow(selectedID); |
List<SQLRow> itemsRows = rowArticle.getReferentRows(getTable().getTable("ARTICLE_ELEMENT").getField("ID_ARTICLE")); |
for (SQLRow rowArticleItem : itemsRows) { |
SQLRow rowA = rowArticleItem.getForeign("ID_ARTICLE_PARENT"); |
if (rowA != null && !rowA.isUndefined()) { |
final Boolean vtAuto = rowA.getBoolean("AUTO_PRIX_MIN_VENTE_NOMENCLATURE"); |
final Boolean haAuto = rowA.getBoolean("AUTO_PRIX_ACHAT_NOMENCLATURE"); |
if (vtAuto || haAuto) { |
ProductHelper helper = new ProductHelper(rowA.getTable().getDBRoot()); |
Tuple2<BigDecimal, BigDecimal> p = helper.getStandardBomPrices(rowA.getReferentRows(rowA.getTable().getTable("ARTICLE_ELEMENT").getField("ID_ARTICLE_PARENT"))); |
SQLRowValues rowVals = rowA.createEmptyUpdateRow(); |
boolean up = false; |
if (vtAuto && p.get1() != null) { |
rowVals.put("PRIX_METRIQUE_VT_1", p.get1()); |
rowVals.put("PV_HT", p.get1()); |
float t = TaxeCache.getCache().getFirstTaxe().getFloat("TAUX"); |
if (!rowA.isForeignEmpty("ID_TAXE")) { |
t = TaxeCache.getCache().getTauxFromId(rowA.getForeignID("ID_TAXE")); |
} |
rowVals.put("PV_TTC", p.get1().multiply(new BigDecimal(t).movePointLeft(2).add(BigDecimal.ONE)).setScale(2, RoundingMode.HALF_UP)); |
up = true; |
} |
if (haAuto && p.get0() != null) { |
rowVals.put("PRIX_METRIQUE_HA_1", p.get0()); |
rowVals.put("PA_HT", p.get0()); |
up = true; |
} |
if (up) { |
try { |
rowVals.commit(); |
} catch (SQLException e) { |
ExceptionHandler.handle("Erreur lors de la mise à jour des tarifs des nomenclatures", e); |
} |
} |
} |
} |
} |
} |
}; |
new Thread(r).run(); |
ReferenceArticleSQLElement.updateDateAchat(getTable(), getTable().getRow(selectedID)); |
} |
/** |
* Sélection d'un mode de vente pour l'article. Affiche les prix metriques requis et fixe les |
* valeurs. |
1827,7 → 1661,6 |
this.codeFournisseurTable.updateField("ID_ARTICLE", id); |
} |
((ReferenceArticleSQLElement) getElement()).initStock(id); |
ReferenceArticleSQLElement.updateDateAchat(getTable(), getTable().getRow(id)); |
return id; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/product/element/UniteVenteArticleSQLElement.java |
---|
30,7 → 30,6 |
public class UniteVenteArticleSQLElement extends ComptaSQLConfElement { |
public static final int A_LA_PIECE = 2; |
public static final int M2 = 4; |
public UniteVenteArticleSQLElement() { |
super("UNITE_VENTE", "une unité de vente", "unité de vente"); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/product/element/ReferenceArticleSQLElement.java |
---|
59,7 → 59,9 |
import java.sql.SQLException; |
import java.util.ArrayList; |
import java.util.Collection; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
import java.util.Set; |
import javax.swing.AbstractAction; |
214,7 → 216,6 |
l.add("PV_TTC"); |
l.add("ID_FAMILLE_ARTICLE"); |
l.add("ID_FOURNISSEUR"); |
l.add("POIDS"); |
l.add("SKU"); |
// if (!prefs.getBoolean(GestionArticleGlobalPreferencePanel.STOCK_MULTI_DEPOT, false)) { |
249,9 → 250,6 |
} |
l.add("NOM"); |
l.add("PA_HT"); |
l.add("PV_HT"); |
l.add("DERNIER_DATE_ACHAT"); |
return l; |
} |
543,20 → 541,4 |
// req.addForeignToGraphToFetch("ID_DEPOT_STOCK", Arrays.asList("ID")); |
} |
static public void updateDateAchat(final SQLTable tableArticle, final SQLRow article) { |
assert article == null || article.getTable() == tableArticle; |
SQLTable tableTarifF = tableArticle.getTable("ARTICLE_TARIF_FOURNISSEUR"); |
String up = "UPDATE " + tableArticle.getSQLName().quote() + " a SET " + tableArticle.getField("DERNIER_DATE_ACHAT").getQuotedName(); |
up += " =(select MAX(" + tableTarifF.getField("DATE_PRIX").getQuotedName() + ") "; |
up += " FROM " + tableTarifF.getSQLName().quote() + " t" + " WHERE (t." + tableTarifF.getKey().getQuotedName() + " <> 1) "; |
up += " AND (t." + tableTarifF.getField("ARCHIVE").getQuotedName() + " = 0) "; |
up += "AND t." + tableTarifF.getField("ID_ARTICLE").getQuotedName() + " = " + (article == null ? "a." + tableArticle.getKey().getQuotedName() : article.getID()) + ")"; |
if (article != null) { |
up += "WHERE " + tableArticle.getKey().getQuotedName() + " = " + article.getID(); |
} |
tableArticle.getDBSystemRoot().getDataSource().execute(up); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/pos/model/DBState.java |
---|
144,12 → 144,11 |
* Check if the register installation has moved and ask the user about it if it did. This can be |
* called from outside the EDT. |
* |
* @param erpTM UI locale |
* @return <code>true</code> if the user wants to quit. |
* @throws InterruptedException if this thread was interrupted while waiting on the EDT. |
* @throws ExecutionException if there was an error while asking the user. |
*/ |
public final boolean checkIfMoved(final TM erpTM) throws InterruptedException, ExecutionException { |
public final boolean checkIfMoved() throws InterruptedException, ExecutionException { |
final SQLRowValues lastEntry = this.getLastEntry(); |
if (lastEntry == null) { |
return false; |
160,14 → 159,13 |
if (dbValues.equals(currentValues) || NULL_VALUES.equals(dbValues)) { |
return false; |
} else { |
final String message = erpTM.translate("register.moved", getPosID()); |
final String[] options = new String[] { erpTM.translate("register.moved.ignore"), erpTM.translate("register.moved.quit") }; |
final String message = TM.tr("register.moved", getPosID()); |
final String[] options = new String[] { TM.tr("register.moved.ignore"), TM.tr("register.moved.quit") }; |
final FutureTask<Boolean> askUserCallable = new FutureTask<>(new Callable<Boolean>() { |
@Override |
public Boolean call() throws Exception { |
// quit by default |
final int ans = JOptionPane.showOptionDialog(null, message, erpTM.translate("register.moved.title"), JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, |
options[1]); |
final int ans = JOptionPane.showOptionDialog(null, message, TM.tr("register.moved.title"), JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]); |
// CLOSED_OPTION also means quit, only clicking "ignore" means don't quit |
return ans != 0; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/pos/model/RegisterFiles.java |
---|
48,7 → 48,6 |
import java.util.Comparator; |
import java.util.Date; |
import java.util.List; |
import java.util.Objects; |
import java.util.SortedSet; |
import java.util.TreeSet; |
import java.util.logging.Level; |
365,14 → 364,10 |
public final RegisterLog open(final int userID, final DBState dbState) throws IOException { |
if (!this.hasLock.get()) |
throw new IllegalStateException("Not locked"); |
Objects.requireNonNull(dbState, "Missing DBState"); |
// pass null RegisterDB since the DB is already open |
return createOpen(userID, null, dbState).transformChecked(this); |
} |
public final RegisterLog open(final int userID, final RegisterDB registerDB) throws IOException { |
Objects.requireNonNull(registerDB, "Missing RegisterDB"); |
// pass null DBState to ask for the opening |
return this.doWithLock(createOpen(userID, registerDB, null)); |
} |
382,6 → 377,7 |
@Override |
public RegisterLog transformChecked(RegisterFiles input) throws IOException { |
POSConfiguration.getLogger().log(Level.FINE, "Begin opening of FS state for register {0}", input.getPosID()); |
POSConfiguration.checkRegisterID(input.getPosID(), registerDB.getPosID()); |
final RegisterLog lastLog = input.checkStatus(true); |
final String lastLocalHash; |
final Date prevDate; |
402,7 → 398,6 |
final DBState dbState; |
if (passedDBState == null) { |
try { |
POSConfiguration.checkRegisterID(input.getPosID(), registerDB.getPosID()); |
dbState = registerDB.open(lastLocalHash, userID); |
} catch (SQLException e) { |
throw new IOException("Couldn't open the register in the DB", e); |
449,7 → 444,7 |
} |
} |
POSConfiguration.getLogger().log(Level.INFO, "Finished opening of FS state for register {0}", input.getPosID()); |
POSConfiguration.getLogger().log(Level.INFO, "Finished opening of FS state for register {0}", registerDB); |
// TODO parse and validate before moving into place |
try { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/pos/POSConfiguration.java |
---|
74,6 → 74,7 |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Locale; |
import java.util.Map; |
import java.util.logging.Logger; |
247,8 → 248,8 |
public ComptaPropsConfiguration createConnexion() { |
final ComptaPropsConfiguration conf = ComptaPropsConfiguration.create(); |
TranslationManager.addTranslationStreamFromClass(MainFrame.class); |
TranslationManager.createDefaultInstance(); |
TranslationManager.getInstance().addTranslationStreamFromClass(MainFrame.class); |
TranslationManager.getInstance().setLocale(Locale.getDefault()); |
Configuration.setInstance(conf); |
try { |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/pos/ui/CaissePanel.java |
---|
105,7 → 105,7 |
// Column 3 |
c.gridx++; |
c.weightx = 0; |
this.add(new PaiementPanel(this), c); |
this.add(new PaiementPanel(this.controler), c); |
this.controler.addCaisseListener(this); |
} |
433,10 → 433,6 |
} |
public boolean isModeSearch() { |
return this.selector == this.articleSearchPanel; |
} |
public CaisseControler getControler() { |
return this.controler; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/pos/ui/CaisseMenuPanel.java |
---|
159,7 → 159,7 |
@Override |
public void actionPerformed(ActionEvent e) { |
try { |
final boolean quit = caisseFrame.getDB().fetchRegisterState().checkIfMoved(caisseFrame.getConf().getERP_TM()); |
final boolean quit = caisseFrame.getDB().fetchRegisterState().checkIfMoved(); |
if (!quit) { |
frame.getControler().setLCD("Cloture", "En cours...", 0); |
final int userID = caisseFrame.getPOSConf().getUserID(); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/pos/ui/PaiementPanel.java |
---|
47,13 → 47,11 |
*/ |
private char mode = ' '; |
private boolean init = true; |
private CaissePanel caissePanel; |
public PaiementPanel(CaissePanel caissePanel) { |
this.controller = caissePanel.getControler(); |
public PaiementPanel(CaisseControler controller) { |
this.controller = controller; |
this.controller.addCaisseListener(this); |
this.controller.addBarcodeListener(this); |
this.caissePanel = caissePanel; |
this.setOpaque(false); |
this.addMouseListener(this); |
558,7 → 556,7 |
@Override |
public void keyReceived(KeyEvent e) { |
if (!this.caissePanel.isModeSearch() && e.getID() == KeyEvent.KEY_TYPED) { |
if (e.getID() == KeyEvent.KEY_TYPED) { |
System.out.println("PaiementPanel.keyPressed()" + e.getKeyChar()); |
handleCharacter(e.getKeyChar()); |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/sales/pos/ui/CaisseFrame.java |
---|
134,7 → 134,6 |
} |
final ComptaPropsConfiguration conf = posConf.createConnexion(); |
final TM erpTM = conf.getERP_TM(); |
final int userID = posConf.getUserID(); |
final int posID = posConf.getPosID(); |
144,13 → 143,13 |
final SQLRowValuesListFetcher fetcher = SQLRowValuesListFetcher.create(new SQLRowValues(registerDB.getRegisterTable())); |
if (fetcher.fetchOne(posID) == null) { |
SwingUtilities.invokeLater(() -> { |
JOptionPane.showMessageDialog(null, erpTM.translate("register.missing", posID), erpTM.translate("register.missing.title"), JOptionPane.ERROR_MESSAGE); |
JOptionPane.showMessageDialog(null, TM.tr("register.missing", posID), TM.tr("register.missing.title"), JOptionPane.ERROR_MESSAGE); |
}); |
posConf.closeConnexion(); |
return; |
} |
// check before changing any state |
final boolean quit = registerDB.fetchRegisterState().checkIfMoved(erpTM); |
final boolean quit = registerDB.fetchRegisterState().checkIfMoved(); |
if (quit) { |
quit(posConf); |
return; |
170,17 → 169,17 |
final String generalMsg; |
boolean onlyOptionPane = false; |
if (re instanceof OutsideMeddlingException) { |
generalMsg = erpTM.translate("register.notReconciled.outsideMeddling") + '\n'; |
generalMsg = TM.tr("register.notReconciled.outsideMeddling") + '\n'; |
onlyOptionPane = true; |
} else if (re instanceof ResumeException) { |
generalMsg = erpTM.translate("register.notReconciled.resumeFailed") + '\n'; |
generalMsg = TM.tr("register.notReconciled.resumeFailed") + '\n'; |
} else { |
generalMsg = ""; |
} |
final String message = erpTM.trM("register.notReconciled." + re.getTranslationKey(), "localDate", re.getLocalState().copyDate(), "remoteDate", re.getRemoteState().copyDate()); |
final String message = TM.getTM().trM("register.notReconciled." + re.getTranslationKey(), "localDate", re.getLocalState().copyDate(), "remoteDate", re.getRemoteState().copyDate()); |
if (onlyOptionPane) { |
SwingUtilities.invokeLater(() -> { |
JOptionPane.showMessageDialog(null, generalMsg + message, erpTM.translate("register.notReconciled.title"), JOptionPane.ERROR_MESSAGE); |
JOptionPane.showMessageDialog(null, generalMsg + message, TM.tr("register.notReconciled.title"), JOptionPane.ERROR_MESSAGE); |
}); |
} else { |
ExceptionHandler.handle(generalMsg + message, re); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/common/element/AdresseSQLElement.java |
---|
15,7 → 15,6 |
import org.openconcerto.erp.core.common.component.AdresseSQLComponent; |
import org.openconcerto.sql.element.SQLComponent; |
import org.openconcerto.utils.ListMap; |
import java.util.ArrayList; |
import java.util.List; |
26,15 → 25,6 |
super("ADRESSE", "une adresse", "adresses"); |
} |
@Override |
public ListMap<String, String> getShowAs() { |
if (this.getTable().contains("DISTRICT")) { |
return ListMap.singleton(null, "RUE", "DISTRICT", "DEPARTEMENT", "CODE_POSTAL", "VILLE"); |
} else { |
return ListMap.singleton(null, "RUE", "CODE_POSTAL", "VILLE"); |
} |
} |
protected List<String> getListFields() { |
final List<String> l = new ArrayList<String>(); |
l.add("RUE"); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/common/element/BanqueSQLElement.java |
---|
17,7 → 17,6 |
import org.openconcerto.sql.element.UISQLComponent; |
import org.openconcerto.sql.request.ComboSQLRequest; |
import org.openconcerto.sql.request.ComboSQLRequest.KeepMode; |
import org.openconcerto.utils.ListMap; |
import org.openconcerto.utils.ProductInfo; |
import java.util.ArrayList; |
33,13 → 32,6 |
} |
@Override |
public ListMap<String, String> getShowAs() { |
ListMap<String, String> map = new ListMap<>(); |
map.add(null, "NOM"); |
return map; |
} |
@Override |
protected void _initComboRequest(ComboSQLRequest req) { |
super._initComboRequest(req); |
req.addForeignToGraphToFetch("ID_JOURNAL", Arrays.asList("ID", "CODE", "NOM")); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/common/ui/AbstractVenteArticleItemTable.java |
---|
19,7 → 19,6 |
import org.openconcerto.erp.core.sales.pos.io.BarcodeReader; |
import org.openconcerto.erp.core.sales.pos.ui.BarcodeListener; |
import org.openconcerto.erp.core.sales.product.element.ReferenceArticleSQLElement; |
import org.openconcerto.erp.core.sales.product.element.UniteVenteArticleSQLElement; |
import org.openconcerto.erp.core.sales.product.model.ProductComponent; |
import org.openconcerto.erp.core.sales.product.model.ProductHelper; |
import org.openconcerto.erp.core.sales.product.model.ProductHelper.TypePrice; |
27,7 → 26,6 |
import org.openconcerto.erp.core.sales.product.ui.CurrencyWithSymbolRenderer; |
import org.openconcerto.erp.core.sales.product.ui.QteMultipleRowValuesRenderer; |
import org.openconcerto.erp.core.sales.product.ui.QteUnitRowValuesRenderer; |
import org.openconcerto.erp.core.supplychain.stock.element.DepotStockSQLElement; |
import org.openconcerto.erp.core.supplychain.stock.element.StockSQLElement; |
import org.openconcerto.erp.importer.ArrayTableModel; |
import org.openconcerto.erp.importer.DataImporter; |
60,7 → 58,6 |
import org.openconcerto.sql.view.list.SQLTableElement; |
import org.openconcerto.sql.view.list.SQLTextComboTableCellEditor; |
import org.openconcerto.sql.view.list.ValidStateChecker; |
import org.openconcerto.ui.preferences.DefaultProps; |
import org.openconcerto.utils.CompareUtils; |
import org.openconcerto.utils.DecimalUtils; |
import org.openconcerto.utils.StringUtils; |
139,7 → 136,7 |
protected SQLTableElement tableElementRemise; |
public enum TypeCalcul { |
CALCUL_MONTANT_TOTAL("MONTANT_FACTURABLE", "POURCENT_FACTURABLE"), CALCUL_FACTURABLE("MONTANT_FACTURABLE", "POURCENT_FACTURABLE"), CALCUL_REMISE("MONTANT_REMISE", "POURCENT_REMISE"); |
CALCUL_FACTURABLE("MONTANT_FACTURABLE", "POURCENT_FACTURABLE"), CALCUL_REMISE("MONTANT_REMISE", "POURCENT_REMISE"); |
String fieldMontant, fieldPourcent; |
157,10 → 154,7 |
} |
}; |
private Acompte acompteFacturer = null; |
public void calculPourcentage(final Acompte a, final TypeCalcul type) { |
this.acompteFacturer = a; |
Runnable r = new Runnable() { |
@Override |
184,8 → 178,39 |
tableElement.fireModification(model.getRowValuesAt(i)); |
} |
} else { |
BigDecimal totalHT = getTotalHT(type); |
// FIXME repartition du montant sur chaque ligne |
BigDecimal totalHT = BigDecimal.ZERO; |
for (SQLRowValues rowVals : getRowValuesAtLevel(1)) { |
int qte = rowVals.getInt("QTE"); |
BigDecimal qteU = rowVals.getBigDecimal("QTE_UNITAIRE"); |
BigDecimal pU = rowVals.getBigDecimal("PV_HT"); |
BigDecimal totalLine = pU.multiply(qteU, DecimalUtils.HIGH_PRECISION).multiply(new BigDecimal(qte), DecimalUtils.HIGH_PRECISION).setScale(2, RoundingMode.HALF_UP); |
// BigDecimal lremise = (type == TypeCalcul.CALCUL_FACTURABLE ? |
// rowVals.getBigDecimal("POURCENT_REMISE") : BigDecimal.ZERO); |
// |
// if (lremise.compareTo(BigDecimal.ZERO) > 0 && |
// lremise.compareTo(BigDecimal.valueOf(100)) < 100) { |
// totalLine = |
// totalLine.multiply(BigDecimal.valueOf(100).subtract(lremise), |
// DecimalUtils.HIGH_PRECISION).movePointLeft(2); |
// } |
if (type == TypeCalcul.CALCUL_FACTURABLE) { |
if (rowVals.getTable().getFieldsName().contains("MONTANT_REMISE")) { |
final BigDecimal acomptePercent = rowVals.getBigDecimal("POURCENT_REMISE"); |
final BigDecimal acompteMontant = rowVals.getBigDecimal("MONTANT_REMISE"); |
Remise remise = new Remise(acomptePercent, acompteMontant); |
totalLine = remise.getResultFrom(totalLine); |
} |
} |
totalHT = totalHT.add(totalLine); |
} |
// BigDecimal percent = (totalHT.signum() != 0 ? |
// a.getMontant().divide(totalHT, DecimalUtils.HIGH_PRECISION) : |
// BigDecimal.ZERO); |
for (int i = 0; i < model.getRowCount(); i++) { |
// Restrict to level 1 |
if (model.getRowValuesAt(i).getInt("NIVEAU") != 1) { |
199,6 → 224,15 |
BigDecimal totalLine = pU.multiply(qteU, DecimalUtils.HIGH_PRECISION).multiply(new BigDecimal(qte), DecimalUtils.HIGH_PRECISION).setScale(2, RoundingMode.HALF_UP); |
// BigDecimal lremise = (type == TypeCalcul.CALCUL_FACTURABLE ? |
// rowVals.getBigDecimal("POURCENT_REMISE") : BigDecimal.ZERO); |
// |
// if (lremise.compareTo(BigDecimal.ZERO) > 0 && |
// lremise.compareTo(BigDecimal.valueOf(100)) < 100) { |
// totalLine = |
// totalLine.multiply(BigDecimal.valueOf(100).subtract(lremise), |
// DecimalUtils.HIGH_PRECISION).movePointLeft(2); |
// } |
if (rowVals.getTable().getFieldsName().contains("MONTANT_REMISE")) { |
final BigDecimal acomptePercent = rowVals.getBigDecimal("POURCENT_REMISE"); |
final BigDecimal acompteMontant = rowVals.getBigDecimal("MONTANT_REMISE"); |
214,7 → 248,6 |
} |
model.fireTableDataChanged(); |
} |
}); |
} |
}; |
222,37 → 255,6 |
} |
public BigDecimal getTotalHT(final TypeCalcul type) { |
BigDecimal totalHT = BigDecimal.ZERO; |
for (SQLRowValues rowVals : getRowValuesAtLevel(1)) { |
int qte = rowVals.getInt("QTE"); |
BigDecimal qteU = rowVals.getBigDecimal("QTE_UNITAIRE"); |
BigDecimal pU = rowVals.getBigDecimal("PV_HT"); |
BigDecimal totalLine = pU.multiply(qteU, DecimalUtils.HIGH_PRECISION).multiply(new BigDecimal(qte), DecimalUtils.HIGH_PRECISION).setScale(2, RoundingMode.HALF_UP); |
if (type == TypeCalcul.CALCUL_FACTURABLE || type == TypeCalcul.CALCUL_MONTANT_TOTAL) { |
if (rowVals.getTable().getFieldsName().contains("MONTANT_REMISE")) { |
final BigDecimal acomptePercent = rowVals.getBigDecimal("POURCENT_REMISE"); |
final BigDecimal acompteMontant = rowVals.getBigDecimal("MONTANT_REMISE"); |
Remise remise = new Remise(acomptePercent, acompteMontant); |
totalLine = remise.getResultFrom(totalLine); |
} |
} |
if (type == TypeCalcul.CALCUL_MONTANT_TOTAL) { |
if (rowVals.getTable().getFieldsName().contains("POURCENT_FACTURABLE")) { |
final BigDecimal acomptePercent = rowVals.getBigDecimal("POURCENT_FACTURABLE"); |
final BigDecimal acompteMontant = rowVals.getBigDecimal("MONTANT_FACTURABLE"); |
Acompte acompte = new Acompte(acomptePercent, acompteMontant); |
totalLine = acompte.getResultFrom(totalLine); |
} |
} |
totalHT = totalHT.add(totalLine); |
} |
return totalHT; |
} |
private static Map<String, Boolean> visibilityMap = new HashMap<String, Boolean>(); |
public static Map<String, Boolean> getVisibilityMap() { |
266,7 → 268,6 |
SQLPreferences prefs = SQLPreferences.getMemCached(getSQLElement().getTable().getDBRoot()); |
final boolean selectArticle = prefs.getBoolean(GestionArticleGlobalPreferencePanel.USE_CREATED_ARTICLE, false); |
final boolean activeCalculM2 = prefs.getBoolean(GestionArticleGlobalPreferencePanel.ACTIVE_CALCUL_M2, false); |
final boolean filterFamilleArticle = prefs.getBoolean(GestionArticleGlobalPreferencePanel.FILTER_BY_FAMILY, false); |
final boolean createAuto = prefs.getBoolean(GestionArticleGlobalPreferencePanel.CREATE_ARTICLE_AUTO, true); |
final boolean showEco = prefs.getBoolean(AbstractVenteArticleItemTable.SHOW_ECO_CONTRIBUTION_COLUMNS, false); |
480,29 → 481,8 |
list.add(this.tableElementEco); |
} |
SQLTableElement eltLongueur = new SQLTableElement(e.getTable().getField("LONGUEUR")) { |
@Override |
public boolean isCellEditable(SQLRowValues vals, int rowIndex, int columnIndex) { |
// // Prix d'achat HT de la métrique 1 |
int idUv = vals.getForeignID("ID_UNITE_VENTE"); |
return idUv == UniteVenteArticleSQLElement.M2; |
} |
}; |
list.add(eltLongueur); |
SQLTableElement eltLargeur = new SQLTableElement(e.getTable().getField("LARGEUR")) { |
@Override |
public boolean isCellEditable(SQLRowValues vals, int rowIndex, int columnIndex) { |
int idUv = vals.getForeignID("ID_UNITE_VENTE"); |
return idUv == UniteVenteArticleSQLElement.M2; |
} |
}; |
list.add(eltLargeur); |
SQLTableElement eltHauteur = new SQLTableElement(e.getTable().getField("HAUTEUR")); |
list.add(eltHauteur); |
SQLTableElement qteU = new SQLTableElement(e.getTable().getField("QTE_UNITAIRE"), BigDecimal.class) { |
@Override |
public boolean isCellEditable(SQLRowValues vals, int rowIndex, int columnIndex) { |
510,8 → 490,6 |
SQLRowAccessor row = vals.getForeign("ID_UNITE_VENTE"); |
if (row != null && !row.isUndefined() && row.getBoolean("A_LA_PIECE")) { |
return false; |
} else if (activeCalculM2 && row != null && !row.isUndefined() && row.getID() == UniteVenteArticleSQLElement.M2) { |
return false; |
} else { |
return super.isCellEditable(vals, rowIndex, columnIndex); |
} |
622,17 → 600,8 |
list.add(this.tableElementPoidsTotal); |
// Packaging |
if (e.getTable().contains("POIDS_COLIS_NET") && prefs.getBoolean(GestionArticleGlobalPreferencePanel.ITEM_PACKAGING, false)) { |
if (prefs.getBoolean(GestionArticleGlobalPreferencePanel.ITEM_PACKAGING, false)) { |
SQLTableElement tareColis = new SQLTableElement(e.getTable().getField("TARE"), BigDecimal.class) { |
@Override |
public TableCellRenderer getTableCellRenderer() { |
return new QteUnitRowValuesRenderer(); |
} |
}; |
list.add(tareColis); |
SQLTableElement poidsColis = new SQLTableElement(e.getTable().getField("POIDS_COLIS_NET"), BigDecimal.class) { |
@Override |
public TableCellRenderer getTableCellRenderer() { |
658,59 → 627,20 |
nbColis.addModificationListener(totalPoidsColis); |
totalPoidsColis.setModifier(new CellDynamicModifier() { |
public Object computeValueFrom(final SQLRowValues row, SQLTableElement source) { |
final BigDecimal pdsColis = row.getBigDecimal("POIDS_COLIS_NET"); |
final Object o2 = row.getObject("POIDS_COLIS_NET"); |
final Object o3 = row.getObject("NB_COLIS"); |
BigDecimal pdsColisTotal = BigDecimal.ZERO; |
if (pdsColis != null && o3 != null) { |
if (o2 != null && o3 != null) { |
BigDecimal poids = (BigDecimal) o2; |
int nb = (Integer) o3; |
pdsColisTotal = pdsColis.multiply(new BigDecimal(nb), DecimalUtils.HIGH_PRECISION); |
return poids.multiply(new BigDecimal(nb), DecimalUtils.HIGH_PRECISION).setScale(totalPoidsColis.getDecimalDigits(), RoundingMode.HALF_UP); |
} else { |
return row.getObject("T_POIDS_COLIS_NET"); |
} |
return pdsColisTotal.setScale(totalPoidsColis.getDecimalDigits(), RoundingMode.HALF_UP); |
} |
}); |
final SQLTableElement totalPoidsBrut = new SQLTableElement(e.getTable().getField("T_POIDS_BRUT"), BigDecimal.class) { |
@Override |
public TableCellRenderer getTableCellRenderer() { |
return new QteUnitRowValuesRenderer(); |
} |
}; |
list.add(totalPoidsBrut); |
tareColis.addModificationListener(totalPoidsBrut); |
poidsColis.addModificationListener(totalPoidsBrut); |
nbColis.addModificationListener(totalPoidsBrut); |
this.tableElementPoidsTotal.addModificationListener(totalPoidsBrut); |
totalPoidsBrut.setModifier(new CellDynamicModifier() { |
public Object computeValueFrom(final SQLRowValues row, SQLTableElement source) { |
final BigDecimal tare = row.getBigDecimal("TARE"); |
final int qte = row.getInt("QTE"); |
final BigDecimal pdsColis = row.getBigDecimal("POIDS_COLIS_NET"); |
final Object o3 = row.getObject("NB_COLIS"); |
BigDecimal pdsBrutTotal = BigDecimal.ZERO; |
if (row.getObject("T_POIDS") != null) { |
pdsBrutTotal = new BigDecimal(row.getFloat("T_POIDS")); |
} |
if (tare != null) { |
pdsBrutTotal = pdsBrutTotal.add(tare.multiply(new BigDecimal(qte))); |
} |
if (pdsColis != null && o3 != null) { |
int nb = (Integer) o3; |
pdsBrutTotal = pdsBrutTotal.add(pdsColis.multiply(new BigDecimal(nb), DecimalUtils.HIGH_PRECISION)); |
} |
return pdsBrutTotal.setScale(totalPoidsBrut.getDecimalDigits(), RoundingMode.HALF_UP); |
} |
}); |
} |
// Service |
if (DefaultNXProps.getInstance().getBooleanValue(ARTICLE_SERVICE, false)) { |
this.service = new SQLTableElement(e.getTable().getField("SERVICE"), Boolean.class); |
727,8 → 657,6 |
totalRenderer.setHideZeroValue(true); |
this.totalHT.setRenderer(totalRenderer); |
this.totalHT.setEditable(false); |
this.totalHA = new SQLTableElement(e.getTable().getField("T_PA_HT"), BigDecimal.class); |
if (e.getTable().getFieldsName().contains("MONTANT_FACTURABLE")) { |
// SQLTableElement tableElementAcompte = new |
// SQLTableElement(e.getTable().getField("POURCENT_ACOMPTE")); |
762,7 → 690,6 |
} |
}); |
tableElementFacturable.addModificationListener(this.totalHT); |
tableElementFacturable.addModificationListener(this.totalHA); |
list.add(tableElementFacturable); |
} |
811,6 → 738,7 |
} |
// Total HT |
this.totalHA = new SQLTableElement(e.getTable().getField("T_PA_HT"), BigDecimal.class); |
this.totalHA.setRenderer(totalRenderer); |
this.totalHA.setEditable(false); |
list.add(this.totalHA); |
928,12 → 856,6 |
defaultRowVals.put("ID_TAXE", TaxeCache.getCache().getFirstTaxe().getID()); |
defaultRowVals.put("CODE", ""); |
defaultRowVals.put("NOM", ""); |
if (e.getTable().contains("ID_DEPOT_STOCK")) { |
DefaultProps props = DefaultNXProps.getInstance(); |
Integer depotDefault = props.getIntProperty("DepotStockDefault", DepotStockSQLElement.DEFAULT_ID); |
this.defaultRowVals.put("ID_DEPOT_STOCK", depotDefault); |
} |
final RowValuesTableModel model = new RowValuesTableModel(e, list, e.getTable().getField("ID_TAXE"), false, defaultRowVals) { |
@Override |
public void commitData() { |
946,7 → 868,7 |
rowVals.put("PV_T_DEVISE", rowVals.getBigDecimal("PRIX_METRIQUE_VT_1").multiply(globalQty)); |
} |
} |
super.commitData(true); |
super.commitData(); |
} |
}; |
setModel(model); |
954,11 → 876,6 |
this.table = new RowValuesTable(model, getConfigurationFile()); |
ToolTipManager.sharedInstance().unregisterComponent(this.table); |
ToolTipManager.sharedInstance().unregisterComponent(this.table.getTableHeader()); |
if (getSQLElement().getTable().getName().equals("COMMANDE_CLIENT_ELEMENT")) { |
this.table.getClearCloneTableElement().add("QTE_LIVREE"); |
this.table.getClearCloneTableElement().add("LIVRE"); |
this.table.getClearCloneTableElement().add("LIVRE_FORCED"); |
} |
this.table.getTableHeader().addMouseListener(new MouseAdapter() { |
@Override |
1008,7 → 925,6 |
if (e.getTable().getFieldsName().contains("ID_ECO_CONTRIBUTION")) { |
completionField.add("ID_ECO_CONTRIBUTION"); |
} |
if (showDevise) { |
completionField.add("CODE_DOUANIER"); |
completionField.add("ID_PAYS"); |
1032,9 → 948,6 |
completionField.add("PRIX_METRIQUE_VT_3"); |
completionField.add("SERVICE"); |
completionField.add("ID_FAMILLE_ARTICLE"); |
completionField.add("LONGUEUR"); |
completionField.add("LARGEUR"); |
completionField.add("HAUTEUR"); |
if (getSQLElement().getTable().getFieldsName().contains("DESCRIPTIF")) { |
completionField.add("DESCRIPTIF"); |
} |
1046,13 → 959,6 |
completionField.add("QTE_ACHAT"); |
} |
if (getSQLElement().getTable().getFieldsName().contains("POIDS_COLIS_NET") && sqlTableArticle.getTable().getFieldsName().contains("POIDS_COLIS_NET")) { |
completionField.add("POIDS_COLIS_NET"); |
} |
if (getSQLElement().getTable().getFieldsName().contains("TARE") && sqlTableArticle.getTable().getFieldsName().contains("TARE")) { |
completionField.add("TARE"); |
} |
final AutoCompletionManager m = new AutoCompletionManager(tableElementCode, sqlTableArticle.getField("CODE"), this.table, this.table.getRowValuesTableModel()) { |
@Override |
1329,7 → 1235,7 |
BigDecimal fVT = (BigDecimal) row.getObject("PV_HT"); |
BigDecimal r = b.multiply(fVT.multiply(BigDecimal.valueOf(qte), DecimalUtils.HIGH_PRECISION), DecimalUtils.HIGH_PRECISION); |
if (lremise.compareTo(BigDecimal.ZERO) > 0) { |
if (lremise.compareTo(BigDecimal.ZERO) > 0 && lremise.compareTo(BigDecimal.valueOf(100)) < 100) { |
r = r.multiply(BigDecimal.valueOf(100).subtract(lremise), DecimalUtils.HIGH_PRECISION).movePointLeft(2); |
} |
1338,17 → 1244,7 |
final BigDecimal acompteMontantR = row.getBigDecimal("MONTANT_REMISE"); |
Remise remise = new Remise(acomptePercentR, acompteMontantR); |
r = remise.getResultFrom(r); |
// Si factrue d'avancement et remise =100% ou pv =0 alors on |
// applique le |
// ratio entre le montant facturer et le montant global |
if (acompteMontant.signum() == 0 && (acomptePercentR != null && acomptePercentR.compareTo(BigDecimal.ONE.movePointRight(2)) == 0)) { |
r = BigDecimal.ZERO; |
BigDecimal totalHTGlobal = getTotalHT(TypeCalcul.CALCUL_FACTURABLE); |
if (acompteFacturer != null && acompteFacturer.getMontant() != null && totalHTGlobal != null && totalHTGlobal.signum() != 0) { |
rHA = rHA.multiply(acompteFacturer.getMontant().divide(totalHTGlobal, DecimalUtils.HIGH_PRECISION), DecimalUtils.HIGH_PRECISION); |
} |
} |
} |
if (r.signum() != 0) { |
rHA = rHA.multiply(acompteMontant.divide(r, DecimalUtils.HIGH_PRECISION), DecimalUtils.HIGH_PRECISION); |
} |
1468,20 → 1364,11 |
}); |
uniteVente.addModificationListener(qteU); |
eltLargeur.addModificationListener(qteU); |
eltLongueur.addModificationListener(qteU); |
qteU.setModifier(new CellDynamicModifier() { |
public Object computeValueFrom(SQLRowValues row, SQLTableElement source) { |
SQLRowAccessor rowUnite = row.getForeign("ID_UNITE_VENTE"); |
if (rowUnite != null && !rowUnite.isUndefined() && rowUnite.getBoolean("A_LA_PIECE")) { |
return BigDecimal.ONE; |
} else if (activeCalculM2 && rowUnite != null && !rowUnite.isUndefined() && rowUnite.getID() == UniteVenteArticleSQLElement.M2) { |
BigDecimal longueur = row.getBigDecimal("LONGUEUR"); |
BigDecimal largeur = row.getBigDecimal("LARGEUR"); |
if (longueur == null || largeur == null) { |
return BigDecimal.ONE; |
} |
return longueur.multiply(largeur); |
} else { |
return row.getObject("QTE_UNITAIRE"); |
} |
1610,11 → 1497,6 |
setColumnVisible(model.getColumnForField("T_ECO_CONTRIBUTION"), showEco); |
} |
// ACtivation calcul m2 |
setColumnVisible(model.getColumnForField("HAUTEUR"), false); |
setColumnVisible(model.getColumnForField("LARGEUR"), activeCalculM2); |
setColumnVisible(model.getColumnForField("LONGUEUR"), activeCalculM2); |
// Gestion des unités de vente |
final boolean gestionUV = prefs.getBoolean(GestionArticleGlobalPreferencePanel.UNITE_VENTE, true); |
setColumnVisible(model.getColumnForField("QTE_UNITAIRE"), gestionUV); |
1642,9 → 1524,6 |
setColumnVisible(model.getColumnForField("ID_DEPOT_STOCK"), prefs.getBoolean(GestionArticleGlobalPreferencePanel.STOCK_MULTI_DEPOT, false)); |
setColumnVisible(model.getColumnForField("T_POIDS_COLIS_NET"), false); |
setColumnVisible(model.getColumnForField("T_POIDS_BRUT"), false); |
for (String string : visibilityMap.keySet()) { |
setColumnVisible(model.getColumnForField(string), visibilityMap.get(string)); |
} |
1919,7 → 1798,7 |
super.setClient(rowClient, ask); |
if (getRowClient() != null && !getRowClient().isUndefined()) { |
this.cacheRemise = getRowClient().getReferentRows(getSQLElement().getTable().getTable("TARIF_ARTICLE_CLIENT")); |
if (ask && this.cacheRemise.size() > 0 && getRowValuesTable().getRowCount() > 0 |
if (ask && getRowValuesTable().getRowCount() > 0 |
&& JOptionPane.showConfirmDialog(null, "Appliquer les remises associées au client sur les lignes déjà présentes?") == JOptionPane.YES_OPTION) { |
int nbRows = this.table.getRowCount(); |
for (int i = 0; i < nbRows; i++) { |
1951,8 → 1830,8 |
public void setTarif(SQLRowAccessor rowValuesTarif, boolean ask) { |
if (rowValuesTarif == null || getTarif() == null || rowValuesTarif.getID() != getTarif().getID()) { |
super.setTarif(rowValuesTarif, ask); |
if (ask && getRowValuesTable().getRowCount() > 0 && (rowValuesTarif == null || getTarif() == null || rowValuesTarif.isUndefined() |
|| JOptionPane.showConfirmDialog(null, "Appliquer les tarifs associés au client sur les lignes déjà présentes?") == JOptionPane.YES_OPTION)) { |
if (ask && getRowValuesTable().getRowCount() > 0 |
&& JOptionPane.showConfirmDialog(null, "Appliquer les tarifs associés au client sur les lignes déjà présentes?") == JOptionPane.YES_OPTION) { |
int nbRows = this.table.getRowCount(); |
for (int i = 0; i < nbRows; i++) { |
SQLRowValues rowVals = getRowValuesTable().getRowValuesTableModel().getRowValuesAt(i); |
1986,9 → 1865,7 |
// } |
SQLRowAccessor rowA = row.getForeign("ID_ARTICLE"); |
if (rowA != null && !rowA.isUndefined() && rowA.getTable().getDBRoot().contains("ARTICLE_PRIX_PUBLIC") && rowA.getTable().contains("AUTO_PRIX_MIN_VENTE_NOMENCLATURE") |
&& rowA.getBoolean("AUTO_PRIX_MIN_VENTE_NOMENCLATURE")) { |
if (rowA != null && !rowA.isUndefined() && rowA.getTable().contains("AUTO_PRIX_MIN_VENTE_NOMENCLATURE") && rowA.getBoolean("AUTO_PRIX_MIN_VENTE_NOMENCLATURE")) { |
BigDecimal b = row.getBigDecimal("QTE_UNITAIRE"); |
int q = row.getInt("QTE"); |
BigDecimal qteTotal = b.multiply(new BigDecimal(q), DecimalUtils.HIGH_PRECISION); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/common/ui/MontantPanel.java |
---|
85,37 → 85,7 |
calculMontant(); |
} |
}; |
private final DocumentListener listenerTextTaxe = new DocumentListener() { |
public void changedUpdate(DocumentEvent e) { |
if (MontantPanel.this.enabled) { |
long taxe = GestionDevise.parseLongCurrency(MontantPanel.this.textTaxe.getText()); |
if (MontantPanel.this.checkHT.isSelected()) { |
long ht = GestionDevise.parseLongCurrency(MontantPanel.this.textHT.getText()); |
long ttc = taxe + ht; |
MontantPanel.this.textTTC.getDocument().removeDocumentListener(MontantPanel.this.listenerTextTTC); |
MontantPanel.this.textTTC.setText(GestionDevise.currencyToString(ttc)); |
MontantPanel.this.textTTC.getDocument().addDocumentListener(MontantPanel.this.listenerTextTTC); |
} else { |
long ttc = GestionDevise.parseLongCurrency(MontantPanel.this.textTTC.getText()); |
long ht = ttc - taxe; |
MontantPanel.this.textHT.getDocument().removeDocumentListener(MontantPanel.this.listenerTextHT); |
MontantPanel.this.textHT.setText(GestionDevise.currencyToString(ht)); |
MontantPanel.this.textHT.getDocument().addDocumentListener(MontantPanel.this.listenerTextHT); |
} |
} |
} |
public void removeUpdate(DocumentEvent e) { |
changedUpdate(e); |
} |
public void insertUpdate(DocumentEvent e) { |
changedUpdate(e); |
} |
}; |
public MontantPanel() { |
uiInit(); |
} |
167,6 → 137,8 |
this.comboTaxe.addValueListener(new PropertyChangeListener() { |
public void propertyChange(PropertyChangeEvent evt) { |
// System.out.println("ID TAXE Changed " + |
// MontantPanel.this.comboTaxe.getSelectedId()); |
calculMontant(); |
} |
}); |
211,10 → 183,10 |
setHT(true); |
this.textTTC.getDocument().addDocumentListener(this.listenerTextTTC); |
this.textHT.getDocument().addDocumentListener(this.listenerTextHT); |
this.textTaxe.getDocument().addDocumentListener(this.listenerTextTaxe); |
} |
private void setHT(boolean b) { |
System.err.println("MontantPanel.setHT()" + b); |
if (b) { |
this.textHT.setEditable(true); |
this.textHT.setEnabled(true); |
230,13 → 202,16 |
public void calculMontant() { |
if (this.enabled) { |
float taux; |
PrixHT pHT; |
PrixTTC pTTC; |
System.out.println("Recalcul montant"); |
if (this.enabled) { |
// taux de la TVA selectionnee |
int idTaxe = this.comboTaxe.getSelectedId(); |
System.out.println("ID_TAXE = " + idTaxe); |
if (idTaxe > 1) { |
SQLRow ligneTaxe = SQLBackgroundTableCache.getInstance().getCacheForTable(((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete().getTable("TAXE")) |
.getRowFromId(idTaxe); |
264,9 → 239,8 |
ttc = GestionDevise.currencyToString(pHT.calculLongTTC(taux)); |
} |
updateText(tva, ttc, pHT.toString(), true); |
} else { |
} else |
updateText("", "", "", true); |
} |
} else { |
if (this.textTTC.getText().trim().length() > 0) { |
307,7 → 281,7 |
public void run() { |
MontantPanel.this.textHT.getDocument().removeDocumentListener(MontantPanel.this.listenerTextHT); |
MontantPanel.this.textTTC.getDocument().removeDocumentListener(MontantPanel.this.listenerTextTTC); |
MontantPanel.this.textTaxe.getDocument().removeDocumentListener(MontantPanel.this.listenerTextTaxe); |
// Update text with formated values |
if (!isHT) { |
MontantPanel.this.textHT.setText(prixHT); |
318,7 → 292,6 |
setHT(isHT); |
MontantPanel.this.textHT.getDocument().addDocumentListener(MontantPanel.this.listenerTextHT); |
MontantPanel.this.textTTC.getDocument().addDocumentListener(MontantPanel.this.listenerTextTTC); |
MontantPanel.this.textTaxe.getDocument().addDocumentListener(MontantPanel.this.listenerTextTaxe); |
} |
}); |
} |
327,7 → 300,7 |
this.enabled = b; |
this.checkHT.setEnabled(b); |
this.checkTTC.setEnabled(b); |
this.setHT(this.checkHT.isSelected()); |
this.setHT(checkHT.isSelected()); |
} |
public DeviseField getMontantTTC() { |
355,5 → 328,4 |
this.labelUE.setVisible(b); |
calculMontant(); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/common/ui/TotalCalculator.java |
---|
554,18 → 554,14 |
// TODO Optimiser les requetes |
if (this.rowCatComptable != null && !this.rowCatComptable.isUndefined()) { |
String suffix = (this.achat ? "_ACHAT" : "_VENTE"); |
if (!this.rowCatComptable.isForeignEmpty("ID_COMPTE_PCE" + suffix)) { |
cptCatComptable = cacheForTableCompte.getRowFromId(this.rowCatComptable.getForeignID("ID_COMPTE_PCE" + suffix)); |
} |
Collection<? extends SQLRowAccessor> rows = article.getReferentRows(this.compteTable.getTable("ARTICLE_CATEGORIE_COMPTABLE")); |
for (SQLRowAccessor sqlRowAccessor : rows) { |
if (sqlRowAccessor.getForeignID("ID_CATEGORIE_COMPTABLE") == this.rowCatComptable.getID()) { |
if (!sqlRowAccessor.isForeignEmpty("ID_COMPTE_PCE" + suffix)) { |
cptCatComptable = cacheForTableCompte.getRowFromId(sqlRowAccessor.getForeignID("ID_COMPTE_PCE" + suffix)); |
cptCatComptable = cacheForTableCompte.getRowFromId(this.rowCatComptable.getForeignID("ID_COMPTE_PCE" + suffix)); |
} |
} |
} |
} |
if (cptCatComptable == null) { |
String suffix = (this.achat ? "_ACHAT" : ""); |
SQLRowAccessor compteArticle = cacheForTableCompte.getRowFromId(article.getForeignID("ID_COMPTE_PCE" + suffix)); |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/common/ui/AbstractArticleItemTable.java |
---|
372,7 → 372,6 |
BigDecimal prixUnitHT = BigDecimal.ZERO; |
BigDecimal prixUnitHA = BigDecimal.ZERO; |
BigDecimal prixUnitEco = BigDecimal.ZERO; |
boolean update = false; |
int indexToUpdate = index; |
392,13 → 391,9 |
// Cumul des valeurs |
prixUnitHT = prixUnitHT.add(rowVals.getBigDecimal("PV_HT").multiply(new BigDecimal(rowVals.getInt("QTE"))).multiply(rowVals.getBigDecimal("QTE_UNITAIRE"))); |
prixUnitHA = prixUnitHA.add(rowVals.getBigDecimal("PA_HT").multiply(new BigDecimal(rowVals.getInt("QTE"))).multiply(rowVals.getBigDecimal("QTE_UNITAIRE"))); |
BigDecimal eco = rowVals.getBigDecimal("ECO_CONTRIBUTION"); |
if (eco != null) { |
prixUnitEco = prixUnitEco.add(eco.multiply(new BigDecimal(rowVals.getInt("QTE"))).multiply(rowVals.getBigDecimal("QTE_UNITAIRE"))); |
} |
} |
} |
} |
if (update) { |
final int columnForFieldHA = this.model.getColumnForField("PRIX_METRIQUE_HA_1"); |
if (columnForFieldHA >= 0) { |
409,11 → 404,7 |
if (columnForFieldPVht1 >= 0) { |
this.model.setValueAt(prixUnitHT, indexToUpdate, columnForFieldPVht1); |
} |
final int columnForFieldEco = this.model.getColumnForField("ECO_CONTRIBUTION"); |
if (columnForFieldEco >= 0) { |
this.model.setValueAt(prixUnitEco, indexToUpdate, columnForFieldEco); |
} |
} |
index = indexToUpdate - 1; |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/common/ui/AbstractAchatArticleItemTable.java |
---|
23,8 → 23,6 |
import org.openconcerto.erp.core.sales.product.ui.CurrencyWithSymbolRenderer; |
import org.openconcerto.erp.core.sales.product.ui.DeliveredQtyRowValuesRenderer; |
import org.openconcerto.erp.core.sales.product.ui.QteUnitRowValuesRenderer; |
import org.openconcerto.erp.core.supplychain.stock.element.DepotStockSQLElement; |
import org.openconcerto.erp.core.supplychain.stock.element.StockSQLElement; |
import org.openconcerto.erp.preferences.DefaultNXProps; |
import org.openconcerto.erp.preferences.GestionArticleGlobalPreferencePanel; |
import org.openconcerto.sql.Configuration; |
42,8 → 40,6 |
import org.openconcerto.sql.preferences.SQLPreferences; |
import org.openconcerto.sql.sqlobject.ITextArticleWithCompletionCellEditor; |
import org.openconcerto.sql.sqlobject.ITextWithCompletion; |
import org.openconcerto.sql.view.EditFrame; |
import org.openconcerto.sql.view.EditPanel.EditMode; |
import org.openconcerto.sql.view.list.AutoCompletionManager; |
import org.openconcerto.sql.view.list.CellDynamicModifier; |
import org.openconcerto.sql.view.list.RowValuesTable; |
50,7 → 46,6 |
import org.openconcerto.sql.view.list.RowValuesTableModel; |
import org.openconcerto.sql.view.list.SQLTableElement; |
import org.openconcerto.sql.view.list.ValidStateChecker; |
import org.openconcerto.ui.preferences.DefaultProps; |
import org.openconcerto.utils.DecimalUtils; |
import org.openconcerto.utils.Tuple3; |
import org.openconcerto.utils.i18n.TranslationManager; |
57,7 → 52,6 |
import java.awt.Component; |
import java.awt.event.ActionEvent; |
import java.awt.event.ActionListener; |
import java.awt.event.HierarchyEvent; |
import java.awt.event.HierarchyListener; |
import java.awt.event.KeyEvent; |
76,7 → 70,6 |
import java.util.Vector; |
import javax.swing.AbstractAction; |
import javax.swing.JButton; |
import javax.swing.JFrame; |
import javax.swing.JLabel; |
import javax.swing.JOptionPane; |
362,96 → 355,7 |
// Poids total |
this.tableElementPoidsTotal = new SQLTableElement(e.getTable().getField("T_POIDS"), Float.class); |
list.add(this.tableElementPoidsTotal); |
// Packaging |
if (e.getTable().contains("POIDS_COLIS_NET") && prefs.getBoolean(GestionArticleGlobalPreferencePanel.ITEM_PACKAGING, false)) { |
SQLTableElement tareColis = new SQLTableElement(e.getTable().getField("TARE"), BigDecimal.class) { |
@Override |
public TableCellRenderer getTableCellRenderer() { |
return new QteUnitRowValuesRenderer(); |
} |
}; |
list.add(tareColis); |
SQLTableElement poidsColis = new SQLTableElement(e.getTable().getField("POIDS_COLIS_NET"), BigDecimal.class) { |
@Override |
public TableCellRenderer getTableCellRenderer() { |
return new QteUnitRowValuesRenderer(); |
} |
}; |
list.add(poidsColis); |
SQLTableElement nbColis = new SQLTableElement(e.getTable().getField("NB_COLIS"), Integer.class); |
list.add(nbColis); |
final SQLTableElement totalPoidsColis = new SQLTableElement(e.getTable().getField("T_POIDS_COLIS_NET"), BigDecimal.class) { |
@Override |
public TableCellRenderer getTableCellRenderer() { |
return new QteUnitRowValuesRenderer(); |
} |
}; |
list.add(totalPoidsColis); |
poidsColis.addModificationListener(totalPoidsColis); |
nbColis.addModificationListener(totalPoidsColis); |
totalPoidsColis.setModifier(new CellDynamicModifier() { |
public Object computeValueFrom(final SQLRowValues row, SQLTableElement source) { |
final BigDecimal pdsColis = row.getBigDecimal("POIDS_COLIS_NET"); |
final Object o3 = row.getObject("NB_COLIS"); |
BigDecimal pdsColisTotal = BigDecimal.ZERO; |
if (pdsColis != null && o3 != null) { |
int nb = (Integer) o3; |
pdsColisTotal = pdsColis.multiply(new BigDecimal(nb), DecimalUtils.HIGH_PRECISION); |
} |
return pdsColisTotal.setScale(totalPoidsColis.getDecimalDigits(), RoundingMode.HALF_UP); |
} |
}); |
final SQLTableElement totalPoidsBrut = new SQLTableElement(e.getTable().getField("T_POIDS_BRUT"), BigDecimal.class) { |
@Override |
public TableCellRenderer getTableCellRenderer() { |
return new QteUnitRowValuesRenderer(); |
} |
}; |
list.add(totalPoidsBrut); |
tareColis.addModificationListener(totalPoidsBrut); |
poidsColis.addModificationListener(totalPoidsBrut); |
nbColis.addModificationListener(totalPoidsBrut); |
this.tableElementPoidsTotal.addModificationListener(totalPoidsBrut); |
totalPoidsBrut.setModifier(new CellDynamicModifier() { |
public Object computeValueFrom(final SQLRowValues row, SQLTableElement source) { |
final BigDecimal tare = row.getBigDecimal("TARE"); |
final int qte = row.getInt("QTE"); |
final BigDecimal pdsColis = row.getBigDecimal("POIDS_COLIS_NET"); |
final Object o3 = row.getObject("NB_COLIS"); |
BigDecimal pdsBrutTotal = BigDecimal.ZERO; |
if (row.getObject("T_POIDS") != null) { |
pdsBrutTotal = new BigDecimal(row.getFloat("T_POIDS")); |
} |
if (tare != null) { |
pdsBrutTotal = pdsBrutTotal.add(tare.multiply(new BigDecimal(qte))); |
} |
if (pdsColis != null && o3 != null) { |
int nb = (Integer) o3; |
pdsBrutTotal = pdsBrutTotal.add(pdsColis.multiply(new BigDecimal(nb), DecimalUtils.HIGH_PRECISION)); |
} |
// return row.getObject("T_POIDS_COLIS_NET"); |
return pdsBrutTotal.setScale(totalPoidsBrut.getDecimalDigits(), RoundingMode.HALF_UP); |
} |
}); |
} |
// Service |
String val = DefaultNXProps.getInstance().getStringProperty("ArticleService"); |
Boolean b = Boolean.valueOf(val); |
497,7 → 401,7 |
list.add(this.tableElementTotalTTC); |
this.defaultRowVals = new SQLRowValues(UndefinedRowValuesCache.getInstance().getDefaultRowValues(e.getTable())); |
this.defaultRowVals.put("ID_TAXE", TaxeCache.getCache().getFirstTaxeAchat().getID()); |
this.defaultRowVals.put("ID_TAXE", TaxeCache.getCache().getFirstTaxe().getID()); |
this.defaultRowVals.put("CODE", ""); |
this.defaultRowVals.put("NOM", ""); |
this.defaultRowVals.put("QTE", 1); |
504,32 → 408,12 |
this.defaultRowVals.put("QTE_UNITAIRE", BigDecimal.ONE); |
this.defaultRowVals.put("ID_UNITE_VENTE", UniteVenteArticleSQLElement.A_LA_PIECE); |
this.defaultRowVals.put("ID_MODE_VENTE_ARTICLE", ReferenceArticleSQLElement.A_LA_PIECE); |
if (e.getTable().contains("ID_DEPOT_STOCK")) { |
DefaultProps props = DefaultNXProps.getInstance(); |
Integer depotDefault = props.getIntProperty("DepotStockDefault", DepotStockSQLElement.DEFAULT_ID); |
this.defaultRowVals.put("ID_DEPOT_STOCK", depotDefault); |
} |
final RowValuesTableModel model = new RowValuesTableModel(e, list, e.getTable().getField("NOM"), false, this.defaultRowVals) { |
@Override |
public void commitData() { |
super.commitData(true); |
} |
}; |
final RowValuesTableModel model = new RowValuesTableModel(e, list, e.getTable().getField("NOM"), false, this.defaultRowVals); |
setModel(model); |
this.table = new RowValuesTable(model, getConfigurationFile()); |
ToolTipManager.sharedInstance().unregisterComponent(this.table); |
ToolTipManager.sharedInstance().unregisterComponent(this.table.getTableHeader()); |
if (getSQLElement().getTable().getName().equals("COMMANDE_ELEMENT")) { |
this.table.getClearCloneTableElement().add("QTE_RECUE"); |
this.table.getClearCloneTableElement().add("RECU"); |
this.table.getClearCloneTableElement().add("RECU_FORCED"); |
} else if (getSQLElement().getTable().getName().equals("BON_RECEPTION_ELEMENT")) { |
this.table.getClearCloneTableElement().add("ID_COMMANDE_ELEMENT"); |
} |
table.addMouseListener(new MouseAdapter() { |
@Override |
622,14 → 506,9 |
if (e.getTable().getFieldsName().contains("ID_FAMILLE_ARTICLE")) { |
completionFields.add("ID_FAMILLE_ARTICLE"); |
} |
final SQLTable sqlTableArticle = e.getTable().getTable("ARTICLE"); |
if (getSQLElement().getTable().getFieldsName().contains("POIDS_COLIS_NET") && sqlTableArticle.getTable().getFieldsName().contains("POIDS_COLIS_NET")) { |
completionFields.add("POIDS_COLIS_NET"); |
} |
if (getSQLElement().getTable().getFieldsName().contains("TARE") && sqlTableArticle.getTable().getFieldsName().contains("TARE")) { |
completionFields.add("TARE"); |
} |
this.m = new AutoCompletionManager(tableElementCode, sqlTableArticle.getField("CODE"), this.table, this.table.getRowValuesTableModel()) { |
this.m = new AutoCompletionManager(tableElementCode, ((ComptaPropsConfiguration) Configuration.getInstance()).getSQLBaseSociete().getField("ARTICLE.CODE"), this.table, |
this.table.getRowValuesTableModel()) { |
@Override |
protected Object getValueFrom(SQLRow row, String field, SQLRowAccessor rowDest) { |
Object res = tarifCompletion(row, field); |
642,12 → 521,10 |
}; |
m.fill("NOM", "NOM"); |
m.fill("ID", "ID_ARTICLE"); |
if (e.getTable().contains("ID_CODE_FOURNISSEUR") && supplierCode) { |
m.fill("ID_CODE_FOURNISSEUR", "ID_CODE_FOURNISSEUR"); |
} |
for (String string : completionFields) { |
m.fill(string, string); |
} |
final SQLTable sqlTableArticle = ((ComptaPropsConfiguration) Configuration.getInstance()).getRootSociete().getTable("ARTICLE"); |
final Where w = new Where(sqlTableArticle.getField("OBSOLETE"), "=", Boolean.FALSE); |
m.setWhere(w); |
702,7 → 579,6 |
} |
} |
}; |
m4.fill("ID", "ID_ARTICLE"); |
m4.fill("CODE", "CODE"); |
m4.fill("NOM", "NOM"); |
for (String string : completionFields) { |
851,12 → 727,10 |
int qte = Integer.parseInt(row.getObject("QTE").toString()); |
BigDecimal f = (BigDecimal) row.getObject("PA_HT"); |
int idTaux = Integer.parseInt(row.getObject("ID_TAXE").toString()); |
if (idTaux < 0) { |
System.out.println(row); |
} |
Float resultTaux = TaxeCache.getCache().getTauxFromId(idTaux); |
if (resultTaux == null) { |
SQLRow rowTax = TaxeCache.getCache().getFirstTaxe(); |
row.put("ID_TAXE", rowTax.getID()); |
resultTaux = rowTax.getFloat("TAUX"); |
} |
editorPAHT.setTaxe(resultTaux); |
BigDecimal b = (row.getObject("QTE_UNITAIRE") == null) ? BigDecimal.ONE : (BigDecimal) row.getObject("QTE_UNITAIRE"); |
BigDecimal r = b.multiply(f.multiply(BigDecimal.valueOf(qte), DecimalUtils.HIGH_PRECISION), DecimalUtils.HIGH_PRECISION).setScale(tableElementTotalTTC.getDecimalDigits(), |
905,9 → 779,6 |
setColumnVisible(model.getColumnForField("ID_DEPOT_STOCK"), prefs.getBoolean(GestionArticleGlobalPreferencePanel.STOCK_MULTI_DEPOT, false)); |
setColumnVisible(model.getColumnForField("T_POIDS_COLIS_NET"), false); |
setColumnVisible(model.getColumnForField("T_POIDS_BRUT"), false); |
// Calcul automatique du poids unitaire |
tableElement_ValeurMetrique1.addModificationListener(tableElementPoids); |
tableElement_ValeurMetrique2.addModificationListener(tableElementPoids); |
1045,36 → 916,8 |
// On réécrit la configuration au cas ou les preferences aurait changé |
this.table.writeState(); |
if (this.table.getRowValuesTableModel().getColumnForField("ID_DEPOT_STOCK") >= 0 && this.table.getRowValuesTableModel().getColumnForField("ID_ARTICLE") >= 0) { |
if (this.buttons == null) { |
this.buttons = new ArrayList<>(); |
} |
JButton buttonStock = new JButton("Consulter le stock"); |
buttonStock.addActionListener(new ActionListener() { |
public void actionPerformed(ActionEvent event) { |
SQLRowValues rowValsSel = table.getSelectedRowValues(); |
if (rowValsSel != null) { |
SQLRowAccessor foreignArt = rowValsSel.getForeign("ID_ARTICLE"); |
if (foreignArt != null && !foreignArt.isUndefined()) { |
SQLRowAccessor rowValsStock = StockSQLElement.getStock(rowValsSel); |
if (rowValsStock != null && !rowValsStock.isUndefined()) { |
EditFrame frame = new EditFrame(table.getRowValuesTableModel().getSQLElement().getDirectory().getElement("STOCK"), EditMode.READONLY); |
frame.selectionId(rowValsStock.getID()); |
frame.setVisible(true); |
} |
} |
} |
} |
}); |
this.buttons.add(buttonStock); |
} |
} |
private static Map<String, Boolean> visibilityMap = new HashMap<String, Boolean>(); |
public static Map<String, Boolean> getVisibilityMap() { |
1120,23 → 963,6 |
public Object tarifCompletion(SQLRow row, String field) { |
final SQLTable tTarifFournisseur = this.getSQLElement().getTable().getDBRoot().getTable("ARTICLE_TARIF_FOURNISSEUR"); |
if (row != null && !row.isUndefined() && (field.equalsIgnoreCase("ID_CODE_FOURNISSEUR")) && this.rowFournisseur != null && !this.rowFournisseur.isUndefined()) { |
final SQLTable foreignTableCodeF = getSQLElement().getTable().getForeignTable("ID_CODE_FOURNISSEUR"); |
List<SQLRow> resultCode = row.getReferentRows(foreignTableCodeF); |
int idCode = foreignTableCodeF.getUndefinedID(); |
for (SQLRow sqlRow : resultCode) { |
if (sqlRow.getForeignID("ID_FOURNISSEUR") == this.rowFournisseur.getID()) { |
return sqlRow.getID(); |
} |
} |
return idCode; |
} |
if (field.equalsIgnoreCase("ID_CODE_FOURNISSEUR")) { |
final SQLTable foreignTableCodeF = getSQLElement().getTable().getForeignTable("ID_CODE_FOURNISSEUR"); |
return foreignTableCodeF.getUndefinedID(); |
} |
if (row != null && !row.isUndefined() && (field.equalsIgnoreCase("PRIX_METRIQUE_HA_1") || field.equalsIgnoreCase("PA_HT")) && tTarifFournisseur != null) { |
List<String> incoTerms; |
1148,7 → 974,7 |
incoTerms = Arrays.asList("PRIX_ACHAT"); |
} |
List<SQLRow> rows = row.getReferentRows(tTarifFournisseur); |
if (row.getBoolean("AUTO_PRIX_ACHAT_NOMENCLATURE") && row.getTable().getDBRoot().contains("ARTICLE_PRIX_REVIENT")) { |
if (row.getBoolean("AUTO_PRIX_ACHAT_NOMENCLATURE")) { |
List<SQLRow> rowsElt = row.getReferentRows(row.getTable().getTable("ARTICLE_ELEMENT").getField("ID_ARTICLE_PARENT")); |
BigDecimal price = BigDecimal.ZERO; |
1410,7 → 1236,7 |
Float resultTaux = TaxeCache.getCache().getTauxFromId(row2Insert.getForeignID("ID_TAXE")); |
if (resultTaux == null) { |
SQLRow rowTax = TaxeCache.getCache().getFirstTaxeAchat(); |
SQLRow rowTax = TaxeCache.getCache().getFirstTaxe(); |
resultTaux = rowTax.getFloat("TAUX"); |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/core/common/ui/IListTotalPanel.java |
---|
19,11 → 19,9 |
import org.openconcerto.sql.model.SQLRowValues; |
import org.openconcerto.sql.view.list.IListe; |
import org.openconcerto.sql.view.list.ITableModel; |
import org.openconcerto.sql.view.list.ListSQLLine; |
import org.openconcerto.sql.view.list.SQLTableModelColumn; |
import org.openconcerto.ui.DefaultGridBagConstraints; |
import org.openconcerto.ui.JLabelBold; |
import org.openconcerto.utils.TableSorter; |
import org.openconcerto.utils.Tuple2; |
import java.awt.GridBagConstraints; |
43,7 → 41,6 |
import javax.swing.event.EventListenerList; |
import javax.swing.event.TableModelEvent; |
import javax.swing.event.TableModelListener; |
import javax.swing.table.TableModel; |
public class IListTotalPanel extends JPanel { |
CurrencyConverter cc = new CurrencyConverter(); |
84,10 → 81,7 |
List<Tuple2<? extends SQLTableModelColumn, Type>> lFinal = new ArrayList<Tuple2<? extends SQLTableModelColumn, Type>>(); |
for (SQLField field : l) { |
final SQLTableModelColumn col = iL.getSource().getColumn(field); |
if (col == null) |
throw new IllegalArgumentException("No column with just " + field + " : " + iL.getSource().getColumns()); |
lFinal.add(Tuple2.create(col, Type.SOMME)); |
lFinal.add(Tuple2.create(iL.getSource().getColumn(field), Type.SOMME)); |
} |
return lFinal; |
} |
144,44 → 138,27 |
} |
this.list.addListener(new TableModelListener() { |
private Object getValueAt(final ListSQLLine line, final SQLTableModelColumn col, final List<SQLTableModelColumn> columns) { |
final int indexOf = columns.indexOf(col); |
final Object res = line.getValueAt(indexOf); |
if (res == null) |
throw new IllegalStateException("Null value for " + col + " in " + line); |
return res; |
} |
@Override |
public void tableChanged(TableModelEvent e) { |
final TableModel model = (TableModel) e.getSource(); |
final ITableModel sqlModel; |
if (model instanceof ITableModel) |
sqlModel = (ITableModel) model; |
else |
sqlModel = (ITableModel) ((TableSorter) model).getTableModel(); |
Map<SQLTableModelColumn, BigDecimal> mapTotal = new HashMap<SQLTableModelColumn, BigDecimal>(); |
Map<SQLTableModelColumn, Double> mapPourcent = new HashMap<SQLTableModelColumn, Double>(); |
Map<SQLTableModelColumn, Integer> mapPourcentSize = new HashMap<SQLTableModelColumn, Integer>(); |
for (Tuple2<? extends SQLTableModelColumn, Type> field : listField) { |
if (field.get1() == Type.COUNT) { |
map.get(field.get0()).setText(String.valueOf(model.getRowCount())); |
map.get(field.get0()).setText(String.valueOf(list.getRowCount())); |
} |
} |
for (int i = 0; i < model.getRowCount(); i++) { |
final ListSQLLine line = sqlModel.getRow(i); |
final SQLRowValues rowAt = line.getRow(); |
final List<SQLTableModelColumn> columns = line.getColumns().getColumns(); |
for (int i = 0; i < list.getRowCount(); i++) { |
for (final Tuple2<? extends SQLTableModelColumn, Type> field : listField) { |
final Type type = field.get1(); |
final SQLRowValues rowAt = ITableModel.getLine(list.getModel(), i).getRow(); |
if (type == Type.MOYENNE_POURCENT) { |
final Double n2 = (Double) getValueAt(line, field.get0(), columns); |
for (Tuple2<? extends SQLTableModelColumn, Type> field : listField) { |
if (field.get1() == Type.MOYENNE_POURCENT) { |
Double n2 = (Double) list.getModel().getValueAt(i, list.getSource().getColumns().indexOf(field.get0())); |
boolean in = true; |
if (filters != null) { |
211,12 → 188,13 |
} |
} |
} else if (type == Type.AVANCEMENT_TTC) { |
} else if (field.get1() == Type.AVANCEMENT_TTC) { |
BigDecimal n = mapTotal.get(field.get0()); |
BigDecimal ttc = BigDecimal.valueOf(line.getRow().getObjectAs("T_TTC", Number.class).doubleValue()); |
final SQLTableModelColumn columnTTC = list.getSource().getColumn(list.getSource().getPrimaryTable().getField("T_TTC")); |
BigDecimal ttc = BigDecimal.valueOf(((Number) list.getModel().getValueAt(i, list.getSource().getColumns().indexOf(columnTTC))).doubleValue()); |
BigDecimal av = BigDecimal.valueOf(((Number) getValueAt(line, field.get0(), columns)).doubleValue()); |
BigDecimal av = BigDecimal.valueOf(((Number) list.getModel().getValueAt(i, list.getSource().getColumns().indexOf(field.get0()))).doubleValue()); |
boolean in = true; |
238,11 → 216,10 |
mapTotal.put(field.get0(), n.add(ttc.multiply(av).movePointLeft(2))); |
} |
} |
} else if (type != Type.MOYENNE_MARGE && type != Type.COUNT) { |
} else if (field.get1() != Type.MOYENNE_MARGE && field.get1() != Type.COUNT) { |
BigDecimal n = mapTotal.get(field.get0()); |
final Object value = getValueAt(line, field.get0(), columns); |
final BigDecimal n2 = BigDecimal.valueOf(((Number) value).doubleValue()); |
BigDecimal n2 = BigDecimal.valueOf(((Number) list.getModel().getValueAt(i, list.getSource().getColumns().indexOf(field.get0()))).doubleValue()); |
boolean in = true; |
/trunk/OpenConcerto/src/org/openconcerto/erp/element/objet/Compte.java |
---|
13,9 → 13,6 |
package org.openconcerto.erp.element.objet; |
import java.util.ArrayList; |
import java.util.List; |
public class Compte { |
private int id; |
private String numero; |
51,20 → 48,6 |
this.totalDebit = totalDebit; |
} |
private List<String> sousCompte = new ArrayList<>(); |
public List<String> getSousCompte() { |
return this.sousCompte; |
} |
public void addSousCompte(String compteNum) { |
this.sousCompte.add(compteNum); |
} |
public void addSousCompte(List<String> compteNum) { |
this.sousCompte.addAll(compteNum); |
} |
public int getId() { |
return this.id; |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/panel/compta/ExportEBPPivot.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/erp/panel/compta/ExportPanel.java |
---|
69,12 → 69,6 |
return new ExportRelationExpertPanel(root); |
} |
}, |
EBP_PIVOT("EBP Pivot") { |
@Override |
public AbstractExport createExport(DBRoot root) { |
return new ExportEBPPivot(root); |
} |
}, |
EBP_OL("EBP Open Line") { |
@Override |
public AbstractExport createExport(DBRoot root) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/panel/compta/ExportSageEtendu.java |
---|
229,7 → 229,7 |
Cell cellDebAbo = row.createCell(11); |
Cell cellFinAbo = row.createCell(12); |
if (rowValsSource != null && rowValsSource.contains("ID_ABONNEMENT") && rowValsSource.getTable().getName().equals("SAISIE_VENTE_FACTURE") && cpt.startsWith("41")) { |
if (rowValsSource != null && rowValsSource.contains("ID_ABONNEMENT") && rowValsSource.getTable().getName().equals("ID_SAISIE_VENTE_FACTURE") && cpt.startsWith("41")) { |
SQLRowAccessor rowValsAbo = rowValsSource.getForeign("ID_ABONNEMENT"); |
if (rowValsAbo != null && !rowValsAbo.isUndefined()) { |
final Calendar calDeb = rowValsAbo.getDate("DATE_DEBUT_FACTURE"); |
/trunk/OpenConcerto/src/org/openconcerto/erp/panel/compta/ImportFEC.java |
---|
47,7 → 47,7 |
public void loadFrom(File file) throws IOException { |
this.error = null; |
this.mapPiece = new HashMap<>(); |
this.mapPiece = null; |
try (BufferedReader bReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.forName("Cp1252")))) { |
String line = bReader.readLine(); |
92,7 → 92,7 |
p = new Piece(pieceRef); |
mouvement = new Mouvement(); |
p.add(mouvement); |
this.mapPiece.put(pieceRef, p); |
} else { |
mouvement = p.getMouvements().get(0); |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/panel/UserExitPanel.java |
---|
171,7 → 171,7 |
c.beforeShutdown(); |
if (c.shouldRestart()) |
VMLauncher.restart(ProcessStreams.DISCARD, GestionLauncher.class); |
VMLauncher.restart(ProcessStreams.Action.CLOSE, GestionLauncher.class); |
} catch (Exception e) { |
// in shutdown sequence : don't use the GUI |
e.printStackTrace(); |
/trunk/OpenConcerto/src/org/openconcerto/erp/model/FichePayeModel.java |
---|
72,8 → 72,8 |
private SQLJavaEditor javaEdit = new SQLJavaEditor(VariablePayeSQLElement.getMapTree()); |
// liste des variable de paye à calculer |
private BigDecimal salBrut, salBrutCSG, salBrutCSGReduite, salBrutBase, salBrutCotis, salBrutTaxable, cotPat, cotSal, taxCmPat, taxCmSal, netImp, pas, netAPayer, csg, csgSansAbattement, cice, |
allegmentCotisation, avantage, reduction; |
private BigDecimal salBrut, salBrutBase, salBrutCotis, salBrutTaxable, cotPat, cotSal, taxCmPat, taxCmSal, netImp, pas, netAPayer, csg, csgSansAbattement, cice, allegmentCotisation, avantage, |
reduction; |
private Map<Integer, String> mapField; |
146,12 → 146,8 |
return cotSal; |
} |
public BigDecimal getCsgReduite() { |
return this.salBrutCSGReduite.multiply(this.tauxCSG); |
} |
public BigDecimal getCsgTotal() { |
return this.salBrutCSG.add(this.csg).multiply(this.tauxCSG).add(this.csgSansAbattement); |
return this.salBrut.add(this.csg).multiply(this.tauxCSG).add(this.csgSansAbattement); |
} |
public BigDecimal getCsgSansAbattement() { |
162,14 → 158,6 |
return pas; |
} |
public BigDecimal getSalBrutCSG() { |
return salBrutCSG; |
} |
public BigDecimal getSalBrutCSGReduite() { |
return salBrutCSGReduite; |
} |
public BigDecimal getNetAPayerTotal() { |
return netAPayer.add(this.salBrut); |
} |
218,8 → 206,6 |
this.reduction = BigDecimal.ZERO; |
this.avantage = BigDecimal.ZERO; |
this.salBrut = BigDecimal.ZERO; |
this.salBrutCSG = BigDecimal.ZERO; |
this.salBrutCSGReduite = BigDecimal.ZERO; |
this.salBrutCotis = BigDecimal.ZERO; |
this.salBrutBase = BigDecimal.ZERO; |
this.salBrutTaxable = BigDecimal.ZERO; |
786,10 → 772,6 |
rowValsFiche.put("TAXE_CM_PAT", this.taxCmPat); |
rowValsFiche.put("TAXE_CM_SAL", this.taxCmSal); |
rowValsFiche.put("CSG", getCsgTotal()); |
rowValsFiche.put("CSG_REDUITE", getCsgReduite()); |
rowValsFiche.put("SAL_BRUT_CSG", getSalBrutCSG()); |
rowValsFiche.put("SAL_BRUT_CSG_REDUITE", getSalBrutCSGReduite()); |
rowValsFiche.put("HEURE_TRAV", getHeureTrav()); |
rowValsFiche.put("TOTAL_PAS", getPas()); |
895,13 → 877,6 |
if (rowSource.getBoolean("PART_BRUT")) { |
this.salBrutBase = this.salBrutBase.subtract(montant); |
} |
if (rowSource.getBoolean("CSG_NORMAL")) { |
this.salBrutCSG = this.salBrutCSG.subtract(montant); |
} |
if (rowSource.getBoolean("CSG_REDUIT")) { |
this.salBrutCSGReduite = this.salBrutCSGReduite.subtract(montant); |
} |
} // Gain |
else { |
919,13 → 894,8 |
if (rowSource.getBoolean("AVANTAGE_NATURE")) { |
this.avantage = this.avantage.add(montant); |
} |
if (rowSource.getBoolean("CSG_NORMAL")) { |
this.salBrutCSG = this.salBrutCSG.add(montant); |
} |
if (rowSource.getBoolean("CSG_REDUIT")) { |
this.salBrutCSGReduite = this.salBrutCSGReduite.add(montant); |
} |
} |
// Mis a jour du salaire brut |
// updateValueFiche(); |
942,13 → 912,7 |
if (rowSource.getBoolean("PART_BRUT")) { |
this.salBrutBase = this.salBrutBase.subtract(ded); |
} |
if (rowSource.getBoolean("CSG_NORMAL")) { |
this.salBrutCSG = this.salBrutCSG.subtract(ded); |
} |
if (rowSource.getBoolean("CSG_REDUIT")) { |
this.salBrutCSGReduite = this.salBrutCSGReduite.subtract(ded); |
} |
} |
BigDecimal add = rowVals.getBigDecimal("MONTANT_SAL_AJ"); |
if (add != null) { |
this.salBrut = this.salBrut.add(add); |
964,16 → 928,10 |
if (rowSource.getBoolean("PART_BRUT")) { |
this.salBrutBase = this.salBrutBase.add(add); |
} |
if (rowSource.getBoolean("CSG_NORMAL")) { |
this.salBrutCSG = this.salBrutCSG.add(add); |
} |
if (rowSource.getBoolean("CSG_REDUIT")) { |
this.salBrutCSGReduite = this.salBrutCSGReduite.add(add); |
} |
} |
} |
} |
} |
private void calculNet(SQLRow rowSource, SQLRowValues rowVals) { |
/trunk/OpenConcerto/src/org/openconcerto/erp/utils/translation/messages_fr.properties |
---|
64,12 → 64,6 |
sddMessage.generation.someIgnored.duplicateMandate={duplicateCount, plural, =1 {une car son mandat est partagé avec une autre facture}\ |
other {# car leurs mandats sont partagés avec d\u2019autres factures}}. Vous devez générer à nouveau {msgElem__singularIndefiniteArticle}. |
sddMessage.generation.someIgnored.missingInfo={missingInfoCount, plural, =1 {une car il manquait des informations} other {# car il manquait des informations}} |
sepa.deadline.waiting=En attente |
sepa.deadline.filecreated=Fichier créé |
sepa.deadline.done=Réglé |
sepa.deadline.rejected=Refusé |
sepa.deadline.regul=Régulariser |
sepa.history.hide=Masquer les prélèvements validés |
sales.shipment.allShipments=Toutes les livraisons |
sales.shipment.nonInvoicedShipments=Livraisons non facturées |
/trunk/OpenConcerto/src/org/openconcerto/erp/utils/TM.java |
---|
13,28 → 13,21 |
package org.openconcerto.erp.utils; |
import org.openconcerto.utils.i18n.TMPool; |
import org.openconcerto.sql.UserPropsTM; |
import java.util.Locale; |
public class TM extends UserPropsTM { |
public class TM extends org.openconcerto.utils.i18n.TM { |
static private final TM INSTANCE = new TM(); |
private static final TMPool<TM> POOL = new TMPool<TM>(TM::new); |
static private final TM getTM() { |
return getERP_TM(getDefaultLocale()); |
static public final TM getTM() { |
return INSTANCE; |
} |
static public TM getERP_TM(final Locale l) { |
return POOL.get(l); |
} |
static public final String tr(final String key, final Object... args) { |
return getTM().translate(key, args); |
} |
private TM(final Locale l) { |
super(l); |
private TM() { |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/utils/HeadlessGestion.java |
---|
19,6 → 19,8 |
import org.openconcerto.sql.model.DBRoot; |
import org.openconcerto.utils.i18n.TranslationManager; |
import java.util.Locale; |
public class HeadlessGestion { |
private final ComptaPropsConfiguration comptaPropsConfiguration; |
49,8 → 51,8 |
public HeadlessGestion setGlobalState() { |
System.setProperty("java.awt.headless", "true"); |
TranslationManager.addTranslationStreamFromClass(MainFrame.class); |
TranslationManager.createDefaultInstance(); |
TranslationManager.getInstance().addTranslationStreamFromClass(MainFrame.class); |
TranslationManager.getInstance().setLocale(Locale.getDefault()); |
// TODO remove |
Configuration.setInstance(this.comptaPropsConfiguration); |
return this; |
/trunk/OpenConcerto/src/org/openconcerto/erp/preferences/GestionCommercialeGlobalPreferencePanel.java |
---|
43,7 → 43,6 |
public static String CHIFFRAGE_COMMANDE_CLIENT = "ChiffrageCmdClient"; |
public static String IMPUT_ECART = "ImputEcart"; |
public static String FRAIS_DOCUMENT = "GestionFraisDocuments"; |
public static String COMPTE_CLIENT_AUTO = "CompteClientAuto"; |
public GestionCommercialeGlobalPreferencePanel() { |
super("Gestion des pièces commerciales", null); |
52,10 → 51,6 |
@Override |
protected void addViews() { |
PrefView<Boolean> viewCompteClientAuto = new PrefView<Boolean>(PrefType.BOOLEAN_TYPE, "Créer les comptes clients en automatique à la création", COMPTE_CLIENT_AUTO); |
viewCompteClientAuto.setDefaultValue(Boolean.FALSE); |
this.addView(viewCompteClientAuto); |
PrefView<Boolean> viewTransfert = new PrefView<Boolean>(PrefType.BOOLEAN_TYPE, "Transférer les numéros des pièces commeriales en tant que référence", TRANSFERT_REF); |
viewTransfert.setDefaultValue(Boolean.TRUE); |
this.addView(viewTransfert); |
/trunk/OpenConcerto/src/org/openconcerto/erp/preferences/GestionArticleGlobalPreferencePanel.java |
---|
36,7 → 36,6 |
public static String SHOW_PRODUCT_BAR_CODE = "ShowProductBarCode"; |
public static String ITEM_PACKAGING = "ItemPackaging"; |
public static String FILTER_BY_FAMILY = "FilterByFamily"; |
public static String ACTIVE_CALCUL_M2 = "CalculM2"; |
public static String STOCK_MULTI_DEPOT = "MultiDepot"; |
public static String CAN_EXPAND_NOMENCLATURE_VT = "CanExpandNomenclature"; |
public static String CAN_EXPAND_NOMENCLATURE_HA = "CanExpandNomenclaturePurchase"; |
48,9 → 47,6 |
@Override |
protected void addViews() { |
PrefView<Boolean> viewCalcul = new PrefView<Boolean>(PrefType.BOOLEAN_TYPE, "Gérer le calcul au m2 (L x l)", GestionArticleGlobalPreferencePanel.ACTIVE_CALCUL_M2); |
viewCalcul.setDefaultValue(Boolean.FALSE); |
this.addView(viewCalcul); |
PrefView<Boolean> viewShowDevise = new PrefView<Boolean>(PrefType.BOOLEAN_TYPE, "Gérer plusieurs devises", AbstractVenteArticleItemTable.ARTICLE_SHOW_DEVISE); |
viewShowDevise.setDefaultValue(Boolean.FALSE); |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/InstallationPanel.java |
---|
3239,9 → 3239,7 |
List<String> cols = Arrays.asList("PV_HT", "PA_DEVISE_T", "T_PV_HT", "T_PA_TTC", "T_PA_HT", "PA_HT", "T_PV_TTC", "PRIX_METRIQUE_HA_2", "PRIX_METRIQUE_HA_1", "PRIX_METRIQUE_HA_3", |
"PRIX_METRIQUE_VT_2", "PRIX_METRIQUE_VT_1", "MONTANT_HT", "MONTANT_INITIAL", "PRIX_METRIQUE_VT_3", "MARGE_HT", "PA_DEVISE", "PV_U_DEVISE", "PV_T_DEVISE", "PV_TTC", "TARIF_Q18_HT", |
"T_PRIX_FINAL_TTC", "PRIX_FINAL_TTC", "PV_UNIT_HT", "PREBILAN", "MARGE_PREBILAN_HT"); |
if (table == null) { |
return; |
} |
if ((table.contains("PV_HT") && table.getField("PV_HT").getType().getDecimalDigits() == 0) |
|| (table.contains("PV_UNIT_HT") && table.getField("PV_UNIT_HT").getType().getDecimalDigits() == 0)) { |
AlterTable t = new AlterTable(table); |
4013,7 → 4011,7 |
new AddFK(root.getDBSystemRoot()).changeAll(root); |
// Couleur |
final SQLTable tableUser = root.findTable("USER_COMMON"); |
final SQLTable tableUser = root.getTable("USER_COMMON"); |
if (!tableUser.contains("COLOR")) { |
final AlterTable alter = new AlterTable(tableUser); |
alter.addIntegerColumn("COLOR", 0, false); |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/DSNInstallationUtils.java |
---|
272,21 → 272,6 |
root.getSchema().updateVersion(); |
} |
if (!tableRubBrut.contains("CSG_NORMAL")) { |
AlterTable alterTableBrut = new AlterTable(tableRubBrut); |
alterTableBrut.addBooleanColumn("CSG_NORMAL", Boolean.TRUE, false); |
root.getBase().getDataSource().execute(alterTableBrut.asString()); |
root.refetchTable("RUBRIQUE_BRUT"); |
root.getSchema().updateVersion(); |
} |
if (!tableRubBrut.contains("CSG_REDUIT")) { |
AlterTable alterTableBrut = new AlterTable(tableRubBrut); |
alterTableBrut.addBooleanColumn("CSG_REDUIT", Boolean.FALSE, false); |
root.getBase().getDataSource().execute(alterTableBrut.asString()); |
root.refetchTable("RUBRIQUE_BRUT"); |
root.getSchema().updateVersion(); |
} |
SQLTable tableRubNet = root.getTable("RUBRIQUE_NET"); |
if (!tableRubNet.contains("ID_CODE_TYPE_RUBRIQUE_BRUT")) { |
558,134 → 543,6 |
} |
} |
if (!root.contains("CODE_AMENAGEMENT_PARTIEL")) { |
final SQLCreateTable createTableMotif = new SQLCreateTable(root, "CODE_AMENAGEMENT_PARTIEL"); |
createTableMotif.addVarCharColumn("CODE", 25); |
createTableMotif.addVarCharColumn("NOM", 512); |
try { |
root.getBase().getDataSource().execute(createTableMotif.asString()); |
insertUndef(createTableMotif); |
root.refetchTable("CODE_AMENAGEMENT_PARTIEL"); |
root.getSchema().updateVersion(); |
final SQLTable table = root.getTable("CODE_AMENAGEMENT_PARTIEL"); |
List<Tuple2<String, String>> v = new ArrayList<Tuple2<String, String>>(); |
v.add(Tuple2.create("01", "Forfait hebdomadaire")); |
v.add(Tuple2.create("02", "Autre temps de travail hebdomadaire")); |
v.add(Tuple2.create("03", "Equivalent à 35h - 39h (Mayotte)")); |
v.add(Tuple2.create("04", "Forfait mensuel")); |
v.add(Tuple2.create("05", "Forfait annuel en jour")); |
v.add(Tuple2.create("06", "Forfait annuel en heures")); |
v.add(Tuple2.create("07", "Cycle")); |
v.add(Tuple2.create("08", "Modulation")); |
v.add(Tuple2.create("09", "Aménagement du temps de travail (Loi du 20 août 2008)")); |
v.add(Tuple2.create("10", "Personnel navigant ou autres")); |
insertValues(v, table); |
} catch (SQLException ex) { |
throw new IllegalStateException("Erreur lors de la création de la table " + "CODE_AMENAGEMENT_PARTIEL", ex); |
} |
} |
if (!root.contains("CODE_SUSPENSION")) { |
final SQLCreateTable createTableMotif = new SQLCreateTable(root, "CODE_SUSPENSION"); |
createTableMotif.addVarCharColumn("CODE", 25); |
createTableMotif.addVarCharColumn("NOM", 512); |
try { |
root.getBase().getDataSource().execute(createTableMotif.asString()); |
insertUndef(createTableMotif); |
root.refetchTable("CODE_SUSPENSION"); |
root.getSchema().updateVersion(); |
final SQLTable table = root.getTable("CODE_SUSPENSION"); |
List<Tuple2<String, String>> v = new ArrayList<Tuple2<String, String>>(); |
v.add(Tuple2.create("112", "Invalidité catégorie 1")); |
v.add(Tuple2.create("114", "Invalidité catégorie 2")); |
v.add(Tuple2.create("116", "Invalidité catégorie 3")); |
v.add(Tuple2.create("200", "COP (Congés payés)")); |
v.add(Tuple2.create("301", "Congé de Formation Professionnelle")); |
v.add(Tuple2.create("501", "Congé divers non rémunéré")); |
v.add(Tuple2.create("507", "Chômage intempéries")); |
v.add(Tuple2.create("601", "Mobilité volontaire sécurisée")); |
v.add(Tuple2.create("602", "Chômage sans rupture de contrat")); |
v.add(Tuple2.create("603", "Détention provisoire")); |
v.add(Tuple2.create("604", "Journée de perception de l'allocation journalière de présence parentale")); |
v.add(Tuple2.create("605", "Congé statutaire")); |
v.add(Tuple2.create("606", "Détachement d'un salarié IEG en France")); |
v.add(Tuple2.create("607", "Congé de présence parentale")); |
v.add(Tuple2.create("608", "CASA")); |
v.add(Tuple2.create("609", "CIF (Congé Individuel de Formation)")); |
v.add(Tuple2.create("611", "Congé de bilan de compétences")); |
v.add(Tuple2.create("612", "Congé de candidat parlementaire ou élu à un mandat local")); |
v.add(Tuple2.create("615", "Congé de formation de cadres et d'animateurs pour la jeunesse")); |
v.add(Tuple2.create("617", "Congé de formation pour les salariés de moins de 25 ans")); |
v.add(Tuple2.create("618", "Congé de formation économique, sociale et syndicale")); |
v.add(Tuple2.create("620", "Congé de mobilité")); |
v.add(Tuple2.create("621", "Congé de participation aux instances d'emploi ou de formation professionnelle")); |
v.add(Tuple2.create("625", "Congé de reclassement")); |
v.add(Tuple2.create("626", "Congé de représentation")); |
v.add(Tuple2.create("627", "Congé de solidarité familiale")); |
v.add(Tuple2.create("628", "Congé de solidarité internationale")); |
v.add(Tuple2.create("630", "Congé d'enseignement ou de recherche")); |
v.add(Tuple2.create("631", "Congé mutualiste de formation")); |
v.add(Tuple2.create("632", "Congé parental d'éducation")); |
v.add(Tuple2.create("633", "Congé pour acquisition de la nationalité")); |
v.add(Tuple2.create("634", "Congé pour catastrophe naturelle")); |
v.add(Tuple2.create("635", "Congé pour création ou reprise d'entreprise")); |
v.add(Tuple2.create("636", "Congé pour enfant malade")); |
v.add(Tuple2.create("637", "Congé pour évènement familial")); |
v.add(Tuple2.create("638", "Congé pour validation des acquis de l'expérience")); |
v.add(Tuple2.create("639", "Congé sabbatique")); |
v.add(Tuple2.create("642", "Convention FNE d'aide au passage à temps partiel")); |
v.add(Tuple2.create("643", "Congé de conversion avec prise en charge par l'Etat")); |
v.add(Tuple2.create("644", "Congé de conversion sans prise en charge par l'Etat")); |
v.add(Tuple2.create("645", "Préretraite progressive")); |
v.add(Tuple2.create("646", "Préretraite d'entreprise sans rupture de contrat de travail")); |
v.add(Tuple2.create("647", "Réduction temps d'emploi")); |
v.add(Tuple2.create("648", "Conventions d'Allocations Spéciales du FNE (ASFNE)")); |
v.add(Tuple2.create("650", "Congé de proche aidant")); |
v.add(Tuple2.create("651", "Congé pour mandat parlementaire")); |
v.add(Tuple2.create("652", "Inaptitude temporaire liée à la grossesse")); |
v.add(Tuple2.create("653", "Maintien de salaire – personnel navigant de l’aéronautique civile")); |
v.add(Tuple2.create("654", "Inactivité temps alterné – personnel navigant de l’aéronautique civile")); |
v.add(Tuple2.create("655", "[FP] Détachement conduisant à pension (ECP)")); |
v.add(Tuple2.create("656", "[FP] Congé pour cessation anticipée d’activité du fait d’une maladie professionnelle provoquée par l’amiante")); |
v.add(Tuple2.create("657", "[FP] Absence concertée de travail")); |
v.add(Tuple2.create("658", "[FP] Congé spécial")); |
v.add(Tuple2.create("659", "[FP] Période d'instruction militaire ou réserve opérationnelle")); |
v.add(Tuple2.create("660", "[FP] Congé avec traitement période d'instruction militaire obligatoire")); |
v.add(Tuple2.create("661", "[FP] Congé organisations de jeunesse")); |
v.add(Tuple2.create("662", "[FP] Congé pour siéger auprès d’une association, d’une mutuelle, d’une instance de l’Etat ou d’une collectivité territoriale")); |
v.add(Tuple2.create("663", "[FP] Congé non rémunéré de 18 jours pour mandats municipaux ou départementaux ou régionaux")); |
v.add(Tuple2.create("664", "[FP] Congé avec traitement pour période d'activité dans la réserve de sécurité civile")); |
v.add(Tuple2.create("665", "[FP] Congé pour période d'activité dans la réserve sanitaire")); |
v.add(Tuple2.create("666", "[FP] Congé pour recherches ou conversions thématiques")); |
v.add(Tuple2.create("667", "[FP] Congé pour raisons opérationnelles et activités privées des sapeurs")); |
v.add(Tuple2.create("668", "[FP] Congé pour raisons opérationnelles cotisé des sapeurs")); |
v.add(Tuple2.create("669", "[FP] Congé pour difficultés opérationnelles des sapeurs")); |
v.add(Tuple2.create("670", "[FP] Congé pour période d'activité dans la réserve civile de la police")); |
v.add(Tuple2.create("671", "[FP] Exclusion temporaire de fonctions")); |
v.add(Tuple2.create("672", "[FP] Suspension")); |
v.add(Tuple2.create("673", "[FP] Absences irrégulières (service non fait)")); |
v.add(Tuple2.create("674", "[FP] Détachement ne conduisant pas à pension (ENCP)")); |
v.add(Tuple2.create("675", "[FP] Disponibilité")); |
v.add(Tuple2.create("676", "[FP] Disponibilité pour maladie")); |
v.add(Tuple2.create("677", "[FP] Disponibilité pour élever un enfant âgé de moins de 8 ans")); |
v.add(Tuple2.create("678", "[FP] Position hors cadres")); |
v.add(Tuple2.create("680", "Congé sans solde cotisés")); |
v.add(Tuple2.create("681", "Détachement hors IEG")); |
v.add(Tuple2.create("998", "Annulation")); |
insertValues(v, table); |
} catch (SQLException ex) { |
throw new IllegalStateException("Erreur lors de la création de la table " + "CODE_SUSPENSION", ex); |
} |
} |
if (!root.contains("MOTIF_REPRISE_ARRET_TRAVAIL")) { |
final SQLCreateTable createTableMotif = new SQLCreateTable(root, "MOTIF_REPRISE_ARRET_TRAVAIL"); |
createTableMotif.addVarCharColumn("CODE", 25); |
1332,7 → 1189,6 |
List<Tuple2<String, String>> vCTP = new ArrayList<>(); |
vCTP.add(Tuple2.create("003", "Réduction cotisations salariale heures supplémentaires")); |
vCTP.add(Tuple2.create("510", "Prime exceptionnelle de pouvoir d’achat")); |
vCTP.add(Tuple2.create("060", "RR Chômage CSG-CRDS taux plein")); |
insertValues(vCTP, tableCTP); |
final SQLTable tableTypeBrut = root.getTable("CODE_TYPE_RUBRIQUE_BRUT"); |
1340,8 → 1196,6 |
vbrutType.add(Tuple3.create("016", "[FP] Heures affectées à un travail d’aide à domicile", DsnTypeCodeBrut.REMUNERATION.getName())); |
vbrutType.add(Tuple3.create("017", "Heures supplémentaires ou complémentaires aléatoires", DsnTypeCodeBrut.REMUNERATION.getName())); |
vbrutType.add(Tuple3.create("018", "Heures supplémentaires structurelles", DsnTypeCodeBrut.REMUNERATION.getName())); |
vbrutType.add(Tuple3.create("019", "Heures d'activité partielle", DsnTypeCodeBrut.REMUNERATION.getName())); |
vbrutType.add(Tuple3.create("020", "Heures affectées à un travail d’aide à domicile de publics fragiles", DsnTypeCodeBrut.REMUNERATION.getName())); |
DsnBrutCode dsnBurCode = new DsnBrutCode(); |
dsnBurCode.updateTable(vbrutType, tableTypeBrut); |
1634,24 → 1488,7 |
root.getBase().getDataSource().execute(alter.asString()); |
root.getSchema().updateVersion(); |
} |
if (!tableContrat.contains("ID_CODE_AMENAGEMENT_PARTIEL")) { |
updateContrat = true; |
AlterTable alter = new AlterTable(tableContrat); |
alter.addForeignColumn("ID_CODE_AMENAGEMENT_PARTIEL", root.findTable("CODE_AMENAGEMENT_PARTIEL")); |
alter.addColumn("DATE_DEBUT_SUSPENSION", "date"); |
alter.addColumn("DATE_FIN_SUSPENSION", "date"); |
root.getBase().getDataSource().execute(alter.asString()); |
root.getSchema().updateVersion(); |
} |
if (!tableContrat.contains("ID_CODE_SUSPENSION")) { |
updateContrat = true; |
AlterTable alter = new AlterTable(tableContrat); |
alter.addForeignColumn("ID_CODE_SUSPENSION", root.findTable("CODE_SUSPENSION")); |
root.getBase().getDataSource().execute(alter.asString()); |
root.getSchema().updateVersion(); |
} |
if (updateContrat) { |
root.refetchTable("CONTRAT_SALARIE"); |
tableContrat = root.findTable("CONTRAT_SALARIE"); |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/MainFrame.java |
---|
13,6 → 13,7 |
package org.openconcerto.erp.config; |
import org.openconcerto.erp.action.AboutAction; |
import org.openconcerto.erp.core.common.ui.StatusPanel; |
import org.openconcerto.erp.panel.UserExitConf; |
import org.openconcerto.erp.panel.UserExitPanel; |
318,10 → 319,6 |
fg = new Color(200, 65, 95); |
} else { |
action = mngrAction; |
// Allow to leave the name blank at action creation, then set it here so that it can be |
// used in actionPerformed() |
if (mngrActionName == null) |
action.putValue(Action.NAME, label); |
fg = label.equals(id) ? new Color(20, 65, 200) : null; |
} |
407,7 → 404,7 |
} |
public final void about() { |
MenuManager.getInstance().getActionForId("information").actionPerformed(null); |
AboutAction.getInstance().actionPerformed(null); |
} |
public boolean quit() { |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/ComptaPropsConfiguration.java |
---|
89,7 → 89,6 |
import org.openconcerto.erp.core.humanresources.payroll.element.CaisseCotisationSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CaisseModePaiementSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.ClassementConventionnelSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CodeAmenagementPartielSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CodeBaseAssujettieSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CodeCaisseTypeRubriqueSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CodeCaractActiviteSQLElement; |
105,7 → 104,6 |
import org.openconcerto.erp.core.humanresources.payroll.element.CodeStatutCategorielConventionnelSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CodeStatutCategorielSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CodeStatutProfSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CodeSuspensionSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CodeTypeRubriqueBrutSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.CoefficientPrimeSQLElement; |
import org.openconcerto.erp.core.humanresources.payroll.element.ContratDetacheExpatrieSQLElement; |
237,12 → 235,7 |
import org.openconcerto.erp.generationDoc.provider.DateBLProvider; |
import org.openconcerto.erp.generationDoc.provider.DateProvider; |
import org.openconcerto.erp.generationDoc.provider.FacturableValueProvider; |
import org.openconcerto.erp.generationDoc.provider.FichePayeHeureSupTotalProvider; |
import org.openconcerto.erp.generationDoc.provider.FichePayeHeureTotalProvider; |
import org.openconcerto.erp.generationDoc.provider.FichePayePlafondAProvider; |
import org.openconcerto.erp.generationDoc.provider.FichePayeSmicHProvider; |
import org.openconcerto.erp.generationDoc.provider.FormatedGlobalQtyTotalProvider; |
import org.openconcerto.erp.generationDoc.provider.IbanProvider; |
import org.openconcerto.erp.generationDoc.provider.LabelAccountInvoiceProvider; |
import org.openconcerto.erp.generationDoc.provider.MergedGlobalQtyTotalProvider; |
import org.openconcerto.erp.generationDoc.provider.ModeDeReglementDetailsProvider; |
303,7 → 296,6 |
import org.openconcerto.erp.preferences.TemplateNXProps; |
import org.openconcerto.erp.storage.CloudStorageEngine; |
import org.openconcerto.erp.storage.StorageEngines; |
import org.openconcerto.erp.utils.TM; |
import org.jopendocument.link.OOConnexion; |
import org.openconcerto.sql.ShowAs; |
import org.openconcerto.sql.element.SQLElement; |
587,10 → 579,6 |
} |
} |
public final TM getERP_TM() { |
return TM.getERP_TM(this.getLocale()); |
} |
private void registerAccountingProvider() { |
SalesInvoiceAccountingRecordsProvider.register(); |
SalesCreditAccountingRecordsProvider.register(); |
622,10 → 610,6 |
RefClientValueProvider.register(); |
ModeDeReglementDetailsProvider.register(); |
FormatedGlobalQtyTotalProvider.register(); |
FichePayeHeureSupTotalProvider.register(); |
FichePayeHeureTotalProvider.register(); |
FichePayePlafondAProvider.register(); |
FichePayeSmicHProvider.register(); |
MergedGlobalQtyTotalProvider.register(); |
PaiementRemainedProvider.register(); |
PaiementRemainedDevisProvider.register(); |
636,7 → 620,6 |
RestantAReglerProvider.register(); |
SaledTotalNotDiscountedProvider.register(); |
ArticleCodeFournisseurProvider.register(); |
IbanProvider.register(); |
} |
@Override |
645,7 → 628,6 |
ds.setInitialSize(3); |
ds.setMinIdle(2); |
ds.setMaxActive(4); |
ds.setMaxWait(30000); |
} |
public String getToken() { |
784,8 → 766,6 |
dir.addSQLElement(TypePreavisSQLElement.class, root); |
dir.addSQLElement(DSNNatureSQLElement.class, root); |
dir.addSQLElement(TypeTauxPasSQLElement.class, root); |
dir.addSQLElement(CodeAmenagementPartielSQLElement.class, root); |
dir.addSQLElement(CodeSuspensionSQLElement.class, root); |
// ECO |
dir.addSQLElement(FamilleEcoContributionSQLElement.class, root); |
1132,6 → 1112,12 |
final DBRoot root = this.getRootSociete(); |
showAs.setRoot(getRootSociete()); |
List<String> listAdrShowAs = SQLRow.toList("RUE,CODE_POSTAL,VILLE"); |
if (root.contains("ADRESSE") && root.getTable("ADRESSE").contains("DISTRICT")) { |
listAdrShowAs = SQLRow.toList("RUE,DISTRICT,DEPARTEMENT,CODE_POSTAL,VILLE"); |
} |
showAs.show("ADRESSE", listAdrShowAs); |
showAs.show("AXE_ANALYTIQUE", "NOM"); |
List<String> lEcr = new ArrayList<String>(); |
1222,11 → 1208,10 |
final SQLElementDirectory directory = this.getDirectory(); |
showAs.show("REPARTITION_ANALYTIQUE", "NOM"); |
showAs.show("REGIME_BASE", "ID_CODE_REGIME_BASE"); |
showAs.show("REGLEMENT_PAYE", "NOM_BANQUE", "IBAN", "BIC"); |
showAs.show("REGLEMENT_PAYE", "NOM_BANQUE", "RIB"); |
List<String> listFieldModReglMontant = new ArrayList<String>(); |
listFieldModReglMontant.add("ID_TYPE_REGLEMENT"); |
listFieldModReglMontant.add("ID_" + BanqueSQLElement.TABLENAME); |
showAs.showField("REGLER_MONTANT.ID_MODE_REGLEMENT", listFieldModReglMontant); |
showAs.showField("ENCAISSER_MONTANT.ID_MODE_REGLEMENT", listFieldModReglMontant); |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/DefaultMenuConfiguration.java |
---|
39,7 → 39,6 |
import org.openconcerto.erp.core.finance.accounting.action.GenerePointageAction; |
import org.openconcerto.erp.core.finance.accounting.action.GestionPlanComptableEAction; |
import org.openconcerto.erp.core.finance.accounting.action.ImportEcritureAction; |
import org.openconcerto.erp.core.finance.accounting.action.ImportEcritureFECAction; |
import org.openconcerto.erp.core.finance.accounting.action.ImpressionJournauxAnalytiqueAction; |
import org.openconcerto.erp.core.finance.accounting.action.ImpressionLivrePayeAction; |
import org.openconcerto.erp.core.finance.accounting.action.ImpressionRepartitionAnalytiqueAction; |
110,7 → 109,6 |
import org.openconcerto.erp.core.sales.invoice.action.ListeDesElementsFactureAction; |
import org.openconcerto.erp.core.sales.invoice.action.ListeDesFactureItemsAction; |
import org.openconcerto.erp.core.sales.invoice.action.ListeDesVentesAction; |
import org.openconcerto.erp.core.sales.invoice.action.ListeEcheancePrelevementAction; |
import org.openconcerto.erp.core.sales.invoice.action.ListeSDDMessageAction; |
import org.openconcerto.erp.core.sales.invoice.action.ListeSaisieVenteFactureAction; |
import org.openconcerto.erp.core.sales.invoice.action.ListesFacturesClientsImpayeesAction; |
385,7 → 383,6 |
if (rights.haveRight(NXRights.GESTION_ENCAISSEMENT.getCode())) { |
Group gCustomer = new Group("menu.payment.customer"); |
gCustomer.addItem("customer.invoice.unpaid.list"); |
gCustomer.addItem("customer.payment.prelevement.list"); |
gCustomer.addItem("customer.payment.report"); |
gCustomer.addItem("customer.dept.list"); |
gCustomer.addItem("customer.payment.list"); |
394,6 → 391,7 |
gCustomer.addItem("customer.payment.check.deposit.list"); |
gCustomer.addItem("customer.payment.check.pending.create"); |
gCustomer.addItem("customer.payment.check.deposit.list"); |
gCustomer.addItem("customer.payment.sddMessage.list"); |
gCustomer.addItem("customer.credit.check.list"); |
gCustomer.addItem("customer.credit.check.create"); |
group.add(gCustomer); |
460,7 → 458,6 |
final Group gIO = new Group("menu.accounting.io", LayoutHints.DEFAULT_NOLABEL_SEPARATED_GROUP_HINTS); |
gIO.addItem("accounting.import"); |
gIO.addItem("accounting.import.fec"); |
gIO.addItem("accounting.export"); |
group.add(gIO); |
657,7 → 654,7 |
boolean useListDesVentesAction = bModeVenteComptoir; |
if (useListDesVentesAction) { |
mManager.putAction(new ListeDesVentesAction(conf), "sales.list"); |
mManager.putAction(new ListeDesVentesAction(), "sales.list"); |
} else { |
710,7 → 707,6 |
mManager.putAction(new NouveauClotureAction(), "accounting.closing"); |
mManager.putAction(new ImportEcritureAction(), "accounting.import"); |
mManager.putAction(new ExportRelationExpertAction(), "accounting.export"); |
mManager.putAction(new ImportEcritureFECAction(), "accounting.import.fec"); |
} |
public void registerStatsDocumentsActions(final MenuAndActions mManager) { |
794,10 → 790,8 |
mManager.putAction(new ListeDesDepostChequesAction(), "customer.payment.check.deposit.list"); |
mManager.putAction(new NouveauListeDesChequesAEncaisserAction(conf), "customer.payment.check.pending.create"); |
mManager.putAction(new ListeSDDMessageAction(conf.getDirectory()), "customer.payment.sddMessage.list"); |
mManager.putAction(new ListeEcheancePrelevementAction(conf), "customer.payment.prelevement.list"); |
mManager.putAction(new ListeDesChequesAvoirAction(), "customer.credit.check.list"); |
mManager.putAction(new NouveauDecaissementChequeAvoirAction(conf), "customer.credit.check.create"); |
} |
if (rights.haveRight(NXRights.LOCK_MENU_ACHAT.getCode())) { |
mManager.putAction(new ListesFacturesFournImpayeesAction(), "supplier.invoice.unpaid.list"); |
869,7 → 863,7 |
} |
public void registerHelpMenuActions(final MenuAndActions mManager) { |
mManager.putAction(new AboutAction(getConfiguration()), "information"); |
mManager.putAction(AboutAction.getInstance(), "information"); |
mManager.putAction(new AstuceAction(), "tips"); |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/translation_fr.xml |
---|
100,7 → 100,6 |
<menu id="customer.payment.check.pending.list" label="Chèques des clients" /> |
<menu id="customer.payment.check.pending.create" label="Chèques à encaisser" /> |
<menu id="customer.payment.check.deposit.list" label="Liste des dépôts de chèques" /> |
<menu id="customer.payment.prelevement.list" label="Prélèvements SEPA" /> |
<menu id="customer.payment.sddMessage.list" label="Liste des ordres de prélèvement SEPA" /> |
<menu id="customer.credit.check.list" label="Chèques d'avoir" /> |
<menu id="customer.credit.check.create" label="Chèques d'avoir à décaisser" /> |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/mappingCompta_fr.xml |
---|
1,6 → 1,5 |
<?xml version="1.0" encoding="UTF-8" ?> |
<ROOT> |
<element refid="sales.customer.product.qty.price" nameClass="masculine" name="tarif client"> |
<FIELD name="QUANTITE" label="Quantité" /> |
<FIELD name="ID_ARTICLE" label="Article" /> |
66,8 → 65,8 |
<FIELD name="ID_ADRESSE_COURRIER_2" label="Adresse de courrier 2" /> |
<FIELD name="ID_ADRESSE_COURRIER_3" label="Adresse de courrier 3" /> |
</element> |
<element refid="controle.project.item" nameClass="feminine" name="mission de l'affaire" |
namePlural="missions de l'affaire"> |
<element refid="controle.AffaireElementSQLElement.project.item" nameClass="feminine" |
name="mission de l'affaire" namePlural="missions de l'affaire"> |
<FIELD name="FIN_CONTRAT" label="Fin de contrat" /> |
<FIELD name="DATE_FIN_CONTRAT" label="Date de fin de contrat" /> |
<FIELD name="CODE" label="Code" /> |
99,16 → 98,11 |
<FIELD name="NOTA" label="Nota" /> |
</element> |
<element refid="sales.product.ref" nameClass="masculine" name="article"> |
<FIELD name="HAUTEUR" label="Hauteur" /> |
<FIELD name="LARGEUR" label="Largeur" /> |
<FIELD name="LONGUEUR" label="Longueur" /> |
<FIELD name="POIDS_COLIS_NET" label="Poids colis" /> |
<FIELD name="MARGE_WITH_COUT_REVIENT" label="Inclure le coût de revient dans le calcul du prix de vente" /> |
<FIELD name="ID_COUT_REVIENT" label="%CR" /> |
<FIELD name="QTE_UNITAIRE" label="Quantité unitaire par défaut" /> |
<FIELD name="MASQUE_CAISSE" label="Ne pas charger sur la caisse" /> |
<FIELD name="TARE" label="Tare" /> |
<FIELD name="DLC" label="DLC" /> |
<FIELD name="IFCO" label="IFCO" /> |
<FIELD name="MATIERE" label="Matière" /> |
<FIELD name="ID_TAXE_COMPLEMENTAIRE" label="Taxe complémentaire" /> |
154,8 → 148,6 |
<FIELD name="ID_COMPTE_PCE_ACHAT" label="Compte spécifique d'achat" /> |
<FIELD name="SKU" label="SKU" /> |
<FIELD name="ID_DEPOT_STOCK" label="Dépôt Stock" /> |
<FIELD name="AUTO_PRIX_ACHAT_NOMENCLATURE" label="Prix d'achat calculé depuis la nomenclature" /> |
<FIELD name="AUTO_PRIX_MIN_VENTE_NOMENCLATURE" label="Prix de vente calculé depuis la nomenclature" /> |
</element> |
<element refid="sales.product.compta" nameClass="feminine" name="liaison article catégorie comptable" |
namePlural="liaisons article catégorie comptable"> |
302,7 → 294,6 |
<FIELD name="NB_COLIS" label="Nb Colis" /> |
<FIELD name="POIDS_COLIS_NET" label="Pds Colis" /> |
<FIELD name="T_POIDS_COLIS_NET" label="Pds Colis Total" /> |
<FIELD name="T_POIDS_BRUT" label="Pds Brut Total" /> |
<FIELD name="QTE_UNITAIRE" label="Qté U.V." /> |
<FIELD name="ID_UNITE_VENTE" label="Unité de vente" /> |
<FIELD name="ID_ARTICLE" label="Article" /> |
320,8 → 311,8 |
<FIELD name="PA_HT" label="PA Unitaire HT" /> |
<FIELD name="PV_HT" label="PV Unitaire HT" /> |
<FIELD name="ID_TAXE" label="Taxe" /> |
<FIELD name="POIDS" label="Poids UV net" /> |
<FIELD name="T_POIDS" label="Poids total net" /> |
<FIELD name="POIDS" label="Poids UV" /> |
<FIELD name="T_POIDS" label="Poids total" /> |
<FIELD name="T_PA_HT" label="Total d'achat HT" /> |
<FIELD name="T_PV_HT" label="Total HT" /> |
<FIELD name="MARGE_HT" label="Marge HT" /> |
441,10 → 432,6 |
</element> |
<element refid="supplychain.receipt.item" nameClass="masculine" name="élément de bon" |
namePlural="éléments de bon"> |
<FIELD name="NB_COLIS" label="Nb Colis" /> |
<FIELD name="POIDS_COLIS_NET" label="Pds Colis" /> |
<FIELD name="T_POIDS_COLIS_NET" label="Pds Colis Total" /> |
<FIELD name="T_POIDS_BRUT" label="Pds Brut Total" /> |
<FIELD name="ID_DEMANDE_ACHAT_ELEMENT" label="Dmd Achat" /> |
<FIELD name="ID_DEPOT_STOCK" label="Dépôt Stock" /> |
<FIELD name="ID_ECO_CONTRIBUTION" label="Code Eco-Contrib." /> |
465,7 → 452,7 |
<FIELD name="QTE_ORIGINE" label="Qté cdée" /> |
<FIELD name="QTE" label="Qté reçue" /> |
<FIELD name="ID_TAXE" label="Taxe" /> |
<FIELD name="POIDS" label="Poids UV net" /> |
<FIELD name="POIDS" label="Poids UV" /> |
<FIELD name="PRIX_METRIQUE_VT_1" label="P.V. UV HT" /> |
<FIELD name="PRIX_METRIQUE_HA_1" label="P.A. UV² HT" /> |
<FIELD name="VALEUR_METRIQUE_1" label="Longueur par défaut" /> |
482,7 → 469,7 |
<FIELD name="T_PV_HT" label="Total HT" /> |
<FIELD name="T_PA_HT" label="Total Achat HT" /> |
<FIELD name="T_PA_TTC" label="Total Achat TTC" /> |
<FIELD name="T_POIDS" label="Poids total net" /> |
<FIELD name="T_POIDS" label="Poids total" /> |
<FIELD name="ID_STYLE" label="Style" /> |
<FIELD name="SERVICE" label="Service" /> |
<FIELD name="ID_MODE_VENTE_ARTICLE" label="Mode de vente" /> |
527,7 → 514,6 |
<FIELD name="NB_COLIS" label="Nb Colis" /> |
<FIELD name="POIDS_COLIS_NET" label="Pds Colis" /> |
<FIELD name="T_POIDS_COLIS_NET" label="Pds Colis Total" /> |
<FIELD name="T_POIDS_BRUT" label="Pds Brut Total" /> |
<FIELD name="QTE_UNITAIRE" label="Qté U.V." /> |
<FIELD name="ID_UNITE_VENTE" label="Unité de vente" /> |
<FIELD name="ID_ARTICLE" label="Article" /> |
552,7 → 538,7 |
<FIELD name="QTE_LIVREE" label="Quantité livrée" titlelabel="Qté livrée" /> |
<FIELD name="QTE_A_LIVRER" label="Quantité à livrer" titlelabel="Qté à livrer" /> |
<FIELD name="ID_TAXE" label="Taxe" /> |
<FIELD name="POIDS" label="Poids UV net" /> |
<FIELD name="POIDS" label="Poids UV" /> |
<FIELD name="PRIX_METRIQUE_VT_1" label="P.V. UV HT" /> |
<FIELD name="PRIX_METRIQUE_HA_1" label="P.A. UV HT" /> |
<FIELD name="VALEUR_METRIQUE_1" label="Longueur par défaut" /> |
568,7 → 554,7 |
<FIELD name="T_PV_TTC" label="Total TTC" /> |
<FIELD name="T_PV_HT" label="Total vente HT" /> |
<FIELD name="T_PA_HT" label="Total achat HT" /> |
<FIELD name="T_POIDS" label="Poids total net" /> |
<FIELD name="T_POIDS" label="Poids total" /> |
<FIELD name="T_POIDS_LIVREE" label="Poids total livré" /> |
<FIELD name="ID_STYLE" label="Style" /> |
<FIELD name="SERVICE" label="Service" /> |
638,8 → 624,6 |
<FIELD name="QTE" label="Qté" /> |
<FIELD name="PA_HT" label="P.A. HT" /> |
<FIELD name="PV_HT" label="P.V. HT" /> |
<FIELD name="ANT" label="Cumul antérieur" /> |
<FIELD name="MOTIF" label="Motif" /> |
<FIELD name="T_PA_HT" label="Total P.A. HT" /> |
<FIELD name="MARGE" label="Marge" /> |
<FIELD name="T_PV_HT" label="Total P.V. HT" /> |
658,96 → 642,7 |
<FIELD name="POSITION" label="Position" /> |
<FIELD name="ECHELON" label="Echelon" /> |
</element> |
<!-- Mapping pour client partagé KD/Preventec --> |
<element refid="controle.customer" nameClass="masculine" name="client"> |
<FIELD name="ID_SEPA_MANDATE_DEFAULT" label="Mandat par défaut" /> |
<FIELD name="ID_FRAIS_DOCUMENT" label="Frais de création de documents" /> |
<FIELD name="CODE_FOURNISSEUR" label="Code interne fournisseur" /> |
<FIELD name="CONDITIONS_LIVRAISON" label="Conditions de livraison" /> |
<FIELD name="ID_CATEGORIE_COMPTABLE" label="Catégorie comptable" /> |
<FIELD name="TIMBRE_FISCAL" label="Soumis au timbre" /> |
<FIELD name="ID_COMPTE_PCE_SERVICE" label="Compte de service spécifique" /> |
<FIELD name="ID_TARIF_MISSION_LIBELLE" label="Tarif" /> |
<FIELD name="ID_TYPE_CLIENT" label="Type de client" /> |
<FIELD name="REMIND_DATE" label="Date de rappel" /> |
<FIELD name="ID_GROUPE_CLIENT" label="Groupe" /> |
<FIELD name="ID_PAYS" label="Pays" /> |
<FIELD name="ID_LANGUE" label="Langue" /> |
<FIELD name="ID_CLIENT" label="Client" /> |
<FIELD name="FORME_JURIDIQUE" label="Forme juridique" /> |
<FIELD name="NOM" label="Nom client" /> |
<FIELD name="CODE" label="Code client" /> |
<FIELD name="TEL" label="Téléphone" /> |
<FIELD name="TEL_P" label="Portable" /> |
<FIELD name="FAX" label="Fax" /> |
<FIELD name="MAIL" label="Mail" /> |
<FIELD name="ACCEPTE_EMAIL" label="Accepte e-mail" titlelabel="E-mail OK" /> |
<FIELD name="ACCEPTE_COURRIER" label="Accepte courrier" titlelabel="Courrier OK" /> |
<FIELD name="ACCEPTE_SMS" label="Accepte SMS" titlelabel="SMS OK" /> |
<FIELD name="ACCEPTE_TEL" label="Accepte appel téléphonique" titlelabel="Appel tél. OK" /> |
<FIELD name="RESPONSABLE" label="Responsable" /> |
<FIELD name="RESPONSABLE_TECH" label="Responsable tech." /> |
<FIELD name="RESPONSABLE_COM" label="Responsable comm." /> |
<FIELD name="TEL_COM" label="Téléphone" /> |
<FIELD name="FAX_COM" label="Fax" /> |
<FIELD name="TEL_P_COM" label="Portable" /> |
<FIELD name="MAIL_COM" label="E-mail" /> |
<FIELD name="TEL_TECH" label="Téléphone" /> |
<FIELD name="FAX_TECH" label="Fax" /> |
<FIELD name="TEL_P_TECH" label="Portable" /> |
<FIELD name="MAIL_TECH" label="E-mail" /> |
<FIELD name="ID_COMPTE_PCE" label="Compte PCE associé" /> |
<FIELD name="ID_COMPTE_PCE_PRODUIT" label="Compte PCE Produit associé" /> |
<FIELD name="ID_ADRESSE" label="Adr. Principale" /> |
<FIELD name="ID_ADRESSE_L" label="Adr. Livraison" /> |
<FIELD name="ID_ADRESSE_F" label="Adr. Facturation" /> |
<FIELD name="NUMERO_TVA" label="N° Intracommunautaire" titlelabel="N° Intracom" /> |
<FIELD name="ID_ADRESSE" label="Adresse" /> |
<FIELD name="MARCHE_PUBLIC" label="Marché public" /> |
<FIELD name="MARCHE_PRIVE" label="Marché privé" /> |
<FIELD name="ID_ADRESSE_L" label="Adresse de livraison" titlelabel="Adresse livraison" /> |
<FIELD name="ID_ADRESSE_L_2" label="Adresse de livraison" titlelabel="Adresse livraison 2" /> |
<FIELD name="ID_ADRESSE_L_3" label="Adresse de livraison" titlelabel="Adresse livraison 3" /> |
<FIELD name="RIB" label="RIB" /> |
<FIELD name="IBAN" label="IBAN" /> |
<FIELD name="BIC" label="BIC" /> |
<FIELD name="SIRET" label="SIRET" /> |
<FIELD name="ID_SECTEUR_ACTIVITE" label="Secteur d'activité" /> |
<FIELD name="ID_BANQUE_POLE_PRODUIT" label="Banque" /> |
<FIELD name="ID_POLE_PRODUIT" label="Pôle produit" /> |
<FIELD name="ID_SECTEUR_ACTIVITE" label="Secteur d'activité" /> |
<FIELD name="INFOS" label="Informations complémentaires" /> |
<FIELD name="ID_MODE_REGLEMENT" label="Mode de règlement par défaut" /> |
<FIELD name="AFFACTURAGE" label="Possibilité d'affacturage" /> |
<FIELD name="MAX_FACTURE" label="Facturation limitée à" /> |
<FIELD name="COMPTANT" label="Règlement comptant obligatoire" /> |
<FIELD name="ID_TARIF" label="Tarif" /> |
<FIELD name="EXTRANET_LOGIN" label="Identifiant extranet" /> |
<FIELD name="EXTRANET_PASSWORD" label="Mot de passe extranet" /> |
<FIELD name="DATE" label="Date de création" /> |
<FIELD name="SITE_INTERNET" label="Site web" /> |
<FIELD name="CATEGORIES" label="Catégories" /> |
<FIELD name="ID_DEVISE" label="Devise" /> |
<FIELD name="ENCOURS_MAX" label="Encours max." /> |
<FIELD name="NOTE_FINANCIERE" label="Note financière" /> |
<FIELD name="METHODE_RELANCE" label="Méthode de relance" /> |
<FIELD name="ID_COMMERCIAL" label="Commercial" /> |
<FIELD name="CENTRE_GESTION" label="Centre de gestion" /> |
<FIELD name="ID_ADRESSE" label="Adresse du siège" /> |
<FIELD name="ID_ADRESSE_F" label="Adresse de facturation" /> |
<FIELD name="COMMENTAIRES" label="Commentaires" /> |
<FIELD name="BLOQUE" label="Bloquer les interactions" /> |
<FIELD name="GROUPE" label="Groupe" /> |
<FIELD name="BLOQUE_LIVRAISON" label="Bloquer les livraisons" /> |
<FIELD name="OBSOLETE" label="Obsolète" /> |
</element> |
<!-- Mapping pour client standard OpenConcerto --> |
<element refid="customerrelationship.customer" nameClass="masculine" name="client"> |
<FIELD name="ID_SEPA_MANDATE_DEFAULT" label="Mandat par défaut" /> |
<FIELD name="ID_FRAIS_DOCUMENT" label="Frais de création de documents" /> |
<FIELD name="CODE_FOURNISSEUR" label="Code interne fournisseur" /> |
<FIELD name="CONDITIONS_LIVRAISON" label="Conditions de livraison" /> |
1011,18 → 906,6 |
</element> |
<element refid="humanresources.payroll.contract.employe" nameClass="masculine" name="contrat salarié" |
namePlural="contrats salariés"> |
<FIELD name="ID_CODE_AMENAGEMENT_PARTIEL" label="Aménagement temps partiel (S21.G00.40.078)" /> |
<FIELD name="ID_CODE_SUSPENSION" label="Motif de suspension (S21.G00.65.001)" /> |
<FIELD name="DATE_FIN_SUSPENSION" label="Fin de supension (S21.G00.65.003)" /> |
<FIELD name="DATE_DEBUT_SUSPENSION" label="Début de supension (S21.G00.65.002)" /> |
<FIELD name="SPECTACLE_OBJET" label="Objet spectacle (S21.G00.40.019)" /> |
<FIELD name="SPECTACLE_JOUR_CONTRAT" label="Nb jour contrat spectacle (S21.G00.53.003)" /> |
<FIELD name="ID_CODE_AMENAGEMENT_PARTIEL" label="Aménagement temps partiel (S21.G00.40.078)" /> |
<FIELD name="ID_CODE_SUSPENSION" label="Motif de suspension (S21.G00.65.001)" /> |
<FIELD name="DATE_FIN_SUSPENSION" label="Fin de supension (S21.G00.65.003)" /> |
<FIELD name="DATE_DEBUT_SUSPENSION" label="Début de supension (S21.G00.65.002)" /> |
<FIELD name="NATURE" label="Nature de l'emploi (*)" titlelabel="Nature de l'emploi" /> |
<FIELD name="COMPLEMENT_PCS" label="Code complément PCS-ESE" /> |
<FIELD name="ID_CODE_EMPLOI" label="Catégorie socioprofessionnelle " |
1083,10 → 966,6 |
</element> |
<element refid="supplychain.order.item" nameClass="masculine" name="élément de commande" |
namePlural="éléments de commande"> |
<FIELD name="NB_COLIS" label="Nb Colis" /> |
<FIELD name="POIDS_COLIS_NET" label="Pds Colis" /> |
<FIELD name="T_POIDS_COLIS_NET" label="Pds Colis Total" /> |
<FIELD name="T_POIDS_BRUT" label="Pds Brut Total" /> |
<FIELD name="ID_DEMANDE_ACHAT_ELEMENT" label="Dmd Achat" /> |
<FIELD name="ID_FAMILLE_ARTICLE" label="Famille d'article" /> |
<FIELD name="ID_DEPOT_STOCK" label="Dépôt Stock" /> |
1109,7 → 988,7 |
<FIELD name="PA_HT" label="PA Unitaire HT" /> |
<FIELD name="PV_HT" label="PV Unitaire HT" /> |
<FIELD name="ID_TAXE" label="Taxe" /> |
<FIELD name="POIDS" label="Poids UV net" /> |
<FIELD name="POIDS" label="Poids UV" /> |
<FIELD name="QTE" label="Quantité" titlelabel="Qté" /> |
<FIELD name="SERVICE" label="Service" /> |
<FIELD name="PRIX_METRIQUE_VT_1" label="P.V. UV HT" /> |
1129,7 → 1008,7 |
<FIELD name="T_PA_TTC" label="Total achat TTC" /> |
<FIELD name="T_PA_HT" label="Total achat HT" /> |
<FIELD name="POURCENT_REMISE" label="% Remise" /> |
<FIELD name="T_POIDS" label="Poids total net" /> |
<FIELD name="T_POIDS" label="Poids total" /> |
<FIELD name="ID_MODE_VENTE_ARTICLE" label="Mode de vente" /> |
</element> |
<element refid="sales.order" nameClass="feminine" name="commande client" namePlural="commandes clients"> |
1177,7 → 1056,7 |
<FIELD name="NB_COLIS" label="Nb Colis" /> |
<FIELD name="POIDS_COLIS_NET" label="Pds Colis" /> |
<FIELD name="T_POIDS_COLIS_NET" label="Pds Colis Total" /> |
<FIELD name="T_POIDS_BRUT" label="Pds Brut Total" /> |
<FIELD name="QTE_UNITAIRE" label="Qté U.V." /> |
<FIELD name="ID_UNITE_VENTE" label="Unité de vente" /> |
<FIELD name="ID_ARTICLE" label="Article" /> |
1196,7 → 1075,7 |
<FIELD name="MARGE_HT" label="Marge HT" /> |
<FIELD name="PV_HT" label="PV Unitaire HT" /> |
<FIELD name="ID_TAXE" label="Taxe" /> |
<FIELD name="POIDS" label="Poids UV net" /> |
<FIELD name="POIDS" label="Poids UV" /> |
<FIELD name="QTE" label="Quantité" titlelabel="Qté" /> |
<FIELD name="SERVICE" label="Service" /> |
<FIELD name="PRIX_METRIQUE_VT_1" label="P.V. UV HT" /> |
1214,7 → 1093,7 |
<FIELD name="T_PV_TTC" label="Total TTC" /> |
<FIELD name="T_PV_HT" label="Total vente HT" /> |
<FIELD name="T_PA_HT" label="Total achat HT" /> |
<FIELD name="T_POIDS" label="Poids total net" /> |
<FIELD name="T_POIDS" label="Poids total" /> |
<FIELD name="ID_MODE_VENTE_ARTICLE" label="Mode de vente" /> |
<FIELD name="POURCENT_ACOMPTE" label="% Acompte" /> |
1508,8 → 1387,8 |
<FIELD name="PA_HT" label="PA Unitaire HT" /> |
<FIELD name="PV_HT" label="PV Unitaire HT" /> |
<FIELD name="ID_TAXE" label="Taxe" /> |
<FIELD name="POIDS" label="Poids UV net" /> |
<FIELD name="T_POIDS" label="Poids total net" /> |
<FIELD name="POIDS" label="Poids UV" /> |
<FIELD name="T_POIDS" label="Poids total" /> |
<FIELD name="T_PA_HT" label="Total achat HT" /> |
<FIELD name="T_PV_HT" label="Total HT" /> |
<FIELD name="T_PV_TTC" label="Total TTC" /> |
1532,7 → 1411,8 |
<FIELD name="NB_COLIS" label="Nb Colis" /> |
<FIELD name="POIDS_COLIS_NET" label="Pds Colis" /> |
<FIELD name="T_POIDS_COLIS_NET" label="Pds Colis Total" /> |
<FIELD name="T_POIDS_BRUT" label="Pds Brut Total" /> |
<FIELD name="MONTANT_INITIAL" label="Montant initial" /> |
<FIELD name="INDICE_0" label="Indice 0" /> |
<FIELD name="INDICE_N" label="Indice N" /> |
1664,7 → 1544,8 |
namePlural="états de demande d'achat"> |
<FIELD name="NOM" label="Etat" /> |
</element> |
<element refid="controle.report.state" nameClass="masculine" name="état rapport" namePlural="états rapports"> |
<element refid="controle.EtatRapportSQLElement.report.state" nameClass="masculine" name="état rapport" |
namePlural="états rapports"> |
<FIELD name="NOM" label="Etat du rapport" /> |
</element> |
<element refid="humanresources.employe.info" nameClass="masculine" name="état civil" namePlural="états civils"> |
1727,7 → 1608,6 |
</element> |
<element refid="supplychain.order.invoice.purchase" nameClass="feminine" name="facture fournisseur" |
namePlural="factures fournisseur"> |
<FIELD name="DATE_REGLEMENT" label="Date de règlement" /> |
<FIELD name="TVA_ADJUSTMENT" label="Ajustement de TVA" /> |
<FIELD name="ID_AVOIR_FOURNISSEUR" label="Avoir" /> |
<FIELD name="NET_A_PAYER" label="Net à payer" /> |
1758,9 → 1638,6 |
</element> |
<element refid="supplychain.orderinvoice.purchase.item" nameClass="masculine" name="élément de facture" |
namePlural="éléments de facture"> |
<FIELD name="NB_COLIS" label="Nb Colis" /> |
<FIELD name="POIDS_COLIS_NET" label="Pds Colis" /> |
<FIELD name="T_POIDS_COLIS_NET" label="Pds Colis Total" /> |
<FIELD name="ID_COMPTE_PCE" label="Compte charge spécifique" /> |
<FIELD name="ID_DEPOT_STOCK" label="Dépôt Stock" /> |
<FIELD name="ID_ECO_CONTRIBUTION" label="Code Eco-Contrib." /> |
1857,8 → 1734,8 |
<FIELD name="IN_PERIODE" label="Dans la période" /> |
<FIELD name="ID_FICHE_PAYE" label="Fiche de paye" /> |
</element> |
<element refid="controle.appointment.form" nameClass="feminine" name="fiche de prise de rendez-vous" |
namePlural="fiches de prise de rendez-vous"> |
<element refid="controle.FicheRendezVousSQLElement.appointment.form" nameClass="feminine" |
name="fiche de prise de rendez-vous" namePlural="fiches de prise de rendez-vous"> |
<FIELD name="DATE" label="Date de création" /> |
<FIELD name="ID_VERIFICATEUR" label="Pilote" /> |
<FIELD name="ID_CLIENT" label="Client" /> |
1878,8 → 1755,8 |
<FIELD name="ID_POLE_PRODUIT" label="Pôle produit" /> |
<FIELD name="VALID" label="Valider par le responsable" /> |
</element> |
<element refid="controle.appointment.form.item" nameClass="masculine" name="element de fiche" |
namePlural="éléments de fiche"> |
<element refid="controle.FicheRdvItemSQLElement.appointment.form.item" nameClass="masculine" |
name="element de fiche" namePlural="éléments de fiche"> |
<FIELD name="ECHEANCE_RAPPORT" label="Ech. remise rapport en jour" /> |
<FIELD name="DATE" label="Date" /> |
<FIELD name="ID_MISSION" label="Mission" /> |
2094,7 → 1971,7 |
<FIELD name="CHIFFRE_AFFAIRE" label="Chiffre d'affaire" /> |
<FIELD name="ID_COMMERCIAL" label="Commercial" /> |
</element> |
<element refid="controle.mission.note" nameClass="masculine" name="ordre de mission" |
<element refid="controle.OrdreMissionSQLElement.mission.note" nameClass="masculine" name="ordre de mission" |
namePlural="ordres de mission"> |
<FIELD name="ID_VERIFICATEUR" label="Vérificateur" /> |
<FIELD name="ID_FICHE_RENDEZ_VOUS" label="Fiche de rendez vous" /> |
2121,7 → 1998,8 |
<TABLE name="POCHETTE"> |
<FIELD name="CODE" label="Pochette" /> |
</TABLE> |
<element refid="controle.product.pole" nameClass="masculine" name="pôle produit" namePlural="pôles produit"> |
<element refid="controle.PoleProduitSQLElement.product.pole" nameClass="masculine" name="pôle produit" |
namePlural="pôles produit"> |
<FIELD name="CODE" label="Code Pôle produit" /> |
<FIELD name="NOM" label="Nom" /> |
<FIELD name="RAISON_SOCIALE" label="Raison sociale" /> |
2133,7 → 2011,6 |
<FIELD name="NOM_DIRECTEUR" label="Nom directeur" /> |
<FIELD name="ID_ADRESSE_COMMON" label="Adresse" /> |
<FIELD name="FACTURE_ADRESSE" label="Facturer à cette adresse" /> |
<FIELD name="ID_POSTE_ANALYTIQUE" label="Poste analytique" /> |
</element> |
<element refid="finance.accounting.analytic.set" nameClass="masculine" name="poste analytique" |
namePlural="postes analytiques"> |
2185,8 → 2062,8 |
<FIELD name="DATE_CONFIRM" label="Date de confirmation" /> |
<FIELD name="CCI" label="CCI" /> |
</element> |
<element refid="controle.proposal.item" nameClass="feminine" name="mission d'une proposition" |
namePlural="missions par propositions"> |
<element refid="controle.PropositionElementSQLElement.proposal.item" nameClass="feminine" |
name="mission d'une proposition" namePlural="missions par propositions"> |
<FIELD name="ID_PROPOSITION" label="Proposition" /> |
<FIELD name="FIN_CONTRAT" label="Fin de contrat" /> |
<FIELD name="ID_TAXE" label="TVA" /> |
2434,7 → 2311,6 |
<FIELD name="NB_COLIS" label="Nb Colis" /> |
<FIELD name="POIDS_COLIS_NET" label="Pds Colis" /> |
<FIELD name="T_POIDS_COLIS_NET" label="Pds Colis Total" /> |
<FIELD name="T_POIDS_BRUT" label="Pds Brut Total" /> |
<FIELD name="POURCENT_ACOMPTE" label="% Acompte" /> |
<FIELD name="QTE_UNITAIRE" label="Qté U.V." /> |
<FIELD name="ID_UNITE_VENTE" label="Unité de vente" /> |
2459,7 → 2335,7 |
<FIELD name="MARGE_HT" label="Marge HT" /> |
<FIELD name="PA_HT" label="PA Unitaire HT" /> |
<FIELD name="ID_TAXE" label="Taxe" /> |
<FIELD name="POIDS" label="Poids UV net" /> |
<FIELD name="POIDS" label="Poids UV" /> |
<FIELD name="QTE" label="Quantité" titlelabel="Qté" /> |
<FIELD name="QTE_LIVREE" label="Quantité livrée" titlelabel="Qté livrée" /> |
<FIELD name="LIVREE" label="Livrée" /> |
2477,7 → 2353,7 |
<FIELD name="PRIX_METRIQUE_HA_3" label="P.A. HT au kg" /> |
<FIELD name="VALEUR_METRIQUE_3" label="poids / m²" /> |
<FIELD name="ID_METRIQUE_3" label="Métrique" /> |
<FIELD name="T_POIDS" label="Poids total net" /> |
<FIELD name="T_POIDS" label="Poids total" /> |
<FIELD name="T_PA_HT" label="Total achat HT" /> |
<FIELD name="T_PV_HT" label="Total HT" /> |
<FIELD name="T_PV_TTC" label="Total TTC" /> |
2634,18 → 2510,8 |
<FIELD name="HEURE_ABS" label="Heures d'abscence" /> |
<FIELD name="IJSS_BRUT" label="IJSS Brut" /> |
<FIELD name="IJSS_NET" label="IJSS Net" /> |
<FIELD name="HEURE_CHOM" label="Heures chômage partiel" /> |
<FIELD name="TAUX_CHOM" label="Taux heures chômées" /> |
<FIELD name="HEURE_INDEM" label="Heures IJSS indemnisées" /> |
<FIELD name="ECRETEMENT_CSG" label="Ecrêtement CSG chômage" /> |
<FIELD name="IJSS_BRUT_SECU_PAS" label="IJSS Brut PAS" /> |
<FIELD name="FRAIS_PRO" label="Frais professionnels" /> |
<FIELD name="RBT_TRANSPORT" label="Rembousement transport" /> |
<FIELD name="HEURE_CHOM" label="Heures chômage partiel" /> |
<FIELD name="TAUX_CHOM" label="Taux heures chômées" /> |
<FIELD name="HEURE_INDEM" label="Heures IJSS indemnisées" /> |
<FIELD name="ECRETEMENT_CSG" label="Ecrêtement CSG chômage" /> |
<FIELD name="IJSS_BRUT_SECU_PAS" label="IJSS Brut PAS" /> |
</element> |
<element refid="sales.product.unit" nameClass="feminine" name="unité de vente" namePlural="unité de vente"> |
<FIELD name="CODE" label="Code" /> |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/Gestion.java |
---|
50,7 → 50,6 |
import org.openconcerto.utils.ExceptionHandler; |
import org.openconcerto.utils.FileUtils; |
import org.openconcerto.utils.ThrowableHandler; |
import org.openconcerto.utils.i18n.TranslationManager; |
import org.openconcerto.utils.protocol.Helper; |
import org.openconcerto.xml.FastXMLProperties; |
58,6 → 57,7 |
import java.awt.Component; |
import java.awt.Desktop; |
import java.awt.Image; |
import java.awt.SplashScreen; |
import java.awt.Toolkit; |
import java.awt.event.AWTEventListener; |
import java.awt.event.HierarchyEvent; |
245,12 → 245,9 |
System.setProperty("apple.laf.useScreenMenuBar", "true"); |
// ToolTipManager.sharedInstance().setInitialDelay(0); |
if (false) { |
// TODO : regarder si ne pas le forcer fix le bug de carré noir |
// SpeedUp Linux |
System.setProperty("sun.java2d.pmoffscreen", "false"); |
} |
System.setProperty(EditPanel.NOBORDER, "true"); |
System.setProperty(EditPanel.ADD_AT_THE_END, "true"); |
System.setProperty("org.openconcerto.sql.listPanel.deafEditPanel", "true"); |
277,9 → 274,6 |
System.setProperty(ITextCombo.SIMPLE_TRAVERSAL, "true"); |
// Must be called before createDefaultInstance() |
TranslationManager.addTranslationStreamFromClass(Gestion.class); |
// Disable FOR SHARE lock |
BaseFillSQLRequest.setDefaultLockSelect(false); |
287,9 → 281,8 |
// Initialisation du splashScreen |
// ne pas oublier en param -splash:image.png |
try { |
// Ne fonctionne pas sur certains Linux |
java.awt.SplashScreen.getSplashScreen(); |
} catch (Throwable e) { |
SplashScreen.getSplashScreen(); |
} catch (Exception e) { |
// Can occur on OpenJDK... |
System.out.println("SplashScreen failed... " + e.getMessage()); |
} |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/mappingCompta_pl.xml |
---|
862,7 → 862,7 |
<element refid="sales.quote.state" nameClass="masculine" name="état de devis" namePlural="états de devis"> |
<FIELD name="NOM" label="Etat du devis" /> |
</element> |
<element refid="controle.report.state" nameClass="masculine" name="état rapport" |
<element refid="controle.EtatRapportSQLElement.report.state" nameClass="masculine" name="état rapport" |
namePlural="états rapports"> |
<FIELD name="NOM" label="Etat du rapport" /> |
</element> |
927,7 → 927,7 |
<FIELD name="IN_PERIODE" label="Dans la période" /> |
<FIELD name="ID_FICHE_PAYE" label="Fiche de paye" /> |
</element> |
<element refid="controle.appointment.form" nameClass="feminine" |
<element refid="controle.FicheRendezVousSQLElement.appointment.form" nameClass="feminine" |
name="fiche de prise de rendez-vous" namePlural="fiches de prise de rendez-vous"> |
<FIELD name="DATE" label="Date de création" /> |
<FIELD name="ID_VERIFICATEUR" label="Pilote" /> |
948,7 → 948,7 |
<FIELD name="ID_POLE_PRODUIT" label="Pôle produit" /> |
<FIELD name="VALID" label="Valider par le responsable" /> |
</element> |
<element refid="controle.appointment.form.item" nameClass="masculine" |
<element refid="controle.FicheRdvItemSQLElement.appointment.form.item" nameClass="masculine" |
name="element de fiche" namePlural="éléments de fiche"> |
<FIELD name="ECHEANCE_RAPPORT" label="Ech. remise rapport en jour" /> |
<FIELD name="DATE" label="Date" /> |
1165,7 → 1165,7 |
<FIELD name="ID" label="Numer części" /> |
<FIELD name="NOM" label="Nazwa części" /> |
</element> |
<element refid="controle.product.pole" nameClass="masculine" name="pôle produit" |
<element refid="controle.PoleProduitSQLElement.product.pole" nameClass="masculine" name="pôle produit" |
namePlural="pôles produit"> |
<FIELD name="CODE" label="Kod" /> |
<FIELD name="NOM" label="Nazwa" /> |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/mappingCompta_en.xml |
---|
925,7 → 925,7 |
<element refid="sales.quote.state" name="état de devis" namePlural="états de devis"> |
<FIELD name="NOM" label="Quote status" /> |
</element> |
<element refid="controle.report.state" name="état rapport" namePlural="états rapports"> |
<element refid="controle.EtatRapportSQLElement.report.state" name="état rapport" namePlural="états rapports"> |
<FIELD name="NOM" label="Report status" /> |
</element> |
<element refid="humanresources.employe.info" name="état civil" namePlural="états civils"> |
962,7 → 962,6 |
<FIELD name="ID_COMPTE_PCE" label="Compte de charge" /> |
<FIELD name="ID_CLIENT" label="Customer" /> |
<FIELD name="ID_ADRESSE" label="Adresse de livraison spécifique" /> |
<FIELD name="DATE_REGLEMENT" label="Date of payment" /> |
</element> |
<element refid="supplychain.orderinvoice.purchase.item" name="element de facture" |
namePlural="éléments de facture"> |
1052,7 → 1051,7 |
<FIELD name="IN_PERIODE" label="Dans la période" /> |
<FIELD name="ID_FICHE_PAYE" label="Fiche de paye" /> |
</element> |
<element refid="controle.appointment.form" name="appointment form"> |
<element refid="controle.FicheRendezVousSQLElement.appointment.form" name="appointment form"> |
<FIELD name="DATE" label="Date de création" /> |
<FIELD name="ID_VERIFICATEUR" label="Pilote" /> |
<FIELD name="ID_CLIENT" label="Customer" /> |
1072,7 → 1071,7 |
<FIELD name="ID_POLE_PRODUIT" label="Pôle produit" /> |
<FIELD name="VALID" label="Valider par le responsable" /> |
</element> |
<element refid="controle.appointment.form.item" name="appointment form item"> |
<element refid="controle.FicheRdvItemSQLElement.appointment.form.item" name="appointment form item"> |
<FIELD name="ECHEANCE_RAPPORT" label="Ech. remise rapport en jour" /> |
<FIELD name="DATE" label="Date" /> |
<FIELD name="ID_MISSION" label="Mission" /> |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/mapping_fr.xml |
---|
208,8 → 208,6 |
<FIELD name="PART_BRUT" label="Participe à la base brut" /> |
<FIELD name="COTISABLE" label="Participe à la base cotisable" /> |
<FIELD name="PART_CP" label="Participe aux congés payés" /> |
<FIELD name="CSG_NORMAL" label="Participe à la base CSG normale" /> |
<FIELD name="CSG_REDUIT" label="Participe à la base CSG réduite" /> |
</element> |
<element refid="humanresources.payroll.category.comment" nameClass="feminine" name="rubrique de commentaire" |
namePlural="rubriques de commentaire"> |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/update/Updater_1_5.java |
---|
14,7 → 14,6 |
package org.openconcerto.erp.config.update; |
import org.openconcerto.erp.config.InstallationPanel; |
import org.openconcerto.erp.core.common.element.BanqueSQLElement; |
import org.openconcerto.erp.core.common.ui.AbstractVenteArticleItemTable; |
import org.openconcerto.erp.core.customerrelationship.mail.EmailTemplateSQLElement; |
import org.openconcerto.erp.core.finance.payment.element.SDDMessageSQLElement; |
40,6 → 39,7 |
import org.openconcerto.sql.model.SQLSyntax; |
import org.openconcerto.sql.model.SQLSystem; |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.model.SQLTable.Index; |
import org.openconcerto.sql.model.Where; |
import org.openconcerto.sql.preferences.SQLPreferences; |
import org.openconcerto.sql.request.UpdateBuilder; |
370,7 → 370,7 |
if (!tableCmdFElt.contains("RECU")) { |
AlterTable t = new AlterTable(tableCmdFElt); |
t.addBooleanColumn("RECU_FORCED", Boolean.FALSE, false); |
t.addBooleanColumn("RECU", Boolean.FALSE, false); |
t.addBooleanColumn("RECU", Boolean.TRUE, false); |
t.addDecimalColumn("QTE_RECUE", 16, 6, BigDecimal.ZERO, true); |
tableCmdFElt.getBase().getDataSource().execute(t.asString()); |
root.refetchTable(tableCmdFElt.getName()); |
398,28 → 398,8 |
System.err.println(build.asString()); |
tableTR.getDBSystemRoot().getDataSource().execute(build.asString()); |
} |
} else { |
// Fix bad default value |
String defaultValue = tableCmdFElt.getField("RECU").getDefaultValue(); |
if (defaultValue != null && defaultValue.equals("true")) { |
AlterTable t = new AlterTable(tableCmdFElt); |
t.alterColumn("RECU", EnumSet.allOf(Properties.class), "boolean", "false", false); |
tableCmdFElt.getBase().getDataSource().execute(t.asString()); |
root.refetchTable(tableCmdFElt.getName()); |
root.getSchema().updateVersion(); |
UpdateBuilder build = new UpdateBuilder(tableCmdFElt); |
build.setObject("RECU", Boolean.FALSE); |
build.set("QTE_RECUE", "\"QTE\"*\"QTE_UNITAIRE\""); |
Where w = Where.createRaw(tableCmdFElt.getField("QTE_RECUE").getQuotedName() + " < (" + tableCmdFElt.getField("QTE").getQuotedName() + "*" |
+ tableCmdFElt.getField("QTE_UNITAIRE").getQuotedName() + ")", tableCmdFElt.getField("QTE_UNITAIRE"), tableCmdFElt.getField("QTE"), tableCmdFElt.getField("QTE_RECUE")); |
build.setWhere(w.or(new Where(tableCmdFElt.getKey(), "=", 1))); |
System.err.println(build.asString()); |
tableCmdFElt.getDBSystemRoot().getDataSource().execute(build.asString()); |
} |
} |
// Champ matière |
SQLTable tableArt = root.getTable("ARTICLE"); |
if (!tableArt.contains("MATIERE")) { |
825,16 → 805,6 |
} |
if (!tableFpaye.contains("CSG_REDUITE")) { |
final AlterTable alterB = new AlterTable(tableFpaye); |
alterB.addDecimalColumn("CSG_REDUITE", 16, 2, BigDecimal.ZERO, false); |
alterB.addDecimalColumn("SAL_BRUT_CSG", 16, 2, BigDecimal.ZERO, false); |
alterB.addDecimalColumn("SAL_BRUT_CSG_REDUITE", 16, 2, BigDecimal.ZERO, false); |
root.getBase().getDataSource().execute(alterB.asString()); |
root.refetchTable("FICHE_PAYE"); |
root.getSchema().updateVersion(); |
} |
SQLTable tableCpaye = root.findTable("CUMULS_PAYE"); |
if (!tableCpaye.contains("TAXE_CM_SAL_C")) { |
final AlterTable alterB = new AlterTable(tableCpaye); |
903,13 → 873,6 |
tableArticle.getSchema().updateVersion(); |
tableArticle.fetchFields(); |
} |
if (!tableArticle.contains("DLC")) { |
final AlterTable alterArticle = new AlterTable(tableArticle); |
alterArticle.addColumn("DLC", "date"); |
tableArticle.getBase().getDataSource().execute(alterArticle.asString()); |
tableArticle.getSchema().updateVersion(); |
tableArticle.fetchFields(); |
} |
SQLTable tableFournisseur = root.getTable("FOURNISSEUR"); |
if (!tableFournisseur.contains("NUMERO_TVA")) { |
final AlterTable alter = new AlterTable(tableFournisseur); |
1072,19 → 1035,14 |
root.getSchema().updateVersion(); |
} |
boolean upVar = false; |
List<String> f = Arrays.asList("IJSS_BRUT", "IJSS_NET", "FRAIS_PRO", "RBT_TRANSPORT", "HEURE_CHOM", "TAUX_CHOM", "HEURE_INDEM", "ECRETEMENT_CSG", "IJSS_BRUT_SECU_PAS"); |
final AlterTable alterVarSal = new AlterTable(tableVarSal); |
if (!tableVarSal.contains("IJSS_BRUT")) { |
final AlterTable alterB = new AlterTable(tableVarSal); |
List<String> f = Arrays.asList("IJSS_BRUT", "IJSS_NET", "FRAIS_PRO", "RBT_TRANSPORT"); |
for (String field : f) { |
if (!tableVarSal.contains(field)) { |
upVar = true; |
alterVarSal.addColumn(field, "real DEFAULT 0"); |
alterVarSal.addColumn(field + "_DEFAULT_VAL", "real DEFAULT 0"); |
alterVarSal.addColumn(field + "_CUMUL_VAL", "real DEFAULT 0"); |
alterB.addColumn(field, "real DEFAULT 0"); |
alterB.addColumn(field + "_DEFAULT_VAL", "real DEFAULT 0"); |
} |
} |
if (upVar) { |
root.getBase().getDataSource().execute(alterVarSal.asString()); |
root.getBase().getDataSource().execute(alterB.asString()); |
root.refetchTable(tableVarSal.getName()); |
root.getSchema().updateVersion(); |
} |
1178,22 → 1136,6 |
table.fetchFields(); |
} |
if (!table.getFieldsName().contains("ID_JOURNAL_CB_ATTENTE")) { |
AlterTable t = new AlterTable(table); |
t.addForeignColumn("ID_JOURNAL_CB_ATTENTE", root.getTable("JOURNAL")); |
table.getBase().getDataSource().execute(t.asString()); |
table.getSchema().updateVersion(); |
table.fetchFields(); |
} |
if (!table.getFieldsName().contains("ID_COMPTE_PCE_CB_ATTENTE")) { |
AlterTable t = new AlterTable(table); |
t.addForeignColumn("ID_COMPTE_PCE_CB_ATTENTE", root.getTable("COMPTE_PCE")); |
table.getBase().getDataSource().execute(t.asString()); |
table.getSchema().updateVersion(); |
table.fetchFields(); |
} |
if (!table.getFieldsName().contains("AUTO_LETTRAGE")) { |
AlterTable t = new AlterTable(table); |
t.addBooleanColumn("AUTO_LETTRAGE", Boolean.FALSE, false); |
1962,29 → 1904,7 |
root.refetchTable(tableContrat.getName()); |
root.getSchema().updateVersion(); |
} |
if (!tableContrat.contains("SPECTACLE_OBJET")) { |
AlterTable t = new AlterTable(tableContrat); |
t.addVarCharColumn("SPECTACLE_OBJET", 54); |
tableContrat.getBase().getDataSource().execute(t.asString()); |
root.refetchTable(tableContrat.getName()); |
root.getSchema().updateVersion(); |
} |
if (!tableContrat.contains("SPECTACLE_OBJET")) { |
AlterTable t = new AlterTable(tableContrat); |
t.addVarCharColumn("SPECTACLE_OBJET", 54); |
tableContrat.getBase().getDataSource().execute(t.asString()); |
root.refetchTable(tableContrat.getName()); |
root.getSchema().updateVersion(); |
} |
if (!tableContrat.contains("SPECTACLE_JOUR_CONTRAT")) { |
AlterTable t = new AlterTable(tableContrat); |
t.addDecimalColumn("SPECTACLE_JOUR_CONTRAT", 16, 2, null, true); |
tableContrat.getBase().getDataSource().execute(t.asString()); |
root.refetchTable(tableContrat.getName()); |
root.getSchema().updateVersion(); |
} |
List<String> tablesCatComptable = Arrays.asList("DEVIS", "COMMANDE_CLIENT", "BON_DE_LIVRAISON", "SAISIE_VENTE_FACTURE", "AVOIR_CLIENT"); |
for (String tableToUp : tablesCatComptable) { |
final SQLTable tableCatComptToAdd = root.getTable(tableToUp); |
2017,7 → 1937,7 |
} |
// Force undefined policy to inDb |
root.setMetadata(SQLTable.UNDEFINED_ID_POLICY, "inDB"); |
final Map<String, Number> mapTableNameUndefined = SQLTable.getUndefinedIDs(root.getSchema()); |
final Map<String, Number> mapTableNameUndefined = SQLTable.getUndefIDs(root.getSchema()); |
final Set<String> tables = root.getSchema().getTableNames(); |
for (String tName : tables) { |
if (!mapTableNameUndefined.containsKey(tName)) { |
2086,208 → 2006,9 |
root.refetchTable(tableSalarie.getName()); |
root.getSchema().updateVersion(); |
} |
boolean upDimensionArt = false; |
final AlterTable alterDimensionArt = new AlterTable(tableArt); |
if (!tableArt.contains("LONGUEUR")) { |
alterDimensionArt.addDecimalColumn("LONGUEUR", 16, 8, null, true); |
upDimensionArt = true; |
} |
if (!tableArt.contains("LARGEUR")) { |
alterDimensionArt.addDecimalColumn("LARGEUR", 16, 8, null, true); |
upDimensionArt = true; |
} |
if (!tableArt.contains("HAUTEUR")) { |
alterDimensionArt.addDecimalColumn("HAUTEUR", 16, 8, null, true); |
upDimensionArt = true; |
} |
if (upDimensionArt) { |
tableArt.getBase().getDataSource().execute(alterDimensionArt.asString()); |
tableArt.getSchema().updateVersion(); |
tableArt.fetchFields(); |
} |
List<String> tableElementWithTable = Arrays.asList("FACTURE_FOURNISSEUR_ELEMENT", "DEVIS_ELEMENT", "COMMANDE_ELEMENT", "BON_RECEPTION_ELEMENT", "COMMANDE_CLIENT_ELEMENT", |
"BON_DE_LIVRAISON_ELEMENT", "SAISIE_VENTE_FACTURE_ELEMENT", "AVOIR_CLIENT_ELEMENT", "DEMANDE_PRIX_ELEMENT"); |
for (String tableName : tableElementWithTable) { |
final SQLTable tableToAddDimension = root.getTable(tableName); |
boolean upDimensionArtItem = false; |
final AlterTable alterDimensionArtItem = new AlterTable(tableToAddDimension); |
if (!tableToAddDimension.contains("LONGUEUR")) { |
alterDimensionArtItem.addDecimalColumn("LONGUEUR", 16, 8, null, true); |
upDimensionArtItem = true; |
} |
if (!tableToAddDimension.contains("LARGEUR")) { |
alterDimensionArtItem.addDecimalColumn("LARGEUR", 16, 8, null, true); |
upDimensionArtItem = true; |
} |
if (!tableToAddDimension.contains("HAUTEUR")) { |
alterDimensionArtItem.addDecimalColumn("HAUTEUR", 16, 8, null, true); |
upDimensionArtItem = true; |
} |
if (upDimensionArtItem) { |
tableToAddDimension.getBase().getDataSource().execute(alterDimensionArtItem.asString()); |
tableToAddDimension.getSchema().updateVersion(); |
tableToAddDimension.fetchFields(); |
} |
} |
if (!tTva.contains("DEFAULT_ACHAT")) { |
final AlterTable alterTaxe = new AlterTable(tTva); |
alterTaxe.addBooleanColumn("DEFAULT_ACHAT", Boolean.FALSE, false); |
tTva.getBase().getDataSource().execute(alterTaxe.asString()); |
tTva.getSchema().updateVersion(); |
tTva.fetchFields(); |
} |
SQLTable tableTypeRglt = root.getTable("TYPE_REGLEMENT"); |
if (!tableTypeRglt.contains("SEPA")) { |
final AlterTable alterTaxe = new AlterTable(tableTypeRglt); |
alterTaxe.addBooleanColumn("SEPA", Boolean.FALSE, false); |
tableTypeRglt.getBase().getDataSource().execute(alterTaxe.asString()); |
tableTypeRglt.getSchema().updateVersion(); |
tableTypeRglt.fetchFields(); |
UpdateBuilder upSEPA = new UpdateBuilder(tableTypeRglt); |
upSEPA.setObject("SEPA", Boolean.TRUE); |
upSEPA.setObject("ECHEANCE", Boolean.TRUE); |
upSEPA.setWhere(new Where(tableTypeRglt.getField("NOM"), "=", "Prélèvement")); |
tTva.getBase().getDataSource().execute(upSEPA.asString()); |
} |
SQLTable tableEch = root.getTable("ECHEANCE_CLIENT"); |
if (!tableEch.contains("ID_SEPA_MANDATE")) { |
final AlterTable alterEch = new AlterTable(tableEch); |
alterEch.addForeignColumn("ID_SEPA_MANDATE", root.getTable("SEPA_MANDATE")); |
alterEch.addForeignColumn("ID_SDD_MESSAGE", root.getTable(SDDMessageSQLElement.TABLE_NAME)); |
alterEch.addVarCharColumn("SDD_EndToEndId", 35); |
alterEch.addBooleanColumn("FICHIER_CREE", Boolean.FALSE, false); |
alterEch.addBooleanColumn("REJETER", Boolean.FALSE, false); |
alterEch.addVarCharColumn("ETS", 256); |
alterEch.addForeignColumn("ID_" + BanqueSQLElement.TABLENAME, root.getTable(BanqueSQLElement.TABLENAME)); |
tableEch.getBase().getDataSource().execute(alterEch.asString()); |
tableEch.getSchema().updateVersion(); |
tableEch.fetchFields(); |
} |
if (!tClient.contains("ID_SEPA_MANDATE_DEFAULT")) { |
final AlterTable alterClient = new AlterTable(tClient); |
alterClient.addForeignColumn("ID_SEPA_MANDATE_DEFAULT", root.getTable("SEPA_MANDATE")); |
tClient.getBase().getDataSource().execute(alterClient.asString()); |
tClient.getSchema().updateVersion(); |
tClient.fetchFields(); |
} |
if (!tableArt.contains("AUTO_PRIX_MIN_VENTE_NOMENCLATURE")) { |
final AlterTable alter = new AlterTable(tableArt); |
alter.addBooleanColumn("AUTO_PRIX_MIN_VENTE_NOMENCLATURE", Boolean.FALSE, false); |
tableArt.getBase().getDataSource().execute(alter.asString()); |
tableArt.getSchema().updateVersion(); |
tableArt.fetchFields(); |
} |
if (!tableArt.contains("DERNIER_DATE_ACHAT")) { |
final AlterTable alter = new AlterTable(tableArt); |
alter.addColumn("DERNIER_DATE_ACHAT", "date"); |
tableArt.getBase().getDataSource().execute(alter.asString()); |
tableArt.getSchema().updateVersion(); |
tableArt.fetchFields(); |
ReferenceArticleSQLElement.updateDateAchat(tableArt, null); |
} |
SQLTable tableFactF = root.getTable("FACTURE_FOURNISSEUR"); |
if (!tableFactF.contains("DATE_REGLEMENT")) { |
final AlterTable alter = new AlterTable(tableFactF); |
alter.addColumn("DATE_REGLEMENT", "date"); |
tableFactF.getBase().getDataSource().execute(alter.asString()); |
tableFactF.getSchema().updateVersion(); |
tableFactF.fetchFields(); |
} |
SQLTable tableEchF = root.getTable("ECHEANCE_FOURNISSEUR"); |
if (!tableEchF.contains("ID_FACTURE_FOURNISSEUR")) { |
final AlterTable alter = new AlterTable(tableEchF); |
alter.addForeignColumn("ID_FACTURE_FOURNISSEUR", tableFactF); |
tableEchF.getBase().getDataSource().execute(alter.asString()); |
tableEchF.getSchema().updateVersion(); |
tableEchF.fetchFields(); |
} |
List<String> achatItems = Arrays.asList("DEMANDE_PRIX_ELEMENT", "COMMANDE_ELEMENT", "BON_RECEPTION_ELEMENT", "FACTURE_FOURNISSEUR_ELEMENT"); |
for (String string : achatItems) { |
boolean alter = false; |
SQLTable tableItems = root.getTable(string); |
final AlterTable t = new AlterTable(tableItems); |
if (!tableItems.getFieldsName().contains("POIDS_COLIS_NET")) { |
t.addColumn("POIDS_COLIS_NET", "numeric (16,8) DEFAULT 1"); |
alter = true; |
} |
if (!tableItems.getFieldsName().contains("T_POIDS_COLIS_NET")) { |
t.addColumn("T_POIDS_COLIS_NET", "numeric (16,8) DEFAULT 1"); |
alter = true; |
} |
if (!tableItems.getFieldsName().contains("NB_COLIS")) { |
t.addColumn("NB_COLIS", "integer DEFAULT 0"); |
alter = true; |
} |
if (alter) { |
tableItems.getBase().getDataSource().execute(t.asString()); |
tableItems.getSchema().updateVersion(); |
tableItems.fetchFields(); |
} |
} |
for (String tableName : tableElementWithTable) { |
final SQLTable tableToAddTare = root.getTable(tableName); |
boolean upTareArtItem = false; |
final AlterTable alterTareArtItem = new AlterTable(tableToAddTare); |
if (!tableToAddTare.contains("TARE")) { |
alterTareArtItem.addDecimalColumn("TARE", 16, 8, null, true); |
alterTareArtItem.alterColumn("POIDS_COLIS_NET", EnumSet.allOf(Properties.class), "numeric(16,8)", "0", true); |
alterTareArtItem.alterColumn("T_POIDS_COLIS_NET", EnumSet.allOf(Properties.class), "numeric(16,8)", "0", true); |
alterTareArtItem.addDecimalColumn("T_POIDS_BRUT", 16, 8, BigDecimal.ZERO, true); |
upTareArtItem = true; |
} |
if (upTareArtItem) { |
tableToAddTare.getBase().getDataSource().execute(alterTareArtItem.asString()); |
tableToAddTare.getSchema().updateVersion(); |
tableToAddTare.fetchFields(); |
int id = tableToAddTare.getUndefinedID(); |
if (id != SQLRow.NONEXISTANT_ID) { |
UpdateBuilder build = new UpdateBuilder(tableToAddTare); |
build.setObject("POIDS_COLIS_NET", BigDecimal.ZERO); |
build.setWhere(new Where(tableToAddTare.getKey(), "=", id)); |
tableToAddTare.getDBSystemRoot().getDataSource().execute(build.asString()); |
} |
} |
} |
// Fix nb char MOUVEMENT_STOCK.NOM |
if (tableMvtStock.getField("NOM").getType().getSize() == 45) { |
AlterTable alterMvt = new AlterTable(tableMvtStock); |
alterMvt.alterColumn("NOM", EnumSet.allOf(Properties.class), "varchar(512)", "''", false); |
tableMvtStock.getDBSystemRoot().getDataSource().execute(alterMvt.asString()); |
tableMvtStock.getSchema().updateVersion(); |
} |
SQLTable tableEtatStock = root.getTable("ETAT_STOCK"); |
SQLTable tableDepotStock = root.getTable("DEPOT_STOCK"); |
if (!tableEtatStock.contains("ID_DEPOT_STOCK")) { |
final AlterTable alter = new AlterTable(tableEtatStock); |
alter.addForeignColumn("ID_DEPOT_STOCK", tableDepotStock); |
tableEtatStock.getBase().getDataSource().execute(alter.asString()); |
tableEtatStock.getSchema().updateVersion(); |
tableEtatStock.fetchFields(); |
} |
} |
public static void initStock(SQLRow rowArticle, int idDepot) { |
SQLSelect selStock = new SQLSelect(); |
/trunk/OpenConcerto/src/org/openconcerto/erp/config/mappingCompta_es.xml |
---|
59,7 → 59,7 |
<FIELD name="ID_ADRESSE_COURRIER_2" label="Dirección de correo 2" /> |
<FIELD name="ID_ADRESSE_COURRIER_3" label="Dirección de correo 3" /> |
</element> |
<element refid="controle.project.item" nameClass="feminine" |
<element refid="controle.AffaireElementSQLElement.project.item" nameClass="feminine" |
name="mission de l'affaire" namePlural="missions de l'affaire"> |
<FIELD name="FIN_CONTRAT" label="Fin de contrato" /> |
<FIELD name="DATE_FIN_CONTRAT" label="Fecha de fin de contrato" /> |
1455,7 → 1455,7 |
namePlural="états de demande d'achat"> |
<FIELD name="NOM" label="Estado" /> |
</element> |
<element refid="controle.report.state" nameClass="masculine" name="état rapport" |
<element refid="controle.EtatRapportSQLElement.report.state" nameClass="masculine" name="état rapport" |
namePlural="états rapports"> |
<FIELD name="NOM" label="Etat du rapport" titlelabel="Estado del informe" /> |
</element> |
1640,7 → 1640,7 |
<FIELD name="IN_PERIODE" label="En el periodo" /> |
<FIELD name="ID_FICHE_PAYE" label="Recibo de nómina" /> |
</element> |
<element refid="controle.appointment.form" nameClass="feminine" |
<element refid="controle.FicheRendezVousSQLElement.appointment.form" nameClass="feminine" |
name="fiche de prise de rendez-vous" namePlural="fiches de prise de rendez-vous"> |
<FIELD name="DATE" label="Fecha de creación" /> |
<FIELD name="ID_VERIFICATEUR" label="Piloto" /> |
1661,7 → 1661,7 |
<FIELD name="ID_POLE_PRODUIT" label="Polo producto" /> |
<FIELD name="VALID" label="Validar por el responsable" /> |
</element> |
<element refid="controle.appointment.form.item" nameClass="masculine" |
<element refid="controle.FicheRdvItemSQLElement.appointment.form.item" nameClass="masculine" |
name="element de fiche" namePlural="éléments de fiche"> |
<FIELD name="ECHEANCE_RAPPORT" label="Plazo entrega informe en día" /> |
<FIELD name="DATE" label="Fecha" /> |
1869,7 → 1869,7 |
<FIELD name="CHIFFRE_AFFAIRE" label="Volumen de negocios" /> |
<FIELD name="ID_COMMERCIAL" label="Vendedor" /> |
</element> |
<element refid="controle.mission.note" nameClass="masculine" name="ordre de mission" |
<element refid="controle.OrdreMissionSQLElement.mission.note" nameClass="masculine" name="ordre de mission" |
namePlural="ordres de mission"> |
<FIELD name="ID_VERIFICATEUR" label="Verificador" /> |
<FIELD name="ID_FICHE_RENDEZ_VOUS" label="Ficha de cita" /> |
1891,7 → 1891,7 |
<TABLE name="POCHETTE"> |
<FIELD name="CODE" label="Sobre" /> |
</TABLE> |
<element refid="controle.product.pole" nameClass="masculine" name="pôle produit" |
<element refid="controle.PoleProduitSQLElement.product.pole" nameClass="masculine" name="pôle produit" |
namePlural="pôles produit"> |
<FIELD name="CODE" label="Código Polo producto" /> |
<FIELD name="NOM" label="Nombre" /> |
1954,7 → 1954,7 |
<FIELD name="DATE_CONFIRM" label="Fecha de confirmación" /> |
<FIELD name="CCI" label="CCI" /> |
</element> |
<element refid="controle.proposal.item" nameClass="feminine" |
<element refid="controle.PropositionElementSQLElement.proposal.item" nameClass="feminine" |
name="mission d'une proposition" namePlural="missions par propositions"> |
<FIELD name="ID_PROPOSITION" label="Propuesta" /> |
<FIELD name="FIN_CONTRAT" label="Fin de contrato" /> |
/trunk/OpenConcerto/src/org/openconcerto/erp/modules/ModuleManager.java |
---|
20,6 → 20,7 |
import org.openconcerto.erp.modules.DepSolverResult.Factory; |
import org.openconcerto.erp.modules.ModuleTableModel.ModuleRow; |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.TM; |
import org.openconcerto.sql.element.SQLElement; |
import org.openconcerto.sql.element.SQLElementDirectory; |
import org.openconcerto.sql.element.SQLElementNamesFromXML; |
1290,7 → 1291,7 |
final SQLElementDirectory dir = getDirectory(); |
final ComponentsContext ctxt = new ComponentsContext(dir, getRoot(), alreadyCreatedItems.get0(), alreadyCreatedItems.get1()); |
module.setupComponents(ctxt); |
TranslationManager.addTranslationStreamFromClass(module.getClass()); |
TranslationManager.getInstance().addTranslationStreamFromClass(module.getClass()); |
this.setupMenu(module, ma); |
this.modulesComponents.put(id, ctxt); |
} |
1831,7 → 1832,7 |
} |
private final Set<SQLTable> loadTranslations(final SQLFieldTranslator trns, final AbstractModule module, final String mdVariant) throws IOException { |
final Locale locale = getConf().getLocale(); |
final Locale locale = TM.getInstance().getTranslationsLocale(); |
final Control cntrl = TranslationManager.getControl(); |
final String baseName = "labels"; |
2069,7 → 2070,7 |
e.getKey().removeAdditionalField(fieldName); |
for (final Entry<SQLElement, ? extends Collection<IListeAction>> e : ctxt.getRowActions().entrySet()) |
e.getKey().getRowActions().removeAll(e.getValue()); |
TranslationManager.removeTranslationStreamFromClass(module.getClass()); |
TranslationManager.getInstance().removeTranslationStreamFromClass(module.getClass()); |
// can't undo so menu is reset in stopModule() |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/ui/grid/ScrollablePanel.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/ui/grid/DecoratedGridPanel.java |
---|
40,8 → 40,6 |
this.setBackground(Color.WHITE); |
this.setLayout(new GridBagLayout()); |
JPanel topLeft = new JPanel(); |
topLeft.setMinimumSize(new Dimension(0, 0)); |
this.grid = new GridPanel(columnCount, rowHeader.size(), rowHeight); |
header.setPreferredSize(new Dimension(this.grid.getPreferredSize().width, header.getMinimumSize().height)); |
header.setMaximumSize(new Dimension(this.grid.getPreferredSize().width, header.getMinimumSize().height)); |
56,33 → 54,13 |
c.gridx++; |
c.weightx = 0; |
this.add(header, c); |
c.gridx++; |
c.weightx = 0; |
JPanel spacerScroll = new JPanel(); |
int wScroll = ((Integer) UIManager.get("ScrollBar.width")).intValue(); |
spacerScroll.setMinimumSize(new Dimension(wScroll, header.getHeight())); |
spacerScroll.setPreferredSize(new Dimension(wScroll, header.getHeight())); |
spacerScroll.setMaximumSize(new Dimension(wScroll, header.getHeight())); |
spacerScroll.setSize(new Dimension(wScroll, header.getHeight())); |
this.add(spacerScroll, c); |
// |
c.gridwidth = 3; |
c.gridwidth = 2; |
c.weightx = 1; |
c.weighty = 1; |
c.gridx = 0; |
c.gridy++; |
JPanel panel = new ScrollablePanel() { |
@Override |
public boolean getScrollableTracksViewportWidth() { |
return true; |
} |
@Override |
public boolean getScrollableTracksViewportHeight() { |
return false; |
} |
}; |
JPanel panel = new JPanel(); |
panel.setLayout(new GridBagLayout()); |
GridBagConstraints c2 = new GridBagConstraints(); |
c2.gridx = 0; |
97,7 → 75,6 |
panel.add(this.grid, c2); |
final JScrollPane scroll = new JScrollPane(panel); |
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); |
scroll.setBorder(null); |
this.add(scroll, c); |
/trunk/OpenConcerto/src/org/openconcerto/ui/grid/GridPanel.java |
---|
18,7 → 18,6 |
import java.awt.Dimension; |
import java.awt.Graphics; |
import java.awt.Graphics2D; |
import java.awt.Rectangle; |
import java.awt.event.MouseAdapter; |
import java.awt.event.MouseEvent; |
import java.awt.event.MouseMotionListener; |
30,11 → 29,12 |
import java.util.Set; |
import javax.swing.JFrame; |
import javax.swing.JPanel; |
import javax.swing.SwingUtilities; |
import javax.swing.UIManager; |
import javax.swing.UnsupportedLookAndFeelException; |
public class GridPanel extends ScrollablePanel { |
public class GridPanel extends JPanel { |
private static final Color SELECTION_BORDER_COLOR = new Color(200, 210, 220, 250); |
private static final Color SELECTION_COLOR = new Color(230, 240, 250, 180); |
private static final Color CREATION_COLOR = new Color(250, 254, 30, 100); |
316,34 → 316,4 |
public List<GridItem> getSelectedItems() { |
return new ArrayList<>(this.selectedItems); |
} |
@Override |
public Dimension getPreferredScrollableViewportSize() { |
// TODO Auto-generated method stub |
return null; |
} |
@Override |
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { |
// TODO Auto-generated method stub |
return 40; |
} |
@Override |
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { |
// TODO Auto-generated method stub |
return 40; |
} |
@Override |
public boolean getScrollableTracksViewportWidth() { |
// TODO Auto-generated method stub |
return false; |
} |
@Override |
public boolean getScrollableTracksViewportHeight() { |
// TODO Auto-generated method stub |
return false; |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/ui/TM.java |
---|
13,19 → 13,12 |
package org.openconcerto.ui; |
import org.openconcerto.utils.i18n.TMPool; |
import java.util.Locale; |
public class TM extends org.openconcerto.utils.i18n.TM { |
private static final TMPool<TM> POOL = new TMPool<TM>(TM::new); |
static public TM getInstance() { |
return getInstance(getDefaultLocale()); |
} |
static private final TM INSTANCE = new TM(); |
static public TM getInstance(final Locale l) { |
return POOL.get(l); |
static public final TM getInstance() { |
return INSTANCE; |
} |
static public final String tr(final String key, final Object... args) { |
32,7 → 25,6 |
return getInstance().translate(key, args); |
} |
private TM(final Locale l) { |
super(l); |
private TM() { |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/ui/SystemInfoPanel.java |
---|
19,7 → 19,6 |
import org.openconcerto.utils.SystemInfo.Info; |
import org.openconcerto.utils.i18n.TM; |
import java.util.Locale; |
import java.util.Map; |
import javax.swing.BorderFactory; |
41,17 → 40,13 |
private final FormLayouter l; |
public SystemInfoPanel() { |
this(Locale.getDefault()); |
} |
public SystemInfoPanel(final Locale locale) { |
this.l = new FormLayouter(this, 1); |
this.refresh(locale); |
this.refresh(); |
} |
public final void refresh(final Locale locale) { |
public final void refresh() { |
this.l.clear(); |
final Map<Info, String> infos = SystemInfo.get(true, locale); |
final Map<Info, String> infos = SystemInfo.get(true); |
final JEditorPane p = new HTMLTextField(infos.get(Info.JAVA)) { |
99,16 → 94,14 |
this.l.add("Java", p); |
// * Windows XP 5.1 (x86) |
this.l.add(TM.tr(locale, "os"), new JLabel("<html>" + infos.get(Info.OS) + "</html>")); |
this.l.add(TM.tr("os"), new JLabel("<html>" + infos.get(Info.OS) + "</html>")); |
// * Sylvain ; C:\Documents and Settings\Sylvain ; D:\workspace\CTech |
this.l.add(TM.tr(locale, "user"), new HTMLTextField(infos.get(Info.USER))); |
this.l.add(TM.tr("user"), new HTMLTextField(infos.get(Info.USER))); |
// * eth0 192.168.28.52/24, état: inactif, nom complet: "" |
this.l.add(TM.tr(locale, "network"), new HTMLTextField(infos.get(Info.NETWORK))); |
this.l.add(TM.tr("network"), new HTMLTextField(infos.get(Info.NETWORK))); |
// TODO reverse vnc |
this.l.getComponent().revalidate(); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/ui/light/LightUIFrame.java |
---|
37,7 → 37,6 |
private LightUIPanel footerPanel = new LightUIPanel(this.getId() + ".footer.panel"); |
private List<LightUIFrame> childrenFrame; |
private List<LightUIElement> asynchronousChildren = new ArrayList<>(); |
public LightUIFrame() { |
// Serialization |
343,7 → 342,4 |
} |
} |
public List<LightUIElement> getAsynchronousChildren() { |
return this.asynchronousChildren; |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/ui/light/LightUIPanel.java |
---|
228,9 → 228,6 |
@Override |
public JSONObject toJSON() { |
if (isDestroyed()) { |
throw new IllegalStateException(this + " already destroyed"); |
} |
final JSONObject result = super.toJSON(); |
if (this.title != null) { |
result.put("title", this.title); |
/trunk/OpenConcerto/src/org/openconcerto/ui/light/LightUIElement.java |
---|
35,7 → 35,7 |
public enum GlyphIcon { |
WARNING("#warning"), PLUS("#plus"), PENCIL("#pencil"), SEARCH("#search"), REMOVE("#remove"), STAR("#star"), STAR_EMPTY("#star-empty"), USER("#user"), LOCK("#lock"), UNLOCK( |
"#unlock"), DOWNLOAD("#download"), UPLOAD("#upload"), ARROW_LEFT("#arrow-left"), ARROW_RIGHT("#arrow-right"); |
"#unlock"), DOWNLOAD("#download"), UPLOAD("#upload"); |
private final String id; |
/trunk/OpenConcerto/src/org/openconcerto/ui/preferences/EmailProps.java |
---|
83,7 → 83,7 |
} |
public int getMode() { |
return this.getIntProperty("mode", DEFAULT); |
return this.getIntProperty("mode"); |
} |
public void setMode(int mode) { |
126,4 → 126,10 |
} |
return charset; |
} |
@Override |
protected int getDefautIntValue() { |
return DEFAULT; |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/view/list/RowValuesTableModel.java |
---|
16,23 → 16,19 |
import org.openconcerto.sql.element.SQLElement; |
import org.openconcerto.sql.model.Constraint; |
import org.openconcerto.sql.model.SQLField; |
import org.openconcerto.sql.model.SQLInsert; |
import org.openconcerto.sql.model.SQLRow; |
import org.openconcerto.sql.model.SQLRowAccessor; |
import org.openconcerto.sql.model.SQLRowListRSH; |
import org.openconcerto.sql.model.SQLRowValues; |
import org.openconcerto.sql.model.SQLRowValuesCluster.StoreMode; |
import org.openconcerto.sql.model.SQLRowValuesCluster.StoreResult; |
import org.openconcerto.sql.model.SQLSelect; |
import org.openconcerto.sql.model.SQLSyntax.ConstraintType; |
import org.openconcerto.sql.model.SQLTable; |
import org.openconcerto.sql.model.SQLUpdate; |
import org.openconcerto.sql.model.UndefinedRowValuesCache; |
import org.openconcerto.sql.model.Where; |
import org.openconcerto.sql.utils.AlterTable; |
import org.openconcerto.utils.CompareUtils; |
import org.openconcerto.utils.ExceptionHandler; |
import org.openconcerto.utils.ListMap; |
import org.openconcerto.utils.OrderedSet; |
import java.math.BigDecimal; |
287,13 → 283,6 |
* Valider les modifications dans la base |
*/ |
public void commitData() { |
commitData(false); |
} |
/** |
* Valider les modifications dans la base |
*/ |
public void commitData(boolean useMultipleInsertUpdate) { |
checkEDT(); |
final List<SQLRowValues> rowsToCommmit = new ArrayList<SQLRowValues>(); |
rowsToCommmit.addAll(this.rowValues); |
307,63 → 296,17 |
table.fetchFields(); |
table.getSchema().updateVersion(); |
} |
BigDecimal o = table.getMaxOrder(Boolean.FALSE); |
final int size = rowsToCommmit.size(); |
if (useMultipleInsertUpdate) { |
List<SQLUpdate> updates = new ArrayList<>(); |
ListMap<List<SQLField>, SQLInsert> mapInsertByFields = new ListMap<>(); |
ListMap<List<SQLField>, SQLRowValues> mapInsertRowValues = new ListMap<>(); |
for (int i = 0; i < size; i++) { |
final SQLRowValues r = rowsToCommmit.get(i); |
r.put(r.getTable().getOrderField().getFieldName(), o.add(new BigDecimal(i + 1))); |
if (r.hasID()) { |
SQLUpdate up = new SQLUpdate(new Where(table.getKey(), "=", r.getID())); |
up.importValuesFrom(r); |
updates.add(up); |
} else { |
SQLInsert insert = new SQLInsert(); |
insert.importValuesFrom(r); |
List<SQLField> fields = insert.getFields(); |
mapInsertByFields.add(fields, insert); |
mapInsertRowValues.add(fields, r); |
} |
} |
if (!mapInsertByFields.isEmpty()) { |
for (List<SQLField> fieldSize : mapInsertByFields.keySet()) { |
List<Number> ids = SQLInsert.executeSimilarInserts(table.getDBSystemRoot(), mapInsertByFields.get(fieldSize), true); |
List<SQLRowValues> insertsRowValues = mapInsertRowValues.get(fieldSize); |
if (ids.size() == insertsRowValues.size()) { |
for (int i = 0; i < ids.size(); i++) { |
final SQLRowValues r = insertsRowValues.get(i); |
r.setID(ids.get(i)); |
} |
} |
} |
} |
if (!updates.isEmpty()) { |
SQLUpdate.executeMultipleWithBatch(table.getDBSystemRoot(), updates); |
} |
table.fireTableModified(-1); |
} else { |
for (int i = 0; i < size; i++) { |
final SQLRowValues r = rowsToCommmit.get(i); |
r.put(r.getTable().getOrderField().getFieldName(), o.add(new BigDecimal(i + 1))); |
final StoreResult store = r.getGraph().store(StoreMode.COMMIT, false); |
final SQLRow row = store.getStoredRow(r); |
final SQLRow row = r.getGraph().store(StoreMode.COMMIT).getStoredRow(r); |
r.setID(row.getIDNumber()); |
} |
} |
} catch (SQLException e) { |
ExceptionHandler.handle("Unable to commit rows", e); |
} |
} |
public void addTableModelListener(TableModelListener l) { |
657,7 → 600,7 |
final List<SQLRowValues> newRows = new ArrayList<SQLRowValues>(); |
if (rowVals.hasID() && !rowVals.isUndefined() && rowVals.getID() != SQLRow.NONEXISTANT_ID) { |
if (rowVals.getID() > 1) { |
SQLRow row = rowVals.getTable().getRow(rowVals.getID()); |
List<SQLRow> rowSet; |
if (referentField == null) { |
/trunk/OpenConcerto/src/org/openconcerto/sql/view/list/RowValuesTableControlPanel.java |
---|
195,13 → 195,9 |
for (String elt : this.table.getClearCloneTableElement()) { |
if (rowValsBis.getTable().getFieldsName().contains(elt)) { |
if (rowValsBis.getTable().getField(elt).isKey()) { |
rowValsBis.putEmptyLink(elt); |
} else { |
rowValsBis.put(elt, this.model.getDefaultRowValues().getObject(elt)); |
} |
} |
} |
this.model.addRow(rowValsBis); |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/view/list/ITableModel.java |
---|
47,7 → 47,7 |
import java.util.Timer; |
import java.util.TimerTask; |
import java.util.concurrent.Future; |
import java.util.concurrent.RunnableFuture; |
import java.util.concurrent.FutureTask; |
import java.util.concurrent.TimeUnit; |
import java.util.concurrent.TimeoutException; |
import java.util.concurrent.atomic.AtomicInteger; |
198,7 → 198,7 |
@Override |
public void propertyChange(final PropertyChangeEvent evt) { |
if (evt.getPropertyName().equals("beingRun")) { |
final boolean isLoading = UpdateQueue.isUpdate((RunnableFuture<?>) evt.getNewValue()); |
final boolean isLoading = UpdateQueue.isUpdate((FutureTask<?>) evt.getNewValue()); |
SwingUtilities.invokeLater(new Runnable() { |
@Override |
public void run() { |
222,7 → 222,7 |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
if (evt.getPropertyName().equals("beingRun")) { |
final boolean isSearching = SearchQueue.isSearch((RunnableFuture<?>) evt.getNewValue()); |
final boolean isSearching = SearchQueue.isSearch((FutureTask<?>) evt.getNewValue()); |
SwingUtilities.invokeLater(new Runnable() { |
@Override |
public void run() { |
/trunk/OpenConcerto/src/org/openconcerto/sql/view/list/search/SearchQueue.java |
---|
30,7 → 30,7 |
import java.util.Collection; |
import java.util.Deque; |
import java.util.concurrent.RunnableFuture; |
import java.util.concurrent.FutureTask; |
import javax.swing.SwingUtilities; |
45,12 → 45,12 |
* @param f a task in this queue, can be <code>null</code>. |
* @return <code>true</code> if <code>f</code> searches. |
*/ |
public static boolean isSearch(final RunnableFuture<?> f) { |
public static boolean isSearch(final FutureTask<?> f) { |
final Runnable r = getRunnable(f); |
return r instanceof SearchRunnable && ((SearchRunnable) r).performsSearch(); |
} |
public static Runnable getRunnable(final RunnableFuture<?> f) { |
public static Runnable getRunnable(final FutureTask<?> f) { |
if (f instanceof IFutureTask) |
return ((IFutureTask<?>) f).getRunnable(); |
else |
75,7 → 75,7 |
SearchSpec search; |
private final ListAccess listAccess; |
// thread-safe |
private final IClosure<Deque<RunnableFuture<?>>> cancelClosure; |
private final IClosure<Deque<FutureTask<?>>> cancelClosure; |
public SearchQueue(final ListAccess la) { |
super(SearchQueue.class.getName() + " on " + la.getModel()); |
82,9 → 82,9 |
this.listAccess = la; |
this.model = la.getModel(); |
this.search = null; |
this.cancelClosure = UpdateQueue.createCancelClosure(this, new ITransformer<RunnableFuture<?>, TaskType>() { |
this.cancelClosure = UpdateQueue.createCancelClosure(this, new ITransformer<FutureTask<?>, TaskType>() { |
@Override |
public TaskType transformChecked(RunnableFuture<?> input) { |
public TaskType transformChecked(FutureTask<?> input) { |
final Runnable r = getRunnable(input); |
if (r instanceof SearchRunnable) |
return TaskType.COMPUTE; |
137,9 → 137,9 |
// couldn't cancel it. |
// use tasksDo() so that no other runnable can come between setSearch and searchAll. |
// Otherwise a runnable might the new search query but not the new filtered list. |
this.tasksDo(new IClosure<Deque<RunnableFuture<?>>>() { |
this.tasksDo(new IClosure<Deque<FutureTask<?>>>() { |
@Override |
public void executeChecked(Deque<RunnableFuture<?>> input) { |
public void executeChecked(Deque<FutureTask<?>> input) { |
put(new SetStateRunnable() { |
@Override |
public void run() { |
164,7 → 164,7 |
} |
@Override |
protected void willPut(final RunnableFuture<?> qr) throws InterruptedException { |
protected void willPut(final FutureTask<?> qr) throws InterruptedException { |
if (getRunnable(qr) instanceof SearchAll) { |
// si on recherche tout, ne sert à rien de garder les recherches précédentes. |
this.tasksDo(this.cancelClosure); |
/trunk/OpenConcerto/src/org/openconcerto/sql/view/list/SQLTableModelLinesSourceOffline.java |
---|
300,7 → 300,7 |
// *** Modify virtual rows *** |
private final <T> Future<T> execInUpdateQ(final OfflineCallable<T> call) { |
return this.getModel().getUpdateQ().add(new FutureTask<T>(call)); |
return this.getModel().getUpdateQ().execute(new FutureTask<T>(call)); |
} |
public final Future<Number> add(final SQLRowValues vals) { |
/trunk/OpenConcerto/src/org/openconcerto/sql/view/list/UpdateQueue.java |
---|
46,7 → 46,7 |
import java.util.Iterator; |
import java.util.List; |
import java.util.Set; |
import java.util.concurrent.RunnableFuture; |
import java.util.concurrent.FutureTask; |
import java.util.logging.Level; |
import net.jcip.annotations.GuardedBy; |
59,7 → 59,7 |
* @param f a task in this queue, can be <code>null</code>. |
* @return <code>true</code> if <code>f</code> loads from the db. |
*/ |
static boolean isUpdate(RunnableFuture<?> f) { |
static boolean isUpdate(FutureTask<?> f) { |
return isUpdate(SearchQueue.getRunnable(f)); |
} |
103,15 → 103,15 |
// TODO rm : needed for now since our optimizations are false if there's a where not on the |
// primary table, see http://192.168.1.10:3000/issues/show/22 |
private boolean alwaysUpdateAll = false; |
private final IClosure<Deque<RunnableFuture<?>>> cancelClosure; |
private final IClosure<Deque<FutureTask<?>>> cancelClosure; |
public UpdateQueue(ITableModel model) { |
super(UpdateQueue.class.getSimpleName() + " on " + model); |
this.tableModel = model; |
this.fullList = new ArrayList<ListSQLLine>(); |
this.cancelClosure = createCancelClosure(this, new ITransformer<RunnableFuture<?>, TaskType>() { |
this.cancelClosure = createCancelClosure(this, new ITransformer<FutureTask<?>, TaskType>() { |
@Override |
public TaskType transformChecked(RunnableFuture<?> input) { |
public TaskType transformChecked(FutureTask<?> input) { |
final Runnable r = SearchQueue.getRunnable(input); |
if (isCancelableUpdate(r)) |
return TaskType.COMPUTE; |
377,9 → 377,9 |
// use tasksDo() so that no other runnable can come between setState and updateAll. |
// Otherwise an updateOne might use new columns and add a line with different columns than |
// the full list. |
this.tasksDo(new IClosure<Deque<RunnableFuture<?>>>() { |
this.tasksDo(new IClosure<Deque<FutureTask<?>>>() { |
@Override |
public void executeChecked(Deque<RunnableFuture<?>> input) { |
public void executeChecked(Deque<FutureTask<?>> input) { |
put(new SetStateRunnable() { |
@Override |
public void run() { |
528,7 → 528,7 |
} |
@Override |
protected void willPut(final RunnableFuture<?> qr) throws InterruptedException { |
protected void willPut(final FutureTask<?> qr) throws InterruptedException { |
if (SearchQueue.getRunnable(qr) instanceof ChangeAllRunnable) { |
// si on met tout à jour, ne sert à rien de garder les maj précédentes. |
this.tasksDo(this.cancelClosure); |
546,16 → 546,16 |
} |
} |
static public final IClosure<Deque<RunnableFuture<?>>> createCancelClosure(final SleepingQueue q, final ITransformer<? super RunnableFuture<?>, TaskType> cancelablePred) { |
return new IClosure<Deque<RunnableFuture<?>>>() { |
static public final IClosure<Deque<FutureTask<?>>> createCancelClosure(final SleepingQueue q, final ITransformer<? super FutureTask<?>, TaskType> cancelablePred) { |
return new IClosure<Deque<FutureTask<?>>>() { |
@Override |
public void executeChecked(final Deque<RunnableFuture<?>> tasks) { |
public void executeChecked(final Deque<FutureTask<?>> tasks) { |
// on part de la fin et on supprime toutes les maj jusqu'a ce qu'on trouve |
// un runnable qui n'est pas annulable |
final Iterator<RunnableFuture<?>> iter = tasks.descendingIterator(); |
final Iterator<FutureTask<?>> iter = tasks.descendingIterator(); |
boolean needsPrevious = false; |
while (iter.hasNext() && !needsPrevious) { |
final RunnableFuture<?> current = iter.next(); |
final FutureTask<?> current = iter.next(); |
final TaskType type = cancelablePred.transformChecked(current); |
needsPrevious = type.dependsOnPrevious; |
if (type.cancelable) |
565,7 → 565,7 |
if (!needsPrevious) { |
// before trying to cancel being run we should have been through all the backlog |
assert !iter.hasNext(); |
final RunnableFuture<?> br = q.getBeingRun(); |
final FutureTask<?> br = q.getBeingRun(); |
if (br != null && cancelablePred.transformChecked(br).cancelable) { |
// might already be done by now, but it's OK cancel() will just return false |
br.cancel(true); |
/trunk/OpenConcerto/src/org/openconcerto/sql/PropsConfiguration.java |
---|
70,7 → 70,6 |
import java.util.List; |
import java.util.ListIterator; |
import java.util.Locale; |
import java.util.Objects; |
import java.util.Properties; |
import java.util.ResourceBundle.Control; |
import java.util.Set; |
210,8 → 209,6 |
private BaseDirs baseDirs; |
@GuardedBy("restLock") |
private File logDir; |
@GuardedBy("restLock") |
private Locale locale = Locale.getDefault(); |
private final boolean inIDE; |
// split sql tree and the rest since creating the tree is costly |
1001,7 → 998,7 |
} |
protected final SQLFieldTranslator loadTranslations(final SQLFieldTranslator trns, final DBRoot root, final List<String> mappings) { |
final Locale locale = this.getLocale(); |
final Locale locale = TM.getInstance().getTranslationsLocale(); |
final Control cntrl = TranslationManager.getControl(); |
boolean found = false; |
// better to have a translation in the correct language than a translation for the correct |
1376,13 → 1373,6 |
} |
} |
@Override |
public Locale getLocale() { |
synchronized (this.restLock) { |
return this.locale; |
} |
} |
// *** setters |
// MAYBE add synchronized (not necessary since they're private, and only called with the lock) |
1407,24 → 1397,6 |
this.wd = dir; |
} |
public void setLocale(Locale locale) { |
Objects.requireNonNull(locale); |
// don't create the directory |
final boolean localeChangedAndDirExists; |
synchronized (this.restLock) { |
if (locale.equals(this.locale)) { |
localeChangedAndDirExists = false; |
} else { |
this.locale = locale; |
localeChangedAndDirExists = this.directory.isComputeStarted(); |
} |
} |
if (localeChangedAndDirExists) { |
final SQLElementDirectory dir = this.getDirectory(); |
dir.setTranslator(createTranslator(dir)); |
} |
} |
public FieldMapper getFieldMapper() { |
return fieldMapper; |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/ui/ConnexionPanel.java |
---|
15,7 → 15,6 |
import static org.openconcerto.sql.TM.getTM; |
import org.openconcerto.sql.Configuration; |
import org.openconcerto.sql.PropsConfiguration; |
import org.openconcerto.sql.TM; |
import org.openconcerto.sql.model.SQLRow; |
import org.openconcerto.sql.model.SQLTable; |
57,7 → 56,6 |
import javax.swing.JButton; |
import javax.swing.JCheckBox; |
import javax.swing.JCheckBoxMenuItem; |
import javax.swing.JComponent; |
import javax.swing.JLabel; |
import javax.swing.JOptionPane; |
import javax.swing.JPanel; |
515,18 → 513,6 |
this.buttonConnect.setText(bundle.getString("buttonConnect")); |
this.langButton.setText(locale.getLanguage()); |
this.langButton.setVisible(true); |
// for next launch |
UserProps.getInstance().setLocale(locale); |
// for current run |
((PropsConfiguration) Configuration.getInstance()).setLocale(locale); |
// for code that will never need more than one Locale concurrently |
// (e.g. used by TM singletons in various packages) |
Locale.setDefault(locale); |
// as explained in Locale.setDefault() javadoc : "be prepared to reinitialize |
// locale-sensitive code" |
JComponent.setDefaultLocale(locale); |
// throw RuntimeException like ResourceBundle.getBundle() at the beginning of this |
// method |
TranslationManager.createDefaultInstance(); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/ui/SoftwareInfoPanel.java |
---|
30,7 → 30,6 |
import org.openconcerto.utils.i18n.I18nUtils; |
import java.util.HashMap; |
import java.util.Locale; |
import java.util.Map; |
import javax.swing.JLabel; |
51,15 → 50,15 |
public static final IFactory<String> FACTORY = new IFactory<String>() { |
@Override |
public String createChecked() { |
return get(false, Locale.ENGLISH).toString(); |
return get(false).toString(); |
} |
}; |
public static Map<Info, String> get(final boolean html, final Locale locale) { |
public static Map<Info, String> get(final boolean html) { |
final Map<Info, String> res = new HashMap<Info, String>(); |
final UserRightsManager userRightsManager = UserRightsManager.getInstance(); |
res.put(Info.RIGHTS, org.openconcerto.utils.i18n.TM.tr(locale, I18nUtils.getYesNoKey(userRightsManager != null))); |
res.put(Info.RIGHTS, org.openconcerto.utils.i18n.TM.tr(I18nUtils.getYesNoKey(userRightsManager != null))); |
final User user = UserManager.getUser(); |
if (user != null) { |
final UserRights userRights = UserRightsManager.getCurrentUserRights(); |
79,11 → 78,11 |
final String name, version; |
if (productInfo == null) { |
name = TM.tr(locale, "infoPanel.noAppName"); |
version = TM.tr(locale, "infoPanel.noVersion"); |
name = TM.tr("infoPanel.noAppName"); |
version = TM.tr("infoPanel.noVersion"); |
} else { |
name = productInfo.getName(); |
version = productInfo.getProperty(ProductInfo.VERSION, TM.tr(locale, "infoPanel.noVersion")); |
version = productInfo.getProperty(ProductInfo.VERSION, TM.tr("infoPanel.noVersion")); |
} |
res.put(Info.APP_NAME, name); |
res.put(Info.APP_VERSION, version); |
94,12 → 93,12 |
if (conf != null) |
res.put(Info.DB_URL, conf.getSystemRoot().getDataSource().getUrl()); |
if (conf != null) { |
final String logs = propsConf == null ? "" : " ; " + SystemInfo.getLink(TM.tr(locale, "infoPanel.logs"), propsConf.getLogDir().toURI(), html); |
final String logs = propsConf == null ? "" : " ; " + SystemInfo.getLink(TM.tr("infoPanel.logs"), propsConf.getLogDir().toURI(), html); |
final BaseDirs baseDirs = conf.getBaseDirs(); |
String dirs = " ; " + SystemInfo.getLink(TM.tr(locale, "infoPanel.dataDir"), baseDirs.getAppDataFolder().toURI(), html); |
dirs = dirs + " ; " + SystemInfo.getLink(TM.tr(locale, "infoPanel.prefsDir"), baseDirs.getPreferencesFolder().toURI(), html); |
dirs = dirs + " ; " + SystemInfo.getLink(TM.tr(locale, "infoPanel.cacheDir"), baseDirs.getCacheFolder().toURI(), html); |
res.put(Info.DIRS, SystemInfo.getLink(TM.tr(locale, "infoPanel.docs"), conf.getWD().toURI(), html) + logs + dirs); |
String dirs = " ; " + SystemInfo.getLink(TM.tr("infoPanel.dataDir"), baseDirs.getAppDataFolder().toURI(), html); |
dirs = dirs + " ; " + SystemInfo.getLink(TM.tr("infoPanel.prefsDir"), baseDirs.getPreferencesFolder().toURI(), html); |
dirs = dirs + " ; " + SystemInfo.getLink(TM.tr("infoPanel.cacheDir"), baseDirs.getCacheFolder().toURI(), html); |
res.put(Info.DIRS, SystemInfo.getLink(TM.tr("infoPanel.docs"), conf.getWD().toURI(), html) + logs + dirs); |
} |
return res; |
107,33 → 106,31 |
private final FormLayouter l; |
public SoftwareInfoPanel(final Locale locale) { |
public SoftwareInfoPanel() { |
this.l = new FormLayouter(this, 1); |
this.refresh(locale); |
this.refresh(); |
} |
public final void refresh(final Locale locale) { |
public final void refresh() { |
this.l.clear(); |
final Map<Info, String> infos = get(true, locale); |
this.l.add(TM.tr(locale, "infoPanel.rights"), new JLabel(infos.get(Info.RIGHTS))); |
final Map<Info, String> infos = get(true); |
this.l.add(TM.tr("infoPanel.rights"), new JLabel(infos.get(Info.RIGHTS))); |
final String user = infos.get(Info.USER); |
if (user != null) { |
this.l.add(org.openconcerto.utils.i18n.TM.tr(locale, "user"), new JLabel(user)); |
this.l.add(org.openconcerto.utils.i18n.TM.tr("user"), new JLabel(user)); |
} |
this.l.add(TM.tr(locale, "infoPanel.appName"), new JLabel(infos.get(Info.APP_NAME))); |
this.l.add(TM.tr(locale, "infoPanel.version"), new JLabel(infos.get(Info.APP_VERSION))); |
this.l.add(TM.tr("infoPanel.appName"), new JLabel(infos.get(Info.APP_NAME))); |
this.l.add(TM.tr("infoPanel.version"), new JLabel(infos.get(Info.APP_VERSION))); |
final String secureLink = infos.get(Info.SECURE_LINK); |
if (secureLink != null) { |
this.l.add(TM.tr(locale, "infoPanel.secureLink"), new JLabel(secureLink)); |
this.l.add(TM.tr("infoPanel.secureLink"), new JLabel(secureLink)); |
} |
final JLabel dbURL = new JLabel(infos.get(Info.DB_URL)); |
if (dbURL != null) |
this.l.add(TM.tr(locale, "infoPanel.dbURL"), dbURL); |
this.l.add(TM.tr("infoPanel.dbURL"), dbURL); |
final String dirs = infos.get(Info.DIRS); |
if (dirs != null) |
this.l.add(TM.tr(locale, "infoPanel.dirs"), new HTMLTextField(dirs)); |
this.l.getComponent().revalidate(); |
this.l.add(TM.tr("infoPanel.dirs"), new HTMLTextField(dirs)); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/ui/InfoPanel.java |
---|
23,7 → 23,6 |
import java.awt.event.MouseAdapter; |
import java.awt.event.MouseEvent; |
import java.util.Arrays; |
import java.util.Locale; |
import javax.swing.JLabel; |
import javax.swing.JPanel; |
33,28 → 32,25 |
*/ |
public class InfoPanel extends JPanel { |
private final Locale locale; |
public InfoPanel(final Locale locale) { |
public InfoPanel() { |
super(new GridBagLayout()); |
this.locale = locale; |
final GridBagConstraints c = new DefaultGridBagConstraints(); |
c.weightx = 1; |
c.weighty = 1; |
this.add(createTitle("infoPanel.softwareTitle"), c); |
c.gridy++; |
this.add(new SoftwareInfoPanel(locale), c); |
this.add(new SoftwareInfoPanel(), c); |
c.gridy++; |
this.add(createTitle("infoPanel.systemTitle"), c); |
c.gridy++; |
this.add(new SystemInfoPanel(locale), c); |
this.add(new SystemInfoPanel(), c); |
} |
private JLabel createTitle(final String text) { |
final JLabel res = new JLabel(TM.tr(this.locale, text)); |
final JLabel res = new JLabel(TM.tr(text)); |
final Font font = res.getFont(); |
res.setFont(font.deriveFont(font.getSize2D() * 1.2f).deriveFont(Font.BOLD)); |
res.setToolTipText(TM.tr(this.locale, "infoPanel.refresh")); |
res.setToolTipText(TM.tr("infoPanel.refresh")); |
res.addMouseListener(new MouseAdapter() { |
@Override |
public void mouseClicked(MouseEvent e) { |
70,8 → 66,8 |
private final void refresh(final int index) { |
if (index < 0 || index == 1) |
((SoftwareInfoPanel) this.getComponent(1)).refresh(this.locale); |
((SoftwareInfoPanel) this.getComponent(1)).refresh(); |
if (index < 0 || index == 3) |
((SystemInfoPanel) this.getComponent(3)).refresh(this.locale); |
((SystemInfoPanel) this.getComponent(3)).refresh(); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/UserPropsTM.java |
---|
New file |
0,0 → 1,46 |
/* |
* 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.sql; |
import org.openconcerto.sql.preferences.UserProps; |
import java.beans.PropertyChangeEvent; |
import java.beans.PropertyChangeListener; |
/** |
* Translation manager, listen to locale of {@link UserProps} and load the corresponding bundle. |
* |
* @author Sylvain |
*/ |
public class UserPropsTM extends org.openconcerto.utils.i18n.TM { |
protected UserPropsTM() { |
} |
@Override |
protected void init() { |
final UserProps userProps = UserProps.getInstance(); |
userProps.addListener(UserProps.LOCALE, new PropertyChangeListener() { |
@Override |
public void propertyChange(PropertyChangeEvent evt) { |
updateLocale((UserProps) evt.getSource()); |
} |
}); |
updateLocale(userProps); |
} |
protected void updateLocale(final UserProps userProps) { |
this.setLocale(userProps.getLocale()); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/Configuration.java |
---|
40,7 → 40,6 |
import java.io.IOException; |
import java.io.StringReader; |
import java.util.List; |
import java.util.Locale; |
import java.util.concurrent.Executor; |
import java.util.concurrent.ExecutorService; |
import java.util.concurrent.Executors; |
209,10 → 208,6 |
return DBItemFileCache.getDescendant(getDBConfDir(), DBFileCache.getJDBCAncestorNames(db, true)); |
} |
public Locale getLocale() { |
return Locale.getDefault(); |
} |
/** |
* Add the directory of <code>o</code> to this. |
* |
/trunk/OpenConcerto/src/org/openconcerto/sql/request/BaseFillSQLRequest.java |
---|
14,6 → 14,7 |
package org.openconcerto.sql.request; |
import org.openconcerto.sql.FieldExpander; |
import org.openconcerto.sql.TM; |
import org.openconcerto.sql.model.FieldRef; |
import org.openconcerto.sql.model.IFieldPath; |
import org.openconcerto.sql.model.OrderComparator; |
613,9 → 614,7 |
if (type.getJavaType() == String.class) { |
return Collections.singletonList(selF.getFieldRef()); |
} else if (type.getJavaType() == Boolean.class) { |
final org.openconcerto.utils.i18n.TM utilsTM = org.openconcerto.utils.i18n.TM.getInstance(l); |
return Collections.singletonList( |
"case when " + selF.getFieldRef() + " then " + syntax.quoteString(utilsTM.translate("true_key")) + " else " + syntax.quoteString(utilsTM.translate("false_key")) + " end"); |
return Collections.singletonList("case when " + selF.getFieldRef() + " then " + syntax.quoteString(TM.tr("true_key")) + " else " + syntax.quoteString(TM.tr("false_key")) + " end"); |
} else if (Timestamp.class.isAssignableFrom(type.getJavaType())) { |
final String shortFmt = formatTime(selF, DateProp.SHORT_DATETIME_SKELETON, l, syntax); |
final String longFmt = formatTime(selF, DateProp.LONG_DATETIME_SKELETON, l, syntax); |
/trunk/OpenConcerto/src/org/openconcerto/sql/TM.java |
---|
14,7 → 14,6 |
package org.openconcerto.sql; |
import org.openconcerto.sql.preferences.UserProps; |
import org.openconcerto.utils.i18n.TMPool; |
import java.util.Locale; |
24,22 → 23,18 |
* |
* @author Sylvain |
*/ |
public class TM extends org.openconcerto.utils.i18n.TM { |
public class TM extends UserPropsTM { |
private static final TMPool<TM> POOL = new TMPool<TM>(TM::new); |
static private TM INSTANCE; |
// to be called as soon as UserProps has the correct Locale to initialize other translation |
// managers |
static public TM getInstance() { |
return getInstance(getDefaultLocale()); |
if (INSTANCE == null) |
INSTANCE = new TM(); |
return INSTANCE; |
} |
static public TM getInstance(final Locale l) { |
return POOL.get(l); |
} |
static public String tr(final Locale l, final String key, final Object... args) { |
return getInstance(l).translate(key, args); |
} |
// useful for static import |
static public TM getTM() { |
return getInstance(); |
49,7 → 44,14 |
return getInstance().translate(key, args); |
} |
private TM(final Locale l) { |
super(l); |
private TM() { |
} |
@Override |
protected void updateLocale(final UserProps userProps) { |
final Locale locale = userProps.getLocale(); |
this.setLocale(locale); |
org.openconcerto.utils.i18n.TM.getInstance().setLocale(locale); |
org.openconcerto.ui.TM.getInstance().setLocale(locale); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/model/SQLInsert.java |
---|
13,15 → 13,11 |
package org.openconcerto.sql.model; |
import org.openconcerto.sql.users.User; |
import java.io.IOException; |
import java.io.StringReader; |
import java.sql.Connection; |
import java.sql.SQLException; |
import java.sql.Timestamp; |
import java.util.ArrayList; |
import java.util.Collections; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
36,28 → 32,6 |
private List<Object> values = new ArrayList<>(); |
private SQLTable table; |
public void importValuesFrom(SQLRowAccessor row) { |
SQLField pk = row.getTable().getKey(); |
for (String field : row.getFields()) { |
final SQLField sqlField = row.getTable().getField(field); |
if (!pk.equals(sqlField)) { |
if (sqlField.isForeignKey()) { |
add(sqlField, row.getForeignIDNumber(field)); |
} else { |
add(sqlField, row.getObject(field)); |
} |
} |
} |
} |
public int getFieldsSize() { |
return this.fields.size(); |
} |
public List<SQLField> getFields() { |
return Collections.unmodifiableList(this.fields); |
} |
public void add(SQLField field, Object value) { |
if (this.table == null) { |
this.table = field.getTable(); |
66,10 → 40,6 |
throw new IllegalArgumentException(field + " is not in table " + this.table.toString()); |
} |
} |
int index = this.fields.indexOf(field); |
if (index >= 0) { |
throw new IllegalArgumentException(field + " field already in list"); |
} |
this.fields.add(field); |
this.values.add(value); |
} |
89,23 → 59,6 |
this.values.set(index, value); |
} |
public void addCreationTrackedField(User u, SQLTable table) { |
Timestamp now = new Timestamp(System.currentTimeMillis()); |
final SQLField creationDateField = table.getCreationDateField(); |
final SQLField creationUserField = table.getCreationUserField(); |
if (creationDateField != null && creationUserField != null) { |
add(creationDateField, now); |
add(creationUserField, u.getId()); |
} |
final SQLField modifDateField = table.getModifDateField(); |
final SQLField modifUserField = table.getModifUserField(); |
if (modifDateField != null && modifUserField != null) { |
add(modifDateField, now); |
add(modifUserField, u.getId()); |
} |
} |
public boolean contains(SQLField field) { |
return this.fields.indexOf(field) >= 0; |
} |
142,15 → 95,11 |
final SQLField field = this.fields.get(i); |
final Class<?> javaType = field.getType().getJavaType(); |
Object str = value; |
if (value != null) { |
if (!javaType.isInstance(value)) { |
if (value != null && !javaType.isInstance(value)) { |
str = SQLRowValues.convert(value.getClass(), value, javaType); |
} |
builder.append(field.getType().toString(str)); |
} else { |
builder.append("null"); |
} |
if (i < stop - 1) { |
builder.append(','); |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/model/SQLInjector.java |
---|
25,12 → 25,9 |
import org.openconcerto.utils.cc.ITransformer; |
import java.sql.SQLException; |
import java.text.DateFormat; |
import java.text.SimpleDateFormat; |
import java.util.ArrayList; |
import java.util.Arrays; |
import java.util.HashMap; |
import java.util.HashSet; |
import java.util.List; |
import java.util.Map; |
import java.util.Set; |
189,8 → 186,6 |
} |
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); |
protected void transfertNumberReference(SQLRowAccessor srcRow, SQLRowValues rowVals, final SQLTable tableElementDestination, String refField) { |
SQLPreferences prefs = SQLPreferences.getMemCached(srcRow.getTable().getDBRoot()); |
197,27 → 192,14 |
if (prefs.getBoolean("TransfertRef", true)) { |
String label = rowVals.getString("NOM"); |
if (label != null && label.trim().length() > 0) { |
final String value = label + ", " + srcRow.getString("NUMERO"); |
List<String> l = StringUtils.fastSplit(value, ','); |
Set<String> s = new HashSet<>(l); |
String nom = ""; |
if (s.size() > 1) { |
for (String string : s) { |
nom += string + ","; |
} |
} else if (s.size() == 1) { |
nom = s.iterator().next(); |
} |
rowVals.put("NOM", nom); |
rowVals.put("NOM", label + ", " + srcRow.getString("NUMERO")); |
} else { |
rowVals.put("NOM", srcRow.getString("NUMERO")); |
} |
} else if (prefs.getBoolean("TransfertMultiRef", false)) { |
SQLRowValues rowValsHeader = new SQLRowValues(UndefinedRowValuesCache.getInstance().getDefaultRowValues(tableElementDestination)); |
// FIXME Style forcé en titre 1 via l'ID |
rowValsHeader.put("ID_STYLE", 3); |
String elementName = StringUtils.firstUp(Configuration.getInstance().getDirectory().getElement(getSource()).getName().getVariant(org.openconcerto.utils.i18n.Grammar.SINGULAR)); |
rowValsHeader.put("NOM", elementName + "\n N° " + srcRow.getString("NUMERO") + " du " + dateFormat.format(srcRow.getDate("DATE").getTime())); |
rowValsHeader.put("NOM", elementName + " N° " + srcRow.getString("NUMERO")); |
rowValsHeader.put(refField, rowVals); |
} |
} |
/trunk/OpenConcerto/src/org/openconcerto/sql/model/SQLTable.java |
---|
123,7 → 123,6 |
@SuppressWarnings("unchecked") |
public static final Map<String, Number> getUndefIDs(final SQLSchema schema) { |
assert Thread.holdsLock(UNDEFINED_IDs); |
if (!UNDEFINED_IDs.containsKey(schema)) { |
final Map<String, Number> r; |
if (schema.contains(undefTable)) { |
165,14 → 164,6 |
} |
} |
public static final Map<String, Number> getUndefinedIDs(final SQLSchema schema) { |
final Map<String, Number> res; |
synchronized (UNDEFINED_IDs) { |
res = new HashMap<>(getUndefIDs(schema)); |
} |
return Collections.unmodifiableMap(res); |
} |
private static final SQLCreateMoveableTable getCreateUndefTable(SQLSyntax syntax) { |
final SQLCreateMoveableTable createTable = new SQLCreateMoveableTable(syntax, undefTable); |
createTable.addVarCharColumn(UNDEF_TABLE_TABLENAME_FIELD, 250); |
/trunk/OpenConcerto/src/org/openconcerto/sql/model/SQLUpdate.java |
---|
27,20 → 27,6 |
this.where = where; |
} |
public void importValuesFrom(SQLRowAccessor row) { |
SQLField pk = row.getTable().getKey(); |
for (String field : row.getFields()) { |
final SQLField sqlField = row.getTable().getField(field); |
if (!pk.equals(sqlField)) { |
if (sqlField.isForeignKey()) { |
add(sqlField, row.getForeignIDNumber(field)); |
} else { |
add(sqlField, row.getObject(field)); |
} |
} |
} |
} |
public void add(SQLField field, Object value) { |
if (this.table == null) { |
this.table = field.getTable(); |
98,14 → 84,10 |
Object value = this.values.get(i); |
final Class<?> javaType = field.getType().getJavaType(); |
Object str = value; |
if (value != null) { |
if (!javaType.isInstance(value)) { |
str = SQLRowValues.convert(value.getClass(), value, javaType); |
} |
builder.append(field.getType().toString(str)); |
} else { |
builder.append("null"); |
} |
if (i < stop - 1) { |
builder.append(','); |
} |
/trunk/OpenConcerto/src/org/openconcerto/utils/net/HTTPClient.java |
---|
File deleted |
/trunk/OpenConcerto/src/org/openconcerto/utils/NetUtils.java |
---|
17,21 → 17,15 |
import java.io.IOException; |
import java.io.InputStream; |
import java.io.OutputStream; |
import java.io.UnsupportedEncodingException; |
import java.net.InetAddress; |
import java.net.NetworkInterface; |
import java.net.ServerSocket; |
import java.net.SocketException; |
import java.net.URL; |
import java.net.URLEncoder; |
import java.nio.charset.StandardCharsets; |
import java.security.KeyManagementException; |
import java.security.NoSuchAlgorithmException; |
import java.security.cert.X509Certificate; |
import java.util.Enumeration; |
import java.util.LinkedHashMap; |
import java.util.Map; |
import java.util.Map.Entry; |
import javax.net.ssl.HostnameVerifier; |
import javax.net.ssl.HttpsURLConnection; |
184,41 → 178,6 |
return content; |
} |
static public final String urlEncode(final String... kv) { |
final int size = kv.length; |
if (size % 2 != 0) |
throw new IllegalArgumentException("Odd number of items : " + size); |
final LinkedHashMap<String, Object> map = new LinkedHashMap<>(size / 2, 1); |
for (int i = 0; i < size; i += 2) { |
map.put(kv[i], kv[i + 1]); |
} |
return urlEncode(map); |
} |
static public final String urlEncode(final Map<String, ?> map) { |
if (map.isEmpty()) |
return ""; |
final String charset = StandardCharsets.UTF_8.name(); |
final StringBuilder sb = new StringBuilder(256); |
for (final Entry<String, ?> e : map.entrySet()) { |
final Object value = e.getValue(); |
// Avoid null and "null" confusion. |
if (value != null) { |
try { |
sb.append(URLEncoder.encode(e.getKey(), charset)); |
sb.append('='); |
sb.append(URLEncoder.encode(String.valueOf(value), charset)); |
sb.append('&'); |
} catch (UnsupportedEncodingException exn) { |
throw new IllegalStateException("UTF-8 should be standard", exn); |
} |
} |
} |
// remove last '&' |
sb.setLength(sb.length() - 1); |
return sb.toString(); |
} |
// Create a trust manager that does not validate certificate chains |
static private final TrustM |