@things-factory/tax-invoice 6.2.142 → 6.2.144

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/tax-invoice",
3
- "version": "6.2.142",
3
+ "version": "6.2.144",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -34,5 +34,5 @@
34
34
  "@things-factory/export-ui-excel": "^6.2.139",
35
35
  "@things-factory/shell": "^6.2.139"
36
36
  },
37
- "gitHead": "78bb2ad1a9d851be0c6ea0e176ccbab61c3b6cc8"
37
+ "gitHead": "43fe1dab4ba9c08c39a24bb9afeb4aca12a21c27"
38
38
  }
@@ -4,7 +4,7 @@ import { In } from 'typeorm'
4
4
  import { TaxInvoiceApi } from './tax-invoice-api'
5
5
  import { TaxInvoiceApiPatch, TaxInvoiceSend } from './tax-invoice-api-type'
6
6
  import { TaxInvoiceItem } from '../tax-invoice-item/tax-invoice-item'
7
- import { Category, TaxInvoice } from '../tax-invoice/tax-invoice'
7
+ import { Category, InvoiceType, TaxInvoice } from '../tax-invoice/tax-invoice'
8
8
  import { sendTaxInvoiceByUniposApi } from '../unipost-api/tax-invoice-send'
9
9
  import { parseTaxInvoiceByUnipostFormat } from '../tax-invoice/tax-invoice-util'
10
10
 
@@ -82,16 +82,21 @@ export class TaxInvoiceApiMutation {
82
82
  const taxInvoiceItemRepo = tx.getRepository(TaxInvoiceItem)
83
83
  const taxInvoiceApiRepo = tx.getRepository(TaxInvoiceApi)
84
84
 
85
- const apiInfo = (await taxInvoiceApiRepo.find()).at(0)
85
+ const apiInfo = await taxInvoiceApiRepo.findOneBy({ isDefault: true })
86
86
  const businessRegistrationNumber = apiInfo.businessRegistrationNumber
87
87
  const { aid = '', bearer = '', customer_no = '' } = apiInfo?.attributes
88
88
  let failCount = 0
89
+ let failMessage = []
89
90
 
90
91
  // 1. 밸리데이션 및 데이터 파싱
91
92
  let newTaxInvoiceSendList = taxInvoiceSendList.map(taxInvoiceSend => this._parseTaxInvoiceSendForApi(taxInvoiceSend, aid, customer_no))
92
93
 
93
94
  // 2. 세금계산서 발행 API 호출
94
95
  const apiResult = await sendTaxInvoiceByUniposApi(businessRegistrationNumber, aid, bearer, newTaxInvoiceSendList)
96
+ if (apiResult === false) {
97
+ // TODO 로그 찍기
98
+ throw new Error('tax invoice send exception: api error')
99
+ }
95
100
 
96
101
  // 3. 성공하면 세금계산서 DB에 저장
97
102
  for (let item of apiResult) {
@@ -112,12 +117,13 @@ export class TaxInvoiceApiMutation {
112
117
  }
113
118
  } else {
114
119
  failCount++
120
+ failMessage.push(`${item.inv_seq}: ${item.message}`)
115
121
  }
116
122
  }
117
123
 
118
124
  // 실패가 1개라도 있으면 에러
119
125
  if (failCount > 0) {
120
- throw new Error(failCount + '개의 계산서 등록에 실패하였습니다.')
126
+ throw new Error(failCount + '개의 계산서 등록에 실패하였습니다.\n' + failMessage.join('\n'))
121
127
  }
122
128
 
123
129
  return true
@@ -142,6 +148,16 @@ export class TaxInvoiceApiMutation {
142
148
  throw new Error('tax invoice send exception: no essential value')
143
149
  }
144
150
 
151
+ // 공급자 사업자 등록번호가 전부 숫자이며 10자리 인지 체크
152
+ if (isNaN(taxInvoice.supplierBusinessRegistrationNumber) || taxInvoice.supplierBusinessRegistrationNumber.length !== 10) {
153
+ throw new Error('tax invoice send exception: Supplier Business Registration Number is wrong')
154
+ }
155
+
156
+ // 공급받는자 사업자 등록번호가 전부 숫자이며 10자리 인지 체크
157
+ if (isNaN(taxInvoice.buyerBusinessRegistrationNumber) || taxInvoice.buyerBusinessRegistrationNumber.length !== 10) {
158
+ throw new Error('tax invoice send exception: Buyer Business Registration Number is wrong')
159
+ }
160
+
145
161
  // 작성일자가 오늘 날짜를 넘어가면 에러
