@things-factory/tax-invoice 8.0.0 → 9.0.0-beta.3

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 (51) hide show
  1. package/dist-client/tsconfig.tsbuildinfo +1 -1
  2. package/dist-server/tsconfig.tsbuildinfo +1 -1
  3. package/package.json +8 -8
  4. package/client/bootstrap.ts +0 -1
  5. package/client/index.ts +0 -0
  6. package/client/pages/main.ts +0 -25
  7. package/client/pages/tax-audit-result/tax-audit-result-importer.ts +0 -87
  8. package/client/pages/tax-audit-result/tax-audit-result-list-page.ts +0 -331
  9. package/client/pages/tax-invoice/tax-invoice-detail-popup.ts +0 -454
  10. package/client/pages/tax-invoice/tax-invoice-list-page.ts +0 -525
  11. package/client/pages/tax-invoice-api/tax-invoice-api-page.ts +0 -418
  12. package/client/pages/tax-invoice-company/tax-invoice-company-list-page.ts +0 -447
  13. package/client/pages/tax-invoice-send/company-list-popup.ts +0 -188
  14. package/client/pages/tax-invoice-send/tax-invoice-send-page.ts +0 -196
  15. package/client/pages/tax-invoice-send/tax-invoice-send.ts +0 -1181
  16. package/client/route.ts +0 -23
  17. package/client/tsconfig.json +0 -11
  18. package/server/index.ts +0 -2
  19. package/server/routes.ts +0 -28
  20. package/server/service/index.ts +0 -37
  21. package/server/service/tax-audit-result/event-subscriber.ts +0 -17
  22. package/server/service/tax-audit-result/index.ts +0 -9
  23. package/server/service/tax-audit-result/tax-audit-result-history.ts +0 -120
  24. package/server/service/tax-audit-result/tax-audit-result-mutation.ts +0 -198
  25. package/server/service/tax-audit-result/tax-audit-result-query.ts +0 -65
  26. package/server/service/tax-audit-result/tax-audit-result-type.ts +0 -61
  27. package/server/service/tax-audit-result/tax-audit-result.ts +0 -99
  28. package/server/service/tax-invoice/index.ts +0 -6
  29. package/server/service/tax-invoice/tax-invoice-mutation.ts +0 -138
  30. package/server/service/tax-invoice/tax-invoice-query.ts +0 -99
  31. package/server/service/tax-invoice/tax-invoice-type.ts +0 -236
  32. package/server/service/tax-invoice/tax-invoice-util.ts +0 -224
  33. package/server/service/tax-invoice/tax-invoice.ts +0 -393
  34. package/server/service/tax-invoice-api/index.ts +0 -6
  35. package/server/service/tax-invoice-api/tax-invoice-api-mutation.ts +0 -275
  36. package/server/service/tax-invoice-api/tax-invoice-api-query.ts +0 -40
  37. package/server/service/tax-invoice-api/tax-invoice-api-type.ts +0 -83
  38. package/server/service/tax-invoice-api/tax-invoice-api.ts +0 -128
  39. package/server/service/tax-invoice-company/index.ts +0 -6
  40. package/server/service/tax-invoice-company/tax-invoice-company-mutation.ts +0 -84
  41. package/server/service/tax-invoice-company/tax-invoice-company-query.ts +0 -86
  42. package/server/service/tax-invoice-company/tax-invoice-company-type.ts +0 -105
  43. package/server/service/tax-invoice-company/tax-invoice-company.ts +0 -128
  44. package/server/service/tax-invoice-item/index.ts +0 -6
  45. package/server/service/tax-invoice-item/tax-invoice-item-mutation.ts +0 -128
  46. package/server/service/tax-invoice-item/tax-invoice-item-query.ts +0 -60
  47. package/server/service/tax-invoice-item/tax-invoice-item-type.ts +0 -77
  48. package/server/service/tax-invoice-item/tax-invoice-item.ts +0 -95
  49. package/server/service/unipost-api/tax-invoice-inquiry.ts +0 -99
  50. package/server/service/unipost-api/tax-invoice-send.ts +0 -32
  51. package/server/tsconfig.json +0 -10
