diff --git a/src/app/carnet/additional-set/additional-set.component.html b/src/app/carnet/additional-set/additional-set.component.html new file mode 100644 index 0000000..be5a34f --- /dev/null +++ b/src/app/carnet/additional-set/additional-set.component.html @@ -0,0 +1 @@ +

additional-set works!

diff --git a/src/app/carnet/additional-set/additional-set.component.scss b/src/app/carnet/additional-set/additional-set.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/carnet/additional-set/additional-set.component.ts b/src/app/carnet/additional-set/additional-set.component.ts new file mode 100644 index 0000000..833cf4f --- /dev/null +++ b/src/app/carnet/additional-set/additional-set.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-additional-set', + imports: [], + templateUrl: './additional-set.component.html', + styleUrl: './additional-set.component.scss' +}) +export class AdditionalSetComponent { + +} diff --git a/src/app/carnet/application/application.component.ts b/src/app/carnet/application/application.component.ts index fa99e4d..ed9609e 100644 --- a/src/app/carnet/application/application.component.ts +++ b/src/app/carnet/application/application.component.ts @@ -77,7 +77,7 @@ export class ApplicationComponent { name: this.applicationName, }); - if (this.isEditMode) { + if (this.isEditMode || this.isViewMode) { this.applicationDetailsForm.get('name')?.disable(); this.disableSaveButton = true; } diff --git a/src/app/carnet/duplicate/duplicate.component.html b/src/app/carnet/duplicate/duplicate.component.html new file mode 100644 index 0000000..5f32c08 --- /dev/null +++ b/src/app/carnet/duplicate/duplicate.component.html @@ -0,0 +1 @@ +

duplicate works!

diff --git a/src/app/carnet/duplicate/duplicate.component.scss b/src/app/carnet/duplicate/duplicate.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/carnet/duplicate/duplicate.component.ts b/src/app/carnet/duplicate/duplicate.component.ts new file mode 100644 index 0000000..be3b7bb --- /dev/null +++ b/src/app/carnet/duplicate/duplicate.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-duplicate', + imports: [], + templateUrl: './duplicate.component.html', + styleUrl: './duplicate.component.scss' +}) +export class DuplicateComponent { + +} diff --git a/src/app/carnet/goods/goods.component.ts b/src/app/carnet/goods/goods.component.ts index 2659b9a..c29b6f7 100644 --- a/src/app/carnet/goods/goods.component.ts +++ b/src/app/carnet/goods/goods.component.ts @@ -174,6 +174,10 @@ export class GoodsComponent { horseUsed: data.horseUsed || false, authorizedRepresentatives: data.authorizedRepresentatives || '' }); + + if (this.isViewMode) { + this.goodsForm.disable(); + } } // Add new item to the table diff --git a/src/app/carnet/replacement-set/replacement-set.component.html b/src/app/carnet/replacement-set/replacement-set.component.html new file mode 100644 index 0000000..6336602 --- /dev/null +++ b/src/app/carnet/replacement-set/replacement-set.component.html @@ -0,0 +1 @@ +

replacement-set works!

diff --git a/src/app/carnet/replacement-set/replacement-set.component.scss b/src/app/carnet/replacement-set/replacement-set.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/carnet/replacement-set/replacement-set.component.ts b/src/app/carnet/replacement-set/replacement-set.component.ts new file mode 100644 index 0000000..f3fc06b --- /dev/null +++ b/src/app/carnet/replacement-set/replacement-set.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-replacement-set', + imports: [], + templateUrl: './replacement-set.component.html', + styleUrl: './replacement-set.component.scss' +}) +export class ReplacementSetComponent { + +} diff --git a/src/app/carnet/shipping/fees-dialog.component.ts b/src/app/carnet/shipping/fees-dialog.component.ts new file mode 100644 index 0000000..54eb13a --- /dev/null +++ b/src/app/carnet/shipping/fees-dialog.component.ts @@ -0,0 +1,78 @@ +import { Component, inject, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { AngularMaterialModule } from '../../shared/module/angular-material.module'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { CarnetService } from '../../core/services/carnet/carnet.service'; +import { Fees } from '../../core/models/carnet/fee'; +import { ApiErrorHandlerService } from '../../core/services/common/api-error-handler.service'; +import { NotificationService } from '../../core/services/common/notification.service'; + +@Component({ + selector: 'app-fees-dialog', + imports: [AngularMaterialModule, CommonModule, FormsModule], + template: ` +

