Skip to content

Commit d319329

Browse files
authored
feat: promote to main (#376)
2 parents b08c72a + 7d08728 commit d319329

File tree

45 files changed

+4035
-4820
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+4035
-4820
lines changed

erogazione/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,17 @@ I seguenti campi vengono recuperati automaticamente tramite API SelfCare usando
8585
```
8686

8787
### Generazione del File CSV di Esempio
88-
Per generare il file `dati.csv`, è necessario aggiornare la tabella CosmosDB `selfcare_export`, ed eseguire la seguente query:
88+
Per generare il file `dati.csv` è necessario eseguire la seguente query (opt. aggiunta nella where del filtro month == "yyyy-MM"):
8989

9090
```query
9191
merchant
9292
| join kind=inner rewards_batch on $left._id == $right.merchantId
93-
| where status == "APPROVING"
93+
| where status == "APPROVED" and approvedAmountCents > 0
9494
| project id=_id1 ,
9595
partitaIvaCliente=iff(strlen(vatNumber)==16, "00000000000", vatNumber),
9696
codiceFiscaleCliente=fiscalCode,
97-
ragioneSocialeIntestatario=businessName,
97+
// Tagliamo a 140 caratteri per compatibilità con le api di erogazione
98+
ragioneSocialeIntestatario = substring(businessName, 0, 140),
9899
ibanBeneficiario=iban,
99100
intestatarioContoCorrente=ibanHolder,
100101
importo=tostring(approvedAmountCents),

erogazione/erogazioni.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import csv
22
import json
33
import requests
4-
from datetime import datetime
4+
from datetime import datetime, timezone
55

66
# --- CONFIGURAZIONE ---
77
CLIENT_ID = "IL_TUO_CLIENT_ID"
88
CLIENT_SECRET = "IL_TUO_CLIENT_SECRET"
9-
BASE_URL = "https://dev-apim-misure.azure-api.net/pagopa/ce/v1"
9+
#BASE_URL_UAT = "https://dev-apim-misure.azure-api.net/pagopa/ce/v1"
10+
BASE_URL = "https://prod-apim-misure.azure-api.net/pagopa/ce/v1"
1011
TOKEN_URL = "https://login.microsoftonline.com/afd0a75c-8671-4cce-9061-2ca0d92e422f/oauth2/v2.0/token"
1112
SELFCARE_URL = "https://api.selfcare.pagopa.it/external/v2/institutions"
1213
SELFCARE_API_KEY = "SELFCARE-MERCHANT-API-KEY"
@@ -25,16 +26,18 @@ def get_bearer_token():
2526
'client_secret': CLIENT_SECRET,
2627
'scope': f'{CLIENT_ID}/.default'
2728
}
29+
response = None
2830
try:
2931
response = requests.post(TOKEN_URL, data=payload)
3032
response.raise_for_status()
3133
return response.json().get('access_token')
3234
except requests.exceptions.RequestException as e:
3335
print(f"Errore recupero Token: {e}")
34-
try:
35-
print(response.text)
36-
except:
37-
pass
36+
if response is not None:
37+
try:
38+
print(response.text)
39+
except Exception:
40+
pass
3841
exit(1)
3942

4043

@@ -139,6 +142,14 @@ def process_csv():
139142
# Lista per accumulare tutte le risposte
140143
all_responses_log = []
141144

145+
# Nome file output univoco con timestamp UTC
146+
output_json_file = OUTPUT_JSON_FILE
147+
if output_json_file.lower().endswith('.json'):
148+
output_json_file = output_json_file[:-5]
149+
150+
timestamp = datetime.now(timezone.utc).strftime('%Y%m%dT%H%M%SZ')
151+
output_json_file = f"{output_json_file}_{timestamp}.json"
152+
142153
try:
143154
with open(CSV_FILE, mode='r', encoding='utf-8-sig') as f:
144155
reader = csv.DictReader(f)
@@ -224,10 +235,10 @@ def process_csv():
224235
return
225236

226237
# Salvataggio unico file JSON finale
227-
with open(OUTPUT_JSON_FILE, 'w', encoding='utf-8') as f_out:
238+
with open(output_json_file, 'w', encoding='utf-8') as f_out:
228239
json.dump(all_responses_log, f_out, indent=4, ensure_ascii=False)
229240

