@things-factory/tax-invoice 6.2.86 → 6.2.88

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.
Files changed (52) hide show
  1. package/client/pages/tax-invoice/tax-invoice-detail-popup.ts +12 -6
  2. package/client/pages/tax-invoice/tax-invoice-list-page.ts +147 -176
  3. package/client/pages/tax-invoice-api/tax-invoice-api-page.ts +6 -5
  4. package/client/pages/tax-invoice-company/tax-invoice-company-importer.ts +2 -2
  5. package/client/pages/tax-invoice-send/tax-invoice-send-page.ts +580 -0
  6. package/client/route.ts +4 -4
  7. package/dist-client/pages/tax-invoice/tax-invoice-detail-popup.js +18 -9
  8. package/dist-client/pages/tax-invoice/tax-invoice-detail-popup.js.map +1 -1
  9. package/dist-client/pages/tax-invoice/tax-invoice-list-page.d.ts +63 -23
  10. package/dist-client/pages/tax-invoice/tax-invoice-list-page.js +149 -168
  11. package/dist-client/pages/tax-invoice/tax-invoice-list-page.js.map +1 -1
  12. package/dist-client/pages/tax-invoice-api/tax-invoice-api-page.d.ts +1 -1
  13. package/dist-client/pages/tax-invoice-api/tax-invoice-api-page.js +6 -5
  14. package/dist-client/pages/tax-invoice-api/tax-invoice-api-page.js.map +1 -1
  15. package/dist-client/pages/tax-invoice-company/tax-invoice-company-importer.js +2 -2
  16. package/dist-client/pages/tax-invoice-company/tax-invoice-company-importer.js.map +1 -1
  17. package/dist-client/pages/tax-invoice-send/tax-invoice-send-page.d.ts +100 -0
  18. package/dist-client/pages/tax-invoice-send/tax-invoice-send-page.js +510 -0
  19. package/dist-client/pages/tax-invoice-send/tax-invoice-send-page.js.map +1 -0
  20. package/dist-client/route.d.ts +1 -1
  21. package/dist-client/route.js +3 -3
  22. package/dist-client/route.js.map +1 -1
  23. package/dist-client/tsconfig.tsbuildinfo +1 -1
  24. package/dist-server/service/tax-invoice/tax-invoice-mutation.js +132 -27
  25. package/dist-server/service/tax-invoice/tax-invoice-mutation.js.map +1 -1
  26. package/dist-server/service/tax-invoice/tax-invoice-query.js +24 -1
  27. package/dist-server/service/tax-invoice/tax-invoice-query.js.map +1 -1
  28. package/dist-server/service/tax-invoice/tax-invoice-type.js +22 -259
  29. package/dist-server/service/tax-invoice/tax-invoice-type.js.map +1 -1
  30. package/dist-server/service/tax-invoice/tax-invoice.js +22 -16
  31. package/dist-server/service/tax-invoice/tax-invoice.js.map +1 -1
  32. package/dist-server/service/tax-invoice-api/tax-invoice-api-type.js +5 -0
  33. package/dist-server/service/tax-invoice-api/tax-invoice-api-type.js.map +1 -1
  34. package/dist-server/service/tax-invoice-item/tax-invoice-item-query.js.map +1 -1
  35. package/dist-server/service/tax-invoice-item/tax-invoice-item-type.js +4 -4
  36. package/dist-server/service/tax-invoice-item/tax-invoice-item-type.js.map +1 -1
  37. package/dist-server/service/tax-invoice-item/tax-invoice-item.js +3 -3
  38. package/dist-server/service/tax-invoice-item/tax-invoice-item.js.map +1 -1
  39. package/dist-server/service/unipost-api/tax-invoice-inquiry.js +90 -0
  40. package/dist-server/service/unipost-api/tax-invoice-inquiry.js.map +1 -0
  41. package/dist-server/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +5 -5
  43. package/server/service/tax-invoice/tax-invoice-mutation.ts +137 -36
  44. package/server/service/tax-invoice/tax-invoice-query.ts +21 -3
  45. package/server/service/tax-invoice/tax-invoice-type.ts +21 -199
  46. package/server/service/tax-invoice/tax-invoice.ts +38 -45
  47. package/server/service/tax-invoice-api/tax-invoice-api-type.ts +4 -0
  48. package/server/service/tax-invoice-item/tax-invoice-item-query.ts +1 -1
  49. package/server/service/tax-invoice-item/tax-invoice-item-type.ts +4 -7
  50. package/server/service/tax-invoice-item/tax-invoice-item.ts +3 -3
  51. package/server/service/unipost-api/tax-invoice-inquiry.ts +103 -0
  52. package/translations/ko.json +10 -1
@@ -3,53 +3,92 @@ import '@operato/data-grist';
3
3
  import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles';
4
4
  import { PageView } from '@operato/shell';
5
5
  import { css, html } from 'lit';
6
- import { customElement, property, query } from 'lit/decorators.js';
6
+ import { customElement, property, state, query } from 'lit/decorators.js';
7
7
  import { ScopedElementsMixin } from '@open-wc/scoped-elements';
8
8
  import { DataGrist } from '@operato/data-grist';
9
9
  import { client } from '@operato/graphql';
10
10
  import { i18next, localize } from '@operato/i18n';
11
11
  import { notify, openPopup } from '@operato/layout';
12
- import { OxPrompt } from '@operato/popup';
13
- import { isMobileDevice } from '@operato/utils';
14
12
  import gql from 'graphql-tag';
15
13
  import './tax-invoice-detail-popup';
14
+ export var Category;
15
+ (function (Category) {
16
+ Category["EXPORT"] = "10";
17
+ Category["IMPORT"] = "20";
18
+ Category["NTS"] = "30";
19
+ })(Category || (Category = {}));
16
20
  export const CATEGORY = {
17
- '10': '매출',
18
- '20': '매입',
19
- '30': 'NTS'
21
+ [Category.EXPORT]: '매출',
22
+ [Category.IMPORT]: '매입',
23
+ [Category.NTS]: 'NTS'
20
24
  };
