見出し画像

PDF上で【税込み価格】から【消費税】と【税抜き価格】を自動計算させたい。

インボイス対応自作PDF領収証を作ったときの備忘録です。個人用かも。

税込み価格から表示税と税抜き価格を自動計算させたい。そんな欲望をなんとかかなえました。

PDFはExcelと違って関数をJavaScriptで組まなくてはいけないという・・・非常にハードルが高い状態となっております。Excelだとあっという間に出来ることがPDFでは出来ない。

チャットGPTに教わりながらなんとかJavaScriptを完成させたので備忘録です。

税込み請求金額を入力したら、税抜きと消費税10%を自動計算させたい。なぜなら数字を3つも打つのはだるいから。

さて、内税価格からの消費税計算ですが、内税÷1.1という計算式です。で、消費税は端数が出ると総額と狂う場合があるので内税価格から本体価格を引くという事で処理しました。※消費税の端数処理は四捨五入です。

2工程ですね。

PDFは足し算(加算)と, 掛け算(乗算)は簡単にできるようになっているのですが、引き算と割り算がない!なんでやねーーん。

チャットGPTさまでPDF用javascript作れないかきいた結果なんとか動くまでに。


1.フォームを使って自動計算させる。

作るフォームは4つです。
1.税込み価格を入れる場所。
2.(非表示)1.1※この数字を税込み価格です割ります。
3.税抜き価格を表示する場所※【税込み価格】÷1.1 割り算のJavaScriptをいれる
4.消費税※【税込み価格】-【税抜き価格】引き算のJavaScriptをいれる

こんな形で組みました。


3.税抜き価格を表示する場所※【税込み価格】÷1.1 割り算のJavaScriptをいれる

【税込み価格】÷1.1 

var numeratorField = this.getField("numeratorField"); // 分子のフィールド名
var denominatorField = this.getField("denominatorField"); // 分母のフィールド名
var resultField = this.getField("resultField"); // 計算結果を表示するフィールド名

var numerator = parseFloat(numeratorField.value);
var denominator = parseFloat(denominatorField.value);

if (!isNaN(numerator) && !isNaN(denominator) && denominator !== 0) {
var result = numerator / denominator;
resultField.value = result.toFixed(0); // 例えば、小数点第2位まで表示
} else {
resultField.value = "Error"; // エラー時の表示
}

4.消費税※【税込み価格】-【税抜きか価格】引き算のJavaScriptをいれる

【税込み価格】-【税抜き価格】

var numeratorField = this.getField("numeratorField"); // 入力された数値1を表示するフィールド名
var resultField = this.getField("resultField"); // 入力された数値2を表示するフィールド名
var tax = this.getField("tax"); // 計算結果を表示するフィールド名

var value1 = parseFloat(numeratorField.value);
var value2 = parseFloat(resultField.value);

if (!isNaN(value1) && !isNaN(value2)) {
var subtractionResult = value1 - value2; // 引き算の計算
tax.value = subtractionResult.toString();
} else {
tax.value = "Error"; // エラー時の表示
}

フィールドの名前

【税込み価格】=numeratorField
【1.1】=denominatorField
【税抜き価格】=resultField
【消費税】=tax

こんな感じです。名前を変えたらうまく動かなかったのでGPT様のおおせのとおりに。

いやーー、PDFのjavascriptってなかなか綺麗に動かない。どの時点で値を拾うのかが難しいでしょうね。

そんなわけで、消費税は端数切り捨てで行いたかったんでけど、追加でコード書かなくちゃいけないみたいなんで諦めました。


pdfのフォームでjavascriptを使って小さな数点以下の捨て捨ての計算をする方法を教えてください。

var inputField = this.getField("inputField"); // 入力された数値を表示するフィールド名
var resultField = this.getField("resultField"); // 計算結果を表示するフィールド名

var inputValue = parseFloat(inputField.value);

if (!isNaN(inputValue)) {
    var truncatedValue = Math.floor(inputValue); // 小数点以下切り捨て
    resultField.value = truncatedValue.toString();
} else {
    resultField.value = "Error"; // エラー時の表示
}


pdfのフォームでjavascriptを使って四捨五入の計算をする方法を教えてください。 

var inputField = this.getField("inputField"); // 入力された数値を表示するフィールド名
var resultField = this.getField("resultField"); // 計算結果を表示するフィールド名

var inputValue = parseFloat(inputField.value);

if (!isNaN(inputValue)) {
    var roundedValue = Math.round(inputValue); // 数値の四捨五入
    resultField.value = roundedValue.toString();
} else {
    resultField.value = "Error"; // エラー時の表示
}

こんなかんじですね。

ああ、javascriptを扱えるようになったらいいなー。

#インボイス領収書 #PDF自動計算

この記事が気に入ったらサポートをしてみませんか?