package com.fp.dto.fin;

import java.math.BigDecimal;

import com.fp.dto.AbstractDataTransport;
import com.fp.dto.query.AdditionalQuery;

/**
 * Clase que se encarga de almacenar informacion necesaria para generar transacciones de compra venta de divisas.
 * Adicionalmente sirve para ejecutar transacciones para la cuenta origen o destino por cada instancia de la clase
 * ejemplo credito a cuentas por desembolso de prestamo, debito a cuentas para apertura de un plazo fijo. <br>
 * Para ejecuar el financiero se utiliza el evento y el lado a generar el financiero que puede ser origene, destino,
 * ambos.
 * @author Jorge Vaca
 * @version 2.1
 *
 */
public class FinancialExchange extends AbstractDataTransport{
	
	private static final long serialVersionUID = 1L;
	/**Codigo de rubro, asociado al rubro de la transaccion. se utiliza en caja para hacer desglose 
	 * de monedas ejempl deposito cuenta vista rubor efectivo.*/
	private Integer itemcode;
	/**Codigo de la moneda origen, si es distinata a la moneda oficial se realiza la compra de divisas.*/
	private String origincurrency;
	/**Monto en la moneda origen.*/
	private BigDecimal originamount;
	/**Numero de cueta origen utilizada para ejecutar transacciones financieras.*/
	private String originaccount;
	/**Codigo de compania a la que pertenece la cuenta origen*/
	private Integer origincompany;
	/**Codigo de la moneda origen, si es distinata a la moneda oficial se realiza la compra de divisas.*/
	private String destinycurrency;
	/**Monto en la moneda origen.*/
	private BigDecimal destinyamount;
	/**Numero de cueta destino utilizada para ejecutar transacciones financieras.*/
	private String destinyaccount;
	/**Codigo de compania a la que pertenece la cuenta destino*/
	private Integer destinycompany;
	/**Codigo contable utilizado para ejecutar transacciones financieras.*/
	private String accountantcode;
	/**Cotizacion de compra a aplicar en la transaccion de compra de divisas.*/
	private BigDecimal purchaserate;
	/**Cotizacion de venta a aplicar en la transaccion de venta de divisas.*/
	private BigDecimal salerate;
	/**Codigo de evento con el cual se ejecuta la transaccion financiera.*/
	private String event;
	/**Codigo de subsistema asociado al evento con el cual se ejecuta la transaccion financiera.*/
	private String eventmodule;
	/**"true" se calcula el monto origen, en este caso se conoce el monto destino, 
	 * "false" se calcula el monto destino en este caso se conoce el monto origen..*/
	private boolean calculateOrigin;
	/**"O" Indica que se graba el financiero con el origen de la transaccion,
	 * "D" Indica que se graba el financiero con el destino de la transaccion.*/
	private String financial;
	

    @Override
    public Object cloneMe() throws CloneNotSupportedException {
    	FinancialExchange p = (FinancialExchange) this.clone();
    	return p;
    }	
	
