Skip to content

Commit

Permalink
Issue #323: gestione causale in lingua secondaria
Browse files Browse the repository at this point in the history
  • Loading branch information
nardil committed Jul 9, 2021
1 parent 694f5ab commit cf3d71e
Show file tree
Hide file tree
Showing 40 changed files with 283 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,16 @@
},
</#if>
<#if !csvUtils.isEmpty(csvRecord, 86)>
<#assign linguaSecondariaString = csvRecord.get(86)!/>
<#assign mappedArray_string = []>
<#list linguaSecondariaString?split("\\|") as item>
<#assign mappedArray_string += [item]>
</#list>
"proprieta": {
"linguaSecondaria" : ${csvUtils.toJsonValue(csvRecord, 86)}
"linguaSecondaria" : ${mappedArray_string[0]}
<#if mappedArray_string?length > 1>
, "linguaSecondariaCausale" : ${mappedArray_string[1]}
</#if>
},
</#if>
"soggettoPagatore": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,39 @@ Then status 400
* match response contains { categoria: 'RICHIESTA', codice: 'SINTASSI', descrizione: 'Richiesta non valida' }
* match response.dettaglio contains 'linguaSecondaria'

Scenario: Caricamento pendenza con linguaSecondariacCausale

* set pendenzaPut.proprieta =
"""
{
linguaSecondaria : 'de',
linguaSecondariaCausale : 'TEST Causale'
}
"""

Given url pendenzeBaseurl
And path '/pendenze', idA2A, idPendenza
And headers idA2ABasicAutenticationHeader
And request pendenzaPut
When method put
Then status 201
And match response == { idDominio: '#(idDominio)', numeroAvviso: '#regex[0-9]{18}', UUID: '#notnull' }

* def responsePut = response

Given url pendenzeBaseurl
And path '/pendenze', idA2A, idPendenza
And headers idA2ABasicAutenticationHeader
When method get
Then status 200
And match response == read('msg/pendenza-get.json')

* match response.numeroAvviso == responsePut.numeroAvviso
* match response.stato == 'NON_ESEGUITA'
* match response.voci == '#[1]'
* match response.voci[0].indice == 1
* match response.voci[0].stato == 'Non eseguito'
* match response.proprieta == pendenzaPut.proprieta



Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,14 @@
},
</#if>
<#if !csvUtils.isEmpty(csvRecord, 86)>
<#assign linguaSecondariaString = csvRecord.get(86)!/>
<#assign mappedArray_string = linguaSecondariaString?split("|") !/>

