Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions changes.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
**Api changes**

<details>
<summary>Added Type(s)</summary>

- added type `DiscountCombinationMode`
- added type `DiscountsConfiguration`
- added type `ProjectSetDiscountsConfigurationAction`
</details>


<details>
<summary>Removed Property(s)</summary>

Expand All @@ -10,6 +19,7 @@
<details>
<summary>Added Property(s)</summary>

- added property `discounts` to type `Project`
- added property `skipConfigurationInputDraft` to type `RecurringOrderSetOrderSkipConfigurationAction`
</details>

Original file line number Diff line number Diff line change
Expand Up @@ -4563,6 +4563,14 @@ type DiscountedTotalPricePortion {
discountedAmount: BaseMoney!
}

type DiscountsConfiguration {
discountCombinationMode: DiscountCombinationMode!
}

input DiscountsConfigurationInput {
discountCombinationMode: DiscountCombinationMode
}

type EnumAttribute implements Attribute {
key: String!
label: String!
Expand Down Expand Up @@ -9965,6 +9973,11 @@ type ProductVariantTailoringRemoved implements MessagePayload {
type: String!
}

enum DiscountCombinationMode {
Stacking
BestDeal
}

"Contains information about the limits of your project."
type ProjectCustomLimitsProjection {
query: QueryLimitsProjection!
Expand Down Expand Up @@ -10006,6 +10019,7 @@ type ProjectProjection {
currencies: [Currency!]!
shippingRateInputType: ShippingRateInputType
createdAt: DateTime!
discounts: DiscountsConfiguration
}

input ProjectSettingsUpdateAction {
Expand All @@ -10032,6 +10046,7 @@ input ProjectSettingsUpdateAction {

"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
changeProductSearchIndexingEnabled: ChangeProjectSettingsProductSearchIndexingEnabled
setDiscountsConfiguration: SetProjectSettingsDiscountsConfiguration
}

input PublishProduct {
Expand Down Expand Up @@ -13440,6 +13455,10 @@ input SetProjectSettingsMyBusinessUnitAssociateRoleOnCreation {
associateRole: ResourceIdentifierInput
}

input SetProjectSettingsDiscountsConfiguration {
discountsConfiguration: DiscountsConfigurationInput!
}

input SetProjectSettingsShippingRateInputType {
shippingRateInputType: ShippingRateInputTypeInput
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@

package com.commercetools.api.models.project;

import java.util.Arrays;
import java.util.Optional;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

import io.vrap.rmf.base.client.JsonEnum;
import io.vrap.rmf.base.client.utils.Generated;

/**
* <p>Defines how Product Discounts and Cart Discounts are combined for every Cart in a Project.</p>
*/
@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
public interface DiscountCombinationMode extends JsonEnum {

/**
<p>Either Product Discounts or Cart Discounts are chosen based on best deal for the customer. Only one type applies per Cart.</p> */
DiscountCombinationMode BEST_DEAL = DiscountCombinationModeEnum.BEST_DEAL;
/**
<p>Product Discounts and Cart Discounts are both applied to the Cart, potentially increasing the total discount.</p> */
DiscountCombinationMode STACKING = DiscountCombinationModeEnum.STACKING;

/**
* possible values of DiscountCombinationMode
*/
enum DiscountCombinationModeEnum implements DiscountCombinationMode {
/**
* BestDeal
*/
BEST_DEAL("BestDeal"),

/**
* Stacking
*/
STACKING("Stacking");
private final String jsonName;

private DiscountCombinationModeEnum(final String jsonName) {
this.jsonName = jsonName;
}

public String getJsonName() {
return jsonName;
}

public String toString() {
return jsonName;
}
}

/**
* the JSON value
* @return json value
*/
@JsonValue
String getJsonName();

/**
* the enum value
* @return name
*/
String name();

/**
* convert value to string
* @return string representation
*/
String toString();

/**
* factory method for a enum value of DiscountCombinationMode
* if no enum has been found an anonymous instance will be created
* @param value the enum value to be wrapped
* @return enum instance
*/
@JsonCreator
public static DiscountCombinationMode findEnum(String value) {
return findEnumViaJsonName(value).orElse(new DiscountCombinationMode() {
@Override
public String getJsonName() {
return value;
}

@Override
public String name() {
return value.toUpperCase();
}

public String toString() {
return value;
}
});
}

/**
* method to find enum using the JSON value
* @param jsonName the json value to be wrapped
* @return optional of enum instance
*/
public static Optional<DiscountCombinationMode> findEnumViaJsonName(String jsonName) {
return Arrays.stream(values()).filter(t -> t.getJsonName().equals(jsonName)).findFirst();
}

/**
* possible enum values
* @return array of possible enum values
*/
public static DiscountCombinationMode[] values() {
return DiscountCombinationModeEnum.values();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@

package com.commercetools.api.models.project;

import java.time.*;
import java.util.*;
import java.util.function.Function;

import javax.annotation.Nullable;

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.annotation.*;

import io.vrap.rmf.base.client.utils.Generated;

import jakarta.validation.constraints.NotNull;

/**
* <p>Holds the configuration for behavior of Product and Cart Discounts.</p>
*
* <hr>
* Example to create an instance using the builder pattern
* <div class=code-example>
* <pre><code class='java'>
* DiscountsConfiguration discountsConfiguration = DiscountsConfiguration.builder()
* .discountCombinationMode(DiscountCombinationMode.BEST_DEAL)
* .build()
* </code></pre>
* </div>
*/
@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
@JsonDeserialize(as = DiscountsConfigurationImpl.class)
public interface DiscountsConfiguration {

/**
* <p>Indicates how Product Discounts and Cart Discounts should be combined. Default value is <code>Stacking</code>.</p>
* @return discountCombinationMode
*/
@NotNull
@JsonProperty("discountCombinationMode")
public DiscountCombinationMode getDiscountCombinationMode();

/**
* <p>Indicates how Product Discounts and Cart Discounts should be combined. Default value is <code>Stacking</code>.</p>
* @param discountCombinationMode value to be set
*/

public void setDiscountCombinationMode(final DiscountCombinationMode discountCombinationMode);

/**
* factory method
* @return instance of DiscountsConfiguration
*/
public static DiscountsConfiguration of() {
return new DiscountsConfigurationImpl();
}

/**
* factory method to create a shallow copy DiscountsConfiguration
* @param template instance to be copied
* @return copy instance
*/
public static DiscountsConfiguration of(final DiscountsConfiguration template) {
DiscountsConfigurationImpl instance = new DiscountsConfigurationImpl();
instance.setDiscountCombinationMode(template.getDiscountCombinationMode());
return instance;
}

public DiscountsConfiguration copyDeep();

/**
* factory method to create a deep copy of DiscountsConfiguration
* @param template instance to be copied
* @return copy instance
*/
@Nullable
public static DiscountsConfiguration deepCopy(@Nullable final DiscountsConfiguration template) {
if (template == null) {
return null;
}
DiscountsConfigurationImpl instance = new DiscountsConfigurationImpl();
instance.setDiscountCombinationMode(template.getDiscountCombinationMode());
return instance;
}

/**
* builder factory method for DiscountsConfiguration
* @return builder
*/
public static DiscountsConfigurationBuilder builder() {
return DiscountsConfigurationBuilder.of();
}

/**
* create builder for DiscountsConfiguration instance
* @param template instance with prefilled values for the builder
* @return builder
*/
public static DiscountsConfigurationBuilder builder(final DiscountsConfiguration template) {
return DiscountsConfigurationBuilder.of(template);
}

/**
* accessor map function
* @param <T> mapped type
* @param helper function to map the object
* @return mapped value
*/
default <T> T withDiscountsConfiguration(Function<DiscountsConfiguration, T> helper) {
return helper.apply(this);
}

/**
* gives a TypeReference for usage with Jackson DataBind
* @return TypeReference
*/
public static com.fasterxml.jackson.core.type.TypeReference<DiscountsConfiguration> typeReference() {
return new com.fasterxml.jackson.core.type.TypeReference<DiscountsConfiguration>() {
@Override
public String toString() {
return "TypeReference<DiscountsConfiguration>";
}
};
}
}
Loading