fixes bug #8371
git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@66065 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
98755d5ceb
commit
7b757d5cc4
|
@ -10,6 +10,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||||
import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque;
|
import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque;
|
||||||
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
||||||
|
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -26,7 +27,7 @@ public interface PuntoVentaDAO extends GenericDAO<PuntoVenta, Integer> {
|
||||||
|
|
||||||
public List<PuntoVenta> buscaPuntoVentaParada(Parada parada);
|
public List<PuntoVenta> buscaPuntoVentaParada(Parada parada);
|
||||||
|
|
||||||
public List<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa);
|
public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa);
|
||||||
|
|
||||||
public List<PuntoVenta> buscarPuntoVentaSubordinados(PuntoVenta puntoVenta);
|
public List<PuntoVenta> buscarPuntoVentaSubordinados(PuntoVenta puntoVenta);
|
||||||
|
|
||||||
|
|
|
@ -8,16 +8,16 @@ import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.hibernate.Criteria;
|
import org.hibernate.Criteria;
|
||||||
import org.hibernate.FetchMode;
|
|
||||||
import org.hibernate.Query;
|
import org.hibernate.Query;
|
||||||
import org.hibernate.Session;
|
import org.hibernate.SQLQuery;
|
||||||
import org.hibernate.SessionFactory;
|
import org.hibernate.SessionFactory;
|
||||||
import org.hibernate.criterion.Criterion;
|
import org.hibernate.criterion.Criterion;
|
||||||
import org.hibernate.criterion.MatchMode;
|
import org.hibernate.criterion.MatchMode;
|
||||||
import org.hibernate.criterion.Order;
|
import org.hibernate.criterion.Order;
|
||||||
import org.hibernate.criterion.Projection;
|
|
||||||
import org.hibernate.criterion.Restrictions;
|
import org.hibernate.criterion.Restrictions;
|
||||||
import org.hibernate.transform.AliasToBeanResultTransformer;
|
import org.hibernate.transform.AliasToBeanResultTransformer;
|
||||||
|
import org.hibernate.type.IntegerType;
|
||||||
|
import org.hibernate.type.StringType;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
@ -28,7 +28,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||||
import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque;
|
import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque;
|
||||||
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Usuario;
|
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -109,13 +109,49 @@ public class PuntoVentaHibernateDAO extends GenericHibernateDAO<PuntoVenta, Inte
|
||||||
return c.list();
|
return c.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa) {
|
public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa) {
|
||||||
Criteria c = getSession().createCriteria(getPersistentClass());
|
StringBuilder sb = new StringBuilder();
|
||||||
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
sb.append(" select ");
|
||||||
c.add(Restrictions.eq("empresa", empresa));
|
sb.append(" DISTINCT ");
|
||||||
c.addOrder(Order.asc("nombpuntoventa"));
|
sb.append(" pvaux.PUNTOVENTA_ID as puntoventaId, ");
|
||||||
|
sb.append(" pvaux.NOMBPUNTOVENTA as nombpuntoventa ");
|
||||||
|
sb.append(" from ");
|
||||||
|
sb.append(" PUNTO_VENTA pvaux ");
|
||||||
|
sb.append(" join PTOVTA_EMPRESA PTOVTAE ");
|
||||||
|
sb.append(" ON (PTOVTAE.PUNTOVENTA_ID = PVAUX.PUNTOVENTA_ID) ");
|
||||||
|
sb.append(" where ");
|
||||||
|
sb.append(" pvaux.PUNTOVENTA_ID not in ( ");
|
||||||
|
sb.append(" SELECT ");
|
||||||
|
sb.append(" DISTINCT pv.PUNTOVENTA_ID ");
|
||||||
|
sb.append(" FROM ");
|
||||||
|
sb.append(" PUNTO_VENTA pv ");
|
||||||
|
sb.append(" INNER JOIN ");
|
||||||
|
sb.append(" ESTACION E ");
|
||||||
|
sb.append(" ON pv.PUNTOVENTA_ID = E .PUNTOVENTA_ID ");
|
||||||
|
sb.append(" INNER JOIN ");
|
||||||
|
sb.append(" ESTACION_IMPRESORA ei ");
|
||||||
|
sb.append(" ON ei.ESTACION_ID = E .ESTACION_ID ");
|
||||||
|
sb.append(" WHERE ");
|
||||||
|
sb.append(" ( (ei.TIPOIMPRESSORA = 1 ");
|
||||||
|
sb.append(" OR ei.TIPOIMPRESSORA = 2) ) ");
|
||||||
|
sb.append(" AND ei.ACTIVO = 1 ");
|
||||||
|
sb.append(" AND ei.EMPRESA_ID = :empresa_id ");
|
||||||
|
sb.append(" /* ORDER BY PUNTOVENTA_ID*/ ");
|
||||||
|
sb.append(" ) ");
|
||||||
|
sb.append(" and PTOVTAE.EMPRESA_ID = :empresa_id ");
|
||||||
|
sb.append(" and PTOVTAE.ACTIVO = 1 ");
|
||||||
|
sb.append(" AND pvaux.ACTIVO = 1 ");
|
||||||
|
sb.append(" AND pvaux.PUNTOVENTA_ID <> -1 ");
|
||||||
|
sb.append(" ORDER BY ");
|
||||||
|
sb.append(" pvaux.PUNTOVENTA_ID ");
|
||||||
|
SQLQuery sql = getSession().createSQLQuery(sb.toString())
|
||||||
|
.addScalar("puntoventaId", IntegerType.INSTANCE)
|
||||||
|
.addScalar("nombpuntoventa", StringType.INSTANCE);
|
||||||
|
sql.setInteger("empresa_id", empresa.getEmpresaId());
|
||||||
|
sql.setResultTransformer(new AliasToBeanResultTransformer(PuntoVentaVO.class));
|
||||||
|
List<PuntoVentaVO> puntosVenta = sql.list();
|
||||||
|
return puntosVenta;
|
||||||
|
|
||||||
return c.list();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -291,7 +291,10 @@ public class PuntoVenta implements Serializable {
|
||||||
public PuntoVenta(Integer puntoventaId) {
|
public PuntoVenta(Integer puntoventaId) {
|
||||||
this.puntoventaId = puntoventaId;
|
this.puntoventaId = puntoventaId;
|
||||||
}
|
}
|
||||||
|
public PuntoVenta(Integer puntoventaId, String nombpuntoventa ) {
|
||||||
|
this.puntoventaId = puntoventaId;
|
||||||
|
this.nombpuntoventa = nombpuntoventa;
|
||||||
|
}
|
||||||
public Integer getPuntoventaId() {
|
public Integer getPuntoventaId() {
|
||||||
return puntoventaId;
|
return puntoventaId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.rjconsultores.ventaboletos.entidad;
|
||||||
|
|
||||||
|
public class PuntoVentaVO {
|
||||||
|
|
||||||
|
private Integer puntoventaId;
|
||||||
|
public String nombpuntoventa;
|
||||||
|
|
||||||
|
public String getNombpuntoventa() {
|
||||||
|
return nombpuntoventa;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNombpuntoventa(String nombpuntoventa) {
|
||||||
|
this.nombpuntoventa = nombpuntoventa;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getPuntoventaId() {
|
||||||
|
return puntoventaId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPuntoventaId(Integer puntoventaId) {
|
||||||
|
this.puntoventaId = puntoventaId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString(){
|
||||||
|
return nombpuntoventa;
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ import java.util.List;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Empresa;
|
import com.rjconsultores.ventaboletos.entidad.Empresa;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||||
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
||||||
|
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Usuario;
|
import com.rjconsultores.ventaboletos.entidad.Usuario;
|
||||||
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
||||||
import com.rjconsultores.ventaboletos.exception.IntegracionException;
|
import com.rjconsultores.ventaboletos.exception.IntegracionException;
|
||||||
|
@ -44,5 +45,5 @@ public interface PuntoVentaService {
|
||||||
|
|
||||||
public List<PuntoVenta> buscarPuntosVentaPorUsuario(Usuario usuario);
|
public List<PuntoVenta> buscarPuntosVentaPorUsuario(Usuario usuario);
|
||||||
|
|
||||||
public List<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa);
|
public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ import com.rjconsultores.ventaboletos.entidad.Conferencia;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Empresa;
|
import com.rjconsultores.ventaboletos.entidad.Empresa;
|
||||||
import com.rjconsultores.ventaboletos.entidad.LogConferencia;
|
import com.rjconsultores.ventaboletos.entidad.LogConferencia;
|
||||||
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
||||||
|
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
|
||||||
import com.rjconsultores.ventaboletos.enums.IndStatusBoleto;
|
import com.rjconsultores.ventaboletos.enums.IndStatusBoleto;
|
||||||
import com.rjconsultores.ventaboletos.enums.comissao.BoletoStatusComissao;
|
import com.rjconsultores.ventaboletos.enums.comissao.BoletoStatusComissao;
|
||||||
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
||||||
|
@ -629,60 +630,68 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic
|
||||||
|
|
||||||
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
|
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
|
||||||
public void generacionAutomaticaConferencia() {
|
public void generacionAutomaticaConferencia() {
|
||||||
List<PuntoVenta> lsPuntoVenta;
|
List<PuntoVentaVO> lsPuntoVenta;
|
||||||
List<ConferenciaComissaoVO> lsConferenciaComissao;
|
List<ConferenciaComissaoVO> lsConferenciaComissao;
|
||||||
Conferencia conferencia;
|
Conferencia conferencia;
|
||||||
// Perocorrer todas as empresas cadastradas
|
// Perocorrer todas as empresas cadastradas
|
||||||
List<Empresa> lsEmpresa = empresaService.obtenerTodos();
|
List<Empresa> lsEmpresa = empresaService.obtenerTodos();
|
||||||
for (Empresa empresa : lsEmpresa) {
|
for (Empresa empresa : lsEmpresa) {
|
||||||
lsPuntoVenta = puntoVentaService.buscaPuntoVentaEmpresa(empresa);
|
lsPuntoVenta = puntoVentaService.buscaPuntoVentaEmpresaSemECF(empresa);
|
||||||
for (PuntoVenta puntoVenta : lsPuntoVenta) {
|
for (PuntoVentaVO puntoVentaVO : lsPuntoVenta) {
|
||||||
|
//TODO - Apagar comentários após finalizar testes mantis 8371
|
||||||
|
//if(empresa.getEmpresaId() == 20){
|
||||||
|
// System.out.println("Teste");
|
||||||
|
//}
|
||||||
// Valida se cada ponto de venda tem ao menos uma ecf, caso tenha aborta o processo.
|
// Valida se cada ponto de venda tem ao menos uma ecf, caso tenha aborta o processo.
|
||||||
Integer qtdadeECF = quantidadeECFPorPuntoVenta(empresa.getEmpresaId(), puntoVenta.getPuntoventaId());
|
//Integer qtdadeECF = quantidadeECFPorPuntoVenta(empresa.getEmpresaId(), puntoVenta.getPuntoventaId());
|
||||||
if (qtdadeECF >= 1) {
|
//if (qtdadeECF >= 1) {
|
||||||
log.info("Existe ECF para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDate());
|
// log.info("Existe ECF para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDate());
|
||||||
continue;
|
// continue;
|
||||||
}
|
//}
|
||||||
|
//if(empresa.getEmpresaId() == 20 && puntoVentaVO.getPuntoventaId()==636){
|
||||||
|
// System.out.println("Teste");
|
||||||
|
//}
|
||||||
try {
|
try {
|
||||||
|
PuntoVenta puntoVenta = new PuntoVenta(puntoVentaVO.getPuntoventaId(), puntoVentaVO.getNombpuntoventa());
|
||||||
// Busca o Movimento para o dia de ontem, caso não exista aborta para este ponto de venda
|
// Busca o Movimento para o dia de ontem, caso não exista aborta para este ponto de venda
|
||||||
lsConferenciaComissao = carregarConferenciaComissao(null, empresa, puntoVenta, DateUtil.getYesterdayDate());
|
lsConferenciaComissao = carregarConferenciaComissao(null, empresa, puntoVenta, DateUtil.getYesterdayDate());
|
||||||
if ((CollectionUtils.isEmpty(lsConferenciaComissao)) || (!CollectionUtils.isEmpty(lsConferenciaComissao.get(0).getDias()) && lsConferenciaComissao.get(0).getDias().size() < 1)) {
|
if ((CollectionUtils.isEmpty(lsConferenciaComissao)) || (!CollectionUtils.isEmpty(lsConferenciaComissao.get(0).getDias()) && lsConferenciaComissao.get(0).getDias().size() < 1)) {
|
||||||
log.info("Não há conferência para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString());
|
log.info("Não há conferência para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Confirma chegada do malote
|
// Confirma chegada do malote
|
||||||
conferencia = obtenerConferenciaDataMovimento(DateUtil.getYesterdayDate(), puntoVenta.getPuntoventaId(), empresa.getEmpresaId());
|
conferencia = obtenerConferenciaDataMovimento(DateUtil.getYesterdayDate(), puntoVentaVO.getPuntoventaId(), empresa.getEmpresaId());
|
||||||
if (conferencia == null) {
|
if (conferencia == null) {
|
||||||
conferencia = new Conferencia();
|
conferencia = new Conferencia();
|
||||||
conferencia.setActivo(Boolean.TRUE);
|
conferencia.setActivo(Boolean.TRUE);
|
||||||
conferencia.setFecmodif(new Date());
|
conferencia.setFecmodif(new Date());
|
||||||
conferencia.setUsuarioId(1);
|
conferencia.setUsuarioId(1);
|
||||||
conferencia.setEmpresa(empresa);
|
conferencia.setEmpresa(empresa);
|
||||||
conferencia.setPuntoVenta(new PuntoVenta( puntoVenta.getPuntoventaId()));
|
conferencia.setPuntoVenta(new PuntoVenta( puntoVentaVO.getPuntoventaId()));
|
||||||
conferencia.setDatamovimento(DateUtil.getYesterdayDate());
|
conferencia.setDatamovimento(DateUtil.getYesterdayDate());
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//Se existe a conferência com status conferido para esta empresa e ponto de venda no dia de ontem, aborta.
|
//Se existe a conferência com status conferido para esta empresa e ponto de venda no dia de ontem, aborta.
|
||||||
if(Boolean.TRUE == conferencia.getIndconferido()){
|
if(Boolean.TRUE == conferencia.getIndconferido()){
|
||||||
log.info("Já existe conferência com status conferido para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString());
|
log.info("Já existe conferência com status conferido para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Valida se existe alguma pendência que impede o fechamento.
|
//Valida se existe alguma pendência que impede o fechamento.
|
||||||
if(!validaConferencia(conferencia)){
|
if(!validaConferencia(conferencia)){
|
||||||
log.info("Será necessário realizar Conferência Manual para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString());
|
log.info("Não há bilhetes para conferir ou será necessário realizar Conferência Manual para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Confirma chegada do malote
|
//Confirma chegada do malote
|
||||||
conferencia = confirmarChegadaMalote(conferencia);
|
conferencia = confirmarChegadaMalote(conferencia);
|
||||||
log.info("Realizado confirmação de chegada do malote para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString());
|
log.info("Realizado confirmação de chegada do malote para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString());
|
||||||
|
|
||||||
// Encerra Movimento
|
// Encerra Movimento
|
||||||
encerrarMovimentoDiario(conferencia);
|
encerrarMovimentoDiario(conferencia);
|
||||||
log.info("Conferência de Movimento para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString() + "realizada com sucesso.");
|
log.info("Conferência de Movimento para o Ponto de Venda " + puntoVentaVO.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString() + "realizada com sucesso.");
|
||||||
} catch (BusinessException e) {
|
} catch (BusinessException e) {
|
||||||
log.error("Erro ao buscar/validar conferência para o dia " + DateUtil.getYesterdayDateString(), e);
|
log.error("Erro ao buscar/validar conferência para o dia " + DateUtil.getYesterdayDateString(), e);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -30,6 +30,7 @@ import com.rjconsultores.ventaboletos.entidad.Estacion;
|
||||||
import com.rjconsultores.ventaboletos.entidad.FormaPagoDet;
|
import com.rjconsultores.ventaboletos.entidad.FormaPagoDet;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||||
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
||||||
|
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Usuario;
|
import com.rjconsultores.ventaboletos.entidad.Usuario;
|
||||||
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
||||||
import com.rjconsultores.ventaboletos.exception.IntegracionException;
|
import com.rjconsultores.ventaboletos.exception.IntegracionException;
|
||||||
|
@ -735,8 +736,8 @@ public class PuntoVentaServiceImpl implements PuntoVentaService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa) {
|
public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa) {
|
||||||
return puntoVentaDAO.buscaPuntoVentaEmpresa(empresa);
|
return puntoVentaDAO.buscaPuntoVentaEmpresaSemECF(empresa);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue