|  |  | @ -148,13 +148,14 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  |       .subscribe(async () => { | 
			
		
	
		
			
				
					|  |  |  |         let exchangeRateOfUnitPrice = 1; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['feeInCustomCurrency'].setErrors(null); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['unitPriceInCustomCurrency'].setErrors(null); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('feeInCustomCurrency').setErrors(null); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('unitPriceInCustomCurrency').setErrors(null); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         const currency = this.activityForm.controls['currency'].value; | 
			
		
	
		
			
				
					|  |  |  |         const currencyOfUnitPrice = | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['currencyOfUnitPrice'].value; | 
			
		
	
		
			
				
					|  |  |  |         const date = this.activityForm.controls['date'].value; | 
			
		
	
		
			
				
					|  |  |  |         const currency = this.activityForm.get('currency').value; | 
			
		
	
		
			
				
					|  |  |  |         const currencyOfUnitPrice = this.activityForm.get( | 
			
		
	
		
			
				
					|  |  |  |           'currencyOfUnitPrice' | 
			
		
	
		
			
				
					|  |  |  |         ).value; | 
			
		
	
		
			
				
					|  |  |  |         const date = this.activityForm.get('date').value; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         if ( | 
			
		
	
		
			
				
					|  |  |  |           currency && | 
			
		
	
	
		
			
				
					|  |  | @ -174,53 +175,49 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             exchangeRateOfUnitPrice = marketPrice; | 
			
		
	
		
			
				
					|  |  |  |           } catch { | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['unitPriceInCustomCurrency'].setErrors({ | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('unitPriceInCustomCurrency').setErrors({ | 
			
		
	
		
			
				
					|  |  |  |               invalid: true | 
			
		
	
		
			
				
					|  |  |  |             }); | 
			
		
	
		
			
				
					|  |  |  |           } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         const feeInCustomCurrency = | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['feeInCustomCurrency'].value * | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('feeInCustomCurrency').value * | 
			
		
	
		
			
				
					|  |  |  |           exchangeRateOfUnitPrice; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         const unitPriceInCustomCurrency = | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['unitPriceInCustomCurrency'].value * | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('unitPriceInCustomCurrency').value * | 
			
		
	
		
			
				
					|  |  |  |           exchangeRateOfUnitPrice; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['fee'].setValue(feeInCustomCurrency, { | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('fee').setValue(feeInCustomCurrency, { | 
			
		
	
		
			
				
					|  |  |  |           emitEvent: false | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['unitPrice'].setValue( | 
			
		
	
		
			
				
					|  |  |  |           unitPriceInCustomCurrency, | 
			
		
	
		
			
				
					|  |  |  |           { | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('unitPrice').setValue(unitPriceInCustomCurrency, { | 
			
		
	
		
			
				
					|  |  |  |           emitEvent: false | 
			
		
	
		
			
				
					|  |  |  |           } | 
			
		
	
		
			
				
					|  |  |  |         ); | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         if ( | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['type'].value === 'BUY' || | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['type'].value === 'FEE' || | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['type'].value === 'ITEM' | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('type').value === 'BUY' || | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('type').value === 'FEE' || | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('type').value === 'ITEM' | 
			
		
	
		
			
				
					|  |  |  |         ) { | 
			
		
	
		
			
				
					|  |  |  |           this.total = | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['quantity'].value * | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.controls['unitPrice'].value + | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.controls['fee'].value ?? 0; | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('quantity').value * | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.get('unitPrice').value + | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.get('fee').value ?? 0; | 
			
		
	
		
			
				
					|  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |           this.total = | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['quantity'].value * | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.controls['unitPrice'].value - | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.controls['fee'].value ?? 0; | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('quantity').value * | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.get('unitPrice').value - | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.get('fee').value ?? 0; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         this.changeDetectorRef.markForCheck(); | 
			
		
	
		
			
				
					|  |  |  |       }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.controls['accountId'].valueChanges.subscribe( | 
			
		
	
		
			
				
					|  |  |  |       (accountId) => { | 
			
		
	
		
			
				
					|  |  |  |         const type = this.activityForm.controls['type'].value; | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.get('accountId').valueChanges.subscribe((accountId) => { | 
			
		
	
		
			
				
					|  |  |  |       const type = this.activityForm.get('type').value; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |       if ( | 
			
		
	
		
			
				
					|  |  |  |         type === 'FEE' || | 
			
		
	
	
		
			
				
					|  |  | @ -233,45 +230,42 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  |             return id === accountId; | 
			
		
	
		
			
				
					|  |  |  |           })?.currency ?? this.data.user.settings.baseCurrency; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['currency'].setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['currencyOfUnitPrice'].setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('currency').setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('currencyOfUnitPrice').setValue(currency); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         if (['FEE', 'INTEREST'].includes(type)) { | 
			
		
	
		
			
				
					|  |  |  |             if (this.activityForm.controls['accountId'].value) { | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.controls['updateAccountBalance'].enable(); | 
			
		
	
		
			
				
					|  |  |  |           if (this.activityForm.get('accountId').value) { | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('updateAccountBalance').enable(); | 
			
		
	
		
			
				
					|  |  |  |           } else { | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.controls['updateAccountBalance'].disable(); | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.controls['updateAccountBalance'].setValue( | 
			
		
	
		
			
				
					|  |  |  |                 false | 
			
		
	
		
			
				
					|  |  |  |               ); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('updateAccountBalance').disable(); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('updateAccountBalance').setValue(false); | 
			
		
	
		
			
				
					|  |  |  |           } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  |     }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.controls['date'].valueChanges.subscribe(() => { | 
			
		
	
		
			
				
					|  |  |  |       if (isToday(this.activityForm.controls['date'].value)) { | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['updateAccountBalance'].enable(); | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.get('date').valueChanges.subscribe(() => { | 
			
		
	
		
			
				
					|  |  |  |       if (isToday(this.activityForm.get('date').value)) { | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('updateAccountBalance').enable(); | 
			
		
	
		
			
				
					|  |  |  |       } else { | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['updateAccountBalance'].disable(); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['updateAccountBalance'].setValue(false); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('updateAccountBalance').disable(); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('updateAccountBalance').setValue(false); | 
			
		
	
		
			
				
					|  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |       this.changeDetectorRef.markForCheck(); | 
			
		
	
		
			
				
					|  |  |  |     }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.controls['searchSymbol'].valueChanges.subscribe(() => { | 
			
		
	
		
			
				
					|  |  |  |       if (this.activityForm.controls['searchSymbol'].invalid) { | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.get('searchSymbol').valueChanges.subscribe(() => { | 
			
		
	
		
			
				
					|  |  |  |       if (this.activityForm.get('searchSymbol').invalid) { | 
			
		
	
		
			
				
					|  |  |  |         this.data.activity.SymbolProfile = null; | 
			
		
	
		
			
				
					|  |  |  |       } else if ( | 
			
		
	
		
			
				
					|  |  |  |         ['BUY', 'DIVIDEND', 'SELL'].includes( | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['type'].value | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('type').value | 
			
		
	
		
			
				
					|  |  |  |         ) | 
			
		
	
		
			
				
					|  |  |  |       ) { | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['dataSource'].setValue( | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['searchSymbol'].value.dataSource | 
			
		
	
		
			
				
					|  |  |  |         ); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm | 
			
		
	
		
			
				
					|  |  |  |           .get('dataSource') | 
			
		
	
		
			
				
					|  |  |  |           .setValue(this.activityForm.get('searchSymbol').value.dataSource); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         this.updateSymbol(); | 
			
		
	
		
			
				
					|  |  |  |       } | 
			
		
	
	
		
			
				
					|  |  | @ -282,130 +276,127 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  |     this.filteredTagsObservable = this.activityForm.controls[ | 
			
		
	
		
			
				
					|  |  |  |       'tags' | 
			
		
	
		
			
				
					|  |  |  |     ].valueChanges.pipe( | 
			
		
	
		
			
				
					|  |  |  |       startWith(this.activityForm.controls['tags'].value), | 
			
		
	
		
			
				
					|  |  |  |       startWith(this.activityForm.get('tags').value), | 
			
		
	
		
			
				
					|  |  |  |       map((aTags: Tag[] | null) => { | 
			
		
	
		
			
				
					|  |  |  |         return aTags ? this.filterTags(aTags) : this.tags.slice(); | 
			
		
	
		
			
				
					|  |  |  |       }) | 
			
		
	
		
			
				
					|  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.controls['type'].valueChanges | 
			
		
	
		
			
				
					|  |  |  |       .pipe(takeUntil(this.unsubscribeSubject)) | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm | 
			
		
	
		
			
				
					|  |  |  |       .get('type') | 
			
		
	
		
			
				
					|  |  |  |       .valueChanges.pipe(takeUntil(this.unsubscribeSubject)) | 
			
		
	
		
			
				
					|  |  |  |       .subscribe((type: Type) => { | 
			
		
	
		
			
				
					|  |  |  |         if (type === 'ITEM') { | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['accountId'].removeValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['accountId'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm | 
			
		
	
		
			
				
					|  |  |  |             .get('accountId') | 
			
		
	
		
			
				
					|  |  |  |             .removeValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('accountId').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           const currency = | 
			
		
	
		
			
				
					|  |  |  |             this.data.accounts.find(({ id }) => { | 
			
		
	
		
			
				
					|  |  |  |               return id === this.activityForm.controls['accountId'].value; | 
			
		
	
		
			
				
					|  |  |  |               return id === this.activityForm.get('accountId').value; | 
			
		
	
		
			
				
					|  |  |  |             })?.currency ?? this.data.user.settings.baseCurrency; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['currency'].setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['currencyOfUnitPrice'].setValue(currency); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['dataSource'].removeValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['dataSource'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['feeInCustomCurrency'].reset(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['name'].setValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['name'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['quantity'].setValue(1); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['searchSymbol'].removeValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['searchSymbol'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['updateAccountBalance'].disable(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['updateAccountBalance'].setValue(false); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('currency').setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('currencyOfUnitPrice').setValue(currency); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm | 
			
		
	
		
			
				
					|  |  |  |             .get('dataSource') | 
			
		
	
		
			
				
					|  |  |  |             .removeValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('dataSource').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('feeInCustomCurrency').reset(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('name').setValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('name').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('quantity').setValue(1); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm | 
			
		
	
		
			
				
					|  |  |  |             .get('searchSymbol') | 
			
		
	
		
			
				
					|  |  |  |             .removeValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('searchSymbol').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('updateAccountBalance').disable(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('updateAccountBalance').setValue(false); | 
			
		
	
		
			
				
					|  |  |  |         } else if ( | 
			
		
	
		
			
				
					|  |  |  |           type === 'FEE' || | 
			
		
	
		
			
				
					|  |  |  |           type === 'INTEREST' || | 
			
		
	
		
			
				
					|  |  |  |           type === 'LIABILITY' | 
			
		
	
		
			
				
					|  |  |  |         ) { | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['accountId'].removeValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['accountId'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm | 
			
		
	
		
			
				
					|  |  |  |             .get('accountId') | 
			
		
	
		
			
				
					|  |  |  |             .removeValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('accountId').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           const currency = | 
			
		
	
		
			
				
					|  |  |  |             this.data.accounts.find(({ id }) => { | 
			
		
	
		
			
				
					|  |  |  |               return id === this.activityForm.controls['accountId'].value; | 
			
		
	
		
			
				
					|  |  |  |               return id === this.activityForm.get('accountId').value; | 
			
		
	
		
			
				
					|  |  |  |             })?.currency ?? this.data.user.settings.baseCurrency; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['currency'].setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['currencyOfUnitPrice'].setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('currency').setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('currencyOfUnitPrice').setValue(currency); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['dataSource'].removeValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['dataSource'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm | 
			
		
	
		
			
				
					|  |  |  |             .get('dataSource') | 
			
		
	
		
			
				
					|  |  |  |             .removeValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('dataSource').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           if ( | 
			
		
	
		
			
				
					|  |  |  |             (type === 'FEE' && | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.controls['feeInCustomCurrency'].value === 0) || | 
			
		
	
		
			
				
					|  |  |  |               this.activityForm.get('feeInCustomCurrency').value === 0) || | 
			
		
	
		
			
				
					|  |  |  |             type === 'INTEREST' || | 
			
		
	
		
			
				
					|  |  |  |             type === 'LIABILITY' | 
			
		
	
		
			
				
					|  |  |  |           ) { | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['feeInCustomCurrency'].reset(); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('feeInCustomCurrency').reset(); | 
			
		
	
		
			
				
					|  |  |  |           } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['name'].setValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['name'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('name').setValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('name').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           if (type === 'FEE') { | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['quantity'].setValue(0); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('quantity').setValue(0); | 
			
		
	
		
			
				
					|  |  |  |           } else if (type === 'INTEREST' || type === 'LIABILITY') { | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['quantity'].setValue(1); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('quantity').setValue(1); | 
			
		
	
		
			
				
					|  |  |  |           } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['searchSymbol'].removeValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['searchSymbol'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm | 
			
		
	
		
			
				
					|  |  |  |             .get('searchSymbol') | 
			
		
	
		
			
				
					|  |  |  |             .removeValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('searchSymbol').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           if (type === 'FEE') { | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['unitPriceInCustomCurrency'].setValue(0); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('unitPriceInCustomCurrency').setValue(0); | 
			
		
	
		
			
				
					|  |  |  |           } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |           if ( | 
			
		
	
		
			
				
					|  |  |  |             ['FEE', 'INTEREST'].includes(type) && | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['accountId'].value | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('accountId').value | 
			
		
	
		
			
				
					|  |  |  |           ) { | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['updateAccountBalance'].enable(); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('updateAccountBalance').enable(); | 
			
		
	
		
			
				
					|  |  |  |           } else { | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['updateAccountBalance'].disable(); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.controls['updateAccountBalance'].setValue(false); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('updateAccountBalance').disable(); | 
			
		
	
		
			
				
					|  |  |  |             this.activityForm.get('updateAccountBalance').setValue(false); | 
			
		
	
		
			
				
					|  |  |  |           } | 
			
		
	
		
			
				
					|  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['accountId'].setValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['accountId'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['dataSource'].setValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['dataSource'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['name'].removeValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['name'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['searchSymbol'].setValidators( | 
			
		
	
		
			
				
					|  |  |  |             Validators.required | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['searchSymbol'].updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['updateAccountBalance'].enable(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('accountId').setValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('accountId').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm | 
			
		
	
		
			
				
					|  |  |  |             .get('dataSource') | 
			
		
	
		
			
				
					|  |  |  |             .setValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('dataSource').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('name').removeValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('name').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm | 
			
		
	
		
			
				
					|  |  |  |             .get('searchSymbol') | 
			
		
	
		
			
				
					|  |  |  |             .setValidators(Validators.required); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('searchSymbol').updateValueAndValidity(); | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('updateAccountBalance').enable(); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         this.changeDetectorRef.markForCheck(); | 
			
		
	
		
			
				
					|  |  |  |       }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.controls['type'].setValue(this.data.activity?.type); | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.get('type').setValue(this.data.activity?.type); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     if (this.data.activity?.id) { | 
			
		
	
		
			
				
					|  |  |  |       this.activityForm.controls['searchSymbol'].disable(); | 
			
		
	
		
			
				
					|  |  |  |       this.activityForm.controls['type'].disable(); | 
			
		
	
		
			
				
					|  |  |  |       this.activityForm.get('searchSymbol').disable(); | 
			
		
	
		
			
				
					|  |  |  |       this.activityForm.get('type').disable(); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     if (this.data.activity?.SymbolProfile?.symbol) { | 
			
		
	
	
		
			
				
					|  |  | @ -425,14 +416,14 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |   public applyCurrentMarketPrice() { | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.patchValue({ | 
			
		
	
		
			
				
					|  |  |  |       currencyOfUnitPrice: this.activityForm.controls['currency'].value, | 
			
		
	
		
			
				
					|  |  |  |       currencyOfUnitPrice: this.activityForm.get('currency').value, | 
			
		
	
		
			
				
					|  |  |  |       unitPriceInCustomCurrency: this.currentMarketPrice | 
			
		
	
		
			
				
					|  |  |  |     }); | 
			
		
	
		
			
				
					|  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |   public onAddTag(event: MatAutocompleteSelectedEvent) { | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.controls['tags'].setValue([ | 
			
		
	
		
			
				
					|  |  |  |       ...(this.activityForm.controls['tags'].value ?? []), | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.get('tags').setValue([ | 
			
		
	
		
			
				
					|  |  |  |       ...(this.activityForm.get('tags').value ?? []), | 
			
		
	
		
			
				
					|  |  |  |       this.tags.find(({ id }) => { | 
			
		
	
		
			
				
					|  |  |  |         return id === event.option.value; | 
			
		
	
		
			
				
					|  |  |  |       }) | 
			
		
	
	
		
			
				
					|  |  | @ -445,8 +436,8 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |   public onRemoveTag(aTag: Tag) { | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.controls['tags'].setValue( | 
			
		
	
		
			
				
					|  |  |  |       this.activityForm.controls['tags'].value.filter(({ id }) => { | 
			
		
	
		
			
				
					|  |  |  |     this.activityForm.get('tags').setValue( | 
			
		
	
		
			
				
					|  |  |  |       this.activityForm.get('tags').value.filter(({ id }) => { | 
			
		
	
		
			
				
					|  |  |  |         return id !== aTag.id; | 
			
		
	
		
			
				
					|  |  |  |       }) | 
			
		
	
		
			
				
					|  |  |  |     ); | 
			
		
	
	
		
			
				
					|  |  | @ -454,25 +445,24 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |   public async onSubmit() { | 
			
		
	
		
			
				
					|  |  |  |     const activity: CreateOrderDto | UpdateOrderDto = { | 
			
		
	
		
			
				
					|  |  |  |       accountId: this.activityForm.controls['accountId'].value, | 
			
		
	
		
			
				
					|  |  |  |       assetClass: this.activityForm.controls['assetClass'].value, | 
			
		
	
		
			
				
					|  |  |  |       assetSubClass: this.activityForm.controls['assetSubClass'].value, | 
			
		
	
		
			
				
					|  |  |  |       comment: this.activityForm.controls['comment'].value, | 
			
		
	
		
			
				
					|  |  |  |       currency: this.activityForm.controls['currency'].value, | 
			
		
	
		
			
				
					|  |  |  |       customCurrency: this.activityForm.controls['currencyOfUnitPrice'].value, | 
			
		
	
		
			
				
					|  |  |  |       date: this.activityForm.controls['date'].value, | 
			
		
	
		
			
				
					|  |  |  |       dataSource: this.activityForm.controls['dataSource'].value, | 
			
		
	
		
			
				
					|  |  |  |       fee: this.activityForm.controls['fee'].value, | 
			
		
	
		
			
				
					|  |  |  |       quantity: this.activityForm.controls['quantity'].value, | 
			
		
	
		
			
				
					|  |  |  |       accountId: this.activityForm.get('accountId').value, | 
			
		
	
		
			
				
					|  |  |  |       assetClass: this.activityForm.get('assetClass').value, | 
			
		
	
		
			
				
					|  |  |  |       assetSubClass: this.activityForm.get('assetSubClass').value, | 
			
		
	
		
			
				
					|  |  |  |       comment: this.activityForm.get('comment').value, | 
			
		
	
		
			
				
					|  |  |  |       currency: this.activityForm.get('currency').value, | 
			
		
	
		
			
				
					|  |  |  |       customCurrency: this.activityForm.get('currencyOfUnitPrice').value, | 
			
		
	
		
			
				
					|  |  |  |       date: this.activityForm.get('date').value, | 
			
		
	
		
			
				
					|  |  |  |       dataSource: this.activityForm.get('dataSource').value, | 
			
		
	
		
			
				
					|  |  |  |       fee: this.activityForm.get('fee').value, | 
			
		
	
		
			
				
					|  |  |  |       quantity: this.activityForm.get('quantity').value, | 
			
		
	
		
			
				
					|  |  |  |       symbol: | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['searchSymbol'].value?.symbol === | 
			
		
	
		
			
				
					|  |  |  |           undefined || | 
			
		
	
		
			
				
					|  |  |  |         isUUID(this.activityForm.controls['searchSymbol'].value?.symbol) | 
			
		
	
		
			
				
					|  |  |  |           ? this.activityForm.controls['name'].value | 
			
		
	
		
			
				
					|  |  |  |           : this.activityForm.controls['searchSymbol'].value.symbol, | 
			
		
	
		
			
				
					|  |  |  |       tags: this.activityForm.controls['tags'].value, | 
			
		
	
		
			
				
					|  |  |  |       type: this.activityForm.controls['type'].value, | 
			
		
	
		
			
				
					|  |  |  |       unitPrice: this.activityForm.controls['unitPrice'].value | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('searchSymbol').value?.symbol === undefined || | 
			
		
	
		
			
				
					|  |  |  |         isUUID(this.activityForm.get('searchSymbol').value?.symbol) | 
			
		
	
		
			
				
					|  |  |  |           ? this.activityForm.get('name').value | 
			
		
	
		
			
				
					|  |  |  |           : this.activityForm.get('searchSymbol').value.symbol, | 
			
		
	
		
			
				
					|  |  |  |       tags: this.activityForm.get('tags').value, | 
			
		
	
		
			
				
					|  |  |  |       type: this.activityForm.get('type').value, | 
			
		
	
		
			
				
					|  |  |  |       unitPrice: this.activityForm.get('unitPrice').value | 
			
		
	
		
			
				
					|  |  |  |     }; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     try { | 
			
		
	
	
		
			
				
					|  |  | @ -487,7 +477,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |       } else { | 
			
		
	
		
			
				
					|  |  |  |         (activity as CreateOrderDto).updateAccountBalance = | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.controls['updateAccountBalance'].value; | 
			
		
	
		
			
				
					|  |  |  |           this.activityForm.get('updateAccountBalance').value; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         await validateObjectForForm({ | 
			
		
	
		
			
				
					|  |  |  |           classDto: CreateOrderDto, | 
			
		
	
	
		
			
				
					|  |  | @ -524,8 +514,8 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     this.dataService | 
			
		
	
		
			
				
					|  |  |  |       .fetchSymbolItem({ | 
			
		
	
		
			
				
					|  |  |  |         dataSource: this.activityForm.controls['dataSource'].value, | 
			
		
	
		
			
				
					|  |  |  |         symbol: this.activityForm.controls['searchSymbol'].value.symbol | 
			
		
	
		
			
				
					|  |  |  |         dataSource: this.activityForm.get('dataSource').value, | 
			
		
	
		
			
				
					|  |  |  |         symbol: this.activityForm.get('searchSymbol').value.symbol | 
			
		
	
		
			
				
					|  |  |  |       }) | 
			
		
	
		
			
				
					|  |  |  |       .pipe( | 
			
		
	
		
			
				
					|  |  |  |         catchError(() => { | 
			
		
	
	
		
			
				
					|  |  | @ -540,9 +530,9 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { | 
			
		
	
		
			
				
					|  |  |  |         takeUntil(this.unsubscribeSubject) | 
			
		
	
		
			
				
					|  |  |  |       ) | 
			
		
	
		
			
				
					|  |  |  |       .subscribe(({ currency, dataSource, marketPrice }) => { | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['currency'].setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['currencyOfUnitPrice'].setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.controls['dataSource'].setValue(dataSource); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('currency').setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('currencyOfUnitPrice').setValue(currency); | 
			
		
	
		
			
				
					|  |  |  |         this.activityForm.get('dataSource').setValue(dataSource); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         this.currentMarketPrice = marketPrice; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | 
 |