From 8c84fa4ba217145ae01e38ab61baf2f4a45434de Mon Sep 17 00:00:00 2001 From: Claude ROSSI Date: Tue, 13 Apr 2021 17:43:27 +0200 Subject: [PATCH] billing settings reorg --- .../billing/settings-billing.component.ts | 23 ++++++++++------ .../stripe/settings-stripe.component.ts | 26 +++++++++--------- src/app/services/component.service.ts | 7 ++--- src/app/types/Setting.ts | 27 +++++++++---------- 4 files changed, 44 insertions(+), 39 deletions(-) diff --git a/src/app/pages/settings-integration/billing/settings-billing.component.ts b/src/app/pages/settings-integration/billing/settings-billing.component.ts index 1cfd2975ae..e7a6d8e81d 100644 --- a/src/app/pages/settings-integration/billing/settings-billing.component.ts +++ b/src/app/pages/settings-integration/billing/settings-billing.component.ts @@ -12,7 +12,7 @@ import { TableSyncBillingInvoicesAction } from '../../../shared/table/actions/in import { TableSyncBillingUsersAction } from '../../../shared/table/actions/users/table-sync-billing-users-action'; import { RestResponse } from '../../../types/GlobalType'; import { HTTPError } from '../../../types/HTTPError'; -import { BillingSettings, BillingSettingsType } from '../../../types/Setting'; +import { BillingSetting, BillingSettings, BillingSettingsType, StripeBillingSetting } from '../../../types/Setting'; import TenantComponents from '../../../types/TenantComponents'; import { Utils } from '../../../utils/Utils'; @@ -68,14 +68,21 @@ export class SettingsBillingComponent implements OnInit { }); } - public save(content: BillingSettings) { - // Stripe - if (content.stripe) { - this.billingSettings.type = BillingSettingsType.STRIPE; - this.billingSettings.stripe = content.stripe; - } else { - return; + public save(newSettings: any) { + if (!newSettings.stripe) { + return ; } + const { immediateBillingAllowed, periodicBillingAllowed, taxID } = newSettings.stripe; // TODO - ?? newSettings.billing? + const billing: BillingSetting = { + immediateBillingAllowed, periodicBillingAllowed, taxID + }; + const { url, publicKey, secretKey } = newSettings.stripe; + const stripe: StripeBillingSetting = { + url, publicKey, secretKey + }; + this.billingSettings.type = BillingSettingsType.STRIPE; + this.billingSettings.billing = billing; + this.billingSettings.stripe = stripe; // Save this.spinnerService.show(); this.componentService.saveBillingSettings(this.billingSettings).subscribe((response) => { diff --git a/src/app/pages/settings-integration/billing/stripe/settings-stripe.component.ts b/src/app/pages/settings-integration/billing/stripe/settings-stripe.component.ts index eba763018a..af55ea323c 100644 --- a/src/app/pages/settings-integration/billing/stripe/settings-stripe.component.ts +++ b/src/app/pages/settings-integration/billing/stripe/settings-stripe.component.ts @@ -20,7 +20,6 @@ export class SettingsStripeComponent implements OnInit, OnChanges { public publicKey!: AbstractControl; public immediateBillingAllowed!: AbstractControl; public periodicBillingAllowed!: AbstractControl; - public lastSynchronizedOn!: AbstractControl; public taxID!: AbstractControl; public taxes: BillingTax[] = []; @@ -50,7 +49,6 @@ export class SettingsStripeComponent implements OnInit, OnChanges { ), immediateBillingAllowed: new FormControl(''), periodicBillingAllowed: new FormControl(''), - lastSynchronizedOn: new FormControl(''), taxID: new FormControl('', Validators.compose([ // Validators.required, @@ -68,7 +66,6 @@ export class SettingsStripeComponent implements OnInit, OnChanges { this.publicKey = this.stripe.controls['publicKey']; this.immediateBillingAllowed = this.stripe.controls['immediateBillingAllowed']; this.periodicBillingAllowed = this.stripe.controls['periodicBillingAllowed']; - this.lastSynchronizedOn = this.stripe.controls['lastSynchronizedOn']; this.taxID = this.stripe.controls['taxID']; // Set data @@ -112,17 +109,18 @@ export class SettingsStripeComponent implements OnInit, OnChanges { private updateFormData() { if (this.stripe) { - // Set data - this.url.setValue(this.billingSettings.stripe.url ? this.billingSettings.stripe.url : ''); - this.secretKey.setValue(this.billingSettings.stripe.secretKey ? this.billingSettings.stripe.secretKey : ''); - this.publicKey.setValue(this.billingSettings.stripe.publicKey ? this.billingSettings.stripe.publicKey : ''); - this.immediateBillingAllowed.setValue(this.billingSettings.stripe.immediateBillingAllowed - ? this.billingSettings.stripe.immediateBillingAllowed : false); - this.periodicBillingAllowed.setValue(this.billingSettings.stripe.periodicBillingAllowed - ? this.billingSettings.stripe.periodicBillingAllowed : false); - this.lastSynchronizedOn.setValue(this.billingSettings.stripe.lastSynchronizedOn - ? this.billingSettings.stripe.lastSynchronizedOn : ''); - this.taxID.setValue(this.billingSettings.stripe.taxID ? this.billingSettings.stripe.taxID : ''); + const stripeSetting = this.billingSettings.stripe; + if ( stripeSetting ) { + this.url.setValue(stripeSetting.url); + this.secretKey.setValue(stripeSetting.secretKey); + this.publicKey.setValue(stripeSetting.publicKey); + } + const billingSetting = this.billingSettings.billing; + if ( billingSetting ) { + this.immediateBillingAllowed.setValue(!!billingSetting.immediateBillingAllowed); + this.periodicBillingAllowed.setValue(!!billingSetting.periodicBillingAllowed); + this.taxID.setValue(billingSetting.taxID); + } } } } diff --git a/src/app/services/component.service.ts b/src/app/services/component.service.ts index e7c41f07d1..22346e8a97 100644 --- a/src/app/services/component.service.ts +++ b/src/app/services/component.service.ts @@ -107,9 +107,6 @@ export class ComponentService { if (settings.type === BillingSettingsType.STRIPE) { settingsToSave.sensitiveData = ['content.stripe.secretKey']; } - // Set some temporary defaults - settingsToSave.content.stripe.noCardAllowed = true; - settingsToSave.content.stripe.advanceBillingAllowed = false; // Delete IDS delete settingsToSave.content.id; delete settingsToSave.content.identifier; @@ -282,6 +279,10 @@ export class ComponentService { // ID billingSettings.id = settings.id; billingSettings.sensitiveData = settings.sensitiveData; + // billing common properties + if (config.billing) { + billingSettings.billing = config.billing; + } // Stripe if (config.stripe) { billingSettings.type = BillingSettingsType.STRIPE; diff --git a/src/app/types/Setting.ts b/src/app/types/Setting.ts index 89e4cafc5d..95f621895f 100644 --- a/src/app/types/Setting.ts +++ b/src/app/types/Setting.ts @@ -32,6 +32,7 @@ export interface SettingDBContent { oicp?: OicpSetting; simple?: SimplePricingSetting; convergentCharging?: ConvergentChargingPricingSetting; + billing?: BillingSetting; stripe?: StripeBillingSetting; sac?: SacAnalyticsSetting; links?: SettingLink[]; @@ -195,30 +196,28 @@ export interface ConcurRefundSetting { reportName: string; } -export enum BillingSettingsType { - STRIPE = 'stripe', -} - -export interface BillingSettings extends Setting { +export interface BillingSettings extends Setting{ identifier: TenantComponents.BILLING; type: BillingSettingsType; - stripe: StripeBillingSetting; + billing: BillingSetting; + stripe?: StripeBillingSetting; } export interface BillingSetting { - lastSynchronizedOn?: Date; + immediateBillingAllowed: boolean; + periodicBillingAllowed: boolean; + taxID: string; + usersLastSynchronizedOn?: Date; } -export interface StripeBillingSetting extends BillingSetting { +export interface StripeBillingSetting { url: string; secretKey: string; publicKey: string; - noCardAllowed: boolean; - immediateBillingAllowed: boolean; - periodicBillingAllowed: boolean; - advanceBillingAllowed: boolean; - currency: string; - taxID: string; +} + +export enum BillingSettingsType { + STRIPE = 'stripe', } export enum AssetSettingsType {