Author: bleny Date: 2013-07-25 13:25:55 +0200 (Thu, 25 Jul 2013) New Revision: 336 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: refs #2942 trying to prevent bad confirmation calculation Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java trunk/magalie-web/src/main/webapp/js/withdraw-item-input.js Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-07-25 10:02:34 UTC (rev 335) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-07-25 11:25:55 UTC (rev 336) @@ -184,6 +184,16 @@ @Override public String execute() { + if (confirmation.getStorageMovementIds().contains(null)) { + + if (log.isErrorEnabled()) { + log.error("confirmation " + confirmation + " is malformed. session = " + session); + } + + throw new MagalieTechnicalException("confirmation " + confirmation + " is malformed"); + + } + MagalieUser magalieUser = session.getMagalieUser(); articleStorageService.confirmStorageMovement(confirmation, magalieUser); Modified: trunk/magalie-web/src/main/webapp/js/withdraw-item-input.js =================================================================== --- trunk/magalie-web/src/main/webapp/js/withdraw-item-input.js 2013-07-25 10:02:34 UTC (rev 335) +++ trunk/magalie-web/src/main/webapp/js/withdraw-item-input.js 2013-07-25 11:25:55 UTC (rev 336) @@ -220,29 +220,35 @@ }, - onNext : function(reportError) { + next : function(reportError) { - try { + var barcode = $('#withdraw-item_locationBarcode').val(); + var quantity = parseFloat($('#withdraw-item_quantity').val()); - var barcode = $('#withdraw-item_locationBarcode').val(); - var quantity = parseFloat($('#withdraw-item_quantity').val()); + model.withdraw(barcode, quantity); - model.withdraw(barcode, quantity); + if (reportError === true) { + model.reportError(barcode); + } - if (reportError === true) { - model.reportError(barcode); - } + view.refresh(); - view.refresh(); + var proposeAnotherLocation = ! model.expectedQuantity // pas de quantité demandée précisée au départ donc on ne sait pas s'il faut s'arrêter donc on propose au cas où + || model.withdrawn() < model.expectedQuantity // on a une quantité demandée mais on ne l'a pas encore atteinte + if (proposeAnotherLocation) { + model.newEmptyStorageMovementForNextLocation(); + } - var proposeAnotherLocation = ! model.expectedQuantity // pas de quantité demandée précisée au départ donc on ne sait pas s'il faut s'arrêter donc on propose au cas où - || model.withdrawn() < model.expectedQuantity // on a une quantité demandée mais on ne l'a pas encore atteinte - if (proposeAnotherLocation) { - model.newEmptyStorageMovementForNextLocation(); - } + view.refresh(); - view.refresh(); + }, + onNext : function() { + + try { + + controller.next(false); + } catch (ex) { if (ex instanceof ValidationError) { @@ -256,33 +262,62 @@ onReportError : function() { - controller.onNext(true); + try { + controller.next(true); + + } catch (ex) { + + if (ex instanceof ValidationError) { + handleValidationError(ex); + } else { + throw ex; + } + } + }, onConfirm : function() { - var barcode = $('#withdraw-item_locationBarcode').val(); + try { - if (barcode.length > 0) { + var barcode = $('#withdraw-item_locationBarcode').val(); - controller.onNext(); + if (barcode.length > 0) { - } + controller.next(false); - var confirmation = model.getConfirmation(); + } - var confirmMessage = 'Confirmer ' + confirmation.storageMovementIds.length + ' mouvements ?'; + var confirmation = model.getConfirmation(); - if (confirm(confirmMessage)) { + var storageMovementCount = confirmation.storageMovementIds.length; - // push model as Json in a hidden field - $('#withdraw-item_confirmation').val(JSON.stringify(confirmation)); + if (storageMovementCount > 0) { - model.forceConfirm = true; + var confirmMessage = 'Confirmer ' + storageMovementCount + ' mouvements ?'; - $('#withdraw-item').submit(); + if (confirm(confirmMessage)) { + // push model as Json in a hidden field + $('#withdraw-item_confirmation').val(JSON.stringify(confirmation)); + + model.forceConfirm = true; + + $('#withdraw-item').submit(); + + } + + } + + } catch (ex) { + + if (ex instanceof ValidationError) { + handleValidationError(ex); + } else { + throw ex; + } + } },