25
+ export var InvoiceType;
26
+ (function (InvoiceType) {
27
+ InvoiceType["TAX_INVOICE"] = "0101";
28
+ InvoiceType["SMALL_BUSINESS_TAX_INVOICE"] = "0102";
29
+ InvoiceType["CONSIGNMENT_TAX_INVOICE"] = "0103";
30
+ InvoiceType["SMALL_BUSINESS_CONSIGNMENT_TAX_INVOICE"] = "0105";
31
+ InvoiceType["REVISED_TAX_INVOICE"] = "0201";
32
+ InvoiceType["REVISED_SMALL_BUSINESS_TAX_INVOICE"] = "0202";
33
+ InvoiceType["REVISED_CONSIGNMENT_TAX_INVOICE"] = "0203";
34
+ InvoiceType["REVISED_IMPORT_TAX_INVOICE"] = "0204";
35
+ InvoiceType["REVISED_SMALL_BUSINESS_CONSIGNMENT_TAX_INVOICE"] = "0205";
36
+ InvoiceType["INVOICE"] = "0301";
37
+ InvoiceType["CONSIGNMENT_INVOICE"] = "0303";
38
+ InvoiceType["IMPORT_INVOICE"] = "0304";
39
+ InvoiceType["REVISED_INVOICE"] = "0401";
40
+ InvoiceType["REVISED_CONSIGNMENT_INVOICE"] = "0403";
41
+ InvoiceType["REVISED_IMPORT_INVOICE"] = "0404";
42
+ })(InvoiceType || (InvoiceType = {}));
21
43
  export const INVOICE_TYPE = {
22
- '0101': '일반 세금계산서',
23
- '0102': '영세율 세금계산서',
24
- '0103': '위수탁 세금계산서',
25
- '0105': '영세율 위수탁 세금계산서',
26
- '0201': '수정 일반 세금계산서',
27
- '0202': '수정 영세율 세금계산서',
28
- '0203': '수정 위수탁 세금계산서',
29
- '0204': '수정 수입 세금계산서',
30
- '0205': '수정 영세율 위수탁 세금계산서',
31
- '0301': '일반 계산서',
32
- '0303': '위수탁 계산서',
33
- '0304': '수입 계산서',
34
- '0401': '수정 일반 계산서',
35
- '0403': '수정 위수탁 계산서',
36
- '0404': '정 수입 계산서'
44
+ [InvoiceType.TAX_INVOICE]: '일반 전자세금계산서',
45
+ [InvoiceType.SMALL_BUSINESS_TAX_INVOICE]: '영세율 전자세금계산서',
46
+ [InvoiceType.CONSIGNMENT_TAX_INVOICE]: '위수탁 전자세금계산서',
47
+ [InvoiceType.SMALL_BUSINESS_CONSIGNMENT_TAX_INVOICE]: '영세율 위수탁 전자세금계산서',
48
+ [InvoiceType.REVISED_TAX_INVOICE]: '수정 일반 전자세금계산서',
49
+ [InvoiceType.REVISED_SMALL_BUSINESS_TAX_INVOICE]: '수정 영세율 전자세금계산서',
50
+ [InvoiceType.REVISED_CONSIGNMENT_TAX_INVOICE]: '수정 위수탁 전자세금계산서',
51
+ [InvoiceType.REVISED_IMPORT_TAX_INVOICE]: '수정 수입 전자세금계산서',
52
+ [InvoiceType.REVISED_SMALL_BUSINESS_CONSIGNMENT_TAX_INVOICE]: '수정 영세율 위수탁 전자세금계산서',
53
+ [InvoiceType.INVOICE]: '일반 전자계산서',
54
+ [InvoiceType.CONSIGNMENT_INVOICE]: '위수탁 전자계산서',
55
+ [InvoiceType.IMPORT_INVOICE]: '수입 전자계산서',
56
+ [InvoiceType.REVISED_INVOICE]: '수정 일반 전자계산서',
57
+ [InvoiceType.REVISED_CONSIGNMENT_INVOICE]: '수정 위수탁 전자계산서',
58
+ [InvoiceType.REVISED_IMPORT_INVOICE]: '수정 수입 전자계산서'
37
59
  };
60
+ export var Purpose;
61
+ (function (Purpose) {
62
+ Purpose["RECEIPT"] = "01";
63
+ Purpose["INVOICE"] = "02";
64
+ })(Purpose || (Purpose = {}));
38
65
  export const PURPOSE = {
39
- '01': '영수',
40
- '02': '청구'
66
+ [Purpose.RECEIPT]: '영수',
67
+ [Purpose.INVOICE]: '청구'
68
+ };
69
+ export var BusinessRegistrationCategory;
70
+ (function (BusinessRegistrationCategory) {
71
+ BusinessRegistrationCategory["BUSINESS_REGISTRATION_NUMBER"] = "01";
72
+ BusinessRegistrationCategory["RESIDENT_REGISTRATION_NUMBER"] = "02";
73
+ BusinessRegistrationCategory["FOREIGNER_REGISTRATION_NUMBER"] = "03"; // 외국인등록번호
74
+ })(BusinessRegistrationCategory || (BusinessRegistrationCategory = {}));
75
+ export const BUSINESS_REGISTRATION_CATEGORY = {
76
+ [BusinessRegistrationCategory.BUSINESS_REGISTRATION_NUMBER]: '사업자등록번호',
77
+ [BusinessRegistrationCategory.RESIDENT_REGISTRATION_NUMBER]: '주민등록번호',
78
+ [BusinessRegistrationCategory.FOREIGNER_REGISTRATION_NUMBER]: '외국인'
41
79
  };
