Browse Source

Add SPLIT order type

pull/3211/head
Nicolas Fedor 1 year ago
parent
commit
207d2bc52d
  1. 58
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
  2. 24
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
  3. 1
      libs/ui/src/lib/i18n.ts
  4. 2
      prisma/migrations/20240329190053_added_split_to_order_type/migration.sql
  5. 1
      prisma/schema.prisma

58
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts

@ -279,7 +279,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
if (this.activityForm.controls['searchSymbol'].invalid) {
this.data.activity.SymbolProfile = null;
} else if (
['BUY', 'DIVIDEND', 'SELL'].includes(
['BUY', 'DIVIDEND', 'SELL', 'SPLIT'].includes(
this.activityForm.controls['type'].value
)
) {
@ -394,6 +394,62 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
this.activityForm.controls['updateAccountBalance'].disable();
this.activityForm.controls['updateAccountBalance'].setValue(false);
}
} else if (type === 'SPLIT') {
this.activityForm.controls['currency'].removeValidators(
Validators.required
);
this.activityForm.controls['currency'].updateValueAndValidity();
this.activityForm.controls['currencyOfFee'].removeValidators(
Validators.required
);
this.activityForm.controls['currencyOfFee'].updateValueAndValidity();
this.activityForm.controls['currencyOfUnitPrice'].removeValidators(
Validators.required
);
this.activityForm.controls[
'currencyOfUnitPrice'
].updateValueAndValidity();
this.activityForm.controls['fee'].removeValidators(
Validators.required
);
this.activityForm.controls['fee'].updateValueAndValidity();
this.activityForm.controls['feeInCustomCurrency'].removeValidators(
Validators.required
);
this.activityForm.controls[
'feeInCustomCurrency'
].updateValueAndValidity();
// this.activityForm.controls['searchSymbol'].removeValidators(
// Validators.required
// );
// this.activityForm.controls['searchSymbol'].updateValueAndValidity();
this.activityForm.controls['unitPrice'].removeValidators(
Validators.required
);
this.activityForm.controls['unitPrice'].updateValueAndValidity();
this.activityForm.controls[
'unitPriceInCustomCurrency'
].removeValidators(Validators.required);
this.activityForm.controls[
'unitPriceInCustomCurrency'
].updateValueAndValidity();
// this.activityForm.controls['dataSource'].removeValidators(
// Validators.required
// );
// this.activityForm.controls['dataSource'].updateValueAndValidity();
this.activityForm.controls['quantity'].setValue(1);
this.activityForm.controls['updateAccountBalance'].disable();
this.activityForm.controls['updateAccountBalance'].setValue(false);
} else {
this.activityForm.controls['accountId'].setValidators(
Validators.required

24
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html

@ -70,6 +70,14 @@
>Luxury items, real estate, private companies</small
>
</mat-option>
<mat-option value="SPLIT">
<span
><b>{{ typesTranslationMap['SPLIT'] }}</b></span
>
<small class="d-block line-height-1 text-muted text-nowrap" i18n
>Forward split, reverse split</small
>
</mat-option>
</mat-select>
</mat-form-field>
</div>
@ -180,13 +188,22 @@
}"
>
<mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Quantity</mat-label>
<mat-label
><ng-container [ngSwitch]="activityForm.controls['type']?.value">
<ng-container *ngSwitchCase="'SPLIT'" i18n>Ratio</ng-container>
<ng-container *ngSwitchDefault i18n>Quantity</ng-container>
</ng-container>
</mat-label>
<input formControlName="quantity" matInput type="number" />
</mat-form-field>
</div>
<div
class="mb-3"
[ngClass]="{ 'd-none': activityForm.controls['type']?.value === 'FEE' }"
[ngClass]="{
'd-none':
activityForm.controls['type']?.value === 'FEE' ||
activityForm.controls['type']?.value === 'SPLIT'
}"
>
<div class="align-items-start d-flex">
<mat-form-field appearance="outline" class="w-100">
@ -279,7 +296,8 @@
'd-none':
activityForm.controls['type']?.value === 'INTEREST' ||
activityForm.controls['type']?.value === 'ITEM' ||
activityForm.controls['type']?.value === 'LIABILITY'
activityForm.controls['type']?.value === 'LIABILITY' ||
activityForm.controls['type']?.value === 'SPLIT'
}"
>
<mat-form-field appearance="outline" class="w-100">

1
libs/ui/src/lib/i18n.ts

@ -34,6 +34,7 @@ const locales = {
ITEM: $localize`Valuable`,
LIABILITY: $localize`Liability`,
SELL: $localize`Sell`,
SPLIT: $localize`Stock Split`,
// AssetClass (enum)
CASH: $localize`Cash`,

2
prisma/migrations/20240329190053_added_split_to_order_type/migration.sql

@ -0,0 +1,2 @@
-- AlterEnum
ALTER TYPE "Type" ADD VALUE 'SPLIT';

1
prisma/schema.prisma

@ -301,6 +301,7 @@ enum Type {
ITEM
LIABILITY
SELL
SPLIT
}
enum ViewMode {

Loading…
Cancel
Save