package com.fp.armas.rules.save.armas; import java.sql.Date; import javax.persistence.EntityManager; import com.fp.dto.rules.TransactionRule; import com.fp.dto.save.SaveRequest; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.parmas.fun.TarmRegistroArmas; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.sessionbeans.helper.Sequence; public class CambiarUsuarioArma extends TransactionRule { private static final long serialVersionUID = -7465655492847129136L; /** * Cambio el estado del arma y genero un nuevo registro para una nueva persona */ @Override public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { EntityManager entityManager = PersistenceHelper.getEntityManager(); TarmArmas arma = (TarmArmas) pRequest.get("ARMAACTUAL"); TcustPersonDetail persona = (TcustPersonDetail) pRequest.get("NUEVAPERSONA"); TarmRegistroArmas registroActual = TarmRegistroArmas.find(entityManager, arma.getCregistro()); //arma antigua genera un registro a cambio de propietario arma.setPk(getCodigoArma()); String estadoArmaAnterior=arma.getEstado(); arma.setEstado("CDP");//CAMBIO DE PROPIETARIO arma.setEstadocodigo("ESTADOARMA"); arma.setFecharegistro(new Date(new java.util.Date().getTime())); entityManager.persist(arma); //registro de la nueva cabecera del propietario TarmRegistroArmas registroArmas = new TarmRegistroArmas(); registroArmas.setPk(getCodigoRegistro()); registroArmas.setFcreacion(new Date(System.currentTimeMillis())); registroArmas.setAeropuertopuerto(registroActual.getAeropuertopuerto()); registroArmas.setDui(registroActual.getDui()); registroArmas.setFechasolicitud(registroActual.getFechasolicitud()); registroArmas.setPersoncode(persona.getPk().getPersoncode()); registroArmas.setFabricante(registroActual.getFabricante()); registroArmas.setPaisorigen(registroActual.getPaisorigen()); registroArmas.setTiporegistro("CDP");//CAMBIO DE PROPIETARIO registroArmas.setTiporegistrocodigo(registroActual.getTiporegistrocodigo()); registroArmas.setTramite(registroActual.getTramite()); registroArmas.setSolicitudnum(registroActual.getSolicitudnum()); registroArmas.setTotalfob(registroActual.getTotalfob()); entityManager.persist(registroArmas); //regisro de la nueva arma con el nuevo propietario TarmArmas armaNueva = (TarmArmas) arma.cloneMe(); armaNueva.setPk(getCodigoArma()); entityManager.detach(armaNueva); armaNueva.setEstado(estadoArmaAnterior);//se mantiene el mismo estado del arma armaNueva.setFecharegistro(new Date(new java.util.Date().getTime())); armaNueva.setCregistro(registroArmas.getPk()); //armaNueva.setCodigoarma(armaNueva.getPk()); entityManager.persist(armaNueva); return pRequest; } @Override public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { return pRequest; } private Long getCodigoRegistro() throws Exception{ Sequence sequence = new Sequence(); Long cregistro = sequence.getNextValue("CREGISTRO").longValue(); return cregistro; } private String getCodigoArma() throws Exception{ Sequence sequence = new Sequence(); String carma = sequence.getNextValue("CARMA").toString(); return carma; } }