The only way to fix this while preserving data integrity is to update the Invoice Status from Posted to Draft and set the Invoice Posted Date field to null with the Billing triggers off. This can be done with the package settings, but is better done through anonymous apex using the global Apex API TriggerControl to manually disable CPQ and Billing triggers.
Following is a sample code to do this. Please verify in sandbox before using in production. Replace <record id of invoice> with the record id of the invoice.
List<blng__Invoice__c> invoice2Update = new list<blng__Invoice__c>();
for(blng__Invoice__c inv : [SELECT id, blng__InvoiceStatus__c from blng__Invoice__c
WHERE id = '<record id of invoice>' and blng__InvoiceStatus__c = 'Posted' LIMIT 1 ]){
inv.blng__InvoiceStatus__c = 'Draft';
inv.blng__InvoicePostedDate__c = null;
invoice2Update.add(inv);
}
try {
SBQQ.TriggerControl.disable();
update invoice2Update;
SBQQ.TriggerControl.enable();
} catch (DmlException e) {
System.debug(e);
}
000380799

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.