org.projectforge.business.fibu.datev.BuchungssatzImportRow.java Source code

Java tutorial

Introduction

Here is the source code for org.projectforge.business.fibu.datev.BuchungssatzImportRow.java

Source

/////////////////////////////////////////////////////////////////////////////
//
// 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.business.fibu.datev;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.Locale;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.projectforge.framework.time.DayHolder;
import org.projectforge.framework.utils.ActionLog;
import org.projectforge.framework.utils.NumberHelper;

public class BuchungssatzImportRow {
    private static final Logger log = Logger.getLogger(BuchungssatzImportRow.class);

    Integer satzNr;

    BigDecimal betrag;

    String sh;

    Integer konto;

    Double kost2;

    String menge;

    String sh2; // Nicht eindeutig, daher umbenannt.

    String beleg;

    Date datum;

    Integer gegenkonto;

    String text;

    Double kost1;

    BigDecimal beleg2;

    String kr_bsnr;

    String zi;

    String comment;

    private ActionLog actionLog;

    public String getBeleg() {
        return beleg;
    }

    public void setBeleg(String beleg) {
        this.beleg = NumberHelper.toPlainString(beleg); // Convert, because Excelimporter return numeric cells in scientific representation (e.
        // g. 1.093E7).
    }

    public BigDecimal getBeleg2() {
        return beleg2;
    }

    public void setBeleg2(BigDecimal beleg2) {
        this.beleg2 = beleg2;
    }

    public BigDecimal getBetrag() {
        return betrag;
    }

    public void setBetrag(BigDecimal betrag) {
        this.betrag = betrag != null ? betrag.setScale(2, RoundingMode.HALF_UP) : null;
    }

    public Date getDatum() {
        return datum;
    }

    public void setDatum(Date datum) {
        this.datum = datum;
    }

    public Integer getGegenkonto() {
        return gegenkonto;
    }

    public void setGegenkonto(Integer gegenkonto) {
        this.gegenkonto = gegenkonto;
    }

    public Integer getKonto() {
        return konto;
    }

    public void setKonto(Integer konto) {
        this.konto = konto;
    }

    public String getKr_bsnr() {
        return kr_bsnr;
    }

    public Double getKost1() {
        return kost1;
    }

    public void setKost1(Double kost1) {
        this.kost1 = kost1;
    }

    public Double getKost2() {
        return kost2;
    }

    public void setKost2(Double kost2) {
        this.kost2 = kost2;
    }

    public void setKr_bsnr(String kr_bsnr) {
        this.kr_bsnr = NumberHelper.toPlainString(kr_bsnr); // See setBeleg for explanation.
    }

    public String getMenge() {
        return menge;
    }

    public void setMenge(String menge) {
        this.menge = NumberHelper.toPlainString(menge); // See setBeleg for explanation.
    }

    public Integer getSatzNr() {
        return satzNr;
    }

    public void setSatzNr(Integer satzNr) {
        this.satzNr = satzNr;
    }

    public String getSh() {
        return sh;
    }

    public void setSh(String sh) {
        this.sh = NumberHelper.toPlainString(sh); // See setBeleg for explanation.
    }

    public String getSh2() {
        return sh2;
    }

    public void setSh2(String sh2) {
        this.sh2 = NumberHelper.toPlainString(sh2); // See setBeleg for explanation.
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text == null ? "" : NumberHelper.toPlainString(text); // See setBeleg for explanation.
    }

    public String getZi() {
        return zi;
    }

    public void setZi(String zi) {
        this.zi = NumberHelper.toPlainString(zi); // See setBeleg for explanation.
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = NumberHelper.toPlainString(comment); // See setBeleg for explanation.
    }

    public boolean isEmpty() {
        return (satzNr == null && betrag == null && konto == null && datum == null && gegenkonto == null
                && kost1 == null && kost2 == null);
    }

    /**
     * Ein paar Datenstze mssen vor der bernahme geprft und ggf. korrigiert werden.
     */
    public void check() {
        if (satzNr == null) {
            log.warn("Satznr ist null!");
        } else if (kost1 == null && satzNr.compareTo(1) == 0) {
            final DayHolder day = new DayHolder(datum);
            log.info(
                    "OK: Lt. Steffi handelt es sich um einen zu ignorierenden Lohn-Korrektur-Datensatz fr 01/2007-05/2007."
                            + " Kostenstelle wird auf 10000000 und Betrag auf 0,00  gesetzt: " + satzNr + " "
                            + day.isoFormat() + " "
                            + NumberHelper.getAsString(betrag, NumberHelper.getCurrencyFormat(Locale.GERMAN)));
            kost1 = new Double(10000000);
            betrag = BigDecimal.ZERO;
        } else if (kost1 == null || kost2 == null) {
            final String msg = "Oups: Kost1 oder Kost2 ist null fr Beleg Nr. " + this.satzNr;
            actionLog.logError(msg);
            log.warn(msg);
        }
    }

    /**
     * Achtung: Diese Klasse ruft ggf. korrigierend und ndernd check() auf.
     * @see java.lang.Object#toString()
     * @see #check()
     */
    public String toString() {
        check(); // Leider muss dieser modifizierende check() ausgefhrt werden, da auf die aufrufende Klasse ExcelImport kein Einfluss
        // genommen werden kann.
        String txt = StringUtils.abbreviate(text, 30);
        DayHolder day = new DayHolder(datum);
        return StringUtils.leftPad(NumberHelper.getAsString(satzNr), 4) + " "
                + StringUtils.leftPad(day.isoFormat(), 10)
                + StringUtils.leftPad(
                        NumberHelper.getAsString(betrag, NumberHelper.getCurrencyFormat(Locale.GERMAN)), 12)
                + " " + kost1 != null ? StringUtils.leftPad(kost1.toString(), 12)
                        : "-           " + " " + kost2 != null ? StringUtils.leftPad(kost2.toString(), 12)
                                : "-           " + " " + StringUtils.rightPad(txt, 30);
    }

    public void setActionLog(final ActionLog actionLog) {
        this.actionLog = actionLog;
    }
}