Fees and Charges

+ +

The following fees apply:

+ +
+ + + + `, + styles: [` + li { + margin-bottom: 8px; + } + `] +}) +export class FeesDialogComponent { + estimatedFees: Fees = {}; + headerid: number | null = null; + + private carnetService = inject(CarnetService); + private notificationService = inject(NotificationService); + private errorHandler = inject(ApiErrorHandlerService); + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: { headerid: any } + ) { + this.headerid = data.headerid; + } + + ngOnInit(): void { + if (this.headerid && this.headerid > 0) { + this.carnetService.getEstimatedFees(this.headerid).subscribe({ + next: (data: Fees) => { + if (data) { + this.estimatedFees = data; + } + }, + error: (error: any) => { + let errorMessage = this.errorHandler.handleApiError(error, 'Failed to get estimated fees'); + this.notificationService.showError(errorMessage); + console.error('Error getting estimated fees:', error); + } + }); + } + } + + onClose(): void { + this.dialogRef.close(); + } +} \ No newline at end of file diff --git a/src/app/carnet/shipping/shipping.component.html b/src/app/carnet/shipping/shipping.component.html index 1cfff80..eee792c 100644 --- a/src/app/carnet/shipping/shipping.component.html +++ b/src/app/carnet/shipping/shipping.component.html @@ -343,6 +343,16 @@
+ + + + - - diff --git a/src/app/carnet/shipping/shipping.component.ts b/src/app/carnet/shipping/shipping.component.ts index d35fcea..695760c 100644 --- a/src/app/carnet/shipping/shipping.component.ts +++ b/src/app/carnet/shipping/shipping.component.ts @@ -26,6 +26,7 @@ import { StorageService } from '../../core/services/common/storage.service'; import { FormOfSecurity } from '../../core/models/formofsecurity'; import { CarnetService } from '../../core/services/carnet/carnet.service'; import { environment } from '../../../environments/environment'; +import { FeesDialogComponent } from './fees-dialog.component'; @Component({ selector: 'app-shipping', @@ -62,7 +63,9 @@ export class ShippingComponent { deliveryEstimate: string = ''; holderid: number = 0; holder: Holder | undefined | null = null; + showSubmitButton: boolean = environment.appType === 'client'; + showEstimatedFeesButton: boolean = environment.appType === 'client'; showProcessButton: boolean = environment.appType === 'service-provider'; countriesHasStates = ['US', 'CA', 'MX']; @@ -444,6 +447,10 @@ export class ShippingComponent { this.calculateDeliveryEstimate(); this.shippingForm.markAsUntouched(); this.completed.emit(this.shippingForm.valid); + + if (this.isViewMode) { + this.shippingForm.disable(); + } } patchAddressContactData(): void { @@ -460,7 +467,7 @@ export class ShippingComponent { if (this.holder?.holderType.trim() === 'GOV') { formOfSecurityControl?.setValue(this.govFormOfSecurities?.[0].value); formOfSecurityControl?.disable(); - } else { + } else if (!this.isViewMode) { formOfSecurityControl?.enable(); } @@ -688,6 +695,13 @@ export class ShippingComponent { }); } + showEstimatedFees(): void { + const dialogRef = this.dialog.open(FeesDialogComponent, { + width: '500px', + data: { headerid: this.headerid } + }); + } + submitApplication(): void { this.onSubmit(true); } diff --git a/src/app/carnet/travel-plan/travel-plan.component.ts b/src/app/carnet/travel-plan/travel-plan.component.ts index 4ef21fe..4493b48 100644 --- a/src/app/carnet/travel-plan/travel-plan.component.ts +++ b/src/app/carnet/travel-plan/travel-plan.component.ts @@ -284,6 +284,9 @@ export class TravelPlanComponent { }); this.completed.emit(this.travelForm.valid); + if (this.isViewMode) { + this.travelForm.disable(); + } } onSubmit(): void { diff --git a/src/app/common/secured-header/secured-header.component.html b/src/app/common/secured-header/secured-header.component.html index 354784e..e8f6d2e 100644 --- a/src/app/common/secured-header/secured-header.component.html +++ b/src/app/common/secured-header/secured-header.component.html @@ -18,7 +18,7 @@ {{ userEmail }}
- diff --git a/src/app/core/services/carnet/shipping.service.ts b/src/app/core/services/carnet/shipping.service.ts index 37c24b7..0e8ee06 100644 --- a/src/app/core/services/carnet/shipping.service.ts +++ b/src/app/core/services/carnet/shipping.service.ts @@ -33,13 +33,13 @@ export class ShippingService { paymentMethod: shippingDetails.PAYMENTMETHOD, //needsBond: shippingDetails.BONDPROTECTION === 'Y', - needsInsurance: shippingDetails.INSPROTECTION === 'Y', - needsLostDocProtection: shippingDetails.LDIPROTECTION === 'Y', + needsInsurance: shippingDetails.INSPROTECTION === 'ACCEPT', + needsLostDocProtection: shippingDetails.LDIPROTECTION === 'ACCEPT', formOfSecurity: shippingDetails.FORMOFSECURITY }; shippingData.address = { - companyName: shippingDetails.P_SHIPNAME, + companyName: shippingDetails.SHIPNAME, addressid: shippingDetails.SHIPADDRESSID, address1: shippingDetails.ADDRESS1, address2: shippingDetails.ADDRESS2, @@ -77,8 +77,8 @@ export class ShippingService { P_PAYMENTMETHOD: shippingData.paymentMethod, // P_BONDPROTECTION: shippingData.needsBond ? 'Y' : 'N', - P_INSPROTECTION: shippingData.needsInsurance ? 'Y' : 'N', - P_LDIPROTECTION: shippingData.needsLostDocProtection ? 'Y' : 'N', + P_INSPROTECTION: shippingData.needsInsurance ? 'ACCEPT' : 'DECLINE', + P_LDIPROTECTION: shippingData.needsLostDocProtection ? 'ACCEPT' : 'DECLINE', P_FORMOFSECURITY: shippingData.formOfSecurity, P_SHIPNAME: shippingData.address?.companyName, diff --git a/src/app/core/services/home.service.ts b/src/app/core/services/home.service.ts index 82e9161..d991403 100644 --- a/src/app/core/services/home.service.ts +++ b/src/app/core/services/home.service.ts @@ -38,7 +38,7 @@ export class HomeService { expiryDate: item.EXPDATE || null, orderType: item.ORDERTYPE, carnetStatus: item.CARNETSTATUS, - headerId: item.HEADERID, + headerid: item.HEADERID, })); } diff --git a/src/app/holder/basic-details/basic-details.component.ts b/src/app/holder/basic-details/basic-details.component.ts index 3af8d21..5bd96e8 100644 --- a/src/app/holder/basic-details/basic-details.component.ts +++ b/src/app/holder/basic-details/basic-details.component.ts @@ -14,6 +14,7 @@ import { BasicDetailService } from '../../core/services/holder/basic-detail.serv import { BasicDetail } from '../../core/models/holder/basic-detail'; import { StorageService } from '../../core/services/common/storage.service'; import { NavigationService } from '../../core/services/common/navigation.service'; +import { environment } from '../../../environments/environment'; @Component({ selector: 'app-basic-detail', @@ -37,6 +38,7 @@ export class BasicDetailComponent implements OnInit, OnDestroy { isLoading = false; changeInProgress = false; countriesHasStates = ['US', 'CA', 'MX']; + returnTo: string = environment.appType === 'client' ? 'edit-carnet' : 'process-carnet'; private destroy$ = new Subject(); @@ -121,7 +123,7 @@ export class BasicDetailComponent implements OnInit, OnDestroy { : this.basicDetailService.createBasicDetail(basicDetailData); this.changeInProgress = true; - + saveObservable.pipe(finalize(() => { this.changeInProgress = false; })).subscribe({ @@ -215,7 +217,7 @@ export class BasicDetailComponent implements OnInit, OnDestroy { goBackToCarnetApplication(): void { this.storageService.removeItem('currentapplication') - this.navigationService.navigate(["edit-carnet", this.currentApplicationDetails?.headerid], + this.navigationService.navigate([this.returnTo, this.currentApplicationDetails?.headerid], { state: { isEditMode: true }, queryParams: { diff --git a/src/app/holder/contacts/contacts.component.ts b/src/app/holder/contacts/contacts.component.ts index 2a0c7f2..01bcf1f 100644 --- a/src/app/holder/contacts/contacts.component.ts +++ b/src/app/holder/contacts/contacts.component.ts @@ -17,6 +17,7 @@ import { ConfirmDialogComponent } from '../../shared/components/confirm-dialog/c import { NavigationService } from '../../core/services/common/navigation.service'; import { StorageService } from '../../core/services/common/storage.service'; import { finalize } from 'rxjs'; +import { environment } from '../../../environments/environment'; @Component({ selector: 'app-contacts', @@ -47,6 +48,7 @@ export class ContactsComponent { showInactiveContacts = false; contacts: Contact[] = []; currentApplicationDetails: { headerid: number, applicationName: string } | null = null; + returnTo: string = environment.appType === 'client' ? 'edit-carnet' : 'process-carnet'; contactReadOnlyFields: any = { lastChangedDate: null, @@ -149,7 +151,7 @@ export class ContactsComponent { : this.contactService.createContact(this.holderid, contactData); this.changeInProgress = true; - + saveObservable.pipe(finalize(() => { this.changeInProgress = false; })).subscribe({ @@ -245,7 +247,7 @@ export class ContactsComponent { goBackToCarnetApplication(): void { this.storageService.removeItem('currentapplication') - this.navigationService.navigate(["edit-carnet", this.currentApplicationDetails?.headerid], + this.navigationService.navigate([this.returnTo, this.currentApplicationDetails?.headerid], { state: { isEditMode: true }, queryParams: { diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html index 0cbc0c7..7b61ec1 100644 --- a/src/app/home/home.component.html +++ b/src/app/home/home.component.html @@ -124,6 +124,25 @@ matTooltip="Edit"> edit + + + + + + + diff --git a/src/app/home/home.component.scss b/src/app/home/home.component.scss index e0c866f..bb5a8bc 100644 --- a/src/app/home/home.component.scss +++ b/src/app/home/home.component.scss @@ -91,15 +91,15 @@ } } - .mat-column-actions { - width: 135px; + // .mat-column-actions { + // width: 135px; - .action-buttons { - width: 100%; - display: flex; - gap: 4px; - } - } + // .action-buttons { + // width: 100%; + // display: flex; + // gap: 4px; + // } + // } } .no-data-message { diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts index 510da46..f71e08c 100644 --- a/src/app/home/home.component.ts +++ b/src/app/home/home.component.ts @@ -166,8 +166,8 @@ export class HomeComponent { } editCarnet(item: any): void { - if (item && item.headerId) { - this.navigateTo(['edit-carnet', item.headerId], { + if (item && item.headerid) { + this.navigateTo(['edit-carnet', item.headerid], { queryParams: { applicationname: item.applicationName } }); } else { @@ -176,8 +176,8 @@ export class HomeComponent { } viewCarnet(item: any): void { - if (item && item.headerId) { - this.navigateTo(['view-carnet', item.headerId], { + if (item && item.headerid) { + this.navigateTo(['view-carnet', item.headerid], { queryParams: { applicationname: item.applicationName } }); } else { @@ -185,9 +185,9 @@ export class HomeComponent { } } - printGeneralList(headerId: number): void { - if (headerId) { - this.homeService.printGeneralList(headerId).subscribe({ + printGeneralList(headerid: number): void { + if (headerid) { + this.homeService.printGeneralList(headerid).subscribe({ next: () => { }, @@ -202,8 +202,8 @@ export class HomeComponent { } } - deleteCarnet(headerId: number): void { - if (headerId) { + deleteCarnet(headerid: number): void { + if (headerid) { const dialogRef = this.dialog.open(ConfirmDialogComponent, { width: '350px', data: { @@ -216,7 +216,7 @@ export class HomeComponent { dialogRef.afterClosed().subscribe(result => { if (result) { - this.homeService.deleteCarnet(headerId).subscribe({ + this.homeService.deleteCarnet(headerid).subscribe({ next: () => { this.notificationService.showSuccess('Carnet deleted successfully'); this.loadCarnetData();