/////////////////////////////////////////////////////////////////////////////
//
// 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 org.apache.wicket.Component;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.SubmitLink;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.projectforge.common.ImportedElement;
import org.projectforge.common.ImportedSheet;
import org.projectforge.core.CurrencyFormatter;
import org.projectforge.fibu.KontoDO;
import org.projectforge.fibu.KostFormatter;
import org.projectforge.fibu.datev.DatevImportDao;
import org.projectforge.fibu.kost.BuchungssatzDO;
import org.projectforge.fibu.kost.BusinessAssessment;
import org.projectforge.fibu.kost.Kost1DO;
import org.projectforge.fibu.kost.Kost2DO;
import org.projectforge.web.calendar.DateTimeFormatter;
import org.projectforge.web.core.importstorage.AbstractImportStoragePanel;
import org.projectforge.web.core.importstorage.ImportFilter;
import org.projectforge.web.wicket.WicketUtils;
/**
* @author Kai Reinhard (k.reinhard@micromata.de)
*
*/
public class DatevImportStoragePanel extends AbstractImportStoragePanel<DatevImportPage>
{
private static final long serialVersionUID = -5732520730823126042L;
private Label businessAssessmentLabel;
protected BusinessAssessment businessAssessment;
/**
* @param id
*/
public DatevImportStoragePanel(final String id, final DatevImportPage parentPage, final ImportFilter filter)
{
super(id, parentPage, filter);
}
@Override
public void refresh()
{
super.refresh();
if (businessAssessmentLabel != null) {
remove(businessAssessmentLabel);
}
}
@SuppressWarnings("serial")
@Override
protected void appendSheetActionLinks(final ImportedSheet< ? > sheet, final RepeatingView actionLinkRepeater)
{
if (getStorageType() == DatevImportDao.Type.BUCHUNGSSAETZE) {
addActionLink(actionLinkRepeater, new SubmitLink("actionLink") {
@Override
public void onSubmit()
{
parentPage.showBusinessAssessment(sheet.getName());
}
}, "show business assessment");
}
}
/**
* @see org.projectforge.web.core.importstorage.AbstractImportStoragePanel#addHeadColumns(org.apache.wicket.markup.repeater.RepeatingView)
*/
@Override
protected void addHeadColumns(final RepeatingView headColRepeater)
{
if (getStorageType() == DatevImportDao.Type.KONTENPLAN) {
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("fibu.konto.nummer")));
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("fibu.konto.bezeichnung")));
} else {
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("fibu.buchungssatz.satznr")));
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("date")));
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("fibu.common.betrag")));
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("fibu.buchungssatz.text")));
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("fibu.buchungssatz.konto")));
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("fibu.buchungssatz.gegenKonto")));
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("fibu.kost1")));
headColRepeater.add(new Label(headColRepeater.newChildId(), getString("fibu.kost2")));
}
}
/**
* @see org.projectforge.web.core.importstorage.AbstractImportStoragePanel#addColumns(org.apache.wicket.markup.repeater.RepeatingView,
* org.projectforge.common.ImportedElement)
*/
@Override
protected void addColumns(final RepeatingView cellRepeater, final ImportedElement< ? > element, final String style)
{
if (getStorageType() == DatevImportDao.Type.KONTENPLAN) {
final KontoDO konto = (KontoDO) element.getValue();
addCell(cellRepeater, konto.getNummer(), style + " white-space: nowrap; text-align: right;");
addCell(cellRepeater, konto.getBezeichnung(), style);
} else {
final BuchungssatzDO satz = (BuchungssatzDO) element.getValue();
addCell(cellRepeater, satz.getSatznr(), style + " white-space: nowrap; text-align: right;");
addCell(cellRepeater, DateTimeFormatter.instance().getFormattedDate(satz.getDatum()), style + " white-space: nowrap;");
addCell(cellRepeater, CurrencyFormatter.format(satz.getBetrag()), style + " white-space: nowrap; text-align: right;");
addCell(cellRepeater, satz.getText(), style);
addCell(cellRepeater, satz.getKonto() != null ? satz.getKonto().getNummer() : null, style);
addCell(cellRepeater, satz.getGegenKonto() != null ? satz.getGegenKonto().getNummer() : null, style);
final Kost1DO kost1 = satz.getKost1();
Component comp = addCell(cellRepeater, kost1 != null ? kost1.getShortDisplayName() : null, style);
if (kost1 != null) {
WicketUtils.addTooltip(comp, KostFormatter.formatToolTip(kost1));
}
final Kost2DO kost2 = satz.getKost2();
comp = addCell(cellRepeater, kost2 != null ? kost2.getShortDisplayName() : null, style);
if (kost2 != null) {
WicketUtils.addTooltip(comp, KostFormatter.formatToolTip(kost2));
}
}
}
private DatevImportDao.Type getStorageType()
{
if (storage == null) {
return null;
} else {
return (DatevImportDao.Type) storage.getId();
}
}
}