11-Flask

Flask(Part.70)| 【消費税率の一括変更】

python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...

目標

  • 会計時の消費税率を一括で変更する機能を追加する

割引機能

ここでは割引率を一括で全商品に適用したプログラムを引用して消費税率を一括で変更するプログラムを実装します。作業は前回同様、feature-discountブランチで行います。

ブランチについては個別に作成するのが妥当ですが、ここでは、ブランチを新しく切らずに作業を行っています。

apps/registerapp/app.py

apps/registerapp/app.pyに次の内容を追加します。

ファイルの末尾

@register_bp.route("/bill/<int:bill_id>/apply_bulk_vat", methods=["POST"])
@login_required
def apply_bulk_vat(bill_id):
    vat_id = request.form.get("vat_id")
    if not vat_id:
        flash("消費税率が選択されていません。", "warning")
        return redirect(url_for("register.view_bill", bill_id=bill_id))

    vat = Vat.query.get(vat_id)
    if not vat:
        flash("消費税率が見つかりません。", "danger")
        return redirect(url_for("register.view_bill", bill_id=bill_id))

    bill = Bill.query.get(bill_id)
    if bill.status == "paid":
        flash("支払い済みの伝票には適用できません。", "warning")
        return redirect(url_for("register.view_bill", bill_id=bill_id))

    orders = Order.query.filter_by(bill_id=bill_id).all()
    for order in orders:
        order.vat_id = vat.id
        order.vat_number = vat.number

    db.session.commit()
    flash("すべての注文に消費税率を適用しました。", "success")
    return redirect(url_for("register.view_bill", bill_id=bill_id))

apps/registerapp/templates/register_bill.html

apps/registerapp/templates/register_bill.htmlで一括適用のフォームを次のように編集します。ここでは優先フラグにチェックがある値が初期値として表示されるように編集しています。

<!-- 一括割引フォーム -->
{% if bill.status != 'paid' %}
<!-- 一括割引フォーム -->
<p>こちらは割引率の一括変更です</p>
<form action="{{ url_for('register.apply_bulk_discount', bill_id=bill.id) }}" method="post" style="margin-bottom: 1em;">
    <label for="bulk_discount_id">一括割引:</label>
    <select name="discount_id" id="bulk_discount_id" class="custom-select">
        {% if discount_list %}
        <!-- 優先の割引率を先に表示 -->
        {% for discount in discount_list if discount.priority %}
        <option value="{{ discount.id }}">{{ discount.number }}%(優先)</option>
        {% endfor %}
        <!-- 優先でない割引率 -->
        {% for discount in discount_list if not discount.priority %}
        <option value="{{ discount.id }}">{{ discount.number }}%</option>
        {% endfor %}
        {% endif %}
    </select>
    <button type="submit" class="update-button">適用</button>
</form>
<hr>
<!-- 一括消費税率フォーム -->
<p>こちらは<span style="color: red;">消費税率</span>の一括変更です</p>
<form action="{{ url_for('register.apply_bulk_vat', bill_id=bill.id) }}" method="post" style="margin-bottom: 1em;">
    <label for="bulk_vat_id">一括消費税率:</label>
    <select name="vat_id" id="bulk_vat_id" class="custom-select">
        {% if vat_list %}
        <!-- 優先の消費税率を先に表示 -->
        {% for vat in vat_list if vat.priority %}
        <option value="{{ vat.id }}">{{ vat.number }}%(優先)</option>
        {% endfor %}
        <!-- 優先でない消費税率 -->
        {% for vat in vat_list if not vat.priority %}
        <option value="{{ vat.id }}">{{ vat.number }}%</option>
        {% endfor %}
        {% endif %}
    </select>
    <button type="submit" class="update-button">適用</button>
</form>

{% endif %}

次は「register_bill.html」の全体です。

この続きはNoteとなります。

今回は以上になります。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
11-Flask

Flask(Part.32)| 【.sqlファイルを利用したデータの復元】

2025年3月25日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
11-Flask

Flask(Part.49)| 【現金出納帳と預金出納帳での連動処理】

2025年4月11日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
11-Flask

Flask(Part.13)| 【ふたつのテーブルの利用(3)テンプレート部分の解説】

2025年3月6日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
11-Flask

Flask(Part.26)| 【注文管理アプリケーションのプログラミング(2)l(1)の解説】

2025年3月19日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site