Skip to content

Commit

Permalink
Issue #364 #448
Browse files Browse the repository at this point in the history
Si possono ora inserire pendenze multivoce indicando il numero avviso.
Il vincolo resta se la pendenza ha almeno una voce di tipo Marca da Bollo Telematica.
  • Loading branch information
pintorig committed Feb 3, 2022
1 parent 148e0f7 commit a65c631
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,29 @@ When method get
Then status 200

* match response.importo == importoOriginale
* match response.stato == 'NON_ESEGUITA'
* match response.stato == 'NON_ESEGUITA'

Scenario: Caricamento pendenza multivoce con numero avviso

* def pendenzaPut = read('msg/pendenza-put_multivoce_bollo.json')
* def numeroAvviso = buildNumeroAvviso(dominio, applicazione)
* set pendenzaPut.numeroAvviso = numeroAvviso
* set pendenzaPut.importo = 109.99
* remove pendenzaPut.voci[2]

Given url pendenzeBaseurl
And path '/pendenze', idA2A, idPendenza
And headers idA2ABasicAutenticationHeader
And request pendenzaPut
When method put
Then status 201

Given url pendenzeBaseurl
And path '/pendenze', idA2A, idPendenza
And headers idA2ABasicAutenticationHeader
When method get
Then status 200

* match response.stato == 'NON_ESEGUITA'
* match response.numeroAvviso == numeroAvviso

Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ And match response ==
categoria: 'RICHIESTA',
codice: 'VER_031',
descrizione: 'Richiesta non valida',
dettaglio: 'Non e\' possibile indicare il numero avviso per una pendenza di tipo multivoce.'
dettaglio: 'Non e\' possibile indicare il numero avviso per una pendenza di tipo multivoce se una delle voci e\' una Marca da Bollo Telematica.'
}
"""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ And match response ==
categoria: 'RICHIESTA',
codice: 'VER_031',
descrizione: 'Richiesta non valida',
dettaglio: 'Non e\' possibile indicare il numero avviso per una pendenza di tipo multivoce.'
dettaglio: 'Non e\' possibile indicare il numero avviso per una pendenza di tipo multivoce se una delle voci e\' una Marca da Bollo Telematica.'
}
"""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ And match response ==
categoria: 'RICHIESTA',
codice: 'VER_031',
descrizione: 'Richiesta non valida',
dettaglio: 'Non e\' possibile indicare il numero avviso per una pendenza di tipo multivoce.'
dettaglio: 'Non e\' possibile indicare il numero avviso per una pendenza di tipo multivoce se una delle voci e\' una Marca da Bollo Telematica.'
}
"""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -642,7 +642,7 @@ public enum EsitoOperazione {
*/
TRB_001,
/**
* Versamento multivoce non puo' essere caricato fornendo il numero avviso
* Versamento multivoce non puo' essere caricato fornendo il numero avviso se una delle voci e' un bollo
*
*/
VER_031,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@ public ObjectListValidator maxItems(long max) throws ValidationException {

public ObjectListValidator validateObjects() throws ValidationException {
if(this.fieldValue != null) {
for(IValidable v : this.fieldValue) {
for (int i = 0; i < this.fieldValue.size(); i++) {
IValidable v = this.fieldValue.get(i);
if(v == null)
throw new ValidationException("L'elemento in posizione "+(i)+" del campo " + this.fieldName + " e' vuoto.");

v.validate();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ public String getMessage() {
case UAN_001: return "Non e' possibile effettuare il pagamento della pendenza (IdA2A:"+this.params[0]+" Id:"+this.params[1]+") in maniera anonima senza specificare l'entrata da pagare.";
case UAN_002: return "Non e' possibile effettuare il pagamento della pendenza (IdA2A:"+this.params[0]+" Id:"+this.params[1]+") in maniera anonima poiche' il tipo pendenza ("+ this.params[2] +") non e' abilitato ai pagamenti spontanei.";
case TRB_001: return "Tributo (" + this.params[1] + ") disabilitato per il dominio (" + this.params[0] + ")";
case VER_031: return "Non e' possibile indicare il numero avviso per una pendenza di tipo multivoce.";
case VER_031: return "Non e' possibile indicare il numero avviso per una pendenza di tipo multivoce se una delle voci e' una Marca da Bollo Telematica.";
case VER_032: return "Iban di accredito (" + this.params[1] + ") disabilitato per il dominio (" + this.params[0] + ")";
case VER_033: return "Iban di appoggio (" + this.params[1] + ") non censito per il dominio (" + this.params[0] + ")";
case VER_034: return "Iban di appoggio (" + this.params[1] + ") disabilitato per il dominio (" + this.params[0] + ")";
Expand Down
20 changes: 15 additions & 5 deletions jars/core/src/main/java/it/govpay/core/utils/VersamentoUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -524,14 +524,24 @@ public static Versamento toVersamentoModel(it.govpay.core.dao.commons.Versamento
model.setImportoTotale(versamento.getImportoTotale());
model.setStatoVersamento(StatoVersamento.NON_ESEGUITO);

// in un versamento multivoce non si puo' passare il numero avviso
if(versamento.getSingoloVersamento().size() > 1 && StringUtils.isNotEmpty(versamento.getNumeroAvviso())) {
throw new GovPayException(EsitoOperazione.VER_031);
}

int index = 1;
boolean hasBollo = false;
for(it.govpay.core.dao.commons.Versamento.SingoloVersamento singoloVersamento : versamento.getSingoloVersamento()) {
model.addSingoloVersamento(toSingoloVersamentoModel(model, singoloVersamento, index++ , configWrapper));

if(!hasBollo) {
if(singoloVersamento.getBolloTelematico() != null) {
hasBollo = true;
}
}
}

// in un versamento multivoce non si puo' passare il numero avviso
// #364 / #448 2022/02/03 rilassato vincolo di caricamento pendenza multivoce con numero avviso solo non esiste una voce di tipo MBT
if(hasBollo) {
if(versamento.getSingoloVersamento().size() > 1 && StringUtils.isNotEmpty(versamento.getNumeroAvviso())) {
throw new GovPayException(EsitoOperazione.VER_031);
}
}

model.setTassonomia(versamento.getTassonomia());
Expand Down

0 comments on commit a65c631

Please sign in to comment.