/****************************************************************************** * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * * by the Free Software Foundation. This program 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, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * * For the text or an alternative of this public license, you may reach us * * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * * or via info@compiere.org or http://www.compiere.org/license.html * *****************************************************************************/ package org.compiere.impexp; import java.math.BigDecimal; import java.sql.Timestamp; import org.compiere.model.MBankStatementLoader; /** * Interface to be implemented by bank statement loader classes. *
* Bank statement loader classes that extend this interface can be loaded * by the MBankStatementLoader controller class. * The usage patter looks like this: * * -init() is called in order to initialize the loader * * -validate() is called, allowing the loader to perform data validation if * it provides this. * * -loadLines() is called, request the loader to start loading statement lines * * -for every statement line that the loader encounters, it calls the * saveLine() method of the MBankStatement controller object it obtained * as part of the call to init() * * -The MBankStatementLoader controller object can now obtain the data for the current bank * statement line by using the corresponding get methods of the loader class. ** @author Maarten Klinker, Eldir Tomassen * @version $Id: BankStatementLoaderInterface.java,v 1.2 2006/07/30 00:51:05 jjanke Exp $ */ public interface BankStatementLoaderInterface { /** * Initialize the loader * @param controller Reference to the MBankStatementLoader controller object * @return Initialized successfully */ public boolean init(MBankStatementLoader controller); /** * Verify whether the data to be imported is valid * @return true if Data is valid */ public boolean isValid(); /** * Start importing statement lines * @return true if statement lines imported successfully */ public boolean loadLines(); /** * Return the most recent error * @return Error message. * This error message will be handled as a ADempiere message, * (e.g. it can be translated) */ public String getLastErrorMessage(); /** * Return the most recent error description * @return Error description. * This is an additional error description, it can be used to provided * descriptive information, such as a file name or SQL error, that can not * be translated by the ADempiere message system. */ public String getLastErrorDescription(); /** * The last time this loader acquired bank statement data. *
* For OFX this is the <DTEND> value. This is generally only available
* after loadLines() has been called. If a specific loader class
* does not provide this information it is allowed to return null.
* @return Date last run
*/
public Timestamp getDateLastRun();
/**
* The routing number of the bank account for the statement line.
* @return Routing number
*/
public String getRoutingNo();
/**
* The account number of the bank account for the statement line.
* @return Bank account number
*/
public String getBankAccountNo();
/**
* The IBAN of the bank account for the statement line.
* @return IBAN
*/
public String getIBAN() ;
/**
* Additional reference information.
* Statement level reference information. If a specific loader class
* does not provided this, it is allowed to return null.
* @return Statement Reference
*/
public String getStatementReference();
/**
* Statement Date.
* Date of the bank statement. If a specific loader does not provide this,
* it is allowed to return null.
* @return Statement Date
*/
public Timestamp getStatementDate();
/**
* Transaction ID assigned by the bank.
*
* For OFX this is the <FITID>. * If a specific loader does not provide this, it is allowed to return * null. * @return Transaction ID */ public String getTrxID(); /** * Additional reference information. * Statement line level reference information. *
* For OFX this is the <REFNUM> field. * If a specific loader does not provided this, it is allowed to return null. * @return Reference */ public String getReference(); /** * Check number. * Check number, in case the transaction was initiated by a check. *
* For OFX this is the <CHECKNUM> field, for MS-Money (OFC) this is the * <CHKNUM> field. * If a specific loader does not provide this, it is allowed to return null. * @return Transaction reference */ public String getCheckNo(); /** * Payee name. *
* Name information, for OFX this is the <NAME> or * <PAYEE><NAME> field. * If a specific loader class does not provide this, it is allowed * to return null. * @return Payee name */ public String getPayeeName(); /** * Payee account. *
* Account information of "the other party". * If a specific loader class does not provide this, it is allowed * to return null. * @return Payee bank account number */ public String getPayeeAccountNo(); /** * Statement line date. * This has to be provided by all loader classes. * @return Statement line date */ public Timestamp getStatementLineDate(); /** * Effective date. *
* Date at the funds became available.
* If a specific loader does not provide this, it is allowed to return null.
* @return Effective date
*/
public Timestamp getValutaDate();
/**
* Transaction type.
* @return Transaction type.
* This returns the transaction type as used by the bank
* Whether a transaction is credit or debit depends on the amount (i.e. negative),
* this field is for reference only.
* If a specific loader class does not provide this, it is allowed
* to return null.
*/
public String getTrxType();
/**
* Indicates whether this transaction is a reversal
* @return true if this is a reversal
*/
public boolean getIsReversal();
/**
* Currency
* @return Currency.
* Return the currency, if included in the statement data.
* It is returned as it appears in the import data, it should
* not be processed by the loader in any way.
* If a specific loader class does not provide this, it is allowed
* to return null.
*/
public String getCurrency();
/**
* Statement line amount
* @return Statement Line Amount.
* This has to be provided by all loader classes.
*/
public BigDecimal getStmtAmt();
/**
* Transaction Amount
* @return Transaction Amount
*/
public BigDecimal getTrxAmt();
/**
* Interest Amount
* @return Interest Amount
*/
public BigDecimal getInterestAmt();
/**
* Transaction memo
* @return Memo.
* Additional descriptive information.
* For OFX this is the <MEMO> filed, for SWIFT MT940
* this is the "86" line.
* If a specific loader does not provide this, it is allowed to return null.
*/
public String getMemo();
/**
* Charge name.
* @return Charge name.
* Name of the charge, in case this transaction is a bank charge.
* If a specific loader class does not provide this, it is allowed
* to return null.
*/
public String getChargeName();
/**
* Charge amount
* @return Charge amount.
* Charge amount, in case this transaction is a bank charge.
* If a specific loader class does not provide this, it is allowed
* to return null.
*/
public BigDecimal getChargeAmt();
}