Search in sources :

Example 1 with Type

use of alfio.model.BillingDocument.Type in project alf.io by alfio-event.

the class BillingDocumentManager method prepareModelForBillingDocument.

private Map<String, Object> prepareModelForBillingDocument(PurchaseContext purchaseContext, TicketReservation reservation, OrderSummary summary, BillingDocument.Type type) {
    Organization organization = organizationRepository.getById(purchaseContext.getOrganizationId());
    String creditNoteNumber = null;
    if (type == CREDIT_NOTE) {
        // override credit note number
        creditNoteNumber = generateCreditNoteNumber(purchaseContext, reservation);
    }
    var bankingInfo = configurationManager.getFor(Set.of(VAT_NR, INVOICE_ADDRESS, BANK_ACCOUNT_NR, BANK_ACCOUNT_OWNER), purchaseContext.getConfigurationLevel());
    Optional<String> invoiceAddress = bankingInfo.get(INVOICE_ADDRESS).getValue();
    Optional<String> bankAccountNr = bankingInfo.get(BANK_ACCOUNT_NR).getValue();
    Optional<String> bankAccountOwner = bankingInfo.get(BANK_ACCOUNT_OWNER).getValue();
    Optional<String> vat = bankingInfo.get(VAT_NR).getValue();
    Map<Integer, List<Ticket>> ticketsByCategory = ticketRepository.findTicketsInReservation(reservation.getId()).stream().collect(groupingBy(Ticket::getCategoryId));
    final List<TicketWithCategory> ticketsWithCategory;
    if (!ticketsByCategory.isEmpty()) {
        ticketsWithCategory = ticketCategoryRepository.findByIds(ticketsByCategory.keySet()).stream().flatMap(tc -> ticketsByCategory.get(tc.getId()).stream().map(t -> new TicketWithCategory(t, tc))).collect(toList());
    } else {
        ticketsWithCategory = Collections.emptyList();
    }
    var reservationShortId = configurationManager.getShortReservationID(purchaseContext, reservation);
    Map<String, Object> model = TemplateResource.prepareModelForConfirmationEmail(organization, purchaseContext, reservation, vat, ticketsWithCategory, summary, "", "", reservationShortId, invoiceAddress, bankAccountNr, bankAccountOwner, Map.of());
    boolean euBusiness = StringUtils.isNotBlank(reservation.getVatCountryCode()) && StringUtils.isNotBlank(reservation.getVatNr()) && configurationManager.getForSystem(ConfigurationKeys.EU_COUNTRIES_LIST).getRequiredValue().contains(reservation.getVatCountryCode()) && PriceContainer.VatStatus.isVatExempt(reservation.getVatStatus());
    model.put("isEvent", purchaseContext.ofType(PurchaseContextType.event));
    model.put("euBusiness", euBusiness);
    model.put("publicId", configurationManager.getPublicReservationID(purchaseContext, reservation));
    var additionalInfo = ticketReservationRepository.getAdditionalInfo(reservation.getId());
    model.put("invoicingAdditionalInfo", additionalInfo.getInvoicingAdditionalInfo());
    model.put("billingDetails", additionalInfo.getBillingDetails());
    if (type == CREDIT_NOTE) {
        model.put(CREDIT_NOTE_NUMBER, creditNoteNumber);
    }
    return model;
}
Also used : alfio.repository(alfio.repository) java.util(java.util) AffectedRowCountAndKey(ch.digitalfondue.npjt.AffectedRowCountAndKey) ZonedDateTime(java.time.ZonedDateTime) Collectors.groupingBy(java.util.stream.Collectors.groupingBy) PurchaseContextType(alfio.model.PurchaseContext.PurchaseContextType) ConfigurationManager(alfio.manager.system.ConfigurationManager) Mailer(alfio.manager.system.Mailer) StringUtils(org.apache.commons.lang3.StringUtils) Supplier(java.util.function.Supplier) Collections.singletonList(java.util.Collections.singletonList) Json(alfio.util.Json) CANCELLED(alfio.model.TicketReservation.TicketReservationStatus.CANCELLED) ObjectUtils(org.apache.commons.lang3.ObjectUtils) Collections.singletonMap(java.util.Collections.singletonMap) TemplateResource(alfio.util.TemplateResource) OrganizationRepository(alfio.repository.user.OrganizationRepository) StringUtils.trimToNull(org.apache.commons.lang3.StringUtils.trimToNull) RESERVATION(alfio.model.Audit.EntityType.RESERVATION) EXTERNAL_CREDIT_NOTE_NUMBER(alfio.model.Audit.EventType.EXTERNAL_CREDIT_NOTE_NUMBER) Organization(alfio.model.user.Organization) PENDING(alfio.model.TicketReservation.TicketReservationStatus.PENDING) Component(org.springframework.stereotype.Component) Collectors.toList(java.util.stream.Collectors.toList) EXTERNAL_INVOICE_NUMBER(alfio.model.Audit.EventType.EXTERNAL_INVOICE_NUMBER) Type(alfio.model.BillingDocument.Type) alfio.model(alfio.model) UserRepository(alfio.repository.user.UserRepository) PaymentSpecification(alfio.manager.payment.PaymentSpecification) Log4j2(lombok.extern.log4j.Log4j2) ClockProvider(alfio.util.ClockProvider) AllArgsConstructor(lombok.AllArgsConstructor) ConfigurationKeys(alfio.model.system.ConfigurationKeys) Transactional(org.springframework.transaction.annotation.Transactional) Organization(alfio.model.user.Organization) Collections.singletonList(java.util.Collections.singletonList) Collectors.toList(java.util.stream.Collectors.toList)

Aggregations

PaymentSpecification (alfio.manager.payment.PaymentSpecification)1 ConfigurationManager (alfio.manager.system.ConfigurationManager)1 Mailer (alfio.manager.system.Mailer)1 alfio.model (alfio.model)1 RESERVATION (alfio.model.Audit.EntityType.RESERVATION)1 EXTERNAL_CREDIT_NOTE_NUMBER (alfio.model.Audit.EventType.EXTERNAL_CREDIT_NOTE_NUMBER)1 EXTERNAL_INVOICE_NUMBER (alfio.model.Audit.EventType.EXTERNAL_INVOICE_NUMBER)1 Type (alfio.model.BillingDocument.Type)1 PurchaseContextType (alfio.model.PurchaseContext.PurchaseContextType)1 CANCELLED (alfio.model.TicketReservation.TicketReservationStatus.CANCELLED)1 PENDING (alfio.model.TicketReservation.TicketReservationStatus.PENDING)1 ConfigurationKeys (alfio.model.system.ConfigurationKeys)1 Organization (alfio.model.user.Organization)1 alfio.repository (alfio.repository)1 OrganizationRepository (alfio.repository.user.OrganizationRepository)1 UserRepository (alfio.repository.user.UserRepository)1 ClockProvider (alfio.util.ClockProvider)1 Json (alfio.util.Json)1 TemplateResource (alfio.util.TemplateResource)1 AffectedRowCountAndKey (ch.digitalfondue.npjt.AffectedRowCountAndKey)1