All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.logicommerce.sdk.builders.order.DocumentSdkBuilder Maven / Gradle / Ivy

There is a newer version: 2.3.0
Show newest version
package com.logicommerce.sdk.builders.order;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.logicommerce.sdk.builders.CustomTagBuilder;
import com.logicommerce.sdk.enums.ExportStatusType;
import com.logicommerce.sdk.models.order.implementations.DocumentImpl;

/**
 * Document Sdk Builder.
 * 
 * @author LogiCommerce
 * @since 1.3.0
 */
public abstract class DocumentSdkBuilder> {
	
	protected String comment;

	protected List> customTags;

	protected Integer languageId;

	protected OrderUserBuilder user;

	protected OrderTotalBuilder totals;

	protected List> vouchers;

	protected List> items;

	protected OrderDeliveryBuilder delivery;

	protected OrderInformationBuilder information;

	protected OrderPaymentSystemBuilder paymentSystem;

	protected List> additionalInformation;

	protected List> currencies;

	protected LocalDateTime date;

	protected LocalDateTime deliveryDate;

	protected List> discounts;

	protected String documentNumber;

	protected ExportStatusType exportStatus;

	protected Integer id;

	protected String pId;

	protected LocalDateTime paymentDate;

	protected List> statuses;

	protected boolean paid;

	protected boolean reverseChargeVat;

	protected List> taxes;

	/**
	 * 

Constructor for DocumentSdkBuilder.

*/ public DocumentSdkBuilder() { customTags = new ArrayList<>(); user = new OrderUserBuilder<>(returnThis()); totals = new OrderTotalBuilder<>(returnThis()); vouchers = new ArrayList<>(); items = new ArrayList<>(); delivery = new OrderDeliveryBuilder<>(returnThis()); information = new OrderInformationBuilder<>(returnThis()); paymentSystem = new OrderPaymentSystemBuilder<>(returnThis()); additionalInformation = new ArrayList<>(); currencies = new ArrayList<>(); discounts = new ArrayList<>(); statuses = new ArrayList<>(); taxes = new ArrayList<>(); exportStatus = ExportStatusType.PENDING_TO_SEND; } /** *

comment.

* * @param comment a {@link java.lang.String} object * @return a T object */ public T comment(String comment) { this.comment = comment; return returnThis(); } /** *

customTag.

* * @return a {@link com.logicommerce.sdk.builders.CustomTagBuilder} object */ public CustomTagBuilder customTag() { CustomTagBuilder customTag = new CustomTagBuilder<>(returnThis()); customTags.add(customTag); return customTag; } /** *

language.

* * @param languageId a {@link java.lang.Integer} object * @return a T object */ public T language(Integer languageId) { this.languageId = languageId; return returnThis(); } /** *

user.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderUserBuilder} object */ public OrderUserBuilder user() { return user; } /** *

totals.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderTotalBuilder} object */ public OrderTotalBuilder totals() { return totals; } /** *

voucher.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderVoucherBuilder} object */ public OrderVoucherBuilder voucher() { OrderVoucherBuilder voucher = new OrderVoucherBuilder<>(returnThis()); vouchers.add(voucher); return voucher; } /** *

item.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderItemBuilder} object */ public OrderItemBuilder item() { OrderItemBuilder item = new OrderItemBuilder<>(returnThis()); items.add(item); return item; } /** *

delivery.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderDeliveryBuilder} object */ public OrderDeliveryBuilder delivery() { return delivery; } /** *

information.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderInformationBuilder} object */ public OrderInformationBuilder information() { return information; } /** *

paymentSystem.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderPaymentSystemBuilder} object */ public OrderPaymentSystemBuilder paymentSystem() { return paymentSystem; } /** *

additionalInformation.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderAdditionalInformationBuilder} object */ public OrderAdditionalInformationBuilder additionalInformation() { OrderAdditionalInformationBuilder additionalInfo = new OrderAdditionalInformationBuilder<>(returnThis()); additionalInformation.add(additionalInfo); return additionalInfo; } /** *

currencies.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderCurrencyBuilder} object */ public OrderCurrencyBuilder currencies() { OrderCurrencyBuilder currency = new OrderCurrencyBuilder<>(returnThis()); currencies.add(currency); return currency; } /** *

date.

* * @param date a {@link java.time.LocalDateTime} object * @return a T object */ public T date(LocalDateTime date) { this.date = date; return returnThis(); } /** *

deliveryDate.

* * @param deliveryDate a {@link java.time.LocalDateTime} object * @return a T object */ public T deliveryDate(LocalDateTime deliveryDate) { this.deliveryDate = deliveryDate; return returnThis(); } /** *

discounts.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderDiscountBuilder} object */ public OrderDiscountBuilder discounts() { OrderDiscountBuilder discount = new OrderDiscountBuilder<>(returnThis()); discounts.add(discount); return discount; } /** *

documentNumber.

* * @param documentNumber a {@link java.lang.String} object * @return a T object */ public T documentNumber(String documentNumber) { this.documentNumber = documentNumber; return returnThis(); } /** *

exportStatus.

* * @param exportStatus a {@link com.logicommerce.sdk.enums.ExportStatusType} object * @return a T object */ public T exportStatus(ExportStatusType exportStatus) { this.exportStatus = exportStatus; return returnThis(); } /** *

id.

* * @param id a {@link java.lang.Integer} object * @return a T object */ public T id(Integer id) { this.id = id; return returnThis(); } /** *

pId.

* * @param pId a {@link java.lang.String} object * @return a T object */ public T pId(String pId) { this.pId = pId; return returnThis(); } /** *

paymentDate.

* * @param paymentDate a {@link java.time.LocalDateTime} object * @return a T object */ public T paymentDate(LocalDateTime paymentDate) { this.paymentDate = paymentDate; return returnThis(); } /** *

statuses.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderStatusBuilder} object */ public OrderStatusBuilder statuses() { OrderStatusBuilder statusItem = new OrderStatusBuilder<>(returnThis()); statuses.add(statusItem); return statusItem; } /** *

paid.

* * @param paid a boolean * @return a T object */ public T paid(boolean paid) { this.paid = paid; return returnThis(); } /** *

reverseChargeVat.

* * @param reverseChargeVat a boolean * @return a T object */ public T reverseChargeVat(boolean reverseChargeVat) { this.reverseChargeVat = reverseChargeVat; return returnThis(); } /** *

tax.

* * @return a {@link com.logicommerce.sdk.builders.order.OrderTaxBuilder} object */ public OrderTaxBuilder tax() { OrderTaxBuilder tax = new OrderTaxBuilder<>(returnThis()); taxes.add(tax); return tax; } /** * Set the fields of the document. * * @param document a {@link com.logicommerce.sdk.models.order.implementations.DocumentImpl} */ public void setFields(DocumentImpl document) { document.setComment(comment); document.setCustomTags(customTags.stream().map(CustomTagBuilder::build).collect(Collectors.toList())); document.setLanguageId(languageId); document.setUser(user.build()); document.setTotals(totals.build()); document.setVouchers(vouchers.stream().map(OrderVoucherBuilder::build).collect(Collectors.toList())); document.setItems(items.stream().map(OrderItemBuilder::build).collect(Collectors.toList())); document.setInformation(information.build()); document.setPaymentSystem(paymentSystem.build()); document.setAdditionalInformation(additionalInformation.stream() .map(OrderAdditionalInformationBuilder::build) .collect(Collectors.toList())); document.setCurrencies(currencies.stream().map(OrderCurrencyBuilder::build).collect(Collectors.toList())); document.setDate((date == null) ? LocalDateTime.now() : date); document.setDeliveryDate(deliveryDate); document.setDiscounts(discounts.stream().map(OrderDiscountBuilder::build).collect(Collectors.toList())); document.setDocumentNumber(documentNumber); document.setExportStatus(exportStatus); document.setId(id); document.setPId(pId); document.setPaymentDate(paymentDate); document.setDelivery(delivery.build()); document.setStatuses(statuses.stream().map(OrderStatusBuilder::build).collect(Collectors.toList())); document.setPaid(paid); document.setReverseChargeVat(reverseChargeVat); document.setTaxes(taxes.stream().map(OrderTaxBuilder::build).collect(Collectors.toList())); } /** *

returnThis.

* * @return a T object */ public abstract T returnThis(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy