voidInvoice method
Use this operation to void an existing invoice object; include a minimum of Invoice.Id and the current Invoice.SyncToken. The transaction remains active but all amounts and quantities are zeroed and the string, Voided, is injected into Invoice.PrivateNote, prepended to existing text if present.
Implementation
Future<Invoice> voidInvoice({
required Invoice invoice,
String? realmId,
String? authToken,
}) async {
authToken ??= authenticationService.getCachedToken()?.access_token;
realmId ??= authenticationService.getCachedRealmId();
Map<String, String> headers = {
"Authorization": "Bearer ${authToken ?? ""}",
'Content-Type': 'application/json; charset=UTF-8',
'Accept': 'application/json',
};
Map<String, String> params = {
"minorversion": minorVersion.toString(),
"operation": "void"
};
Uri endpoint = Uri.https(
baseUrl, "/v3/company/$realmId/invoice", params);
//print (endpoint.toString());
var response = await
http.post(endpoint, body: jsonEncode(invoice.toJson()), headers: headers);
if (response.statusCode == 200) {
//print (jsonDecode(response.body));
return Invoice.fromJson(jsonDecode(response.body)["Invoice"]);
}
else {
throw InvoiceException(statusCode: response.statusCode, message: response.body);
}
}