インボイスってのが来月から始まる。 消費税をゴソっと徴収されてまう苦しいルール。
受け取った消費税を、支払った消費税で相殺して払えばええらしいんやけど、この計算けっこう手間がかかる。
売上が1000万円もあるわけないから、時限ルールの2割納税を適用させてもらうけど、計算処理は作っとかなアカン。
djangoで作った帳簿の処理を改造することにした。
目標設定 経費を入力するテーブルに、金額のフィールドがあるのを、8%と10%の消費税を保持させて、月単位集計と年単位集計にその合計を表示させる。
最近受け取ったレシートとかみると、もう適格請求書発行番号を書いてあるものがあった。
なるほど、こうやるんやって横目で見ながら自分のexcel請求書も書式変更した。
結果 だいたいこんなことをやった。
2023autumn pycファイルをgit対象から除外 python3.10を3.11、requirements.txt内モジュールのバージョンアップ カレントデータベース表示の追加 ローカル環境をテスト用mariadbに変えてインボイス対応の実施 インボイス対応 ここが今回の主な作業。
migration(0011_gviskeihi_gvismstkamoku_gvismstkeihishubetsu.py)にうまく追加されないのでpycファイルを手動で削除してから追記しdockerコンテナをビルドしなおし 経費テーブル(GVIS_Keihi)に消費税8%(tax8kng)と消費税10%(tax8kng)の格納項目を追加 モデル(GvisKeihi.py)に経費テーブルの追加列を追記 経費明細のテンプレート(gvis_50x_Keihixxx(Detail/Delete/Update).html)に追記 帳簿のテンプレート(gvis_600_ChoboKensaku.html)に追記 view(gvis_keihi_views.py/gvis_chobo_views.py)に追記 共通処理(common.py)の年間売上経費取得処理(gv_Func_uriageKeihi)を年間売上経費&消費税取得処理に内容変更 共通処理(common.py)に年間受け取り消費税合計取得処理(gv_Func_ukeTaxGokei)と年間支払い消費税取得処理(gv_Func_shihaTaxGokei)を追加 アプリケーションの更新 djangoはpythonのwebフレームワークで、MVT(model・view・template)ってのを組み合わせて作る。
modelはデータベース、templateはhtml、viewは実処理を意味してる。
データ構造を変更するときは、modelを変えてマイグレーションを動かして更新させるんやけど、このやり方が自分にはどうしても気に食わない。
データベース上の列の型とかは自分でコントロールしたいから、マイグレーション使わずに手動で更新した。
データベースのテーブルを更新 もう10年ぐらい前からデータベースを維持してて、最初はphpでwebアプリを作ってた。その頃は navicatのmysql接続版 を使ってた。
5〜6年前やったと思うんやけど、mysqlをやめてmariadbに乗り換えて、去年からphpをやめてdjangoに切り替えた。
今は a5sql を使わせてもらってる。 作者さんありがとう。
昔はa5sqlでテーブルの列追加ってやったことなかったけど、最近見たらめっちゃ楽にできることに気づいた。
テスト用スキーマを開いて、テーブルの設計更新を選ぶとこんな画面が出て、列追加ができる。
金額の列の後ろに消費税8%と10%の列を足してから左上にある「DDL生成」ボタンを押す。ここで右端にある「引き継ぐ値」は何も入れないでおくと、「デフォルト式」の値が設定されるみたい。
すると、新しいsql窓が開いてコメントつきでsqlが作られてビックリ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 -------------------------------------------------------------------------------- -- `nariDB_Django`.`GVIS_keihi` のレイアウト変更 -- 注意!!:テーブルに依存するオブジェクト(ビューなど)が削除される場合があります。それらのオブジェクトは復元されません。 -- 2023/09/13 nari -------------------------------------------------------------------------------- -- 新テーブルの作成 create table `nariDB_Django`.`$$GVIS_keihi` ( id int(11) auto_increment not null comment 'id' , `workPeriod` datetime comment '業務期間-開始日' , `workShubetsu` char(4) comment '経費種別' , `workPriority` int(10) comment '経費No-優先順位' , `Keihi_date` datetime comment '経費日付' , `Kamoku` varchar(24) comment '科目' , `Tehai` varchar(1000) comment '手配方法・名称・機種' , `Kng` decimal(12,4) default '0.0000' comment '金額' , `Tax8Kng` decimal(12,4) default '0.0000' comment '消費税8%' , `Tax10Kng` decimal(12,4) default '0.0000' comment '消費税10%' , `Biko` varchar(100) comment '備考' , ins_date datetime comment 'データ作成日' , ins_user varchar(100) comment 'データ作成ユーザ' , upd_date datetime comment 'データ更新日' , upd_user varchar(100) comment 'データ更新ユーザ' , primary key (id) ) comment='' engine InnoDB row_format DYNAMIC auto_increment 10554 collate utf8mb3_general_ci / -- 新テーブルへデータ投入 insert into `nariDB_Django`.`$$GVIS_keihi`(id, `workPeriod`, `workShubetsu`, `workPriority`, `Keihi_date`, `Kamoku`, `Tehai`, `Kng`, `Biko`, ins_date, ins_user, upd_date, upd_user) select org.id, org.`workPeriod`, org.`workShubetsu`, org.`workPriority`, org.`Keihi_date`, org.`Kamoku`, org.`Tehai`, org.`Kng`, org.`Biko`, org.ins_date, org.ins_user, org.upd_date, org.upd_user from `nariDB_Django`.`GVIS_keihi` org / -- 元テーブルの削除 drop table `nariDB_Django`.`GVIS_keihi` cascade / -- 新テーブルをリネームして元テーブル名に変更 alter table `nariDB_Django`.`$$GVIS_keihi` rename to `nariDB_Django`.`GVIS_keihi` / -- インデックスとユニーク制約の作成 create index IDX_keihi on `nariDB_Django`.`GVIS_keihi`(`workPeriod`,`workShubetsu`,`workPriority`,`Keihi_date`,`Kamoku`) / テンポラリテーブルに列追加したターゲットテーブルを作って、そこに元テーブルのデータを流し込み、元テーブル削除したらターゲットテーブルを名前変更してキーつけてくれる。
...