This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit d05e5843209c58054114a2cefa7c11ab1bf2c4d5 Author: jcouteau <couteau@codelutin.com> Date: Fri Jun 8 17:17:24 2018 +0200 refs #9951 - Modifier la calculatrice Need borders Need testing --- .../faxtomail/beans/QuantitiesByRange.java | 25 ++-- .../persistence/entities/EmailTopiaDao.java | 155 ++++++++++++++++++++- .../services/service/EmailServiceTest.java | 4 +- .../swing/content/demande/QuantitiesByRangeUI.css | 22 ++- .../swing/content/demande/QuantitiesByRangeUI.jaxx | 9 +- .../demande/QuantitiesByRangeUIHandler.java | 109 +++++++++++++-- .../content/demande/QuantitiesByRangeUIModel.java | 36 ++++- .../actions/ComputeQuantitiesByRangeAction.java | 65 ++++++--- .../content/demande/actions/SaveDemandeAction.java | 4 +- .../i18n/faxtomail-ui-swing_fr_FR.properties | 6 +- 10 files changed, 379 insertions(+), 56 deletions(-) diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/beans/QuantitiesByRange.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/beans/QuantitiesByRange.java index e1bca539..85d747b3 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/beans/QuantitiesByRange.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/beans/QuantitiesByRange.java @@ -36,34 +36,41 @@ import java.util.Map; */ public class QuantitiesByRange implements Serializable { - private final ImmutableMap<Range, Quantities> quantitiesByRange; + private final ImmutableMap<Range, Quantities> inProgressQuantitiesByRange; + private final ImmutableMap<Range, Quantities> waitingQuantitiesByRange; private final Quantities inProgressDemandsQuantities; - private final Quantities otherDemandsQuantities; + private final Quantities waitingQuantities; private final Quantities totalQuantities; - public QuantitiesByRange(Map<Range, Quantities> quantitiesByRange, + public QuantitiesByRange(Map<Range, Quantities> inProgressQuantitiesByRange, Quantities inProgressDemandsQuantities, + Map<Range, Quantities> waitingQuantitiesByRange, Quantities otherDemandsQuantities, Quantities totalQuantities) { - this.quantitiesByRange = ImmutableMap.copyOf(quantitiesByRange); + this.inProgressQuantitiesByRange = ImmutableMap.copyOf(inProgressQuantitiesByRange); this.inProgressDemandsQuantities = inProgressDemandsQuantities; - this.otherDemandsQuantities = otherDemandsQuantities; + this.waitingQuantitiesByRange = ImmutableMap.copyOf(waitingQuantitiesByRange); + this.waitingQuantities = otherDemandsQuantities; this.totalQuantities = totalQuantities; } - public Map<Range, Quantities> getQuantitiesByRange() { - return quantitiesByRange; + public Map<Range, Quantities> getInProgressQuantitiesByRange() { + return inProgressQuantitiesByRange; + } + + public Map<Range, Quantities> getWaitingQuantitiesByRange() { + return waitingQuantitiesByRange; } public Quantities getInProgressDemandsQuantities() { return inProgressDemandsQuantities; } - public Quantities getOtherDemandsQuantities() { - return otherDemandsQuantities; + public Quantities getWaitingQuantities() { + return waitingQuantities; } public Quantities getTotalQuantities() { diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java index b0c4231b..11cf37a6 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java @@ -1069,7 +1069,7 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { public QuantitiesByRange computeQuantitiesByRange(List<MailFolder> folders, boolean computeQuantitiesSubtotalsByState) { - String allRangesQuery = "SELECT DISTINCT range" + + /*String allRangesQuery = "SELECT DISTINCT range" + " FROM " + Email.class.getName() + " AS email " + " INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + " INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range" + @@ -1201,9 +1201,160 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { otherDemandsQuantities = new Quantities(productOtherDemandsQuantity, savOtherDemandsQuantity, quotationOtherDemandsQuantity); + } */ + + //compute inProgressQuantitiesByRange + //compute inProgressQuantitiesSubtotal + //correspond aux lignes sans état d'attente + String allInProgressRangesQuery = "SELECT DISTINCT range" + + " FROM " + Email.class.getName() + " AS email " + + " INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + + " INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range" + + " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " IN :folders" + + " AND email." + Email.PROPERTY_WAITING_STATE + " IS NULL"; + + Map<String, Object> args = new HashMap<>(); + args.put("folders", folders); + List<Range> inProgressAllRanges = findAll(allInProgressRangesQuery, args); + Map<String, Range> allInProgressRangesById = Maps.uniqueIndex(inProgressAllRanges, TopiaEntities.getTopiaIdFunction()); + + // this has been modified from + // SELECT range + // to + // SELECT range.topiaId + // do to bug https://hibernate.atlassian.net/browse/HHH-1615 that can be reproduced + // on sql server + + String inProgressQuantitiesByRangeQuery = "SELECT range." + Range.PROPERTY_TOPIA_ID + "," + + " SUM(rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY + ") AS prodQ," + + " SUM(rangeRow." + RangeRow.PROPERTY_SAV_QUANTITY + ") AS savQ," + + " SUM(rangeRow." + RangeRow.PROPERTY_QUOTATION_QUANTITY + ") AS quotQ" + + " FROM " + Email.class.getName() + " AS email " + + " INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + + " INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range" + + " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " IN :folders" + + " AND email." + Email.PROPERTY_WAITING_STATE + " IS NULL" + + " GROUP BY range"; + + args = new HashMap<>(); + args.put("folders", folders); + + Map<Range, Quantities> inProgressQuantitiesByRange = new TreeMap<>(new Comparator<Range>() { + @Override + public int compare(Range o1, Range o2) { + return o1.getLabel().compareTo(o2.getLabel()); + } + }); + Long inProgressProductTotalQuantity = 0L; + Long inProgressSavTotalQuantity = 0L; + Long inProgressQuotationTotalQuantity = 0L; + + List<Object[]> inProgressQueryResuts = findAll(inProgressQuantitiesByRangeQuery, args); + for (Object[] queryResut : inProgressQueryResuts) { + Range range = allInProgressRangesById.get(String.valueOf(queryResut[0])); + + Long productQuantity = (Long) queryResut[1]; + if (productQuantity != null) { + inProgressProductTotalQuantity += productQuantity; + } + + Long savQuantity = (Long) queryResut[2]; + if (savQuantity != null) { + inProgressSavTotalQuantity += savQuantity; + } + + Long quotationQuantity = (Long) queryResut[3]; + if (quotationQuantity != null) { + inProgressQuotationTotalQuantity += quotationQuantity; + } + + Quantities quantities = new Quantities(productQuantity, savQuantity, quotationQuantity); + inProgressQuantitiesByRange.put(range, quantities); + } + + Quantities inProgressTotalQuantities = new Quantities(inProgressProductTotalQuantity, inProgressSavTotalQuantity, inProgressQuotationTotalQuantity); + + //compute waitingQuantitiesByRange + //compute waitingQuantitiesSubtotal + //correspond aux lignes "avec état d'attente" + String allWaitingRangesQuery = "SELECT DISTINCT range" + + " FROM " + Email.class.getName() + " AS email " + + " INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + + " INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range" + + " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " IN :folders" + + " AND email." + Email.PROPERTY_WAITING_STATE + " IS NOT NULL"; + + args = new HashMap<>(); + args.put("folders", folders); + List<Range> waitingAllRanges = findAll(allWaitingRangesQuery, args); + Map<String, Range> allWaitingRangesById = Maps.uniqueIndex(waitingAllRanges, TopiaEntities.getTopiaIdFunction()); + + // this has been modified from + // SELECT range + // to + // SELECT range.topiaId + // do to bug https://hibernate.atlassian.net/browse/HHH-1615 that can be reproduced + // on sql server + + String waitingQuantitiesByRangeQuery = "SELECT range." + Range.PROPERTY_TOPIA_ID + "," + + " SUM(rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY + ") AS prodQ," + + " SUM(rangeRow." + RangeRow.PROPERTY_SAV_QUANTITY + ") AS savQ," + + " SUM(rangeRow." + RangeRow.PROPERTY_QUOTATION_QUANTITY + ") AS quotQ" + + " FROM " + Email.class.getName() + " AS email " + + " INNER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + + " INNER JOIN rangeRow." + RangeRow.PROPERTY_RANGE + " AS range" + + " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " IN :folders" + + // " AND email." + Email.PROPERTY_TAKEN_BY + " IS NOT NULL" + + " AND email." + Email.PROPERTY_WAITING_STATE + " IS NOT NULL" + + " GROUP BY range"; + + args = new HashMap<>(); + args.put("folders", folders); + + Map<Range, Quantities> waitingQuantitiesByRange = new TreeMap<>(new Comparator<Range>() { + @Override + public int compare(Range o1, Range o2) { + return o1.getLabel().compareTo(o2.getLabel()); + } + }); + Long waitingProductTotalQuantity = 0L; + Long waitingSavTotalQuantity = 0L; + Long waitingQuotationTotalQuantity = 0L; + + List<Object[]> waitingQueryResuts = findAll(waitingQuantitiesByRangeQuery, args); + for (Object[] queryResut : waitingQueryResuts) { + Range range = allWaitingRangesById.get(String.valueOf(queryResut[0])); + + Long productQuantity = (Long) queryResut[1]; + if (productQuantity != null) { + waitingProductTotalQuantity += productQuantity; + } + + Long savQuantity = (Long) queryResut[2]; + if (savQuantity != null) { + waitingSavTotalQuantity += savQuantity; + } + + Long quotationQuantity = (Long) queryResut[3]; + if (quotationQuantity != null) { + waitingQuotationTotalQuantity += quotationQuantity; + } + + Quantities quantities = new Quantities(productQuantity, savQuantity, quotationQuantity); + waitingQuantitiesByRange.put(range, quantities); } - return new QuantitiesByRange(quantitiesByRange, inProgressDemandsQuantities, otherDemandsQuantities, totalQuantities); + Quantities waitingTotalQuantities = new Quantities(waitingProductTotalQuantity, waitingSavTotalQuantity, waitingQuotationTotalQuantity); + + //compute totalQuantities + Long productTotalQuantity = waitingProductTotalQuantity + inProgressProductTotalQuantity; + Long savTotalQuantity = waitingSavTotalQuantity + inProgressSavTotalQuantity; + Long quotationTotalQuantity = waitingQuotationTotalQuantity + inProgressQuotationTotalQuantity; + + Quantities totalQuantities = new Quantities(productTotalQuantity, savTotalQuantity, quotationTotalQuantity); + + + return new QuantitiesByRange(inProgressQuantitiesByRange, inProgressTotalQuantities, waitingQuantitiesByRange ,waitingTotalQuantities, totalQuantities); } /* diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java index 8d0d64f5..071ddc25 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java @@ -225,10 +225,10 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { MailFolder cyril = mailFolderDao.forNameEquals("Cyril").findUnique(); QuantitiesByRange quantitiesByRange = service.computeQuantitiesByRange(cyril); - Assert.assertEquals(4, quantitiesByRange.getQuantitiesByRange().size()); + Assert.assertEquals(4, quantitiesByRange.getInProgressQuantitiesByRange().size()); // recupere la premiere lignes - Entry<Range, Quantities> entry = quantitiesByRange.getQuantitiesByRange().entrySet().iterator().next(); + Entry<Range, Quantities> entry = quantitiesByRange.getInProgressQuantitiesByRange().entrySet().iterator().next(); Assert.assertEquals("Bas de gamme", entry.getKey().getLabel()); Assert.assertEquals(500, entry.getValue().getProductQuantity().longValue()); Assert.assertEquals(600, entry.getValue().getSavQuantity().longValue()); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css index 6135a67d..b90c4d42 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css @@ -21,10 +21,30 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -#rangeTable { +#enCoursRangeTable { + editable: false; +} + +#enAttenteRangeTable { + editable: false; +} + +#totalsRangeTable { editable: false; } #okButton { text: "faxtomail.quantitiesByRange.button.text"; } + +#enCoursRangeLabel { + text: "faxtomail.rangeRows.quantities.inProgress.label"; +} + +#enAttenteRangeLabel { + text: "faxtomail.rangeRows.quantities.waiting.label"; +} + +#totalsRangeLabel { + text: "faxtomail.rangeRows.quantities.totals.label"; +} diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx index 40980ac9..b35d2fe4 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx @@ -43,7 +43,14 @@ initializer='getContextValue(QuantitiesByRangeUIModel.class)'/> <JScrollPane constraints='BorderLayout.CENTER'> - <JXTable id='rangeTable'/> + <JPanel layout='{new GridLayout(3, 2)}'> + <JLabel id='enCoursRangeLabel'/> + <JXTable id='enCoursRangeTable'/> + <JLabel id='enAttenteRangeLabel'/> + <JXTable id='enAttenteRangeTable'/> + <JLabel id='totalsRangeLabel'/> + <JXTable id='totalsRangeTable'/> + </JPanel> </JScrollPane> <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java index 042d212b..39d1a35b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java @@ -43,7 +43,11 @@ import java.util.List; */ public class QuantitiesByRangeUIHandler extends AbstractFaxToMailUIHandler<QuantitiesByRangeUIModel, QuantitiesByRangeUI> implements Cancelable { - protected RangeTableModel rangeTableModel; + protected RangeTableModel enCoursRangeTableModel; + protected RangeTableModel enAttenteRangeTableModel; + protected RangeTableModel totalsRangeTableModel; + + //should have 2 models, one for each table, possible ? @Override public void beforeInit(QuantitiesByRangeUI ui) { @@ -58,7 +62,7 @@ public class QuantitiesByRangeUIHandler extends AbstractFaxToMailUIHandler<Quant public void afterInit(QuantitiesByRangeUI quantitiesByRangeUI) { initUI(quantitiesByRangeUI); - final JXTable table = ui.getRangeTable(); + final JXTable enCoursRangeTable = ui.getEnCoursRangeTable(); TableColumnModelExt columnModel = new DefaultTableColumnModelExt(); addColumnToModel(columnModel, @@ -68,29 +72,99 @@ public class QuantitiesByRangeUIHandler extends AbstractFaxToMailUIHandler<Quant addIntegerColumnToModel(columnModel, RangeTableModel.QUOTATION_QUANTITY_COLUMN, null, - table); + enCoursRangeTable); addIntegerColumnToModel(columnModel, RangeTableModel.PRODUCT_QUANTITY_COLUMN, null, - table); + enCoursRangeTable); addIntegerColumnToModel(columnModel, RangeTableModel.SAV_QUANTITY_COLUMN, null, - table); + enCoursRangeTable); - rangeTableModel = new RangeTableModel(columnModel); - rangeTableModel.setRows(getModel().getRangeRows()); - table.setModel(rangeTableModel); - table.setColumnModel(columnModel); - table.getTableHeader().setReorderingAllowed(false); + enCoursRangeTableModel = new RangeTableModel(columnModel); + enCoursRangeTableModel.setRows(getModel().getEnCoursRangeRows()); + enCoursRangeTable.setModel(enCoursRangeTableModel); + enCoursRangeTable.setColumnModel(columnModel); + enCoursRangeTable.getTableHeader().setReorderingAllowed(false); - getModel().addPropertyChangeListener(QuantitiesByRangeUIModel.PROPERTY_RANGE_ROWS, + getModel().addPropertyChangeListener(QuantitiesByRangeUIModel.PROPERTY_ENCOURS_RANGE_ROWS, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - setRangeRows((List<RangeRowModel>) evt.getNewValue()); + setEnCoursRangeRows((List<RangeRowModel>) evt.getNewValue()); } }); + + final JXTable enAttenteRangeTable = ui.getEnAttenteRangeTable(); + + TableColumnModelExt enAttenteColumnModel = new DefaultTableColumnModelExt(); + addColumnToModel(enAttenteColumnModel, + null, + newTableCellRender(Range.class), + RangeTableModel.RANGE_COLUMN); + addIntegerColumnToModel(enAttenteColumnModel, + RangeTableModel.QUOTATION_QUANTITY_COLUMN, + null, + enAttenteRangeTable); + addIntegerColumnToModel(enAttenteColumnModel, + RangeTableModel.PRODUCT_QUANTITY_COLUMN, + null, + enAttenteRangeTable); + addIntegerColumnToModel(enAttenteColumnModel, + RangeTableModel.SAV_QUANTITY_COLUMN, + null, + enAttenteRangeTable); + + enAttenteRangeTableModel = new RangeTableModel(enAttenteColumnModel); + enAttenteRangeTableModel.setRows(getModel().getEnAttenteRangeRows()); + enAttenteRangeTable.setModel(enAttenteRangeTableModel); + enAttenteRangeTable.setColumnModel(enAttenteColumnModel); + enAttenteRangeTable.getTableHeader().setReorderingAllowed(false); + + getModel().addPropertyChangeListener(QuantitiesByRangeUIModel.PROPERTY_ENATTENTE_RANGE_ROWS, + new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + setEnAttenteRangeRows((List<RangeRowModel>) evt.getNewValue()); + } + }); + + + + final JXTable totalsRangeTable = ui.getTotalsRangeTable(); + + TableColumnModelExt totalsColumnModel = new DefaultTableColumnModelExt(); + addColumnToModel(totalsColumnModel, + null, + newTableCellRender(Range.class), + RangeTableModel.RANGE_COLUMN); + addIntegerColumnToModel(totalsColumnModel, + RangeTableModel.QUOTATION_QUANTITY_COLUMN, + null, + totalsRangeTable); + addIntegerColumnToModel(totalsColumnModel, + RangeTableModel.PRODUCT_QUANTITY_COLUMN, + null, + totalsRangeTable); + addIntegerColumnToModel(totalsColumnModel, + RangeTableModel.SAV_QUANTITY_COLUMN, + null, + totalsRangeTable); + + totalsRangeTableModel = new RangeTableModel(totalsColumnModel); + totalsRangeTableModel.setRows(getModel().getTotalsRangeRows()); + totalsRangeTable.setModel(totalsRangeTableModel); + totalsRangeTable.setColumnModel(totalsColumnModel); + totalsRangeTable.getTableHeader().setReorderingAllowed(false); + + getModel().addPropertyChangeListener(QuantitiesByRangeUIModel.PROPERTY_TOTALS_RANGE_ROWS, + new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + setTotalsRangeRows((List<RangeRowModel>) evt.getNewValue()); + } + }); } @Override @@ -113,7 +187,14 @@ public class QuantitiesByRangeUIHandler extends AbstractFaxToMailUIHandler<Quant closeDialog(); } - public void setRangeRows(List<RangeRowModel> rows) { - rangeTableModel.setRows(rows); + public void setEnCoursRangeRows(List<RangeRowModel> rows) { + enCoursRangeTableModel.setRows(rows); + } + + public void setEnAttenteRangeRows(List<RangeRowModel> rows) { + enAttenteRangeTableModel.setRows(rows); + } + public void setTotalsRangeRows(List<RangeRowModel> rows) { + totalsRangeTableModel.setRows(rows); } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java index f15a0415..0b07bd8b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java @@ -38,11 +38,15 @@ import java.util.List; public class QuantitiesByRangeUIModel extends AbstractBean { public static final String PROPERTY_ROOT_FOLDER = "rootFolder"; - public static final String PROPERTY_RANGE_ROWS = "rangeRows"; + public static final String PROPERTY_ENCOURS_RANGE_ROWS = "enCoursRangeRows"; + public static final String PROPERTY_ENATTENTE_RANGE_ROWS = "enAttenteRangeRows"; + public static final String PROPERTY_TOTALS_RANGE_ROWS = "totalsRangeRows"; protected MailFolder rootFolder; - protected List<RangeRowModel> rangeRows = new ArrayList<RangeRowModel>(); + protected List<RangeRowModel> enCoursRangeRows = new ArrayList<>(); + protected List<RangeRowModel> enAttenteRangeRows = new ArrayList<>(); + protected List<RangeRowModel> totalsRangeRows = new ArrayList<>(); public MailFolder getRootFolder() { return rootFolder; @@ -54,12 +58,30 @@ public class QuantitiesByRangeUIModel extends AbstractBean { firePropertyChange(PROPERTY_ROOT_FOLDER, oldValue, rootFolder); } - public List<RangeRowModel> getRangeRows() { - return rangeRows; + public List<RangeRowModel> getEnCoursRangeRows() { + return enCoursRangeRows; } - public void setRangeRows(Collection<RangeRowModel> rangeRows) { - this.rangeRows = new ArrayList<RangeRowModel>(rangeRows); - firePropertyChange(PROPERTY_RANGE_ROWS, null, this.rangeRows); + public void setEnCoursRangeRows(Collection<RangeRowModel> rangeRows) { + this.enCoursRangeRows = new ArrayList<>(rangeRows); + firePropertyChange(PROPERTY_ENCOURS_RANGE_ROWS, null, this.enCoursRangeRows); + } + + public List<RangeRowModel> getEnAttenteRangeRows() { + return enAttenteRangeRows; + } + + public void setEnAttenteRangeRows(Collection<RangeRowModel> rangeRows) { + this.enAttenteRangeRows = new ArrayList<>(rangeRows); + firePropertyChange(PROPERTY_ENATTENTE_RANGE_ROWS, null, this.enAttenteRangeRows); + } + + public List<RangeRowModel> getTotalsRangeRows() { + return totalsRangeRows; + } + + public void setTotalsRangeRows(Collection<RangeRowModel> rangeRows) { + this.totalsRangeRows = new ArrayList<>(rangeRows); + firePropertyChange(PROPERTY_TOTALS_RANGE_ROWS, null, this.totalsRangeRows); } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java index b2cc0aab..3c47dc23 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ComputeQuantitiesByRangeAction.java @@ -62,13 +62,14 @@ public class ComputeQuantitiesByRangeAction extends AbstractFaxToMailAction<Quan FaxToMailServiceContext serviceContext = getContext().newServiceContext(); QuantitiesByRange quantitiesByRange = serviceContext.getEmailService().computeQuantitiesByRange(folder); - List<RangeRowModel> rangeRows = new ArrayList<>(); - Map<Range, Quantities> quantitiesByRangeMap = quantitiesByRange.getQuantitiesByRange(); - for (Range range : quantitiesByRangeMap.keySet()) { + //inProgress demands Model building + List<RangeRowModel> inProgressRangeRows = new ArrayList<>(); + Map<Range, Quantities> inProgressQuantitiesByRangeMap = quantitiesByRange.getInProgressQuantitiesByRange(); + for (Range range : inProgressQuantitiesByRangeMap.keySet()) { RangeRowModel row = new RangeRowModel(); row.setRange(range); - Quantities quantities = quantitiesByRangeMap.get(range); + Quantities quantities = inProgressQuantitiesByRangeMap.get(range); Long productQuantity = quantities.getProductQuantity(); if (productQuantity == null) { @@ -88,29 +89,61 @@ public class ComputeQuantitiesByRangeAction extends AbstractFaxToMailAction<Quan } row.setQuotationQuantity(quotationQuantity.intValue()); - rangeRows.add(row); + inProgressRangeRows.add(row); } Quantities inProgressDemandsQuantities = quantitiesByRange.getInProgressDemandsQuantities(); if (inProgressDemandsQuantities != null) { RangeRowModel inProgressRow = createRangeRowModelForQuantities(inProgressDemandsQuantities, - t("faxtomail.rangeRows.quantities.inProgress.label")); - rangeRows.add(inProgressRow); + t("faxtomail.rangeRows.quantities.subtotal.label")); + inProgressRangeRows.add(inProgressRow); } - Quantities otherDemandsQuantities = quantitiesByRange.getOtherDemandsQuantities(); - if (otherDemandsQuantities != null) { - RangeRowModel otherDemandsRow = createRangeRowModelForQuantities(otherDemandsQuantities, - t("faxtomail.rangeRows.quantities.otherDemands.label")); - rangeRows.add(otherDemandsRow); + //waiting demands Model building + List<RangeRowModel> waitingRangeRows = new ArrayList<>(); + Map<Range, Quantities> waitingQuantitiesByRangeMap = quantitiesByRange.getWaitingQuantitiesByRange(); + for (Range range : waitingQuantitiesByRangeMap.keySet()) { + RangeRowModel row = new RangeRowModel(); + row.setRange(range); + + Quantities quantities = waitingQuantitiesByRangeMap.get(range); + + Long productQuantity = quantities.getProductQuantity(); + if (productQuantity == null) { + productQuantity = 0L; + } + row.setProductQuantity(productQuantity.intValue()); + + Long savQuantity = quantities.getSavQuantity(); + if (savQuantity == null) { + savQuantity = 0L; + } + row.setSavQuantity(savQuantity.intValue()); + + Long quotationQuantity = quantities.getQuotationQuantity(); + if (quotationQuantity == null) { + quotationQuantity = 0L; + } + row.setQuotationQuantity(quotationQuantity.intValue()); + + waitingRangeRows.add(row); + } + + Quantities waitingDemandsQuantities = quantitiesByRange.getWaitingQuantities(); + if (waitingDemandsQuantities != null) { + RangeRowModel waitingRow = createRangeRowModelForQuantities(waitingDemandsQuantities, + t("faxtomail.rangeRows.quantities.subtotal.label")); + waitingRangeRows.add(waitingRow); } + RangeRowModel totalRow = createRangeRowModelForQuantities(quantitiesByRange.getTotalQuantities(),""); + List<RangeRowModel> totalRangeRows = new ArrayList<>(); + totalRangeRows.add(totalRow); - RangeRowModel totalRow = createRangeRowModelForQuantities(quantitiesByRange.getTotalQuantities(), - t("faxtomail.rangeRows.quantities.totals.label")); - rangeRows.add(totalRow); + getModel().setEnCoursRangeRows(inProgressRangeRows); + getModel().setEnAttenteRangeRows(waitingRangeRows); + getModel().setTotalsRangeRows(totalRangeRows); - getModel().setRangeRows(rangeRows); } protected RangeRowModel createRangeRowModelForQuantities(Quantities quantities, String label) { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeAction.java index ae1fe1b5..7005a1c3 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/SaveDemandeAction.java @@ -161,8 +161,8 @@ public class SaveDemandeAction extends AbstractFaxToMailAction<DemandeUIModel, D // // // reset the range rows of the model //// BeanMonitor monitor = getHandler().getMonitor(); -//// List<RangeRow> rangeRows = (List<RangeRow>) monitor.getOriginalValues().get(Email.PROPERTY_RANGE_ROW); -//// model.setRangeRow(rangeRows); +//// List<RangeRow> enCoursRangeRows = (List<RangeRow>) monitor.getOriginalValues().get(Email.PROPERTY_RANGE_ROW); +//// model.setRangeRow(enCoursRangeRows); // } // } } diff --git a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties index 138bfb71..a5ca4267 100644 --- a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties +++ b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties @@ -283,9 +283,10 @@ faxtomail.print.jobName=Demandes faxtomail.print.success.message=%s fichiers ont été imprimés faxtomail.quantitiesByRange.button.text=OK faxtomail.quantitiesByRange.title=Quantités par gamme -faxtomail.rangeRows.quantities.inProgress.label=Pris par -faxtomail.rangeRows.quantities.otherDemands.label=État d'attente +faxtomail.rangeRows.quantities.inProgress.label=En cours +faxtomail.rangeRows.quantities.subtotal.label=Sous-total faxtomail.rangeRows.quantities.totals.label=Totaux +faxtomail.rangeRows.quantities.waiting.label=En attente faxtomail.rangeRows.table.header.commandNumber=N° commande / devis faxtomail.rangeRows.table.header.commandNumber.tip=N° commande / devis faxtomail.rangeRows.table.header.productColumn=Qté produits @@ -377,6 +378,7 @@ faxtomail.validator.error.reply.to.email=Le champ 'A\:' doit être une adresse e faxtomail.validator.error.reply.to.required=Le champ 'A\:' est requis \! faxtomail.validator.error.signingSettings.name.required= faxtomail.validator.error.signingSettings.text.required= +ffaxtomail.rangeRows.quantities.waiting.label= jaxx.application.common.askCancelEditBeforeLeaving.title= jaxx.application.common.askSaveBeforeLeaving.title= jaxx.application.error.cannot.mail=Erreur lors de l'ouverture du client mail -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.