![JAR search and dependency download from the Maven repository](/logo.png)
com.logicommerce.sdk.builders.order.DocumentSdkBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sdk Show documentation
Show all versions of sdk Show documentation
SDK for developing Logicommerce plugins.
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