@@ -1,454 +0,0 @@
1
- import '@operato/data-grist'
2
-
3
- import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'
4
- import { css, html, LitElement } from 'lit'
5
- import { customElement, property, state } from 'lit/decorators.js'
6
- import { client } from '@operato/graphql'
7
- import { i18next, localize } from '@operato/i18n'
8
- import gql from 'graphql-tag'
9
- import { INVOICE_TYPE } from './tax-invoice-list-page'
10
-
11
- @customElement('tax-invoice-detail-popup')
12
- export class TaxInvoiceDetailPopup extends localize(i18next)(LitElement) {
13
- static styles = [
14
- ScrollbarStyles,
15
- CommonHeaderStyles,
16
- css`
17
- :host {
18
- display: flex;
19
- flex-direction: column;
20
- background-color: var(--md-sys-color-background);
21
- width: 100%;
22
- padding: 15px;
23
- font-size: 14px;
24
- overflow-y: scroll;
25
- }
26
-
27
- input {
28
- border: var(--border-dim-color);
29
- padding: var(--spacing-small) var(--spacing-medium);
30
- max-width: 100px;
31
- font: var(--input-font);
32
- }
33
-
34
- table {
35
- border: solid;
36
- border-width: 2px 0;
37
- border-collapse: collapse;
38
- border-spacing: 0;
39
- }
40
-
41
- .title table {
42
- border-color: #d3dbe5;
43
- width: 100%;
44
- height: 33px;
45
-
46
- th {
47
- background-color: #e9edf6;
48
- }
49
- td {
50
- padding-left: 10px;
51
- }
52
- }
53
-
54
- div.body {
55
- margin-top: 15px;
56
- font-size: 14px;
57
-
58
- div.data {
59
- display: flex;
60
- margin-top: 5px;
61
-
62
- table {
63
- flex: 1;
64
-
65
- td,
66
- th {
67
- padding: 5px;
68
- min-width: 60px;
69
- }
70
- td {
71
- padding-left: 8px;
72
- }
73
- th.target {
74
- width: 25px;
75
- writing-mode: vertical-rl;
76
- min-width: unset;
77
- }
78
-
79
- &.supplier {
80
- border-color: #f64843;
81
-
82
- td,
83
- th {
84
- background-color: #fef5f7;
85
- border: solid 1.5px #f5b1b1;
86
- }
87
- th.target {
88
- background-color: #fedbde;
89
- }
90
- }
91
- &.buyer {
92
- border-color: #007ed9;
93
-
94
- td,
95
- th {
96
- background-color: #f7f7ff;
97
- border: solid 1.5px #a7bcff;
98
- }
99
- th.target {
100
- background-color: #c6daf6;
101
- }
102
- }
103
- }
104
- }
105
-
106
- div.items,
107
- div.info,
108
- div.summary {
109
- margin-top: 15px;
110
-
111
- table {
112
- width: 100%;
113
- border-color: #000;
114
- border-width: 2px 0px 0px 0px;
115
-
116
- th {
117
- background-color: #e9edf5;
118
- }
119
- th,
120
- td {
121
- border: solid 1.5px #c4d2ff;
122
- padding: 5px;
123
- text-align: center;
124
- }
125
- }
126
- }
127
-
128
- div.summary {
129
- display: flex;
130
-
131
- & > table {
132
- flex: 6.7;
133
- }
134
- & > div {
135
- flex: 3.2;
136
- display: flex;
137
- justify-content: center;
138
- align-items: center;
139
- border: 1.5px solid #c4d2ff;
140
- border-top: 2px solid #000;
141
- }
142
- }
143
- }
144
- `
145
- ]
146
-
147
- @property({ type: String }) taxInvoiceId: string = ''
148
- @state() detail: any = {}
149
-
150
- render() {
151
- return html`
152
- <div class="title">
153
- <table>
154
- <tr>
155
- <th>${i18next.t('field.approval no')}</th>
156
- <td>${this.detail?.approvalNo?.replace(/(\S{8})(\S{8})(\S{8})/g, '$1-$2-$3')}</td>
157
- </tr>
158
- </table>
159
- </div>
160
-
161
- <div class="body">
162
- <div class="invoice-type">* ${INVOICE_TYPE[this.detail.invoiceType]}</div>
163
- <div class="data">
164
- <table class="supplier">
165
- <colgroup>
166
- <col width="150px" />
167
- <col width="18%" />
168
- <col width="32%" />
169
- <col width="18%" />
170
- <col width="32%" />
171
- </colgroup>
172
- <tr>
173
- <th rowspan="6" class="target">${i18next.t('field.tax invoice supplier')}</th>
174
- <th>${i18next.t('field.short business registration number')}</th>
175
- <td>${this.detail?.supplierBusinessRegistrationNumber?.replace(/(\d{3})(\d{2})(\d{5})/g, '$1-$2-$3')}</td>
176
- <th>${i18next.t('field.short branch identification')}</th>
177
- <td>${this.detail.supplierBranchIdentification}</td>
178
- </tr>
179
- <tr>
180
- <th>${i18next.t('field.short tax invoice business name')}</th>
181
- <td>${this.detail.supplierBusinessName}</td>
182
- <th>${i18next.t('field.short representative name')}</th>
183
- <td>${this.detail.supplierRepresentativeName}</td>
184
- </tr>
185
- <tr>
186
- <th>${i18next.t('field.address')}</th>
187
- <td colspan="3">${this.detail.supplierAddress}</td>
188
- </tr>
189
- <tr>
190
- <th>${i18next.t('field.business type')}</th>
191
- <td>${this.detail.supplierBusinessType}</td>
192
- <th>${i18next.t('field.industry type')}</th>
193
- <td>${this.detail.supplierIndustryType}</td>
194
- </tr>
195
- <tr>
196
- <th rowspan="2">${i18next.t('field.email')}</th>
197
- <td rowspan="2" colspan="3">${this.detail.supplierContactEmail}</td>
198
- </tr>
199
- <tr></tr>
200
- </table>
201
-
202
- <table class="buyer">
203
- <colgroup>
204
- <col width="150px" />
205
- <col width="18%" />
206
- <col width="32%" />
207
- <col width="18%" />
208
- <col width="32%" />
209
- </colgroup>
210
- <tr>
211
- <th rowspan="6" class="target">${i18next.t('field.tax invoice buyer')}</th>
212
- <th>${i18next.t('field.short business registration number')}</th>
213
- <td>${this.detail?.buyerBusinessRegistrationNumber?.replace(/(\d{3})(\d{2})(\d{5})/g, '$1-$2-$3')}</td>
214
- <th>${i18next.t('field.short branch identification')}</th>
215
- <td>${this.detail.buyerBranchIdentification}</td>
216
- </tr>
217
- <tr>
218
- <th>${i18next.t('field.short tax invoice business name')}</th>
219
- <td>${this.detail.buyerBusinessName}</td>
220
- <th>${i18next.t('field.short representative name')}</th>
221
- <td>${this.detail.buyerRepresentativeName}</td>
222
- </tr>
223
- <tr>
224
- <th>${i18next.t('field.address')}</th>
225
- <td colspan="3">${this.detail.buyerAddress}</td>
226
- </tr>
227
- <tr>
228
- <th>${i18next.t('field.business type')}</th>
229
- <td>${this.detail.buyerBusinessType}</td>
230
- <th>${i18next.t('field.industry type')}</th>
231
- <td>${this.detail.buyerIndustryType}</td>
232
- </tr>
233
- <tr>
234
- <th>${i18next.t('field.email')}</th>
235
- <td colspan="3">${this.detail.buyer1stContactEmail}</td>
236
- </tr>
237
- <tr>
238
- <th>${i18next.t('field.email')}</th>
239
- <td colspan="3">${this.detail.buyer2ndContactEmail}</td>
240
- </tr>
241
- </table>
242
- </div>
243
-
244
- <div class="info">
245
- <table>
246
- <colgroup>
247
- <col width="15%" />
248
- <col width="15%" />
249
- <col width="15%" />
250
- <col width="15%" />
251
- <col width="40%" />
252
- </colgroup>
253
- <tr>
254
- <th>${i18next.t('field.issue date')}</th>
255
- <th>${i18next.t('field.supply amount')}</th>
256
- <th>${i18next.t('field.tax amount')}</th>
257
- <th>${i18next.t('field.modification reason')}</th>
258
- <th>${i18next.t('field.remark0')}</th>
259
- </tr>
260
- <tr>
261
- <td>${this.detail.issueDate?.split('T')[0]}</td>
262
- <td>${this._numberFormat(this.detail.supplyAmount)}</td>
263
- <td>${this._numberFormat(this.detail.taxAmount)}</td>
264
- <td>${this.detail.modificationReason}</td>
265
- <td>${this.detail.remark0}</td>
266
- </tr>
267
- </table>
268
- </div>
269
-
270
- <div class="items">
271
- <table>
272
- <colgroup>
273
- <col width="4%" />
274
- <col width="4%" />
275
- <col width="15%" />
276
- <col width="9%" />
277
- <col width="9%" />
278
- <col width="13%" />
279
- <col width="13%" />
280
- <col width="13%" />
281
- <col width="20%" />
282
- </colgroup>
283
- <tr>
284
- <th>${i18next.t('field.tax invoice month')}</th>
285
- <th>${i18next.t('field.tax invoice day')}</th>
286
- <th>${i18next.t('field.tax invoice item name')}</th>
287
- <th>${i18next.t('field.tax invoice ea')}</th>
288
- <th>${i18next.t('field.tax invoice quantity')}</th>
289
- <th>${i18next.t('field.tax invoice price')}</th>
290
- <th>${i18next.t('field.supply amount')}</th>
291
- <th>${i18next.t('field.tax amount')}</th>
292
- <th>${i18next.t('field.remark0')}</th>
293
- </tr>
294
-
295
- ${this.detail.taxInvoiceItems?.map(
296
- item => html`
297
- <tr>
298
- <td>${item.supplyDate.split('-')[1]}</td>
299
- <td>${item.supplyDate.split('-')[2]?.split('T')[0]}</td>
300
- <td>${item.itemName}</td>
301
- <td>${item.specification}</td>
302
- <td>${item.quantity}</td>
303
- <td>${this._numberFormat(item.unitPrice)}</td>
304
- <td>${this._numberFormat(item.supplyPrice)}</td>
305
- <td>${this._numberFormat(item.taxPrice)}</td>
306
- <td>${item.remark}</td>
307
- </tr>
308
- `
309
- )}
310
- </table>
311
- </div>
312
-
313
- <div class="summary">
314
- <table>
315
- <colgroup>
316
- <col width="20%" />
317
- <col width="20%" />
318
- <col width="20%" />
319
- <col width="20%" />
320
- <col width="20%" />
321
- </colgroup>
322
- <tr>
323
- <th>${i18next.t('field.total amount')}</th>
324
- <th>${i18next.t('field.tax invoice payment cash')}</th>
325
- <th>${i18next.t('field.tax invoice payment check')}</th>
326
- <th>${i18next.t('field.tax invoice payment promissory note')}</th>
327
- <th>${i18next.t('field.tax invoice payment accounts receivable')}</th>
328
- </tr>
329
- <tr>
330
- <td>${this._numberFormat(this.detail.totalAmount)}</td>
331
- <td>${this._numberFormat(this.detail.paymentAmountCash)}</td>
332
- <td>${this._numberFormat(this.detail.paymentAmountCheck)}</td>
333
- <td>${this._numberFormat(this.detail.paymentAmountPromissoryNote)}</td>
334
- <td>${this._numberFormat(this.detail.paymentAmountAccountsReceivable)}</td>
335
- </tr>
336
- </table>
337
- <div>
338
- ${i18next.t('text.tax invoice description payment', {
339
- value: i18next.t(`text.tax invoice description purpose ${this.detail.purpose}`)
340
- })}
341
- </div>
342
- </div>
343
- </div>
344
- `
345
- }
346
-
347
- async updated(changed) {
348
- if (changed.has('taxInvoiceId')) {
349
- this.detail = await this.getTaxInvoiceDetailById(this.taxInvoiceId)
350
- }
351
- }
352
-
353
- private async getTaxInvoiceDetailById(id: string) {
354
- if (!id) return {}
355
-
356
- const response = await client.query({
357
- query: gql`
358
- query ($id: String!) {
359
- responses: taxInvoice(id: $id) {
360
- id
361
- category
362
- approvalNo
363
- originalApprovalNo
364
- issueDate
365
- signatureDate
366
- invoiceType
367
- purpose
368
- revisedReason
369
- remark0
370
- remark1
371
- remark2
372
- supplierBusinessRegistrationCategory
373
- supplierBusinessRegistrationNumber
374
- supplierBranchIdentification
375
- supplierBusinessName
376
- supplierRepresentativeName
377
- supplierAddress
378
- supplierBusinessType
379
- supplierIndustryType
380
- supplierDepartment
381
- supplierContactName
382
- supplierContactPhone
383
- supplierContactEmail
384
- supplierContactCellPhone
385
- buyerBusinessRegistrationCategory
386
- buyerBusinessRegistrationNumber
387
- buyerBranchIdentification
388
- buyerBusinessName
389
- buyerRepresentativeName
390
- buyerAddress
391
- buyerBusinessType
392
- buyerIndustryType
393
- buyer1stDepartment
394
- buyer1stContactName
395
- buyer1stContactPhone
396
- buyer1stContactEmail
397
- buyer1stContactCellPhone
398
- buyer2ndDepartment
399
- buyer2ndContactName
400
- buyer2ndContactPhone
401
- buyer2ndContactEmail
402
- buyer2ndContactCellPhone
403
- agentBusinessRegistrationCategory
404
- agentBusinessRegistrationNumber
405
- agentBranchIdentification
406
- agentBusinessName
407
- agentRepresentativeName
408
- agentAddress
409
- agentBusinessType
410
- agentIndustryType
411
- agentDepartment
412
- agentContactName
413
- agentContactPhone
414
- agentContactEmail
415
- agentContactCellPhone
416
- paymentAmountCash
417
- paymentAmountCheck
418
- paymentAmountPromissoryNote
419
- paymentAmountAccountsReceivable
420
- supplyAmount
421
- taxAmount
422
- totalAmount
423
- createdAt
424
- updater {
425
- id
426
- name
427
- }
428
- updatedAt
429
-
430
- taxInvoiceItems {
431
- id
432
- sequence
433
- supplyDate
434
- itemName
435
- specification
436
- quantity
437
- unitPrice
438
- supplyPrice
439
- taxPrice
440
- remark
441
- }
442
- }
443
- }
444
- `,
445
- variables: { id }
446
- })
447
-
448
- return response.data.responses || {}
449
- }
450
-
451
- private _numberFormat(value: number): string {
452
- return !value ? '' : new Intl.NumberFormat('en-US').format(value)
453
- }
454
- }