株式会社みんなシステムズ
  • 私たちについて
  • サービス
  • 事例紹介
    業務実績お客様の声サンプル画面集
  • ブログ
    社内ブログコラム記事SNS
  • DXセミナー
  • お役立ち資料
    資料ダウンロード料金シミュレーター
  • 無料で相談する
  1. ホーム
  2. 業務実績
  3. 見積書・請求書作成サービス開発事例

WORKS

見積書・請求書作成サービス開発事例

見積書・請求書作成サービス開発事例

本記事でご紹介するのは、自社SaaSパッケージとして開発した、中小企業向けの見積書・請求書作成クラウドサービスです。

ブラウザ上で品目・数量・単価を入力するだけで、社印入りの見積書・請求書をPDFで作成し、そのまま取引先へメール送信できるサービスです。見積書から請求書へのワンクリック変換、過去の書類をもとにした複製作成、得意先の管理、請求金額の検索・集計までを一つの画面の流れにまとめ、パソコンだけでなくスマートフォンからも操作できるようにしています。

本記事では、開発前の課題、開発のアプローチ、実装した主な機能、使用した技術、そして開発で苦労した点・工夫した点を整理してご紹介します。

今回のポイントは、「一式」表記や値引き行、小数の数量、8%と10%の税率混在といった実務ならではの書き方に対応しながら、入力画面・プレビュー・PDF・保存データの金額が1円もずれない仕組みをつくったことです。

開発前の課題

見積書や請求書の作成は、どの会社にも必ずある業務です。それにもかかわらず、中小企業の現場では今もExcelやWordのひな形を使い回して作っているケースが少なくありません。前回のファイルをコピーし、宛名と品目と金額を書き換え、PDFに変換してメールに添付する——この一連の作業を、毎月、取引先の数だけ繰り返すことになります。

この方法には、いくつかの典型的な問題があります。まず、計算ミスや転記ミスが起きやすいことです。行を追加したときに合計欄の数式が範囲から外れていた、軽減税率8%の品目と10%の品目が混ざって消費税の計算を間違えた、見積書の金額を請求書に写すときに一桁打ち間違えた、といったミスは、取引先からの信頼に直結します。

次に、書類がどこにあり、どれが送付済みなのかがわからなくなることです。ファイルが担当者のパソコンや共有フォルダに散らばり、「あの見積書は送ったか」「今月の請求は合計いくらか」を確かめるたびにファイルを開いて回ることになります。

一方で、市販の請求書作成サービスを使えば解決するかというと、そう単純でもありません。現場の見積書には、「〇〇工事 一式」のように数量や単価を書かない行、値引きのためのマイナス行、「2.5時間」「1.25㎡」といった小数の数量が当たり前のように登場します。入力項目が厳格すぎるツールでは、こうした書き方ができずに結局Excelへ戻ってしまう。「実務の書き方をそのまま受け入れつつ、計算と管理はシステムに任せられる」ことが、今回のサービスで解決したかった課題でした。

ご提案・開発アプローチ

まず、書類作成の流れを「見積 → 請求 → 送付」という業務の順番に沿って設計しました。見積書を作成し、受注が決まれば一覧画面からワンクリックで請求書に変換できます。得意先・案件名・品目・金額・備考はそのまま引き継がれ、請求日は当日、支払期限は見積の有効期限(未設定なら当月末)が自動で入るため、同じ内容を二度入力する必要がありません。毎月同じ内容で請求する取引先向けには、過去の書類をもとに新しい書類を作る複製機能も用意しています。

次に、最初に一度だけ会社情報を登録すれば、あとは入力しなくて済む構成にしました。自社名・住所・電話番号・適格請求書発行事業者の登録番号・社印画像・振込先口座を登録しておけば、すべての書類に自動で差し込まれます。逆に、これらが未登録のまま書類を作り始めると不完全な請求書ができてしまうため、未登録の場合は作成画面の前に登録画面へ案内する流れにしています。

品目の入力欄は、実務の書き方をなるべく制限しない方針で設計しました。数量や単価は空欄のままでも登録でき、単価にはマイナスの金額も入力できます。数量は小数第3位まで受け付けます。金額は入力と同時に画面上で再計算され、保存前でも完成イメージのPDFを別タブで確認できるようにしました。

