2012年03月23日

小規模事業用の見積・納品・請求書類発行システム

はじめに
前回のエントリUbuntuで販売伝票作成管理で書いたように、この3月、私の営む翻訳事務所で使うための見積・納品・請求の3点の書類を発行するためのファイルを作成した。これは、フリー(オープンソース)のOffice統合ソフトであるOpenOffice(LibreOffice)の表計算ソフトCalc上で動作するマクロと表のテンプレートである。私の事業のためにカスタマイズしているので汎用にはならないと思うが、私の事業と似たような特徴をもっている事業、つまり、
  • 年間の売上がそれほど多くない(概ね1000万円以下)
  • 平均受注金額がある程度高い(概ね数万円程度以上)
  • 受注に応じて仕入れを立てる(在庫販売ではない)
  • 1明細について仕入先が1件に決まる(複数の仕入れを加工して商品にするのではない)
  • 見積の受注率が比較的高い(数割以上)
といった事業なら、ある程度使えるのではないだろうか。
上記の売上と受注金額については、つまりは年間数百件以上のデータを扱わないほうがいいだろうということである。スプレッドシートの特徴として数万件ものデータを扱うと処理速度が大幅に低下することが予想される(今回のシートで確認したわけではないが、たぶんそうなると思う)。通常、データは数年分は保管したいので、最大二千件程度までのデータを格納するとしたら年間数百件程度が妥当な処理範囲だろうというわけだ。だから、単価の高い仕事を扱うのであれば売上の高い事業でも使えるし、逆に単価が低ければ売上の制限はもっと厳しくなる。複数の原料を仕入れてひとつの商品を組み上げるタイプの業態に向かないのは、1明細につき一つの仕入先を想定しているからだ。翻訳エージェントの場合、この仕入先はつまりその文書を担当する翻訳者ということになる。また、このシステムは見積書で入力したデータを納品書、請求書と使いまわしていくようになっているため、見積書不要の業態や受注の如何にかかわらず大量の見積書を発行する業態には向いていない。見積→受注→納品→請求→売上集計と流れていく事務処理をスムーズに行うためのものである。

ダウンロードとライセンス
ダウンロードはこちらのサイトにある、invoices.odsという名称のファイルをローカルに置いて使う。

あるいは、こちらをクリックするとダウンロードに導かれる。

単なるテンプレートなので特に使用許諾等に堅苦しいことをいうつもりはないが、マクロのほとんどは複数のサイトに掲載されたサンプルコードからの改変なので、それらサイトの作者に対する敬意を払ってほしい(参考にしたサイトは別記事に記載の予定)。それらサンプルコードに関して特に著作権上の制約は設けられていなかったようであるが、私の権利範囲に関してはその精神を尊重してGPL準拠としたい。

要件
開発はUbuntu上のLibreOfficeで行なっており、それ以外の環境での詳しい動作確認は行っていない。ただし、このLibreOfficeはUbuntuのリポジトリに含まれているものではなく、本家サイトからダウンロードしてインストールしたものを使っている。Ubuntu12.04のリポジトリにあるLibreOfficeではエラーが発生して動作しないことを確認している。一方、Windows上のOpenOfficeでは、少なくとも一定の環境では動作するようである。この場合、フォントの設定が反映されないので、別途Takaoフォントを導入する必要があるだろう。

初期設定
ダウンロードしたファイルをOpenOffice(もしくはLibreOffice)から開いたら、使用前に初期設定を行う必要がある。初期設定は2種類ある。その他、OpenOfficeの設定を変更する必要があるかもしれない。
OpenOffice(LibreOffice)は、初期設定でマクロが無効になっている。本ファイルはマクロを使用するので、まずOpenOffice(LibreOffice)を起動して、オプションのセキュリティ→マクロのセキュリティの「信頼されたファイル位置」に本ファイルを設置した場所へのパスを追加しておく。
そのうえで本ファイルを起動し、まず第一の設定を行う。これは、出力ファイルのパスの変更で、ツール→マクロ→マクロの管理→LibreOffice Basicと進んでinvoices.odsのStandardに含まれるモジュールquote、statement、invoiceの3つの中のExport_to_PDFという名前のついたサブルーチンに含まれる出力パスを書き換える。デフォルトで"file:///home/user/Document/"が指定されているので、これを適切なパスに書き換える。ファイルの保存先に指定したいフォルダを開いてそこにあるファイルをコピーし、テキストエディタに貼りつければ、そのフォルダまでのパスが容易に得られるだろう。見積・納品・請求の各書類を紙ベースで扱い、PDFが不要である場合には、この処理は必要がない。その代わり、PDF出力ボタンを印刷ボタンに置き換える必要があるだろう。
初期設定の第二は、トップページ(トップページが表示されていないときは下端のタブから「Top」をクリックする)に表示されている「初回使用時に設定をする」ボタンをクリックして行う。ここでは使用者の事業所名や所在地、振込先情報などの入力を求められるので、ダイアログに従って入力する。
さらに、必要に応じて、仕入先データベースを記入しておく。これは、トップページの「仕入先データベースを編集する」をクリックして適宜データを入力する。仕入先の住所その他は必須ではない。
以上で初期設定は終了であるが、データベースには2件のダミーデータが入っているので、必要に応じてこれらを削除する。この削除は、トップページにある「データベースを直接編集する」ボタンをクリックして行う。

