Fix LWC async bug, null guard, stale sample script; update manifest

LWC fixes:
- clmDocGenWorkbench: resetSelectionsToDefaults was a sync onclick handler
  calling async initializeDefaults without await — isBusy not set and errors
  silently dropped; made the method async and added await
- clmRequestPreview: loadPreview called from refreshAll (account/letter change
  handlers) without a recordId guard; a null appraiserCaseId would propagate
  to the Apex AuraHandledException; added early return with a user-facing message

manifest/package.xml:
- Was missing CLM_Account_Setting__mdt and CLM_Letter_Definition__mdt objects
  and all 17 custom metadata records
- Missing DocusignESignatureService and its test class
- Missing docusignEsignWorkbench and clmRequestPreview LWC components
- Missing NamedCredential section entirely (CLMs1*, CLMuat*, Esignature_Demo)
- Missing CLM Account Setting and Letter Definition layouts

scripts/apex/createSampleAppraiserCase.apex:
- Rewrote entirely; old version referenced the deleted Appraiser_Deficiency__c
  object, Sort_Order__c, Deficiency_Number__c as a string, and the deleted
  AppraiserCaseDocGenService class
- Now uses Appraiser_Case_Deficiency__c with correct field types
- Populates all appraiser identity/address fields added since original version
- Debug output uses AppraiserCasePayloadBuilder and CLMDocGenCallout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
paulh 2026-04-09 20:50:57 -04:00
parent fe337efe63
commit 0ce516bbfc
4 changed files with 71 additions and 27 deletions

View File

