@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
@@ -8,7 +8,13 @@ const tax_invoice_1 = require("./tax-invoice");
8
8
  const tax_invoice_type_1 = require("./tax-invoice-type");
9
9
  const tax_invoice_item_type_1 = require("../tax-invoice-item/tax-invoice-item-type");
10
10
  const tax_invoice_item_1 = require("../tax-invoice-item/tax-invoice-item");
11
+ const tax_invoice_api_1 = require("../tax-invoice-api/tax-invoice-api");
12
+ const tax_invoice_inquiry_1 = require("../unipost-api/tax-invoice-inquiry");
11
13
  let TaxInvoiceMutation = class TaxInvoiceMutation {
14
+ constructor() {
15
+ // YYYYMMDD => YYYY-MM-DD
16
+ this._dateFormat = date => date.replace(/(\d{4})(\d{2})(\d{2})/g, '$1-$2-$3');
17
+ }
12
18
  async createTaxInvoice(taxInvoice, taxInvoiceItems, context) {
13
19
  const { domain, user, tx } = context.state;
14
20
  const newTaxInvoice = await tx.getRepository(tax_invoice_1.TaxInvoice).save(Object.assign(Object.assign({}, taxInvoice), { domain, creator: user, updater: user }));
@@ -18,28 +24,12 @@ let TaxInvoiceMutation = class TaxInvoiceMutation {
18
24
  }
19
25
  return newTaxInvoice;
20
26
  }
21
- async updateTaxInvoice(id, patch, context) {
22
- const { domain, user, tx } = context.state;
23
- const repository = tx.getRepository(tax_invoice_1.TaxInvoice);
24
- const taxInvoice = await repository.findOne({
25
- where: { domain: { id: domain.id }, id }
26
- });
27
- const result = await repository.save(Object.assign(Object.assign(Object.assign({}, taxInvoice), patch), { updater: user }));
28
- return result;
29
- }
27
+ // 그리드에서 메모 수정용 으로만
30
28
  async updateMultipleTaxInvoice(patches, context) {
31
29
  const { domain, user, tx } = context.state;
32
30
  let results = [];
33
- const _createRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === '+');
34
31
  const _updateRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === 'M');
35
32
  const taxInvoiceRepo = tx.getRepository(tax_invoice_1.TaxInvoice);
36
- if (_createRecords.length > 0) {
37
- for (let i = 0; i < _createRecords.length; i++) {
38
- const newRecord = _createRecords[i];
39
- const result = await taxInvoiceRepo.save(Object.assign(Object.assign({}, newRecord), { domain, creator: user, updater: user }));
40
- results.push(Object.assign(Object.assign({}, result), { cuFlag: '+' }));
41
- }
42
- }
43
33
  if (_updateRecords.length > 0) {
44
34
  for (let i = 0; i < _updateRecords.length; i++) {
45
35
  const updateRecord = _updateRecords[i];
@@ -63,6 +53,123 @@ let TaxInvoiceMutation = class TaxInvoiceMutation {
63
53
  });
64
54
  return true;
65
55
  }
