maia/.svn/pristine/41/41c64c327afa9ad0dbc371509c5...

210 lines
10 KiB
Plaintext
Executable File

package com.fp.armas.task.traspasodominio;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
import com.fp.armas.rules.exception.ControlArmasException;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.parmas.fun.TarmMovimientoArmas;
import com.fp.persistence.parmas.fun.TarmRegistroArmas;
import com.fp.persistence.parmas.fun.TarmTotalPersona;
import com.fp.persistence.parmas.fun.TarmVentaArmaTem;
import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo;
import com.fp.persistence.parmas.soli.TarmArmas;
import com.fp.sessionbeans.helper.Sequence;
import com.fp.simple.action.TaskAction;
/**
* Clase que se encarga de buscar el grupo para asignar la tarea
* una tarea.
*
* @version 2.1
*/
public class TraspasoDominio extends TaskAction {
/*
* (non-Javadoc)
*
* @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request)
*/
@SuppressWarnings({ "unchecked", "deprecation" })
@Override
public void assignOwner(Object pParam) throws Exception {
EntityManager em=PersistenceHelper.getEntityManager();
System.out.println("Ingresa a traspaso dominio");
HashMap<String, Object> m = (HashMap<String, Object>) pParam;
Map<String, Object> mrequest = (Map<String, Object>) m.get("request");
if (mrequest.get("csolicitud") == null) {
m.put("grupo",null);
throw new ControlArmasException("BPM-0014", "SIN CODIGO", "");
}
String csolicitud=mrequest.get("csolicitud").toString();
TarmArmas arma= TarmArmas.find(em, csolicitud);
List<TarmVentaArmaTem>listaventa= em.createQuery("select p from TarmVentaArmaTem p where p.carma=:carma and p.estado=:estado")
.setParameter("carma", arma.getPk())
.setParameter("estado", "PENDIENTE")
.getResultList();
for (TarmVentaArmaTem item : listaventa) {
item.setEstado("APROBADO");
em.merge(item);
}
arma.setEstadoventa(null);
TarmRegistroArmas registro = TarmRegistroArmas.find(em, arma.getCregistro());
//1nuevo TarmRegistroArma del nuevo propietario
TarmRegistroArmas registroArmaComprador= new TarmRegistroArmas();
registroArmaComprador.setPk(getCodigoRegistro());
registroArmaComprador.setPersoncode(listaventa.get(0).getPersoncodigo());
registroArmaComprador.setTiporegistro("VENT");
registroArmaComprador.setTiporegistrocodigo("TIPOREGISTRO");
registroArmaComprador.setFcreacion( new java.sql.Date(new Date().getTime()));
em.persist(registroArmaComprador);
//2
TarmMovimientoArmas tarmMovimientoArmas=new TarmMovimientoArmas();
tarmMovimientoArmas.setPk(getCodigoMovimiento());
tarmMovimientoArmas.setCarma(arma.getPk());
tarmMovimientoArmas.setFactura(listaventa.get(0).getFactura());
tarmMovimientoArmas.setNoregistro(listaventa.get(0).getNoregistra());
tarmMovimientoArmas.setFecha(new Timestamp(new Date().getTime()));
tarmMovimientoArmas.setPersoncodecomprador(listaventa.get(0).getPersoncodigo());
tarmMovimientoArmas.setPersoncodevendedor(registro.getPersoncode());
tarmMovimientoArmas.setTipomovimientocodigo("TIPOMOVIMIENTO");
tarmMovimientoArmas.setTipomovimiento("VENT");
tarmMovimientoArmas.setJustificacion(listaventa.get(0).getJustificacion());
em.persist(tarmMovimientoArmas);em.flush();
//3 Se genera un registro TarmTotalPersona del que vende
TarmTotalPersona totalPersonaVendedor =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodevendedor());
totalPersonaVendedor.setCarma(arma.getPk());
totalPersonaVendedor.setIngresoegreso("EGR");
totalPersonaVendedor.setFecha(new Timestamp(new Date().getTime()));
//if(arma.getCantidad()!=null && arma.getCantidad()>0 && arma.getValorAux()>0 ){
totalPersonaVendedor.setCantidadmovimiento(new BigDecimal(arma.getCantidad()));
if(totalPersonaVendedor.getTotal()==null){
totalPersonaVendedor.setTotal(new BigDecimal(arma.getCantidad()));
}
//}
// if(arma.getPeso()!=null && arma.getPeso().compareTo(new BigDecimal(0))>0 &&
// arma.getPesoAux()!=null && arma.getPesoAux().compareTo(new BigDecimal(0))>0){
// totalPersonaVendedor.setCantidadmovimiento(arma.getPesoAux());
// if(totalPersonaVendedor.getTotal()==null){
// totalPersonaVendedor.setTotal(arma.getPeso());
// }
// }
totalPersonaVendedor.setCmovimiento(tarmMovimientoArmas.getPk());
totalPersonaVendedor.setSaldoanterior(totalPersonaVendedor.getTotal());
totalPersonaVendedor.setTotal(totalPersonaVendedor.getTotal().subtract(totalPersonaVendedor.getCantidadmovimiento()));
totalPersonaVendedor.setPk(getCtotal());
em.merge(totalPersonaVendedor);em.flush();
//3.1. Se genera un registro de ING para el comprador
TarmTotalPersona totalPersonaComprador =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodecomprador());
totalPersonaComprador.setCarma(arma.getPk());
totalPersonaComprador.setIngresoegreso("ING");
Date fechaActual1=new Date();
fechaActual1.setSeconds(fechaActual1.getSeconds()+2);
totalPersonaComprador.setFecha(new Timestamp(fechaActual1.getTime()));
totalPersonaComprador.setCantidadmovimiento(new BigDecimal(arma.getCantidad()));
if(totalPersonaComprador.getTotal()==null){
totalPersonaComprador.setTotal(new BigDecimal(0));
}
totalPersonaComprador.setCmovimiento(tarmMovimientoArmas.getPk());
totalPersonaComprador.setSaldoanterior(totalPersonaComprador.getTotal());
totalPersonaComprador.setTotal(totalPersonaComprador.getTotal().add(totalPersonaComprador.getCantidadmovimiento()));
totalPersonaComprador.setPk(getCtotal());
em.merge(totalPersonaComprador);
//4 se genera un registro de arma con lo que se vende
TarmArmas armaVende= (TarmArmas)arma.cloneMe();
armaVende.setPk(getCodigoArmas());
armaVende.setEstado("VEND");
armaVende.setFecharegistro(new java.sql.Date(new Date().getTime()));
if(armaVende.getCantidad()!=null && armaVende.getCantidad()>0 && armaVende.getValorAux()>0 ){
armaVende.setCantidad(armaVende.getValorAux());
}
if(armaVende.getPeso()!=null && armaVende.getPeso().compareTo(new BigDecimal(0))>0 &&
armaVende.getPesoAux()!=null && armaVende.getPesoAux().compareTo(new BigDecimal(0))>0){
armaVende.setPeso(armaVende.getPesoAux());
}
em.persist(armaVende);
//4.1 Nuevo registro Arma con el nuevo propietario
TarmArmas armaNuevoPropietario= (TarmArmas)arma.cloneMe();
armaNuevoPropietario.setPk(getCodigoArmas());
armaNuevoPropietario.setCregistro(registroArmaComprador.getPk());
armaNuevoPropietario.setEstado("REG");
Date fechaActual=new Date();
fechaActual.setSeconds(fechaActual.getSeconds()+2);
armaNuevoPropietario.setFecharegistro(new java.sql.Date(fechaActual.getTime()));
if(armaNuevoPropietario.getCantidad()!=null && armaNuevoPropietario.getCantidad()>0 && armaNuevoPropietario.getValorAux()>0 ){
armaNuevoPropietario.setCantidad(armaNuevoPropietario.getValorAux());
}
if(armaNuevoPropietario.getPeso()!=null && armaNuevoPropietario.getPeso().compareTo(new BigDecimal(0))>0 &&
armaNuevoPropietario.getPesoAux()!=null && armaNuevoPropietario.getPesoAux().compareTo(new BigDecimal(0))>0){
armaNuevoPropietario.setPeso(armaNuevoPropietario.getPesoAux());
}
em.persist(armaNuevoPropietario);
}
private String getCodigoArmas() throws Exception {
Sequence sequence = new Sequence();
String codigoArma = sequence.getNextValue("CARMA").toString();
return codigoArma;
}
private Long getCodigoRegistro() throws Exception {
Sequence sequence = new Sequence();
Long codigo = sequence.getNextValue("CREGISTRO").longValue();
return codigo;
}
private String getCodigoMovimiento() throws Exception {
Sequence sequence = new Sequence();
String codigoArma = sequence.getNextValue("CMOVIMIENTO").toString();
return codigoArma;
}
private String getCtotal() throws Exception {
Sequence sequence = new Sequence();
String codigoArma = sequence.getNextValue("CTOTAL").toString();
return codigoArma;
}
public TarmTotalPersona totalPersona(EntityManager em,String ctipoarmaexplosivo,Integer personcodigo) throws Exception{
TarmTipoArmaExplosivo armaExplosivo= TarmTipoArmaExplosivo.find(em,ctipoarmaexplosivo);
String sql ="select t from TarmTotalPersona t where t.clase='"+armaExplosivo.getClase()+"' and t.tipoarmaexplosivo='"+armaExplosivo.getTipoarmaexplosivo()+"' and t.unidadmedidapeso='"+armaExplosivo.getUnidadmedidapeso()+"' "
+ " and t.personcodigo="+personcodigo+" and t.fecha =(select max(t1.fecha) from TarmTotalPersona t1"
+ " where t1.clase='"+armaExplosivo.getClase()+"' and t1.tipoarmaexplosivo='"+armaExplosivo.getTipoarmaexplosivo()+"' and t1.unidadmedidapeso='"+armaExplosivo.getUnidadmedidapeso()+"' "
+ " and t1.personcodigo="+personcodigo+")";
System.out.println("query totalPersoan....:"+sql);
List<TarmTotalPersona>tarmTotalPersonas= em.createQuery(sql,TarmTotalPersona.class).getResultList();
if(tarmTotalPersonas!=null && tarmTotalPersonas.size()>0){
TarmTotalPersona total=(TarmTotalPersona)tarmTotalPersonas.get(0).cloneMe();
total.setPk(null);
return total;
}else{
TarmTotalPersona totalPersona= new TarmTotalPersona();
totalPersona.setClase(armaExplosivo.getClase());
totalPersona.setClasecodigo("CLASE");
totalPersona.setTipoarmaexplosivo(armaExplosivo.getTipoarmaexplosivo());
totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO");
totalPersona.setUnidadmedidapeso(armaExplosivo.getUnidadmedidapeso());
totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA");
totalPersona.setPersoncodigo(personcodigo);
totalPersona.setTotal(null);
totalPersona.setSaldoanterior(new BigDecimal(0));
totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO");
return totalPersona;
}
}
}