MACHIKA WEB 無料かんたん見積CGI Ver.1.1
=========================================

このCGIは、商品・サービス・作業料金などの項目を登録し、
ブラウザ上で数量を入力して見積金額を計算・保存・印刷できる、
小規模事業者向けのシンプルな見積システムです。

MySQLなどのデータベースは不要です。
Perl CGIが利用できる一般的なレンタルサーバーで使用できます。

配布元：MACHIKA WEB
https://machikaweb.com/

※実際の管理画面・見積作成画面・印刷画面には、
  MACHIKA WEBの固定ロゴや外部リンクを強制表示しません。
※MIT Licenseで配布しています。LICENSE.txtは削除せず保管してください。


【Ver.1.1での主な改善】
・利用画面からMACHIKA WEB固定フッターを削除
・管理画面のPOST操作にCSRF対策を追加
・見積保存処理にもCSRF対策を追加
・セッションCookieを設置フォルダ内に限定
・セッションID／見積IDの乱数生成を強化
・管理パスワードのハッシュ処理を強化
・POSTデータの最大サイズを256KBに制限
・管理系ページに no-store 等のキャッシュ抑止ヘッダーを追加
・data/ と data/quotes/ に index.html を追加
・初心者向け INSTALL.html を追加
・READMEの設置／個人情報保護の説明を強化


【主な機能】
・管理画面からカテゴリー／品目名／標準単価を登録・編集・削除
・iPad／スマートフォンでも使いやすい数量入力
・「－」「＋」ボタンによる数量変更
・見積ごとの単価変更
・臨時品目を1件追加
・値引き入力
・消費税ON／OFF
・税率設定
・税端数の切り捨て／四捨五入
・お客様名、住所、見積日、担当者、備考の入力
・見積データ保存
・A4見積書表示
・ブラウザ印刷／PDF保存
・保存済み見積の再表示
・保存済み見積の削除
・管理パスワード変更
・スマートフォン対応
・管理ログイン必須による見積画面・保存済み見積の保護
・検索エンジン向け noindex / nofollow


【必要な環境】
・Perl CGIが利用できるWebサーバー
・Perl標準モジュール
  JSON::PP / Digest::SHA / Encode / Fcntl / POSIX など
・JavaScriptが利用できるWebブラウザ
・HTTPS（SSL）の利用を強く推奨

※サーバーによってCGIの設置場所やパーミッションが異なります。
  ご利用のレンタルサーバーのマニュアルもあわせて確認してください。


【ファイル構成】
index.html             入口ページ
setup.cgi              初期設定
admin.cgi              管理画面／ログイン
estimate.cgi           見積作成画面
print.cgi              見積書表示／印刷画面
css/style.css          デザイン
js/estimate.js         見積金額計算
lib/EstimateApp.pm     共通プログラム
data/                  設定・保存データ
data/quotes/           保存済み見積
data/.htaccess         dataへのWebアクセス拒否
data/index.html        ディレクトリ一覧対策
data/quotes/index.html ディレクトリ一覧対策
INSTALL.html           初心者向け設置ガイド
README.txt             この説明書
LICENSE.txt            MIT License


【設置手順】
1. ZIPファイルを解凍します。
2. フォルダ構成を変えずにサーバーへアップロードします。
3. setup.cgi / admin.cgi / estimate.cgi / print.cgi を
   サーバー指定のCGIパーミッション（例：705または755）にします。
4. data と data/quotes をCGIから書き込み可能にします。
5. ブラウザから setup.cgi を開きます。
6. 会社名と8文字以上の管理パスワードを設定します。
7. admin.cgi へログインし、会社情報・税率・品目を設定します。
8. data/ が外部から見えないことを必ず確認します。
9. 初期設定完了後は setup.cgi を削除することを推奨します。

詳しくは INSTALL.html をブラウザで開いてください。


【重要：初期セットアップ】
setup.cgi は「まだ初期設定されていない場合」に管理パスワードを作るページです。
公開サーバーへアップロードしたら、できるだけ早く初期設定を完了してください。

