364 lines
18 KiB
Plaintext
Executable File
364 lines
18 KiB
Plaintext
Executable File
package com.fp.armas.rules.save.funcionalidad;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.sql.Timestamp;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
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.TarmMovimientoArmas;
|
|
import com.fp.persistence.parmas.fun.TarmRegistroArmas;
|
|
import com.fp.persistence.parmas.fun.TarmTotalPersona;
|
|
import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo;
|
|
import com.fp.persistence.parmas.soli.TarmArmas;
|
|
import com.fp.sessionbeans.helper.Sequence;
|
|
|
|
/**
|
|
* Persiste las armas vendidas y los registros en caso de que sea venta
|
|
* @author
|
|
*
|
|
*/
|
|
public class VentasVariasArmasMovimiento extends TransactionRule {
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
/* (non-Javadoc)
|
|
* @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest)
|
|
*/
|
|
@Override
|
|
public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception {
|
|
EntityManager em = PersistenceHelper.getEntityManager();
|
|
|
|
TarmMovimientoArmas tarmMovimientoArmas=(TarmMovimientoArmas)pSaveRequest.get("tarmMovimientoArmas");
|
|
List<Object>tarmMovimientoArmasList = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("MOVIMIENTO");
|
|
List<Object>registroArmaCompradorList = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("TREGISTROARMAS");
|
|
List<Object>armaList = new ArrayList<>();
|
|
List<Object>totalPersonaList = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("VENTATOTALPERSONA");
|
|
//recorremos la lista de armas
|
|
List<Object> armas = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("VENTAVARIASARMAS");
|
|
if(armas.size()==0){
|
|
TarmArmas armar=(TarmArmas)pSaveRequest.getSaveBeanModifiedObject("VENTAVARIASARMAS");
|
|
armas.add(armar);
|
|
}
|
|
for (Object item : armas) {
|
|
TarmArmas arma =(TarmArmas)item;
|
|
//clonar movimiento por arma
|
|
TarmMovimientoArmas tarmMovimientoArmasclon=(TarmMovimientoArmas) tarmMovimientoArmas.cloneMe();
|
|
tarmMovimientoArmasclon.setCarma(arma.getPk());
|
|
tarmMovimientoArmasclon.setPk(getCodigoMovimiento());
|
|
//se llenan
|
|
TarmRegistroArmas registroArmaComprador= new TarmRegistroArmas();
|
|
//TODO
|
|
llenarDatosVentaArmas(tarmMovimientoArmasclon,arma,registroArmaComprador,registroArmaCompradorList,armaList,totalPersonaList,em);
|
|
|
|
tarmMovimientoArmasList.add(tarmMovimientoArmasclon);
|
|
}
|
|
armas.addAll(armaList);
|
|
return pSaveRequest;
|
|
}
|
|
|
|
private void llenarDatosVentaArmas(TarmMovimientoArmas tarmMovimientoArmas,TarmArmas arma,
|
|
TarmRegistroArmas registroArmaComprador,List<Object>registroArmaCompradorList,
|
|
List<Object>armaList,List<Object>totalPersonaList,EntityManager em) throws Exception{
|
|
//Si es venta
|
|
if(tarmMovimientoArmas.getTipomovimiento().equals("VENT")){//----------------------------------------------------------------------------------------------------------------------------------
|
|
//1 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());
|
|
}
|
|
//2. se genera un registro de arma con lo q queda en REG
|
|
TarmArmas armaQueda= (TarmArmas)arma.cloneMe();
|
|
armaQueda.setPk(getCodigoArmas());
|
|
armaQueda.setEstado("REG");
|
|
armaQueda.setFecharegistro(new java.sql.Date(new Date().getTime()));
|
|
Integer cantidadQueda=0;
|
|
BigDecimal pesoQueda=new BigDecimal(0);
|
|
if(armaQueda.getCantidad()!=null && armaQueda.getCantidad()>0 && armaQueda.getValorAux()>0 ){
|
|
cantidadQueda=armaQueda.getCantidad()-armaQueda.getValorAux();
|
|
armaQueda.setCantidad(cantidadQueda);
|
|
}
|
|
if(armaQueda.getPeso()!=null && armaQueda.getPeso().compareTo(new BigDecimal(0))>0 &&
|
|
armaQueda.getPesoAux()!=null && armaQueda.getPesoAux().compareTo(new BigDecimal(0))>0){
|
|
pesoQueda=armaQueda.getPeso().subtract(armaQueda.getPesoAux());
|
|
armaQueda.setPeso(pesoQueda);
|
|
}
|
|
//3.Nuevo TarmRegistroArma del nuevo propietario
|
|
registroArmaComprador.setPk(getCodigoRegistro());
|
|
registroArmaComprador.setPersoncode(tarmMovimientoArmas.getPersoncodecomprador());
|
|
registroArmaComprador.setTiporegistro(tarmMovimientoArmas.getTipomovimiento());
|
|
registroArmaComprador.setTiporegistrocodigo("TIPOREGISTRO");
|
|
registroArmaComprador.setFcreacion( new java.sql.Date(new Date().getTime()));
|
|
|
|
//4.Nuevo registro Arma con el uevo propietario
|
|
TarmArmas armaNuevoPropietario= (TarmArmas)arma.cloneMe();
|
|
armaNuevoPropietario.setPk(getCodigoArmas());
|
|
armaNuevoPropietario.setCregistro(registroArmaComprador.getPk());
|
|
armaNuevoPropietario.setEstado("REG");
|
|
armaNuevoPropietario.setFecharegistro(new java.sql.Date(new Date().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());
|
|
}
|
|
//5. 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.getValorAux()));
|
|
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());
|
|
//6. Se genera un registro de ING para el comprador
|
|
TarmTotalPersona totalPersonaComprador =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodecomprador());
|
|
totalPersonaComprador.setCarma(arma.getPk());
|
|
totalPersonaComprador.setIngresoegreso("ING");
|
|
totalPersonaComprador.setFecha(new Timestamp(new Date().getTime()));
|
|
|
|
if(arma.getCantidad()!=null && arma.getCantidad()>0 && arma.getValorAux()>0 ){
|
|
totalPersonaComprador.setCantidadmovimiento(new BigDecimal(arma.getValorAux()));
|
|
if(totalPersonaComprador.getTotal()==null){
|
|
totalPersonaComprador.setTotal(new BigDecimal(0));
|
|
}
|
|
}
|
|
if(arma.getPeso()!=null && arma.getPeso().compareTo(new BigDecimal(0))>0 &&
|
|
arma.getPesoAux()!=null && arma.getPesoAux().compareTo(new BigDecimal(0))>0){
|
|
totalPersonaComprador.setCantidadmovimiento(arma.getPesoAux());
|
|
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());
|
|
//registroarmas
|
|
registroArmaCompradorList.add(registroArmaComprador);
|
|
//se aniade las armas
|
|
armaList.add(armaVende);//VEND
|
|
armaList.add(armaQueda);//REG
|
|
armaList.add(armaNuevoPropietario);//REG
|
|
//los registros del total de persona
|
|
totalPersonaList.add(totalPersonaVendedor);
|
|
totalPersonaList.add(totalPersonaComprador);
|
|
arma=null;
|
|
}else if(tarmMovimientoArmas.getTipomovimiento().equals("CONS") || tarmMovimientoArmas.getTipomovimiento().equals("MATP")
|
|
|| tarmMovimientoArmas.getTipomovimiento().equals("MAT")){//-------------------------------------------------------------------------------------------------------------------------------
|
|
System.out.println("tipo de movimiento consumidor......"+tarmMovimientoArmas.getTipomovimiento());
|
|
if(tarmMovimientoArmas.getTipomovimiento().equals("MATP")){
|
|
tarmMovimientoArmas.setTipomovimiento("MAT");
|
|
}
|
|
|
|
//1 se genera un registro de arma o explosivo de lo que se consume en estado CONS
|
|
TarmArmas armaVende= (TarmArmas)arma.cloneMe();
|
|
armaVende.setPk(getCodigoArmas());
|
|
//armaVende.setEstado("CONS");
|
|
armaVende.setEstado(tarmMovimientoArmas.getTipomovimiento());
|
|
if(tarmMovimientoArmas.getTipomovimiento().equals("MAT")){
|
|
armaVende.setEstado("MATP");
|
|
}
|
|
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());
|
|
}
|
|
//2. se genera un registro de arma o explosivo con lo q queda en REG
|
|
TarmArmas armaQueda= (TarmArmas)arma.cloneMe();
|
|
armaQueda.setPk(getCodigoArmas());
|
|
armaQueda.setEstado("REG");
|
|
armaQueda.setFecharegistro(new java.sql.Date(new Date().getTime()));
|
|
Integer cantidadQueda=0;
|
|
BigDecimal pesoQueda=new BigDecimal(0);
|
|
if(armaQueda.getCantidad()!=null && armaQueda.getCantidad()>0 && armaQueda.getValorAux()>0 ){
|
|
cantidadQueda=armaQueda.getCantidad()-armaQueda.getValorAux();
|
|
armaQueda.setCantidad(cantidadQueda);
|
|
}
|
|
if(armaQueda.getPeso()!=null && armaQueda.getPeso().compareTo(new BigDecimal(0))>0 &&
|
|
armaQueda.getPesoAux()!=null && armaQueda.getPesoAux().compareTo(new BigDecimal(0))>0){
|
|
pesoQueda=armaQueda.getPeso().subtract(armaQueda.getPesoAux());
|
|
armaQueda.setPeso(pesoQueda);
|
|
}
|
|
//3. Se genera un registro TarmTotalPersona del que esta consumiendo se resta
|
|
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.getValorAux()));
|
|
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());
|
|
|
|
//se aniade las armas
|
|
armaList.add(armaVende);//CONS arma que consume
|
|
armaList.add(armaQueda);//REG lo que queda
|
|
//los registros del total de persona
|
|
totalPersonaList.add(totalPersonaVendedor);//total que le queda
|
|
arma=null;
|
|
}else if(tarmMovimientoArmas.getTipomovimiento().equals("TRASL")){//--------------------------------------------------------------------------------------------------------------------
|
|
//1. se genera un registro de arma con lo q queda en REG
|
|
TarmArmas armaQueda= (TarmArmas)arma.cloneMe();
|
|
armaQueda.setPk(getCodigoArmas());
|
|
armaQueda.setEstado("REG");
|
|
armaQueda.setFecharegistro(new java.sql.Date(new Date().getTime()));
|
|
Integer cantidadQueda=0;
|
|
BigDecimal pesoQueda=new BigDecimal(0);
|
|
if(armaQueda.getCantidad()!=null && armaQueda.getCantidad()>0 && armaQueda.getValorAux()>0 ){
|
|
cantidadQueda=armaQueda.getCantidad()-armaQueda.getValorAux();
|
|
armaQueda.setCantidad(cantidadQueda);
|
|
}
|
|
if(armaQueda.getPeso()!=null && armaQueda.getPeso().compareTo(new BigDecimal(0))>0 &&
|
|
armaQueda.getPesoAux()!=null && armaQueda.getPesoAux().compareTo(new BigDecimal(0))>0){
|
|
pesoQueda=armaQueda.getPeso().subtract(armaQueda.getPesoAux());
|
|
armaQueda.setPeso(pesoQueda);
|
|
}
|
|
//2.Nuevo TarmRegistroArma del nuevo propietario QUE SERIA LA MISMA PERSONA SE DIVIDE el explosivo
|
|
registroArmaComprador.setPk(getCodigoRegistro());
|
|
registroArmaComprador.setPersoncode(tarmMovimientoArmas.getPersoncodevendedor());
|
|
registroArmaComprador.setTiporegistro(tarmMovimientoArmas.getTipomovimiento());
|
|
registroArmaComprador.setTiporegistrocodigo("TIPOREGISTRO");
|
|
registroArmaComprador.setFcreacion( new java.sql.Date(new Date().getTime()));
|
|
|
|
//4.Nuevo registro Arma con el uevo propietario
|
|
TarmArmas armaNuevoPropietario= (TarmArmas)arma.cloneMe();
|
|
armaNuevoPropietario.setPk(getCodigoArmas());
|
|
armaNuevoPropietario.setCregistro(registroArmaComprador.getPk());
|
|
armaNuevoPropietario.setEstado("REG");
|
|
armaNuevoPropietario.setFecharegistro(new java.sql.Date(new Date().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());
|
|
}
|
|
//registroarmas
|
|
registroArmaCompradorList.add(registroArmaComprador);
|
|
//se aniade las armas
|
|
armaList.add(armaQueda);//REG se divide el explosivo
|
|
armaList.add(armaNuevoPropietario);//REG
|
|
arma=null;
|
|
}
|
|
}
|
|
|
|
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){
|
|
return tarmTotalPersonas.get(0);
|
|
}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;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public SaveRequest reverseProcess(SaveRequest arg0) throws Exception {
|
|
return arg0;
|
|
}
|
|
|
|
/**
|
|
* Metodo que devuelve la secuencia de un cliente.
|
|
* @return Codigo del nuevo cliente.
|
|
* @throws Exception
|
|
*/
|
|
private Long getCodigoRegistro() throws Exception {
|
|
Sequence sequence = new Sequence();
|
|
Long codigo = sequence.getNextValue("CREGISTRO").longValue();
|
|
return codigo;
|
|
}
|
|
|
|
/**
|
|
* Obtiene el secuencial de Armas
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
private String getCodigoArmas() throws Exception {
|
|
Sequence sequence = new Sequence();
|
|
String codigoArma = sequence.getNextValue("CARMA").toString();
|
|
return codigoArma;
|
|
}
|
|
|
|
/**
|
|
* Obtiene el secuencial de movimientos
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
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;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|