56
+ async fetchTaxInvoiceByApi(context) {
57
+ const { domain, user, tx } = context.state;
58
+ const taxInvoiceApiRepo = tx.getRepository(tax_invoice_api_1.TaxInvoiceApi);
59
+ const taxInvoiceRepo = tx.getRepository(tax_invoice_1.TaxInvoice);
60
+ const insertedData = []; // API 호출 후 결과 회신용
61
+ const apiInfo = (await taxInvoiceApiRepo.find()).at(0);
62
+ const businessRegistrationNumber = apiInfo.businessRegistrationNumber;
63
+ const { aid = '', bearer = '' } = apiInfo === null || apiInfo === void 0 ? void 0 : apiInfo.attributes;
64
+ // API 호출하여 세금계산서 데이터 가져옴
65
+ const { approvalNoList, taxList } = await (0, tax_invoice_inquiry_1.getTaxInvoiceByUniposApi)(businessRegistrationNumber, aid, bearer);
66
+ // 이미 있는 데이터 아이디 검색
67
+ const existingTaxInvoice = await taxInvoiceRepo.find({
68
+ select: ['approvalNo'],
69
+ where: { approvalNo: (0, typeorm_1.In)(approvalNoList) }
70
+ });
71
+ const existingIds = existingTaxInvoice.map(taxInvoice => taxInvoice.approvalNo);
72
+ // 매입, 매출 for문
73
+ for (let tax of taxList) {
74
+ // 있는지 없는지 확인
75
+ if (existingIds.includes(tax.tid_issueid))
76
+ continue;
77
+ // 세금계산서 데이터 객체 생성
78
+ const newTaxInvoice = {
79
+ issueNo: tax.exd_id,
80
+ approvalNo: tax.tid_issueid,
81
+ originalApprovalNo: tax.tid_originalissueid,
82
+ issueDate: this._dateFormat(tax.tid_issuedatetime),
83
+ signatureDate: this._dateFormat(tax.exd_issuedatetime),
84
+ invoiceType: tax.tid_typecode,
85
+ purpose: tax.tid_purposecode,
86
+ revisedReason: tax.tid_amendcode,
87
+ remark0: tax.tid_desc0,
88
+ remark1: tax.tid_desc1,
89
+ remark2: tax.tid_desc2,
90
+ category: tax.category,
91
+ supplierBusinessRegistrationCategory: tax.tit_alice_specorg_biztypecode,
92
+ supplierBusinessRegistrationNumber: tax.tit_alice_id,
93
+ supplierBranchIdentification: tax.tit_alice_specorg_taxregid,
94
+ supplierBusinessName: tax.tit_alice_name,
95
+ supplierRepresentativeName: tax.tit_alice_specperson_name,
96
+ supplierAddress: tax.tit_alice_specaddr_lineone,
97
+ supplierBusinessType: tax.tit_alice_typecode,
98
+ supplierIndustryType: tax.tit_alice_classcode,
99
+ supplierDepartment: tax.tit_alice_defcont_deptname,
100
+ supplierContactName: tax.tit_alice_defcont_personname,
101
+ supplierContactPhone: tax.tit_alice_defcont_telcomm,
102
+ supplierContactEmail: tax.tit_alice_defcont_uricomm,
103
+ supplierContactCellPhone: tax.tit_alice_defcont_cellphone,
104
+ buyerBusinessRegistrationCategory: tax.tit_bob_specorg_biztypecode,
105
+ buyerBusinessRegistrationNumber: tax.tit_bob_id,
106
+ buyerBranchIdentification: tax.tit_bob_specorg_taxregid,
107
+ buyerBusinessName: tax.tit_bob_name,
108
+ buyerRepresentativeName: tax.tit_bob_specperson_name,
109
+ buyerAddress: tax.tit_bob_specaddr_lineone,
110
+ buyerBusinessType: tax.tit_bob_typecode,
111
+ buyerIndustryType: tax.tit_bob_classcode,
112
+ buyer1stDepartment: tax.tit_bob_1stdefcont_deptname,
113
+ buyer1stContactName: tax.tit_bob_1stdefcont_personname,
114
+ buyer1stContactPhone: tax.tit_bob_1stdefcont_telcomm,
115
+ buyer1stContactEmail: tax.tit_bob_1stdefcont_uricomm,
116
+ buyer1stContactCellPhone: tax.tit_bob_1stdefcont_cellphone,
117
+ buyer2ndDepartment: tax.tit_bob_2nddefcont_deptname,
118
+ buyer2ndContactName: tax.tit_bob_2nddefcont_personname,
119
+ buyer2ndContactPhone: tax.tit_bob_2nddefcont_telcomm,
120
+ buyer2ndContactEmail: tax.tit_bob_2nddefcont_uricomm,
121
+ buyer2ndContactCellPhone: tax.tit_bob_2nddefcont_cellphone,
122
+ agentBusinessRegistrationCategory: tax.tit_broker_specorg_biztypecode,
123
+ agentBusinessRegistrationNumber: tax.tit_broker_id,
124
+ agentBranchIdentification: tax.tit_broker_specorg_taxregid,
125
+ agentBusinessName: tax.tit_broker_name,
126
+ agentRepresentativeName: tax.tit_broker_specperson_name,
127
+ agentAddress: tax.tit_broker_specaddr_lineone,
128
+ agentBusinessType: tax.tit_broker_typecode,
129
+ agentIndustryType: tax.tit_broker_classcode,
130
+ agentDepartment: tax.tit_broker_defcont_deptname,
131
+ agentContactName: tax.tit_broker_defcont_personname,
132
+ agentContactPhone: tax.tit_broker_defcont_telcomm,
133
+ agentContactEmail: tax.tit_broker_defcont_uricomm,
134
+ agentContactCellPhone: tax.tit_broker_defcont_cellphone,
135
+ paymentAmountCash: tax.tit_specpay_paidamount10,
136
+ paymentAmountCheck: tax.tit_specpay_paidamount20,
137
+ paymentAmountPromissoryNote: tax.tit_specpay_paidamount30,
138
+ paymentAmountAccountsReceivable: tax.tit_specpay_paidamount40,
139
+ supplyAmount: tax.tit_specsum_chargeamount,
140
+ taxAmount: tax.tit_specsum_taxamount,
141
+ totalAmount: tax.tit_specsum_grandamount
142
+ };
143
+ // 세금계산서 아이템 데이터 객체 생성
144
+ const newTaxInvoiceItem = [];
145
+ for (let item of tax.tAliceItemList) {
146
+ newTaxInvoiceItem.push({
147
+ sequence: item.tii_seqnumeric,
148
+ supplyDate: this._dateFormat(item.tii_purchaseexpirydatetime),
149
+ itemName: item.tii_nametext,
150
+ specification: item.tii_informationtext,
151
+ quantity: item.tii_chargeableunitquantity,
152
+ unitPrice: item.tii_unitprice_unitamount,
153
+ supplyPrice: item.tii_invoiceamount,
154
+ taxPrice: item.tii_totaltax_calcamount,
155
+ remark: item.tii_descriptiontext
156
+ });
157
+ }
158
+ // Insert
159
+ this.createTaxInvoice(newTaxInvoice, newTaxInvoiceItem, context);
160
+ // API 결과 회신 데이터 생성
161
+ insertedData.push({
162
+ aid: aid,
163
+ tax_type: tax.category == tax_invoice_1.Category.EXPORT ? tax_invoice_inquiry_1.UnipostTaxType.EXPORT : tax_invoice_inquiry_1.UnipostTaxType.IMPORT,
164
+ tid_issueid: tax.tid_issueid,
165
+ success: true,
166
+ message: ''
167
+ });
168
+ }
169
+ // 유니 포스트에 조회 후 결과 회신 API 호출
170
+ (0, tax_invoice_inquiry_1.callTaxInvoiceConfirm)(businessRegistrationNumber, aid, bearer, insertedData);
171
+ return true;
172
+ }
66
173
  };
