Add button to delete personal expense sheet
FEA: ItEr76S28UserDashboard
This commit is contained in:
parent
49ecc85aef
commit
81fc87beb2
4 changed files with 58 additions and 11 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue