def cancel(self):
        pass

# TODO an edit function has to copy the invoice, cancel it, update the related quotation
# (if any) and write a credit note - which is not supported yet
# def edit(self, instance, user):
#   """
#   calls cancel and then resets the invoice and payment transactions
#   """
#   self.cancel(instance, user)
#   instance.transaction_invoice = None
#   instance.transaction_payment = None
needs transaction_payment to be "open"
dataset/ETHPy150Open django-bmf/django-bmf/djangobmf/contrib/invoice/workflows.py/InvoiceWorkflow.cancel