|
|
|
@ -26,6 +26,7 @@ import it.tref.liferay.portos.bo.shared.util.PagamentoConstants;
|
|
|
|
|
import it.tref.liferay.portos.bo.shared.util.TipoIntegrazioneUtil; |
|
|
|
|
import it.tref.liferay.portos.bo.shared.util.TipoSoggettoUtil; |
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Calendar; |
|
|
|
@ -46,432 +47,455 @@ import com.liferay.portal.service.ServiceContext;
|
|
|
|
|
|
|
|
|
|
public abstract class PagamentiUtil { |
|
|
|
|
|
|
|
|
|
private static final Log _log = LogFactoryUtil.getLog(PagamentiUtil.class); |
|
|
|
|
|
|
|
|
|
public static void verificaPagamentoIRIS(Pagamento pagamento) throws SystemException, PortalException { |
|
|
|
|
|
|
|
|
|
// long companyId = pagamento.getCompanyId();
|
|
|
|
|
// long groupId = pagamento.getGroupId();
|
|
|
|
|
//
|
|
|
|
|
// InformazioniPagamentoType[] statoPagamentiType =
|
|
|
|
|
// IrisVerificaPagamenti
|
|
|
|
|
// .verificaPagamenti(companyId, groupId, pagamento.getCodice(), pagamento.getTipoPagamento());
|
|
|
|
|
|
|
|
|
|
// List<InformazioniPagamentoType> infoPagamentoTypes =
|
|
|
|
|
// IrisVerificaPagamenti
|
|
|
|
|
// .verificaPagamenti(companyId, groupId, pagamento.getCodice(), pagamento.getTipoPagamento());
|
|
|
|
|
// String statoPagamento = StringPool.BLANK;
|
|
|
|
|
// if (infoPagamentoTypes != null) {
|
|
|
|
|
// InformazioniPagamentoType infoPagamentoType = infoPagamentoTypes.get(0);
|
|
|
|
|
// if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_NON_PRESENTE))
|
|
|
|
|
// {
|
|
|
|
|
// // "Posizione non presente" -> si riprova successivamente
|
|
|
|
|
// return;
|
|
|
|
|
// } else if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_NON_PAGABILE))
|
|
|
|
|
// {
|
|
|
|
|
// // "Posizione non pagabile" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE;
|
|
|
|
|
// } else if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_NON_PAGATA))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento non eseguito" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
// } else if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_CON_PAG_IN_CORSO))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento non eseguito" -> esito in corso
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_IN_CORSO;
|
|
|
|
|
// return;
|
|
|
|
|
// } else if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_PAGATA)
|
|
|
|
|
// ||
|
|
|
|
|
// infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_PAGATA_SBF))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento eseguito" -> esito positivo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_PAGATA;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// String statoPagamento = StringPool.BLANK;
|
|
|
|
|
// if (statoPagamentiType != null) {
|
|
|
|
|
// InformazioniPagamentoType statoPagamentoType = statoPagamentiType[0];
|
|
|
|
|
// String statoPendenza = statoPagamentoType.getStato().getValue();
|
|
|
|
|
//
|
|
|
|
|
// if (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGATA)) {
|
|
|
|
|
// if (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase(
|
|
|
|
|
// VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGATA)) {
|
|
|
|
|
// // "Posizione non presente" -> si riprova successivamente
|
|
|
|
|
// return;
|
|
|
|
|
// } else if (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase("PAG_NON_ESEGUITO")) {
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
// }
|
|
|
|
|
// } else if (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGABILE)) {
|
|
|
|
|
// // "Posizione non pagabile" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE;
|
|
|
|
|
// // } else if (statoPendenza.equals(StatoPagamentoType._value3)) {
|
|
|
|
|
// // "Pagamento non ancora eseguito" -> si riprova successivamente
|
|
|
|
|
// // if (!pagamento.getOtf()) {
|
|
|
|
|
// // return;
|
|
|
|
|
// // }
|
|
|
|
|
// // "Pagamento non eseguito" -> esito negativo
|
|
|
|
|
// // statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
// } else if (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_PAGATA)
|
|
|
|
|
// || statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_PAGATA_SBF)) {
|
|
|
|
|
// // "Pagamento eseguito" -> esito positivo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_PAGATA;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPendenza.equals(VerificaStatoPagamentoDettagliato.POSIZIONE_CON_PAG_IN_CORSO)) {
|
|
|
|
|
// // "Pagamento non eseguito" -> esito in corso
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_IN_CORSO;
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// StatoPagamentoType statoPagamentoType = statoPagamentiType[0];
|
|
|
|
|
// if (statoPagamentoType.enumValue().equals(VerificaStatoPagamento.POSIZIONE_NON_PRESENTE)) {
|
|
|
|
|
// // "Posizione non presente" -> si riprova successivamente
|
|
|
|
|
// return;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPagamentoType.enumValue().equals(VerificaStatoPagamento.POSIZIONE_NON_PAGABILE)) {
|
|
|
|
|
// // "Posizione non pagabile" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPagamentoType.enumValue().equals(VerificaStatoPagamento.PAGAMENTO_NON_ESEGUITO)) {
|
|
|
|
|
// // "Pagamento non ancora eseguito" -> si riprova successivamente
|
|
|
|
|
// if (!pagamento.getOtf()) {
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// // "Pagamento non eseguito" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPagamentoType.enumValue().equals(VerificaStatoPagamento.POSIZIONE_NON_PAGABILE)) {
|
|
|
|
|
// // "Pagamento eseguito" -> esito positivo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_PAGATA;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if (DettPratica.class.getName().equals(pagamento.getClassName())) {
|
|
|
|
|
// DettPraticaLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(),
|
|
|
|
|
// pagamento.getClassPk(),
|
|
|
|
|
// statoPagamento);
|
|
|
|
|
// } else if (FineLavori.class.getName().equals(pagamento.getClassName())) {
|
|
|
|
|
// FineLavoriLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(),
|
|
|
|
|
// pagamento.getClassPk(),
|
|
|
|
|
// statoPagamento);
|
|
|
|
|
// } else if (Collaudo.class.getName().equals(pagamento.getClassName())) {
|
|
|
|
|
// CollaudoLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(),
|
|
|
|
|
// pagamento.getClassPk(),
|
|
|
|
|
// statoPagamento);
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("unable to update pagamento esito for entity type " +
|
|
|
|
|
// pagamento.getClassName()
|
|
|
|
|
// + " with id " + pagamento.getClassPk());
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
String statoPagamento = callVerificaPagamenti(pagamento); |
|
|
|
|
if (Validator.isNotNull(statoPagamento)) { |
|
|
|
|
if (DettPratica.class.getName().equals(pagamento.getClassName())) { |
|
|
|
|
DettPraticaLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(), pagamento.getClassPk(), |
|
|
|
|
statoPagamento); |
|
|
|
|
} else if (FineLavori.class.getName().equals(pagamento.getClassName())) { |
|
|
|
|
FineLavoriLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(), pagamento.getClassPk(), |
|
|
|
|
statoPagamento); |
|
|
|
|
} else if (Collaudo.class.getName().equals(pagamento.getClassName())) { |
|
|
|
|
CollaudoLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(), pagamento.getClassPk(), |
|
|
|
|
statoPagamento); |
|
|
|
|
} else { |
|
|
|
|
throw new RuntimeException("unable to update pagamento esito for entity type " + pagamento.getClassName() |
|
|
|
|
+ " with id " + pagamento.getClassPk()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static String callVerificaPagamenti(Pagamento pagamento) throws SystemException { |
|
|
|
|
|
|
|
|
|
long companyId = pagamento.getCompanyId(); |
|
|
|
|
long groupId = pagamento.getGroupId(); |
|
|
|
|
|
|
|
|
|
if (PagamentoConstants.PAGAMENTO_ONERI.equals(pagamento.getTipoPagamento())) { |
|
|
|
|
InformazioniPagamentoType[] statoPagamentiType = |
|
|
|
|
IrisVerificaPagamenti.verificaPagamenti(companyId, groupId, pagamento.getCodice(), |
|
|
|
|
pagamento.getTipoPagamento()); |
|
|
|
|
|
|
|
|
|
return checkStatoPagamento(statoPagamentiType); |
|
|
|
|
|
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(pagamento.getTipoPagamento())) { |
|
|
|
|
List<IUV> iuvs = IUVLocalServiceUtil.findByPagamento(pagamento.getPagamentoId()); |
|
|
|
|
List<String> statiPagamento = new ArrayList<String>(); |
|
|
|
|
for (IUV iuv : iuvs) { |
|
|
|
|
InformazioniPagamentoType[] statoPagamentiType = |
|
|
|
|
IrisVerificaPagamenti.verificaPagamenti(companyId, groupId, iuv.getCodice(), pagamento.getTipoPagamento()); |
|
|
|
|
GenericUtils.addIfnotExist(statiPagamento, checkStatoPagamento(statoPagamentiType)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (statiPagamento.size() > 1) { |
|
|
|
|
// return VerificaStatoPagamentoDettagliato._POSIZIONE_CON_PAG_IN_CORSO;
|
|
|
|
|
return StringPool.BLANK; |
|
|
|
|
} |
|
|
|
|
return statiPagamento.get(0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
throw new SystemException("error.geniocivile.tipopagamento.notexist"); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static String checkStatoPagamento(InformazioniPagamentoType[] statoPagamentiType) { |
|
|
|
|
|
|
|
|
|
if (statoPagamentiType == null) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
InformazioniPagamentoType statoPagamentoType = statoPagamentiType[0]; |
|
|
|
|
String statoPendenza = statoPagamentoType.getStato().getValue(); |
|
|
|
|
|
|
|
|
|
String statoPagamento = StringPool.BLANK; |
|
|
|
|
if (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGATA)) { |
|
|
|
|
if (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase( |
|
|
|
|
VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGATA)) { |
|
|
|
|
// "Posizione non presente" -> si riprova successivamente
|
|
|
|
|
return StringPool.BLANK; |
|
|
|
|
} else if (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase("PAG_NON_ESEGUITO")) { |
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA; |
|
|
|
|
} else if (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase("PAG_IN_ERRORE")) { |
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE; |
|
|
|
|
} |
|
|
|
|
_log.debug(statoPagamento); |
|
|
|
|
} else if (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGABILE)) { |
|
|
|
|
// "Posizione non pagabile" -> esito negativo
|
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE; |
|
|
|
|
// } else if (statoPendenza.equals(StatoPagamentoType._value3)) {
|
|
|
|
|
// "Pagamento non ancora eseguito" -> si riprova successivamente
|
|
|
|
|
// if (!pagamento.getOtf()) {
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// "Pagamento non eseguito" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
_log.debug(statoPagamento); |
|
|
|
|
} else if (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_PAGATA) |
|
|
|
|
|| statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_PAGATA_SBF)) { |
|
|
|
|
// "Pagamento eseguito" -> esito positivo
|
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_PAGATA; |
|
|
|
|
_log.debug(statoPagamento); |
|
|
|
|
} else if (statoPendenza.equalsIgnoreCase(VerificaStatoPagamentoDettagliato._POSIZIONE_CON_PAG_IN_CORSO)) { |
|
|
|
|
// "Pagamento non eseguito" -> esito in corso
|
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_IN_CORSO; |
|
|
|
|
return StringPool.BLANK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return statoPagamento; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static BigDecimal getImportoBolli(long companyId, long dettPraticaId, String tipoIntegrazione) |
|
|
|
|
throws PortalException, SystemException { |
|
|
|
|
|
|
|
|
|
return PagamentiCommonUtil.getImportoBolli(companyId, dettPraticaId, DettPratica.class.getName(), tipoIntegrazione); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static Date getScadenzaPending() { |
|
|
|
|
|
|
|
|
|
Calendar calendar = CalendarFactoryUtil.getCalendar(); |
|
|
|
|
calendar.add(Calendar.MINUTE, -30); |
|
|
|
|
return calendar.getTime(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static boolean isPagamentoScadutoInPending(Pagamento pagamento) { |
|
|
|
|
|
|
|
|
|
return pagamento.getCreateDate().compareTo(getScadenzaPending()) < 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static Pagamento nuovoPagamento(String currentURL, long classPk, String className, String tipoPagamento, |
|
|
|
|
String importo, String codiceFiscaleCommittente, ServiceContext serviceContext) throws PortalException, |
|
|
|
|
SystemException { |
|
|
|
|
|
|
|
|
|
boolean irisDisabled = !PagamentiCommonUtil.irisIsEnable(serviceContext.getCompanyId()); |
|
|
|
|
|
|
|
|
|
boolean esenzioneBolli = false; |
|
|
|
|
boolean esenzioneSpeseIstruttoria = false; |
|
|
|
|
String tipoIntegrazione = StringPool.BLANK; |
|
|
|
|
long pagamentoId = 0l; |
|
|
|
|
long intPraticaId = 0l; |
|
|
|
|
|
|
|
|
|
// long dettPraticaId = 0l;
|
|
|
|
|
if (DettPratica.class.getName().equals(className)) { |
|
|
|
|
DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(classPk); |
|
|
|
|
esenzioneBolli = dettPratica.isNormEsenteBollo(); |
|
|
|
|
esenzioneSpeseIstruttoria = dettPratica.isNormEsenteSpese(); |
|
|
|
|
tipoIntegrazione = dettPratica.getTipoIntegrazione(); |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento)) { |
|
|
|
|
pagamentoId = dettPratica.getPagamentoIdOneri(); |
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { |
|
|
|
|
pagamentoId = dettPratica.getPagamentoIdBolli(); |
|
|
|
|
} |
|
|
|
|
intPraticaId = dettPratica.getIntPraticaId(); |
|
|
|
|
// dettPraticaId = classPk;
|
|
|
|
|
} else if (FineLavori.class.getName().equals(className)) { |
|
|
|
|
FineLavori fineLavori = FineLavoriLocalServiceUtil.getFineLavori(classPk); |
|
|
|
|
esenzioneBolli = fineLavori.isNormEsenteBollo(); |
|
|
|
|
esenzioneSpeseIstruttoria = true; |
|
|
|
|
tipoIntegrazione = TipoIntegrazioneUtil.FINE_LAVORI; |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento)) { |
|
|
|
|
throw new SystemException("error.fields.fineLavori.pagamento.classPk.invalid"); |
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { |
|
|
|
|
pagamentoId = fineLavori.getPagamentoId(); |
|
|
|
|
} |
|
|
|
|
// dettPraticaId =
|
|
|
|
|
// DettPraticaLocalServiceUtil.getLastCompletedByIntPratica(fineLavori.getIntPraticaId()).getDettPraticaId();
|
|
|
|
|
intPraticaId = fineLavori.getIntPraticaId(); |
|
|
|
|
} else if (Collaudo.class.getName().equals(className)) { |
|
|
|
|
Collaudo collaudo = CollaudoLocalServiceUtil.getCollaudo(classPk); |
|
|
|
|
esenzioneBolli = collaudo.isNormEsenteBollo(); |
|
|
|
|
esenzioneSpeseIstruttoria = true; |
|
|
|
|
tipoIntegrazione = TipoIntegrazioneUtil.COLLAUDO; |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento)) { |
|
|
|
|
throw new SystemException("error.fields.collaudo.pagamento.classPk.invalid"); |
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { |
|
|
|
|
pagamentoId = collaudo.getPagamentoId(); |
|
|
|
|
} |
|
|
|
|
// dettPraticaId =
|
|
|
|
|
// DettPraticaLocalServiceUtil.getLastCompletedByIntPratica(collaudo.getIntPraticaId()).getDettPraticaId();
|
|
|
|
|
intPraticaId = collaudo.getIntPraticaId(); |
|
|
|
|
} else { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento.classPk.invalid"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<String> importi = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
if (esenzioneSpeseIstruttoria && esenzioneBolli) { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento.esente.oneri.bolli"); |
|
|
|
|
} else { |
|
|
|
|
if ((PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento) && !esenzioneBolli) |
|
|
|
|
|| (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento) && !esenzioneSpeseIstruttoria)) { |
|
|
|
|
|
|
|
|
|
if (Validator.isNotNull(importo)) { |
|
|
|
|
importo = importo.replaceAll(StringPool.COMMA, StringPool.PERIOD); |
|
|
|
|
try { |
|
|
|
|
BigDecimal importoVal = new BigDecimal(importo); |
|
|
|
|
importo = importoVal.toPlainString(); |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { |
|
|
|
|
int numeroBolli = PagamentiCommonUtil.getNumeroBolli(tipoIntegrazione); |
|
|
|
|
BigDecimal singoloImporto = importoVal.divide(new BigDecimal(numeroBolli)); |
|
|
|
|
for (int i = 0; i < numeroBolli; i++) { |
|
|
|
|
importi.add(singoloImporto.toPlainString()); |
|
|
|
|
} |
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento)) { |
|
|
|
|
importi.add(importo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} catch (NumberFormatException e) { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento." |
|
|
|
|
+ (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento) ? "bolli" : "speseistruttoria") + ".valid", |
|
|
|
|
e); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento) |
|
|
|
|
|| PagamentiCommonUtil.existsSpeseIstruttoria(tipoIntegrazione)) { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento." |
|
|
|
|
+ (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento) ? "bolli" : "speseistruttoria") |
|
|
|
|
+ ".required"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!irisDisabled) { |
|
|
|
|
if (Validator.isNull(pagamentoId)) { |
|
|
|
|
|
|
|
|
|
Soggetto committente = |
|
|
|
|
SoggettoLocalServiceUtil.getValidTmpByIntPratica_CodiceFiscale_TipologiaSoggetto(intPraticaId, |
|
|
|
|
codiceFiscaleCommittente, TipoSoggettoUtil.COMMITTENTE); |
|
|
|
|
String provincia = StringPool.BLANK; |
|
|
|
|
String codiceProvincia = committente.getProvincia(); |
|
|
|
|
if (codiceProvincia.equalsIgnoreCase("ee")) { |
|
|
|
|
provincia = "EE"; |
|
|
|
|
} else { |
|
|
|
|
Provincia provinciaEntity = |
|
|
|
|
ProvinciaLocalServiceUtil.fetchByC_C(serviceContext.getCompanyId(), codiceProvincia); |
|
|
|
|
if (Validator.isNotNull(provinciaEntity)) { |
|
|
|
|
provincia = provinciaEntity.getSigla(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
String codice = IrisCommonUtil.createCodicePendenza(); |
|
|
|
|
String causale = IrisCommonUtil.getDescrizioneCausale(tipoPagamento); |
|
|
|
|
|
|
|
|
|
long irisPagamentoId = PagamentoLocalServiceUtil.createPagamentoId(); |
|
|
|
|
|
|
|
|
|
currentURL = StringUtil.replaceLast(currentURL, "/0", StringPool.SLASH + irisPagamentoId); |
|
|
|
|
|
|
|
|
|
String auth = HttpUtil.getParameter(currentURL, "p_auth", false); |
|
|
|
|
|
|
|
|
|
// XXX Se non li rimuovi non funziona più
|
|
|
|
|
Map<String, String[]> parameters = HttpUtil.getParameterMap(HttpUtil.getQueryString(currentURL)); |
|
|
|
|
for (String key : parameters.keySet()) { |
|
|
|
|
currentURL = HttpUtil.removeParameter(currentURL, key); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (Validator.isNotNull(auth)) { |
|
|
|
|
currentURL = HttpUtil.addParameter(currentURL, "p_auth", auth); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (Validator.isNull(codiceFiscaleCommittente)) { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento.codicefiscale.richiesto"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<ElencoIdentificativiType> iuvs = new ArrayList<ElencoIdentificativiType>(); |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_BOLLI.equalsIgnoreCase(tipoPagamento)) { |
|
|
|
|
iuvs = IrisComunicaPosizioniDebitorie.generaIUV(serviceContext.getCompanyId(), importi.size()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
IdpOTFType idpOTFType = |
|
|
|
|
IrisComunicaPosizioniDebitorie.comunicaPosizioniDebitorieOTF(serviceContext.getCompanyId(), |
|
|
|
|
serviceContext.getScopeGroupId(), serviceContext.getUserId(), codice, causale, |
|
|
|
|
codiceFiscaleCommittente, tipoPagamento, importi, iuvs, currentURL, currentURL, provincia); |
|
|
|
|
|
|
|
|
|
String urlPagamento = ""; |
|
|
|
|
|
|
|
|
|
if (idpOTFType == null) { |
|
|
|
|
urlPagamento = currentURL; |
|
|
|
|
throw new SystemException("error.geniocivilefe.pratica.pagamento | intPraticaId=" + intPraticaId |
|
|
|
|
+ " | classPk=" + classPk + " | className=" + className); |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
urlPagamento = idpOTFType.getUrlGW().toString(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return PagamentoLocalServiceUtil.addPagamentoAndUpdate(irisPagamentoId, codice, causale, |
|
|
|
|
PagamentoConstants.MEZZO_IRIS, codiceFiscaleCommittente, tipoPagamento, importo, |
|
|
|
|
PagamentoConstants.UTILIZZATA_IN_CORSO, classPk, className, 0l, urlPagamento, iuvs, serviceContext); |
|
|
|
|
// actionResponse.sendRedirect(idpOTFType.getUrlGW().toString());
|
|
|
|
|
} else { |
|
|
|
|
return PagamentoLocalServiceUtil.getPagamento(pagamentoId); |
|
|
|
|
} |
|
|
|
|
// }
|
|
|
|
|
} else { |
|
|
|
|
boolean add = true; |
|
|
|
|
if (Validator.isNotNull(pagamentoId)) { |
|
|
|
|
Pagamento pagamento = PagamentoLocalServiceUtil.getPagamento(pagamentoId); |
|
|
|
|
if (pagamento.getClassPk() == classPk) { |
|
|
|
|
add = false; |
|
|
|
|
PagamentoLocalServiceUtil.updatePagamento(pagamentoId, codiceFiscaleCommittente, importo); |
|
|
|
|
} |
|
|
|
|
return pagamento; |
|
|
|
|
} |
|
|
|
|
if (add) { |
|
|
|
|
return PagamentoLocalServiceUtil.addPagamentoAndUpdate(StringPool.BLANK, StringPool.BLANK, |
|
|
|
|
PagamentoConstants.MEZZO_MANUALE, codiceFiscaleCommittente, tipoPagamento, importo, |
|
|
|
|
PagamentoConstants.UTILIZZATA_IN_CORSO, classPk, className, 0l, serviceContext); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
private static final Log _log = LogFactoryUtil.getLog(PagamentiUtil.class); |
|
|
|
|
|
|
|
|
|
public static void verificaPagamentoIRIS(Pagamento pagamento) throws IOException, SystemException, |
|
|
|
|
PortalException { |
|
|
|
|
|
|
|
|
|
// long companyId = pagamento.getCompanyId();
|
|
|
|
|
// long groupId = pagamento.getGroupId();
|
|
|
|
|
//
|
|
|
|
|
// InformazioniPagamentoType[] statoPagamentiType =
|
|
|
|
|
// IrisVerificaPagamenti
|
|
|
|
|
// .verificaPagamenti(companyId, groupId, pagamento.getCodice(),
|
|
|
|
|
// pagamento.getTipoPagamento());
|
|
|
|
|
|
|
|
|
|
// List<InformazioniPagamentoType> infoPagamentoTypes =
|
|
|
|
|
// IrisVerificaPagamenti
|
|
|
|
|
// .verificaPagamenti(companyId, groupId, pagamento.getCodice(),
|
|
|
|
|
// pagamento.getTipoPagamento());
|
|
|
|
|
// String statoPagamento = StringPool.BLANK;
|
|
|
|
|
// if (infoPagamentoTypes != null) {
|
|
|
|
|
// InformazioniPagamentoType infoPagamentoType =
|
|
|
|
|
// infoPagamentoTypes.get(0);
|
|
|
|
|
// if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_NON_PRESENTE))
|
|
|
|
|
// {
|
|
|
|
|
// // "Posizione non presente" -> si riprova successivamente
|
|
|
|
|
// return;
|
|
|
|
|
// } else if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_NON_PAGABILE))
|
|
|
|
|
// {
|
|
|
|
|
// // "Posizione non pagabile" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE;
|
|
|
|
|
// } else if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_NON_PAGATA))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento non eseguito" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
// } else if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_CON_PAG_IN_CORSO))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento non eseguito" -> esito in corso
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_IN_CORSO;
|
|
|
|
|
// return;
|
|
|
|
|
// } else if
|
|
|
|
|
// (infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_PAGATA)
|
|
|
|
|
// ||
|
|
|
|
|
// infoPagamentoType.getStato().equals(VerificaStatoPagamentoDettagliato.POSIZIONE_PAGATA_SBF))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento eseguito" -> esito positivo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_PAGATA;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// String statoPagamento = StringPool.BLANK;
|
|
|
|
|
// if (statoPagamentiType != null) {
|
|
|
|
|
// InformazioniPagamentoType statoPagamentoType = statoPagamentiType[0];
|
|
|
|
|
// String statoPendenza = statoPagamentoType.getStato().getValue();
|
|
|
|
|
//
|
|
|
|
|
// if
|
|
|
|
|
// (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGATA))
|
|
|
|
|
// {
|
|
|
|
|
// if (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase(
|
|
|
|
|
// VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGATA)) {
|
|
|
|
|
// // "Posizione non presente" -> si riprova successivamente
|
|
|
|
|
// return;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase("PAG_NON_ESEGUITO"))
|
|
|
|
|
// {
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
// }
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGABILE))
|
|
|
|
|
// {
|
|
|
|
|
// // "Posizione non pagabile" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE;
|
|
|
|
|
// // } else if (statoPendenza.equals(StatoPagamentoType._value3)) {
|
|
|
|
|
// // "Pagamento non ancora eseguito" -> si riprova successivamente
|
|
|
|
|
// // if (!pagamento.getOtf()) {
|
|
|
|
|
// // return;
|
|
|
|
|
// // }
|
|
|
|
|
// // "Pagamento non eseguito" -> esito negativo
|
|
|
|
|
// // statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_PAGATA)
|
|
|
|
|
// ||
|
|
|
|
|
// statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_PAGATA_SBF))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento eseguito" -> esito positivo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_PAGATA;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPendenza.equals(VerificaStatoPagamentoDettagliato.POSIZIONE_CON_PAG_IN_CORSO))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento non eseguito" -> esito in corso
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_IN_CORSO;
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// StatoPagamentoType statoPagamentoType = statoPagamentiType[0];
|
|
|
|
|
// if
|
|
|
|
|
// (statoPagamentoType.enumValue().equals(VerificaStatoPagamento.POSIZIONE_NON_PRESENTE))
|
|
|
|
|
// {
|
|
|
|
|
// // "Posizione non presente" -> si riprova successivamente
|
|
|
|
|
// return;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPagamentoType.enumValue().equals(VerificaStatoPagamento.POSIZIONE_NON_PAGABILE))
|
|
|
|
|
// {
|
|
|
|
|
// // "Posizione non pagabile" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPagamentoType.enumValue().equals(VerificaStatoPagamento.PAGAMENTO_NON_ESEGUITO))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento non ancora eseguito" -> si riprova successivamente
|
|
|
|
|
// if (!pagamento.getOtf()) {
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// // "Pagamento non eseguito" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
// } else if
|
|
|
|
|
// (statoPagamentoType.enumValue().equals(VerificaStatoPagamento.POSIZIONE_NON_PAGABILE))
|
|
|
|
|
// {
|
|
|
|
|
// // "Pagamento eseguito" -> esito positivo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_PAGATA;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// if (DettPratica.class.getName().equals(pagamento.getClassName())) {
|
|
|
|
|
// DettPraticaLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(),
|
|
|
|
|
// pagamento.getClassPk(),
|
|
|
|
|
// statoPagamento);
|
|
|
|
|
// } else if
|
|
|
|
|
// (FineLavori.class.getName().equals(pagamento.getClassName())) {
|
|
|
|
|
// FineLavoriLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(),
|
|
|
|
|
// pagamento.getClassPk(),
|
|
|
|
|
// statoPagamento);
|
|
|
|
|
// } else if (Collaudo.class.getName().equals(pagamento.getClassName()))
|
|
|
|
|
// {
|
|
|
|
|
// CollaudoLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(),
|
|
|
|
|
// pagamento.getClassPk(),
|
|
|
|
|
// statoPagamento);
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new
|
|
|
|
|
// RuntimeException("unable to update pagamento esito for entity type "
|
|
|
|
|
// +
|
|
|
|
|
// pagamento.getClassName()
|
|
|
|
|
// + " with id " + pagamento.getClassPk());
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
String statoPagamento = callVerificaPagamenti(pagamento); |
|
|
|
|
if (Validator.isNotNull(statoPagamento)) { |
|
|
|
|
if (DettPratica.class.getName().equals(pagamento.getClassName())) { |
|
|
|
|
DettPraticaLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(), |
|
|
|
|
pagamento.getClassPk(), statoPagamento); |
|
|
|
|
} else if (FineLavori.class.getName().equals(pagamento.getClassName())) { |
|
|
|
|
FineLavoriLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(), |
|
|
|
|
pagamento.getClassPk(), statoPagamento); |
|
|
|
|
} else if (Collaudo.class.getName().equals(pagamento.getClassName())) { |
|
|
|
|
CollaudoLocalServiceUtil.updateEsitoPagamento(pagamento.getPagamentoId(), |
|
|
|
|
pagamento.getClassPk(), statoPagamento); |
|
|
|
|
} else { |
|
|
|
|
throw new RuntimeException("unable to update pagamento esito for entity type " |
|
|
|
|
+ pagamento.getClassName() + " with id " + pagamento.getClassPk()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static String callVerificaPagamenti(Pagamento pagamento) throws SystemException { |
|
|
|
|
|
|
|
|
|
long companyId = pagamento.getCompanyId(); |
|
|
|
|
long groupId = pagamento.getGroupId(); |
|
|
|
|
|
|
|
|
|
if (PagamentoConstants.PAGAMENTO_ONERI.equals(pagamento.getTipoPagamento())) { |
|
|
|
|
InformazioniPagamentoType[] statoPagamentiType = IrisVerificaPagamenti.verificaPagamenti( |
|
|
|
|
companyId, groupId, pagamento.getCodice(), pagamento.getTipoPagamento()); |
|
|
|
|
|
|
|
|
|
return checkStatoPagamento(statoPagamentiType); |
|
|
|
|
|
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(pagamento.getTipoPagamento())) { |
|
|
|
|
List<IUV> iuvs = IUVLocalServiceUtil.findByPagamento(pagamento.getPagamentoId()); |
|
|
|
|
List<String> statiPagamento = new ArrayList<String>(); |
|
|
|
|
for (IUV iuv : iuvs) { |
|
|
|
|
InformazioniPagamentoType[] statoPagamentiType = IrisVerificaPagamenti.verificaPagamenti( |
|
|
|
|
companyId, groupId, iuv.getCodice(), pagamento.getTipoPagamento()); |
|
|
|
|
GenericUtils.addIfnotExist(statiPagamento, checkStatoPagamento(statoPagamentiType)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (statiPagamento.size() > 1) { |
|
|
|
|
// return
|
|
|
|
|
// VerificaStatoPagamentoDettagliato._POSIZIONE_CON_PAG_IN_CORSO;
|
|
|
|
|
return StringPool.BLANK; |
|
|
|
|
} |
|
|
|
|
return statiPagamento.get(0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
throw new SystemException("error.geniocivile.tipopagamento.notexist"); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static String checkStatoPagamento(InformazioniPagamentoType[] statoPagamentiType) { |
|
|
|
|
|
|
|
|
|
if (statoPagamentiType == null) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
InformazioniPagamentoType statoPagamentoType = statoPagamentiType[0]; |
|
|
|
|
String statoPendenza = statoPagamentoType.getStato().getValue(); |
|
|
|
|
|
|
|
|
|
String statoPagamento = StringPool.BLANK; |
|
|
|
|
if (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGATA)) { |
|
|
|
|
if (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase( |
|
|
|
|
VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGATA)) { |
|
|
|
|
// "Posizione non presente" -> si riprova successivamente
|
|
|
|
|
return StringPool.BLANK; |
|
|
|
|
} else if (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase("PAG_NON_ESEGUITO")) { |
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA; |
|
|
|
|
} else if (statoPagamentoType.getDescrizioneStato().equalsIgnoreCase("PAG_IN_ERRORE")) { |
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE; |
|
|
|
|
} |
|
|
|
|
_log.debug(statoPagamento); |
|
|
|
|
} else if (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_NON_PAGABILE)) { |
|
|
|
|
// "Posizione non pagabile" -> esito negativo
|
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_NON_PAGABILE; |
|
|
|
|
// } else if (statoPendenza.equals(StatoPagamentoType._value3)) {
|
|
|
|
|
// "Pagamento non ancora eseguito" -> si riprova successivamente
|
|
|
|
|
// if (!pagamento.getOtf()) {
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// "Pagamento non eseguito" -> esito negativo
|
|
|
|
|
// statoPagamento = PagamentoConstants.UTILIZZATA_RIFIUTATA;
|
|
|
|
|
_log.debug(statoPagamento); |
|
|
|
|
} else if (statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_PAGATA) |
|
|
|
|
|| statoPendenza.equals(VerificaStatoPagamentoDettagliato._POSIZIONE_PAGATA_SBF)) { |
|
|
|
|
// "Pagamento eseguito" -> esito positivo
|
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_PAGATA; |
|
|
|
|
_log.debug(statoPagamento); |
|
|
|
|
} else if (statoPendenza |
|
|
|
|
.equalsIgnoreCase(VerificaStatoPagamentoDettagliato._POSIZIONE_CON_PAG_IN_CORSO)) { |
|
|
|
|
// "Pagamento non eseguito" -> esito in corso
|
|
|
|
|
statoPagamento = PagamentoConstants.UTILIZZATA_IN_CORSO; |
|
|
|
|
return StringPool.BLANK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return statoPagamento; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static BigDecimal getImportoBolli(long companyId, long dettPraticaId, String tipoIntegrazione) |
|
|
|
|
throws PortalException, SystemException { |
|
|
|
|
|
|
|
|
|
return PagamentiCommonUtil.getImportoBolli(companyId, dettPraticaId, DettPratica.class.getName(), |
|
|
|
|
tipoIntegrazione); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static Date getScadenzaPending() { |
|
|
|
|
|
|
|
|
|
Calendar calendar = CalendarFactoryUtil.getCalendar(); |
|
|
|
|
calendar.add(Calendar.MINUTE, -30); |
|
|
|
|
return calendar.getTime(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static boolean isPagamentoScadutoInPending(Pagamento pagamento) { |
|
|
|
|
|
|
|
|
|
return pagamento.getCreateDate().compareTo(getScadenzaPending()) < 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static Pagamento nuovoPagamento(String currentURL, long classPk, String className, |
|
|
|
|
String tipoPagamento, String importo, String codiceFiscaleCommittente, |
|
|
|
|
ServiceContext serviceContext) throws PortalException, SystemException { |
|
|
|
|
|
|
|
|
|
boolean irisDisabled = !PagamentiCommonUtil.irisIsEnable(serviceContext.getCompanyId()); |
|
|
|
|
|
|
|
|
|
boolean esenzioneBolli = false; |
|
|
|
|
boolean esenzioneSpeseIstruttoria = false; |
|
|
|
|
String tipoIntegrazione = StringPool.BLANK; |
|
|
|
|
long pagamentoId = 0l; |
|
|
|
|
long intPraticaId = 0l; |
|
|
|
|
|
|
|
|
|
// long dettPraticaId = 0l;
|
|
|
|
|
if (DettPratica.class.getName().equals(className)) { |
|
|
|
|
DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(classPk); |
|
|
|
|
esenzioneBolli = dettPratica.isNormEsenteBollo(); |
|
|
|
|
esenzioneSpeseIstruttoria = dettPratica.isNormEsenteSpese(); |
|
|
|
|
tipoIntegrazione = dettPratica.getTipoIntegrazione(); |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento)) { |
|
|
|
|
pagamentoId = dettPratica.getPagamentoIdOneri(); |
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { |
|
|
|
|
pagamentoId = dettPratica.getPagamentoIdBolli(); |
|
|
|
|
} |
|
|
|
|
intPraticaId = dettPratica.getIntPraticaId(); |
|
|
|
|
// dettPraticaId = classPk;
|
|
|
|
|
} else if (FineLavori.class.getName().equals(className)) { |
|
|
|
|
FineLavori fineLavori = FineLavoriLocalServiceUtil.getFineLavori(classPk); |
|
|
|
|
esenzioneBolli = fineLavori.isNormEsenteBollo(); |
|
|
|
|
esenzioneSpeseIstruttoria = true; |
|
|
|
|
tipoIntegrazione = TipoIntegrazioneUtil.FINE_LAVORI; |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento)) { |
|
|
|
|
throw new SystemException("error.fields.fineLavori.pagamento.classPk.invalid"); |
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { |
|
|
|
|
pagamentoId = fineLavori.getPagamentoId(); |
|
|
|
|
} |
|
|
|
|
// dettPraticaId =
|
|
|
|
|
// DettPraticaLocalServiceUtil.getLastCompletedByIntPratica(fineLavori.getIntPraticaId()).getDettPraticaId();
|
|
|
|
|
intPraticaId = fineLavori.getIntPraticaId(); |
|
|
|
|
} else if (Collaudo.class.getName().equals(className)) { |
|
|
|
|
Collaudo collaudo = CollaudoLocalServiceUtil.getCollaudo(classPk); |
|
|
|
|
esenzioneBolli = collaudo.isNormEsenteBollo(); |
|
|
|
|
esenzioneSpeseIstruttoria = true; |
|
|
|
|
tipoIntegrazione = TipoIntegrazioneUtil.COLLAUDO; |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento)) { |
|
|
|
|
throw new SystemException("error.fields.collaudo.pagamento.classPk.invalid"); |
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { |
|
|
|
|
pagamentoId = collaudo.getPagamentoId(); |
|
|
|
|
} |
|
|
|
|
// dettPraticaId =
|
|
|
|
|
// DettPraticaLocalServiceUtil.getLastCompletedByIntPratica(collaudo.getIntPraticaId()).getDettPraticaId();
|
|
|
|
|
intPraticaId = collaudo.getIntPraticaId(); |
|
|
|
|
} else { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento.classPk.invalid"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<String> importi = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
if (esenzioneSpeseIstruttoria && esenzioneBolli) { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento.esente.oneri.bolli"); |
|
|
|
|
} else { |
|
|
|
|
if ((PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento) && !esenzioneBolli) |
|
|
|
|
|| (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento) && !esenzioneSpeseIstruttoria)) { |
|
|
|
|
|
|
|
|
|
if (Validator.isNotNull(importo)) { |
|
|
|
|
importo = importo.replaceAll(StringPool.COMMA, StringPool.PERIOD); |
|
|
|
|
try { |
|
|
|
|
BigDecimal importoVal = new BigDecimal(importo); |
|
|
|
|
importo = importoVal.toPlainString(); |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento)) { |
|
|
|
|
int numeroBolli = PagamentiCommonUtil.getNumeroBolli(tipoIntegrazione); |
|
|
|
|
BigDecimal singoloImporto = importoVal.divide(new BigDecimal(numeroBolli)); |
|
|
|
|
for (int i = 0; i < numeroBolli; i++) { |
|
|
|
|
importi.add(singoloImporto.toPlainString()); |
|
|
|
|
} |
|
|
|
|
} else if (PagamentoConstants.PAGAMENTO_ONERI.equals(tipoPagamento)) { |
|
|
|
|
importi.add(importo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} catch (NumberFormatException e) { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento." |
|
|
|
|
+ (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento) ? "bolli" |
|
|
|
|
: "speseistruttoria") + ".valid", e); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento) |
|
|
|
|
|| PagamentiCommonUtil.existsSpeseIstruttoria(tipoIntegrazione)) { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento." |
|
|
|
|
+ (PagamentoConstants.PAGAMENTO_BOLLI.equals(tipoPagamento) ? "bolli" |
|
|
|
|
: "speseistruttoria") + ".required"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!irisDisabled) { |
|
|
|
|
if (Validator.isNull(pagamentoId)) { |
|
|
|
|
|
|
|
|
|
Soggetto committente = SoggettoLocalServiceUtil |
|
|
|
|
.getValidTmpByIntPratica_CodiceFiscale_TipologiaSoggetto(intPraticaId, |
|
|
|
|
codiceFiscaleCommittente, TipoSoggettoUtil.COMMITTENTE); |
|
|
|
|
String provincia = StringPool.BLANK; |
|
|
|
|
String codiceProvincia = committente.getProvincia(); |
|
|
|
|
if (codiceProvincia.equalsIgnoreCase("ee")) { |
|
|
|
|
provincia = "EE"; |
|
|
|
|
} else { |
|
|
|
|
Provincia provinciaEntity = ProvinciaLocalServiceUtil.fetchByC_C( |
|
|
|
|
serviceContext.getCompanyId(), codiceProvincia); |
|
|
|
|
if (Validator.isNotNull(provinciaEntity)) { |
|
|
|
|
provincia = provinciaEntity.getSigla(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
String codice = IrisCommonUtil.createCodicePendenza(); |
|
|
|
|
String causale = IrisCommonUtil.getDescrizioneCausale(tipoPagamento); |
|
|
|
|
|
|
|
|
|
long irisPagamentoId = PagamentoLocalServiceUtil.createPagamentoId(); |
|
|
|
|
|
|
|
|
|
currentURL = StringUtil.replaceLast(currentURL, "/0", StringPool.SLASH + irisPagamentoId); |
|
|
|
|
|
|
|
|
|
String auth = HttpUtil.getParameter(currentURL, "p_auth", false); |
|
|
|
|
|
|
|
|
|
// XXX Se non li rimuovi non funziona più
|
|
|
|
|
Map<String, String[]> parameters = HttpUtil.getParameterMap(HttpUtil |
|
|
|
|
.getQueryString(currentURL)); |
|
|
|
|
for (String key : parameters.keySet()) { |
|
|
|
|
currentURL = HttpUtil.removeParameter(currentURL, key); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (Validator.isNotNull(auth)) { |
|
|
|
|
currentURL = HttpUtil.addParameter(currentURL, "p_auth", auth); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (Validator.isNull(codiceFiscaleCommittente)) { |
|
|
|
|
throw new SystemException("error.fields.pratica.pagamento.codicefiscale.richiesto"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<ElencoIdentificativiType> iuvs = new ArrayList<ElencoIdentificativiType>(); |
|
|
|
|
if (PagamentoConstants.PAGAMENTO_BOLLI.equalsIgnoreCase(tipoPagamento)) { |
|
|
|
|
iuvs = IrisComunicaPosizioniDebitorie.generaIUV(serviceContext.getCompanyId(), |
|
|
|
|
importi.size()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
IdpOTFType idpOTFType = IrisComunicaPosizioniDebitorie.comunicaPosizioniDebitorieOTF( |
|
|
|
|
serviceContext.getCompanyId(), serviceContext.getScopeGroupId(), |
|
|
|
|
serviceContext.getUserId(), codice, causale, codiceFiscaleCommittente, tipoPagamento, |
|
|
|
|
importi, iuvs, currentURL, currentURL, provincia); |
|
|
|
|
|
|
|
|
|
String urlPagamento = ""; |
|
|
|
|
|
|
|
|
|
if (idpOTFType == null) { |
|
|
|
|
urlPagamento = currentURL; |
|
|
|
|
throw new SystemException("error.geniocivilefe.pratica.pagamento | intPraticaId=" |
|
|
|
|
+ intPraticaId + " | classPk=" + classPk + " | className=" + className); |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
urlPagamento = idpOTFType.getUrlGW().toString(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return PagamentoLocalServiceUtil.addPagamentoAndUpdate(irisPagamentoId, codice, causale, |
|
|
|
|
PagamentoConstants.MEZZO_IRIS, codiceFiscaleCommittente, tipoPagamento, importo, |
|
|
|
|
PagamentoConstants.UTILIZZATA_IN_CORSO, classPk, className, 0l, urlPagamento, iuvs, |
|
|
|
|
serviceContext); |
|
|
|
|
// actionResponse.sendRedirect(idpOTFType.getUrlGW().toString());
|
|
|
|
|
} else { |
|
|
|
|
return PagamentoLocalServiceUtil.getPagamento(pagamentoId); |
|
|
|
|
} |
|
|
|
|
// }
|
|
|
|
|
} else { |
|
|
|
|
boolean add = true; |
|
|
|
|
if (Validator.isNotNull(pagamentoId)) { |
|
|
|
|
Pagamento pagamento = PagamentoLocalServiceUtil.getPagamento(pagamentoId); |
|
|
|
|
if (pagamento.getClassPk() == classPk) { |
|
|
|
|
add = false; |
|
|
|
|
PagamentoLocalServiceUtil.updatePagamento(pagamentoId, codiceFiscaleCommittente, importo); |
|
|
|
|
} |
|
|
|
|
return pagamento; |
|
|
|
|
} |
|
|
|
|
if (add) { |
|
|
|
|
return PagamentoLocalServiceUtil.addPagamentoAndUpdate(StringPool.BLANK, StringPool.BLANK, |
|
|
|
|
PagamentoConstants.MEZZO_MANUALE, codiceFiscaleCommittente, tipoPagamento, importo, |
|
|
|
|
PagamentoConstants.UTILIZZATA_IN_CORSO, classPk, className, 0l, serviceContext); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|