maia_modificado/.svn/pristine/af/af6da97c3ab9112f618d8f0d0a5...

758 lines
22 KiB
Plaintext
Executable File

package com.fp.persistence.pgeneral.receive.acco;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.fp.common.helper.Constant;
import com.fp.dto.hb.HibernateBean;
/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TRECEIVABLEACCOUNTDEMANDEPO */
@Entity(name = "TreceivableAccountDemanDepo")
@Table(name = "TRECEIVABLEACCOUNTDEMANDEPO")
public class TreceivableAccountDemanDepo extends com.fp.dto.AbstractDataBalanceTransport implements Serializable, HibernateBean, Cloneable {
/**
* HashCode asociado con la Instancia
*/
@Transient
private int hashValue = 0;
/**
* Version de la Clase
*/
private static final long serialVersionUID = 1L;
/**
* Clave primaria de la Entidad TreceivableAccountDemanDepo
*/
@EmbeddedId
private TreceivableAccountDemanDepoKey pk;
@Column(name = "DATEFROM", nullable = false)
/**
* Fecha desde la cual esta vigente el registro de la cuenta por cobrar
*/
private Timestamp datefrom;
@Column(name = "ACCOUNTINGDATE", nullable = true)
/**
* Fecha contable con la que se crea la cuenta por cobrar
*/
private Date accountingdate;
@Column(name = "CURRENCYCODE", nullable = true)
/**
* Codigo de moneda
*/
private String currencycode;
@Column(name = "BALANCETYPE", nullable = true)
/**
* Código de tipo de saldo de registro de la CXC. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc
*/
private String balancetype;
@Column(name = "BALANCEGROUP", nullable = true)
/**
* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor
*/
private String balancegroup;
@Column(name = "RECOVERBALANCETYPE", nullable = true)
/**
* Código de tipo de saldo de cobro de la CXC. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc
*/
private String recoverbalancetype;
@Column(name = "RECOVERBALANCEGROUP", nullable = true)
/**
* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor
*/
private String recoverbalancegroup;
@Column(name = "PRIORITY", nullable = true)
/**
* Prioridad de cobro de la cuenta por cobrar dentro en el dia
*/
private Integer priority;
@Column(name = "ISPARTIAL", nullable = true)
/**
* Indica si la cuenta por cobrar permite cobros parciales
*/
private String ispartial;
@Column(name = "MINIMUMPAYMENT", nullable = true)
/**
* Si permite cobros parciales, Valor minimo de cobro
*/
private BigDecimal minimumpayment;
@Column(name = "EXPIREDATE", nullable = true)
/**
* Fecha de vencimiento de la cuenta por cobrar.
*/
private Date expiredate;
@Column(name = "MESSAGE", nullable = true)
/**
* Numero de mensaje con el cual se realizo la ultima transacción en la cuenta.
*/
private String message;
@Column(name = "ORIGINALMESSAGE", nullable = true)
/**
* Numero de mensaje con el cual se creo la cuenta por cobrar.
*/
private String originalmessage;
@Column(name = "REVERSEMESSAGE", nullable = true)
/**
* Numero de mensaje de reverso de la cuenta por cobrar.
*/
private String reversemessage;
@Column(name = "REVERSE", nullable = true)
/**
* Indica si la cuenta por cobrar esta reversada.
*/
private String reverse;
@Column(name = "ORIGINALAMOUNT", nullable = true)
/**
* Monto original
*/
private BigDecimal originalamount;
@Column(name = "PENDINGAMOUNT", nullable = true)
/**
* Monto pendiente de pago
*/
private BigDecimal pendingamount;
@Column(name = "LASTPAYAMOUNT", nullable = true)
/**
* Ultimo monto pagado
*/
private BigDecimal lastpayamount;
@Column(name = "LASTPAY", nullable = true)
/**
* Fecha de ultimo pago
*/
private Date lastpay;
@Column(name = "DESCRIPTION", nullable = true)
/**
* Glosa de la cuenta por cobrar.
*/
private String description;
/** Contructor por defecto */
public TreceivableAccountDemanDepo() {
}
/**
* Contructor de TreceivableAccountDemanDepo
*
* @param pPk Clave Primaria del entity
* @param pDatefrom Fecha desde la cual esta vigente el registro de la cuenta por cobrar
*/
public TreceivableAccountDemanDepo(TreceivableAccountDemanDepoKey pPk, Timestamp pDatefrom) {
this();
pk = pPk;
datefrom = pDatefrom;
}
/**
* Metodo que entrega datos de la tabla dada la clave primaria.
*
* @param pEntityManager referencia de la session a obtener datos del bean.
* @param pKey Caleve primaria del bean.
* @return TreceivableAccountDemanDepo
*/
public static TreceivableAccountDemanDepo find(EntityManager pEntityManager, TreceivableAccountDemanDepoKey pKey) throws Exception {
TreceivableAccountDemanDepo obj = pEntityManager.find(TreceivableAccountDemanDepo.class, pKey);
return obj;
}
/**
* Entrega la Clave primaria de TreceivableAccountDemanDepo
*
* @return El objeto que referencia a la Clave primaria de TreceivableAccountDemanDepo
*/
public TreceivableAccountDemanDepoKey getPk() {
return pk;
}
/**
* Fija un nuevo valor a la Clave primaria de TreceivableAccountDemanDepo
*
* @param pPk El objeto que referencia a la nueva Clave primaria de TreceivableAccountDemanDepo
*/
public void setPk(TreceivableAccountDemanDepoKey pPk) {
pk = pPk;
}
/**
* Obtiene el valor de datefrom
*
* @return valor de datefrom
*/
public Timestamp getDatefrom() {
return datefrom;
}
/**
* Fija el valor de datefrom
*
* @param pDatefrom nuevo Valor de datefrom
*/
public void setDatefrom(Timestamp pDatefrom) {
datefrom = pDatefrom;
}
/**
* Obtiene el valor de accountingdate
*
* @return valor de accountingdate
*/
public Date getAccountingdate() {
return accountingdate;
}
/**
* Fija el valor de accountingdate
*
* @param pAccountingdate nuevo Valor de accountingdate
*/
public void setAccountingdate(Date pAccountingdate) {
accountingdate = pAccountingdate;
}
/**
* Obtiene el valor de currencycode
*
* @return valor de currencycode
*/
public String getCurrencycode() {
return currencycode;
}
/**
* Fija el valor de currencycode
*
* @param pCurrencycode nuevo Valor de currencycode
*/
public void setCurrencycode(String pCurrencycode) {
currencycode = pCurrencycode;
}
/**
* Obtiene el valor de balancetype
*
* @return valor de balancetype
*/
public String getBalancetype() {
return balancetype;
}
/**
* Fija el valor de balancetype
*
* @param pBalancetype nuevo Valor de balancetype
*/
public void setBalancetype(String pBalancetype) {
balancetype = pBalancetype;
}
/**
* Obtiene el valor de balancegroup
*
* @return valor de balancegroup
*/
public String getBalancegroup() {
return balancegroup;
}
/**
* Fija el valor de balancegroup
*
* @param pBalancegroup nuevo Valor de balancegroup
*/
public void setBalancegroup(String pBalancegroup) {
balancegroup = pBalancegroup;
}
/**
* Obtiene el valor de recoverbalancetype
*
* @return valor de recoverbalancetype
*/
public String getRecoverbalancetype() {
return recoverbalancetype;
}
/**
* Fija el valor de recoverbalancetype
*
* @param pRecoverbalancetype nuevo Valor de recoverbalancetype
*/
public void setRecoverbalancetype(String pRecoverbalancetype) {
recoverbalancetype = pRecoverbalancetype;
}
/**
* Obtiene el valor de recoverbalancegroup
*
* @return valor de recoverbalancegroup
*/
public String getRecoverbalancegroup() {
return recoverbalancegroup;
}
/**
* Fija el valor de recoverbalancegroup
*
* @param pRecoverbalancegroup nuevo Valor de recoverbalancegroup
*/
public void setRecoverbalancegroup(String pRecoverbalancegroup) {
recoverbalancegroup = pRecoverbalancegroup;
}
/**
* Obtiene el valor de priority
*
* @return valor de priority
*/
public Integer getPriority() {
return priority;
}
/**
* Fija el valor de priority
*
* @param pPriority nuevo Valor de priority
*/
public void setPriority(Integer pPriority) {
priority = pPriority;
}
/**
* Obtiene el valor de ispartial
*
* @return valor de ispartial
*/
public String getIspartial() {
return ispartial;
}
/**
* Fija el valor de ispartial
*
* @param pIspartial nuevo Valor de ispartial
*/
public void setIspartial(String pIspartial) {
ispartial = pIspartial;
}
/**
* Obtiene el valor de minimumpayment
*
* @return valor de minimumpayment
*/
public BigDecimal getMinimumpayment() {
return minimumpayment;
}
/**
* Fija el valor de minimumpayment
*
* @param pMinimumpayment nuevo Valor de minimumpayment
*/
public void setMinimumpayment(BigDecimal pMinimumpayment) {
minimumpayment = pMinimumpayment;
}
/**
* Obtiene el valor de expiredate
*
* @return valor de expiredate
*/
public Date getExpiredate() {
return expiredate;
}
/**
* Fija el valor de expiredate
*
* @param pExpiredate nuevo Valor de expiredate
*/
public void setExpiredate(Date pExpiredate) {
expiredate = pExpiredate;
}
/**
* Obtiene el valor de message
*
* @return valor de message
*/
public String getMessage() {
return message;
}
/**
* Fija el valor de message
*
* @param pMessage nuevo Valor de message
*/
public void setMessage(String pMessage) {
message = pMessage;
}
/**
* Obtiene el valor de originalmessage
*
* @return valor de originalmessage
*/
public String getOriginalmessage() {
return originalmessage;
}
/**
* Fija el valor de originalmessage
*
* @param pOriginalmessage nuevo Valor de originalmessage
*/
public void setOriginalmessage(String pOriginalmessage) {
originalmessage = pOriginalmessage;
}
/**
* Obtiene el valor de reversemessage
*
* @return valor de reversemessage
*/
public String getReversemessage() {
return reversemessage;
}
/**
* Fija el valor de reversemessage
*
* @param pReversemessage nuevo Valor de reversemessage
*/
public void setReversemessage(String pReversemessage) {
reversemessage = pReversemessage;
}
/**
* Obtiene el valor de reverse
*
* @return valor de reverse
*/
public String getReverse() {
return reverse;
}
/**
* Fija el valor de reverse
*
* @param pReverse nuevo Valor de reverse
*/
public void setReverse(String pReverse) {
reverse = pReverse;
}
/**
* Obtiene el valor de originalamount
*
* @return valor de originalamount
*/
public BigDecimal getOriginalamount() {
return originalamount;
}
/**
* Fija el valor de originalamount
*
* @param pOriginalamount nuevo Valor de originalamount
*/
public void setOriginalamount(BigDecimal pOriginalamount) {
originalamount = pOriginalamount;
}
/**
* Obtiene el valor de pendingamount
*
* @return valor de pendingamount
*/
public BigDecimal getPendingamount() {
return pendingamount;
}
/**
* Fija el valor de pendingamount
*
* @param pPendingamount nuevo Valor de pendingamount
*/
public void setPendingamount(BigDecimal pPendingamount) {
pendingamount = pPendingamount;
}
/**
* Obtiene el valor de lastpayamount
*
* @return valor de lastpayamount
*/
public BigDecimal getLastpayamount() {
return lastpayamount;
}
/**
* Fija el valor de lastpayamount
*
* @param pLastpayamount nuevo Valor de lastpayamount
*/
public void setLastpayamount(BigDecimal pLastpayamount) {
lastpayamount = pLastpayamount;
}
/**
* Obtiene el valor de lastpay
*
* @return valor de lastpay
*/
public Date getLastpay() {
return lastpay;
}
/**
* Fija el valor de lastpay
*
* @param pLastpay nuevo Valor de lastpay
*/
public void setLastpay(Date pLastpay) {
lastpay = pLastpay;
}
/**
* Obtiene el valor de description
*
* @return valor de description
*/
public String getDescription() {
return description;
}
/**
* Fija el valor de description
*
* @param pDescription nuevo Valor de description
*/
public void setDescription(String pDescription) {
description = pDescription;
}
public boolean equals(Object rhs) {
if (rhs == null)
return false;
if (!(rhs instanceof TreceivableAccountDemanDepo))
return false;
TreceivableAccountDemanDepo that = (TreceivableAccountDemanDepo) rhs;
if (this.getPk() == null || that.getPk() == null)
return false;
return (this.getPk().equals(that.getPk()));
}
/**
* Implementación del metodo hashCode de la la entidad TreceivableAccountDemanDepo
*
* @return el hashCode la instancia
*/
public int hashCode() {
if (this.hashValue == 0) {
int result = 17;
if (this.getPk() == null) {
result = super.hashCode();
} else {
result = this.getPk().hashCode();
}
this.hashValue = result;
}
return this.hashValue;
}
/** Implementación toString */
public String toString() {
Field[] fs = this.getClass().getDeclaredFields();
String data = "";
for (Field f : fs) {
try {
String name = f.getName();
if (f.getType().getName().compareTo("java.util.Set") == 0)
continue;
if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0)
continue;
data += name + "=" + f.get(this) + ";";
} catch (Exception e) {
continue;
}
}
if (data.compareTo("") == 0) {
data = super.toString();
}
return data;
}
/** Implementación de la creación de un bean en blanco TreceivableAccountDemanDepo */
public Object createInstance() {
TreceivableAccountDemanDepo instance = new TreceivableAccountDemanDepo();
instance.setPk(new TreceivableAccountDemanDepoKey());
return instance;
}
/**
* Clona la entidad TreceivableAccountDemanDepo
*
* @see com.fp.dto.hb.HibernateBean#cloneMe()
*/
public Object cloneMe() throws CloneNotSupportedException {
TreceivableAccountDemanDepo p = (TreceivableAccountDemanDepo) this.clone();
p.setPk((TreceivableAccountDemanDepoKey) this.pk.cloneMe());
return p;
}
public Object getId() {
return this.pk;
}
//Metodos manuales.
/**Sentencia que obtiene una lista de TreceivableAccount dado un numero de mensaje. */
private static final String HQL_MSG = "from TreceivableAccountDemanDepo t " +
" where t.message = :message" ;
/**
* Entrega una lista de TreceivableAccount dado un numeor de mensaje.
* @param pEntityManager Referencia a la session de base de datos.
* @param pMessage Numero de mensaje a buscar registros de TreceivableAccount
* @return List<TreceivableAccount>
*/
@SuppressWarnings("unchecked")
public static List<TreceivableAccountDemanDepo> findByMessage(EntityManager pEntityManager,String pMessage) {
List<TreceivableAccountDemanDepo> ldata = null;
Query qry = pEntityManager.createQuery(HQL_MSG);
qry.setParameter("message", pMessage);
ldata = qry.getResultList();
return ldata;
}
/**Sentencia que obtiene una lista de TreceivableAccount dado un numero de mensaje orgiginal. */
private static final String HQL_ORIMSG = "from TreceivableAccountDemanDepo t " +
" where t.originalmessage = :originalmessage "+
" and t.message != t.originalmessage ";
/**
* Entrega una lista de TreceivableAccount dado un numeor de mensaje original.
* @param pEntityManager Referencia a la session de base de datos.
* @param pMessage Numero de mensaje a buscar registros de TreceivableAccount
* @return List<TreceivableAccount>
*/
@SuppressWarnings("unchecked")
public static List<TreceivableAccountDemanDepo> findByOriginalMessage(EntityManager pEntityManager,String pMessage) {
List<TreceivableAccountDemanDepo> ldata = null;
Query qry = pEntityManager.createQuery(HQL_ORIMSG);
qry.setParameter("originalmessage", pMessage);
ldata = qry.getResultList();
return ldata;
}
/** Sentencia que devuelve una lista de cuentas por cobrar, pendientes de pago.*/
private static String HQL_RECOVERY = " from TreceivableAccountDemanDepo ra "+
" where ra.pk.account = :account "+
" and ra.pk.dateto = :dateto "+
" and ra.pk.company = :company "+
" and ra.pk.partitiondb = :partition "+
" and ra.expiredate >= :accountingdate"+
" and ra.pendingamount > 0 "+
" order by ra.priority,ra.pk.creationdate ";
/**
* Metodo que entrega una lista de cuenta por pagar pendientes de pago.
* @param pEntityManager Referencia a una session de base de datos.
* @param pAccount Numero de cuenta por cobrar.
* @param pCompany Codido de compania asociada a la cuenta por cobrar.
* @param pAccountingDate Fecha contable.
* @return List<TreceivableAccount>
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static List<TreceivableAccountDemanDepo> find(EntityManager pEntityManager,String pAccount,Integer pCompany,
Date pAccountingDate) throws Exception {
List<TreceivableAccountDemanDepo> ldata = null;
Query qry = pEntityManager.createQuery(HQL_RECOVERY);
qry.setParameter("account", pAccount);
qry.setParameter("dateto", Constant.getDefaultExpiryDate());
qry.setParameter("company", pCompany);
qry.setParameter("partition", Constant.getPartition(Constant.getDefaultExpiryDate()));
qry.setParameter("accountingdate", pAccountingDate);
ldata = qry.getResultList();
return ldata;
}
/** Sentencia que devuelve un registro de la cuenta por pagar vigente, para la cuenta tipo de saldo grupo balance.*/
private static String HQL_VIGENT = " from TreceivableAccountDemanDepo ra "+
" where ra.pk.account = :account "+
" and ra.pk.dateto = :dateto "+
" and ra.pk.company = :company "+
" and ra.pk.partitiondb = :partition "+
" and ra.balancetype >= :balancetype "+
" and ra.balancegroup >= :balancegroup ";
/**
* Metodo que entrega una datos de cuenta por pagar dada la cuenta, tipo de saldo grupo de balance.
* @param pEntityManager Referencia a una session de base de datos.
* @param pAccount Numero de cuenta por cobrar.
* @param pCompany Codido de compania asociada a la cuenta por cobrar.
* @param pBalanceType Tipo de saldo.
* @param pBalanceGroup Grupo de balance.
* @return TreceivableAccount
* @throws Exception
*/
public static TreceivableAccountDemanDepo findVigent(EntityManager pEntityManager,String pAccount,Integer pCompany,
String pBalanceType,String pBalanceGroup) throws Exception {
TreceivableAccountDemanDepo obj = null;
Query qry = pEntityManager.createQuery(HQL_VIGENT);
qry.setParameter("account", pAccount);
qry.setParameter("dateto", Constant.getDefaultExpiryDate());
qry.setParameter("company", pCompany);
qry.setParameter("partition", Constant.getPartition(Constant.getDefaultExpiryDate()));
qry.setParameter("balancetype", pBalanceType);
qry.setParameter("balancegroup", pBalanceGroup);
try {
obj = (TreceivableAccountDemanDepo)qry.getSingleResult();
} catch (NoResultException e) {
return obj;
}
return obj;
}
}