diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/InvoicePatchDTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/InvoicePatchDTO.java new file mode 100644 index 000000000..b20b1209a --- /dev/null +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/InvoicePatchDTO.java @@ -0,0 +1,31 @@ +package com.cloudesire.platform.apiclient.dto.model.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +@ApiModel( description = "Perform an operation on an invoice" ) +public class InvoicePatchDTO extends DTO +{ + @ApiModelProperty( "Update operation" ) + private InvoicePatchAction action; + + public InvoicePatchDTO( InvoicePatchAction action ) + { + this.action = action; + } + + public InvoicePatchDTO() + { + } + + public InvoicePatchAction getAction() + { + return action; + } + + public enum InvoicePatchAction + { + @ApiModelProperty( "Reissue the first invoice of a subscription" ) + REISSUE + } +} diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/InvoiceOperationType.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/InvoiceOperationType.java index bc38b5380..936a99ca2 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/InvoiceOperationType.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/InvoiceOperationType.java @@ -1,17 +1,21 @@ package com.cloudesire.platform.apiclient.dto.model.enums; +import io.swagger.annotations.ApiModelProperty; + public enum InvoiceOperationType { - PAID, // Set the Invoice paid - PAY, // Customer can then pay the invoice! + @ApiModelProperty( "Set the invoice to paid" ) + PAID, + + @ApiModelProperty( "Pay the invoice" ) + PAY, - /** - * Download invoice PDF - */ + @ApiModelProperty( "Download invoice PDF" ) PDF, - /** - * (re)generate invoice PDF - */ - MAKE_PDF + @ApiModelProperty( "(re)generate invoice PDF" ) + MAKE_PDF, + + @ApiModelProperty( "Reissue the invoice" ) + REISSUE } diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/InvoiceStatus.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/InvoiceStatus.java index f00faca37..3b81bbe49 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/InvoiceStatus.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/enums/InvoiceStatus.java @@ -14,6 +14,11 @@ public enum InvoiceStatus @ApiModelProperty( "Payment expired" ) EXPIRED, @ApiModelProperty( "Payment received" ) PAID; + public static InvoiceStatus[] paid() + { + return new InvoiceStatus[] { DELAYED, PAID }; + } + public static InvoiceStatus[] unpaid() { return new InvoiceStatus[] { PENDING, REQUIRES_ACTION, REQUIRES_CAPTURE, UNPAID, EXPIRED }; diff --git a/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/api/InvoiceApi.java b/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/api/InvoiceApi.java index ce9ab17b0..b61914a43 100644 --- a/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/api/InvoiceApi.java +++ b/cloudesire-api-client/src/main/java/com/cloudesire/platform/apiclient/api/InvoiceApi.java @@ -2,6 +2,7 @@ import com.cloudesire.platform.apiclient.dto.model.dto.CardDataDTO; import com.cloudesire.platform.apiclient.dto.model.dto.InvoiceDTO; +import com.cloudesire.platform.apiclient.dto.model.dto.InvoicePatchDTO; import com.cloudesire.platform.apiclient.dto.model.patch.InvoicePaymentReferenceDTO; import com.cloudesire.platform.apiclient.query.InvoiceQuery; import okhttp3.ResponseBody; @@ -51,6 +52,9 @@ public interface InvoiceApi @GET( "invoice/{id}/refresh" ) Call refreshPayment( @Path( "id" ) int id ); + @PATCH( "invoice/{id}" ) + Call patch( @Path( "id" ) int id, @Body InvoicePatchDTO patch ); + @PATCH( "invoice/{id}/pay" ) Call setPaid( @Path( "id" ) int id, @Body InvoicePaymentReferenceDTO input );