"proprieta": {
"linguaSecondaria" : ${csvUtils.toJsonValue(csvRecord, 86)}
"linguaSecondaria" : "${mappedArray_string[0]}"
<#if (mappedArray_string?size > 1)>
, "linguaSecondariaCausale" : "${mappedArray_string[1]}"
</#if>
},
</#if>
"soggettoPagatore": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ idA2A,idPendenza,idDominio,numeroAvviso,tipoPendenza,idUnitaOperativa,causale,an
{idA2A},{idPendenza}-44,{idDominio},,{tipoPendenza},,Imu rata4,2010,CRT-001,"{ ""foo"": ""baz"", ""bar"": true }",,,10,2030-04-10,2140-12-30,Servizi erogati da altri enti,F,DRCGNN12A46A326K,Giovanna D'Arco,Viale Monterosa,11Bis,340,Roma,RM,IT,laPulzelladOrleans@yahoo.fr,,1,10,Tassa Passo Carrabile n. abc00000,{ibanAccredito},{ibanAppoggio},ALTRO,CodiceContabilita,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,MAI,D4-{idPendenza},IMU 2010 - n.{idPendenza},4,
{idA2A},{idPendenza}-51,{idDominio},,{tipoPendenza},,Imu rata1,2010,CRT-001,"{ ""foo"": ""baz"", ""bar"": true }",,,10,2030-01-10,2140-12-30,Servizi erogati da altri enti,F,DRCGNN12A46A326K,Giovanna D'Arco,Viale Monterosa,11Bis,340,Roma,RM,IT,laPulzelladOrleans@yahoo.fr,,1,10,Tassa Passo Carrabile n. abc00000,{ibanAccredito},{ibanAppoggio},ALTRO,CodiceContabilita,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,MAI,D5-{idPendenza},IMU 2010 - n.{idPendenza},1,false
{idA2A},{idPendenza}-52,{idDominio},,{tipoPendenza},,Imu rata2,2010,CRT-001,"{ ""foo"": ""baz"", ""bar"": true }",,,10,2030-02-10,2140-12-30,Servizi erogati da altri enti,F,DRCGNN12A46A326K,Giovanna D'Arco,Viale Monterosa,11Bis,340,Roma,RM,IT,laPulzelladOrleans@yahoo.fr,,1,10,Tassa Passo Carrabile n. abc00000,{ibanAccredito},{ibanAppoggio},ALTRO,CodiceContabilita,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,MAI,D5-{idPendenza},IMU 2010 - n.{idPendenza},2,
{idA2A},{idPendenza}-61,{idDominio},,{tipoPendenza},,Imu rata1,2010,CRT-001,"{ ""foo"": ""baz"", ""bar"": true }",,,10,2030-01-10,2140-12-30,Servizi erogati da altri enti,F,DRCGNN12A46A326K,Giovanna D'Arco,Viale Monterosa,11Bis,340,Roma,RM,IT,laPulzelladOrleans@yahoo.fr,,1,10,Tassa Passo Carrabile n. abc00000,{ibanAccredito},{ibanAppoggio},ALTRO,CodiceContabilita,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,MAI,,,,de|provacausaletedesco
Original file line number Diff line number Diff line change
Expand Up @@ -1777,8 +1777,8 @@ And headers basicAutenticationHeader
And retry until response.stato == 'ESEGUITO'
When method get
Then match response contains { descrizioneStato: '##null' }
Then match response.numeroOperazioniTotali == 9
Then match response.numeroOperazioniEseguite == 9
Then match response.numeroOperazioniTotali == 10
Then match response.numeroOperazioniEseguite == 10
Then match response.numeroOperazioniFallite == 0

Given url backofficeBaseurl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,40 @@ Then status 400
* match response contains { categoria: 'RICHIESTA', codice: 'SINTASSI', descrizione: 'Richiesta non valida' }
* match response.dettaglio contains 'linguaSecondaria'


Scenario: Caricamento pendenza con linguaSecondariacCausale

* set pendenzaPut.proprieta =
"""
{
linguaSecondaria : 'de',
linguaSecondariaCausale : 'TEST Causale'
}
"""

Given url pendenzeBaseurl
And path '/pendenze', idA2A, idPendenza
And headers idA2ABasicAutenticationHeader
And request pendenzaPut
When method put
Then status 201
And match response == { idDominio: '#(idDominio)', numeroAvviso: '#regex[0-9]{18}', UUID: '#notnull' }

* def responsePut = response

Given url pendenzeBaseurl
And path '/pendenze', idA2A, idPendenza
And headers idA2ABasicAutenticationHeader
When method get
Then status 200
And match response == read('classpath:test/api/pendenza/v2/pendenze/get/msg/pendenza-get-dettaglio.json')

