extend carnet updates

This commit is contained in:
Cyril Joseph 2025-08-18 21:51:46 -03:00
parent 6a628b9dc7
commit 5d140b0171
6 changed files with 31 additions and 30 deletions

View File

@ -5,7 +5,7 @@
<!-- Replacement Application Step --> <!-- Replacement Application Step -->
<mat-step *ngIf="applicationType === 'extend'" [completed]="stepsCompleted.extension" <mat-step *ngIf="applicationType === 'extend'" [completed]="stepsCompleted.extension"
[editable]="stepsCompleted.extension"> [editable]="stepsCompleted.applicationDetail">
<ng-template matStepLabel>Extension Application</ng-template> <ng-template matStepLabel>Extension Application</ng-template>
<app-replacement-set (completed)="onExtensionApplicationSaved($event)" [headerid]="headerid" <app-replacement-set (completed)="onExtensionApplicationSaved($event)" [headerid]="headerid"
[isEditMode]="isEditMode && applicationType === 'extend'"> [isEditMode]="isEditMode && applicationType === 'extend'">
@ -42,7 +42,7 @@
<ng-template matStepLabel>Travel Plan</ng-template> <ng-template matStepLabel>Travel Plan</ng-template>
<app-travel-plan (completed)="onTravelPlanSaved($event)" [headerid]="headerid" <app-travel-plan (completed)="onTravelPlanSaved($event)" [headerid]="headerid"
[applicationType]="applicationType" (needsInsurance)="onNeedsInsurance($event)" [applicationType]="applicationType" (needsInsurance)="onNeedsInsurance($event)"
[isViewMode]="applicationType !== 'edit' && applicationType !== 'additional'"> [isViewMode]="applicationType !== 'edit' && applicationType !== 'additional' && applicationType !== 'extend'">
</app-travel-plan> </app-travel-plan>
</mat-step> </mat-step>

View File

@ -36,25 +36,25 @@
<div class="form-row"> <div class="form-row">
<mat-form-field appearance="outline" class="current-port"> <mat-form-field appearance="outline" class="current-port">
<mat-label>Current port where the goods are located</mat-label> <mat-label>Current port where the goods are located</mat-label>
<input matInput formControlName="portName" required> <input matInput formControlName="portName">
<mat-error *ngIf="f['portName'].errors?.['required']"> <!-- <mat-error *ngIf="f['portName'].errors?.['required']">
Port location is required Port location is required
</mat-error> </mat-error>
<mat-error *ngIf="f['portName'].errors?.['maxlength']"> <mat-error *ngIf="f['portName'].errors?.['maxlength']">
Maximum 100 characters allowed Maximum 100 characters allowed
</mat-error> </mat-error> -->
</mat-form-field> </mat-form-field>
<mat-form-field appearance="outline" class="country"> <mat-form-field appearance="outline" class="country">
<mat-label>Country</mat-label> <mat-label>Country</mat-label>
<mat-select formControlName="portCountry" required> <mat-select formControlName="portCountry">
<mat-option *ngFor="let country of countries" [value]="country.value"> <mat-option *ngFor="let country of countries" [value]="country.value">
{{ country.name }} {{ country.name }}
</mat-option> </mat-option>
</mat-select> </mat-select>
<mat-error *ngIf="f['portCountry'].errors?.['required']"> <!-- <mat-error *ngIf="f['portCountry'].errors?.['required']">
Port Country is required Port Country is required
</mat-error> </mat-error> -->
</mat-form-field> </mat-form-field>
</div> </div>
@ -73,16 +73,16 @@
<mat-form-field appearance="outline" class="duration"> <mat-form-field appearance="outline" class="duration">
<mat-label>Duration</mat-label> <mat-label>Duration</mat-label>
<input matInput type="number" formControlName="duration" required> <input matInput type="number" formControlName="duration">
<span matTextSuffix>Month(s)</span> <span matTextSuffix>Month(s)</span>
<mat-error *ngIf="f['duration'].errors?.['required']"> <!-- <mat-error *ngIf="f['duration'].errors?.['required']">
Duration is required Duration is required
</mat-error> </mat-error> -->
<mat-error *ngIf="f['duration'].errors?.['min']"> <!-- <mat-error *ngIf="f['duration'].errors?.['min']">
Minimum 1 month required Minimum 1 month required
</mat-error> </mat-error> -->
<mat-error *ngIf="f['duration'].errors?.['max']"> <mat-error *ngIf="f['duration'].errors?.['max']">
Maximum 24 months allowed Maximum 12 months allowed
</mat-error> </mat-error>
</mat-form-field> </mat-form-field>
</div> </div>

View File

