Browse Source

feat(admin-ui): Implement default TaxCategory support

Relates to #566
Michael Bromley 5 years ago
parent
commit
90ed7c487c

+ 13 - 13
packages/admin-ui/i18n-coverage.json

@@ -1,49 +1,49 @@
 {
-  "generatedOn": "2021-02-01T13:23:30.145Z",
-  "lastCommit": "56c39f8ada2711dd731de4543e48358d24212b3f",
+  "generatedOn": "2021-02-01T20:16:12.347Z",
+  "lastCommit": "7eb21d16d0c17f87e9cc267a024b937c2e4deefa",
   "translationStatus": {
     "cs": {
-      "tokenCount": 767,
+      "tokenCount": 768,
       "translatedCount": 753,
       "percentage": 98
     },
     "de": {
-      "tokenCount": 767,
+      "tokenCount": 768,
       "translatedCount": 594,
       "percentage": 77
     },
     "en": {
-      "tokenCount": 767,
-      "translatedCount": 764,
+      "tokenCount": 768,
+      "translatedCount": 767,
       "percentage": 100
     },
     "es": {
-      "tokenCount": 767,
+      "tokenCount": 768,
       "translatedCount": 456,
       "percentage": 59
     },
     "fr": {
-      "tokenCount": 767,
+      "tokenCount": 768,
       "translatedCount": 690,
       "percentage": 90
     },
     "pl": {
-      "tokenCount": 767,
+      "tokenCount": 768,
       "translatedCount": 549,
-      "percentage": 72
+      "percentage": 71
     },
     "pt_BR": {
-      "tokenCount": 767,
+      "tokenCount": 768,
       "translatedCount": 749,
       "percentage": 98
     },
     "zh_Hans": {
-      "tokenCount": 767,
+      "tokenCount": 768,
       "translatedCount": 531,
       "percentage": 69
     },
     "zh_Hant": {
-      "tokenCount": 767,
+      "tokenCount": 768,
       "translatedCount": 531,
       "percentage": 69
     }

+ 4 - 1
packages/admin-ui/src/lib/core/src/common/generated-types.ts

@@ -2418,11 +2418,13 @@ export type UpdateTagInput = {
 
 export type CreateTaxCategoryInput = {
   name: Scalars['String'];
+  isDefault?: Maybe<Scalars['Boolean']>;
 };
 
 export type UpdateTaxCategoryInput = {
   id: Scalars['ID'];
   name?: Maybe<Scalars['String']>;
+  isDefault?: Maybe<Scalars['Boolean']>;
 };
 
 export type CreateTaxRateInput = {
@@ -4224,6 +4226,7 @@ export type TaxCategory = Node & {
   createdAt: Scalars['DateTime'];
   updatedAt: Scalars['DateTime'];
   name: Scalars['String'];
+  isDefault: Scalars['Boolean'];
 };
 
 export type TaxRate = Node & {
@@ -6925,7 +6928,7 @@ export type RemoveMembersFromZoneMutation = { removeMembersFromZone: (
 
 export type TaxCategoryFragment = (
   { __typename?: 'TaxCategory' }
-  & Pick<TaxCategory, 'id' | 'createdAt' | 'updatedAt' | 'name'>
+  & Pick<TaxCategory, 'id' | 'createdAt' | 'updatedAt' | 'name' | 'isDefault'>
 );
 
 export type GetTaxCategoriesQueryVariables = Exact<{ [key: string]: never; }>;

+ 1 - 0
packages/admin-ui/src/lib/core/src/data/definitions/settings-definitions.ts

@@ -175,6 +175,7 @@ export const TAX_CATEGORY_FRAGMENT = gql`
         createdAt
         updatedAt
         name
+        isDefault
     }
 `;
 

+ 11 - 0
packages/admin-ui/src/lib/settings/src/components/tax-category-detail/tax-category-detail.component.html

@@ -35,4 +35,15 @@
             [readonly]="!('UpdateSettings' | hasPermission)"
         />
     </vdr-form-field>
+    <vdr-form-field [label]="'common.default-tax-category' | translate" for="isDefault">
+        <clr-toggle-wrapper>
+            <input
+                type="checkbox"
+                clrToggle
+                id="isDefault"
+                [vdrDisabled]="!('UpdateSettings' | hasPermission)"
+                formControlName="isDefault"
+            />
+        </clr-toggle-wrapper>
+    </vdr-form-field>
 </form>

+ 11 - 8
packages/admin-ui/src/lib/settings/src/components/tax-category-detail/tax-category-detail.component.ts

@@ -22,7 +22,8 @@ import { mergeMap, take } from 'rxjs/operators';
     styleUrls: ['./tax-category-detail.component.scss'],
     changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class TaxCategoryDetailComponent extends BaseDetailComponent<TaxCategory.Fragment>
+export class TaxCategoryDetailComponent
+    extends BaseDetailComponent<TaxCategory.Fragment>
     implements OnInit, OnDestroy {
     taxCategory$: Observable<TaxCategory.Fragment>;
     detailForm: FormGroup;
@@ -42,7 +43,7 @@ export class TaxCategoryDetailComponent extends BaseDetailComponent<TaxCategory.
         super(route, router, serverConfigService, dataService);
         this.detailForm = this.formBuilder.group({
             name: ['', Validators.required],
-            taxRate: [0, Validators.required],
+            isDefault: false,
         });
     }
 
@@ -64,9 +65,9 @@ export class TaxCategoryDetailComponent extends BaseDetailComponent<TaxCategory.
             return;
         }
         const formValue = this.detailForm.value;
-        const input = { name: formValue.name } as CreateTaxCategoryInput;
+        const input = { name: formValue.name, isDefault: formValue.isDefault } as CreateTaxCategoryInput;
         this.dataService.settings.createTaxCategory(input).subscribe(
-            (data) => {
+            data => {
                 this.notificationService.success(_('common.notify-create-success'), {
                     entity: 'TaxCategory',
                 });
@@ -74,7 +75,7 @@ export class TaxCategoryDetailComponent extends BaseDetailComponent<TaxCategory.
                 this.changeDetector.markForCheck();
                 this.router.navigate(['../', data.createTaxCategory.id], { relativeTo: this.route });
             },
-            (err) => {
+            err => {
                 this.notificationService.error(_('common.notify-create-error'), {
                     entity: 'TaxCategory',
                 });
@@ -90,23 +91,24 @@ export class TaxCategoryDetailComponent extends BaseDetailComponent<TaxCategory.
         this.taxCategory$
             .pipe(
                 take(1),
-                mergeMap((taxCategory) => {
+                mergeMap(taxCategory => {
                     const input = {
                         id: taxCategory.id,
                         name: formValue.name,
+                        isDefault: formValue.isDefault,
                     } as UpdateTaxCategoryInput;
                     return this.dataService.settings.updateTaxCategory(input);
                 }),
             )
             .subscribe(
-                (data) => {
+                data => {
                     this.notificationService.success(_('common.notify-update-success'), {
                         entity: 'TaxCategory',
                     });
                     this.detailForm.markAsPristine();
                     this.changeDetector.markForCheck();
                 },
-                (err) => {
+                err => {
                     this.notificationService.error(_('common.notify-update-error'), {
                         entity: 'TaxCategory',
                     });
@@ -120,6 +122,7 @@ export class TaxCategoryDetailComponent extends BaseDetailComponent<TaxCategory.
     protected setFormValues(entity: TaxCategory.Fragment, languageCode: LanguageCode): void {
         this.detailForm.patchValue({
             name: entity.name,
+            isDefault: entity.isDefault,
         });
     }
 }

+ 4 - 0
packages/admin-ui/src/lib/settings/src/components/tax-category-list/tax-category-list.component.html

@@ -12,8 +12,12 @@
     <vdr-dt-column>{{ 'common.name' | translate }}</vdr-dt-column>
     <vdr-dt-column></vdr-dt-column>
     <vdr-dt-column></vdr-dt-column>
+    <vdr-dt-column></vdr-dt-column>
     <ng-template let-taxCategory="item">
         <td class="left align-middle">{{ taxCategory.name }}</td>
+        <td class="left align-middle">
+            <vdr-chip *ngIf="taxCategory.isDefault">{{ 'common.default-tax-category' | translate }}</vdr-chip>
+        </td>
         <td class="right align-middle">
             <vdr-table-row-action
                 iconShape="edit"

+ 1 - 0
packages/admin-ui/src/lib/settings/src/providers/routing/tax-category-resolver.ts

@@ -18,6 +18,7 @@ export class TaxCategoryResolver extends BaseEntityResolver<TaxCategory.Fragment
                 createdAt: '',
                 updatedAt: '',
                 name: '',
+                isDefault: false,
             },
             id => dataService.settings.getTaxCategory(id).mapStream(data => data.taxCategory),
         );

+ 1 - 0
packages/admin-ui/src/lib/static/i18n-messages/cs.json

@@ -179,6 +179,7 @@
     "custom-fields": "Extra pole",
     "default-channel": "Výchozí kanál",
     "default-language": "Výchozí jazyk",
+    "default-tax-category": "",
     "delete": "Smazat",
     "description": "Popis",
     "details": "Detaily",

+ 1 - 0
packages/admin-ui/src/lib/static/i18n-messages/de.json

@@ -179,6 +179,7 @@
     "custom-fields": "Benutzerdefinierte Felder",
     "default-channel": "Standardkanal",
     "default-language": "Standardsprache",
+    "default-tax-category": "",
     "delete": "Löschen",
     "description": "Beschreibung",
     "details": "",

+ 1 - 0
packages/admin-ui/src/lib/static/i18n-messages/en.json

@@ -179,6 +179,7 @@
     "custom-fields": "Custom fields",
     "default-channel": "Default channel",
     "default-language": "Default language",
+    "default-tax-category": "Default tax category",
     "delete": "Delete",
     "description": "Description",
     "details": "Details",

+ 1 - 0
packages/admin-ui/src/lib/static/i18n-messages/es.json

@@ -179,6 +179,7 @@
     "custom-fields": "Campos personalizados",
     "default-channel": "Canal de ventas por defecto",
     "default-language": "Idioma por defecto",
+    "default-tax-category": "",
     "delete": "Eliminar",
     "description": "Descripción",
     "details": "Detalles",

+ 1 - 0
packages/admin-ui/src/lib/static/i18n-messages/fr.json

@@ -179,6 +179,7 @@
     "custom-fields": "Champs personnalisés",
     "default-channel": "Canal par défaut",
     "default-language": "Langue par défaut",
+    "default-tax-category": "",
     "delete": "Supprimer",
     "description": "Description",
     "details": "Détails",

+ 1 - 0
packages/admin-ui/src/lib/static/i18n-messages/pl.json

@@ -179,6 +179,7 @@
     "custom-fields": "Dodatkowe pola",
     "default-channel": "Domyślny kanał",
     "default-language": "Domyślny jezyk",
+    "default-tax-category": "",
     "delete": "Usuń",
     "description": "Opis",
     "details": "",

+ 1 - 0
packages/admin-ui/src/lib/static/i18n-messages/pt_BR.json

@@ -179,6 +179,7 @@
     "custom-fields": "Campos customizados",
     "default-channel": "Canal padrão",
     "default-language": "Idioma padrão",
+    "default-tax-category": "",
     "delete": "Excluir",
     "description": "Descrição",
     "details": "Detalhes",

+ 1 - 0
packages/admin-ui/src/lib/static/i18n-messages/zh_Hans.json

@@ -179,6 +179,7 @@
     "custom-fields": "客户化字段",
     "default-channel": "默认销售渠道",
     "default-language": "",
+    "default-tax-category": "",
     "delete": "删除",
     "description": "描述",
     "details": "",

+ 1 - 0
packages/admin-ui/src/lib/static/i18n-messages/zh_Hant.json

@@ -179,6 +179,7 @@
     "custom-fields": "客戶自訂欄位",
     "default-channel": "默認渠道",
     "default-language": "",
+    "default-tax-category": "",
     "delete": "移除",
     "description": "描述",
     "details": "",