carnet ad holder updates

This commit is contained in:
Cyril Joseph 2025-08-03 18:28:28 -03:00
parent 3d07921cec
commit 5be3f005ac
22 changed files with 291 additions and 96 deletions

View File

@ -21,7 +21,7 @@
</div>
<div class="form-actions">
<button mat-raised-button color="primary" type="submit"
<button mat-raised-button color="primary" type="submit" *ngIf="!isViewMode"
[disabled]="applicationDetailsForm.invalid || disableSaveButton ">
Save
</button>

View File

@ -17,6 +17,7 @@ import { ActivatedRoute } from '@angular/router';
})
export class ApplicationComponent {
@Input() isEditMode = false;
@Input() isViewMode = false;
@Input() headerid: number = 0;
@Input() applicationName: string = '';

View File

@ -38,12 +38,13 @@
<div class="table-actions">
<h3>Goods Items</h3>
<div class="actions">
<button mat-raised-button color="primary" type="button" (click)="addNewItem()">
<button mat-raised-button color="primary" type="button" *ngIf="!isViewMode" (click)="addNewItem()">
<mat-icon>add</mat-icon> Add Item
</button>
<div class="upload-section">
<input type="file" accept=".xlsx,.xls,.csv" (change)="fileUpload($event)" hidden #fileInput>
<button mat-raised-button type="button" (click)="fileInput.click()" [disabled]="isProcessing">
<button mat-raised-button type="button" *ngIf="!isViewMode" (click)="fileInput.click()"
[disabled]="isProcessing">
<mat-icon>upload</mat-icon> Upload
</button>
</div>
@ -102,10 +103,12 @@
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef>Actions</th>
<td mat-cell *matCellDef="let item; let i = index">
<button mat-icon-button color="primary" (click)="editItem(item)" matTooltip="Edit">
<button mat-icon-button color="primary" *ngIf="!isViewMode" (click)="editItem(item)"
matTooltip="Edit">
<mat-icon>edit</mat-icon>
</button>
<button mat-icon-button color="warn" (click)="deleteItem(item)" matTooltip="Delete">
<button mat-icon-button color="warn" *ngIf="!isViewMode" (click)="deleteItem(item)"
matTooltip="Delete">
<mat-icon>delete</mat-icon>
</button>
</td>
@ -219,7 +222,7 @@
</div>
<div class="form-actions">
<button mat-raised-button color="primary" type="submit"
<button mat-raised-button color="primary" type="submit" *ngIf="!isViewMode"
[disabled]="itemForm.invalid || changeInProgress">
Save
</button>
@ -229,7 +232,7 @@
</div>
<div *ngIf="!showItemForm" class="form-actions">
<button mat-raised-button color="primary" (click)="onSubmit()"
<button mat-raised-button color="primary" (click)="onSubmit()" *ngIf="!isViewMode"
[disabled]="goodsForm.invalid || changeInProgress">
Save
</button>

View File

@ -28,6 +28,7 @@ import { Goods, GoodsItem } from '../../core/models/carnet/goods';
})
export class GoodsComponent {
@Input() headerid: number = 0;
@Input() isViewMode = false;
@Input() userPreferences: UserPreferences = {};
@Input() isEditMode: boolean = false;
@Output() completed = new EventEmitter<boolean>();

View File

@ -1,2 +1,2 @@
<app-holder-search (holderSelectionCompleted)="onHolderSelectionSaved($event)" [applicationName]="applicationName"
[headerid]="headerid" [selectedHolderId]="selectedHolderId"></app-holder-search>
[headerid]="headerid" [selectedHolderId]="selectedHolderId" [isViewMode]="isViewMode"></app-holder-search>

View File

@ -13,6 +13,7 @@ import { ApiErrorHandlerService } from '../../core/services/common/api-error-han
styleUrl: './holder.component.scss'
})
export class HolderComponent {
@Input() isViewMode = false;
@Input() headerid: number = 0;
@Input() applicationName: string = '';
@Input() userPreferences: UserPreferences = {};

View File

@ -49,8 +49,8 @@
<!-- <button type="button" mat-icon-button color="primary" matTooltip="Edit">
<mat-icon>edit</mat-icon>
</button> -->
<button type="button" mat-icon-button color="primary" (click)="selectContact()"
matTooltip="Change contact">
<button type="button" mat-icon-button color="primary" *ngIf="!isViewMode"
(click)="selectContact()" matTooltip="Change contact">
<mat-icon>compare_arrows</mat-icon>
</button>
</div>
@ -343,15 +343,24 @@
</div>
<div class="form-actions">
<button mat-raised-button color="primary" type="button" (click)="processApplication()"
[disabled]="!enableSubmitButton" *ngIf="showProcessButton && !isViewMode">
<span>Process Application</span>
</button>
<button mat-raised-button color="primary" type="button" (click)="submitApplication()"
[disabled]="!enableSubmitButton">
[disabled]="!enableSubmitButton" *ngIf="showSubmitButton && !isViewMode">
<span>Submit Application</span>
</button>
<button mat-raised-button color="primary" type="submit"
<button mat-raised-button color="primary" type="submit" *ngIf="!isViewMode"
[disabled]="shippingForm.invalid || changeInProgress">
Save
</button>
<button mat-raised-button color="primary" type="button" (click)="returnToHome()" *ngIf="isViewMode">
Back
</button>
</div>
</form>
</div>

View File

@ -24,6 +24,8 @@ import { Holder } from '../../core/models/carnet/holder';
import { NavigationService } from '../../core/services/common/navigation.service';
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';
@Component({
selector: 'app-shipping',
@ -34,6 +36,7 @@ import { FormOfSecurity } from '../../core/models/formofsecurity';
export class ShippingComponent {
@Input() headerid: number = 0;
@Input() isEditMode = false;
@Input() isViewMode = false;
@Input() enableSubmitButton = false;
@Input() applicationName: string = '';
@ -49,6 +52,7 @@ export class ShippingComponent {
private holderService = inject(HolderService);
private navigationService = inject(NavigationService);
private storageService = inject(StorageService);
private carnetService = inject(CarnetService);
shippingForm: FormGroup;
isLoading = false;
@ -58,6 +62,8 @@ export class ShippingComponent {
deliveryEstimate: string = '';
holderid: number = 0;
holder: Holder | undefined | null = null;
showSubmitButton: boolean = environment.appType === 'client';
showProcessButton: boolean = environment.appType === 'service-provider';
countriesHasStates = ['US', 'CA', 'MX'];
countries: Country[] = [];
@ -68,6 +74,7 @@ export class ShippingComponent {
formOfSecurities: FormOfSecurity[] = [];
govFormOfSecurities: FormOfSecurity[] = [];
nonGovFormOfSecurities: FormOfSecurity[] = [];
shippingFromDB: Shipping | null = null;
private destroy$ = new Subject<void>();
@ -126,7 +133,7 @@ export class ShippingComponent {
this.loadPaymentTypes();
this.loadFormOfSecurities();
if (this.headerid) {
if (this.headerid && this.headerid > 0) {
this.loadShippingData();
}
}
@ -190,7 +197,7 @@ export class ShippingComponent {
public refreshShippingData(): void {
if (this.headerid > 0) {
this.loadShippingData();
this.loadAddressContactData();
}
}
@ -218,7 +225,7 @@ export class ShippingComponent {
this.showAddressForm = false;
this.showContactForm = false;
this.updateShippingValidation(shipTo);
this.updateAddressContactValidation(shipTo);
if (shipTo === '3RDPARTY') {
this.shippingForm.get('contact')?.reset();
@ -321,6 +328,30 @@ export class ShippingComponent {
loadShippingData(): void {
this.isLoading = true;
this.shippingService.getShippingData(this.headerid).pipe(
finalize(() => {
this.isLoading = false;
})
).subscribe({
next: (results: Shipping) => {
if (!results) { // do nothing if empty
return;
}
this.shippingFromDB = results;
this.patchShippingData();
this.loadAddressContactData();
},
error: (error: any) => {
console.error('Error loading shipping data', error);
const errorMessage = this.errorHandler.handleApiError(error, 'Failed to load shipping data');
this.notificationService.showError(errorMessage);
}
});
}
loadAddressContactData(): void {
this.isLoading = true;
this.holderService.getHolder(this.headerid).pipe(
switchMap((holder: Holder) => {
@ -333,10 +364,9 @@ export class ShippingComponent {
return forkJoin({
holderContacts: this.shippingService.getHolderContactsById(holder.holderid),
holderAddress: this.shippingService.getHolderAddressById(holder.holderid),
holderAddress: this.shippingService.getHolderAddress(holder),
preparerAddress: this.shippingService.getPreparerAddress(),
preparerContacts: this.shippingService.getPreparerContacts(),
shippingData: this.shippingService.getShippingData(this.headerid)
preparerContacts: this.shippingService.getPreparerContacts()
}).pipe(
// Combine the forkJoin results with the original holder object
map((apiResults: any) => ({ ...apiResults, holder }))
@ -346,7 +376,7 @@ export class ShippingComponent {
).subscribe({
next: (results) => {
if (!results) { // do nothing if empty
if (!results && !this.shippingFromDB) { // do nothing if empty
return;
}
@ -357,20 +387,19 @@ export class ShippingComponent {
this.preparerAddress = results.preparerAddress;
// Set holder contact
if (results.shippingData?.shipTo === 'HOLDER' && results.shippingData?.contact?.contactid) {
this.holderContact = this.holderContacts.find(hc => hc.contactid === results.shippingData?.contact?.contactid);
if (this.shippingFromDB?.shipTo === 'HOLDER' && this.shippingFromDB?.contact?.contactid) {
this.holderContact = this.holderContacts.find(hc => hc.contactid === this.shippingFromDB?.contact?.contactid);
} else {
this.holderContact = this.holderContacts?.[0];
}
// Set preparer contact
if (results.shippingData?.shipTo === 'PREPARER' && results.shippingData?.contact?.contactid) {
this.preparerContact = this.preparerContacts.find(pc => pc.contactid === results.shippingData?.contact?.contactid);
if (this.shippingFromDB?.shipTo === 'PREPARER' && this.shippingFromDB?.contact?.contactid) {
this.preparerContact = this.preparerContacts.find(pc => pc.contactid === this.shippingFromDB?.contact?.contactid);
} else {
this.preparerContact = this.preparerContacts.find(pc => pc.defaultContact);
}
this.patchShippingData(results.shippingData);
this.patchAddressContactData();
},
error: (error: any) => {
console.error('Error loading shipping data', error);
@ -380,25 +409,40 @@ export class ShippingComponent {
});
}
patchShippingData(shipping: Shipping): void {
this.shippingForm.patchValue({
// needsBond: shipping.needsBond,
needsInsurance: shipping.needsInsurance,
needsLostDocProtection: shipping.needsLostDocProtection,
formOfSecurity: shipping.formOfSecurity,
shipTo: shipping.shipTo,
deliveryType: shipping.deliveryType,
deliveryMethod: shipping.deliveryMethod,
courierAccount: shipping.courierAccount,
paymentMethod: shipping.paymentMethod
});
if (shipping.address?.country) {
this.loadStates(shipping.address?.country);
patchShippingData(): void {
if (!this.shippingFromDB) {
return;
}
if (shipping.deliveryMethod === 'CLC') {
this.onDeliveryMethodChange(shipping.deliveryMethod);
this.shippingForm.patchValue({
// needsBond: shipping.needsBond,
needsInsurance: this.shippingFromDB.needsInsurance,
needsLostDocProtection: this.shippingFromDB.needsLostDocProtection,
formOfSecurity: this.shippingFromDB.formOfSecurity,
shipTo: this.shippingFromDB.shipTo,
deliveryType: this.shippingFromDB.deliveryType,
deliveryMethod: this.shippingFromDB.deliveryMethod,
courierAccount: this.shippingFromDB.courierAccount,
paymentMethod: this.shippingFromDB.paymentMethod
});
if (this.shippingFromDB.deliveryMethod === 'CLC') {
this.onDeliveryMethodChange(this.shippingFromDB.deliveryMethod);
}
this.calculateDeliveryEstimate();
this.shippingForm.markAsUntouched();
this.completed.emit(this.shippingForm.valid);
}
patchAddressContactData(): void {
if (!this.shippingFromDB) {
return
}
if (this.shippingFromDB.address?.country) {
this.loadStates(this.shippingFromDB.address?.country);
}
let formOfSecurityControl = this.shippingForm.get('formOfSecurity');
@ -410,9 +454,9 @@ export class ShippingComponent {
}
this.calculateDeliveryEstimate();
this.updateShippingValidation(shipping.shipTo);
this.updateAddressContactValidation(this.shippingFromDB.shipTo);
if (shipping.shipTo === '3RDPARTY') {
if (this.shippingFromDB.shipTo === '3RDPARTY') {
this.showAddressForm = true;
this.showContactForm = true;
@ -420,35 +464,35 @@ export class ShippingComponent {
const contactGroup = this.shippingForm.get('contact') as FormGroup;
addressGroup.patchValue({
addressid: shipping.address?.addressid,
companyName: shipping.address?.companyName,
address1: shipping.address?.address1,
address2: shipping.address?.address2,
city: shipping.address?.city,
state: shipping.address?.state,
zip: shipping.address?.zip,
country: shipping.address?.country
addressid: this.shippingFromDB.address?.addressid,
companyName: this.shippingFromDB.address?.companyName,
address1: this.shippingFromDB.address?.address1,
address2: this.shippingFromDB.address?.address2,
city: this.shippingFromDB.address?.city,
state: this.shippingFromDB.address?.state,
zip: this.shippingFromDB.address?.zip,
country: this.shippingFromDB.address?.country
})
contactGroup.patchValue({
contactid: shipping.contact?.contactid,
firstName: shipping.contact?.firstName,
lastName: shipping.contact?.lastName,
middleInitial: shipping.contact?.middleInitial,
title: shipping.contact?.title,
phone: shipping.contact?.phone,
mobile: shipping.contact?.mobile,
fax: shipping.contact?.fax,
email: shipping.contact?.email,
refNumber: shipping.contact?.refNumber,
notes: shipping.contact?.notes,
contactid: this.shippingFromDB.contact?.contactid,
firstName: this.shippingFromDB.contact?.firstName,
lastName: this.shippingFromDB.contact?.lastName,
middleInitial: this.shippingFromDB.contact?.middleInitial,
title: this.shippingFromDB.contact?.title,
phone: this.shippingFromDB.contact?.phone,
mobile: this.shippingFromDB.contact?.mobile,
fax: this.shippingFromDB.contact?.fax,
email: this.shippingFromDB.contact?.email,
refNumber: this.shippingFromDB.contact?.refNumber,
notes: this.shippingFromDB.contact?.notes,
})
}
this.shippingForm.markAsUntouched();
this.completed.emit(this.shippingForm.valid);
}
updateShippingValidation(shipTo: string): void {
updateAddressContactValidation(shipTo: string): void {
const addressGroup = this.shippingForm.get('address') as FormGroup;
const contactGroup = this.shippingForm.get('contact') as FormGroup;
@ -641,4 +685,25 @@ export class ShippingComponent {
this.navigationService.navigate(["terms"])
}
returnToHome(): void {
this.navigationService.navigate(["home"])
}
processApplication(): void {
this.changeInProgress = true;
this.carnetService.processApplication(this.headerid).pipe(finalize(() => {
this.changeInProgress = false;
})).subscribe({
next: () => {
this.notificationService.showSuccess('Application processed successfully');
this.navigationService.navigate(["home"]);
},
error: (error) => {
let errorMessage = this.errorHandler.handleApiError(error, 'Failed to submit application');
this.notificationService.showError(errorMessage);
console.error('Error submitting the application', error);
}
});
}
}

View File

@ -61,7 +61,6 @@ export class TermsConditionsComponent {
}
onAccept(): void {
this.changeInProgress = true;
this.carnetService.submitApplication(this.currentApplicationDetails?.headerid!).pipe(finalize(() => {
this.changeInProgress = false;

View File

@ -46,11 +46,11 @@
<div class="action-buttons">
<button mat-raised-button color="primary" type="button" (click)="addVisitCountry()"
class="icon-end">
*ngIf="!isViewMode" class="icon-end">
<mat-icon>keyboard_double_arrow_right</mat-icon>
<span> Add</span>
</button>
<button mat-raised-button type="button" (click)="removeVisitCountry()">
<button mat-raised-button type="button" (click)="removeVisitCountry()" *ngIf="!isViewMode">
<mat-icon>keyboard_double_arrow_left</mat-icon>
<span> Remove</span>
</button>
@ -101,11 +101,11 @@
<div class="action-buttons">
<button mat-raised-button color="primary" type="button" (click)="addTransitCountry()"
class="icon-end">
*ngIf="!isViewMode" class="icon-end">
<mat-icon>keyboard_double_arrow_right</mat-icon>
<span> Add</span>
</button>
<button mat-raised-button type="button" (click)="removeTransitCountry()">
<button mat-raised-button type="button" (click)="removeTransitCountry()" *ngIf="!isViewMode">
<mat-icon>keyboard_double_arrow_left</mat-icon>
<span> Remove</span>
</button>
@ -142,7 +142,7 @@
</div>
</div>
<button mat-raised-button color="primary" type="submit" [disabled]="changeInProgress">
<button mat-raised-button color="primary" type="submit" *ngIf="!isViewMode" [disabled]="changeInProgress">
Save
</button>
</div>

View File

@ -19,6 +19,8 @@ import { ConfirmDialogComponent } from '../../shared/components/confirm-dialog/c
})
export class TravelPlanComponent {
@Input() headerid: number = 0;
@Input() isViewMode = false;
@Output() completed = new EventEmitter<boolean>();
private fb = inject(FormBuilder);

View File

@ -0,0 +1,42 @@
<div class="carnet-action-buttons">
<button mat-button (click)="accordion().openAll()">Expand All</button>
<button mat-button (click)="accordion().closeAll()">Collapse All</button>
</div>
<mat-accordion class="carnet-headers-align" multi>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title> Application Name </mat-panel-title>
</mat-expansion-panel-header>
<app-application [isViewMode]="isViewMode" [applicationName]="applicationName">
</app-application>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title> Holder Selection </mat-panel-title>
</mat-expansion-panel-header>
<app-holder [headerid]="headerid" [isViewMode]="isViewMode">
</app-holder>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title> Goods Section </mat-panel-title>
</mat-expansion-panel-header>
<app-goods [headerid]="headerid" [isViewMode]="isViewMode" [userPreferences]="userPreferences">
</app-goods>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title> Travel Plan </mat-panel-title>
</mat-expansion-panel-header>
<app-travel-plan [headerid]="headerid" [isViewMode]="isViewMode"></app-travel-plan>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title> Shipping & Payment </mat-panel-title>
</mat-expansion-panel-header>
<app-shipping [headerid]="headerid" [isViewMode]="isViewMode">
</app-shipping>
</mat-expansion-panel>
</mat-accordion>

View File

@ -0,0 +1,8 @@
.carnet-headers-align .mat-expansion-panel-header-description {
justify-content: space-between;
align-items: center;
}
.carnet-headers-align .mat-mdc-form-field+.mat-mdc-form-field {
margin-left: 8px;
}

View File

@ -0,0 +1,46 @@
import { afterNextRender, Component, inject, viewChild } from '@angular/core';
import { AngularMaterialModule } from '../../shared/module/angular-material.module';
import { MatAccordion } from '@angular/material/expansion';
import { UserPreferences } from '../../core/models/user-preference';
import { CommonModule } from '@angular/common';
import { ActivatedRoute } from '@angular/router';
import { UserPreferencesService } from '../../core/services/user-preference.service';
import { ReactiveFormsModule } from '@angular/forms';
import { ApplicationComponent } from '../application/application.component';
import { GoodsComponent } from '../goods/goods.component';
import { HolderComponent } from '../holder/holder.component';
import { ShippingComponent } from '../shipping/shipping.component';
import { TravelPlanComponent } from '../travel-plan/travel-plan.component';
@Component({
selector: 'app-view-carnet',
imports: [AngularMaterialModule, CommonModule, ReactiveFormsModule,
ApplicationComponent, HolderComponent, GoodsComponent, TravelPlanComponent, ShippingComponent],
templateUrl: './view-carnet.component.html',
styleUrl: './view-carnet.component.scss'
})
export class ViewCarnetComponent {
accordion = viewChild.required(MatAccordion);
isViewMode = true;
headerid: number = 0;
applicationName: string = '';
userPreferences: UserPreferences;
private route = inject(ActivatedRoute);
constructor(userPrefenceService: UserPreferencesService) {
this.userPreferences = userPrefenceService.getPreferences();
afterNextRender(() => {
// Open all panels
this.accordion().openAll();
});
}
ngOnInit(): void {
const idParam = this.route.snapshot.paramMap.get('headerid');
this.headerid = idParam ? parseInt(idParam, 10) : 0;
this.applicationName = this.route.snapshot.queryParamMap.get('applicationname') || '';
}
}

View File

@ -1,5 +1,6 @@
export interface Holder {
holderid: number;
locationid?: number;
holderName: string;
dbaName?: string | null;
holderNumber: string;

View File

@ -45,4 +45,15 @@ export class CarnetService {
return this.http.post<any>(`${this.apiUrl}/${this.apiDb}/TransmitApplicationtoProcess`, appData);
}
processApplication(headerid: number): Observable<any> {
let appData = {
// P_SPID: this.userService.getUserSpid(),
P_USERID: this.userService.getUser(),
P_HEADERID: headerid
}
return this.http.post<any>(`${this.apiUrl}/${this.apiDb}//ProcessCarnet`, appData);
}
}

View File

@ -23,10 +23,11 @@ export class HolderService {
private mapToHolder(holder: any): Holder {
return {
holderid: holder.HOLDERID,
locationid: holder.LOCATIONID,
holderNumber: holder.HOLDERNO,
holderType: holder.HOLDERTYPE,
uscibMember: holder.USCIBMEMBERFLAG === 'Y',
// govAgency: holder.GOVAGENCYFLAG === 'Y',
// govAgency: holder.GOVAGENCYFLAG === 'Y',
holderName: holder.HOLDERNAME,
//NAMEQUALIFIER: holder.NAMEQUALIFIER || null,
dbaName: holder.ADDLNAME || null,

View File

@ -1,11 +1,12 @@
import { inject, Injectable } from '@angular/core';
import { environment } from '../../../../environments/environment';
import { HttpClient } from '@angular/common/http';
import { filter, map, Observable } from 'rxjs';
import { filter, map, Observable, of } from 'rxjs';
import { UserService } from '../common/user.service';
import { Shipping } from '../../models/carnet/shipping';
import { ShippingContact } from '../../models/carnet/shipping-contact';
import { ShippingAddress } from '../../models/carnet/shipping-address';
import { Holder } from '../../models/carnet/holder';
@Injectable({
providedIn: 'root'
@ -75,7 +76,7 @@ export class ShippingService {
P_CUSTCOURIERNO: shippingData.courierAccount,
P_PAYMENTMETHOD: shippingData.paymentMethod,
// P_BONDPROTECTION: shippingData.needsBond ? 'Y' : 'N',
// P_BONDPROTECTION: shippingData.needsBond ? 'Y' : 'N',
P_INSPROTECTION: shippingData.needsInsurance ? 'Y' : 'N',
P_LDIPROTECTION: shippingData.needsLostDocProtection ? 'Y' : 'N',
P_FORMOFSECURITY: shippingData.formOfSecurity,
@ -137,21 +138,20 @@ export class ShippingService {
map(response => this.mapToAddress(response?.[0])));
}
getHolderAddressById(id: number): ShippingAddress | any {
return this.http.get<any[]>(`${this.apiUrl}/${this.apiDb}/GetHolderRecord/${this.userService.getUserSpid()}/${id}`).pipe(
map(response => this.mapToAddress(response)));
getHolderAddress(holder: Holder): ShippingAddress | any {
return of(this.mapToAddress(holder));
}
private mapToAddress(address: any): ShippingAddress {
return {
companyName: address.NAMEOF ?? address.HOLDERNAME,
addressid: address.LOCATIONID ?? address.LOCATIONID,
address1: address.ADDRESS1,
address2: address.ADDRESS2,
city: address.CITY,
state: address.STATE,
zip: address.ZIP,
country: address.COUNTRY
companyName: address.NAMEOF ?? address.holderName,
addressid: address.LOCATIONID ?? address.locationid,
address1: address.ADDRESS1 ?? address.address1,
address2: address.ADDRESS2 ?? address.address2,
city: address.CITY ?? address.city,
state: address.STATE ?? address.state,
zip: address.ZIP ?? address.zip,
country: address.COUNTRY ?? address.country
};
}
}

View File

@ -22,7 +22,7 @@
Clear Search
</button>
<button mat-raised-button color="primary" (click)="addNewHolder()">
<button mat-raised-button color="primary" *ngIf="!isViewMode" (click)="addNewHolder()">
<mat-icon>add</mat-icon>
Add New Holder
</button>
@ -78,20 +78,21 @@
<div class="actions-icons">
<mat-radio-button matTooltip="Select Holder" class="selectHolder" [value]="holder.holderid"
[checked]="selectedHolderId === holder.holderid" (change)="onHolderSelection(holder)"
aria-label="Select row" [hidden]="holder.isInactive">
[checked]="selectedHolderId === holder.holderid" *ngIf="!isViewMode"
(change)="onHolderSelection(holder)" aria-label="Select row" [hidden]="holder.isInactive">
</mat-radio-button>
<button mat-icon-button color="primary" (click)="onEdit(holder.holderid)" matTooltip="Edit">
<button mat-icon-button color="primary" *ngIf="!isViewMode" (click)="onEdit(holder.holderid)"
matTooltip="Edit">
<mat-icon>edit</mat-icon>
</button>
<button mat-icon-button color="warn" *ngIf="!holder.isInactive" matTooltip="Inactivate"
(click)="inactivateHolder(holder.holderid)">
<button mat-icon-button color="warn" *ngIf="!holder.isInactive && !isViewMode"
matTooltip="Inactivate" (click)="inactivateHolder(holder.holderid)">
<mat-icon>delete</mat-icon>
</button>
<button mat-icon-button color="warn" *ngIf="holder.isInactive" matTooltip="Reactivate"
(click)="reactivateHolder(holder.holderid)">
<button mat-icon-button color="warn" *ngIf="holder.isInactive && !isViewMode"
matTooltip="Reactivate" (click)="reactivateHolder(holder.holderid)">
<mat-icon>loupe</mat-icon>
</button>
</div>
@ -117,7 +118,8 @@
</div>
<div class="form-actions">
<button mat-raised-button color="primary" type="submit" [disabled]="changeInProgress" (click)="saveHolderSelection()">
<button mat-raised-button color="primary" type="submit" [disabled]="changeInProgress" *ngIf="!isViewMode"
(click)="saveHolderSelection()">
{{ 'Save' }}
</button>
</div>

View File

@ -44,6 +44,7 @@ export class SearchHolderComponent {
this.dataSource.sort = value;
}
@Input() isViewMode = false;
@Input() headerid: number = 0;
@Input() selectedHolderId: number = 0;
@Input() applicationName: string = '';

View File

@ -1,5 +1,6 @@
export const environment = {
production: false,
apiUrl: 'https://dev.alphaomegainfosys.com/test-api',
apiDb: 'oracle'
apiDb: 'oracle',
appType: 'client',
};

View File

@ -1,5 +1,6 @@
export const environment = {
production: true,
apiUrl: 'https://dev.alphaomegainfosys.com/test-api',
apiDb: 'oracle'
apiDb: 'oracle',
appType: 'client',
};