diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/OrderLineDTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/OrderLineDTO.java index 65a64bf2a..4e0994b6c 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/OrderLineDTO.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/OrderLineDTO.java @@ -15,6 +15,8 @@ import java.math.BigDecimal; import java.util.Objects; +import static io.swagger.annotations.ApiModelProperty.AccessMode.READ_ONLY; + @ApiModel( description = "A billed unit" ) public class OrderLineDTO implements Line { @@ -45,11 +47,11 @@ public class OrderLineDTO implements Line @ApiModelProperty( "If this is a one-off cost" ) private boolean setup; - @ApiModelProperty( value = "Discount percentage if this line is relative to a coupon", example = "20", readOnly = true ) + @ApiModelProperty( value = "Discount percentage if this line is relative to a coupon", example = "20", accessMode = READ_ONLY ) private BigDecimal discount; - @ApiModelProperty( value = "Requested billing item maximum quantity", example = "15", readOnly = true ) - private Integer maximum; + @ApiModelProperty( value = "Requested billing item maximum quantity", example = "15.00", accessMode = READ_ONLY ) + private BigDecimal maximum; @ApiModelProperty( "Custom billing identifier" ) private String identifier; @@ -79,7 +81,7 @@ public BigDecimal getPriceExcludingVAT() return getSubtotal(); } - @ApiModelProperty( readOnly = true ) + @ApiModelProperty( accessMode = READ_ONLY ) public BigDecimal getSubtotal() { if ( price == null || price.getPrice() == null ) return BigDecimal.ZERO; @@ -89,7 +91,7 @@ public BigDecimal getSubtotal() .setScale( MathConfiguration.DEFAULT_PRECISION, MathConfiguration.ROUNDING_MODE ); } - @ApiModelProperty( value = "VAT total amount", readOnly = true ) + @ApiModelProperty( value = "VAT total amount", accessMode = READ_ONLY ) @JsonProperty( value = "vatSpunOff" ) public BigDecimal getVATSpunOff() { @@ -197,12 +199,12 @@ public void setDiscount( BigDecimal discount ) this.discount = discount; } - public Integer getMaximum() + public BigDecimal getMaximum() { return maximum; } - public void setMaximum( Integer maximum ) + public void setMaximum( BigDecimal maximum ) { this.maximum = maximum; } diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionBillingItemDTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionBillingItemDTO.java index 0f74cf56d..cb9faf1f8 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionBillingItemDTO.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionBillingItemDTO.java @@ -2,14 +2,18 @@ import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; import java.util.Objects; +import static com.liberologico.cloudesire.common.MathConfiguration.DAY_SCALE_PRECISION; +import static com.liberologico.cloudesire.common.MathConfiguration.ROUNDING_MODE; + public class SubscriptionBillingItemDTO extends DTO { private UrlEntityDTO billingItem; - @ApiModelProperty( "The chosen value for this billing item" ) - private Integer value; + @ApiModelProperty( "The current value for this billing item" ) + private BigDecimal value; @ApiModelProperty( "Whether the billing item has been already bought for the Subscription" ) private Boolean bought; @@ -25,7 +29,7 @@ public class SubscriptionBillingItemDTO extends DTO public SubscriptionBillingItemDTO( UrlEntityDTO billingItem, Integer value, boolean bought ) { this.billingItem = billingItem; - this.value = value; + this.value = new BigDecimal( value ).setScale( DAY_SCALE_PRECISION, ROUNDING_MODE ); this.bought = bought; } @@ -48,12 +52,12 @@ public void setBillingItem( UrlEntityDTO billingItem ) this.billingItem = billingItem; } - public Integer getValue() + public BigDecimal getValue() { return value; } - public void setValue( Integer value ) + public void setValue( BigDecimal value ) { this.value = value; } diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionV1DTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionV1DTO.java index 1734ef1ac..0ea03b016 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionV1DTO.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/SubscriptionV1DTO.java @@ -1,25 +1,26 @@ package com.cloudesire.platform.apiclient.dto.model.dto; +import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import java.util.Objects; public class SubscriptionV1DTO extends BaseSubscriptionDTO { - private Map billingItems = new HashMap<>(); + private Map billingItems = new HashMap<>(); - public Map getBillingItems() + public Map getBillingItems() { return billingItems; } - public SubscriptionV1DTO setBillingItems( Map billingItems ) + public SubscriptionV1DTO setBillingItems( Map billingItems ) { if ( billingItems == null ) return this; this.billingItems = new HashMap<>(); - for ( Map.Entry entry : billingItems.entrySet() ) + for ( Map.Entry entry : billingItems.entrySet() ) { this.billingItems.put( new UrlEntityDTO( entry.getKey() ), entry.getValue() ); } diff --git a/common-dto/src/main/java/com/liberologico/cloudesire/common/MathUtils.java b/common-dto/src/main/java/com/liberologico/cloudesire/common/MathUtils.java index e80ff9e38..3446c314a 100644 --- a/common-dto/src/main/java/com/liberologico/cloudesire/common/MathUtils.java +++ b/common-dto/src/main/java/com/liberologico/cloudesire/common/MathUtils.java @@ -15,6 +15,16 @@ public static BigDecimal addPercentage( BigDecimal base, BigDecimal pct ) return base.add( percentage( base, pct, MathConfiguration.COMPUTATION_PRECISION ) ); } + public static boolean isBetween( BigDecimal number, int min, int max ) + { + return isBetween( number, new BigDecimal( min ), new BigDecimal( max ) ); + } + + public static boolean isBetween( BigDecimal number, BigDecimal min, BigDecimal max ) + { + return min.compareTo( number ) <= 0 && number.compareTo( max ) <= 0; + } + public static BigDecimal subtractPercentage( BigDecimal base, BigDecimal pct ) { if ( base == null ) return BigDecimal.ZERO; @@ -114,6 +124,11 @@ public static BigDecimal bytesToGigabytes( BigDecimal bytes ) return bytes.divide( rescale, computationMathContext() ); } + public static boolean equalsByComparing( BigDecimal a, long b ) + { + return equalsByComparing( a, new BigDecimal( b ) ); + } + public static boolean equalsByComparing( BigDecimal a, BigDecimal b ) { if ( a == null ) return b == null;