210 lines
10 KiB
Plaintext
Executable File
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;
|
|
}
|
|
}
|
|
|
|
}
|