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

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

The newest version!
package io.sphere.sdk.inventories;

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 java.time.Instant;
import java.util.Optional;

public class InventoryEntryDraft extends Base {
    private final String sku;
    private final long quantityOnStock;
    private final Optional restockableInDays;
    private final Optional expectedDelivery;
    private final Optional> supplyChannel;

    private InventoryEntryDraft(final String sku, final long quantityOnStock, final Optional expectedDelivery, final Optional restockableInDays, final Optional> supplyChannel) {
        this.expectedDelivery = expectedDelivery;
        this.sku = sku;
        this.quantityOnStock = quantityOnStock;
        this.restockableInDays = restockableInDays;
        this.supplyChannel = supplyChannel;
    }

    public InventoryEntryDraft withExpectedDelivery(final Instant expectedDelivery) {
        return of(sku, quantityOnStock, Optional.of(expectedDelivery), restockableInDays, supplyChannel);
    }

    public InventoryEntryDraft withSupplyChannel(final Referenceable supplyChannel) {
        return of(sku, quantityOnStock, expectedDelivery, restockableInDays, Optional.of(supplyChannel.toReference()));
    }

    public InventoryEntryDraft withRestockableInDays(final int restockableInDays) {
        return of(sku, quantityOnStock, expectedDelivery, Optional.of(restockableInDays), supplyChannel);
    }

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

    public static InventoryEntryDraft of(final String sku, final long quantityOnStock, final Optional expectedDelivery, final Optional restockableInDays, final Optional> supplyChannel) {
        return new InventoryEntryDraft(sku, quantityOnStock, expectedDelivery, restockableInDays, supplyChannel);
    }

    public Optional getExpectedDelivery() {
        return expectedDelivery;
    }

    public long getQuantityOnStock() {
        return quantityOnStock;
    }

    public Optional getRestockableInDays() {
        return restockableInDays;
    }

    public String getSku() {
        return sku;
    }

    public Optional> getSupplyChannel() {
        return supplyChannel;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy