/****************************************************************************** * 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(); }