使い方

@見積書作成
見積依頼が来たら、本ファイルを起動し、「見積をする」ボタンをクリックする。見積書のシートに移動するので、まず右上隅の「整理番号」を入力する。この整理番号は任意のつけ方でかまわないが、すべての整理番号は桁数を揃えておく必要があり、また、重複してはならない。重複を避けるためシリアルの自動連番にすることも考えたが、私の事務所では整理のために一定の規則で入力するので、ここは手作業の入力としている。日付を利用して付けるようにすれば、重複は避けられるかもしれない。なお、新規の番号が入力されると、その下の「見積日」欄には当日の値が自動入力される。これは必要に応じて変更可能である。
その後、クライアント名、部署、担当者名、見積有効期限、納期、支払い条件、備考と入力を続ける。これらの値は、最終的にはDB_projectに記録される。次に、明細欄の品名、業務内容、数量、単位、単価を入力する。金額は自動計算される。これらのデータは、最終的にDB_descriptionに記録される。
記入が終わったら、右端にある「データベースへデータ書き込み」ボタンをクリックする。このクリックは、1回だけ行う。複数回クリックすると同じデータが重複して書き込まれる不具合が発生する。この不具合を訂正するのは厄介なので、必ず1回だけのクリックに留める。
その後、その下にある「PDF出力」のボタンを押すと、設定したパスに見積書のPDFが出力される。この見積書をクライアントに送信もしくはプリントアウトして使用する。最後に「保存」ボタンを押してからウィンドウのクローズボタンでファイルを閉じる。
A受注処理
見積書が通って受注できたら、本ファイルを起動し、再び「見積をする」ボタンをクリックする。見積書入力画面が現れるので、まず、該当する見積書のデータを呼び出す。最も簡単な方法は、見積書に記載された整理番号を右端上の欄に直接入力することで、これによって前回作成した見積書データが復帰する。あるいは、「顧客・日付からデータ呼び出し」ボタンにをクリックして顧客名を入力する、あるいは「明細からデータ呼び出し」ボタンをクリックして明細書に含まれた名称の一部を入力することで、必要なデータを呼び出す。
データが呼び出されたら、まず、右側印刷範囲外下隅の「受注日」に受注の日付を入力する。さらに同じ印刷範囲外の入力欄に仕入先、外注日、外注単価を記入する。見積条件の訂正があった場合には、見積書の記載内容も訂正する。その上で、やはり1回だけ、「データベースへデータ書き込み」ボタンをクリックする。最後に「保存」ボタンを押してからウィンドウのクローズボタンでファイルを閉じる。
B納品
外注先から納品があり、クライアントに対して納品する準備ができたら、本ファイルを起動し、トップページにある「納品する」ボタンをクリックする。納品書フォーマットのシートに移るから、該当するデータをAに記載した方法で呼び出す。数量と単価は空欄になっているが、これは納品時の数量と単価が必ずしも見積時のものと一致しないという私の事務所の特性を反映したものである。したがって数量と単価を改めて入力しなおすことになるが、見積書に入力したものと一致する、あるいは見積書の数値を参照する必要がある場合は、右側にある「見積の数量・単価参照」ボタンをクリックする。備考欄など、必要に応じて追記する。さらに仕入先からの納品数量や納品日(仕入日)を適宜入力した上で、1回だけ「データベースへデータ書き込み」ボタンをクリックする。その上で、「PDF出力」のボタンを押すと、設定したパスに納品書のPDFが出力される。この見積書をクライアントに送信もしくはプリントアウトして使用する。最後に「保存」ボタンを押してからウィンドウのクローズボタンでファイルを閉じる。
C請求
納品時、もしくは月末締めその他の適切なタイミングで、請求書を発行する。これは、トップページにある「請求する」ボタンをクリックし、Aと同様にデータを呼び出して、「PDF出力」のボタンで請求書PDFを得る。訂正すべきデータ、追記すべきデータがあれば、事前に訂正・追記した上で1回だけ「データベースへデータ書き込み」ボタンをクリックしておくのはもちろんである。最後に「保存」ボタンを押してからウィンドウのクローズボタンでファイルを閉じる。
D入金
請求の入金があったら、トップページにある「請求する」ボタンをクリックし、Aと同様にデータを呼び出して、印刷範囲外右下隅にある「入金日」の欄に入金日を記載する。1回だけ「データベースへデータ書き込み」ボタンをクリックし、「保存」ボタンを押してからウィンドウのクローズボタンでファイルを閉じる。
E月締
トップページ「仕入支払いの計算をする」ボタンをクリックし、計算表の仕入先、該当年、該当月を入力して右側のボタンをクリックすることで、該当月の仕入先への支払い明細が得られる。また、トップページ「「月別合計の計算をする」で、月別の請求書発行ベースの売上集計が計算できる。なお、請求日の適切な記載がない場合は、1899/12月付の売上として集計されるので注意が必要である。
Fデータの訂正
「データベースへデータ書き込み」を2回クリックするなど、重複データが発生した場合、その他の不具合でデータを削除、訂正しなければならない場合は、トップページの「データベースを直接編集する」ボタンをクリックして修正を行う。必要なデータを失わないように、この作業は必ずバックアップをとってから慎重に行う。なお、バックアップは、本ファイルを複製することが最も容易である。

