Slide 7
Slide 7 text
7
コードはTypeScriptで書いていきます。
// 納品書を作成する
makeDeliverySlip(): void {
const line = `商品名:${this.item.name}
数量:${this.item.quantity} 納品日:${this.shipping_date}`
this.printToPdf(line)
}
printToPdf(line:String): void {
console.log(line)
// PDF出力処理は割愛
}
}
export type DocumentType = 'invoice' | 'deliverySlip'
export type Item = {
name: string
price: number
quantity: number
}
//エントリーポイント index.ts
import {DocumentMaker, Item} from "./procedure/DocumentMaker";
const item:Item = {
name: '商品A',
price: 1000,
quantity: 1
}
const documentMaker = new DocumentMaker('invoice', item, 1)
documentMaker.makeDocument()
export class DocumentMaker {
private readonly type: DocumentType
private readonly item: Item
private readonly shipping_date: Date = new Date()
constructor(type:DocumentType, item:Item) {
this.type = type
this.item = item
}
formatDateToYMD(date: Date): string {
const yyyy = date.getFullYear(); // 年を取得
const mm = ('0' + (date.getMonth() + 1)).slice(-2); // 月を2桁に整形
const dd = ('0' + date.getDate()).slice(-2); // 日を2桁に整形
return `${yyyy}年${mm}月${dd}日`;
}
makeDocument(): void {
if(this.type === 'invoice') {
this.makeInvoice()
}else if(this.type === 'deliverySlip') {
this.makeDeliverySlip()
}
}
// 請求書を作成する
makeInvoice(): void {
const line = `商品名:${this.item.name} 価格:${this.item.price} 数量
:${this.item.quantity}
合計金額:${this.item.price * this.item.quantity} ¥n
納品日:${this.formatDateToYMD(this.shipping_date)} ¥n
振込口座:XXX銀行YYY支店 普通口座1234567`
this.printToPdf(line)
}