/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
// www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////
package org.projectforge.web.fibu;
import java.util.Date;
import java.util.List;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.util.convert.IConverter;
import org.projectforge.fibu.AuftragDO;
import org.projectforge.fibu.PaymentScheduleDO;
import org.projectforge.fibu.RechnungDao;
import org.projectforge.user.PFUserDO;
import org.projectforge.user.UserRightValue;
import org.projectforge.user.UserRights;
import org.projectforge.web.wicket.WicketUtils;
import org.projectforge.web.wicket.components.DatePanel;
import org.projectforge.web.wicket.components.DatePanelSettings;
import org.projectforge.web.wicket.components.MaxLengthTextField;
import org.projectforge.web.wicket.converter.CurrencyConverter;
import org.projectforge.web.wicket.flowlayout.CheckBoxButton;
import org.projectforge.web.wicket.flowlayout.DivPanel;
import org.projectforge.web.wicket.flowlayout.DivType;
/**
* @author Werner Feder (werner.feder@t-online.de)
*/
public class PaymentSchedulePanel extends Panel
{
private static final long serialVersionUID = 2669766778018430028L;
private RepeatingView entrysRepeater;
private WebMarkupContainer mainContainer;
private final IModel<AuftragDO> model;
private final PFUserDO user;
/**
* @param id
*/
public PaymentSchedulePanel(final String id, final IModel<AuftragDO> model, final PFUserDO user)
{
super(id);
this.model = model;
this.user = user;
}
/**
* @see org.apache.wicket.Component#onInitialize()
*/
@Override
protected void onInitialize()
{
super.onInitialize();
mainContainer = new WebMarkupContainer("main");
add(mainContainer.setOutputMarkupId(true));
mainContainer.add(new Label("dateLabel", getString("fibu.rechnung.datum.short")));
mainContainer.add(new Label("amountLabel", getString("fibu.common.betrag")));
mainContainer.add(new Label("commentLabel", getString("comment")));
mainContainer.add(new Label("reachedLabel", getString("fibu.common.reached")));
entrysRepeater = new RepeatingView("liRepeater");
mainContainer.add(entrysRepeater);
rebuildEntries();
entrysRepeater.setVisible(true);
}
@SuppressWarnings("serial")
public void rebuildEntries()
{
final List<PaymentScheduleDO> entries = model.getObject().getPaymentSchedules();
if (entries != null) {
entrysRepeater.removeAll();
for (final PaymentScheduleDO entry : entries) {
final WebMarkupContainer item = new WebMarkupContainer(entrysRepeater.newChildId());
entrysRepeater.add(item);
final DatePanel datePanel = new DatePanel("scheduleDate", new PropertyModel<Date>(entry, "scheduleDate"), DatePanelSettings.get()
.withTargetType(java.sql.Date.class));
item.add(datePanel);
final TextField<String> amount = new TextField<String>("amount", new PropertyModel<String>(entry, "amount")) {
@SuppressWarnings({ "rawtypes", "unchecked"})
@Override
public IConverter getConverter(final Class type)
{
return new CurrencyConverter();
}
};
item.add(amount);
item.add(new MaxLengthTextField("comment", new PropertyModel<String>(entry, "comment")));
item.add(new CheckBox("reached", new PropertyModel<Boolean>(entry, "reached")));
if (UserRights.getAccessChecker().hasRight(user, RechnungDao.USER_RIGHT_ID, UserRightValue.READWRITE) == true) {
final DivPanel checkBoxDiv = new DivPanel("vollstaendigFakturiert", DivType.BTN_GROUP);
item.add(checkBoxDiv);
checkBoxDiv.add(new CheckBoxButton(checkBoxDiv.newChildId(), new PropertyModel<Boolean>(entry, "vollstaendigFakturiert"),
getString("fibu.auftrag.vollstaendigFakturiert")));
} else {
item.add(WicketUtils.getInvisibleComponent("vollstaendigFakturiert"));
}
}
}
}
}