初期設定が終わったら setup.cgi を削除することを推奨します。
setup.cgi を削除しても、通常運用には影響ありません。


【重要：dataフォルダの保護】
このCGIは、見積書作成のために以下の情報を保存する場合があります。

・お客様名
・お客様住所
・見積内容
・会社／店舗情報
・管理認証情報

そのため data フォルダをブラウザから直接閲覧できない状態にすることが必須です。

同梱の data/.htaccess ではApache系サーバーでWebアクセスを拒否します。
設置後、次のようなURLをブラウザで開いて確認してください。

https://example.com/estimate/data/settings.json

403 Forbidden または閲覧不可になれば正常です。

【重要】
200 OKでJSON内容が表示された場合は、そのまま運用しないでください。

.htaccessが使えないサーバーでは、
・サーバー側のアクセス制限機能を使う
・dataディレクトリをWeb公開領域外へ移すよう改造する
など、サーバー仕様に合った保護が必要です。


【会社・店舗情報の登録】
admin.cgi にログインし、「会社・税設定」で以下を設定します。

・会社名／店舗名
・郵便番号
・住所
・電話番号
・FAX
・メールアドレス
・消費税率
・税端数処理
・見積書の定型文

ここで設定した情報は見積書に表示されます。


【見積項目の登録】
管理画面の「品目を追加」から、

・カテゴリー
・品目名
・標準単価

を登録します。

初期状態では汎用サンプルが3件入っています。
不要な項目は削除し、ご自身の業種に合わせて登録してください。


【見積の作成】
管理画面上部の「見積を作る」から estimate.cgi を開きます。

お客様情報を入力し、各品目の数量を「－」「＋」または数字入力で指定します。
その見積だけ単価を変更することもできます。

「その他の品目」には登録していない臨時項目を1件入力できます。

値引き、消費税、備考を確認し、
「見積を保存して印刷画面へ」を押します。


【印刷・PDF保存】
見積保存後、A4形式の見積書が表示されます。

「印刷する / PDF保存」を押すとブラウザの印刷画面が開きます。
プリンター印刷やPDF保存を選択してください。


【保存データとバックアップ】
大切な見積データは data フォルダ内に保存されます。
定期的に data フォルダをFTP等でバックアップしてください。

data/settings.json    会社・税設定
data/items.json       登録品目
data/auth.json        管理認証情報
data/sessions.json    一時的な管理ログイン情報
data/quotes/          保存済み見積

※ auth.json に管理パスワードそのものは保存しません。
※ sessions.json はログインセッション情報です。


【セキュリティ上の注意】
・HTTPS（SSL）で使用してください。
・管理パスワードは推測されにくいものを設定してください。
・data フォルダが外部から閲覧できないことを必ず確認してください。
・初期設定後は setup.cgi を削除することを推奨します。
・共用PCでは使用後にログアウトしてください。
・サーバーと data フォルダを定期的にバックアップしてください。
・管理画面にはCSRF対策を入れていますが、サーバー側Basic認証を追加するとさらに安全です。


【デザイン変更】
css/style.css を編集することで、
背景色、文字色、ボタン、余白などを変更できます。

利用者の会社名やサイト名をMACHIKA WEBへ変更する必要はありません。
このCGIは利用者自身の事業用ツールとして使えます。


【MACHIKA WEB表記とライセンス】
Ver.1.1では、管理画面・見積画面・印刷画面に
MACHIKA WEBへの外部リンクを強制表示しません。

ただし本ソフトウェアはMIT Licenseです。
再配布・改変して配布する場合を含め、LICENSE.txtに記載された
著作権表示とライセンス文を保持してください。

配布元：
MACHIKA WEB
https://machikaweb.com/


【免責事項】
本CGIの利用により生じた損害、データ消失、機会損失、
個人情報の漏えい、その他の問題について配布者は責任を負いません。

本番利用前に必ずご自身の環境で十分な動作確認を行ってください。
税率、端数処理、見積書の記載内容、個人情報の管理は
ご利用者自身の責任で設定・確認してください。
