Skip to content

Commit

Permalink
Added control on the amount paid via pagoPA
Browse files Browse the repository at this point in the history
  • Loading branch information
mspasiano committed Jul 10, 2023
1 parent e7f3de3 commit b4cb046
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
import it.cnr.si.cool.jconon.pagopa.model.pagamento.RiferimentoAvviso;
import it.cnr.si.cool.jconon.pagopa.model.pagamento.RiferimentoAvvisoResponse;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Headers({"Content-Type: application/json"})
Expand All @@ -46,6 +48,11 @@ public interface Pagopa {
@RequestLine("GET /backend/api/pendenze/rs/basic/v2/rpp/{idDominio}/{iuv}/{ccp}/rt?visualizzaSoggettoDebitore={visualizzaDebitore}")
byte[] stampaRt(@Param("idDominio") String idDominio, @Param("iuv") String iuv, @Param("ccp") String ccp, @Param("visualizzaDebitore") boolean visualizzaDebitore);


@Headers({"Accept: application/json"})
@RequestLine("GET /backend/api/pendenze/rs/basic/v2/rpp/{idDominio}/{iuv}/{ccp}/rt?visualizzaSoggettoDebitore={visualizzaDebitore}")
RicevutaPagamento getRt(@Param("idDominio") String idDominio, @Param("iuv") String iuv, @Param("ccp") String ccp, @Param("visualizzaDebitore") boolean visualizzaDebitore);

@RequestLine("POST /backend/api/ragioneria/rs/basic/v2/riconciliazioni/{idDominio}")
MovimentoCassaPagopa riconciliaIncasso(@Param("idDominio") String dominio, MovimentoCassaPagopa movimentoCassaPagopa);

Expand All @@ -56,4 +63,89 @@ public interface Pagopa {
@Headers({"Content-Type: application/json"})
RiferimentoAvvisoResponse getAvviso(@Param("id") String id);





public class DatiPagamento{
public String codiceEsitoPagamento;
public double importoTotalePagato;
public String identificativoUnivocoVersamento;
public String codiceContestoPagamento;
public ArrayList<DatiSingoloPagamento> datiSingoloPagamento;
}

public class DatiSingoloPagamento{
public double singoloImportoPagato;
public String esitoSingoloPagamento;
public Date dataEsitoSingoloPagamento;
public String identificativoUnivocoRiscossione;
public String causaleVersamento;
public String datiSpecificiRiscossione;
}

public class Dominio{
public String identificativoDominio;
public String identificativoStazioneRichiedente;
}

public class EnteBeneficiario{
public IdentificativoUnivocoBeneficiario identificativoUnivocoBeneficiario;
public String denominazioneBeneficiario;
public String indirizzoBeneficiario;
public String civicoBeneficiario;
public String capBeneficiario;
public String localitaBeneficiario;
public String provinciaBeneficiario;
public String nazioneBeneficiario;
}

public class IdentificativoUnivocoAttestante{
public String tipoIdentificativoUnivoco;
public String codiceIdentificativoUnivoco;
}

public class IdentificativoUnivocoBeneficiario{
public String tipoIdentificativoUnivoco;
public String codiceIdentificativoUnivoco;
}

public class IdentificativoUnivocoPagatore{
public String tipoIdentificativoUnivoco;
public String codiceIdentificativoUnivoco;
}

public class IstitutoAttestante{
public IdentificativoUnivocoAttestante identificativoUnivocoAttestante;
public String denominazioneAttestante;
public String indirizzoAttestante;
public String civicoAttestante;
public String capAttestante;
public String localitaAttestante;
public String provinciaAttestante;
public String nazioneAttestante;
}

public class RicevutaPagamento{
public String versioneOggetto;
public Dominio dominio;
public String identificativoMessaggioRicevuta;
public Date dataOraMessaggioRicevuta;
public String riferimentoMessaggioRichiesta;
public Date riferimentoDataRichiesta;
public IstitutoAttestante istitutoAttestante;
public EnteBeneficiario enteBeneficiario;
public SoggettoPagatore soggettoPagatore;
public DatiPagamento datiPagamento;
}

public class SoggettoPagatore{
public IdentificativoUnivocoPagatore identificativoUnivocoPagatore;
public String anagraficaPagatore;
public String indirizzoPagatore;
public String capPagatore;
public String localitaPagatore;
public String provinciaPagatore;
public String emailPagatore;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import it.cnr.si.opencmis.criteria.Criteria;
import it.cnr.si.opencmis.criteria.CriteriaFactory;
import it.cnr.si.opencmis.criteria.restrictions.Restrictions;
import org.apache.chemistry.opencmis.client.api.CmisObject;
import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.Folder;
import org.apache.chemistry.opencmis.client.api.Session;
Expand All @@ -47,6 +46,7 @@
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;
import java.util.stream.StreamSupport;
Expand Down Expand Up @@ -81,6 +81,10 @@ public byte[] stampaRicevuta(String iuv, String ccp) {
return pagopaDownload.stampaRt(properties.getCodicefiscale(), iuv, ccp, Boolean.TRUE);
}

public Pagopa.RicevutaPagamento getRicevuta(String iuv, String ccp) {
return pagopa.getRt(properties.getCodicefiscale(), iuv, ccp, Boolean.TRUE);
}

public byte[] stampaAvviso(String iuv) {
return pagopaDownload.stampaAvviso(properties.getCodicefiscale(), iuv);
}
Expand Down Expand Up @@ -128,29 +132,34 @@ public void notificaPagamento(Session currentCMISSession, String ccp, String iuv
.filter(cmisObject -> cmisObject.getType().getId().equals(PAGOPAObjectType.JCONON_ATTACHMENT_PAGAMENTI_DIRITTI_SEGRETERIA.value()))
.map(Document.class::cast)
.findAny();
String fileName = "ricevuta_pagamento.pdf";
if (!pagamentoDirittiSegreteria.isPresent()) {
final byte[] ricevutaPagamento = stampaRicevuta(iuv, ccp);
InputStream is = new ByteArrayInputStream(ricevutaPagamento);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.OBJECT_TYPE_ID, PAGOPAObjectType.JCONON_ATTACHMENT_PAGAMENTI_DIRITTI_SEGRETERIA.value());
properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, Arrays.asList("P:jconon_attachment:generic_document"));
properties.put(PAGOPAPropertyIds.ATTACHMENT_ESTREMI_PAGAMENTO_DIRITTI_SEGRETERIA.value(), ccp);
properties.put(PropertyIds.NAME, fileName);
ContentStream contentStream = new ContentStreamImpl(fileName, BigInteger.valueOf(is.available()), "application/pdf", is);
Document doc = application.createDocument(properties, contentStream, VersioningState.MAJOR);
aclService.addAcl(
cmisService.getAdminSession(),
doc.<String>getPropertyValue(CoolPropertyIds.ALFCMIS_NODEREF.value()),
Collections.singletonMap(application.getPropertyValue("jconon_application:user"), ACLType.Coordinator)
);
if (LOGGER.isInfoEnabled())
LOGGER.info("É stato correttamente generato la ricevuta di pagamento per la domanda con id: {} documento id: {}", application.getId(), doc.getId());
} else if (!pagamentoDirittiSegreteria.get().getCreatedBy().equalsIgnoreCase(application.getPropertyValue("jconon_application:user"))) {
final byte[] ricevutaPagamento = stampaRicevuta(iuv, ccp);
InputStream is = new ByteArrayInputStream(ricevutaPagamento);
ContentStream contentStream = new ContentStreamImpl(fileName, BigInteger.valueOf(is.available()), "application/pdf", is);
pagamentoDirittiSegreteria.get().setContentStream(contentStream, true, true);
final Pagopa.RicevutaPagamento ricevuta = getRicevuta(iuv, ccp);
if (BigDecimal.valueOf(ricevuta.datiPagamento.importoTotalePagato).equals(
application.getParents().stream().findAny().get().getPropertyValue(PAGOPAPropertyIds.CALL_IMPORTO_PAGAMENTO_PAGOPA.value())
) ) {
String fileName = "ricevuta_pagamento.pdf";
if (!pagamentoDirittiSegreteria.isPresent()) {
final byte[] ricevutaPagamento = stampaRicevuta(iuv, ccp);
InputStream is = new ByteArrayInputStream(ricevutaPagamento);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.OBJECT_TYPE_ID, PAGOPAObjectType.JCONON_ATTACHMENT_PAGAMENTI_DIRITTI_SEGRETERIA.value());
properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, Arrays.asList("P:jconon_attachment:generic_document"));
properties.put(PAGOPAPropertyIds.ATTACHMENT_ESTREMI_PAGAMENTO_DIRITTI_SEGRETERIA.value(), ccp);
properties.put(PropertyIds.NAME, fileName);
ContentStream contentStream = new ContentStreamImpl(fileName, BigInteger.valueOf(is.available()), "application/pdf", is);
Document doc = application.createDocument(properties, contentStream, VersioningState.MAJOR);
aclService.addAcl(
cmisService.getAdminSession(),
doc.<String>getPropertyValue(CoolPropertyIds.ALFCMIS_NODEREF.value()),
Collections.singletonMap(application.getPropertyValue("jconon_application:user"), ACLType.Coordinator)
);
if (LOGGER.isInfoEnabled())
LOGGER.info("É stato correttamente generato la ricevuta di pagamento per la domanda con id: {} documento id: {}", application.getId(), doc.getId());
} else if (!pagamentoDirittiSegreteria.get().getCreatedBy().equalsIgnoreCase(application.getPropertyValue("jconon_application:user"))) {
final byte[] ricevutaPagamento = stampaRicevuta(iuv, ccp);
InputStream is = new ByteArrayInputStream(ricevutaPagamento);
ContentStream contentStream = new ContentStreamImpl(fileName, BigInteger.valueOf(is.available()), "application/pdf", is);
pagamentoDirittiSegreteria.get().setContentStream(contentStream, true, true);
}
}
}
public void notificaPagamento(Session currentCMISSession, NotificaPagamento pagamento, String iuv) throws IOException {
Expand Down

0 comments on commit b4cb046

Please sign in to comment.