146
162
  if (taxInvoice.issueDate > today) {
147
163
  throw new Error('tax invoice send exception: issueDate error')
@@ -150,11 +166,15 @@ export class TaxInvoiceApiMutation {
150
166
  // 현금, 수표, 어음, 외상미수금이 있을시 총 합계금액과 금액 동일 체크
151
167
  const paymentAmount: number =
152
168
  taxInvoice.paymentAmountCash + taxInvoice.paymentAmountCheck + taxInvoice.paymentAmountPromissoryNote + taxInvoice.paymentAmountAccountsReceivable
153
-
154
169
  if (paymentAmount > 0 && paymentAmount !== taxInvoice.totalAmount) {
155
170
  throw new Error('tax invoice send exception: summary is not same')
156
171
  }
157
172
 
173
+ // 영세업자인데 세금이 있으면 에러
174
+ if (taxInvoice.invoiceType === InvoiceType.ZERO_RATED_TAX_INVOICE && taxInvoice.taxAmount > 0) {
175
+ throw new Error('tax invoice send exception: tax price is exist')
176
+ }
177
+
158
178
  for (let item of taxInvoiceItems) {
159
179
  // 아이템 필수값 체크
160
180
  if (!item.supplyDate || !item.itemName || !item.quantity || !item.unitPrice) {
@@ -166,6 +186,11 @@ export class TaxInvoiceApiMutation {
166
186
  throw new Error('tax invoice send exception: item supplyDate is bigger than issueDate')
167
187
  }
168
188
 
189
+ // 영세업자인데 아이템 세금이 있으면 에러
190
+ if (taxInvoice.invoiceType === InvoiceType.ZERO_RATED_TAX_INVOICE && item.taxPrice > 0) {
191
+ throw new Error('tax invoice send exception: item tax price is exist')
192
+ }
193
+
169
194
  newTaxInvoiceItems.push({
170
195
  tii_seqnumeric: item.sequence,
171
196
  tii_purchaseexpirydatetime: item.supplyDate.replace(/-/g, ''),
@@ -1,22 +0,0 @@
1
- import '@operato/data-grist';
2
- import { LitElement } from 'lit';
3
- export declare class TaxInvoiceCompanyImporter extends LitElement {
4
- static styles: import("lit").CSSResult[];
5
- taxInvoiceCompanies: any[];
6
- columns: {
7
- list: {
8
- fields: string[];
9
- };
10
- pagination: {
11
- infinite: boolean;
12
- };
13
- columns: {
14
- type: string;
15
- name: string;
16
- header: string;
17
- width: number;
18
- }[];
19
- };
20
- render(): import("lit-html").TemplateResult<1>;
21
- save(): Promise<void>;
22
- }
@@ -1,172 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import '@operato/data-grist';
3
- import gql from 'graphql-tag';
4
- import { css, html, LitElement } from 'lit';
5
- import { property } from 'lit/decorators.js';
6
- import { client } from '@operato/graphql';
7
- import { i18next } from '@operato/i18n';
8
- import { isMobileDevice } from '@operato/utils';
9
- export class TaxInvoiceCompanyImporter extends LitElement {
10
- constructor() {
11
- super(...arguments);
12
- this.taxInvoiceCompanies = [];
13
- this.columns = {
14
- list: { fields: ['name', 'description'] },
15
- pagination: { infinite: true },
16
- columns: [
17
- {
18
- type: 'string',
19
- name: 'name',
20
- header: i18next.t('field.name'),
21
- width: 150
22
- },
23
- {
24
- type: 'string',
25
- name: 'description',
26
- header: i18next.t('field.description'),
27
- width: 200
28
- },
29
- {
30
- type: 'string',
31
- name: 'businessRegistrationNumber',
32
- header: i18next.t('field.business registration number'),
33
- width: 150
34
- },
35
- {
36
- type: 'string',
37
- name: 'branchIdentification',
38
- header: i18next.t('field.branch identification'),
39
- width: 150
40
- },
41
- {
42
- type: 'string',
43
- name: 'businessName',
44
- header: i18next.t('field.tax invoice business name'),
45
- width: 150
46
- },
47
- {
48
- type: 'string',
49
- name: 'representativeName',
50
- header: i18next.t('field.tax invoice representative name'),
51
- width: 150
52
- },
53
- {
54
- type: 'string',
55
- name: 'address',
56
- header: i18next.t('field.address'),
57
- width: 200
58
- },
59
- {
60
- type: 'string',
61
- name: 'businessType',
62
- header: i18next.t('field.business type'),
63
- width: 100
64
- },
65
- {
66
- type: 'string',
67
- name: 'industryType',
68
- header: i18next.t('field.industry type'),
69
- width: 100
70
- },
71
- {
72
- type: 'string',
73
- name: 'department',
74
- header: i18next.t('field.department'),
75
- width: 150
76
- },
77
- {
78
- type: 'string',
79
- name: 'contactName',
80
- header: i18next.t('field.contact name'),
81
- width: 150
82
- },
83
- {
84
- type: 'string',
85
- name: 'contactPhone',
86
- header: i18next.t('field.contact phone'),
87
- width: 150
88
- },
89
- {
90
- type: 'string',
91
- name: 'contactEmail',
92
- header: i18next.t('field.contact email'),
93
- width: 150
94
- },
95
- {
96
- type: 'string',
97
- name: 'contactCellPhone',
98
- header: i18next.t('field.contact cell phone'),
99
- width: 150
100
- },
101
- {
102
- type: 'attributes',
103
- name: 'attributes',
104
- header: i18next.t('field.attributes'),
105
- width: 150
106
- }
107
- ]
108
- };
109
- }
110
- render() {
111
- return html `
112
- <ox-grist
113
- .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
114
- .config=${this.columns}
115
- .data=${{
116
- records: this.taxInvoiceCompanies
117
- }}
118
- ></ox-grist>
119
-
120
- <div class="button-container">
121
- <mwc-button raised @click="${this.save.bind(this)}">${i18next.t('button.save')}</mwc-button>
122
- </div>
123
- `;
124
- }
125
- async save() {
126
- var _a;
127
- const response = await client.mutate({
128
- mutation: gql `
129
- mutation importTaxInvoiceCompanies($taxInvoiceCompanies: [TaxInvoiceCompanyPatch!]!) {
130
- importTaxInvoiceCompanies(taxInvoiceCompanies: $taxInvoiceCompanies)
131
- }
132
- `,
133
- variables: { taxInvoiceCompanies: this.taxInvoiceCompanies }
134
- });
135
- if ((_a = response.errors) === null || _a === void 0 ? void 0 : _a.length)
136
- return;
137
- this.dispatchEvent(new CustomEvent('imported'));
138
- }
139
- }
140
- TaxInvoiceCompanyImporter.styles = [
141
- css `
142
- :host {
143
- display: flex;
144
- flex-direction: column;
145
-
146
- background-color: #fff;
147
- }
148
-
149
- ox-grist {
150
- flex: 1;
151
- }
152
-
153
- .button-container {
154
- display: flex;
155
- margin-left: auto;
156
- padding: var(--padding-default);
157
- }
158
-
159
- mwc-button {
160
- margin-left: var(--margin-default);
161
- }
162
- `
163
- ];
164
- __decorate([
165
- property({ type: Array }),
166
- __metadata("design:type", Array)
167
- ], TaxInvoiceCompanyImporter.prototype, "taxInvoiceCompanies", void 0);
168
- __decorate([
169
- property({ type: Object }),
170
- __metadata("design:type", Object)
171
- ], TaxInvoiceCompanyImporter.prototype, "columns", void 0);
172
- //# sourceMappingURL=tax-invoice-company-importer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tax-invoice-company-importer.js","sourceRoot":"","sources":["../../../client/pages/tax-invoice-company/tax-invoice-company-importer.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { property } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { isMobileDevice } from '@operato/utils'\n\nexport class TaxInvoiceCompanyImporter extends LitElement {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: #fff;\n }\n\n ox-grist {\n flex: 1;\n }\n\n .button-container {\n display: flex;\n margin-left: auto;\n padding: var(--padding-default);\n }\n\n mwc-button {\n margin-left: var(--margin-default);\n }\n `\n ]\n\n @property({ type: Array }) taxInvoiceCompanies: any[] = []\n @property({ type: Object }) columns = {\n list: { fields: ['name', 'description'] },\n pagination: { infinite: true },\n columns: [\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n width: 150\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n width: 200\n },\n {\n type: 'string',\n name: 'businessRegistrationNumber',\n header: i18next.t('field.business registration number'),\n width: 150\n },\n {\n type: 'string',\n name: 'branchIdentification',\n header: i18next.t('field.branch identification'),\n width: 150\n },\n {\n type: 'string',\n name: 'businessName',\n header: i18next.t('field.tax invoice business name'),\n width: 150\n },\n {\n type: 'string',\n name: 'representativeName',\n header: i18next.t('field.tax invoice representative name'),\n width: 150\n },\n {\n type: 'string',\n name: 'address',\n header: i18next.t('field.address'),\n width: 200\n },\n {\n type: 'string',\n name: 'businessType',\n header: i18next.t('field.business type'),\n width: 100\n },\n {\n type: 'string',\n name: 'industryType',\n header: i18next.t('field.industry type'),\n width: 100\n },\n {\n type: 'string',\n name: 'department',\n header: i18next.t('field.department'),\n width: 150\n },\n {\n type: 'string',\n name: 'contactName',\n header: i18next.t('field.contact name'),\n width: 150\n },\n {\n type: 'string',\n name: 'contactPhone',\n header: i18next.t('field.contact phone'),\n width: 150\n },\n {\n type: 'string',\n name: 'contactEmail',\n header: i18next.t('field.contact email'),\n width: 150\n },\n {\n type: 'string',\n name: 'contactCellPhone',\n header: i18next.t('field.contact cell phone'),\n width: 150\n },\n {\n type: 'attributes',\n name: 'attributes',\n header: i18next.t('field.attributes'),\n width: 150\n }\n ]\n }\n\n render() {\n return html`\n <ox-grist\n .mode=${isMobileDevice() ? 'LIST' : 'GRID'}\n .config=${this.columns}\n .data=${{\n records: this.taxInvoiceCompanies\n }}\n ></ox-grist>\n\n <div class=\"button-container\">\n <mwc-button raised @click=\"${this.save.bind(this)}\">${i18next.t('button.save')}</mwc-button>\n </div>\n `\n }\n\n async save() {\n const response = await client.mutate({\n mutation: gql`\n mutation importTaxInvoiceCompanies($taxInvoiceCompanies: [TaxInvoiceCompanyPatch!]!) {\n importTaxInvoiceCompanies(taxInvoiceCompanies: $taxInvoiceCompanies)\n }\n `,\n variables: { taxInvoiceCompanies: this.taxInvoiceCompanies }\n })\n\n if (response.errors?.length) return\n\n this.dispatchEvent(new CustomEvent('imported'))\n }\n}\n"]}
@@ -1,77 +0,0 @@
1
- import '@operato/data-grist';
2
- import { LitElement } from 'lit';
3
- export declare class SupplierListPopup extends LitElement {
4
- static styles: import("lit").CSSResult[];
5
- private grist;
6
- supplierList: any[];
7
- columns: {
8
- pagination: {
9
- infinite: boolean;
10
- };
11
- columns: ({
12
- type: string;
13
- gutterName: string;
14
- multiple?: undefined;
15
- name?: undefined;
16
- header?: undefined;
17
- record?: undefined;
18
- filter?: undefined;
19
- sortable?: undefined;
20
- width?: undefined;
21
- } | {
22
- type: string;
23
- gutterName: string;
24
- multiple: boolean;
25
- name?: undefined;
26
- header?: undefined;
27
- record?: undefined;
28
- filter?: undefined;
29
- sortable?: undefined;
30
- width?: undefined;
31
- } | {
32
- type: string;
33
- name: string;
34
- header: string;
35
- record: {
36
- editable: boolean;
37
- };
38
- filter: string;
39
- sortable: boolean;
40
- width: number;
41
- gutterName?: undefined;
42
- multiple?: undefined;
43
- } | {
44
- type: string;
45
- name: string;
46
- header: string;
47
- record: {
48
- editable: boolean;
49
- };
50
- filter: string;
51
- width: number;
52
- gutterName?: undefined;
53
- multiple?: undefined;
54
- sortable?: undefined;
55
- } | {
56
- type: string;
57
- name: string;
58
- header: string;
59
- record: {
60
- editable: boolean;
61
- };
62
- width: number;
63
- gutterName?: undefined;
64
- multiple?: undefined;
65
- filter?: undefined;
66
- sortable?: undefined;
67
- })[];
68
- rows: {
69
- selectable: {
70
- multiple: boolean;
71
- };
72
- appendable: boolean;
73
- };
74
- };
75
- render(): import("lit-html").TemplateResult<1>;
76
- select(): Promise<void>;
77
- }
@@ -1,209 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import '@operato/data-grist';
3
- import { css, html, LitElement } from 'lit';
4
- import { property, query } from 'lit/decorators.js';
5
- import { DataGrist } from '@operato/data-grist';
6
- import { i18next } from '@operato/i18n';
7
- export class SupplierListPopup extends LitElement {
8
- constructor() {
9
- super(...arguments);
10
- this.supplierList = [];
11
- this.columns = {
12
- pagination: { infinite: true },
13
- columns: [
14
- { type: 'gutter', gutterName: 'sequence' },
15
- { type: 'gutter', gutterName: 'row-selector', multiple: false },
16
- {
17
- type: 'string',
18
- name: 'name',
19
- header: i18next.t('field.name'),
20
- record: {
21
- editable: false
22
- },
23
- filter: 'search',
24
- sortable: true,
25
- width: 150
26
- },
27
- {
28
- type: 'string',
29
- name: 'description',
30
- header: i18next.t('field.description'),
31
- record: {
32
- editable: false
33
- },
34
- filter: 'search',
35
- width: 200
36
- },
37
- {
38
- type: 'string',
39
- name: 'businessRegistrationNumber',
40
- header: i18next.t('field.business registration number'),
41
- record: {
42
- editable: false
43
- },
44
- width: 150
45
- },
46
- {
47
- type: 'string',
48
- name: 'branchIdentification',
49
- header: i18next.t('field.branch identification'),
50
- record: {
51
- editable: false
52
- },
53
- width: 150
54
- },
55
- {
56
- type: 'string',
57
- name: 'businessName',
58
- header: i18next.t('field.tax invoice business name'),
59
- record: {
60
- editable: false
61
- },
62
- width: 150
63
- },
64
- {
65
- type: 'string',
66
- name: 'representativeName',
67
- header: i18next.t('field.tax invoice representative name'),
68
- record: {
69
- editable: false
70
- },
71
- width: 150
72
- },
73
- {
74
- type: 'string',
75
- name: 'address',
76
- header: i18next.t('field.address'),
77
- record: {
78
- editable: false
79
- },
80
- width: 200
81
- },
82
- {
83
- type: 'string',
84
- name: 'businessType',
85
- header: i18next.t('field.business type'),
86
- record: {
87
- editable: false
88
- },
89
- width: 100
90
- },
91
- {
92
- type: 'string',
93
- name: 'industryType',
94
- header: i18next.t('field.industry type'),
95
- record: {
96
- editable: false
97
- },
98
- width: 100
99
- },
100
- {
101
- type: 'string',
102
- name: 'department',
103
- header: i18next.t('field.department'),
104
- record: {
105
- editable: false
106
- },
107
- width: 150
108
- },
109
- {
110
- type: 'string',
111
- name: 'contactName',
112
- header: i18next.t('field.contact name'),
113
- record: {
114
- editable: false
115
- },
116
- width: 150
117
- },
118
- {
119
- type: 'string',
120
- name: 'contactPhone',
121
- header: i18next.t('field.contact phone'),
122
- record: {
123
- editable: false
124
- },
125
- width: 150
126
- },
127
- {
128
- type: 'string',
129
- name: 'contactEmail',
130
- header: i18next.t('field.contact email'),
131
- record: {
132
- editable: false
133
- },
134
- width: 150
135
- },
136
- {
137
- type: 'string',
138
- name: 'contactCellPhone',
139
- header: i18next.t('field.contact cell phone'),
140
- record: {
141
- editable: false
142
- },
143
- width: 150
144
- }
145
- ],
146
- rows: {
147
- selectable: {
148
- multiple: false
149
- },
150
- appendable: false
151
- }
152
- };
153
- }
154
- render() {
155
- return html `
156
- <ox-grist
157
- .mode=${'GRID'}
158
- .config=${this.columns}
159
- .data=${{
160
- records: this.supplierList
161
- }}
162
- ></ox-grist>
163
-
164
- <div class="button-container">
165
- <mwc-button raised @click="${this.select.bind(this)}">${i18next.t('button.select')}</mwc-button>
166
- </div>
167
- `;
168
- }
169
- async select() {
170
- this.dispatchEvent(new CustomEvent('selected', { detail: this.grist.selected[0] }));
171
- }
172
- }
173
- SupplierListPopup.styles = [
174
- css `
175
- :host {
176
- display: flex;
177
- flex-direction: column;
178
-
179
- background-color: #fff;
180
- }
181
-
182
- ox-grist {
183
- flex: 1;
184
- }
185
-
186
- .button-container {
187
- display: flex;
188
- margin-left: auto;
189
- padding: var(--padding-default);
190
- }
191
-
192
- mwc-button {
193
- margin-left: var(--margin-default);
194
- }
195
- `
196
- ];
197
- __decorate([
198
- query('ox-grist'),
199
- __metadata("design:type", DataGrist)
200
- ], SupplierListPopup.prototype, "grist", void 0);
201
- __decorate([
202
- property({ type: Array }),
203
- __metadata("design:type", Array)
204
- ], SupplierListPopup.prototype, "supplierList", void 0);
205
- __decorate([
206
- property({ type: Object }),
207
- __metadata("design:type", Object)
208
- ], SupplierListPopup.prototype, "columns", void 0);
209
- //# sourceMappingURL=supplier-list-popup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"supplier-list-popup.js","sourceRoot":"","sources":["../../../client/pages/tax-invoice-send/supplier-list-popup.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { property, state, query } from 'lit/decorators.js'\nimport { DataGrist, FetchOption } from '@operato/data-grist'\n\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { Supplier } from './tax-invoice-send-page'\n\nexport class SupplierListPopup extends LitElement {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: #fff;\n }\n\n ox-grist {\n flex: 1;\n }\n\n .button-container {\n display: flex;\n margin-left: auto;\n padding: var(--padding-default);\n }\n\n mwc-button {\n margin-left: var(--margin-default);\n }\n `\n ]\n\n @query('ox-grist') private grist!: DataGrist\n\n @property({ type: Array }) supplierList: any[] = []\n @property({ type: Object }) columns = {\n pagination: { infinite: true },\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: false },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: {\n editable: false\n },\n filter: 'search',\n sortable: true,\n width: 150\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: {\n editable: false\n },\n filter: 'search',\n width: 200\n },\n {\n type: 'string',\n name: 'businessRegistrationNumber',\n header: i18next.t('field.business registration number'),\n record: {\n editable: false\n },\n width: 150\n },\n {\n type: 'string',\n name: 'branchIdentification',\n header: i18next.t('field.branch identification'),\n record: {\n editable: false\n },\n width: 150\n },\n {\n type: 'string',\n name: 'businessName',\n header: i18next.t('field.tax invoice business name'),\n record: {\n editable: false\n },\n width: 150\n },\n {\n type: 'string',\n name: 'representativeName',\n header: i18next.t('field.tax invoice representative name'),\n record: {\n editable: false\n },\n width: 150\n },\n {\n type: 'string',\n name: 'address',\n header: i18next.t('field.address'),\n record: {\n editable: false\n },\n width: 200\n },\n {\n type: 'string',\n name: 'businessType',\n header: i18next.t('field.business type'),\n record: {\n editable: false\n },\n width: 100\n },\n {\n type: 'string',\n name: 'industryType',\n header: i18next.t('field.industry type'),\n record: {\n editable: false\n },\n width: 100\n },\n {\n type: 'string',\n name: 'department',\n header: i18next.t('field.department'),\n record: {\n editable: false\n },\n width: 150\n },\n {\n type: 'string',\n name: 'contactName',\n header: i18next.t('field.contact name'),\n record: {\n editable: false\n },\n width: 150\n },\n {\n type: 'string',\n name: 'contactPhone',\n header: i18next.t('field.contact phone'),\n record: {\n editable: false\n },\n width: 150\n },\n {\n type: 'string',\n name: 'contactEmail',\n header: i18next.t('field.contact email'),\n record: {\n editable: false\n },\n width: 150\n },\n {\n type: 'string',\n name: 'contactCellPhone',\n header: i18next.t('field.contact cell phone'),\n record: {\n editable: false\n },\n width: 150\n }\n ],\n rows: {\n selectable: {\n multiple: false\n },\n appendable: false\n }\n }\n\n render() {\n return html`\n <ox-grist\n .mode=${'GRID'}\n .config=${this.columns}\n .data=${{\n records: this.supplierList\n }}\n ></ox-grist>\n\n <div class=\"button-container\">\n <mwc-button raised @click=\"${this.select.bind(this)}\">${i18next.t('button.select')}</mwc-button>\n </div>\n `\n }\n\n async select() {\n this.dispatchEvent(new CustomEvent('selected', { detail: this.grist.selected[0] }))\n }\n}\n"]}