送付についても、PDFをダウンロードしてメールに添付し直す手間をなくしています。一覧画面から送信ボタンを押すと、PDFが自動で添付されたメールがそのまま取引先へ届きます。件名と本文は会社ごとにテンプレートとして保存でき、複数の書類をまとめて一括送信することも可能です。送信済みかどうかは一覧に表示されるため、「送ったかどうか」をファイルやメール履歴で確かめる必要もなくなります。

実装した主な機能

  • 見積書の作成・編集・削除(見積番号、案件名・詳細、見積日、有効期限、品目明細、備考)
  • 請求書の作成・編集・削除(請求日、支払期限、振込案内の追記文、品目明細、備考)
  • 見積書から請求書へのワンクリック変換と、過去の書類をもとにした複製作成
  • 品目ごとの税率選択(10%・軽減税率8%・非課税0%)と、小計・消費税・合計の自動計算
  • 数量・単価の空欄入力(「一式」表記など)、マイナス単価(値引き)、小数の数量への対応
  • 保存前の書類プレビューと、社印・登録番号・振込先入りのA4サイズPDF出力
  • PDFを自動添付したメール送信、複数書類の一括送信、メール件名・本文のテンプレート管理
  • 請求書メールへの宛先名の指定と、任意ファイルの追加添付(明細書や報告書など)
  • 書類番号・得意先名・日付(年・月・日の組み合わせ)での検索と、検索結果の合計金額表示
  • 得意先の登録・編集・検索と、書類作成画面からその場で得意先を追加できる機能
  • 会社情報(社名・住所・連絡先・登録番号・社印画像)と振込先口座の登録
  • 複数の会社が同じサービスを利用しても、データが互いに見えない会社単位のデータ管理
  • メンバー管理と、スマートフォンでも操作しやすいレスポンシブ画面

開発で苦労した点・工夫した点

画面・PDF・保存データで、金額を1円もずらさない

請求書作成サービスで最も重要なのは、言うまでもなく金額の正確さです。ところが、これが想像以上に難しい部分でした。

一つ目の壁は、コンピュータの小数計算です。ブラウザで使われるJavaScriptは、小数の計算で目に見えない誤差が生じることがあります。数量が「1.25」のような小数になると、画面上の合計がわずかにずれ、四捨五入の結果が1円変わってしまうことがあるのです。そこで入力画面の計算には、小数を誤差なく扱える専用のライブラリを使い、この問題を根本から避けました。

二つ目の壁は、計算する場所が複数あることです。入力中の画面、保存前のプレビュー、保存時のデータ、PDF、メール添付——どこかで計算方法が少しでも違えば、「画面では10,000円だったのにPDFでは9,999円」ということが起こり得ます。本サービスでは、「品目ごとに税率を掛けて消費税を四捨五入し、それを合算する」という計算ルールを画面側とサーバー側でそろえ、最終的な金額はサーバー側で計算し直して保存する形にしています。画面の表示はあくまで入力補助で、正となる金額はサーバーが決める、という役割分担です。

さらに、数量を小数第3位まで受け付けるように仕様を広げた際には、小計・消費税・合計が小数にならないよう、それぞれを整数に丸める処理を追加しました。入力の自由度を広げるたびに、金額の整合性が崩れないかを確かめ直す——地味ですが、帳票システムでは欠かせない作業です。

「一式」や値引き行など、実務の書き方を受け入れる

開発を進める中で最も仕様の見直しが多かったのが、品目明細の入力ルールです。最初は「数量と単価は必須」という一般的な作りでしたが、それでは実際の見積書が書けません。

たとえば「〇〇工事 一式」のように、数量を書かずに金額だけを載せる行。単価も空欄にして、工程や作業内容の説明だけを載せる行。値引きを表すマイナス金額の行。こうした書き方に一つずつ対応していきました。数量が空欄の行は「1」として計算しつつPDFには空欄のまま表示し、単価が空欄の行は金額欄も空欄で印字する。一方で、単価に「0円」と入力した場合は空欄ではなく「¥0」と表示する、という具合に、「空欄」と「0」を意図の違うものとして区別しています。

この区別は、見積書の複製や請求書への変換でも崩れないようにする必要があります。複製したら空欄だった数量に「0」が入ってしまった、という不具合を一つずつ潰していったのも、今回の開発で手間をかけた部分です。システムに業務を合わせてもらうのではなく、業務の書き方にシステムを合わせることを意識しました。

保存前のプレビューと、送付ミスを防ぐ仕組み