@ -317,7 +317,7 @@ export default class ClmDocGenWorkbench extends LightningElement {
return `${normalizedPrefix}.docx`; return `${normalizedPrefix}.docx`;
} }
resetSelectionsToDefaults() { async resetSelectionsToDefaults() {
this.hasLoadedDefaults = false; this.hasLoadedDefaults = false;
this.templateFolderName = ''; this.templateFolderName = '';
this.destinationFolderName = ''; this.destinationFolderName = '';
@ -329,7 +329,7 @@ export default class ClmDocGenWorkbench extends LightningElement {
this.destinationDocumentOptions = []; this.destinationDocumentOptions = [];
this.selectedTemplateSubfolderHref = ''; this.selectedTemplateSubfolderHref = '';
this.selectedDestinationSubfolderHref = ''; this.selectedDestinationSubfolderHref = '';
this.initializeDefaults(true); await this.initializeDefaults(true);
} }
async loadCaseContext() { async loadCaseContext() {

View File

@ -76,6 +76,10 @@ export default class ClmRequestPreview extends LightningElement {
} }
async loadPreview() { async loadPreview() {
if (!this.recordId) {
this.showMessage('No record context — place this component on a record page.', 'warning');
return;
}
this.preview = await getDocGenPreview({ this.preview = await getDocGenPreview({
appraiserCaseId: this.recordId, appraiserCaseId: this.recordId,
accountCode: this.accountCode, accountCode: this.accountCode,

View File

@ -5,14 +5,31 @@
<name>CustomApplication</name> <name>CustomApplication</name>
</types> </types>
<types> <types>
<members>CLM_Account_Setting.DTC_CLM_Demo</members>
<members>CLM_Account_Setting.DTC_HUD_Demo</members>
<members>CLM_Account_Setting.DTC_IAM_Enterprise</members>
<members>CLM_Environment_Setting.S1</members> <members>CLM_Environment_Setting.S1</members>
<members>CLM_Environment_Setting.UAT</members> <members>CLM_Environment_Setting.UAT</members>
<members>CLM_Letter_Definition.DTC_CLM_Demo_Appraiser_Review</members>
<members>CLM_Letter_Definition.DTC_CLM_Demo_Education_Letter</members>
<members>CLM_Letter_Definition.DTC_CLM_Demo_Intent_to_Remove_Letter</members>
<members>CLM_Letter_Definition.DTC_CLM_Demo_NOD_Letter</members>
<members>CLM_Letter_Definition.DTC_HUD_Demo_Appraiser_Review</members>
<members>CLM_Letter_Definition.DTC_HUD_Demo_Education_Letter</members>
<members>CLM_Letter_Definition.DTC_HUD_Demo_Intent_to_Remove_Letter</members>
<members>CLM_Letter_Definition.DTC_HUD_Demo_NOD_Letter</members>
<members>CLM_Letter_Definition.DTC_IAM_Ent_Intent_Remove</members>
<members>CLM_Letter_Definition.DTC_IAM_Enterprise_Appraiser_Review</members>
<members>CLM_Letter_Definition.DTC_IAM_Enterprise_Education_Letter</members>
<members>CLM_Letter_Definition.DTC_IAM_Enterprise_NOD_Letter</members>
<name>CustomMetadata</name> <name>CustomMetadata</name>
</types> </types>
<types> <types>
<members>Appraiser_Case__c</members> <members>Appraiser_Case__c</members>
<members>Appraiser_Case_Deficiency__c</members> <members>Appraiser_Case_Deficiency__c</members>
<members>CLM_Account_Setting__mdt</members>
<members>CLM_Environment_Setting__mdt</members> <members>CLM_Environment_Setting__mdt</members>
<members>CLM_Letter_Definition__mdt</members>
<name>CustomObject</name> <name>CustomObject</name>
</types> </types>
<types> <types>
@ -20,6 +37,10 @@
<members>Appraiser_Case_Deficiency__c</members> <members>Appraiser_Case_Deficiency__c</members>
<name>CustomTab</name> <name>CustomTab</name>
</types> </types>
<types>
<members>DocusignJWT</members>
<name>ExternalCredential</name>
</types>
<types> <types>
<members>Appraiser_Case_Record_Page</members> <members>Appraiser_Case_Record_Page</members>
<name>FlexiPage</name> <name>FlexiPage</name>
@ -31,8 +52,18 @@
<types> <types>
<members>Appraiser_Case__c-Appraiser Case Layout</members> <members>Appraiser_Case__c-Appraiser Case Layout</members>
<members>Appraiser_Case_Deficiency__c-Appraiser Case Deficiency Layout</members> <members>Appraiser_Case_Deficiency__c-Appraiser Case Deficiency Layout</members>
<members>CLM_Account_Setting__mdt-CLM Account Setting Layout</members>
<members>CLM_Letter_Definition__mdt-CLM Letter Definition Layout</members>
<name>Layout</name> <name>Layout</name>
</types> </types>
<types>
<members>CLMs1Download</members>
<members>CLMs1NamedCreds</members>
<members>CLMuatDownload</members>
<members>CLMuatNamedCreds</members>
<members>Esignature_Demo_NamedCreds</members>
<name>NamedCredential</name>
</types>
<types> <types>
<members>Appraiser_Case__c.Generate_Review_Letter</members> <members>Appraiser_Case__c.Generate_Review_Letter</members>
<name>QuickAction</name> <name>QuickAction</name>
@ -43,21 +74,21 @@
<name>PermissionSet</name> <name>PermissionSet</name>
</types> </types>
<types> <types>
<members>CLMAdminService</members>
<members>CLMAdminServiceTest</members>
<members>AppraiserCasePayloadBuilder</members> <members>AppraiserCasePayloadBuilder</members>
<members>AppraiserCasePayloadBuilderTest</members> <members>AppraiserCasePayloadBuilderTest</members>
<members>CLMAdminService</members>
<members>CLMAdminServiceTest</members>
<members>CLMDocGenCallout</members> <members>CLMDocGenCallout</members>
<members>CLMDocGenCalloutTest</members> <members>CLMDocGenCalloutTest</members>
<members>DocusignESignatureService</members>
<members>DocusignESignatureServiceTest</members>
<name>ApexClass</name> <name>ApexClass</name>
</types> </types>
<types> <types>
<members>clmDocGenWorkbench</members> <members>clmDocGenWorkbench</members>
<members>clmRequestPreview</members>
<members>docusignEsignWorkbench</members>
<name>LightningComponentBundle</name> <name>LightningComponentBundle</name>
</types> </types>
<types>
<members>DocusignJWT</members>
<name>ExternalCredential</name>
</types>
<version>62.0</version> <version>62.0</version>
</Package> </Package>

View File

@ -1,32 +1,41 @@
Appraiser_Case__c appraiserCase = new Appraiser_Case__c( Appraiser_Case__c appraiserCase = new Appraiser_Case__c(
Appraiser_Field_Review_Date__c = Date.today(), Appraiser_Field_Review_Date__c = Date.today(),
Letter_Sent_Date__c = Date.today().addDays(7),
FHA_Case_Number__c = '123-4567890',
Appraiser_Name__c = 'Jamie',
Appraiser_Last_Name__c = 'Appraiser',
Appraiser_Salutation__c = 'Ms.',
Appraiser_Email__c = 'jamie.appraiser@example.com',
Appraiser_Street__c = '245 Lexington Ave',
Appraiser_City__c = 'New York',
Appraiser_State_Province__c = 'NY',
Appraiser_Postal_Code__c = '10016',
Appraiser_Country__c = 'USA',
Property_Street__c = '123 Main St', Property_Street__c = '123 Main St',
Property_City__c = 'Ottawa', Property_City__c = 'Denver',
Property_State_Province__c = 'ON', Property_State_Province__c = 'CO',
Property_Postal_Code__c = 'K1A 0A1', Property_Postal_Code__c = '80202',
Property_Country__c = 'Canada' Property_Country__c = 'USA'
); );
insert appraiserCase; insert appraiserCase;
insert new List<Appraiser_Deficiency__c>{ insert new List<Appraiser_Case_Deficiency__c>{
new Appraiser_Deficiency__c( new Appraiser_Case_Deficiency__c(
Name = 'Deficiency 1',
Appraiser_Case__c = appraiserCase.Id, Appraiser_Case__c = appraiserCase.Id,
Deficiency_Number__c = '1', Deficiency_Number__c = 1,
Description__c = 'Missing comparable sale analysis', Description__c = 'Missing comparable sale adjustment detail.',
Resolution__c = 'Provide updated comparable sales section', Resolution__c = 'Added adjustment rationale and supporting calculations.',
Sort_Order__c = 1 Reference__c = 'VC-1'
), ),
new Appraiser_Deficiency__c( new Appraiser_Case_Deficiency__c(
Name = 'Deficiency 2',
Appraiser_Case__c = appraiserCase.Id, Appraiser_Case__c = appraiserCase.Id,
Deficiency_Number__c = '2', Deficiency_Number__c = 2,
Description__c = 'Exterior condition comments are too brief', Description__c = 'Neighborhood trend explanation insufficient.',
Resolution__c = 'Expand comments and attach photos', Resolution__c = 'Expanded market trend narrative with MLS evidence.',
Sort_Order__c = 2 Reference__c = 'MC-2'
) )
}; };
System.debug('Created Appraiser Case Id: ' + appraiserCase.Id); System.debug('Created Appraiser Case Id: ' + appraiserCase.Id);
System.debug('Payload JSON: ' + AppraiserCaseDocGenService.buildPayloadJson(appraiserCase.Id)); System.debug('Payload JSON: ' + AppraiserCasePayloadBuilder.buildPayloadJson(appraiserCase.Id));
System.debug('Doc Gen JSON: ' + AppraiserCaseDocGenService.buildDocGenRequestJson(appraiserCase.Id, 'APPRAISER_REVIEW_LETTER')); System.debug('Data XML:\n' + CLMDocGenCallout.buildDataXmlForCase(appraiserCase.Id));