Skip to content

Commit d3f88ee

Browse files
committed
Issue #586
Aggiunti campi stato e descrizioneStato ai dati restituiti dal servizio riconciliazioni delle API Backoffice.
1 parent a5e0dcd commit d3f88ee

File tree

17 files changed

+390
-36
lines changed

17 files changed

+390
-36
lines changed

integration-test/src/test/java/test/api/backoffice/v1/riconciliazioni/get/msg/riconciliazione-cumulativa-idflusso-response.json

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"data":"#notnull",
77
"sct":"#notnull",
88
"idFlusso":"#notnull",
9+
"stato":"#notnull",
910
"riscossioni":[
1011
{
1112
"idDominio":"#notnull",

integration-test/src/test/java/test/api/backoffice/v1/riconciliazioni/get/msg/riconciliazione-cumulativa-response.json

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"sct":"#notnull",
88
"iuv":"##string",
99
"idFlusso":"##string",
10+
"stato":"#notnull",
1011
"riscossioni":[
1112
{
1213
"idDominio":"#notnull",

integration-test/src/test/java/test/api/backoffice/v1/riconciliazioni/get/msg/riconciliazione-singola-response.json

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"sct":"#notnull",
88
"iuv":"##string",
99
"idFlusso":"##string",
10+
"stato":"#notnull",
1011
"riscossioni":[
1112
{
1213
"idDominio":"#notnull",

integration-test/src/test/java/test/api/backoffice/v1/riconciliazioni/get/msg/riconciliazione-singola-senza-rpt.json

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"sct":"#notnull",
88
"iuv":"##string",
99
"idFlusso":"##string",
10+
"stato":"#notnull",
1011
"riscossioni":[
1112
{
1213
"idDominio":"#notnull",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
Feature: Validazione sintattica filtri di ricerca per stato
2+
3+
Background:
4+
5+
* callonce read('classpath:utils/common-utils.feature')
6+
* callonce read('classpath:configurazione/v1/anagrafica.feature')
7+
* def backofficeBaseurl = getGovPayApiBaseUrl({api: 'backoffice', versione: 'v1', autenticazione: 'basic'})
8+
* def nomeAPI = '/incassi'
9+
10+
Scenario: Validazione sintattica filtri per stato
11+
12+
# No filtri
13+
14+
Given url backofficeBaseurl
15+
And path nomeAPI
16+
And headers gpAdminBasicAutenticationHeader
17+
When method get
18+
Then status 200
19+
And match response ==
20+
"""
21+
{
22+
maxRisultati: '#number',
23+
numRisultati: '#number',
24+
numPagine: '#number',
25+
risultatiPerPagina: 25,
26+
pagina: 1,
27+
prossimiRisultati: '#ignore',
28+
risultati: '#array'
29+
}
30+
"""
31+
32+
# Filtro stato = 'IN_ELABORAZIONE'
33+
34+
Given url backofficeBaseurl
35+
And path nomeAPI
36+
And param stato = 'IN_ELABORAZIONE'
37+
And headers gpAdminBasicAutenticationHeader
38+
When method get
39+
Then status 200
40+
And match response ==
41+
"""
42+
{
43+
maxRisultati: '#number',
44+
numRisultati: '#number',
45+
numPagine: '#number',
46+
risultatiPerPagina: 25,
47+
pagina: 1,
48+
prossimiRisultati: '#ignore',
49+
risultati: '#array'
50+
}
51+
"""
52+
53+
# Filtro stato = 'ACQUISITO'
54+
55+
Given url backofficeBaseurl
56+
And path nomeAPI
57+
And param stato = 'ACQUISITO'
58+
And headers gpAdminBasicAutenticationHeader
59+
When method get
60+
Then status 200
61+
And match response ==
62+
"""
63+
{
64+
maxRisultati: '#number',
65+
numRisultati: '#number',
66+
numPagine: '#number',
67+
risultatiPerPagina: 25,
68+
pagina: 1,
69+
prossimiRisultati: '#ignore',
70+
risultati: '#array'
71+
}
72+
"""
73+
74+
# Filtro stato = 'ERRORE'
75+
76+
Given url backofficeBaseurl
77+
And path nomeAPI
78+
And param stato = 'ERRORE'
79+
And headers gpAdminBasicAutenticationHeader
80+
When method get
81+
Then status 200
82+
And match response ==
83+
"""
84+
{
85+
maxRisultati: '#number',
86+
numRisultati: '#number',
87+
numPagine: '#number',
88+
risultatiPerPagina: 25,
89+
pagina: 1,
90+
prossimiRisultati: '#ignore',
91+
risultati: '#array'
92+
}
93+
"""
94+
95+
# Filtro stato non valido
96+
97+
* def dataDaNonValida = 'STATO_NON_VALIDO'
98+
* def dataDaParamName = 'stato'
99+
100+
Given url backofficeBaseurl
101+
And path nomeAPI
102+
And param dataDa = dataDaNonValida
103+
And headers gpAdminBasicAutenticationHeader
104+
When method get
105+
Then status 400
106+
107+
* match response == { categoria: 'RICHIESTA', codice: 'SINTASSI', descrizione: 'Richiesta non valida', dettaglio: '#notnull' }
108+
* match response.dettaglio contains 'STATO_NON_VALIDO'

jars/core/src/main/java/it/govpay/core/dao/pagamenti/IncassiDAO.java

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public ListaIncassiDTOResponse listaIncassi(ListaIncassiDTO listaIncassoDTO) thr
7171
newFilter.setCodApplicazione(listaIncassoDTO.getIdA2A());
7272
newFilter.setSct(listaIncassoDTO.getSct());
7373
newFilter.setCodFlusso(listaIncassoDTO.getCodFlusso());
74+
newFilter.setStato(listaIncassoDTO.getStato());
7475

7576
List<Incasso> findAll = new ArrayList<>();
7677
if(listaIncassoDTO.getIuv() != null ) {

jars/core/src/main/java/it/govpay/core/dao/pagamenti/dto/ListaIncassiDTO.java

+8
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.security.core.Authentication;
2626

2727
import it.govpay.core.dao.anagrafica.dto.BasicFindRequestDTO;
28+
import it.govpay.model.Incasso.StatoIncasso;
2829
import it.govpay.orm.Incasso;
2930

3031
public class ListaIncassiDTO extends BasicFindRequestDTO {
@@ -44,6 +45,7 @@ public ListaIncassiDTO(Authentication user) {
4445
private boolean includiPagamenti;
4546
private String codFlusso;
4647
private String iuv;
48+
private StatoIncasso stato;
4749

4850

4951
public String getIdDominio() {
@@ -94,4 +96,10 @@ public String getIuv() {
9496
public void setIuv(String iuv) {
9597
this.iuv = iuv;
9698
}
99+
public StatoIncasso getStato() {
100+
return stato;
101+
}
102+
public void setStato(StatoIncasso stato) {
103+
this.stato = stato;
104+
}
97105
}

jars/orm/src/main/java/it/govpay/bd/pagamento/filters/IncassoFilter.java

+26
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838

3939
import it.govpay.bd.AbstractFilter;
4040
import it.govpay.bd.ConnectionManager;
41+
import it.govpay.model.Incasso.StatoIncasso;
4142
import it.govpay.orm.Incasso;
4243
import it.govpay.orm.dao.jdbc.converter.IncassoFieldConverter;
4344
import it.govpay.orm.model.IncassoModel;
@@ -56,6 +57,7 @@ public class IncassoFilter extends AbstractFilter{
5657
private String sct;
5758
private String codFlusso = null;
5859
private String iuv = null;
60+
private StatoIncasso stato = null;
5961

6062
public IncassoFilter(IExpressionConstructor expressionConstructor) {
6163
this(expressionConstructor,false);
@@ -197,6 +199,14 @@ public IExpression _toExpression() throws ServiceException {
197199
addAnd = true;
198200
}
199201

202+
if(this.stato != null) {
203+
if(addAnd)
204+
newExpression.and();
205+
206+
newExpression.equals(Incasso.model().STATO, this.stato.toString());
207+
addAnd = true;
208+
}
209+
200210
return newExpression;
201211
} catch (NotImplementedException e) {
202212
throw new ServiceException(e);
@@ -282,6 +292,10 @@ public ISQLQueryObject toWhereCondition(ISQLQueryObject sqlQueryObject) throws S
282292
sqlQueryObject.addWhereCondition(true,converter.toColumn(model.IUV, true) + " = ? ");
283293
}
284294

295+
if(this.stato != null) {
296+
sqlQueryObject.addWhereCondition(true,converter.toColumn(model.STATO, true) + " = ? ");
297+
}
298+
285299
return sqlQueryObject;
286300
} catch (ExpressionException e) {
287301
throw new ServiceException(e);
@@ -347,6 +361,10 @@ public Object[] getParameters(ISQLQueryObject sqlQueryObject) throws ServiceExce
347361
lst.add(this.iuv);
348362
}
349363

364+
if(this.stato != null) {
365+
lst.add(this.stato.toString());
366+
}
367+
350368
return lst.toArray(new Object[lst.size()]);
351369
}
352370

@@ -444,5 +462,13 @@ public String getIuv() {
444462
public void setIuv(String iuv) {
445463
this.iuv = iuv;
446464
}
465+
466+
public StatoIncasso getStato() {
467+
return stato;
468+
}
469+
470+
public void setStato(StatoIncasso stato) {
471+
this.stato = stato;
472+
}
447473

448474
}

wars/api-backoffice/src/main/java/it/govpay/backoffice/v1/Incassi.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ public Incassi() {
3838
@Path("/")
3939

4040
@Produces({ "application/json" })
41-
public Response findRiconciliazioni(@Context UriInfo uriInfo, @Context HttpHeaders httpHeaders, @QueryParam(value=Costanti.PARAMETRO_PAGINA) @DefaultValue(value="1") Integer pagina, @QueryParam(value=Costanti.PARAMETRO_RISULTATI_PER_PAGINA) @DefaultValue(value="25") Integer risultatiPerPagina, @QueryParam("ordinamento") String ordinamento, @QueryParam("dataDa") String dataDa, @QueryParam("dataA") String dataA, @QueryParam("idDominio") String idDominio, @QueryParam("metadatiPaginazione") @DefaultValue(value="true") Boolean metadatiPaginazione, @QueryParam("maxRisultati") @DefaultValue(value="true") Boolean maxRisultati, @QueryParam("sct") String sct, @QueryParam("idFlusso") String idFlusso, @QueryParam("iuv") String iuv){
41+
public Response findRiconciliazioni(@Context UriInfo uriInfo, @Context HttpHeaders httpHeaders, @QueryParam(value=Costanti.PARAMETRO_PAGINA) @DefaultValue(value="1") Integer pagina, @QueryParam(value=Costanti.PARAMETRO_RISULTATI_PER_PAGINA) @DefaultValue(value="25") Integer risultatiPerPagina, @QueryParam("ordinamento") String ordinamento, @QueryParam("dataDa") String dataDa, @QueryParam("dataA") String dataA, @QueryParam("idDominio") String idDominio, @QueryParam("metadatiPaginazione") @DefaultValue(value="true") Boolean metadatiPaginazione, @QueryParam("maxRisultati") @DefaultValue(value="true") Boolean maxRisultati, @QueryParam("sct") String sct, @QueryParam("idFlusso") String idFlusso, @QueryParam("iuv") String iuv, @QueryParam("stato") String stato){
4242
this.buildContext();
43-
return this.controller.findRiconciliazioni(this.getUser(), uriInfo, httpHeaders, pagina, risultatiPerPagina, ordinamento, dataDa, dataA, idDominio, metadatiPaginazione, maxRisultati, sct, idFlusso, iuv);
43+
return this.controller.findRiconciliazioni(this.getUser(), uriInfo, httpHeaders, pagina, risultatiPerPagina, ordinamento, dataDa, dataA, idDominio, metadatiPaginazione, maxRisultati, sct, idFlusso, iuv,stato);
4444
}
4545

4646
@GET

wars/api-backoffice/src/main/java/it/govpay/backoffice/v1/beans/Incasso.java

+47-4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
"iuv",
2323
"idFlusso",
2424
"riscossioni",
25+
"stato",
26+
"descrizioneStato",
2527
})
2628
public class Incasso extends it.govpay.core.beans.JSONSerializable {
2729

@@ -60,7 +62,13 @@ public class Incasso extends it.govpay.core.beans.JSONSerializable {
6062

6163
@JsonProperty("idFlusso")
6264
private String idFlusso = null;
63-
65+
66+
@JsonProperty("stato")
67+
private StatoIncasso stato = null;
68+
69+
@JsonProperty("descrizioneStato")
70+
private String descrizioneStato = null;
71+
6472
/**
6573
**/
6674
public Incasso dominio(DominioIndex dominio) {
@@ -212,7 +220,7 @@ public Incasso riscossioni(List<Riscossione> riscossioni) {
212220

213221
@JsonProperty("riscossioni")
214222
public List<Riscossione> getRiscossioni() {
215-
return this.riscossioni;
223+
return riscossioni;
216224
}
217225
public void setRiscossioni(List<Riscossione> riscossioni) {
218226
this.riscossioni = riscossioni;
@@ -250,6 +258,37 @@ public void setIdFlusso(String idFlusso) {
250258
this.idFlusso = idFlusso;
251259
}
252260

261+
/**
262+
**/
263+
public Incasso stato(StatoIncasso stato) {
264+
this.stato = stato;
265+
return this;
266+
}
267+
268+
@JsonProperty("stato")
269+
public StatoIncasso getStato() {
270+
return stato;
271+
}
272+
public void setStato(StatoIncasso stato) {
273+
this.stato = stato;
274+
}
275+
276+
/**
277+
* Descrizione estesta dello stato della riconciliazione
278+
**/
279+
public Incasso descrizioneStato(String descrizioneStato) {
280+
this.descrizioneStato = descrizioneStato;
281+
return this;
282+
}
283+
284+
@JsonProperty("descrizioneStato")
285+
public String getDescrizioneStato() {
286+
return descrizioneStato;
287+
}
288+
public void setDescrizioneStato(String descrizioneStato) {
289+
this.descrizioneStato = descrizioneStato;
290+
}
291+
253292
@Override
254293
public boolean equals(java.lang.Object o) {
255294
if (this == o) {
@@ -270,12 +309,14 @@ public boolean equals(java.lang.Object o) {
270309
Objects.equals(sct, incasso.sct) &&
271310
Objects.equals(riscossioni, incasso.riscossioni) &&
272311
Objects.equals(iuv, incasso.iuv) &&
273-
Objects.equals(idFlusso, incasso.idFlusso);
312+
Objects.equals(idFlusso, incasso.idFlusso) &&
313+
Objects.equals(stato, incasso.stato) &&
314+
Objects.equals(descrizioneStato, incasso.descrizioneStato);
274315
}
275316

276317
@Override
277318
public int hashCode() {
278-
return Objects.hash(dominio, idIncasso, causale, importo, data, dataValuta, dataContabile, ibanAccredito, sct, riscossioni);
319+
return Objects.hash(dominio, idIncasso, causale, importo, data, dataValuta, dataContabile, ibanAccredito, sct, riscossioni, iuv, idFlusso, stato, descrizioneStato);
279320
}
280321

281322
public static Incasso parse(String json) throws IOException {
@@ -304,6 +345,8 @@ public String toString() {
304345
sb.append(" riscossioni: ").append(toIndentedString(riscossioni)).append("\n");
305346
sb.append(" iuv: ").append(this.toIndentedString(this.iuv)).append("\n");
306347
sb.append(" idFlusso: ").append(this.toIndentedString(this.idFlusso)).append("\n");
348+
sb.append(" stato: ").append(toIndentedString(stato)).append("\n");
349+
sb.append(" descrizioneStato: ").append(toIndentedString(descrizioneStato)).append("\n");
307350
sb.append("}");
308351
return sb.toString();
309352
}

0 commit comments

Comments
 (0)