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

io.sphere.sdk.inventory.InventoryEntryDraft Maven / Gradle / Ivy

There is a newer version: 1.0.0-M26
Show newest version
package io.sphere.sdk.inventory;

import io.sphere.sdk.channels.Channel;
import io.sphere.sdk.models.Base;
import io.sphere.sdk.models.Reference;
import io.sphere.sdk.models.Referenceable;

import javax.annotation.Nullable;
import java.time.ZonedDateTime;
import java.util.Optional;

public class InventoryEntryDraft extends Base {
    private final String sku;
    private final Long quantityOnStock;
    @Nullable
    private final Integer restockableInDays;
    @Nullable
    private final ZonedDateTime expectedDelivery;
    @Nullable 
    private final Reference supplyChannel;

    private InventoryEntryDraft(final String sku, final Long quantityOnStock, final ZonedDateTime expectedDelivery, final Integer restockableInDays, final Reference supplyChannel) {
        this.expectedDelivery = expectedDelivery;
        this.sku = sku;
        this.quantityOnStock = quantityOnStock;
        this.restockableInDays = restockableInDays;
        this.supplyChannel = supplyChannel;
    }

    public InventoryEntryDraft withExpectedDelivery(@Nullable final ZonedDateTime expectedDelivery) {
        return of(sku, quantityOnStock, expectedDelivery, restockableInDays, supplyChannel);
    }

    public InventoryEntryDraft withSupplyChannel(@Nullable final Referenceable supplyChannel) {
        final Reference channelReference = Optional.ofNullable(supplyChannel).map(x -> x.toReference()).orElse(null);
        return of(sku, quantityOnStock, expectedDelivery, restockableInDays, channelReference);
    }

    public InventoryEntryDraft withRestockableInDays(@Nullable final Integer restockableInDays) {
        return of(sku, quantityOnStock, expectedDelivery, restockableInDays, supplyChannel);
    }

    public static InventoryEntryDraft of(final String sku, final long quantityOnStock) {
        return of(sku, quantityOnStock, null, null, null);
    }

    public static InventoryEntryDraft of(final String sku, final long quantityOnStock, final ZonedDateTime expectedDelivery, @Nullable final Integer restockableInDays, final Reference supplyChannel) {
        return new InventoryEntryDraft(sku, quantityOnStock, expectedDelivery, restockableInDays, supplyChannel);
    }

    @Nullable
    public ZonedDateTime getExpectedDelivery() {
        return expectedDelivery;
    }

    @Nullable
    public Long getQuantityOnStock() {
        return quantityOnStock;
    }

    @Nullable
    public Integer getRestockableInDays() {
        return restockableInDays;
    }

    public String getSku() {
        return sku;
    }

    @Nullable
    public Reference getSupplyChannel() {
        return supplyChannel;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy