見積・請求書を一元管理する請求書管理システムの実装
- LOGZAWEB
- ホームページ制作の技術的な取り組み
- 見積・請求書を一元管理する請求書管理システムの実装
ここでは、見積書・請求書を一元管理する請求書管理システムの実装方法について解説します。
本システムではPHP・JavaScript・データベースを連携させることで、見積・請求データを一括管理し、管理画面から帳票作成・編集・複製・支払管理まで行える構成としています。
ファイル構成
ここでは、請求書管理システムの基本的なファイル構成について説明します。
見積書・請求書の登録・一覧・編集などの機能を 管理画面と処理プログラムで分離し、保守性を考慮した構成としています。
admin/kanri/shorui/seisan/
├─ index.php ← 一覧・検索・管理画面
├─ add.php ← 登録画面
└─ update.php ← 編集画面
phps/shorui/seisan/
├─ index.php ← 一覧処理
├─ add.php ← 登録処理
├─ update.php ← 登録処理
└─ indexreal.php ← 支払ステータス更新(AJAX)
db/
└─ db.php ← データベース接続
一覧管理機能
請求書管理システムでは、登録された見積書・請求書データを一覧画面で管理できる機能を実装しています。
① 一覧管理画面
一覧画面では、会社名・発行日・ステータス・金額・支払状況などを確認でき、対象データの検索や編集、複製などの操作を管理画面から簡単に行える構成としています。
また、支払状況は画面上から即時更新できるよう、Ajaxを利用したリアルタイム更新機能を実装しています。
| 項目 | 詳細 |
|---|---|
| 見積No | 発行日(yyyymmdd)+当日の連番 |
| 会社名 | 取引先の会社名 |
| 件名 | 請求書に表示する件名 |
| 発行日 | 見積書・請求書の発行日 |
| ステータス | 見積中・受注・請求済などの進行状況を管理 |
| 支払 | 「×」または「〇」で管理 |
| 金額 | 合計金額を表示 |
| 見積書 | 見積書PDFを生成 |
| 請求書 | 請求書PDFを生成 |
| 複製 | 既存データをコピーして新規作成 |
| 詳細・編集 | 登録内容の詳細画面へ遷移 |
| 削除 | 該当のデータを削除 |
② 検索処理(PHP)
検索条件に応じてSQLのWHERE句を動的に生成し、対象データを取得します。
$sql = "SELECT * FROM seisan WHERE ";
$where = [];
$params = [];
if (!empty($_POST['companyname'])) {
$where[] = "s_company LIKE :companyname";
$params[':companyname'] = "%" . $_POST['companyname'] . "%";
}
$where[] = "s_no <> ''";
$sql .= implode(" AND ", $where);
$sql .= " ORDER BY s_no DESC";
$result = execPrep($sql, $params);
③ 支払状況更新(Ajax)
支払ステータスは画面更新なしで変更できるよう、Ajaxによる非同期更新処理を実装しています。
$('.payment-status').change(function() {
var siharaiSelected = $(this).val();
var setid = $(this).closest('tr').find('input[type="hidden"]').val();
$.ajax({
url: '../../../phps/shorui/seisan/indexreal.php',
type: "POST",
data: {
setid: setid,
siharaiSelected: siharaiSelected
}
});
});
④ 複製機能
一覧画面から既存の見積データを複製し、新しい伝票として登録できる機能を実装しています。
毎月の定期請求や類似案件では、ゼロから入力する手間を削減でき、 業務効率を大幅に向上させることができます。
if (isset($_POST['submit4'])) {
$hid_id = key($_POST['submit4']);
foreach ($_POST['id'] as $id => $val) {
if ($id == $hid_id) {
$hid_id = $val;
break;
}
}
$sql = "SELECT * FROM seisan WHERE id = :id";
$params = [':id' => $hid_id];
$result = execPrep($sql, $params);
// 新しい伝票番号を作成
$tmpdate = date('Ymd');
$chardate = $tmpdate . "-1";
// データコピー処理
}
登録・編集機能
取引先情報・発行日・税率・品目明細などを入力することで、請求データをデータベースへ保存し、一覧画面から管理できる構成としています。
また、品目は複数登録できるよう動的追加機能を実装し、数量・単価から自動で金額計算を行う仕組みです。
① 登録・編集画面
各項目の詳細は下記の通りとなっております。
| 項目 | 詳細 |
|---|---|
| 精算番号 | 発行日(yyyymmdd)+当日の連番を自動生成 |
| 発行日 | 初期値:本日日付 |
| 取引先 | 請求先となる会社名を入力 |
| 有効期限 | 初期値:本日から1か月後 |
| 支払期限 | 初期値:本日から1か月後 |
| 件名 | 請求書に表示する件名を入力 |
| 消費税率 | 初期値:10% |
| 内外税 | 税別・税込を選択 |
| ステータス | 見積中・受注・請求済などの進行状況を管理 |
| 明細 | 品目名・数量・単価を入力すると金額を自動計算 |
| 「+」ボタン | 行を追加 |
| 「-」ボタン | 行を削除 |
| 合計金額 | 明細合計から税別・税込金額を自動計算 |
| 自社情報 | 会社名・住所・連絡先・振込先などを設定 |
| 備考 | 請求書・見積書に表示する任意のコメントを入力 |
② 品目行の動的追加(JavaScript)
品目を複数入力できるよう、JavaScriptで行の追加・削除機能を実装しています。
$(document).on('click', '.addList', function() {
$('#lsadd-tbody>tr')
.eq(0)
.clone(true)
.insertAfter($(this).parent().parent());
});
$(document).on('click', '.removeList', function() {
$(this).parent().parent().remove();
});
③ 金額自動計算処理
数量と単価から金額を自動計算し、合計金額を算出する処理を実装しています。
document.form1.elements[kingaku][i].value =
Number(document.form1.elements[cnt][i].value) *
Number(document.form1.elements[tanka][i].value);
まとめ
見積書・請求書の管理業務は、手作業やExcel管理ではミスや管理漏れが発生しやすい領域のひとつです。
そのため、帳票作成・顧客管理・支払状況管理を一元化し、業務効率と正確性を向上させる仕組みを構築することが重要になります。
- 見積書・請求書データの一元管理
- 精算番号の自動採番機能
- 明細入力による金額自動計算
- 税別・税込の自動計算処理
- 支払状況のリアルタイム更新(Ajax)
- 帳票データの複製機能
- PDF出力機能による帳票生成
- 管理画面からの簡単操作
LOGZAWEBでは、業務内容や運用フローに合わせたオーダーメイドの業務システム開発にも対応しております。
既存システムでは対応できない運用や独自の管理方法をご希望の場合も、お気軽にご相談ください。