From b9344882185fb54ada3d0c5279d4997d7f76730d Mon Sep 17 00:00:00 2001 From: Arnout Pullen Date: Wed, 9 Sep 2026 15:44:37 +0200 Subject: [PATCH 1/3] Add v3 support for order refunds --- WooCommerce/v3/OrderRefund.cs | 212 +++++++++++++++++++++++++++++++++- 1 file changed, 210 insertions(+), 2 deletions(-) diff --git a/WooCommerce/v3/OrderRefund.cs b/WooCommerce/v3/OrderRefund.cs index 94d0b6b..3006295 100644 --- a/WooCommerce/v3/OrderRefund.cs +++ b/WooCommerce/v3/OrderRefund.cs @@ -1,10 +1,218 @@ using System; using System.Collections.Generic; using System.Runtime.Serialization; +using WooCommerceNET.WooCommerce.v2; namespace WooCommerceNET.WooCommerce.v3 { [DataContract] - public class OrderRefund : v2.OrderRefund { } - + public class OrderRefund : v2.OrderRefund + { + /// + /// If the payment was refunded via the API. + /// + [DataMember(EmitDefaultValue = false)] + public bool? refunded_payment { get; set; } + + /// + /// Tax lines data. See Order refund - Tax lines properties + /// + [DataMember(EmitDefaultValue = false)] + public List tax_lines { get; set; } + + /// + /// Shipping lines data. See Order refund - Shipping lines properties + /// + [DataMember(EmitDefaultValue = false)] + public List shipping_lines { get; set; } + + /// + /// Fee lines data. See Order refund - Fee lines properties + /// + [DataMember(EmitDefaultValue = false)] + public List fee_lines { get; set; } + + /// + /// When true, the selected line items are restocked Default is true. + /// + [DataMember(EmitDefaultValue = false)] + public bool? api_restock { get; set; } + + /// + /// When true, the server computes per-line refund amounts from quantities and validates the request against the order's refund history. Available since WooCommerce 11.1. See Server-computed refunds. Default is false. + /// + [DataMember(EmitDefaultValue = false)] + public bool? compute_totals { get; set; } + + } + + [DataContract] + public class OrderRefundTaxLine + { + /// + /// Item ID. + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public string id { get; set; } + + /// + /// Tax rate code. + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public string rate_code { get; set; } + + /// + /// Tax rate ID. + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public string rate_id { get; set; } + + /// + /// Tax rate label. + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public string label { get; set; } + + /// + /// Show if is a compound tax rate. + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public bool? compound { get; set; } + + /// + /// Tax total (not including shipping taxes). + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public decimal? tax_total { get; set; } + + /// + /// Shipping tax total. + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public decimal? shipping_tax_total { get; set; } + + /// + /// Meta data. See Order - Meta data properties + /// + [DataMember(EmitDefaultValue = false)] + public List meta_data { get; set; } + + } + + [DataContract] + public class OrderRefundShippingLine + { + /// + /// Item ID. + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public ulong? id { get; set; } + + /// + /// Shipping method name. + /// + [DataMember(EmitDefaultValue = false)] + public string method_title { get; set; } + + /// + /// Shipping method ID. + /// + [DataMember(EmitDefaultValue = false)] + public string method_id { get; set; } + + [DataMember(EmitDefaultValue = false, Name = "total")] + protected object totalValue { get; set; } + /// + /// Line total (after discounts). + /// + public decimal? total { get; set; } + + [DataMember(EmitDefaultValue = false, Name = "total_tax")] + protected object total_taxValue { get; set; } + /// + /// Line total tax (after discounts). + /// read-only + /// + public decimal? total_tax { get; set; } + + /// + /// Line taxes. See Order - Taxes properties + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public List taxes { get; set; } + + /// + /// Meta data. See Order - Meta data properties + /// + [DataMember(EmitDefaultValue = false)] + public List meta_data { get; set; } + + } + + [DataContract] + public class OrderRefundFeeLine + { + /// + /// Item ID. + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public ulong? id { get; set; } + + /// + /// Fee name. + /// + [DataMember(EmitDefaultValue = false)] + public string name { get; set; } + + /// + /// Tax class of fee. + /// + [DataMember(EmitDefaultValue = false)] + public string tax_class { get; set; } + + /// + /// Tax status of fee. Options: taxable and none. + /// + [DataMember(EmitDefaultValue = false)] + public string tax_status { get; set; } + + [DataMember(EmitDefaultValue = false, Name = "total")] + protected object totalValue { get; set; } + /// + /// Line total (after discounts). + /// + public decimal? total { get; set; } + + [DataMember(EmitDefaultValue = false, Name = "total_tax")] + protected object total_taxValue { get; set; } + /// + /// Line total tax (after discounts). + /// read-only + /// + public decimal? total_tax { get; set; } + + /// + /// Line taxes. See Order - Taxes properties + /// read-only + /// + [DataMember(EmitDefaultValue = false)] + public List taxes { get; set; } + + /// + /// Meta data. See Order - Meta data properties + /// + [DataMember(EmitDefaultValue = false)] + public List meta_data { get; set; } + + } } From 4ff294647b1df3bd6b12bc7adcf5c9f039e776be Mon Sep 17 00:00:00 2001 From: Arnout Pullen Date: Wed, 9 Sep 2026 15:55:16 +0200 Subject: [PATCH 2/3] Added read/write -only comment --- WooCommerce/v3/OrderRefund.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/WooCommerce/v3/OrderRefund.cs b/WooCommerce/v3/OrderRefund.cs index 3006295..5cb662c 100644 --- a/WooCommerce/v3/OrderRefund.cs +++ b/WooCommerce/v3/OrderRefund.cs @@ -10,12 +10,14 @@ public class OrderRefund : v2.OrderRefund { /// /// If the payment was refunded via the API. + /// read-only /// [DataMember(EmitDefaultValue = false)] public bool? refunded_payment { get; set; } /// /// Tax lines data. See Order refund - Tax lines properties + /// read-only /// [DataMember(EmitDefaultValue = false)] public List tax_lines { get; set; } @@ -34,12 +36,14 @@ public class OrderRefund : v2.OrderRefund /// /// When true, the selected line items are restocked Default is true. + /// write-only /// [DataMember(EmitDefaultValue = false)] public bool? api_restock { get; set; } /// /// When true, the server computes per-line refund amounts from quantities and validates the request against the order's refund history. Available since WooCommerce 11.1. See Server-computed refunds. Default is false. + /// write-only /// [DataMember(EmitDefaultValue = false)] public bool? compute_totals { get; set; } From dd72f0a502152b2c0b24e5140ef8f02511da0af8 Mon Sep 17 00:00:00 2001 From: Arnout Pullen Date: Wed, 9 Sep 2026 16:02:20 +0200 Subject: [PATCH 3/3] Refactor refund line classes to use inheritance --- WooCommerce/v3/OrderRefund.cs | 167 +--------------------------------- 1 file changed, 3 insertions(+), 164 deletions(-) diff --git a/WooCommerce/v3/OrderRefund.cs b/WooCommerce/v3/OrderRefund.cs index 5cb662c..674db98 100644 --- a/WooCommerce/v3/OrderRefund.cs +++ b/WooCommerce/v3/OrderRefund.cs @@ -51,172 +51,11 @@ public class OrderRefund : v2.OrderRefund } [DataContract] - public class OrderRefundTaxLine - { - /// - /// Item ID. - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public string id { get; set; } - - /// - /// Tax rate code. - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public string rate_code { get; set; } - - /// - /// Tax rate ID. - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public string rate_id { get; set; } - - /// - /// Tax rate label. - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public string label { get; set; } - - /// - /// Show if is a compound tax rate. - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public bool? compound { get; set; } - - /// - /// Tax total (not including shipping taxes). - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public decimal? tax_total { get; set; } - - /// - /// Shipping tax total. - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public decimal? shipping_tax_total { get; set; } - - /// - /// Meta data. See Order - Meta data properties - /// - [DataMember(EmitDefaultValue = false)] - public List meta_data { get; set; } - - } + public class OrderRefundTaxLine : OrderTaxLine { } [DataContract] - public class OrderRefundShippingLine - { - /// - /// Item ID. - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public ulong? id { get; set; } - - /// - /// Shipping method name. - /// - [DataMember(EmitDefaultValue = false)] - public string method_title { get; set; } - - /// - /// Shipping method ID. - /// - [DataMember(EmitDefaultValue = false)] - public string method_id { get; set; } - - [DataMember(EmitDefaultValue = false, Name = "total")] - protected object totalValue { get; set; } - /// - /// Line total (after discounts). - /// - public decimal? total { get; set; } - - [DataMember(EmitDefaultValue = false, Name = "total_tax")] - protected object total_taxValue { get; set; } - /// - /// Line total tax (after discounts). - /// read-only - /// - public decimal? total_tax { get; set; } - - /// - /// Line taxes. See Order - Taxes properties - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public List taxes { get; set; } - - /// - /// Meta data. See Order - Meta data properties - /// - [DataMember(EmitDefaultValue = false)] - public List meta_data { get; set; } - - } + public class OrderRefundShippingLine : OrderShippingLine { } [DataContract] - public class OrderRefundFeeLine - { - /// - /// Item ID. - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public ulong? id { get; set; } - - /// - /// Fee name. - /// - [DataMember(EmitDefaultValue = false)] - public string name { get; set; } - - /// - /// Tax class of fee. - /// - [DataMember(EmitDefaultValue = false)] - public string tax_class { get; set; } - - /// - /// Tax status of fee. Options: taxable and none. - /// - [DataMember(EmitDefaultValue = false)] - public string tax_status { get; set; } - - [DataMember(EmitDefaultValue = false, Name = "total")] - protected object totalValue { get; set; } - /// - /// Line total (after discounts). - /// - public decimal? total { get; set; } - - [DataMember(EmitDefaultValue = false, Name = "total_tax")] - protected object total_taxValue { get; set; } - /// - /// Line total tax (after discounts). - /// read-only - /// - public decimal? total_tax { get; set; } - - /// - /// Line taxes. See Order - Taxes properties - /// read-only - /// - [DataMember(EmitDefaultValue = false)] - public List taxes { get; set; } - - /// - /// Meta data. See Order - Meta data properties - /// - [DataMember(EmitDefaultValue = false)] - public List meta_data { get; set; } - - } + public class OrderRefundFeeLine : OrderFeeLine { } }