42
80
  let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(ScopedElementsMixin(PageView)) {
43
81
  constructor() {
44
82
  super(...arguments);
45
- this.mode = isMobileDevice() ? 'CARD' : 'GRID';
83
+ this.summary = null;
84
+ this._numberFormat = (num) => Intl.NumberFormat('en-US').format(num || 0);
46
85
  }
47
86
  get context() {
48
87
  return {
49
88
  title: i18next.t('title.tax invoice list'),
50
89
  help: 'tax-invoice/tax-invoice',
51
90
  actions: [
52
- Object.assign({ title: i18next.t('button.delete'), action: this._deleteTaxInvoice.bind(this) }, CommonButtonStyles.delete)
91
+ Object.assign({ title: i18next.t('button.memo save'), action: this._updateTaxInvoice.bind(this) }, CommonButtonStyles.save)
53
92
  ],
54
93
  exportable: {
55
94
  name: i18next.t('title.tax invoice list'),
@@ -60,7 +99,19 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
60
99
  }
61
100
  render() {
62
101
  const mode = 'GRID';
102
+ const summary = this.summary;
63
103
  return html `
104
+ <div class="summary">
105
+ <span class="title">${i18next.t('field.summary total count')}</span>
106
+ <span class="value">${this._numberFormat(summary === null || summary === void 0 ? void 0 : summary.cnt)}</span>
107
+ <span class="title">${i18next.t('field.summary total amount')}</span>
108
+ <span class="value">${this._numberFormat(summary === null || summary === void 0 ? void 0 : summary.total_amount)}</span>
109
+ <span class="title">${i18next.t('field.summary supply amount')}</span>
110
+ <span class="value">${this._numberFormat(summary === null || summary === void 0 ? void 0 : summary.supply_amount)}</span>
111
+ <span class="title">${i18next.t('field.summary tax amount')}</span>
112
+ <span class="value">${this._numberFormat(summary === null || summary === void 0 ? void 0 : summary.tax_amount)}</span>
113
+ </div>
114
+
64
115
  <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
65
116
  <div slot="headroom">
66
117
  <div id="filters">
@@ -69,7 +120,6 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
69
120
  </div>
70
121
  </ox-grist>
71
122
  `;
72
- // <button @click=${() => this.createTaxInvoice('3')}>생성</button>
73
123
  }
74
124
  async pageInitialized(lifecycle) {
75
125
  this.gristConfig = {
@@ -88,8 +138,8 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
88
138
  },
89
139
  {
90
140
  type: 'string',
91
- name: 'name',
92
- header: i18next.t('field.name'),
141
+ name: 'memo',
142
+ header: i18next.t('field.memo'),
93
143
  record: {
94
144
  editable: true
95
145
  },
@@ -102,8 +152,31 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
102
152
  header: i18next.t('field.tax invoice category'),
103
153
  record: {
104
154
  renderer: value => CATEGORY[value],
155
+ classifier: function (record, rowIndex) {
156
+ return {
157
+ emphasized: record.category === Category.EXPORT ? ['#c6daf6', 'black'] : ['#fedbde', 'black']
158
+ };
159
+ },
105
160
  align: 'center'
106
161
  },
162
+ filter: {
163
+ type: 'select',
164
+ value: Category.EXPORT,
165
+ options: () => [
166
+ {
167
+ display: '전체',
168
+ value: ''
169
+ },
170
+ {
171
+ display: '매출',
172
+ value: Category.EXPORT
173
+ },
174
+ {
175
+ display: '매입',
176
+ value: Category.IMPORT
177
+ }
178
+ ]
179
+ },
107
180
  width: 80
108
181
  },
109
182
  {
@@ -133,7 +206,8 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
133
206
  name: 'supplierBusinessRegistrationNumber',
134
207
  header: i18next.t('field.supplier business registration number'),
135
208
  record: {
136
- align: 'center'
209
+ align: 'center',
210
+ renderer: value => value.replace(/(\d{3})(\d{2})(\d{5})/g, '$1-$2-$3')
137
211
  },
138
212
  width: 150
139
213
  },
@@ -160,7 +234,7 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
160
234
  name: 'totalAmount',
161
235
  header: i18next.t('field.total amount'),
162
236
  record: {
163
- renderer: value => value && new Intl.NumberFormat('en-US').format(value),
237
+ renderer: value => value && this._numberFormat(value),
164
238
  align: 'center'
165
239
  },
166
240
  width: 90
@@ -170,7 +244,7 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
170
244
  name: 'supplyAmount',
171
245
  header: i18next.t('field.supply amount'),
172
246
  record: {
173
- renderer: value => value && new Intl.NumberFormat('en-US').format(value),
247
+ renderer: value => value && this._numberFormat(value),
174
248
  align: 'center'
175
249
  },
176
250
  width: 90
@@ -180,7 +254,7 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
180
254
  name: 'taxAmount',
181
255
  header: i18next.t('field.tax amount'),
182
256
  record: {
183
- renderer: value => value && new Intl.NumberFormat('en-US').format(value),
257
+ renderer: value => value && this._numberFormat(value),
184
258
  align: 'center'
185
259
  },
186
260
  width: 90
@@ -190,7 +264,8 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
190
264
  name: 'approvalNo',
191
265
  header: i18next.t('field.approval no'),
192
266
  record: {
193
- align: 'center'
267
+ align: 'center',
268
+ renderer: value => value.replace(/(\S{8})(\S{8})(\S{8})/g, '$1-$2-$3')
194
269
  },
195
270
  width: 200
196
271
  },
@@ -272,11 +347,11 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
272
347
  async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }) {
273
348
  const response = await client.query({
274
349
  query: gql `
275
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
276
- responses: taxInvoices(filters: $filters, pagination: $pagination, sortings: $sortings) {
350
+ query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!], $summaryFilters: [Filter!]) {
351
+ taxInvoices(filters: $filters, pagination: $pagination, sortings: $sortings) {
277
352
  items {
278
353
  id
279
- name
354
+ memo
280
355
  category
281
356
  issueDate
282
357
  signatureDate
@@ -301,47 +376,25 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
301
376
  }
302
377
  total
303
378
  }
379
+ taxInvoicesSummary(filters: $summaryFilters) {
380
+ summary
381
+ }
304
382
  }
305
383
  `,
306
384
  variables: {
307
385
  filters,
308
386
  pagination: { page, limit },
309
- sortings
387
+ sortings,
388
+ summaryFilters: filters
310
389
  }
311
390
  });
391
+ // 합계 필드 갱신
392
+ this.summary = response.data.taxInvoicesSummary.summary;
312
393
  return {
313
- total: response.data.responses.total || 0,
314
- records: response.data.responses.items || []
394
+ total: response.data.taxInvoices.total || 0,
395
+ records: response.data.taxInvoices.items || []
315
396
  };
316
397
  }
317
- async _deleteTaxInvoice() {
318
- if (await OxPrompt.open({
319
- title: i18next.t('text.are_you_sure'),
320
- text: i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }),
321
- confirmButton: { text: i18next.t('button.confirm') },
322
- cancelButton: { text: i18next.t('button.cancel') }
323
- })) {
324
- const ids = this.grist.selected.map(record => record.id);
325
- if (ids && ids.length > 0) {
326
- const response = await client.mutate({
327
- mutation: gql `
328
- mutation ($ids: [String!]!) {
329
- deleteTaxInvoices(ids: $ids)
330
- }
331
- `,
332
- variables: {
333
- ids
334
- }
335
- });
336
- if (!response.errors) {
337
- this.grist.fetch();
338
- notify({
339
- message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })
340
- });
341
- }
342
- }
343
- }
344
- }
345
398
  async _updateTaxInvoice() {
346
399
  let patches = this.grist.dirtyRecords;
347
400
  if (patches && patches.length) {
@@ -375,104 +428,6 @@ let TaxInvoiceListPage = class TaxInvoiceListPage extends localize(i18next)(Scop
375
428
  }
376
429
  }
377
430
  }