* match response.numeroAvviso == responsePut.numeroAvviso
* match response.stato == 'NON_ESEGUITA'
* match response.voci == '#[1]'
* match response.voci[0].indice == 1
* match response.voci[0].stato == 'Non eseguito'
* match response.proprieta == pendenzaPut.proprieta



Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"descrizioneImporto",
"lineaTestoRicevuta1",
"lineaTestoRicevuta2",
"linguaSecondariaCausale",
})
public class ProprietaPendenza {

Expand All @@ -27,6 +28,9 @@ public class ProprietaPendenza {
@JsonProperty("lineaTestoRicevuta2")
private String lineaTestoRicevuta2 = null;

@JsonProperty("linguaSecondariaCausale")
private String linguaSecondariaCausale = null;

/**
**/
public ProprietaPendenza linguaSecondaria(LinguaSecondaria linguaSecondaria) {
Expand Down Expand Up @@ -88,6 +92,22 @@ public String getLineaTestoRicevuta2() {
public void setLineaTestoRicevuta2(String lineaTestoRicevuta2) {
this.lineaTestoRicevuta2 = lineaTestoRicevuta2;
}

/**
* traduzione nella causale
**/
public ProprietaPendenza linguaSecondariaCausale(String linguaSecondariaCausale) {
this.linguaSecondariaCausale = linguaSecondariaCausale;
return this;
}

@JsonProperty("linguaSecondariaCausale")
public String getLinguaSecondariaCausale() {
return linguaSecondariaCausale;
}
public void setLinguaSecondariaCausale(String linguaSecondariaCausale) {
this.linguaSecondariaCausale = linguaSecondariaCausale;
}

@Override
public boolean equals(java.lang.Object o) {
Expand All @@ -101,12 +121,13 @@ public boolean equals(java.lang.Object o) {
return Objects.equals(linguaSecondaria, proprietaPendenza.linguaSecondaria) &&
Objects.equals(descrizioneImporto, proprietaPendenza.descrizioneImporto) &&
Objects.equals(lineaTestoRicevuta1, proprietaPendenza.lineaTestoRicevuta1) &&
Objects.equals(lineaTestoRicevuta2, proprietaPendenza.lineaTestoRicevuta2);
Objects.equals(lineaTestoRicevuta2, proprietaPendenza.lineaTestoRicevuta2) &&
Objects.equals(linguaSecondariaCausale, proprietaPendenza.linguaSecondariaCausale);
}

@Override
public int hashCode() {
return Objects.hash(linguaSecondaria, descrizioneImporto, lineaTestoRicevuta1, lineaTestoRicevuta2);
return Objects.hash(linguaSecondaria, descrizioneImporto, lineaTestoRicevuta1, lineaTestoRicevuta2, linguaSecondariaCausale);
}

@Override
Expand All @@ -118,6 +139,7 @@ public String toString() {
sb.append(" descrizioneImporto: ").append(toIndentedString(descrizioneImporto)).append("\n");
sb.append(" lineaTestoRicevuta1: ").append(toIndentedString(lineaTestoRicevuta1)).append("\n");
sb.append(" lineaTestoRicevuta2: ").append(toIndentedString(lineaTestoRicevuta2)).append("\n");
sb.append(" linguaSecondariaCausale: ").append(toIndentedString(linguaSecondariaCausale)).append("\n");
sb.append("}");
return sb.toString();
}
Expand Down
8 changes: 4 additions & 4 deletions jars/client-api-ente/src/main/resources/govpay-api-ec-v1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,10 @@ components:
lineaTestoRicevuta2:
type: string
description: stringa personalizzata da inserire nella ricevuta
linguaSecondariaCausale:
type: string
description: >-
causale della pendenza nella lingua secondaria da inserire nell'avviso
QuotaContabilita:
type: object
required:
Expand All @@ -845,10 +849,6 @@ components:
proprietaCustom:
type: object
description: Dati specifici del gestionale di contabilità
linguaSecondariaCausale:
type: string
description: >-
causale della pendenza nella lingua secondaria da inserire nell'avviso
VoceDescrizioneImporto:
type: object
properties:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"descrizioneImporto",
"lineaTestoRicevuta1",
"lineaTestoRicevuta2",
"linguaSecondariaCausale",
})
public class ProprietaPendenza extends JSONSerializable {

Expand All @@ -32,6 +33,9 @@ public class ProprietaPendenza extends JSONSerializable {
@JsonProperty("lineaTestoRicevuta2")
private String lineaTestoRicevuta2 = null;

@JsonProperty("linguaSecondariaCausale")
private String linguaSecondariaCausale = null;

/**
**/
public ProprietaPendenza linguaSecondaria(LinguaSecondaria linguaSecondaria) {
Expand Down Expand Up @@ -93,6 +97,22 @@ public String getLineaTestoRicevuta2() {
public void setLineaTestoRicevuta2(String lineaTestoRicevuta2) {
this.lineaTestoRicevuta2 = lineaTestoRicevuta2;
}

/**
* traduzione nella causale
**/
public ProprietaPendenza linguaSecondariaCausale(String linguaSecondariaCausale) {
this.linguaSecondariaCausale = linguaSecondariaCausale;
return this;
}

@JsonProperty("linguaSecondariaCausale")
public String getLinguaSecondariaCausale() {
return linguaSecondariaCausale;
}
public void setLinguaSecondariaCausale(String linguaSecondariaCausale) {
this.linguaSecondariaCausale = linguaSecondariaCausale;
}

@Override
public boolean equals(java.lang.Object o) {
Expand All @@ -106,12 +126,13 @@ public boolean equals(java.lang.Object o) {
return Objects.equals(linguaSecondaria, proprietaPendenza.linguaSecondaria) &&
Objects.equals(descrizioneImporto, proprietaPendenza.descrizioneImporto) &&
Objects.equals(lineaTestoRicevuta1, proprietaPendenza.lineaTestoRicevuta1) &&
Objects.equals(lineaTestoRicevuta2, proprietaPendenza.lineaTestoRicevuta2);
Objects.equals(lineaTestoRicevuta2, proprietaPendenza.lineaTestoRicevuta2) &&
Objects.equals(linguaSecondariaCausale, proprietaPendenza.linguaSecondariaCausale);
}

@Override
public int hashCode() {
return Objects.hash(linguaSecondaria, descrizioneImporto, lineaTestoRicevuta1, lineaTestoRicevuta2);
return Objects.hash(linguaSecondaria, descrizioneImporto, lineaTestoRicevuta1, lineaTestoRicevuta2, linguaSecondariaCausale);
}

public static ProprietaPendenza parse(String json) throws ServiceException, ValidationException {
Expand All @@ -132,6 +153,7 @@ public String toString() {
sb.append(" descrizioneImporto: ").append(toIndentedString(descrizioneImporto)).append("\n");
sb.append(" lineaTestoRicevuta1: ").append(toIndentedString(lineaTestoRicevuta1)).append("\n");
sb.append(" lineaTestoRicevuta2: ").append(toIndentedString(lineaTestoRicevuta2)).append("\n");
sb.append(" linguaSecondariaCausale: ").append(toIndentedString(linguaSecondariaCausale)).append("\n");
sb.append("}");
return sb.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ public static it.govpay.core.beans.tracciati.ProprietaPendenza toProprietaPenden
break;
}
}
dto.setLinguaSecondariaCausale(proprieta.getLinguaSecondariaCausale());
}

return dto;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import it.govpay.bd.model.UnitaOperativa;
import it.govpay.bd.model.Versamento;
import it.govpay.core.beans.tracciati.LinguaSecondaria;
import it.govpay.core.beans.tracciati.ProprietaPendenza;
import it.govpay.core.exceptions.UnprocessableEntityException;
import it.govpay.core.utils.IuvUtils;
import it.govpay.core.utils.LabelAvvisiProperties;
Expand All @@ -38,20 +39,30 @@ public class AvvisoPagamentoV2Utils {
public static AvvisoPagamentoInput fromVersamento(it.govpay.bd.model.Versamento versamento, LinguaSecondaria secondaLinguaScelta) throws ServiceException, UtilsException {
AvvisoPagamentoInput input = new AvvisoPagamentoInput();
BDConfigWrapper configWrapper = new BDConfigWrapper(ContextThreadLocal.get().getTransactionId(), true);


it.govpay.stampe.model.v2.AvvisoPagamentoInput.Etichette etichettes = new it.govpay.stampe.model.v2.AvvisoPagamentoInput.Etichette();
etichettes.setItaliano(getEtichetteItaliano());
etichettes.setTraduzione(getEtichetteTraduzione(secondaLinguaScelta));
input.setEtichette(etichettes);

String causaleVersamento = "";
if(versamento.getCausaleVersamento() != null) {
try {
causaleVersamento = versamento.getCausaleVersamento().getSimple();
input.setOggettoDelPagamento(causaleVersamento);
input.getEtichette().getItaliano().setOggettoDelPagamento(causaleVersamento);
}catch (UnsupportedEncodingException e) {
throw new ServiceException(e);
}
}

it.govpay.stampe.model.v2.AvvisoPagamentoInput.Etichette etichettes = new it.govpay.stampe.model.v2.AvvisoPagamentoInput.Etichette();
etichettes.setItaliano(getEtichetteItaliano());
etichettes.setTraduzione(getEtichetteTraduzione(secondaLinguaScelta));
input.setEtichette(etichettes);
// causale nella seconda lingua
if(input.getEtichette().getTraduzione() != null && secondaLinguaScelta != null ) {
ProprietaPendenza proprieta = versamento.getProprietaPendenza();
if(proprieta != null && StringUtils.isNotBlank(proprieta.getLinguaSecondariaCausale())) {
input.getEtichette().getTraduzione().setOggettoDelPagamento(proprieta.getLinguaSecondariaCausale());
}
}

AvvisoPagamentoV2Utils.impostaAnagraficaEnteCreditore(versamento.getDominio(configWrapper), versamento.getUo(configWrapper), input);
AvvisoPagamentoV2Utils.impostaAnagraficaDebitore(versamento.getAnagraficaDebitore(), input);
Expand All @@ -77,12 +88,13 @@ public static AvvisoPagamentoInput fromDocumento(Documento documento, List<Versa
AvvisoPagamentoInput input = new AvvisoPagamentoInput();
BDConfigWrapper configWrapper = new BDConfigWrapper(ContextThreadLocal.get().getTransactionId(), true);

input.setOggettoDelPagamento(documento.getDescrizione());

it.govpay.stampe.model.v2.AvvisoPagamentoInput.Etichette etichettes = new it.govpay.stampe.model.v2.AvvisoPagamentoInput.Etichette();
etichettes.setItaliano(getEtichetteItaliano());
etichettes.setTraduzione(getEtichetteTraduzione(secondaLinguaScelta));
input.setEtichette(etichettes);


input.getEtichette().getItaliano().setOggettoDelPagamento(documento.getDescrizione());

if(input.getPagine() == null)
input.setPagine(new PagineAvviso());
Expand Down Expand Up @@ -398,7 +410,7 @@ else if(sv.getIbanAppoggio(configWrapper) != null && sv.getIbanAppoggio(configWr
input.getCfEnte(),
input.getCfDestinatario(),
input.getNomeCognomeDestinatario(),
input.getOggettoDelPagamento()));
input.getEtichette().getItaliano().getOggettoDelPagamento()));
rata.setNumeroCcPostale(AvvisoPagamentoUtils.getNumeroCCDaIban(postale.getCodIban()));
if(StringUtils.isBlank(postale.getIntestatario()))
input.setIntestatarioContoCorrentePostale(input.getEnteCreditore());
Expand Down
Binary file modified jars/stampe/src/main/resources/AvvisoPagamentoV2.jasper
Binary file not shown.
Binary file modified jars/stampe/src/main/resources/BollettinoRataV2.jasper
Binary file not shown.
Binary file modified jars/stampe/src/main/resources/DoppiaRataV2.jasper
Binary file not shown.
Binary file modified jars/stampe/src/main/resources/DoppioFormatoV2.jasper
Binary file not shown.
Binary file modified jars/stampe/src/main/resources/DualBandV2.jasper
Binary file not shown.
Binary file modified jars/stampe/src/main/resources/MonoBandV2.jasper
Binary file not shown.
Binary file modified jars/stampe/src/main/resources/RataUnicaV2.jasper
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
</xsd:element>
<xsd:element name="logo_ente" type="xsd:string"/>
<xsd:element name="logo_ente_secondario" type="xsd:string"/>
<xsd:element name="oggetto_del_pagamento" type="xsd:string"/>
<xsd:element name="cf_ente" type="xsd:string"/>
<xsd:element name="cf_destinatario" type="xsd:string"/>
<xsd:element name="nome_cognome_destinatario" type="xsd:string"/>
Expand Down Expand Up @@ -58,6 +57,7 @@
<xsd:element name="codice_cbill" type="xsd:string"/>
<xsd:element name="codice_avviso" type="xsd:string"/>
<xsd:element name="codice_fiscale_ente" type="xsd:string"/>
<xsd:element name="oggetto_del_pagamento" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

Expand Down

0 comments on commit cf3d71e

Please sign in to comment.