230-
print(f"\nElaborazione completata. Risposte salvate in '{OUTPUT_JSON_FILE}'")
241+
print(f"\nElaborazione completata. Risposte salvate in '{output_json_file}'")
231242

232243

233244
if __name__ == "__main__":
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package it.gov.pagopa.common.web.exception;
2+
3+
import static it.gov.pagopa.idpay.transactions.utils.ExceptionConstants.ExceptionCode.INVALID_CHECKS_ERROR;
4+
5+
public class InvalidChecksErrorException extends ServiceException {
6+
7+
public InvalidChecksErrorException(String message) {
8+
this(INVALID_CHECKS_ERROR, message, false, null);
9+
}
10+
11+
public InvalidChecksErrorException(
12+
String code,
13+
String message,
14+
boolean printStackTrace,
15+
Throwable ex
16+
) {
17+
super(code, message, printStackTrace, ex);
18+
}
19+
}

src/main/java/it/gov/pagopa/idpay/transactions/config/ServiceExceptionConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public Map<Class<? extends ServiceException>, HttpStatus> serviceExceptionMapper
2626
exceptionMap.put(BatchNotElaborated15PercentException.class, HttpStatus.BAD_REQUEST);
2727
exceptionMap.put(InvalidBatchStateForPromotionException.class, HttpStatus.BAD_REQUEST);
2828
exceptionMap.put(RewardBatchInvalidRequestException.class, HttpStatus.BAD_REQUEST);
29+
exceptionMap.put(InvalidChecksErrorException.class, HttpStatus.BAD_REQUEST);
2930

3031
return exceptionMap;
3132
}