	/**
	 * Entrega el valor de: itemcode
	 * @return Integer
	 */
	public Integer getItemcode() {
		return itemcode;
	}
	/**
	 * Fija el valor de: itemcode
	 * @param itemcode 
	 */
	public void setItemcode(Integer itemcode) {
		this.itemcode = itemcode;
	}
	/**
	 * Entrega el valor de: origincurrency
	 * @return String
	 */
	public String getOrigincurrency() {
		return origincurrency;
	}
	/**
	 * Fija el valor de: origincurrency
	 * @param origincurrency 
	 */
	public void setOrigincurrency(String origincurrency) {
		this.origincurrency = origincurrency;
	}
	/**
	 * Entrega el valor de: originamount
	 * @return BigDecimal
	 */
	public BigDecimal getOriginamount() {
		return originamount;
	}
	/**
	 * Fija el valor de: originamount
	 * @param originamount 
	 */
	public void setOriginamount(BigDecimal originamount) {
		this.originamount = originamount;
	}
	/**
	 * Entrega el valor de: originaccount
	 * @return String
	 */
	public String getOriginaccount() {
		return originaccount;
	}
	/**
	 * Fija el valor de: originaccount
	 * @param originaccount 
	 */
	public void setOriginaccount(String originaccount) {
		this.originaccount = originaccount;
	}
	/**
	 * Entrega el valor de: origincompany
	 * @return Integer
	 */
	public Integer getOrigincompany() {
		return origincompany;
	}
	/**
	 * Fija el valor de: origincompany
	 * @param origincompany 
	 */
	public void setOrigincompany(Integer origincompany) {
		this.origincompany = origincompany;
	}
	/**
	 * Entrega el valor de: destinycurrency
	 * @return String
	 */
	public String getDestinycurrency() {
		return destinycurrency;
	}
	/**
	 * Fija el valor de: destinycurrency
	 * @param destinycurrency 
	 */
	public void setDestinycurrency(String destinycurrency) {
		this.destinycurrency = destinycurrency;
	}
	/**
	 * Entrega el valor de: destinyamount
	 * @return BigDecimal
	 */
	public BigDecimal getDestinyamount() {
		return destinyamount;
	}
	/**
	 * Fija el valor de: destinyamount
	 * @param destinyamount 
	 */
	public void setDestinyamount(BigDecimal destinyamount) {
		this.destinyamount = destinyamount;
	}
	/**
	 * Entrega el valor de: destinyaccount
	 * @return String
	 */
	public String getDestinyaccount() {
		return destinyaccount;
	}
	/**
	 * Fija el valor de: destinyaccount
	 * @param destinyaccount 
	 */
	public void setDestinyaccount(String destinyaccount) {
		this.destinyaccount = destinyaccount;
	}
	/**
	 * Entrega el valor de: destinycompany
	 * @return Integer
	 */
	public Integer getDestinycompany() {
		return destinycompany;
	}
	/**
	 * Fija el valor de: destinycompany
	 * @param destinycompany 
	 */
	public void setDestinycompany(Integer destinycompany) {
		this.destinycompany = destinycompany;
	}
	/**
	 * Entrega el valor de: accountantcode
	 * @return String
	 */
	public String getAccountantcode() {
		return accountantcode;
	}
	/**
	 * Fija el valor de: accountantcode
	 * @param accountantcode 
	 */
	public void setAccountantcode(String accountantcode) {
		this.accountantcode = accountantcode;
	}
	/**
	 * Entrega el valor de: purchaserate
	 * @return BigDecimal
	 */
	public BigDecimal getPurchaserate() {
		return purchaserate;
	}
	/**
	 * Fija el valor de: purchaserate
	 * @param purchaserate 
	 */
	public void setPurchaserate(BigDecimal purchaserate) {
		this.purchaserate = purchaserate;
	}
	/**
	 * Entrega el valor de: salerate
	 * @return BigDecimal
	 */
	public BigDecimal getSalerate() {
		return salerate;
	}
	/**
	 * Fija el valor de: salerate
	 * @param salerate 
	 */
	public void setSalerate(BigDecimal salerate) {
		this.salerate = salerate;
	}
	/**
	 * Entrega el valor de: event
	 * @return String
	 */
	public String getEvent() {
		return event;
	}
	/**
	 * Fija el valor de: event
	 * @param event 
	 */
	public void setEvent(String event) {
		this.event = event;
	}
		
	/**
	 * Entrega el valor de: eventmodule
	 * @return String
	 */
	public String getEventmodule() {
		return eventmodule;
	}
	/**
	 * Fija el valor de: eventmodule
	 * @param eventmodule 
	 */
	public void setEventmodule(String eventmodule) {
		this.eventmodule = eventmodule;
	}
	/**
	 * Entrega el valor de: calculateOrigin
	 * @return boolean
	 */
	public boolean isCalculateOrigin() {
		return calculateOrigin;
	}
	/**
	 * Fija el valor de: calculateOrigin
	 * @param calculateOrigin 
	 */
	public void setCalculateOrigin(boolean calculateOrigin) {
		this.calculateOrigin = calculateOrigin;
	}
	/**
	 * Entrega el valor de: financial
	 * @return String
	 */
	public String getFinancial() {
		return financial;
	}
	/**
	 * Fija el valor de: financial
	 * @param financial 
	 */
	public void setFinancial(String financial) {
		this.financial = financial;
	}
	
	
}

