Skip to content

Commit c4bdbcd

Browse files
committed
refactor: cleanup
1 parent 7fdbb27 commit c4bdbcd

7 files changed

+65
-31
lines changed

app.ts

+19-20
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import type { Order, ProcessedData } from "./types";
1313
import dayjs from "dayjs";
1414
import {creditCardCutOffDate} from "./config";
1515
import * as process from "node:process";
16+
import {logger} from "./logger";
1617

1718
/**
1819
* Execute
@@ -40,11 +41,9 @@ const orderWithEmail: Record<string, string> = parse(fs.readFileSync("input/even
4041
const processedData: ProcessedData[] = (orders as Order[])
4142
// filter subtotal 0 away
4243
.filter(o => Number(o['Subtotal']) > 0)
43-
.filter(o => o["Order #"] === '#38704-3215128')
4444
// beautify data
4545
.map(item => {
4646
const taxInfo = ordersWithTaxMap[item["Order #"]]
47-
console.log(taxInfo)
4847

4948
return {
5049
eventpopId: item['Order #'],
@@ -58,7 +57,7 @@ const processedData: ProcessedData[] = (orders as Order[])
5857
ticket: {
5958
type: item["Ticket Type"],
6059
amount: Number(item["Amount"]),
61-
price: Number(item["Subtotal"])
60+
price: Number(item["Unit Price"])
6261
},
6362
payment: {
6463
method: item["Payment Method"] === "Bank transfer" ? 'bank' : 'credit',
@@ -77,23 +76,23 @@ const processedData: ProcessedData[] = (orders as Order[])
7776

7877
fs.writeFileSync("output/processedData.json", JSON.stringify(processedData, null, 2))
7978

80-
// const pickedData = [processedData[0]]
81-
// const pickedData = processedData
8279
const pickedData = processedData
83-
// .filter(o =>
84-
// [
85-
// "#38704-3216014", // credit, tax, withholding
86-
// "#38704-3215164", // bank, tax, withholding
87-
// "#38704-3215100", // credit, tax
88-
// "#38704-3267295", // bank, tax
89-
// "#38704-3225968", // credit
90-
// "#38704-3215101", // bank,
91-
// "#38704-3288940", // out of scope,
92-
// "#38704-3251019", // company
93-
// "#38704-3215560" // company
94-
//
95-
// ].includes(o.eventpopId)
96-
// )
80+
// .filter(o =>
81+
// [
82+
// // "#38704-3216014", // credit, tax, withholding
83+
// // "#38704-3215164", // bank, tax, withholding
84+
// // "#38704-3215100", // credit, tax
85+
// // "#38704-3267295", // bank, tax
86+
// // "#38704-3225968", // credit
87+
// // "#38704-3215101", // bank,
88+
// // "#38704-3288940", // out of scope,
89+
// // "#38704-3251019", // company
90+
// // "#38704-3215560" // company
91+
// "#38704-3244162"
92+
//
93+
// ].includes(o.eventpopId)
94+
// )
95+
9796

9897
;(async () => {
9998
let index = 1
@@ -110,7 +109,7 @@ const pickedData = processedData
110109
if (item.payment.method === 'bank' || dayjs(item.payment.when).isBefore(dayjs(creditCardCutOffDate)))
111110
await createPayment(item, invoice.recordId)
112111
else
113-
console.log('payment:igno: ', item.eventpopId)
112+
logger('payment', 'igno', item.eventpopId)
114113
} catch (e) {
115114
console.error('fail: ', item.eventpopId)
116115
console.error(e)

createInvoice.ts

+5-9
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import dayjs from 'dayjs'
22

33
import { type ProcessedData } from "./types";
44
import { headers } from './constants';
5-
import {creditCardBilledDate} from "./config";
65
import {isExecuted} from "./isExecuted";
76
import {execSync} from "child_process";
87
import process from "node:process";
8+
import {logger} from "./logger";
99

1010
interface InvoiceResponse {
1111
recordId: number
@@ -19,7 +19,7 @@ interface PartialResponse {
1919
export const createInvoice = async (data: ProcessedData, index: number): Promise<InvoiceResponse> => {
2020
const cachedRecord = isExecuted('invoice', data.eventpopId)
2121
if (cachedRecord) {
22-
console.log('invoice:skip: ', data.eventpopId)
22+
logger('invoice', 'skip', data.eventpopId)
2323
return {
2424
recordId: Number(cachedRecord[1]),
2525
documentSerial: cachedRecord[2],
@@ -34,8 +34,6 @@ export const createInvoice = async (data: ProcessedData, index: number): Promise
3434
// const vat = Number((total * 0.07).toFixed(2));
3535
// const grandTotal = Number((total + vat).toFixed(2));
3636

37-
console.log(data)
38-
3937
const raw = JSON.stringify({
4038
"isComplieAccountingRule": false,
4139
"documentContactCompanyChangeType": 7,
@@ -88,8 +86,8 @@ export const createInvoice = async (data: ProcessedData, index: number): Promise
8886
"discountPerItemValue": 0,
8987
"total": total,
9088
"pricePerUnit": data.ticket.price,
91-
"originalPrice": data.ticket.price,
92-
"originalPriceWithVat": data.ticket.price * 1.07,
89+
"originalPrice": total,
90+
"originalPriceWithVat": total * 1.07,
9391
"productMasterId": 6291394,
9492
"type": 1,
9593
"multipleUnits": [],
@@ -191,9 +189,7 @@ export const createInvoice = async (data: ProcessedData, index: number): Promise
191189
return result as PartialResponse
192190
})
193191

194-
console.log(invoice)
195-
196-
console.log('invoice:done: ', data.eventpopId)
192+
logger('invoice', 'done', data.eventpopId)
197193
execSync(`echo "${data.eventpopId} ${invoice.data.recordId} ${invoice.data.documentSerial}" >> output/invoice.txt`, {
198194
cwd: process.cwd()
199195
})

createPayment.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ import {creditCardBilledDate} from "./config";
55
import {isExecuted} from "./isExecuted";
66
import {execSync} from "child_process";
77
import process from "node:process";
8+
import {logger} from "./logger";
89

910
export const createPayment = (data: ProcessedData, recordId: number) => {
1011
if (isExecuted('payment', data.eventpopId)) {
11-
console.log('payment:skip: ', data.eventpopId)
12+
logger('payment', 'skip', data.eventpopId)
1213
return
1314
}
1415

@@ -54,7 +55,7 @@ export const createPayment = (data: ProcessedData, recordId: number) => {
5455
body: JSON.stringify(payload),
5556
};
5657

57-
console.log('payment:done: ', data.eventpopId)
58+
logger('payment', 'done', data.eventpopId)
5859
execSync(`echo "${data.eventpopId}" >> output/payment.txt`, {
5960
cwd: process.cwd()
6061
})

logger.ts

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import chalk from 'chalk'
2+
3+
export const logger = (type: 'invoice' | 'payment', status: 'done' | 'skip' | 'igno' | 'fail', ...data: any[]) => {
4+
const title = `${type}:${status}: `
5+
switch (status) {
6+
case "done":
7+
console.log(chalk.green(title), ...data)
8+
break
9+
case "fail":
10+
console.error(chalk.red(title), ...data)
11+
break
12+
case "skip":
13+
console.log(chalk.yellow(title), ...data)
14+
break
15+
case "igno":
16+
console.log(chalk.blue(title), ...data)
17+
break
18+
}
19+
}

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"author": "",
1212
"license": "ISC",
1313
"dependencies": {
14+
"chalk": "^5.3.0",
1415
"csv-parse": "5.5.6",
1516
"dayjs": "1.11.13",
1617
"dotenv": "16.4.5",

pnpm-lock.yaml

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

reset.ts

+9
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,25 @@ const invoices = fs.readFileSync("output/invoice.txt", "utf8").trim().split("\n"
2525
await fetch(`https://api-core-canary.flowaccount.com/api/th/tax-invoices/${invoice.recordId}/status-key/void`, {
2626
method: 'POST',
2727
headers
28+
}).then(o => {
29+
console.log(o.status)
30+
return o
2831
})
2932
// reset it
3033
await fetch(`https://api-core-canary.flowaccount.com/api/th/tax-invoices/${invoice.recordId}/status-key/awaiting`, {
3134
method: 'POST',
3235
headers
36+
}).then(o => {
37+
console.log(o.status)
38+
return o
3339
})
3440
// delete it
3541
await fetch(`https://api-core-canary.flowaccount.com/api/th/tax-invoices/${invoice.recordId}`, {
3642
method: 'DELETE',
3743
headers
44+
}).then(o => {
45+
console.log(o.status)
46+
return o
3847
})
3948
}
4049
})()

0 commit comments

Comments
 (0)