378
- async createTaxInvoice(num) {
379
- const year = '2024';
380
- const month = '01';
381
- const day = '02';
382
- const firstWordOfNum = num.slice(0, 1);
383
- const firstWordOfNumNext = String(Number(num.slice(0, 1)) + 1).slice(0, 1);
384
- const supplyAmount = 1000000 * Number(firstWordOfNum);
385
- const taxAmount = supplyAmount / 10;
386
- const taxInvoice = {
387
- name: '설명' + num.repeat(3),
388
- category: '10',
389
- approvalNo: year + month + day + '-' + firstWordOfNum.repeat(8) + '-' + firstWordOfNum.repeat(8),
390
- issueDate: `${year}-${month}-${day}`,
391
- signatureDate: `${year}-${month}-${Number(day) + 1}`,
392
- invoiceType: '0101',
393
- purpose: '02',
394
- remark0: '비고' + num.repeat(3),
395
- supplierBusinessRegistrationCategory: '01',
396
- supplierBusinessRegistrationNumber: `${firstWordOfNum.repeat(3)}-${firstWordOfNum.repeat(2)}-${firstWordOfNum.repeat(5)}`,
397
- supplierBusinessName: '공급자 회사명' + firstWordOfNum.repeat(3),
398
- supplierRepresentativeName: '공급자 대표자' + firstWordOfNum.repeat(3),
399
- supplierAddress: '공급자 주소' + firstWordOfNum.repeat(3),
400
- supplierBusinessType: '공급자 업태' + firstWordOfNum.repeat(3),
401
- supplierIndustryType: '공급자 업종' + firstWordOfNum.repeat(3),
402
- supplierDepartment: '공급자 담당 부서' + firstWordOfNum.repeat(3),
403
- supplierContactName: '공급자 담당자명' + firstWordOfNum.repeat(3),
404
- supplierContactPhone: `010-${firstWordOfNum.repeat(4)}-${firstWordOfNum.repeat(4)}`,
405
- supplierContactEmail: '공급자 담당자 이메일' + firstWordOfNum.repeat(3),
406
- supplierContactCellPhone: '공급자 핸드폰 번호' + firstWordOfNum.repeat(3),
407
- buyerBusinessRegistrationCategory: '01',
408
- buyerBusinessRegistrationNumber: `${firstWordOfNumNext.repeat(3)}-${firstWordOfNumNext.repeat(2)}-${firstWordOfNumNext.repeat(5)}`,
409
- buyerBusinessName: '공급자 회사명' + firstWordOfNum.repeat(3),
410
- buyerRepresentativeName: '공급자 대표자' + firstWordOfNum.repeat(3),
411
- buyerAddress: '공급자 주소' + firstWordOfNum.repeat(3),
412
- buyerBusinessType: '공급자 업태' + firstWordOfNum.repeat(3),
413
- buyerIndustryType: '공급자 업종' + firstWordOfNum.repeat(3),
414
- buyer1stDepartment: '공급자 담당 부서 1st' + firstWordOfNum.repeat(3),
415
- buyer1stContactName: '공급자 담당자명 1st' + firstWordOfNum.repeat(3),
416
- buyer1stContactPhone: `011-${firstWordOfNumNext.repeat(4)}-${firstWordOfNumNext.repeat(4)}`,
417
- buyer1stContactEmail: '공급자 담당자 이메일 1st' + firstWordOfNum.repeat(3),
418
- buyer1stContactCellPhone: '공급자 핸드폰 번호 1st' + firstWordOfNum.repeat(3),
419
- buyer2ndDepartment: '공급자 담당 부서 2nd' + firstWordOfNum.repeat(3),
420
- buyer2ndContactName: '공급자 담당자명 2nd' + firstWordOfNum.repeat(3),
421
- buyer2ndContactPhone: `022-${firstWordOfNumNext.repeat(4)}-${firstWordOfNumNext.repeat(4)}`,
422
- buyer2ndContactEmail: '공급자 담당자 이메일 2nd' + firstWordOfNum.repeat(3),
423
- buyer2ndContactCellPhone: '공급자 핸드폰 번호 2nd' + firstWordOfNum.repeat(3),
424
- paymentAmountCash: 0,
425
- paymentAmountCheck: 0,
426
- paymentAmountPromissoryNote: 0,
427
- paymentAmountAccountsReceivable: 0,
428
- supplyAmount: supplyAmount,
429
- taxAmount: taxAmount,
430
- totalAmount: supplyAmount + taxAmount
431
- };
432
- const taxInvoiceItems = [
433
- {
434
- sequence: 1,
435
- supplyDate: `${year}-${month}-${day}`,
436
- itemName: '아이템01',
437
- specification: 'EA',
438
- quantity: 1,
439
- unitPrice: 100000,
440
- supplyPrice: 100000,
441
- taxPrice: 10000,
442
- remark: '아이템 비고 01'
443
- },
444
- {
445
- sequence: 2,
446
- supplyDate: `${year}-${month}-${Number(day) + 1}`,
447
- itemName: '아이템02',
448
- specification: 'EA',
449
- quantity: 2,
450
- unitPrice: 100000,
451
- supplyPrice: 200000,
452
- taxPrice: 20000,
453
- remark: '아이템 비고 02'
454
- }
455
- ];
456
- const response = await client.mutate({
457
- mutation: gql `
458
- mutation CreateTaxInvoice($taxInvoice: NewTaxInvoice!, $taxInvoiceItems: [NewTaxInvoiceItem!]!) {
459
- createTaxInvoice(taxInvoice: $taxInvoice, taxInvoiceItems: $taxInvoiceItems) {
460
- id
461
- }
462
- }
463
- `,
464
- variables: {
465
- taxInvoice,
466
- taxInvoiceItems
467
- }
468
- });
469
- if (!response.errors) {
470
- this.grist.fetch();
471
- notify({
472
- message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })
473
- });
474
- }
475
- }
476
431
  async exportHandler() {
477
432
  const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records;
478
433
  const targetFieldSet = new Set(['id', 'name']);
@@ -498,12 +453,38 @@ TaxInvoiceListPage.styles = [
498
453
  css `
499
454
  :host {
500
455
  display: flex;
456
+ flex-direction: column;
501
457
 
502
458
  width: 100%;
503
459
 
504
460
  --grid-record-emphasized-background-color: red;
505
461
  --grid-record-emphasized-color: yellow;
506
462
  }
463
+
464
+ div.summary {
465
+ display: grid;
466
+ grid-template-columns: 0.7fr 1fr 0.7fr 1fr 0.7fr 1fr 0.7fr 1fr;
467
+ border: solid #d3dbe5;
468
+ border-width: 2px 0;
469
+ margin: 15px 40px;
470
+ align-content: center;
471
+
472
+ span.title {
473
+ background-color: #e9edf6;
474
+ text-align: center;
475
+ display: flex;
476
+ align-items: center;
477
+ justify-content: center;
478
+ height: 35px;
479
+ font-weight: bold;
480
+ }
481
+ span.value {
482
+ padding-left: 10px;
483
+ display: flex;
484
+ align-items: center;
485
+ height: 35px;
486
+ }
487
+ }
507
488
  `
508
489
  ];
509
490
  __decorate([
@@ -511,9 +492,9 @@ __decorate([
511
492
  __metadata("design:type", Object)
512
493
  ], TaxInvoiceListPage.prototype, "gristConfig", void 0);
513
494
  __decorate([
514
- property({ type: String }),
515
- __metadata("design:type", String)
516
- ], TaxInvoiceListPage.prototype, "mode", void 0);
495
+ state(),
496
+ __metadata("design:type", Object)
497
+ ], TaxInvoiceListPage.prototype, "summary", void 0);
517
498
  __decorate([
518
499
  query('ox-grist'),
519
500
  __metadata("design:type", DataGrist)
@@ -1 +1 @@
1
- {"version":3,"file":"tax-invoice-list-page.js","sourceRoot":"","sources":["../../../client/pages/tax-invoice/tax-invoice-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist'\n\nimport { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'\nimport { PageView } from '@operato/shell'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { DataGrist, FetchOption } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport { OxPrompt } from '@operato/popup'\nimport { isMobileDevice } from '@operato/utils'\nimport gql from 'graphql-tag'\n\nimport './tax-invoice-detail-popup'\n\nexport const CATEGORY = {\n '10': '매출',\n '20': '매입',\n '30': 'NTS'\n}\n\nexport const INVOICE_TYPE = {\n '0101': '일반 세금계산서',\n '0102': '영세율 세금계산서',\n '0103': '위수탁 세금계산서',\n '0105': '영세율 위수탁 세금계산서',\n '0201': '수정 일반 세금계산서',\n '0202': '수정 영세율 세금계산서',\n '0203': '수정 위수탁 세금계산서',\n '0204': '수정 수입 세금계산서',\n '0205': '수정 영세율 위수탁 세금계산서',\n '0301': '일반 계산서',\n '0303': '위수탁 계산서',\n '0304': '수입 계산서',\n '0401': '수정 일반 계산서',\n '0403': '수정 위수탁 계산서',\n '0404': '정 수입 계산서'\n}\n\nexport const PURPOSE = {\n '01': '영수',\n '02': '청구'\n}\n\n@customElement('tax-invoice-list-page')\nexport class TaxInvoiceListPage extends localize(i18next)(ScopedElementsMixin(PageView)) {\n static styles = [\n ScrollbarStyles,\n CommonGristStyles,\n css`\n :host {\n display: flex;\n\n width: 100%;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n `\n ]\n\n @property({ type: Object }) gristConfig: any\n @property({ type: String }) mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'\n\n @query('ox-grist') private grist!: DataGrist\n\n get context() {\n return {\n title: i18next.t('title.tax invoice list'),\n help: 'tax-invoice/tax-invoice',\n actions: [\n {\n title: i18next.t('button.delete'),\n action: this._deleteTaxInvoice.bind(this),\n ...CommonButtonStyles.delete\n }\n ],\n exportable: {\n name: i18next.t('title.tax invoice list'),\n data: this.exportHandler.bind(this),\n accept: ['xlsx']\n }\n }\n }\n\n render() {\n const mode = 'GRID'\n\n return html`\n <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\">\n <div id=\"filters\">\n <ox-filters-form autofocus></ox-filters-form>\n </div>\n </div>\n </ox-grist>\n `\n // <button @click=${() => this.createTaxInvoice('3')}>생성</button>\n }\n\n async pageInitialized(lifecycle: any) {\n this.gristConfig = {\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'reorder',\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this.openDetailPopup(record.id)\n }\n }\n },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: {\n editable: true\n },\n filter: 'search',\n width: 150\n },\n {\n type: 'string',\n name: 'category',\n header: i18next.t('field.tax invoice category'),\n record: {\n renderer: value => CATEGORY[value],\n align: 'center'\n },\n width: 80\n },\n {\n type: 'date',\n name: 'issueDate',\n header: i18next.t('field.issue date'),\n record: {\n align: 'center'\n },\n filter: {\n type: 'date',\n operator: 'between'\n },\n width: 120\n },\n {\n type: 'date',\n name: 'signatureDate',\n header: i18next.t('field.signature date'),\n record: {\n align: 'center'\n },\n width: 120\n },\n {\n type: 'string',\n name: 'supplierBusinessRegistrationNumber',\n header: i18next.t('field.supplier business registration number'),\n record: {\n align: 'center'\n },\n width: 150\n },\n {\n type: 'string',\n name: 'supplierBusinessName',\n header: i18next.t('field.supplier business name'),\n record: {\n align: 'center'\n },\n width: 140\n },\n {\n type: 'string',\n name: 'supplierRepresentativeName',\n header: i18next.t('field.supplier representative name'),\n record: {\n align: 'center'\n },\n width: 120\n },\n {\n type: 'number',\n name: 'totalAmount',\n header: i18next.t('field.total amount'),\n record: {\n renderer: value => value && new Intl.NumberFormat('en-US').format(value),\n align: 'center'\n },\n width: 90\n },\n {\n type: 'number',\n name: 'supplyAmount',\n header: i18next.t('field.supply amount'),\n record: {\n renderer: value => value && new Intl.NumberFormat('en-US').format(value),\n align: 'center'\n },\n width: 90\n },\n {\n type: 'number',\n name: 'taxAmount',\n header: i18next.t('field.tax amount'),\n record: {\n renderer: value => value && new Intl.NumberFormat('en-US').format(value),\n align: 'center'\n },\n width: 90\n },\n {\n type: 'string',\n name: 'approvalNo',\n header: i18next.t('field.approval no'),\n record: {\n align: 'center'\n },\n width: 200\n },\n {\n type: 'string',\n name: 'invoiceType',\n header: i18next.t('field.invoice type'),\n record: {\n renderer: value => INVOICE_TYPE[value],\n align: 'center'\n },\n width: 130\n },\n {\n type: 'string',\n name: 'remark0',\n header: i18next.t('field.remark0'),\n record: {\n align: 'center'\n },\n width: 80\n },\n {\n type: 'string',\n name: 'purpose',\n header: i18next.t('field.purpose'),\n record: {\n renderer: value => PURPOSE[value],\n align: 'center'\n },\n width: 80\n },\n {\n type: 'string',\n name: 'supplierContactEmail',\n header: i18next.t('field.supplier contact email'),\n record: {\n align: 'center'\n },\n width: 140\n },\n {\n type: 'string',\n name: 'buyer1stContactEmail',\n header: i18next.t('field.buyer 1st contact email'),\n record: {\n align: 'center'\n },\n width: 140\n },\n {\n type: 'string',\n name: 'buyer2ndContactEmail',\n header: i18next.t('field.buyer 2nd contact email'),\n record: {\n align: 'center'\n },\n width: 140\n }\n ],\n rows: {\n selectable: {\n multiple: true\n },\n appendable: false\n },\n sorters: [\n {\n name: 'issueDate'\n }\n ]\n }\n }\n\n async pageUpdated(changes: any, lifecycle: any) {\n if (this.active) {\n // do something here when this page just became as active\n }\n }\n\n async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {\n responses: taxInvoices(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n name\n category\n issueDate\n signatureDate\n supplierBusinessRegistrationNumber\n supplierBusinessName\n supplierRepresentativeName\n totalAmount\n supplyAmount\n taxAmount\n approvalNo\n invoiceType\n remark0\n purpose\n supplierContactEmail\n buyer1stContactEmail\n buyer2ndContactEmail\n updater {\n id\n name\n }\n updatedAt\n }\n total\n }\n }\n `,\n variables: {\n filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return {\n total: response.data.responses.total || 0,\n records: response.data.responses.items || []\n }\n }\n\n async _deleteTaxInvoice() {\n if (\n await OxPrompt.open({\n title: i18next.t('text.are_you_sure'),\n text: i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }),\n confirmButton: { text: i18next.t('button.confirm') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const ids = this.grist.selected.map(record => record.id)\n if (ids && ids.length > 0) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($ids: [String!]!) {\n deleteTaxInvoices(ids: $ids)\n }\n `,\n variables: {\n ids\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n notify({\n message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })\n })\n }\n }\n }\n }\n\n async _updateTaxInvoice() {\n let patches = this.grist.dirtyRecords\n if (patches && patches.length) {\n patches = patches.map(patch => {\n let patchField: any = patch.id ? { id: patch.id } : {}\n const dirtyFields = patch.__dirtyfields__\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = patch.__dirty__\n\n return patchField\n })\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($patches: [TaxInvoicePatch!]!) {\n updateMultipleTaxInvoice(patches: $patches) {\n id\n }\n }\n `,\n variables: {\n patches\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n notify({ message: i18next.t('text.info_x_successfully', { x: i18next.t('text.save') }) })\n } else {\n notify({ message: i18next.t('error.fail-save'), level: 'error' })\n }\n }\n }\n\n async createTaxInvoice(num: string) {\n const year = '2024'\n const month = '01'\n const day = '02'\n const firstWordOfNum = num.slice(0, 1)\n const firstWordOfNumNext = String(Number(num.slice(0, 1)) + 1).slice(0, 1)\n const supplyAmount = 1000000 * Number(firstWordOfNum)\n const taxAmount = supplyAmount / 10\n\n const taxInvoice = {\n name: '설명' + num.repeat(3),\n category: '10',\n approvalNo: year + month + day + '-' + firstWordOfNum.repeat(8) + '-' + firstWordOfNum.repeat(8),\n issueDate: `${year}-${month}-${day}`,\n signatureDate: `${year}-${month}-${Number(day) + 1}`,\n invoiceType: '0101',\n purpose: '02',\n remark0: '비고' + num.repeat(3),\n supplierBusinessRegistrationCategory: '01',\n supplierBusinessRegistrationNumber: `${firstWordOfNum.repeat(3)}-${firstWordOfNum.repeat(2)}-${firstWordOfNum.repeat(5)}`,\n supplierBusinessName: '공급자 회사명' + firstWordOfNum.repeat(3),\n supplierRepresentativeName: '공급자 대표자' + firstWordOfNum.repeat(3),\n supplierAddress: '공급자 주소' + firstWordOfNum.repeat(3),\n supplierBusinessType: '공급자 업태' + firstWordOfNum.repeat(3),\n supplierIndustryType: '공급자 업종' + firstWordOfNum.repeat(3),\n supplierDepartment: '공급자 담당 부서' + firstWordOfNum.repeat(3),\n supplierContactName: '공급자 담당자명' + firstWordOfNum.repeat(3),\n supplierContactPhone: `010-${firstWordOfNum.repeat(4)}-${firstWordOfNum.repeat(4)}`,\n supplierContactEmail: '공급자 담당자 이메일' + firstWordOfNum.repeat(3),\n supplierContactCellPhone: '공급자 핸드폰 번호' + firstWordOfNum.repeat(3),\n\n buyerBusinessRegistrationCategory: '01',\n buyerBusinessRegistrationNumber: `${firstWordOfNumNext.repeat(3)}-${firstWordOfNumNext.repeat(2)}-${firstWordOfNumNext.repeat(5)}`,\n buyerBusinessName: '공급자 회사명' + firstWordOfNum.repeat(3),\n buyerRepresentativeName: '공급자 대표자' + firstWordOfNum.repeat(3),\n buyerAddress: '공급자 주소' + firstWordOfNum.repeat(3),\n buyerBusinessType: '공급자 업태' + firstWordOfNum.repeat(3),\n buyerIndustryType: '공급자 업종' + firstWordOfNum.repeat(3),\n buyer1stDepartment: '공급자 담당 부서 1st' + firstWordOfNum.repeat(3),\n buyer1stContactName: '공급자 담당자명 1st' + firstWordOfNum.repeat(3),\n buyer1stContactPhone: `011-${firstWordOfNumNext.repeat(4)}-${firstWordOfNumNext.repeat(4)}`,\n buyer1stContactEmail: '공급자 담당자 이메일 1st' + firstWordOfNum.repeat(3),\n buyer1stContactCellPhone: '공급자 핸드폰 번호 1st' + firstWordOfNum.repeat(3),\n buyer2ndDepartment: '공급자 담당 부서 2nd' + firstWordOfNum.repeat(3),\n buyer2ndContactName: '공급자 담당자명 2nd' + firstWordOfNum.repeat(3),\n buyer2ndContactPhone: `022-${firstWordOfNumNext.repeat(4)}-${firstWordOfNumNext.repeat(4)}`,\n buyer2ndContactEmail: '공급자 담당자 이메일 2nd' + firstWordOfNum.repeat(3),\n buyer2ndContactCellPhone: '공급자 핸드폰 번호 2nd' + firstWordOfNum.repeat(3),\n\n paymentAmountCash: 0,\n paymentAmountCheck: 0,\n paymentAmountPromissoryNote: 0,\n paymentAmountAccountsReceivable: 0,\n supplyAmount: supplyAmount,\n taxAmount: taxAmount,\n totalAmount: supplyAmount + taxAmount\n }\n\n const taxInvoiceItems = [\n {\n sequence: 1,\n supplyDate: `${year}-${month}-${day}`,\n itemName: '아이템01',\n specification: 'EA',\n quantity: 1,\n unitPrice: 100000,\n supplyPrice: 100000,\n taxPrice: 10000,\n remark: '아이템 비고 01'\n },\n {\n sequence: 2,\n supplyDate: `${year}-${month}-${Number(day) + 1}`,\n itemName: '아이템02',\n specification: 'EA',\n quantity: 2,\n unitPrice: 100000,\n supplyPrice: 200000,\n taxPrice: 20000,\n remark: '아이템 비고 02'\n }\n ]\n\n const response = await client.mutate({\n mutation: gql`\n mutation CreateTaxInvoice($taxInvoice: NewTaxInvoice!, $taxInvoiceItems: [NewTaxInvoiceItem!]!) {\n createTaxInvoice(taxInvoice: $taxInvoice, taxInvoiceItems: $taxInvoiceItems) {\n id\n }\n }\n `,\n variables: {\n taxInvoice,\n taxInvoiceItems\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n notify({\n message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })\n })\n }\n }\n\n async exportHandler() {\n const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records\n const targetFieldSet = new Set(['id', 'name'])\n\n return exportTargets.map(taxInvoice => {\n let tempObj = {}\n for (const field of targetFieldSet) {\n tempObj[field] = taxInvoice[field]\n }\n\n return tempObj\n })\n }\n\n private openDetailPopup(id: string) {\n openPopup(html` <tax-invoice-detail-popup .taxInvoiceId=${id}> </tax-invoice-detail-popup>`, {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.tax invoice detail')\n })\n }\n}\n"]}
1
+ {"version":3,"file":"tax-invoice-list-page.js","sourceRoot":"","sources":["../../../client/pages/tax-invoice/tax-invoice-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist'\n\nimport { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'\nimport { PageView } from '@operato/shell'\nimport { css, html } from 'lit'\nimport { customElement, property, state, query } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { DataGrist, FetchOption } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport { OxPrompt } from '@operato/popup'\nimport { isMobileDevice } from '@operato/utils'\nimport gql from 'graphql-tag'\n\nimport './tax-invoice-detail-popup'\n\nexport enum Category {\n EXPORT = '10',\n IMPORT = '20',\n NTS = '30'\n}\nexport const CATEGORY = {\n [Category.EXPORT]: '매출',\n [Category.IMPORT]: '매입',\n [Category.NTS]: 'NTS'\n}\n\nexport enum InvoiceType {\n 'TAX_INVOICE' = '0101',\n 'SMALL_BUSINESS_TAX_INVOICE' = '0102',\n 'CONSIGNMENT_TAX_INVOICE' = '0103',\n 'SMALL_BUSINESS_CONSIGNMENT_TAX_INVOICE' = '0105',\n 'REVISED_TAX_INVOICE' = '0201',\n 'REVISED_SMALL_BUSINESS_TAX_INVOICE' = '0202',\n 'REVISED_CONSIGNMENT_TAX_INVOICE' = '0203',\n 'REVISED_IMPORT_TAX_INVOICE' = '0204',\n 'REVISED_SMALL_BUSINESS_CONSIGNMENT_TAX_INVOICE' = '0205',\n 'INVOICE' = '0301',\n 'CONSIGNMENT_INVOICE' = '0303',\n 'IMPORT_INVOICE' = '0304',\n 'REVISED_INVOICE' = '0401',\n 'REVISED_CONSIGNMENT_INVOICE' = '0403',\n 'REVISED_IMPORT_INVOICE' = '0404'\n}\nexport const INVOICE_TYPE = {\n [InvoiceType.TAX_INVOICE]: '일반 전자세금계산서',\n [InvoiceType.SMALL_BUSINESS_TAX_INVOICE]: '영세율 전자세금계산서',\n [InvoiceType.CONSIGNMENT_TAX_INVOICE]: '위수탁 전자세금계산서',\n [InvoiceType.SMALL_BUSINESS_CONSIGNMENT_TAX_INVOICE]: '영세율 위수탁 전자세금계산서',\n [InvoiceType.REVISED_TAX_INVOICE]: '수정 일반 전자세금계산서',\n [InvoiceType.REVISED_SMALL_BUSINESS_TAX_INVOICE]: '수정 영세율 전자세금계산서',\n [InvoiceType.REVISED_CONSIGNMENT_TAX_INVOICE]: '수정 위수탁 전자세금계산서',\n [InvoiceType.REVISED_IMPORT_TAX_INVOICE]: '수정 수입 전자세금계산서',\n [InvoiceType.REVISED_SMALL_BUSINESS_CONSIGNMENT_TAX_INVOICE]: '수정 영세율 위수탁 전자세금계산서',\n [InvoiceType.INVOICE]: '일반 전자계산서',\n [InvoiceType.CONSIGNMENT_INVOICE]: '위수탁 전자계산서',\n [InvoiceType.IMPORT_INVOICE]: '수입 전자계산서',\n [InvoiceType.REVISED_INVOICE]: '수정 일반 전자계산서',\n [InvoiceType.REVISED_CONSIGNMENT_INVOICE]: '수정 위수탁 전자계산서',\n [InvoiceType.REVISED_IMPORT_INVOICE]: '수정 수입 전자계산서'\n}\n\nexport enum Purpose {\n RECEIPT = '01',\n INVOICE = '02'\n}\nexport const PURPOSE = {\n [Purpose.RECEIPT]: '영수',\n [Purpose.INVOICE]: '청구'\n}\n\nexport enum BusinessRegistrationCategory {\n BUSINESS_REGISTRATION_NUMBER = '01', // 사업자등록번호\n RESIDENT_REGISTRATION_NUMBER = '02', // 주민등록번호\n FOREIGNER_REGISTRATION_NUMBER = '03' // 외국인등록번호\n}\nexport const BUSINESS_REGISTRATION_CATEGORY = {\n [BusinessRegistrationCategory.BUSINESS_REGISTRATION_NUMBER]: '사업자등록번호',\n [BusinessRegistrationCategory.RESIDENT_REGISTRATION_NUMBER]: '주민등록번호',\n [BusinessRegistrationCategory.FOREIGNER_REGISTRATION_NUMBER]: '외국인'\n}\n\n@customElement('tax-invoice-list-page')\nexport class TaxInvoiceListPage extends localize(i18next)(ScopedElementsMixin(PageView)) {\n static styles = [\n ScrollbarStyles,\n CommonGristStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n width: 100%;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n div.summary {\n display: grid;\n grid-template-columns: 0.7fr 1fr 0.7fr 1fr 0.7fr 1fr 0.7fr 1fr;\n border: solid #d3dbe5;\n border-width: 2px 0;\n margin: 15px 40px;\n align-content: center;\n\n span.title {\n background-color: #e9edf6;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 35px;\n font-weight: bold;\n }\n span.value {\n padding-left: 10px;\n display: flex;\n align-items: center;\n height: 35px;\n }\n }\n `\n ]\n\n @property({ type: Object }) gristConfig: any\n @state() summary: { cnt: number; total_amount: number; supply_amount: number; tax_amount: number } | null = null\n\n @query('ox-grist') private grist!: DataGrist\n\n get context() {\n return {\n title: i18next.t('title.tax invoice list'),\n help: 'tax-invoice/tax-invoice',\n actions: [\n {\n title: i18next.t('button.memo save'),\n action: this._updateTaxInvoice.bind(this),\n ...CommonButtonStyles.save\n }\n ],\n exportable: {\n name: i18next.t('title.tax invoice list'),\n data: this.exportHandler.bind(this),\n accept: ['xlsx']\n }\n }\n }\n\n render() {\n const mode = 'GRID'\n const summary = this.summary\n\n return html`\n <div class=\"summary\">\n <span class=\"title\">${i18next.t('field.summary total count')}</span>\n <span class=\"value\">${this._numberFormat(summary?.cnt)}</span>\n <span class=\"title\">${i18next.t('field.summary total amount')}</span>\n <span class=\"value\">${this._numberFormat(summary?.total_amount)}</span>\n <span class=\"title\">${i18next.t('field.summary supply amount')}</span>\n <span class=\"value\">${this._numberFormat(summary?.supply_amount)}</span>\n <span class=\"title\">${i18next.t('field.summary tax amount')}</span>\n <span class=\"value\">${this._numberFormat(summary?.tax_amount)}</span>\n </div>\n\n <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\">\n <div id=\"filters\">\n <ox-filters-form autofocus></ox-filters-form>\n </div>\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle: any) {\n this.gristConfig = {\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'reorder',\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this.openDetailPopup(record.id)\n }\n }\n },\n {\n type: 'string',\n name: 'memo',\n header: i18next.t('field.memo'),\n record: {\n editable: true\n },\n filter: 'search',\n width: 150\n },\n {\n type: 'string',\n name: 'category',\n header: i18next.t('field.tax invoice category'),\n record: {\n renderer: value => CATEGORY[value],\n classifier: function (record, rowIndex) {\n return {\n emphasized: record.category === Category.EXPORT ? ['#c6daf6', 'black'] : ['#fedbde', 'black']\n }\n },\n align: 'center'\n },\n filter: {\n type: 'select',\n value: Category.EXPORT,\n options: () => [\n {\n display: '전체',\n value: ''\n },\n {\n display: '매출',\n value: Category.EXPORT\n },\n {\n display: '매입',\n value: Category.IMPORT\n }\n ]\n },\n width: 80\n },\n {\n type: 'date',\n name: 'issueDate',\n header: i18next.t('field.issue date'),\n record: {\n align: 'center'\n },\n filter: {\n type: 'date',\n operator: 'between'\n },\n width: 120\n },\n {\n type: 'date',\n name: 'signatureDate',\n header: i18next.t('field.signature date'),\n record: {\n align: 'center'\n },\n width: 120\n },\n {\n type: 'string',\n name: 'supplierBusinessRegistrationNumber',\n header: i18next.t('field.supplier business registration number'),\n record: {\n align: 'center',\n renderer: value => value.replace(/(\\d{3})(\\d{2})(\\d{5})/g, '$1-$2-$3')\n },\n width: 150\n },\n {\n type: 'string',\n name: 'supplierBusinessName',\n header: i18next.t('field.supplier business name'),\n record: {\n align: 'center'\n },\n width: 140\n },\n {\n type: 'string',\n name: 'supplierRepresentativeName',\n header: i18next.t('field.supplier representative name'),\n record: {\n align: 'center'\n },\n width: 120\n },\n {\n type: 'number',\n name: 'totalAmount',\n header: i18next.t('field.total amount'),\n record: {\n renderer: value => value && this._numberFormat(value),\n align: 'center'\n },\n width: 90\n },\n {\n type: 'number',\n name: 'supplyAmount',\n header: i18next.t('field.supply amount'),\n record: {\n renderer: value => value && this._numberFormat(value),\n align: 'center'\n },\n width: 90\n },\n {\n type: 'number',\n name: 'taxAmount',\n header: i18next.t('field.tax amount'),\n record: {\n renderer: value => value && this._numberFormat(value),\n align: 'center'\n },\n width: 90\n },\n {\n type: 'string',\n name: 'approvalNo',\n header: i18next.t('field.approval no'),\n record: {\n align: 'center',\n renderer: value => value.replace(/(\\S{8})(\\S{8})(\\S{8})/g, '$1-$2-$3')\n },\n width: 200\n },\n {\n type: 'string',\n name: 'invoiceType',\n header: i18next.t('field.invoice type'),\n record: {\n renderer: value => INVOICE_TYPE[value],\n align: 'center'\n },\n width: 130\n },\n {\n type: 'string',\n name: 'remark0',\n header: i18next.t('field.remark0'),\n record: {\n align: 'center'\n },\n width: 80\n },\n {\n type: 'string',\n name: 'purpose',\n header: i18next.t('field.purpose'),\n record: {\n renderer: value => PURPOSE[value],\n align: 'center'\n },\n width: 80\n },\n {\n type: 'string',\n name: 'supplierContactEmail',\n header: i18next.t('field.supplier contact email'),\n record: {\n align: 'center'\n },\n width: 140\n },\n {\n type: 'string',\n name: 'buyer1stContactEmail',\n header: i18next.t('field.buyer 1st contact email'),\n record: {\n align: 'center'\n },\n width: 140\n },\n {\n type: 'string',\n name: 'buyer2ndContactEmail',\n header: i18next.t('field.buyer 2nd contact email'),\n record: {\n align: 'center'\n },\n width: 140\n }\n ],\n rows: {\n selectable: {\n multiple: true\n },\n appendable: false\n },\n sorters: [\n {\n name: 'issueDate'\n }\n ]\n }\n }\n\n async pageUpdated(changes: any, lifecycle: any) {\n if (this.active) {\n // do something here when this page just became as active\n }\n }\n\n async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!], $summaryFilters: [Filter!]) {\n taxInvoices(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n memo\n category\n issueDate\n signatureDate\n supplierBusinessRegistrationNumber\n supplierBusinessName\n supplierRepresentativeName\n totalAmount\n supplyAmount\n taxAmount\n approvalNo\n invoiceType\n remark0\n purpose\n supplierContactEmail\n buyer1stContactEmail\n buyer2ndContactEmail\n updater {\n id\n name\n }\n updatedAt\n }\n total\n }\n taxInvoicesSummary(filters: $summaryFilters) {\n summary\n }\n }\n `,\n variables: {\n filters,\n pagination: { page, limit },\n sortings,\n summaryFilters: filters\n }\n })\n\n // 합계 필드 갱신\n this.summary = response.data.taxInvoicesSummary.summary\n\n return {\n total: response.data.taxInvoices.total || 0,\n records: response.data.taxInvoices.items || []\n }\n }\n\n async _updateTaxInvoice() {\n let patches = this.grist.dirtyRecords\n if (patches && patches.length) {\n patches = patches.map(patch => {\n let patchField: any = patch.id ? { id: patch.id } : {}\n const dirtyFields = patch.__dirtyfields__\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = patch.__dirty__\n\n return patchField\n })\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($patches: [TaxInvoicePatch!]!) {\n updateMultipleTaxInvoice(patches: $patches) {\n id\n }\n }\n `,\n variables: {\n patches\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n notify({ message: i18next.t('text.info_x_successfully', { x: i18next.t('text.save') }) })\n } else {\n notify({ message: i18next.t('error.fail-save'), level: 'error' })\n }\n }\n }\n\n async exportHandler() {\n const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records\n const targetFieldSet = new Set(['id', 'name'])\n\n return exportTargets.map(taxInvoice => {\n let tempObj = {}\n for (const field of targetFieldSet) {\n tempObj[field] = taxInvoice[field]\n }\n\n return tempObj\n })\n }\n\n private openDetailPopup(id: string) {\n openPopup(html` <tax-invoice-detail-popup .taxInvoiceId=${id}> </tax-invoice-detail-popup>`, {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.tax invoice detail')\n })\n }\n\n private _numberFormat = (num: number | undefined) => Intl.NumberFormat('en-US').format(num || 0)\n}\n"]}
@@ -31,6 +31,6 @@ export declare class TaxInvoiceApiPage extends TaxInvoiceApiPage_base {
31
31
  }>;
32
32
  _deleteTaxInvoiceApi(): Promise<void>;
33
33
  _updateTaxInvoiceApi(): Promise<void>;
34
- getAttributeSetForDomain(): Promise<any>;
34
+ getAttributeSetForEntity(): Promise<any>;
35
35
  }
36
36
  export {};