67
174
  tslib_1.__decorate([
68
175
  (0, type_graphql_1.Directive)('@transaction'),
@@ -74,16 +181,6 @@ tslib_1.__decorate([
74
181
  tslib_1.__metadata("design:paramtypes", [tax_invoice_type_1.NewTaxInvoice, Array, Object]),
75
182
  tslib_1.__metadata("design:returntype", Promise)
76
183
  ], TaxInvoiceMutation.prototype, "createTaxInvoice", null);
77
- tslib_1.__decorate([
78
- (0, type_graphql_1.Directive)('@transaction'),
79
- (0, type_graphql_1.Mutation)(returns => tax_invoice_1.TaxInvoice, { description: 'To modify TaxInvoice information' }),
80
- tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
81
- tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
82
- tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
83
- tslib_1.__metadata("design:type", Function),
84
- tslib_1.__metadata("design:paramtypes", [String, tax_invoice_type_1.TaxInvoicePatch, Object]),
85
- tslib_1.__metadata("design:returntype", Promise)
86
- ], TaxInvoiceMutation.prototype, "updateTaxInvoice", null);
87
184
  tslib_1.__decorate([
88
185
  (0, type_graphql_1.Directive)('@transaction'),
89
186
  (0, type_graphql_1.Mutation)(returns => [tax_invoice_1.TaxInvoice], { description: "To modify multiple TaxInvoices' information" }),
@@ -111,6 +208,14 @@ tslib_1.__decorate([
111
208
  tslib_1.__metadata("design:paramtypes", [Array, Object]),
112
209
  tslib_1.__metadata("design:returntype", Promise)
113
210
  ], TaxInvoiceMutation.prototype, "deleteTaxInvoices", null);
211
+ tslib_1.__decorate([
212
+ (0, type_graphql_1.Directive)('@transaction'),
213
+ (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'create tax invoice data by API' }),
214
+ tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
215
+ tslib_1.__metadata("design:type", Function),
216
+ tslib_1.__metadata("design:paramtypes", [Object]),
217
+ tslib_1.__metadata("design:returntype", Promise)
218
+ ], TaxInvoiceMutation.prototype, "fetchTaxInvoiceByApi", null);
114
219
  TaxInvoiceMutation = tslib_1.__decorate([
115
220
  (0, type_graphql_1.Resolver)(tax_invoice_1.TaxInvoice)
116
221
  ], TaxInvoiceMutation);
@@ -1 +1 @@
1
- {"version":3,"file":"tax-invoice-mutation.js","sourceRoot":"","sources":["../../../server/service/tax-invoice/tax-invoice-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { TaxInvoice } from './tax-invoice'\nimport { NewTaxInvoice, TaxInvoicePatch } from './tax-invoice-type'\nimport { NewTaxInvoiceItem } from '../tax-invoice-item/tax-invoice-item-type'\nimport { TaxInvoiceItem } from '../tax-invoice-item/tax-invoice-item'\n\n@Resolver(TaxInvoice)\nexport class TaxInvoiceMutation {\n @Directive('@transaction')\n @Mutation(returns => TaxInvoice, { description: 'To create new TaxInvoice' })\n async createTaxInvoice(\n @Arg('taxInvoice') taxInvoice: NewTaxInvoice,\n @Arg('taxInvoiceItems', () => [NewTaxInvoiceItem]) taxInvoiceItems: NewTaxInvoiceItem[],\n @Ctx() context: ResolverContext\n ): Promise<TaxInvoice> {\n const { domain, user, tx } = context.state\n\n const newTaxInvoice = await tx.getRepository(TaxInvoice).save({\n ...taxInvoice,\n domain,\n creator: user,\n updater: user\n })\n\n // 아이템 저장\n for (const item of taxInvoiceItems) {\n await tx.getRepository(TaxInvoiceItem).save({ ...item, taxInvoice: newTaxInvoice, domain, creator: user })\n }\n\n return newTaxInvoice\n }\n\n @Directive('@transaction')\n @Mutation(returns => TaxInvoice, { description: 'To modify TaxInvoice information' })\n async updateTaxInvoice(@Arg('id') id: string, @Arg('patch') patch: TaxInvoicePatch, @Ctx() context: ResolverContext): Promise<TaxInvoice> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(TaxInvoice)\n const taxInvoice = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n const result = await repository.save({\n ...taxInvoice,\n ...patch,\n updater: user\n })\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => [TaxInvoice], { description: \"To modify multiple TaxInvoices' information\" })\n async updateMultipleTaxInvoice(@Arg('patches', type => [TaxInvoicePatch]) patches: TaxInvoicePatch[], @Ctx() context: ResolverContext): Promise<TaxInvoice[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const taxInvoiceRepo = tx.getRepository(TaxInvoice)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await taxInvoiceRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const taxInvoice = await taxInvoiceRepo.findOneBy({ id: updateRecord.id })\n\n const result = await taxInvoiceRepo.save({\n ...taxInvoice,\n ...updateRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete TaxInvoice' })\n async deleteTaxInvoice(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(TaxInvoice).delete({ domain: { id: domain.id }, id })\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple TaxInvoices' })\n async deleteTaxInvoices(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(TaxInvoice).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n return true\n }\n}\n"]}
1
+ {"version":3,"file":"tax-invoice-mutation.js","sourceRoot":"","sources":["../../../server/service/tax-invoice/tax-invoice-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { Category, TaxInvoice } from './tax-invoice'\nimport { NewTaxInvoice, TaxInvoicePatch } from './tax-invoice-type'\nimport { NewTaxInvoiceItem } from '../tax-invoice-item/tax-invoice-item-type'\nimport { TaxInvoiceItem } from '../tax-invoice-item/tax-invoice-item'\nimport { TaxInvoiceApi } from '../tax-invoice-api/tax-invoice-api'\nimport { AttributeSet } from '@things-factory/shell/dist-server/service/attribute-set/attribute-set'\nimport { ConfirmData, UnipostTaxType, callTaxInvoiceConfirm, getTaxInvoiceByUniposApi } from '../unipost-api/tax-invoice-inquiry'\n\n@Resolver(TaxInvoice)\nexport class TaxInvoiceMutation {\n @Directive('@transaction')\n @Mutation(returns => TaxInvoice, { description: 'To create new TaxInvoice' })\n async createTaxInvoice(\n @Arg('taxInvoice') taxInvoice: NewTaxInvoice,\n @Arg('taxInvoiceItems', () => [NewTaxInvoiceItem]) taxInvoiceItems: NewTaxInvoiceItem[],\n @Ctx() context: ResolverContext\n ): Promise<TaxInvoice> {\n const { domain, user, tx } = context.state\n\n const newTaxInvoice = await tx.getRepository(TaxInvoice).save({\n ...taxInvoice,\n domain,\n creator: user,\n updater: user\n })\n\n // 아이템 저장\n for (const item of taxInvoiceItems) {\n await tx.getRepository(TaxInvoiceItem).save({ ...item, taxInvoice: newTaxInvoice, domain, creator: user })\n }\n\n return newTaxInvoice\n }\n\n // 그리드에서 메모 수정용 으로만\n @Directive('@transaction')\n @Mutation(returns => [TaxInvoice], { description: \"To modify multiple TaxInvoices' information\" })\n async updateMultipleTaxInvoice(@Arg('patches', type => [TaxInvoicePatch]) patches: TaxInvoicePatch[], @Ctx() context: ResolverContext): Promise<TaxInvoice[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const taxInvoiceRepo = tx.getRepository(TaxInvoice)\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const taxInvoice = await taxInvoiceRepo.findOneBy({ id: updateRecord.id })\n\n const result = await taxInvoiceRepo.save({\n ...taxInvoice,\n ...updateRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete TaxInvoice' })\n async deleteTaxInvoice(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(TaxInvoice).delete({ domain: { id: domain.id }, id })\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple TaxInvoices' })\n async deleteTaxInvoices(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(TaxInvoice).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'create tax invoice data by API' })\n async fetchTaxInvoiceByApi(@Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, user, tx } = context.state\n const taxInvoiceApiRepo = tx.getRepository(TaxInvoiceApi)\n const taxInvoiceRepo = tx.getRepository(TaxInvoice)\n const insertedData: ConfirmData[] = [] // API 호출 후 결과 회신용\n\n const apiInfo = (await taxInvoiceApiRepo.find()).at(0)\n const businessRegistrationNumber = apiInfo.businessRegistrationNumber\n const { aid = '', bearer = '' } = apiInfo?.attributes\n\n // API 호출하여 세금계산서 데이터 가져옴\n const { approvalNoList, taxList } = await getTaxInvoiceByUniposApi(businessRegistrationNumber, aid, bearer)\n\n // 이미 있는 데이터 아이디 검색\n const existingTaxInvoice = await taxInvoiceRepo.find({\n select: ['approvalNo'],\n where: { approvalNo: In(approvalNoList) }\n })\n const existingIds = existingTaxInvoice.map(taxInvoice => taxInvoice.approvalNo)\n\n // 매입, 매출 for문\n for (let tax of taxList) {\n // 있는지 없는지 확인\n if (existingIds.includes(tax.tid_issueid)) continue\n\n // 세금계산서 데이터 객체 생성\n const newTaxInvoice: NewTaxInvoice = {\n issueNo: tax.exd_id,\n approvalNo: tax.tid_issueid,\n originalApprovalNo: tax.tid_originalissueid,\n issueDate: this._dateFormat(tax.tid_issuedatetime),\n signatureDate: this._dateFormat(tax.exd_issuedatetime),\n invoiceType: tax.tid_typecode,\n purpose: tax.tid_purposecode,\n revisedReason: tax.tid_amendcode,\n remark0: tax.tid_desc0,\n remark1: tax.tid_desc1,\n remark2: tax.tid_desc2,\n category: tax.category,\n supplierBusinessRegistrationCategory: tax.tit_alice_specorg_biztypecode,\n supplierBusinessRegistrationNumber: tax.tit_alice_id,\n supplierBranchIdentification: tax.tit_alice_specorg_taxregid,\n supplierBusinessName: tax.tit_alice_name,\n supplierRepresentativeName: tax.tit_alice_specperson_name,\n supplierAddress: tax.tit_alice_specaddr_lineone,\n supplierBusinessType: tax.tit_alice_typecode,\n supplierIndustryType: tax.tit_alice_classcode,\n supplierDepartment: tax.tit_alice_defcont_deptname,\n supplierContactName: tax.tit_alice_defcont_personname,\n supplierContactPhone: tax.tit_alice_defcont_telcomm,\n supplierContactEmail: tax.tit_alice_defcont_uricomm,\n supplierContactCellPhone: tax.tit_alice_defcont_cellphone,\n buyerBusinessRegistrationCategory: tax.tit_bob_specorg_biztypecode,\n buyerBusinessRegistrationNumber: tax.tit_bob_id,\n buyerBranchIdentification: tax.tit_bob_specorg_taxregid,\n buyerBusinessName: tax.tit_bob_name,\n buyerRepresentativeName: tax.tit_bob_specperson_name,\n buyerAddress: tax.tit_bob_specaddr_lineone,\n buyerBusinessType: tax.tit_bob_typecode,\n buyerIndustryType: tax.tit_bob_classcode,\n buyer1stDepartment: tax.tit_bob_1stdefcont_deptname,\n buyer1stContactName: tax.tit_bob_1stdefcont_personname,\n buyer1stContactPhone: tax.tit_bob_1stdefcont_telcomm,\n buyer1stContactEmail: tax.tit_bob_1stdefcont_uricomm,\n buyer1stContactCellPhone: tax.tit_bob_1stdefcont_cellphone,\n buyer2ndDepartment: tax.tit_bob_2nddefcont_deptname,\n buyer2ndContactName: tax.tit_bob_2nddefcont_personname,\n buyer2ndContactPhone: tax.tit_bob_2nddefcont_telcomm,\n buyer2ndContactEmail: tax.tit_bob_2nddefcont_uricomm,\n buyer2ndContactCellPhone: tax.tit_bob_2nddefcont_cellphone,\n agentBusinessRegistrationCategory: tax.tit_broker_specorg_biztypecode,\n agentBusinessRegistrationNumber: tax.tit_broker_id,\n agentBranchIdentification: tax.tit_broker_specorg_taxregid,\n agentBusinessName: tax.tit_broker_name,\n agentRepresentativeName: tax.tit_broker_specperson_name,\n agentAddress: tax.tit_broker_specaddr_lineone,\n agentBusinessType: tax.tit_broker_typecode,\n agentIndustryType: tax.tit_broker_classcode,\n agentDepartment: tax.tit_broker_defcont_deptname,\n agentContactName: tax.tit_broker_defcont_personname,\n agentContactPhone: tax.tit_broker_defcont_telcomm,\n agentContactEmail: tax.tit_broker_defcont_uricomm,\n agentContactCellPhone: tax.tit_broker_defcont_cellphone,\n paymentAmountCash: tax.tit_specpay_paidamount10,\n paymentAmountCheck: tax.tit_specpay_paidamount20,\n paymentAmountPromissoryNote: tax.tit_specpay_paidamount30,\n paymentAmountAccountsReceivable: tax.tit_specpay_paidamount40,\n supplyAmount: tax.tit_specsum_chargeamount,\n taxAmount: tax.tit_specsum_taxamount,\n totalAmount: tax.tit_specsum_grandamount\n }\n\n // 세금계산서 아이템 데이터 객체 생성\n const newTaxInvoiceItem: NewTaxInvoiceItem[] = []\n for (let item of tax.tAliceItemList) {\n newTaxInvoiceItem.push({\n sequence: item.tii_seqnumeric,\n supplyDate: this._dateFormat(item.tii_purchaseexpirydatetime),\n itemName: item.tii_nametext,\n specification: item.tii_informationtext,\n quantity: item.tii_chargeableunitquantity,\n unitPrice: item.tii_unitprice_unitamount,\n supplyPrice: item.tii_invoiceamount,\n taxPrice: item.tii_totaltax_calcamount,\n remark: item.tii_descriptiontext\n })\n }\n\n // Insert\n this.createTaxInvoice(newTaxInvoice, newTaxInvoiceItem, context)\n\n // API 결과 회신 데이터 생성\n insertedData.push({\n aid: aid,\n tax_type: tax.category == Category.EXPORT ? UnipostTaxType.EXPORT : UnipostTaxType.IMPORT,\n tid_issueid: tax.tid_issueid,\n success: true,\n message: ''\n })\n }\n\n // 유니 포스트에 조회 후 결과 회신 API 호출\n callTaxInvoiceConfirm(businessRegistrationNumber, aid, bearer, insertedData)\n\n return true\n }\n\n // YYYYMMDD => YYYY-MM-DD\n private _dateFormat = date => date.replace(/(\\d{4})(\\d{2})(\\d{2})/g, '$1-$2-$3')\n}\n"]}
@@ -21,11 +21,26 @@ let TaxInvoiceQuery = class TaxInvoiceQuery {
21
21
  domain,
22
22
  params,
23
23
  repository: await (0, shell_1.getRepository)(tax_invoice_1.TaxInvoice),
24
- searchables: ['name']
24
+ searchables: ['memo']
25
25
  });
26
26
  const [items, total] = await queryBuilder.getManyAndCount();
27
27
  return { items, total };
28
28
  }
29
+ async taxInvoicesSummary(params, context) {
30
+ const { domain } = context.state;
31
+ const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
32
+ domain,
33
+ params: Object.assign(Object.assign({}, params), { pagination: {} }),
34
+ repository: await (0, shell_1.getRepository)(tax_invoice_1.TaxInvoice)
35
+ });
36
+ const summary = await queryBuilder
37
+ .select('SUM(supply_amount)', 'supply_amount')
38
+ .addSelect('SUM(tax_amount)', 'tax_amount')
39
+ .addSelect('SUM(total_amount)', 'total_amount')
40
+ .addSelect('COUNT(id)', 'cnt')
41
+ .getRawOne();
42
+ return { summary };
43
+ }
29
44
  async taxInvoiceItems(taxInvoice) {
30
45
  return taxInvoice.id && (await (0, shell_1.getRepository)(tax_invoice_item_1.TaxInvoiceItem).findBy({ taxInvoice: { id: taxInvoice.id } }));
31
46
  }
