Add button to delete personal expense sheet

FEA: ItEr76S28UserDashboard
This commit is contained in:
Manuel Rego Casasnovas 2012-06-07 12:02:37 +02:00
parent 49ecc85aef
commit 81fc87beb2
4 changed files with 58 additions and 11 deletions

View file

@ -248,17 +248,15 @@ public class ExpenseSheetModel extends IntegrationEntityModel implements IExpens
@Override
@Transactional
public void removeExpenseSheet(ExpenseSheet expenseSheet) {
public void removeExpenseSheet(ExpenseSheet expenseSheet)
throws InstanceNotFoundException {
Validate.notNull(expenseSheet);
expenseSheet = getFromDB(expenseSheet);
try {
sumExpensesDAO.updateRelatedSumExpensesWithDeletedExpenseSheetLineSet(expenseSheet
.getExpenseSheetLines());
expenseSheetDAO.remove(expenseSheet.getId());
} catch (InstanceNotFoundException e) {
throw new RuntimeException(e);
}
sumExpensesDAO
.updateRelatedSumExpensesWithDeletedExpenseSheetLineSet(expenseSheet
.getExpenseSheetLines());
expenseSheetDAO.remove(expenseSheet.getId());
}
@Override

View file

@ -22,6 +22,7 @@ package org.libreplan.web.expensesheet;
import java.util.List;
import java.util.SortedSet;
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
import org.libreplan.business.expensesheet.entities.ExpenseSheet;
import org.libreplan.business.expensesheet.entities.ExpenseSheetLine;
import org.libreplan.business.orders.entities.Order;
@ -47,7 +48,8 @@ public interface IExpenseSheetModel extends IIntegrationEntityModel {
List<ExpenseSheet> getExpenseSheets();
void removeExpenseSheet(ExpenseSheet expenseSheet);
void removeExpenseSheet(ExpenseSheet expenseSheet)
throws InstanceNotFoundException;
ExpenseSheet getExpenseSheet();

View file

@ -19,17 +19,26 @@
package org.libreplan.web.users.dashboard;
import static org.libreplan.web.I18nHelper._;
import java.util.List;
import javax.annotation.Resource;
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
import org.libreplan.business.expensesheet.entities.ExpenseSheet;
import org.libreplan.web.common.IMessagesForUser;
import org.libreplan.web.common.Level;
import org.libreplan.web.common.MessagesForUser;
import org.libreplan.web.common.Util;
import org.libreplan.web.expensesheet.IExpenseSheetCRUDController;
import org.libreplan.web.expensesheet.IExpenseSheetModel;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Row;
import org.zkoss.zul.RowRenderer;
@ -46,6 +55,12 @@ public class ExpensesAreaController extends GenericForwardComposer {
private IExpensesAreaModel expensesAreaModel;
private IExpenseSheetModel expenseSheetModel;
private IMessagesForUser messagesForUser;
private Grid expenseSheetsList;
private RowRenderer expenseSheetsRenderer = new RowRenderer() {
@Override
@ -66,7 +81,35 @@ public class ExpensesAreaController extends GenericForwardComposer {
expenseSheetCRUDController
.goToEditPersonalExpenseSheet(expenseSheet);
}
}, null);
}, new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
try {
if (Messagebox
.show(_("Delete expense sheet \"{0}\". Are you sure?",
expenseSheet.getHumanId()),
_("Confirm"), Messagebox.OK
| Messagebox.CANCEL,
Messagebox.QUESTION) == Messagebox.OK) {
expenseSheetModel.removeExpenseSheet(expenseSheet);
messagesForUser.showMessage(
Level.INFO,
_("Expense sheet \"{0}\" deleted",
expenseSheet.getHumanId()));
Util.reloadBindings(expenseSheetsList);
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (InstanceNotFoundException ie) {
messagesForUser
.showMessage(
Level.ERROR,
_("Expense sheet \"{1}\" could not be deleted, it was already removed",
expenseSheet.getHumanId()));
}
}
});
}
};
@ -74,6 +117,9 @@ public class ExpensesAreaController extends GenericForwardComposer {
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
comp.setAttribute("controller", this);
messagesForUser = new MessagesForUser(
comp.getFellow("messagesContainer"));
}
public void newExpenseSheet() {

View file

@ -21,7 +21,8 @@
<groupbox apply="org.libreplan.web.users.dashboard.ExpensesAreaController">
<caption label="${i18n:_('Expenses')}" />
<grid mold="paging" pageSize="10" sclass="clickable-rows"
<grid id="expenseSheetsList"
mold="paging" pageSize="10" sclass="clickable-rows"
model="@{controller.personalExpenseSheets}"
rowRenderer="@{controller.expenseSheetsRenderer}">
<columns sizable="true">