src/main/java/it/gov/pagopa/idpay/transactions/controller/MerchantTransactionController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Mono<MerchantTransactionsListDTO> getMerchantTransactions(@RequestHeader("x-merc
1919
@RequestParam(required = false) String rewardBatchId,
2020
@RequestParam(required = false) String rewardBatchTrxStatus,
2121
@RequestParam(required = false) String pointOfSaleId,
22+
@RequestParam(required = false) String trxCode,
2223
@PageableDefault Pageable pageable);
2324

2425
@GetMapping("/initiatives/{initiativeId}/transactions/processed/statuses")

src/main/java/it/gov/pagopa/idpay/transactions/controller/MerchantTransactionControllerImpl.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,19 @@ public MerchantTransactionControllerImpl(MerchantTransactionService merchantTran
2020

2121

2222
@Override
23-
public Mono<MerchantTransactionsListDTO> getMerchantTransactions(String merchantId, String organizationRole, String initiativeId, String fiscalCode, String status, String rewardBatchId, String rewardBatchTrxStatus, String pointOfSaleId, Pageable pageable) {
23+
public Mono<MerchantTransactionsListDTO> getMerchantTransactions(String merchantId,
24+
String organizationRole,
25+
String initiativeId,
26+
String fiscalCode,
27+
String status,
28+
String rewardBatchId,
29+
String rewardBatchTrxStatus,
30+
String pointOfSaleId,
31+
String trxCode,
32+
Pageable pageable) {
2433

2534
log.info("[GET_MERCHANT_TRANSACTIONS] Merchant {} requested to retrieve transactions", Utilities.sanitizeString(merchantId));
26-
return merchantTransactionService.getMerchantTransactions(merchantId, organizationRole, initiativeId, fiscalCode, status, rewardBatchId, rewardBatchTrxStatus, pointOfSaleId, pageable);
35+
return merchantTransactionService.getMerchantTransactions(merchantId, organizationRole, initiativeId, fiscalCode, status, rewardBatchId, rewardBatchTrxStatus, pointOfSaleId, trxCode, pageable);
2736
}
2837

2938
@Override

src/main/java/it/gov/pagopa/idpay/transactions/controller/PointOfSaleTransactionController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Mono<PointOfSaleTransactionsListDTO> getPointOfSaleTransactions(
3232
@RequestParam(required = false) String productGtin,
3333
@RequestParam(required = false) String fiscalCode,
3434
@RequestParam(required = false) String status,
35+
@RequestParam(required = false) String trxCode,
3536
@PageableDefault(sort = "trxChargeDate", direction = Sort.Direction.DESC) Pageable pageable);
3637

3738
/**

src/main/java/it/gov/pagopa/idpay/transactions/controller/PointOfSaleTransactionControllerImpl.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import it.gov.pagopa.idpay.transactions.dto.DownloadInvoiceResponseDTO;
55
import it.gov.pagopa.idpay.transactions.dto.FranchisePointOfSaleDTO;
66
import it.gov.pagopa.idpay.transactions.dto.PointOfSaleTransactionsListDTO;
7+
import it.gov.pagopa.idpay.transactions.dto.TrxFiltersDTO;
78
import it.gov.pagopa.idpay.transactions.dto.mapper.PointOfSaleTransactionMapper;
89
import it.gov.pagopa.idpay.transactions.service.PointOfSaleTransactionService;
910
import it.gov.pagopa.idpay.transactions.utils.ExceptionConstants;
@@ -32,7 +33,15 @@ public PointOfSaleTransactionControllerImpl(PointOfSaleTransactionService pointO
3233
}
3334

3435
@Override
35-
public Mono<PointOfSaleTransactionsListDTO> getPointOfSaleTransactions(String merchantId, String tokenPointOfSaleId, String initiativeId, String pointOfSaleId, String productGtin, String fiscalCode, String status, Pageable pageable) {
36+
public Mono<PointOfSaleTransactionsListDTO> getPointOfSaleTransactions(String merchantId,
37+
String tokenPointOfSaleId,
38+
String initiativeId,
39+
String pointOfSaleId,
40+
String productGtin,
41+
String fiscalCode,
42+
String status,
43+
String trxCode,
44+
Pageable pageable) {
3645
log.info("[GET_POINT-OF-SALE_TRANSACTIONS] Point Of Sale {} requested to retrieve transactions", Utilities.sanitizeString(pointOfSaleId));
3746

3847
if (tokenPointOfSaleId != null && (!Utilities.sanitizeString(tokenPointOfSaleId)
@@ -47,7 +56,12 @@ public Mono<PointOfSaleTransactionsListDTO> getPointOfSaleTransactions(String me
4756
));
4857
}
4958

50-
return pointOfSaleTransactionService.getPointOfSaleTransactions(merchantId, initiativeId, pointOfSaleId, productGtin, fiscalCode, status, pageable)
59+
TrxFiltersDTO filters = new TrxFiltersDTO();
60+
filters.setFiscalCode(fiscalCode);
61+
filters.setStatus(status);
62+
filters.setTrxCode(trxCode);
63+
64+
return pointOfSaleTransactionService.getPointOfSaleTransactions(merchantId, initiativeId, pointOfSaleId, productGtin, filters, pageable)
5165
.flatMap(page ->
5266
Flux.fromIterable(page.getContent())
5367
.flatMapSequential(trx -> mapper.toDTO(trx, initiativeId, fiscalCode))
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package it.gov.pagopa.idpay.transactions.dto;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
import lombok.NoArgsConstructor;
6+
7+
@Data
8+
@AllArgsConstructor
9+
@NoArgsConstructor
10+
public class ChecksErrorDTO {
11+
12+
private boolean cfError;
13+
private boolean productEligibilityError;
14+
private boolean disposalRaeeError;
15+
private boolean priceError;
16+
private boolean bonusError;
17+
private boolean sellerReferenceError;
18+
private boolean accountingDocumentError;
19+
private boolean genericError;
20+
}

src/main/java/it/gov/pagopa/idpay/transactions/dto/MerchantTransactionDTO.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.springframework.format.annotation.DateTimeFormat;
1010

1111
import java.time.LocalDateTime;
12+
import java.util.List;
1213
import java.util.Map;
1314

1415
@Data
@@ -35,6 +36,7 @@ public class MerchantTransactionDTO {
3536
Long authorizedAmountCents;
3637
InvoiceData invoiceData;
3738
RewardBatchTrxStatus rewardBatchTrxStatus;
38-
String rewardBatchRejectionReason;
39+
List<ReasonDTO> rewardBatchRejectionReason;
40+
ChecksErrorDTO checksError;
3941
String franchiseName;
4042
}

0 commit comments

Comments
 (0)