@ -60,7 +60,6 @@ export class ReplacementSetComponent {
this.patchFormData(replacementData); this.patchFormData(replacementData);
this.replacementDetails = replacementData; this.replacementDetails = replacementData;
this.completed.emit(this.extensionForm.valid || this.extensionForm.disabled); this.completed.emit(this.extensionForm.valid || this.extensionForm.disabled);
this.completed.emit(true);
} }
}, },
error: (error: any) => { error: (error: any) => {
@ -92,10 +91,10 @@ export class ReplacementSetComponent {
createForm(): FormGroup { createForm(): FormGroup {
return this.fb.group({ return this.fb.group({
portName: ['', [Validators.required, Validators.maxLength(100)]], portName: [''],
portCountry: ['', Validators.required], portCountry: [''],
reasonForExtension: ['', Validators.required], reasonForExtension: ['', Validators.required],
duration: [1, [Validators.required, Validators.min(1), Validators.max(24)]] duration: ['', [Validators.max(12)]]
}); });
} }

View File

@ -113,7 +113,7 @@ export class TravelPlanComponent {
visits: this.visitsCount visits: this.visitsCount
}); });
if (this.applicationType === 'additional') { if (this.applicationType === 'additional' || this.applicationType === 'extend') {
this.needsInsurance.emit(this.selectedVisitCountries.length > 0); this.needsInsurance.emit(this.selectedVisitCountries.length > 0);
} }
} }
@ -227,7 +227,7 @@ export class TravelPlanComponent {
c => c.value !== this.selectedVisitCountry!.value c => c.value !== this.selectedVisitCountry!.value
); );
if (this.applicationType === 'additional') { if (this.applicationType === 'additional' || this.applicationType === 'extend') {
this.needsInsurance.emit(this.selectedVisitCountries.length > 0); this.needsInsurance.emit(this.selectedVisitCountries.length > 0);
} }
} }
@ -287,7 +287,7 @@ export class TravelPlanComponent {
this.selectedVisitCountries = plan?.entries; this.selectedVisitCountries = plan?.entries;
this.selectedTransitCountries = plan?.transits; this.selectedTransitCountries = plan?.transits;
if (this.applicationType === 'additional') { if (this.applicationType === 'additional' || this.applicationType === 'extend') {
this.needsInsurance.emit(this.selectedVisitCountries.length > 0) this.needsInsurance.emit(this.selectedVisitCountries.length > 0)
} }
@ -302,15 +302,16 @@ export class TravelPlanComponent {
this.travelForm.disable(); this.travelForm.disable();
} }
if (this.applicationType === 'additional') { if (this.applicationType === 'additional' || this.applicationType === 'extend') {
const usentriesControl = this.travelForm.get('usaEntries'); const usentriesControl = this.travelForm.get('usaEntries');
usentriesControl?.setValidators([Validators.min(1), Validators.max(99)]); usentriesControl?.setValidators([Validators.min(1), Validators.max(99)]);
usentriesControl?.updateValueAndValidity(); usentriesControl?.updateValueAndValidity();
} }
this.completed.emit(this.travelForm.valid || this.travelForm.disabled this.completed.emit(this.travelForm.valid || this.travelForm.disabled
|| (this.applicationType === 'additional' && (this.travelForm.value.usaEntries || ((this.applicationType === 'additional' || this.applicationType === 'extend')
|| this.selectedVisitCountries.length > 0 || this.selectedTransitCountries.length > 0))); && (this.travelForm.value.usaEntries
|| this.selectedVisitCountries.length > 0 || this.selectedTransitCountries.length > 0)));
} }
onSubmit(): void { onSubmit(): void {
@ -320,10 +321,11 @@ export class TravelPlanComponent {
} }
this.showAdditionalSetsValidationMessage = false; this.showAdditionalSetsValidationMessage = false;
if (this.applicationType === 'additional' && (!this.travelForm.value.usaEntries && if ((this.applicationType === 'additional' || this.applicationType === 'extend')
this.selectedVisitCountries.length === 0 && && (!this.travelForm.value.usaEntries &&
this.selectedTransitCountries.length === 0 this.selectedVisitCountries.length === 0 &&
)) { this.selectedTransitCountries.length === 0
)) {
this.showAdditionalSetsValidationMessage = true; this.showAdditionalSetsValidationMessage = true;
return; return;
} }

View File

@ -54,6 +54,6 @@ export class ReplacementService {
P_SPID: this.userService.getUserSpid() P_SPID: this.userService.getUserSpid()
} }
return this.http.patch(`${this.apiUrl}/${this.apiDb}/SaveExtensionApplication`, extensionDetails); return this.http.post(`${this.apiUrl}/${this.apiDb}/SaveExtensionApplication`, extensionDetails);
} }
} }

View File

@ -207,7 +207,7 @@ export class CommonService {
} }
getExtensionReasons(): Observable<ExtensionReason[]> { getExtensionReasons(): Observable<ExtensionReason[]> {
return this.http.get<any[]>(`${this.apiUrl}/${this.apiDb}/GetParamValues?P_PARAMTYPE=008&P_SPID=${this.userService.getUserSpid()}`).pipe( return this.http.get<any[]>(`${this.apiUrl}/${this.apiDb}/GetParamValues?P_PARAMTYPE=015&P_SPID=${this.userService.getUserSpid()}`).pipe(
map((response) => map((response) =>
response.map((item) => ({ response.map((item) => ({
name: item.PARAMDESC, name: item.PARAMDESC,