@@ -55,6 +70,14 @@ tslib_1.__decorate([
55
70
  tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
56
71
  tslib_1.__metadata("design:returntype", Promise)
57
72
  ], TaxInvoiceQuery.prototype, "taxInvoices", null);
73
+ tslib_1.__decorate([
74
+ (0, type_graphql_1.Query)(returns => tax_invoice_type_1.TaxInvoiceSummary, { description: 'To fetch TaxInvoices Summary' }),
75
+ tslib_1.__param(0, (0, type_graphql_1.Args)()),
76
+ tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
77
+ tslib_1.__metadata("design:type", Function),
78
+ tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
79
+ tslib_1.__metadata("design:returntype", Promise)
80
+ ], TaxInvoiceQuery.prototype, "taxInvoicesSummary", null);
58
81
  tslib_1.__decorate([
59
82
  (0, type_graphql_1.FieldResolver)(type => [tax_invoice_item_1.TaxInvoiceItem]),
60
83
  tslib_1.__param(0, (0, type_graphql_1.Root)()),
@@ -1 +1 @@
1
- {"version":3,"file":"tax-invoice-query.js","sourceRoot":"","sources":["../../../server/service/tax-invoice/tax-invoice-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx } from 'type-graphql'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { TaxInvoice } from './tax-invoice'\nimport { TaxInvoiceList } from './tax-invoice-type'\nimport { TaxInvoiceItem } from '../tax-invoice-item/tax-invoice-item'\n\n@Resolver(TaxInvoice)\nexport class TaxInvoiceQuery {\n @Query(returns => TaxInvoice!, { nullable: true, description: 'To fetch a TaxInvoice' })\n async taxInvoice(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<TaxInvoice> {\n const { domain } = context.state\n\n return await getRepository(TaxInvoice).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => TaxInvoiceList, { description: 'To fetch multiple TaxInvoices' })\n async taxInvoices(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<TaxInvoiceList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository(TaxInvoice),\n searchables: ['name']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => [TaxInvoiceItem])\n async taxInvoiceItems(@Root() taxInvoice: TaxInvoice): Promise<TaxInvoiceItem[]> {\n return taxInvoice.id && (await getRepository(TaxInvoiceItem).findBy({ taxInvoice: { id: taxInvoice.id } }))\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() taxInvoice: TaxInvoice): Promise<Domain> {\n return taxInvoice.domainId && (await getRepository(Domain).findOneBy({ id: taxInvoice.domainId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() taxInvoice: TaxInvoice): Promise<User> {\n return taxInvoice.updaterId && (await getRepository(User).findOneBy({ id: taxInvoice.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() taxInvoice: TaxInvoice): Promise<User> {\n return taxInvoice.creatorId && (await getRepository(User).findOneBy({ id: taxInvoice.creatorId }))\n }\n}\n"]}
1
+ {"version":3,"file":"tax-invoice-query.js","sourceRoot":"","sources":["../../../server/service/tax-invoice/tax-invoice-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx } from 'type-graphql'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { TaxInvoice } from './tax-invoice'\nimport { TaxInvoiceList, TaxInvoiceSummary } from './tax-invoice-type'\nimport { TaxInvoiceItem } from '../tax-invoice-item/tax-invoice-item'\n\n@Resolver(TaxInvoice)\nexport class TaxInvoiceQuery {\n @Query(returns => TaxInvoice!, { nullable: true, description: 'To fetch a TaxInvoice' })\n async taxInvoice(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<TaxInvoice> {\n const { domain } = context.state\n\n return await getRepository(TaxInvoice).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => TaxInvoiceList, { description: 'To fetch multiple TaxInvoices' })\n async taxInvoices(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<TaxInvoiceList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository(TaxInvoice),\n searchables: ['memo']\n })\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => TaxInvoiceSummary, { description: 'To fetch TaxInvoices Summary' })\n async taxInvoicesSummary(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<TaxInvoiceSummary> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params: { ...params, pagination: {} },\n repository: await getRepository(TaxInvoice)\n })\n const summary = await queryBuilder\n .select('SUM(supply_amount)', 'supply_amount')\n .addSelect('SUM(tax_amount)', 'tax_amount')\n .addSelect('SUM(total_amount)', 'total_amount')\n .addSelect('COUNT(id)', 'cnt')\n .getRawOne()\n\n return { summary }\n }\n\n @FieldResolver(type => [TaxInvoiceItem])\n async taxInvoiceItems(@Root() taxInvoice: TaxInvoice): Promise<TaxInvoiceItem[]> {\n return taxInvoice.id && (await getRepository(TaxInvoiceItem).findBy({ taxInvoice: { id: taxInvoice.id } }))\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() taxInvoice: TaxInvoice): Promise<Domain> {\n return taxInvoice.domainId && (await getRepository(Domain).findOneBy({ id: taxInvoice.domainId }))\n }\n\n @FieldResolver(type => User)\n async updater(@Root() taxInvoice: TaxInvoice): Promise<User> {\n return taxInvoice.updaterId && (await getRepository(User).findOneBy({ id: taxInvoice.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() taxInvoice: TaxInvoice): Promise<User> {\n return taxInvoice.creatorId && (await getRepository(User).findOneBy({ id: taxInvoice.creatorId }))\n }\n}\n"]}