diff --git a/de.metas.business.rest-api-impl/src/main/java/de/metas/rest_api/invoicecandidates/impl/CloseInvoiceCandidatesService.java b/de.metas.business.rest-api-impl/src/main/java/de/metas/rest_api/invoicecandidates/impl/CloseInvoiceCandidatesService.java index feff7c12ff4..f321563f67d 100644 --- a/de.metas.business.rest-api-impl/src/main/java/de/metas/rest_api/invoicecandidates/impl/CloseInvoiceCandidatesService.java +++ b/de.metas.business.rest-api-impl/src/main/java/de/metas/rest_api/invoicecandidates/impl/CloseInvoiceCandidatesService.java @@ -17,7 +17,6 @@ import de.metas.rest_api.invoicecandidates.response.JsonCloseInvoiceCandidatesResponse; import de.metas.rest_api.invoicecandidates.response.JsonCloseInvoiceCandidatesResponseItem; import de.metas.rest_api.utils.InvalidEntityException; -import de.metas.security.permissions.Access; import de.metas.util.Services; import de.metas.util.lang.ExternalHeaderIdWithExternalLineIds; import de.metas.util.lang.ExternalId; @@ -51,58 +50,56 @@ public class CloseInvoiceCandidatesService public JsonCloseInvoiceCandidatesResponse closeInvoiceCandidates(final JsonCloseInvoiceCandidatesRequest request) { - { - if (request.getInvoiceCandidates().isEmpty()) - { - throw new InvalidEntityException(TranslatableStrings.constant("The request's invoiceCandidates array may not be empty")); - } - final List headerAndLineIds = InvoiceJsonConverters.fromJson(request.getInvoiceCandidates()); + final InvoiceCandidateMultiQuery multiQuery = toInvoiceCandidateMultiQuery(request); + final List invoiceCandidateRecords = invoiceCandDAO.getByQuery(multiQuery); - final InvoiceCandidateMultiQueryBuilder multiQuery = InvoiceCandidateMultiQuery.builder(); - for (final ExternalHeaderIdWithExternalLineIds externalId : headerAndLineIds) - { - final InvoiceCandidateQuery query = InvoiceCandidateQuery.builder() - .externalIds(externalId) - .build(); - multiQuery.query(query); - } - final List invoiceCandidateRecords = invoiceCandDAO - .convertToIQuery(multiQuery.build()) - .setRequiredAccess(Access.READ) - .list(); + return closeInvoiceCandidateRecords(invoiceCandidateRecords); + } - final List invoiceCandidates = closeInvoiceCandidateRecords(invoiceCandidateRecords); + private static InvoiceCandidateMultiQuery toInvoiceCandidateMultiQuery(final JsonCloseInvoiceCandidatesRequest request) + { + if (request.getInvoiceCandidates().isEmpty()) + { + throw new InvalidEntityException(TranslatableStrings.constant("The request's invoiceCandidates array may not be empty")); + } - final JsonCloseInvoiceCandidatesResponse result = JsonCloseInvoiceCandidatesResponse.builder() - .invoiceCandidates(invoiceCandidates) - .build(); + final InvoiceCandidateMultiQueryBuilder multiQuery = InvoiceCandidateMultiQuery.builder(); - return result; + final List headerAndLineIds = InvoiceJsonConverters.fromJson(request.getInvoiceCandidates()); + for (final ExternalHeaderIdWithExternalLineIds externalId : headerAndLineIds) + { + final InvoiceCandidateQuery query = InvoiceCandidateQuery.builder() + .externalIds(externalId) + .build(); + multiQuery.query(query); } + + return multiQuery.build(); } - private List closeInvoiceCandidateRecords(final List invoiceCandidateRecords) + private JsonCloseInvoiceCandidatesResponse closeInvoiceCandidateRecords(final List invoiceCandidateRecords) { - List responseItems = new ArrayList<>(); + final List responseItems = new ArrayList<>(); for (final I_C_Invoice_Candidate invoiceCandidateRecord : invoiceCandidateRecords) { invoiceCandBL.closeInvoiceCandidate(invoiceCandidateRecord); - final JsonCloseInvoiceCandidatesResponseItem responseItem = createCloseInvoiceCandidateResponseItem(invoiceCandidateRecord); + final JsonCloseInvoiceCandidatesResponseItem responseItem = toResponseItem(invoiceCandidateRecord); responseItems.add(responseItem); } - return responseItems; + return JsonCloseInvoiceCandidatesResponse.builder() + .invoiceCandidates(responseItems) + .build(); } - private JsonCloseInvoiceCandidatesResponseItem createCloseInvoiceCandidateResponseItem(final I_C_Invoice_Candidate invoiceCandidateRecord) + private static JsonCloseInvoiceCandidatesResponseItem toResponseItem(final I_C_Invoice_Candidate record) { return JsonCloseInvoiceCandidatesResponseItem.builder() - .externalHeaderId(ExternalId.of(invoiceCandidateRecord.getExternalHeaderId())) - .externalLineId(ExternalId.of(invoiceCandidateRecord.getExternalLineId())) - .metasfreshId(MetasfreshId.of(invoiceCandidateRecord.getC_Invoice_Candidate_ID())) + .externalHeaderId(ExternalId.of(record.getExternalHeaderId())) + .externalLineId(ExternalId.of(record.getExternalLineId())) + .metasfreshId(MetasfreshId.of(record.getC_Invoice_Candidate_ID())) .build(); - } }