書類を取引先に送る前には、必ず完成形を確認したいものです。ただ、「確認のために一度保存する」という流れにすると、下書きのような書類がデータとして残ってしまいます。そこで、入力途中の内容をデータベースに保存せずにその場で書類を組み立て、PDFとして別タブに表示するプレビュー機能を実装しました。入力画面はそのまま残るため、確認して気になった点をすぐに直せます。

一方、登録ボタンの連打などで同じ書類が二重に作成されないよう、送信の重複を検知して止める仕組みも入れています。ところが、この仕組みがプレビューにも効いてしまうと、「プレビューを見たあとに登録しようとするとエラーになる」という問題が起きました。プレビューや作成画面からの得意先追加だけを対象から外すことで、二重登録の防止と使いやすさを両立させています。

メール送信の場面でも、送付ミスを防ぐ工夫を重ねました。請求書メールでは宛先名を「〇〇様」まで指定でき、指定がなければ得意先名を使います。請求書の個別送信で処理が途中で失敗した場合は、宛先名の変更や送信済みの記録も含めて元に戻し、「送れていないのに送信済みと表示される」状態が残らないようにしています。また、見積書や請求書で使われている得意先は削除できないようにし、過去の書類の宛先がわからなくなる事態も防いでいます。

まとめ

見積書・請求書作成クラウドサービスの開発事例では、「一式」表記や値引き、小数の数量、複数税率といった現場の書き方をそのまま受け入れながら、金額の計算・書類の作成・送付・管理をシステムに任せられるようにしたことがポイントです。

帳票まわりのシステムは、一見シンプルに見えて、実際には「空欄と0の違い」「1円単位の丸め方」「送信失敗時の扱い」といった細かな判断の積み重ねで使い勝手が決まります。汎用的なツールでは自社の書き方に合わない、Excelでの管理に限界を感じている、といった場面こそ、業務に合わせたシステムが力を発揮します。

見積書・請求書の作成や送付を効率化したい、Excelで行っている帳票業務をクラウド化したいとお考えの際は、お気軽にご相談ください。

OTHER WORKS

その他の業務実績

電話予約をLINE化した『予約・会員管理システム』新規開発事例 View Project
予約システム

電話予約をLINE化した『予約・会員管理システム』新規開発事例

車両検査管理システムのスクラッチ開発事例 View Project
その他システム開発

車両検査管理システムのスクラッチ開発事例

店舗在庫と連動するバイク検索・注文サイトを開発した話 ― 在庫の見える化から決済までを一気通貫で実現 View Project
受発注・在庫管理システム

店舗在庫と連動するバイク検索・注文サイトを開発した話 ― 在庫の見える化から決済までを一気通貫で実現

受発注・在庫管理システム開発事例|販売管理ソフトの限界から脱却 View Project
受発注・在庫管理システム

受発注・在庫管理システム開発事例|販売管理ソフトの限界から脱却

すべての業務実績を見る
「こんなことをしたい!」という想い大歓迎!

まずは、お話を聞かせてください。

私たちはITの専門用語を使わず、お客様の言葉でお話しします。

まずは無料で相談する 資料をダウンロード

※ 強引な営業は一切行っておりません。安心してお問い合わせください。

株式会社みんなシステムズ お問い合わせ › お役立ち資料 ›
TEL 0800-300-5705 受付時間 平日 10:00〜19:00
株式会社みんなシステムズ

【本社東京オフィス】
〒130-0021 東京都墨田区緑3-1-14 外山ハイツ502
【本店佐世保オフィス】
〒857-0052 長崎県佐世保市松浦町5-13 グリーンビル205
【大分オフィス】
〒870-0027 大分県大分市末広町1-5-16 ユナイテッド末広ビル3F
【岐阜オフィス】
〒500-8407 岐阜県岐阜市高砂町1-17 岐阜イーストライジング24 2F
【営業時間】
平日10:00〜19:00
【メールアドレス】
info@minna-systems.co.jp

サービス
  • 電話自動応答で営業電話をシャットアウト|Simple5
  • 受託システム開発
  • ソフトウェアテスト代行サービス
  • AI経理アシスタントみゆき
  • 経理業務代行
  • 業務代行
  • 人材育成事業
  • プログラミングスクール
  • まちある佐世保
各種情報
  • お客様の声
  • お役立ち情報
  • 料金シミュレーター
  • SNS
  • ブログ
  • お知らせ
  • コラム
  • 採用情報
  • Wantedly
  • 利用規約
  • プライバシーポリシー
  • 特定商取引に基づく表記

株式会社みんなシステムズ.