diff --git a/src/main/java/it/gov/pagopa/payment/notice/generator/mapper/TemplateDataMapper.java b/src/main/java/it/gov/pagopa/payment/notice/generator/mapper/TemplateDataMapper.java index 980daea..c5f59a5 100644 --- a/src/main/java/it/gov/pagopa/payment/notice/generator/mapper/TemplateDataMapper.java +++ b/src/main/java/it/gov/pagopa/payment/notice/generator/mapper/TemplateDataMapper.java @@ -17,10 +17,11 @@ */ public class TemplateDataMapper { - private static String POSTE_DOCUMENT_TYPE_CODE = "896"; + private static final String POSTE_DOCUMENT_TYPE_CODE = "896"; /** * Map notice generation dat + * * @param noticeRequestData request data * @return mapped notice data */ @@ -29,7 +30,8 @@ public static PaymentNotice mapTemplate(NoticeRequestData noticeRequestData) { String noticeCode = noticeRequestData.getNotice().getCode(); String cbill = noticeRequestData.getCreditorInstitution().getCbill(); String ciTaxCode = noticeRequestData.getCreditorInstitution().getTaxCode(); - String noticeAmount = String.valueOf(noticeRequestData.getNotice().getPaymentAmount()); + String noticeAmount = noticeRequestData.getNotice().getPaymentAmount() != null ? + String.valueOf(noticeRequestData.getNotice().getPaymentAmount()) : null; InstallmentData reduced = noticeRequestData.getNotice().getReduced(); InstallmentData discounted = noticeRequestData.getNotice().getDiscounted(); String debtorTaxCode = noticeRequestData.getDebtor().getTaxCode(); @@ -44,10 +46,10 @@ public static PaymentNotice mapTemplate(NoticeRequestData noticeRequestData) { .taxCode(ciTaxCode) .name(noticeRequestData.getCreditorInstitution().getFullName()) .channel(Channel.builder().online( - Online.builder() - .website(Objects.requireNonNullElse(noticeRequestData.getCreditorInstitution().getWebChannel(), false)) - .app(Objects.requireNonNullElse(noticeRequestData.getCreditorInstitution().getAppChannel(), false)) - .build()) + Online.builder() + .website(Objects.requireNonNullElse(noticeRequestData.getCreditorInstitution().getWebChannel(), false)) + .app(Objects.requireNonNullElse(noticeRequestData.getCreditorInstitution().getAppChannel(), false)) + .build()) .physical(Physical.builder() .data(noticeRequestData.getCreditorInstitution().getPhysicalChannel()) .build()) @@ -74,8 +76,8 @@ public static PaymentNotice mapTemplate(NoticeRequestData noticeRequestData) { .cbillCode(cbill) .qrCode(noticeAmount != null ? generateQrCode(noticeCode, - ciTaxCode, - noticeAmount) : null + ciTaxCode, + noticeAmount) : null ) .subject(noticeRequestData.getNotice().getSubject()) .amount(noticeAmount != null ? currencyFormat(noticeAmount) : null) @@ -85,43 +87,30 @@ public static PaymentNotice mapTemplate(NoticeRequestData noticeRequestData) { .expiryDate(noticeRequestData.getNotice().getDueDate()) .posteDataMatrix(posteAuthCode != null ? generatePosteDataMatrix( - ciTaxCode, - debtorTaxCode, - fullName, - subject, - posteAccountNumber, - noticeAmount, - POSTE_DOCUMENT_TYPE_CODE, - noticeCode - ) : null) - .instalments(Installments.builder() - .reduced( - reduced != null ? mapInstallment( - cbill, ciTaxCode, debtorTaxCode, fullName, subject, posteAccountNumber, - posteAuthCode, - reduced - ) : null + noticeAmount, + POSTE_DOCUMENT_TYPE_CODE, + noticeCode + ) : null) + .instalments(Installments.builder() + .reduced( + reduced != null ? mapInstallment( + cbill, + ciTaxCode, + debtorTaxCode, + fullName, + subject, + posteAccountNumber, + posteAuthCode, + reduced + ) : null ) .discounted( - discounted != null ? mapInstallment( - cbill, - ciTaxCode, - debtorTaxCode, - fullName, - subject, - posteAccountNumber, - posteAuthCode, - discounted - ) : null - ) - .items(noticeRequestData.getNotice().getInstallments() != null ? - noticeRequestData.getNotice().getInstallments().stream().map(item -> - mapInstallment( + discounted != null ? mapInstallment( cbill, ciTaxCode, debtorTaxCode, @@ -129,9 +118,22 @@ public static PaymentNotice mapTemplate(NoticeRequestData noticeRequestData) { subject, posteAccountNumber, posteAuthCode, - item - )).toList() : - Collections.emptyList()).build()) + discounted + ) : null + ) + .items(noticeRequestData.getNotice().getInstallments() != null ? + noticeRequestData.getNotice().getInstallments().stream().map(item -> + mapInstallment( + cbill, + ciTaxCode, + debtorTaxCode, + fullName, + subject, + posteAccountNumber, + posteAuthCode, + item + )).toList() : + Collections.emptyList()).build()) .build()) .build(); } @@ -154,7 +156,7 @@ private static String generatePosteDataMatrix( private static String generateCodeline(String noticeCode, String posteAccountNumber, String amount, String posteTypeCode) { - return String.join("","18", + return String.join("", "18", StringUtils.leftPad(noticeCode, 18, "0"), "12", StringUtils.leftPad(posteAccountNumber, 12, "0"), @@ -165,7 +167,7 @@ private static String generateCodeline(String noticeCode, String posteAccountNum private static String generateQrCode(String code, String taxCode, String amount) { return String.join("|", - "PAGOPA","002", + "PAGOPA", "002", StringUtils.leftPad(code, 18, "0"), StringUtils.leftPad(taxCode, 11, "0"), amount @@ -186,16 +188,16 @@ private static Installment mapInstallment( .posteDocumentType(POSTE_DOCUMENT_TYPE_CODE) .posteAuth(posteAuth) .posteDataMatrix(posteAuth != null ? - generatePosteDataMatrix( - ciTaxCode, - debtorTaxCode, - fullname, - subject, - accountNumber, - String.valueOf(installmentData.getAmount()), - POSTE_DOCUMENT_TYPE_CODE, - installmentData.getCode() - ) : + generatePosteDataMatrix( + ciTaxCode, + debtorTaxCode, + fullname, + subject, + accountNumber, + String.valueOf(installmentData.getAmount()), + POSTE_DOCUMENT_TYPE_CODE, + installmentData.getCode() + ) : null ) .build();