不具合・バグ
本ファイルは現段階(2012年3月23日)ではまだ実用テストの行われていないアルファ版の段階である。したがって、マクロの不具合その他のバグが多数残っていることが予想される。ただし、基本的にはスプレッドシートであるので、データの修正は容易であるから、使用に際して深刻なトラブルにはならないと考えられる。それでも不慮のトラブルを防ぐため、使用開始数ヶ月の間はダブルチェックをお薦めする。不具合の報告は当ブログにて受け付けます。
現段階で把握している顕著な不具合は、以下のもの。
  • Ubuntu公式リポジトリのLibreOfficeでは起動しない。OpenOfficeもしくはLibreOfficeの本家版を使用する必要がある。
  • 終了時に必ずトップページに復帰する使用を想定しているが、実際には復帰せずに終了するケースも発生する。この場合、いったんトップページにアクセスしないと、データの自動入力用のマクロが動作しない。
  • セルの保護が計算式を含んだセルで行われていないため、誤ってこれらセルの内容を消去、上書きする可能性がある。その場合、ほぼ確実にマクロのエラーが発生する。いまのところこれを防止する対策は講じていない。
  • 顧客担当者名の敬称「様」が、保存を繰り返すと重複していく。これはセルの設定を変更することで回避可能であるが、その場合、敬称を手動で付与しなければならない。
  • 整理番号が部分一致してしまうと、部分一致したデータまで呼び出されてしまう。たとえば、120番と1201番のデータがあれば、120番のデータ呼び出し時に1201番のデータも呼び出され、明細が誤ったものとなってしまう。これを回避するためには、部分一致の起こらない整理番号付与のルール(桁数をそろえる)を厳守しなければならない。
  • 長時間使用していると、自動入力用のマクロが複数起動してしまうケースがある。この場合、データの書き換えを複数回行うため、処理時間が長くかかる。対策をとってはいるが、うまく対応できていない模様。
  • 日付等のデータ入力が完全に行われていない場合、集計時に正しい計算が行われない。
  • データベースが空のとき、マクロがエラーを返す。
  • 明細の最大行数が15行で変更できない。15行を超える明細の場合、2通に分けて見積書・納品書・請求書を作成する必要がある。15行以上のデータの読み込みを行うとオーバーフロー分は表示されず、誤った出力になる。
その他、不具合ではないが、入金ベースでの月別集計や仕入先別の年度末集計、月別の売上推移のグラフ化など、表計算ソフトであるから簡単に実装できるはずの機能を実装していない。これらの集計はデータベースシートに入って手作業で行っていただくことも可能なので、必要に応じてやっていただきたい。

カスタマイズ
本ファイルは単なる計算シートとマクロの組み合わせなので、必要に応じて簡単に改変できる。その際に重要なのは、シートの保護をいったん解除することである。これは、ツール→ドキュメントの保護から各シート必要に応じて解除・設定できる。また、一部のシートを隠し表示にしてあるが、これは書式→シート→表示によって解除できる。

おわりに
ある意味、恥さらしのような稚拙なテンプレートですが、この程度のものでもなかなか手に入らないというのがフリーの伝票テンプレートを探してWeb検索をしていたときの実感です。特にOpenOffice(LibreOffice)ではマクロを含んだテンプレートはなかなか転がっていないので、叩き台の意味も含めて公開します。素人の稚拙さが目立つドキュメントですが、ご参考にして頂ければ幸いです。
posted by 松本 at 22:22| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック