@things-factory/tax-invoice 10.1.232 → 10.1.234
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/tax-invoice/tax-invoice-mutation.js +5 -14
- package/dist-server/service/tax-invoice/tax-invoice-mutation.js.map +1 -1
- package/dist-server/service/tax-invoice-api/default-tax-invoice-api.d.ts +8 -0
- package/dist-server/service/tax-invoice-api/default-tax-invoice-api.js +20 -0
- package/dist-server/service/tax-invoice-api/default-tax-invoice-api.js.map +1 -0
- package/dist-server/service/tax-invoice-api/tax-invoice-api-mutation.js +5 -3
- package/dist-server/service/tax-invoice-api/tax-invoice-api-mutation.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/translations/en.json +2 -1
- package/translations/ko.json +2 -1
|
@@ -4,11 +4,12 @@ exports.TaxInvoiceMutation = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const type_graphql_1 = require("type-graphql");
|
|
6
6
|
const typeorm_1 = require("typeorm");
|
|
7
|
+
const shell_1 = require("@things-factory/shell");
|
|
7
8
|
const tax_invoice_1 = require("./tax-invoice");
|
|
8
9
|
const tax_invoice_type_1 = require("./tax-invoice-type");
|
|
9
10
|
const tax_invoice_item_type_1 = require("../tax-invoice-item/tax-invoice-item-type");
|
|
10
11
|
const tax_invoice_item_1 = require("../tax-invoice-item/tax-invoice-item");
|
|
11
|
-
const
|
|
12
|
+
const default_tax_invoice_api_1 = require("../tax-invoice-api/default-tax-invoice-api");
|
|
12
13
|
const tax_invoice_inquiry_1 = require("../unipost-api/tax-invoice-inquiry");
|
|
13
14
|
const tax_invoice_util_1 = require("./tax-invoice-util");
|
|
14
15
|
let TaxInvoiceMutation = class TaxInvoiceMutation {
|
|
@@ -63,20 +64,9 @@ let TaxInvoiceMutation = class TaxInvoiceMutation {
|
|
|
63
64
|
}
|
|
64
65
|
async fetchTaxInvoiceByApi(context) {
|
|
65
66
|
const { domain, user, tx } = context.state;
|
|
66
|
-
const taxInvoiceApiRepo = tx.getRepository(tax_invoice_api_1.TaxInvoiceApi);
|
|
67
67
|
const taxInvoiceRepo = tx.getRepository(tax_invoice_1.TaxInvoice);
|
|
68
68
|
const insertedData = []; // API 호출 후 결과 회신용
|
|
69
|
-
|
|
70
|
-
const apiInfo = await taxInvoiceApiRepo
|
|
71
|
-
.createQueryBuilder('tia')
|
|
72
|
-
.leftJoinAndSelect('tia.domain', 'domain')
|
|
73
|
-
.where('domain.id = :domainId', { domainId: domain.id })
|
|
74
|
-
.andWhere('tia.isDefault = true')
|
|
75
|
-
.orderBy('tia.createdAt', 'DESC')
|
|
76
|
-
.getOne();
|
|
77
|
-
if (!apiInfo) {
|
|
78
|
-
throw new Error('기본 세금계산서 API 정보가 설정되어 있지 않습니다.');
|
|
79
|
-
}
|
|
69
|
+
const apiInfo = await (0, default_tax_invoice_api_1.defaultTaxInvoiceApi)(tx, domain);
|
|
80
70
|
const businessRegistrationNumber = apiInfo.businessRegistrationNumber;
|
|
81
71
|
const { aid = '', bearer = '' } = apiInfo.attributes || {};
|
|
82
72
|
// API 호출하여 세금계산서 데이터 가져옴
|
|
@@ -162,7 +152,8 @@ tslib_1.__decorate([
|
|
|
162
152
|
tslib_1.__metadata("design:returntype", Promise)
|
|
163
153
|
], TaxInvoiceMutation.prototype, "fetchTaxInvoiceByApi", null);
|
|
164
154
|
exports.TaxInvoiceMutation = TaxInvoiceMutation = tslib_1.__decorate([
|
|
165
|
-
(0, type_graphql_1.Resolver)(tax_invoice_1.TaxInvoice)
|
|
155
|
+
(0, type_graphql_1.Resolver)(tax_invoice_1.TaxInvoice),
|
|
156
|
+
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
166
157
|
], TaxInvoiceMutation);
|
|
167
158
|
/* An issued invoice is evidence: deleting it keeps the row (deletedAt), and its items go with it. */
|
|
168
159
|
async function softDeleteTaxInvoices(tx, domain, ids) {
|
|
@@ -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 { 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.js'\nimport {\n ConfirmData,\n UnipostTaxType,\n callTaxInvoiceConfirm,\n getTaxInvoiceByUniposApi\n} from '../unipost-api/tax-invoice-inquiry'\nimport { parseTaxInvoiceByUnipostFormat } from './tax-invoice-util'\n\n@Resolver(TaxInvoice)\nexport class TaxInvoiceMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\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 @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => [TaxInvoice], { description: \"To modify multiple TaxInvoices' information\" })\n async updateMultipleTaxInvoice(\n @Arg('patches', type => [TaxInvoicePatch]) patches: TaxInvoicePatch[],\n @Ctx() context: ResolverContext\n ): 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.findOne({\n where: { domain: { id: domain.id }, id: updateRecord.id }\n })\n\n if (!taxInvoice) {\n throw new Error(`failed to find taxInvoice to update: ${updateRecord.id}`)\n }\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 @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\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 softDeleteTaxInvoices(tx, domain, [id])\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => Boolean, { description: 'To delete multiple TaxInvoices' })\n async deleteTaxInvoices(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await softDeleteTaxInvoices(tx, domain, ids)\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\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 // TODO 여기 기본값으로 가져와야하는거 아님?\n const apiInfo = await taxInvoiceApiRepo\n .createQueryBuilder('tia')\n .leftJoinAndSelect('tia.domain', 'domain')\n .where('domain.id = :domainId', { domainId: domain.id })\n .andWhere('tia.isDefault = true')\n .orderBy('tia.createdAt', 'DESC')\n .getOne()\n\n if (!apiInfo) {\n throw new Error('기본 세금계산서 API 정보가 설정되어 있지 않습니다.')\n }\n\n const businessRegistrationNumber = apiInfo.businessRegistrationNumber\n const { aid = '', bearer = '' } = apiInfo.attributes || {}\n\n // API 호출하여 세금계산서 데이터 가져옴\n const { issueNoList, taxList } = await getTaxInvoiceByUniposApi(businessRegistrationNumber, aid, bearer)\n\n // 이미 있는 데이터 아이디 검색\n const existingTaxInvoice = await taxInvoiceRepo.find({\n select: ['issueNo'],\n where: { issueNo: In(issueNoList) }\n })\n const existingIds = existingTaxInvoice.map(taxInvoice => taxInvoice.issueNo)\n\n // 매입, 매출 for문\n for (let tax of taxList) {\n // 있는지 없는지 확인 (이미 있는 세금계산서는 패스)\n if (existingIds.includes(tax.exd_id)) continue\n\n // api로 받은 데이터를 DB 형태로 파싱\n const { taxInvoice, taxInvoiceItems } = parseTaxInvoiceByUnipostFormat(tax, tax.tAliceItemList, tax.category)\n\n // Insert\n const newTaxInvoice = await this.createTaxInvoice(taxInvoice, taxInvoiceItems, 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\n/* An issued invoice is evidence: deleting it keeps the row (deletedAt), and its items go with it. */\nasync function softDeleteTaxInvoices(tx, domain, ids: string[]) {\n if (!ids.length) return\n await tx.getRepository(TaxInvoiceItem).softDelete({ domain: { id: domain.id }, taxInvoice: { id: In(ids) } })\n await tx.getRepository(TaxInvoice).softDelete({ domain: { id: domain.id }, id: In(ids) })\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, UseMiddleware } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { SpeakRefusals } from '@things-factory/shell'\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 { defaultTaxInvoiceApi } from '../tax-invoice-api/default-tax-invoice-api'\nimport { AttributeSet } from '@things-factory/shell/dist-server/service/attribute-set/attribute-set.js'\nimport {\n ConfirmData,\n UnipostTaxType,\n callTaxInvoiceConfirm,\n getTaxInvoiceByUniposApi\n} from '../unipost-api/tax-invoice-inquiry'\nimport { parseTaxInvoiceByUnipostFormat } from './tax-invoice-util'\n\n@Resolver(TaxInvoice)\n@UseMiddleware(SpeakRefusals)\nexport class TaxInvoiceMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\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 @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => [TaxInvoice], { description: \"To modify multiple TaxInvoices' information\" })\n async updateMultipleTaxInvoice(\n @Arg('patches', type => [TaxInvoicePatch]) patches: TaxInvoicePatch[],\n @Ctx() context: ResolverContext\n ): 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.findOne({\n where: { domain: { id: domain.id }, id: updateRecord.id }\n })\n\n if (!taxInvoice) {\n throw new Error(`failed to find taxInvoice to update: ${updateRecord.id}`)\n }\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 @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\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 softDeleteTaxInvoices(tx, domain, [id])\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => Boolean, { description: 'To delete multiple TaxInvoices' })\n async deleteTaxInvoices(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await softDeleteTaxInvoices(tx, domain, ids)\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\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 taxInvoiceRepo = tx.getRepository(TaxInvoice)\n const insertedData: ConfirmData[] = [] // API 호출 후 결과 회신용\n\n const apiInfo = await defaultTaxInvoiceApi(tx, domain)\n\n const businessRegistrationNumber = apiInfo.businessRegistrationNumber\n const { aid = '', bearer = '' } = apiInfo.attributes || {}\n\n // API 호출하여 세금계산서 데이터 가져옴\n const { issueNoList, taxList } = await getTaxInvoiceByUniposApi(businessRegistrationNumber, aid, bearer)\n\n // 이미 있는 데이터 아이디 검색\n const existingTaxInvoice = await taxInvoiceRepo.find({\n select: ['issueNo'],\n where: { issueNo: In(issueNoList) }\n })\n const existingIds = existingTaxInvoice.map(taxInvoice => taxInvoice.issueNo)\n\n // 매입, 매출 for문\n for (let tax of taxList) {\n // 있는지 없는지 확인 (이미 있는 세금계산서는 패스)\n if (existingIds.includes(tax.exd_id)) continue\n\n // api로 받은 데이터를 DB 형태로 파싱\n const { taxInvoice, taxInvoiceItems } = parseTaxInvoiceByUnipostFormat(tax, tax.tAliceItemList, tax.category)\n\n // Insert\n const newTaxInvoice = await this.createTaxInvoice(taxInvoice, taxInvoiceItems, 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\n/* An issued invoice is evidence: deleting it keeps the row (deletedAt), and its items go with it. */\nasync function softDeleteTaxInvoices(tx, domain, ids: string[]) {\n if (!ids.length) return\n await tx.getRepository(TaxInvoiceItem).softDelete({ domain: { id: domain.id }, taxInvoice: { id: In(ids) } })\n await tx.getRepository(TaxInvoice).softDelete({ domain: { id: domain.id }, id: In(ids) })\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm';
|
|
2
|
+
import { Domain } from '@things-factory/shell';
|
|
3
|
+
import { TaxInvoiceApi } from './tax-invoice-api';
|
|
4
|
+
/**
|
|
5
|
+
* The API account a domain sends and fetches tax invoices through: its own default, never another domain's.
|
|
6
|
+
* A domain without one is refused by name, before any call leaves the server.
|
|
7
|
+
*/
|
|
8
|
+
export declare function defaultTaxInvoiceApi(tx: EntityManager, domain: Domain): Promise<TaxInvoiceApi>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultTaxInvoiceApi = defaultTaxInvoiceApi;
|
|
4
|
+
const shell_1 = require("@things-factory/shell");
|
|
5
|
+
const tax_invoice_api_1 = require("./tax-invoice-api");
|
|
6
|
+
/**
|
|
7
|
+
* The API account a domain sends and fetches tax invoices through: its own default, never another domain's.
|
|
8
|
+
* A domain without one is refused by name, before any call leaves the server.
|
|
9
|
+
*/
|
|
10
|
+
async function defaultTaxInvoiceApi(tx, domain) {
|
|
11
|
+
const apiInfo = await tx.getRepository(tax_invoice_api_1.TaxInvoiceApi).findOne({
|
|
12
|
+
where: { domain: { id: domain.id }, isDefault: true },
|
|
13
|
+
order: { createdAt: 'DESC' }
|
|
14
|
+
});
|
|
15
|
+
if (!apiInfo) {
|
|
16
|
+
throw new shell_1.Refusal('tax-invoice-api-not-set', {}, 'this business has no default tax invoice API account');
|
|
17
|
+
}
|
|
18
|
+
return apiInfo;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=default-tax-invoice-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-tax-invoice-api.js","sourceRoot":"","sources":["../../../server/service/tax-invoice-api/default-tax-invoice-api.ts"],"names":[],"mappings":";;AAUA,oDAWC;AAnBD,iDAAuD;AAEvD,uDAAiD;AAEjD;;;GAGG;AACI,KAAK,UAAU,oBAAoB,CAAC,EAAiB,EAAE,MAAc;IAC1E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,+BAAa,CAAC,CAAC,OAAO,CAAC;QAC5D,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;QACrD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;KAC7B,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,eAAO,CAAC,yBAAyB,EAAE,EAAE,EAAE,sDAAsD,CAAC,CAAA;IAC1G,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { Domain, Refusal } from '@things-factory/shell'\n\nimport { TaxInvoiceApi } from './tax-invoice-api'\n\n/**\n * The API account a domain sends and fetches tax invoices through: its own default, never another domain's.\n * A domain without one is refused by name, before any call leaves the server.\n */\nexport async function defaultTaxInvoiceApi(tx: EntityManager, domain: Domain): Promise<TaxInvoiceApi> {\n const apiInfo = await tx.getRepository(TaxInvoiceApi).findOne({\n where: { domain: { id: domain.id }, isDefault: true },\n order: { createdAt: 'DESC' }\n })\n\n if (!apiInfo) {\n throw new Refusal('tax-invoice-api-not-set', {}, 'this business has no default tax invoice API account')\n }\n\n return apiInfo\n}\n"]}
|
|
@@ -4,7 +4,9 @@ exports.TaxInvoiceApiMutation = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const type_graphql_1 = require("type-graphql");
|
|
6
6
|
const typeorm_1 = require("typeorm");
|
|
7
|
+
const shell_1 = require("@things-factory/shell");
|
|
7
8
|
const tax_invoice_api_1 = require("./tax-invoice-api");
|
|
9
|
+
const default_tax_invoice_api_1 = require("./default-tax-invoice-api");
|
|
8
10
|
const tax_invoice_api_type_1 = require("./tax-invoice-api-type");
|
|
9
11
|
const tax_invoice_item_1 = require("../tax-invoice-item/tax-invoice-item");
|
|
10
12
|
const tax_invoice_1 = require("../tax-invoice/tax-invoice");
|
|
@@ -66,9 +68,8 @@ let TaxInvoiceApiMutation = class TaxInvoiceApiMutation {
|
|
|
66
68
|
const { domain, user, tx } = context.state;
|
|
67
69
|
const taxInvoiceRepo = tx.getRepository(tax_invoice_1.TaxInvoice);
|
|
68
70
|
const taxInvoiceItemRepo = tx.getRepository(tax_invoice_item_1.TaxInvoiceItem);
|
|
69
|
-
const taxInvoiceApiRepo = tx.getRepository(tax_invoice_api_1.TaxInvoiceApi);
|
|
70
71
|
const issuedTaxInvoices = [];
|
|
71
|
-
const apiInfo = await
|
|
72
|
+
const apiInfo = await (0, default_tax_invoice_api_1.defaultTaxInvoiceApi)(tx, domain);
|
|
72
73
|
const businessRegistrationNumber = apiInfo.businessRegistrationNumber;
|
|
73
74
|
const { aid = '', bearer = '', customer_no = '' } = apiInfo?.attributes;
|
|
74
75
|
let failCount = 0;
|
|
@@ -275,6 +276,7 @@ tslib_1.__decorate([
|
|
|
275
276
|
tslib_1.__metadata("design:returntype", Promise)
|
|
276
277
|
], TaxInvoiceApiMutation.prototype, "sendTaxInvoicesByApi", null);
|
|
277
278
|
exports.TaxInvoiceApiMutation = TaxInvoiceApiMutation = tslib_1.__decorate([
|
|
278
|
-
(0, type_graphql_1.Resolver)(tax_invoice_api_1.TaxInvoiceApi)
|
|
279
|
+
(0, type_graphql_1.Resolver)(tax_invoice_api_1.TaxInvoiceApi),
|
|
280
|
+
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
279
281
|
], TaxInvoiceApiMutation);
|
|
280
282
|
//# sourceMappingURL=tax-invoice-api-mutation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tax-invoice-api-mutation.js","sourceRoot":"","sources":["../../../server/service/tax-invoice-api/tax-invoice-api-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { TaxInvoiceApi } from './tax-invoice-api'\nimport { TaxInvoiceApiPatch, TaxInvoiceSend } from './tax-invoice-api-type'\nimport { TaxInvoiceItem } from '../tax-invoice-item/tax-invoice-item'\nimport { Category, InvoiceType, TaxInvoice } from '../tax-invoice/tax-invoice'\nimport { sendTaxInvoiceByUniposApi } from '../unipost-api/tax-invoice-send'\nimport { parseTaxInvoiceByUnipostFormat } from '../tax-invoice/tax-invoice-util'\n\n@Resolver(TaxInvoiceApi)\nexport class TaxInvoiceApiMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => [TaxInvoiceApi], { description: 'To modify Tax Invoice Api information' })\n async updateMultipleTaxInvoiceApi(\n @Arg('patches', type => [TaxInvoiceApiPatch]) patches: TaxInvoiceApiPatch[],\n @Ctx() context: ResolverContext\n ): Promise<TaxInvoiceApi[]> {\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 taxInvoiceApiRepo = tx.getRepository(TaxInvoiceApi)\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 taxInvoiceApiRepo.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 taxAuditResult = await taxInvoiceApiRepo.findOne({\n where: { domain: { id: domain.id }, id: updateRecord.id }\n })\n\n if (!taxAuditResult) {\n throw new Error(`failed to find taxAuditResult to update: ${updateRecord.id}`)\n }\n\n const result = await taxInvoiceApiRepo.save({\n ...taxAuditResult,\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 @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => Boolean, { description: 'To delete multiple Tax Invoice Api' })\n async deleteTaxInvoiceApis(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(TaxInvoiceApi).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => Boolean, { description: 'To Send Tax Invoices By Api' })\n async sendTaxInvoicesByApi(\n @Arg('taxInvoiceSendList', type => [TaxInvoiceSend]) taxInvoiceSendList: TaxInvoiceSend[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n await this.issueTaxInvoicesByApi(taxInvoiceSendList, context)\n\n return true\n }\n\n async issueTaxInvoicesByApi(taxInvoiceSendList: TaxInvoiceSend[], context: ResolverContext): Promise<TaxInvoice[]> {\n if (!taxInvoiceSendList?.length) throw new Error('tax invoice send exception: no list')\n\n const { domain, user, tx } = context.state\n const taxInvoiceRepo = tx.getRepository(TaxInvoice)\n const taxInvoiceItemRepo = tx.getRepository(TaxInvoiceItem)\n const taxInvoiceApiRepo = tx.getRepository(TaxInvoiceApi)\n const issuedTaxInvoices: TaxInvoice[] = []\n\n const apiInfo = await taxInvoiceApiRepo.findOneBy({ isDefault: true })\n const businessRegistrationNumber = apiInfo.businessRegistrationNumber\n const { aid = '', bearer = '', customer_no = '' } = apiInfo?.attributes\n let failCount = 0\n let failMessage = []\n\n // 1. 밸리데이션 및 데이터 파싱\n let newTaxInvoiceSendList = taxInvoiceSendList.map(taxInvoiceSend =>\n this._parseTaxInvoiceSendForApi(taxInvoiceSend, aid, customer_no)\n )\n\n // 2. 세금계산서 발행 API 호출\n const apiResult = await sendTaxInvoiceByUniposApi(businessRegistrationNumber, aid, bearer, newTaxInvoiceSendList)\n if (apiResult === false) {\n // TODO 로그 찍기\n throw new Error('tax invoice send exception: api error')\n }\n\n // 3. 성공하면 세금계산서 DB에 저장\n for (let item of apiResult) {\n if (item?.success) {\n const { taxInvoice, taxInvoiceItems } = parseTaxInvoiceByUnipostFormat(\n item?.tAliceEntry,\n item?.tAliceEntry?.tAliceItemList,\n Category.EXPORT\n )\n\n // 세금계산서 저장\n const newTaxInvoice = await taxInvoiceRepo.save({\n ...taxInvoice,\n domain,\n creator: user,\n updater: user\n })\n issuedTaxInvoices.push(newTaxInvoice)\n\n // 아이템 저장\n for (const item of taxInvoiceItems) {\n await taxInvoiceItemRepo.save({ ...item, taxInvoice: newTaxInvoice, domain, creator: user })\n }\n } else {\n failCount++\n failMessage.push(`${item.inv_seq}: ${item.message}`)\n }\n }\n\n // 실패가 1개라도 있으면 에러\n if (failCount > 0) {\n throw new Error(failCount + '개의 계산서 등록에 실패하였습니다.\\n' + failMessage.join('\\n'))\n }\n\n return issuedTaxInvoices\n }\n\n // 유니스포트에 받을수 있는 포맷으로 데이터 파싱\n private _parseTaxInvoiceSendForApi(taxInvoiceSend, aid, customer_no) {\n const { taxInvoice, taxInvoiceItems } = taxInvoiceSend\n let newTaxInvoiceItems: any = []\n const today = new Intl.DateTimeFormat('fr-CA', { timeZone: 'Asia/Seoul' }).format(new Date()) // YYYY-MM-DD\n\n // 필수값 체크\n if (\n !taxInvoice.supplierBusinessRegistrationNumber ||\n !taxInvoice.supplierBusinessName ||\n !taxInvoice.supplierRepresentativeName ||\n !taxInvoice.buyerBusinessRegistrationNumber ||\n !taxInvoice.buyerBusinessName ||\n !taxInvoice.buyerRepresentativeName ||\n !taxInvoice.issueDate\n ) {\n throw new Error('tax invoice send exception: no essential value')\n }\n\n // 공급자 사업자 등록번호가 전부 숫자이며 10자리 인지 체크\n if (\n isNaN(taxInvoice.supplierBusinessRegistrationNumber) ||\n taxInvoice.supplierBusinessRegistrationNumber.length !== 10\n ) {\n throw new Error('tax invoice send exception: Supplier Business Registration Number is wrong')\n }\n\n // 공급받는자 사업자 등록번호가 전부 숫자이며 10자리 인지 체크\n if (isNaN(taxInvoice.buyerBusinessRegistrationNumber) || taxInvoice.buyerBusinessRegistrationNumber.length !== 10) {\n throw new Error('tax invoice send exception: Buyer Business Registration Number is wrong')\n }\n\n // 작성일자가 오늘 날짜를 넘어가면 에러\n if (taxInvoice.issueDate > today) {\n throw new Error('tax invoice send exception: issueDate error')\n }\n\n // 현금, 수표, 어음, 외상미수금이 있을시 총 합계금액과 금액 동일 체크\n const paymentAmount: number =\n taxInvoice.paymentAmountCash +\n taxInvoice.paymentAmountCheck +\n taxInvoice.paymentAmountPromissoryNote +\n taxInvoice.paymentAmountAccountsReceivable\n if (paymentAmount > 0 && paymentAmount !== taxInvoice.totalAmount) {\n throw new Error('tax invoice send exception: summary is not same')\n }\n\n // 영세업자인데 세금이 있으면 에러\n if (taxInvoice.invoiceType === InvoiceType.ZERO_RATED_TAX_INVOICE && taxInvoice.taxAmount > 0) {\n throw new Error('tax invoice send exception: tax price is exist')\n }\n\n for (let item of taxInvoiceItems) {\n // 아이템 필수값 체크\n if (!item.supplyDate || !item.itemName || !item.quantity || !item.unitPrice) {\n throw new Error('tax invoice send exception: no item essential value')\n }\n\n // 아이템의 일자가 작성일자보다 크면 에러\n if (taxInvoice.issueDate < item.supplyDate) {\n throw new Error('tax invoice send exception: item supplyDate is bigger than issueDate')\n }\n\n // 영세업자인데 아이템 세금이 있으면 에러\n if (taxInvoice.invoiceType === InvoiceType.ZERO_RATED_TAX_INVOICE && item.taxPrice > 0) {\n throw new Error('tax invoice send exception: item tax price is exist')\n }\n\n newTaxInvoiceItems.push({\n tii_seqnumeric: item.sequence,\n tii_purchaseexpirydatetime: item.supplyDate.replace(/-/g, ''),\n tii_nametext: item.itemName,\n tii_informationtext: item.specification,\n tii_chargeableunitquantity: item.quantity,\n tii_unitprice_unitamount: item.unitPrice,\n tii_invoiceamount: item.supplyPrice,\n tii_totaltax_calcamount: item.taxPrice,\n tii_descriptiontext: item.remark\n })\n }\n\n return {\n aid: aid,\n inv_seq: today.replace(/-/g, '') + customer_no,\n exd_refdoc_id: null,\n tid_issuedatetime: taxInvoice.issueDate.replace(/-/g, ''),\n tid_typecode: taxInvoice.invoiceType,\n tid_purposecode: taxInvoice.purpose,\n tid_amendcode: taxInvoice.revisedReason,\n tid_originalissueid: null,\n tid_desc0: taxInvoice.remark0,\n tid_desc1: null,\n tid_desc2: null,\n tit_alice_specorg_biztypecode: taxInvoice.supplierBusinessRegistrationCategory,\n tit_alice_id: taxInvoice.supplierBusinessRegistrationNumber,\n tit_alice_specorg_taxregid: taxInvoice.supplierBranchIdentification,\n tit_alice_name: taxInvoice.supplierBusinessName,\n tit_alice_specperson_name: taxInvoice.supplierRepresentativeName,\n tit_alice_specaddr_lineone: taxInvoice.supplierAddress,\n tit_alice_typecode: taxInvoice.supplierBusinessType,\n tit_alice_classcode: taxInvoice.supplierIndustryType,\n tit_alice_defcont_deptname: taxInvoice.supplierDepartment,\n tit_alice_defcont_personname: taxInvoice.supplierContactName,\n tit_alice_defcont_telcomm: taxInvoice.supplierContactPhone,\n tit_alice_defcont_uricomm: taxInvoice.supplierContactEmail,\n tit_alice_defcont_cellphone: taxInvoice.supplierContactCellPhone,\n tit_bob_specorg_biztypecode: taxInvoice.buyerBusinessRegistrationCategory,\n tit_bob_id: taxInvoice.buyerBusinessRegistrationNumber,\n tit_bob_specorg_taxregid: taxInvoice.buyerBranchIdentification,\n tit_bob_name: taxInvoice.buyerBusinessName,\n tit_bob_specperson_name: taxInvoice.buyerRepresentativeName,\n tit_bob_specaddr_lineone: taxInvoice.buyerAddress,\n tit_bob_typecode: taxInvoice.buyerBusinessType,\n tit_bob_classcode: taxInvoice.buyerIndustryType,\n tit_bob_1stdefcont_deptname: taxInvoice.buyer1stDepartment,\n tit_bob_1stdefcont_personname: taxInvoice.buyer1stContactName,\n tit_bob_1stdefcont_telcomm: taxInvoice.buyer1stContactPhone,\n tit_bob_1stdefcont_uricomm: taxInvoice.buyer1stContactEmail,\n tit_bob_1stdefcont_cellphone: taxInvoice.buyer1stContactCellPhone,\n tit_bob_2nddefcont_deptname: taxInvoice.buyer2ndDepartment,\n tit_bob_2nddefcont_personname: taxInvoice.buyer2ndContactName,\n tit_bob_2nddefcont_telcomm: taxInvoice.buyer2ndContactPhone,\n tit_bob_2nddefcont_uricomm: taxInvoice.buyer2ndContactEmail,\n tit_bob_2nddefcont_cellphone: taxInvoice.buyer2ndContactCellPhone,\n tit_broker_specorg_biztypecode: taxInvoice.agentBusinessRegistrationCategory,\n tit_broker_id: taxInvoice.agentBusinessRegistrationNumber,\n tit_broker_specorg_taxregid: taxInvoice.agentBranchIdentification,\n tit_broker_name: taxInvoice.agentBusinessName,\n tit_broker_specperson_name: taxInvoice.agentRepresentativeName,\n tit_broker_specaddr_lineone: taxInvoice.agentAddress,\n tit_broker_typecode: taxInvoice.agentBusinessType,\n tit_broker_classcode: taxInvoice.agentIndustryType,\n tit_broker_defcont_deptname: taxInvoice.agentDepartment,\n tit_broker_defcont_personname: taxInvoice.agentContactName,\n tit_broker_defcont_telcomm: taxInvoice.agentContactPhone,\n tit_broker_defcont_uricomm: taxInvoice.agentContactEmail,\n tit_broker_defcont_cellphone: taxInvoice.agentContactCellPhone,\n tit_specpay_paidamount10: taxInvoice.paymentAmountCash,\n tit_specpay_paidamount20: taxInvoice.paymentAmountCheck,\n tit_specpay_paidamount30: taxInvoice.paymentAmountPromissoryNote,\n tit_specpay_paidamount40: taxInvoice.paymentAmountAccountsReceivable,\n tit_specsum_chargeamount: taxInvoice.supplyAmount,\n tit_specsum_taxamount: taxInvoice.taxAmount,\n tit_specsum_grandamount: taxInvoice.totalAmount,\n inv_sign: '',\n biz_tocharlesconfirmstatus: null,\n tAliceItemList: newTaxInvoiceItems\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tax-invoice-api-mutation.js","sourceRoot":"","sources":["../../../server/service/tax-invoice-api/tax-invoice-api-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive, UseMiddleware } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { SpeakRefusals } from '@things-factory/shell'\n\nimport { TaxInvoiceApi } from './tax-invoice-api'\nimport { defaultTaxInvoiceApi } from './default-tax-invoice-api'\nimport { TaxInvoiceApiPatch, TaxInvoiceSend } from './tax-invoice-api-type'\nimport { TaxInvoiceItem } from '../tax-invoice-item/tax-invoice-item'\nimport { Category, InvoiceType, TaxInvoice } from '../tax-invoice/tax-invoice'\nimport { sendTaxInvoiceByUniposApi } from '../unipost-api/tax-invoice-send'\nimport { parseTaxInvoiceByUnipostFormat } from '../tax-invoice/tax-invoice-util'\n\n@Resolver(TaxInvoiceApi)\n@UseMiddleware(SpeakRefusals)\nexport class TaxInvoiceApiMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => [TaxInvoiceApi], { description: 'To modify Tax Invoice Api information' })\n async updateMultipleTaxInvoiceApi(\n @Arg('patches', type => [TaxInvoiceApiPatch]) patches: TaxInvoiceApiPatch[],\n @Ctx() context: ResolverContext\n ): Promise<TaxInvoiceApi[]> {\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 taxInvoiceApiRepo = tx.getRepository(TaxInvoiceApi)\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 taxInvoiceApiRepo.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 taxAuditResult = await taxInvoiceApiRepo.findOne({\n where: { domain: { id: domain.id }, id: updateRecord.id }\n })\n\n if (!taxAuditResult) {\n throw new Error(`failed to find taxAuditResult to update: ${updateRecord.id}`)\n }\n\n const result = await taxInvoiceApiRepo.save({\n ...taxAuditResult,\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 @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => Boolean, { description: 'To delete multiple Tax Invoice Api' })\n async deleteTaxInvoiceApis(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(TaxInvoiceApi).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"tax-invoice\", privilege: \"mutation\", domainOwnerGranted: false)')\n @Mutation(returns => Boolean, { description: 'To Send Tax Invoices By Api' })\n async sendTaxInvoicesByApi(\n @Arg('taxInvoiceSendList', type => [TaxInvoiceSend]) taxInvoiceSendList: TaxInvoiceSend[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n await this.issueTaxInvoicesByApi(taxInvoiceSendList, context)\n\n return true\n }\n\n async issueTaxInvoicesByApi(taxInvoiceSendList: TaxInvoiceSend[], context: ResolverContext): Promise<TaxInvoice[]> {\n if (!taxInvoiceSendList?.length) throw new Error('tax invoice send exception: no list')\n\n const { domain, user, tx } = context.state\n const taxInvoiceRepo = tx.getRepository(TaxInvoice)\n const taxInvoiceItemRepo = tx.getRepository(TaxInvoiceItem)\n const issuedTaxInvoices: TaxInvoice[] = []\n\n const apiInfo = await defaultTaxInvoiceApi(tx, domain)\n const businessRegistrationNumber = apiInfo.businessRegistrationNumber\n const { aid = '', bearer = '', customer_no = '' } = apiInfo?.attributes\n let failCount = 0\n let failMessage = []\n\n // 1. 밸리데이션 및 데이터 파싱\n let newTaxInvoiceSendList = taxInvoiceSendList.map(taxInvoiceSend =>\n this._parseTaxInvoiceSendForApi(taxInvoiceSend, aid, customer_no)\n )\n\n // 2. 세금계산서 발행 API 호출\n const apiResult = await sendTaxInvoiceByUniposApi(businessRegistrationNumber, aid, bearer, newTaxInvoiceSendList)\n if (apiResult === false) {\n // TODO 로그 찍기\n throw new Error('tax invoice send exception: api error')\n }\n\n // 3. 성공하면 세금계산서 DB에 저장\n for (let item of apiResult) {\n if (item?.success) {\n const { taxInvoice, taxInvoiceItems } = parseTaxInvoiceByUnipostFormat(\n item?.tAliceEntry,\n item?.tAliceEntry?.tAliceItemList,\n Category.EXPORT\n )\n\n // 세금계산서 저장\n const newTaxInvoice = await taxInvoiceRepo.save({\n ...taxInvoice,\n domain,\n creator: user,\n updater: user\n })\n issuedTaxInvoices.push(newTaxInvoice)\n\n // 아이템 저장\n for (const item of taxInvoiceItems) {\n await taxInvoiceItemRepo.save({ ...item, taxInvoice: newTaxInvoice, domain, creator: user })\n }\n } else {\n failCount++\n failMessage.push(`${item.inv_seq}: ${item.message}`)\n }\n }\n\n // 실패가 1개라도 있으면 에러\n if (failCount > 0) {\n throw new Error(failCount + '개의 계산서 등록에 실패하였습니다.\\n' + failMessage.join('\\n'))\n }\n\n return issuedTaxInvoices\n }\n\n // 유니스포트에 받을수 있는 포맷으로 데이터 파싱\n private _parseTaxInvoiceSendForApi(taxInvoiceSend, aid, customer_no) {\n const { taxInvoice, taxInvoiceItems } = taxInvoiceSend\n let newTaxInvoiceItems: any = []\n const today = new Intl.DateTimeFormat('fr-CA', { timeZone: 'Asia/Seoul' }).format(new Date()) // YYYY-MM-DD\n\n // 필수값 체크\n if (\n !taxInvoice.supplierBusinessRegistrationNumber ||\n !taxInvoice.supplierBusinessName ||\n !taxInvoice.supplierRepresentativeName ||\n !taxInvoice.buyerBusinessRegistrationNumber ||\n !taxInvoice.buyerBusinessName ||\n !taxInvoice.buyerRepresentativeName ||\n !taxInvoice.issueDate\n ) {\n throw new Error('tax invoice send exception: no essential value')\n }\n\n // 공급자 사업자 등록번호가 전부 숫자이며 10자리 인지 체크\n if (\n isNaN(taxInvoice.supplierBusinessRegistrationNumber) ||\n taxInvoice.supplierBusinessRegistrationNumber.length !== 10\n ) {\n throw new Error('tax invoice send exception: Supplier Business Registration Number is wrong')\n }\n\n // 공급받는자 사업자 등록번호가 전부 숫자이며 10자리 인지 체크\n if (isNaN(taxInvoice.buyerBusinessRegistrationNumber) || taxInvoice.buyerBusinessRegistrationNumber.length !== 10) {\n throw new Error('tax invoice send exception: Buyer Business Registration Number is wrong')\n }\n\n // 작성일자가 오늘 날짜를 넘어가면 에러\n if (taxInvoice.issueDate > today) {\n throw new Error('tax invoice send exception: issueDate error')\n }\n\n // 현금, 수표, 어음, 외상미수금이 있을시 총 합계금액과 금액 동일 체크\n const paymentAmount: number =\n taxInvoice.paymentAmountCash +\n taxInvoice.paymentAmountCheck +\n taxInvoice.paymentAmountPromissoryNote +\n taxInvoice.paymentAmountAccountsReceivable\n if (paymentAmount > 0 && paymentAmount !== taxInvoice.totalAmount) {\n throw new Error('tax invoice send exception: summary is not same')\n }\n\n // 영세업자인데 세금이 있으면 에러\n if (taxInvoice.invoiceType === InvoiceType.ZERO_RATED_TAX_INVOICE && taxInvoice.taxAmount > 0) {\n throw new Error('tax invoice send exception: tax price is exist')\n }\n\n for (let item of taxInvoiceItems) {\n // 아이템 필수값 체크\n if (!item.supplyDate || !item.itemName || !item.quantity || !item.unitPrice) {\n throw new Error('tax invoice send exception: no item essential value')\n }\n\n // 아이템의 일자가 작성일자보다 크면 에러\n if (taxInvoice.issueDate < item.supplyDate) {\n throw new Error('tax invoice send exception: item supplyDate is bigger than issueDate')\n }\n\n // 영세업자인데 아이템 세금이 있으면 에러\n if (taxInvoice.invoiceType === InvoiceType.ZERO_RATED_TAX_INVOICE && item.taxPrice > 0) {\n throw new Error('tax invoice send exception: item tax price is exist')\n }\n\n newTaxInvoiceItems.push({\n tii_seqnumeric: item.sequence,\n tii_purchaseexpirydatetime: item.supplyDate.replace(/-/g, ''),\n tii_nametext: item.itemName,\n tii_informationtext: item.specification,\n tii_chargeableunitquantity: item.quantity,\n tii_unitprice_unitamount: item.unitPrice,\n tii_invoiceamount: item.supplyPrice,\n tii_totaltax_calcamount: item.taxPrice,\n tii_descriptiontext: item.remark\n })\n }\n\n return {\n aid: aid,\n inv_seq: today.replace(/-/g, '') + customer_no,\n exd_refdoc_id: null,\n tid_issuedatetime: taxInvoice.issueDate.replace(/-/g, ''),\n tid_typecode: taxInvoice.invoiceType,\n tid_purposecode: taxInvoice.purpose,\n tid_amendcode: taxInvoice.revisedReason,\n tid_originalissueid: null,\n tid_desc0: taxInvoice.remark0,\n tid_desc1: null,\n tid_desc2: null,\n tit_alice_specorg_biztypecode: taxInvoice.supplierBusinessRegistrationCategory,\n tit_alice_id: taxInvoice.supplierBusinessRegistrationNumber,\n tit_alice_specorg_taxregid: taxInvoice.supplierBranchIdentification,\n tit_alice_name: taxInvoice.supplierBusinessName,\n tit_alice_specperson_name: taxInvoice.supplierRepresentativeName,\n tit_alice_specaddr_lineone: taxInvoice.supplierAddress,\n tit_alice_typecode: taxInvoice.supplierBusinessType,\n tit_alice_classcode: taxInvoice.supplierIndustryType,\n tit_alice_defcont_deptname: taxInvoice.supplierDepartment,\n tit_alice_defcont_personname: taxInvoice.supplierContactName,\n tit_alice_defcont_telcomm: taxInvoice.supplierContactPhone,\n tit_alice_defcont_uricomm: taxInvoice.supplierContactEmail,\n tit_alice_defcont_cellphone: taxInvoice.supplierContactCellPhone,\n tit_bob_specorg_biztypecode: taxInvoice.buyerBusinessRegistrationCategory,\n tit_bob_id: taxInvoice.buyerBusinessRegistrationNumber,\n tit_bob_specorg_taxregid: taxInvoice.buyerBranchIdentification,\n tit_bob_name: taxInvoice.buyerBusinessName,\n tit_bob_specperson_name: taxInvoice.buyerRepresentativeName,\n tit_bob_specaddr_lineone: taxInvoice.buyerAddress,\n tit_bob_typecode: taxInvoice.buyerBusinessType,\n tit_bob_classcode: taxInvoice.buyerIndustryType,\n tit_bob_1stdefcont_deptname: taxInvoice.buyer1stDepartment,\n tit_bob_1stdefcont_personname: taxInvoice.buyer1stContactName,\n tit_bob_1stdefcont_telcomm: taxInvoice.buyer1stContactPhone,\n tit_bob_1stdefcont_uricomm: taxInvoice.buyer1stContactEmail,\n tit_bob_1stdefcont_cellphone: taxInvoice.buyer1stContactCellPhone,\n tit_bob_2nddefcont_deptname: taxInvoice.buyer2ndDepartment,\n tit_bob_2nddefcont_personname: taxInvoice.buyer2ndContactName,\n tit_bob_2nddefcont_telcomm: taxInvoice.buyer2ndContactPhone,\n tit_bob_2nddefcont_uricomm: taxInvoice.buyer2ndContactEmail,\n tit_bob_2nddefcont_cellphone: taxInvoice.buyer2ndContactCellPhone,\n tit_broker_specorg_biztypecode: taxInvoice.agentBusinessRegistrationCategory,\n tit_broker_id: taxInvoice.agentBusinessRegistrationNumber,\n tit_broker_specorg_taxregid: taxInvoice.agentBranchIdentification,\n tit_broker_name: taxInvoice.agentBusinessName,\n tit_broker_specperson_name: taxInvoice.agentRepresentativeName,\n tit_broker_specaddr_lineone: taxInvoice.agentAddress,\n tit_broker_typecode: taxInvoice.agentBusinessType,\n tit_broker_classcode: taxInvoice.agentIndustryType,\n tit_broker_defcont_deptname: taxInvoice.agentDepartment,\n tit_broker_defcont_personname: taxInvoice.agentContactName,\n tit_broker_defcont_telcomm: taxInvoice.agentContactPhone,\n tit_broker_defcont_uricomm: taxInvoice.agentContactEmail,\n tit_broker_defcont_cellphone: taxInvoice.agentContactCellPhone,\n tit_specpay_paidamount10: taxInvoice.paymentAmountCash,\n tit_specpay_paidamount20: taxInvoice.paymentAmountCheck,\n tit_specpay_paidamount30: taxInvoice.paymentAmountPromissoryNote,\n tit_specpay_paidamount40: taxInvoice.paymentAmountAccountsReceivable,\n tit_specsum_chargeamount: taxInvoice.supplyAmount,\n tit_specsum_taxamount: taxInvoice.taxAmount,\n tit_specsum_grandamount: taxInvoice.totalAmount,\n inv_sign: '',\n biz_tocharlesconfirmstatus: null,\n tAliceItemList: newTaxInvoiceItems\n }\n }\n}\n"]}
|