月別アーカイブ: 2014年9月

ファイルメーカーで販売管理、納品書・請求書印刷と消費税対応

今年3月頃(2014/3)から手がけてたFileMaker(ファイルメーカー)による販売管理ソフト(初回分の投稿を掲載しています)がほぼ出来上がりました。失敗と改良を重ね、半年かかってようやく実データを入力した最終テスト段階まで来ました。

使用したファイルメーカーはFileMaker Pro12.0v4、開発用PCは、iMac(OSX10.9.4)です。
Windows8.1でテストをしています。
基本仕様は、見積、見積依頼、受注、納品、請求、仕入、在庫、入金、支払と各帳票出力が可能です。管理メニューは、在庫、顧客別仕入実績、購入販売履歴、売上実績。フォローメニューに未発注、未入荷、未請求、売掛残、受注、売上フォローなどです。基本台帳は、商品、顧客、仕入先です。
販売、仕入れのモードは、掛け仕入に掛売、現金、都度請求に対応しています。
2015年になって顧客管理を追加中です。顧客管理とは何を整備すれば良いのか手探り状態です。

このソフトの最大の特徴は、(ファイルメーカーの特徴でもある)ポータルを使った出力イメージに近い編集レイアウトとしたことです。とにかく使いやすいことを目指しました。

少し内部の説明を致します。
開発当初、フィールド間の計算でつまずきました。その時の原因はまだクリアにはなっていませんが、テーブル間でアクセスする計算を極力減らして、まあ問題が出なくなったといったところです。
_MG_8293-2<Photo Data>2014/08/25 安曇野大王わさび農場の水車小屋。ここはビックリするほど豊富な水が流れています。水の豊かさを求めましたが、そのショットはNGショットでした。このアングルはもっと右の方が良いのですが、、、。
EOS5DMarkII EF70-200mm f/2.8L IS II USM 1/800 f/2.8

 

_MG_8303-2

 

<Photo data>2014/08/25 旅の途中碌山美術館を見学。荻原守衛の「女」など代表的な作品が展示されていました。美術館を出たところで中学生が見知らぬ私たちに元気よく挨拶してくれました。とても気持ちの良い旅になりました。

EOS 5DMarkII EF24-105mm f/4L IS USM 1/125 f4.0

 

 

 

 

 

美術館と挨拶してくれた学校(安曇野市穂高東中学校)の場所です。
スクリーンショット 2014-10-21 15.20.04

 

 

 

 

 

 

 

 

 

<Photo data>2014/08/25 大糸線「HB-E 300系リゾートビューふるさと」の様です。美術館横を丁度走ってきた電車をとらえました。後で調べてみますと、この電車ハイブリッドだそうです。
EOS5DMarkII EF24-105mm f/4L IS USM 1/1600 f4
_MG_8316

(さて、本文に戻ります)
計算は、テーブル内でできるだけ完結させる様にして、今のところ計算結果は正しく出力されていると思います。
ポータルのフィールドを直接計算式で使いますとエラーが出るのか、フィールドを変数に書き込んで、演算を変数同士で行うように変更しました。


1.納品書印刷

客先に出力します帳票類の印刷を以下具体例をご紹介いたします。下記のスクリーンショットを御覧ください。順に納品書・請求書の印刷レイアウト(一部です)、その印刷サンプル、受注データテーブルです。
印刷レイアウトは、自社情報と商品欄がポータルによる構成です。このサンプルは納品書・請求書上下2段の帳票の上の部分です。請求書側のレイアウトも納品書と全く同じです。レイアウトの設計は納品書側のポータルとフィールドの構成を決めればコピーして貼り付けるだけで簡単に伝票印刷ができます。
また、フィールドのラフな配置は、帳票のオブジェクトを下地に調整すると目標印刷位置を簡単にアジャスト出来ます
。もちろんフィールドの順番の変更や、印刷書式変更にも対応させることが出来ます。印刷は、納品書・請求書の入力・編集メニューから印刷コマンドボタンにスクリプトを組み込み印刷を実行します。

スクリーンショット 2014-09-26 11.33.26

_MG_8491-5

 

 

 

 

上の納品書の事例は、5件/1枚の帳票様式のものです。この場合、商品の数が5件以上の場合は収まりませんので次ページへ繰り越し処理をします。繰り越しは、データテーブルにページフィールドを設けます。関数Ceiling(行数/5)でページ数を計算するか、または全データ数をカウントして何ページにわたるかを求めてページまたは5の倍数でインクリメントさせます。Ceilingを使う場合、6件目のデータのページフィールドは6/5となり、切り上がってMaxページは2になるわけです。
スクリーンショット 2014-09-26 13.34.44

今度は納品書・請求書の印刷スクリプトです。
印刷テクニックとしては、金額合計、税抜額合計、消費税額の合計額はダミーフィールド化して最終ページのみ総合計を印刷します。最終ページのダミーフィールドには計算結果を入れ、前のページには金額合計欄に例えば「次ページ」などのコメントを出力します。

プリンタの駆動は、スクリプトで印刷レイアウトに切り替えて(この例では納品・請求書印刷(1))データを送ります。プリンタの印刷設定はA4縦とか倍率など書式はあらかじめ設定が必要をしておきます。印刷は1ページ目、2ページ目と印刷が連続で行われ、最終ページを印刷してLoopから抜け出します。
いきなりプリンタに出力せず、プリンタダイアログを開いて紙などを設定しながら印刷したいときは、スクリプトでダイアログをオンにします。

2.消費税特例対応
納品書には、受注日と受注伝票番号を左下余白に印刷するようにしました。売上は売上日起算で確定させます。消費税については、今年(2914年)のように税率が期中で改定される場合、特殊処理が必要です。売掛では、消費税更新前後では一伝票内で変更前税率と変更後税率が混在することが有ります。この時は伝票一括では対応しにくく、明細単位計算モード(基本的に行単位計算)を設けました。例えば本例3月度の納品書サンプルの様に消費税が5%と8%の商品が混在しても、行単位で個々の税率で計算出来るようにしました。極端には、このモードは非課税0%(無税、免税)でも対応が可能ということになります。課税については、この他に内税・外税の区分モードの選択も可能としました。
課税計算は詳しいわけではありませんが、平成26年度消費税改訂資料を参考に作りました。最終的には、会計士の友人にチェックをしてもらいます。

課税の組み合わせをまとめますと下記のようになります。

伝票単位 外税、内税、消費税率
明細行単位 外税、内税、非課税、免税、消費税率

上記の納品書印刷例では納品書日付の消費税率は平成26年4月の改正前ですので、何もなければ消費税は売上確定月の消費税(この場合は5%自動計算)、個別ケースについては8%で自動計算されます。税率8%の場合のみ特例という意味でコメント印刷します。もちろん今後消費税改定が行われても変更は可能です(スクリプトの変更で対応することになります)。

ポータルの活用例は、別途またご紹介できると思います。

「ファイルメーカー販売管理は初版がほぼ完成しました。本ホームページのダウンロードページから利用できます(利用規約に了解を頂いた場合)。
注文、仕入、見積、受注、販売、在庫や各種帳票出力、明細取得などが可能です。
受注ファイル取り込みや支払アップロードなどのインターフェース、サーバー&Webクライアントシステムはカスタムとなります。
ご希望が御座いましたら、お問い合わせよりメールまたは電話でご連絡下さい。2019年/2月」

1st 2014/09/26 K.Fukuma
2nd 印刷関連の内容修正とタイトル見直し2014/09/28 K.Fukuma
3rd 文言修正 2014/09/29 K.Fukuma
4th ミス修正 2014/11/01 K.Fukuma
5th 以後の状況について追加記述 2015/03/29
6th 文言追加 2015/08/05
7th 追加 2015/09/27
8th 追記 2019/02/07
K.Fukuma

 

Dynabook Satellite J32、Windows XP機をVine Linux6.2でCanon CAPTプリンタ印刷

現在のホームLAN構成は、Mac Server(Ver3.03)とクライアントにWindows 8とMac OSX10.9の混合使用です。

<Photo data>2014/08/23白川郷です。真夏の水蒸気で山肌のグリーンが弱くなっています。
EOS5DMarkII EF24-105mm f/4L IS USM 1/125、f/10

_MG_8197

 

 

_MG_8625

 

 

 

 

 

<Photo data>2014/11/27 八雲風穴近くの里山の風景、昔この近くに風穴を利用した冷蔵所があったそうです。
 EOS5D MarkII EF24-105mm IS USM ISO200 1/250 f7.1

 

 

 

ホームネットワークでの印刷は、Windows XPが健在でしたので、このDynabook Satellite J32(以下XP機)をXPのプリンタサーバーを用いて複数のPCから印刷利用していました。XPがOSサポート終了して以降は使用出来なくなってしまいました。
Mac、Windows混合使用のため、プリントサーバーは専用PCが必要と考え、XP M/Cの再活用を検討してみることにしました。今回はその1としてのアタック記載です。

下記は使用しましたXP機のスペックです。

Dynabook Satellite J32 モデル:160L/5
Windows XP Pro Service Pack2、Pentium M 1.6GHz 、1.4GBメモリー、XGA、40GB HDD、CD-RWドライブ

PCをプリントサーバー化する簡単な方法はWindows7以上にアップグレードすることですが、この機種はWindows7ではIntelの内蔵ビデオカードがサポート対象外で使えません。また、ビデオカードを汎用ドライバーにしたとしても、Windows7はインストールディスクがDVDのため、この機種はCD-Rまでしか対応しておらず、新しいOSのインストールは出来ませんでした。

Windwsのアップグレードをあきらめ、ネットで書き込みの多いLinuxにトライすることにしました。ところがLinuxのインストールも殆どDVD版です。CDで可能なものは32bit版のVine Linux6.0とubuntu11.04など数件だけとたよりない状況でした。USBメモリを使うインストール方法もあるようですが、このXP機のBIOSは対応していません。

さて、インストールはubuntu Ver11.04 32bit版が何とかインストール出来ましたが、実際に動かしてみると、このXP機ではあきらかに能力不足。コマンド操作など動作が緩慢で断念しました。結局、Vine Linux 6.0だけ残りました。

Linuxは未経験で、コマンドや操作など見知らぬことが多く、ここはしっかり吸収必要と決め猛勉強しました。古いVerのディスク付き書と雑誌を購入しました(文末参照方)。Vine Linux入門キットに添付されていたVer4.0をガイド通りにインストールを行い、CDドライブからインストールに成功しました。

①Vine Linux6.0は、ダウンロードサイト(北陸先端大など)から入手できますが、今回は購入した日経Linux2012年2月号に付録メディアがついており、Vine Linux 6.0 32bit CD版(Vine60-CD-i686 ディスクイメージファイル、692.224KB)を使いました。
②ダウンロード後、Windows 8 PCに上記①のDVDメディアをドライブに入れ、Exprolerで上記i686ファイルを選択し、更に右クリックして上部の管理のディスクイメージツールをクリックします。「マウント」と「書き込み」が出てきますので、空のCD-R(データ用)をDVDドライブに挿入して「書き込み」を選択しますと焼き込みが始まります。(インストールディスクの作成には他のイメージ書き込みソフトが使えます。)
③WindowsXP機の電源をONにし、Windows XP起動後②で作成したVine Linux6.0のインストールディスクをドライブに入れます。次に無線LANカード、USBメモリをつなぎます。OSが立ち上がったらここで再起動をかけ、シャットダウンした頃合いでF2キー(機種によって違います)を押し続けます。ドライブを読み込む状態になりましたら矢印キー 「→」押して、CDドライブを起動ディスクになるよう変更します(既にWindowsXPはサポート外です。LANに短時間つながりますので試される方は自己責任でお願い致します)。
④Linuxのインストールが始まります。Vine Linux6の設定方法はインストールガイドVine Linuxのサイトを参照されるとよいでしょう。WindowXPは不要ですので、ここはきっぱりXP全領域をLinuxパーテーションに設定します。この処理でWindows時代のこのPCの全てのデータがなくなりますのでデータなどがある場合は事前にバックアップが必要です。
インストールの過程で、無線LANカード(バッファロー WLI-CB-AG Air Station 54Mbps)、USBメモリー(ELSONIC USB2.0 8GB)、マウス(マイクロソフトマウス)は自動認識してくれました(無線LANのセキュリティーは手入力になります。AOSSなどには対応していません。)。Vine Linux6.0のインストールモデルはデスクトップtypeを選択しました。

⑤インストール途中でLinuxの管理者名、名前、パスワードなどの入力をします。インストールが終了しましたら、システムのSynapticパッケージマネージャーから全てを選択してVer6.2に更新します(略)。

⑥次がいよいよプリンタ接続です。プリンターはドキュメント印刷に使用していますキヤノンCAPTプリンターLBP3100を用います。プリンターの電源をONにしてXP機の裏側のUSBポートにUSBプリンタケーブルを差し込みます。この時システムの印刷からLBP-3100が見えれば、該当ドライバーのインストールに移行できるのですがここで問題が起きました
このLBP3100は欧州仕様なのか、何故かプリンタ名がCanon LBP3108-LBP3100-LBP3150として認識されてしまいます。この品名のドライバーは以前UKサイトに出ていましたが、今は探しても見当たりません。やむなく、表示名とは異なるもののキヤノンの国内のダウンロードサイトよりLBP3100のlinuxのドライバーを選び、CAPT Printer Driver for linux Ver 2.60(32bit)をダウンロードします。オンラインマニュアルを見ますと、インストールにはターミナルからコマンドによる設定が必須の様です。Linuxは大変と感じました。

マニュアルに従いドライバーファイルを解凍します。拡張子がrpmのファイルを2個取り出し、デスクトップにペーストします。メニューからターミナルを起動し下記の様に入力します。

$ rpm -ivhの行の後にドライバーファイルをドラッグしてきてEnterキーを押すとインストールされます(またはディレクトリを解凍したフォルダーに移動して実行します)。

$ rpm -ivh linux-capt-common-2.60-1.i386.rpm
$ rpm -ivh cndrvcups-capt-2.60-1.i386.rpm
マニュアルにはcapt-commonの方を先にインストールしなさいと書いてありますので、その様にします。
$ /etc/init.d/cups restart
(ppdファイルとデバイスを登録します。USBポートのプリンタ0番設定のつもりです。)
$ /usr/sbin/lploadmin -p LBP3100 -m CNCUPSLBP3100CAPTJ.ppd -v ccp:localhost:59687 -E
$ /usr/sbin/ccpdadmin -p LBP3100 -o /dev/usb/lp0
(ccpdが起動します)
$ /etc/ini.d/ccpd start

この結果は、しかし残念ながら全く印刷されませんでした(マニュアル通りなのですけれど)。この方法ではキヤノンもVineLinux4.2迄しかサポートしていないため動作しないのかもしれません。

今度は実行された内容のリストをとってみました。

[KFukuma@localhost ~]$ su

パスワード:
[root@localhost rpm]# rpm -ivh ‘/home/KFukuma/デスクトップ/cndrvcups-common-2.60-1.i386.rpm’
準備中… ########################################### [100%]
パッケージ cndrvcups-common-2.60-1.i386 は既にインストールされています。
[root@localhost rpm]# rpm -ivh ‘/home/KFukuma/デスクトップ/cndrvcups-capt-2.60-1.i386.rpm’
準備中… ########################################### [100%]
パッケージ cndrvcups-capt-2.60-1.i386 は既にインストールされています。
[root@localhost rpm]# /etc/init.d/cups restart
cupsを停止中: [ OK ]
cupsを起動中: [ OK ]
[root@localhost rpm]# /usr/sbin/lpadmin -p LBP3100 -m CNCUPSLBP3100CAPTJ.ppd -v ccp://localhost:59687 -E
[root@localhost rpm]# /usr/sbin/ccpdadmin -p LBP3100 -o /dev/lp0

CUPS_ConfigPath = /etc/cups/
LOG Path = None
UI Port = 59787

Entry Num : Spooler : Backend : FIFO path : Device Path : Status
—————————————————————————-
[0] : LBP3100 : ccp : //localhost:59687 : /dev/lp0 : New!!

[root@localhost rpm]# /etc/init.d/ccpd start
.tarting /usr/sbin/ccpd: [ OK ]
[root@localhost rpm]#

この結果も残念ながら印刷出来ません!

さらに1週間経ち、困難だろうとあきらめつつVine Linuxのサイトをサーチしていますと、CAPTプリンタを設定させるというスクリプトを見つけました(Canon レーザープリンタ(CAPT)の設定)。早速このcapt.shというスクリプトをVineLinuxのサイトからダウンロードしました。

プリンタのドライバーはインストール済みですので端末より以下を実行しました。
# sudo sh capt.sh LBP3100 /dev/usb/lp0

同様に、capt.shというスクリプトを実行した結果は下記です。
[root@localhost KFukuma]# sudo sh capt.sh LBP3100 /dev/usb/lp0

printer ‘LBP3100’ was added.
configure ccpd …

CUPS_ConfigPath = /etc/cups/
LOG Path = None
UI Port = 59787

Entry Num : Spooler : Backend : FIFO path : Device Path : Status
—————————————————————————-
[0] : LBP3100 : ccp : //localhost:59687 : /dev/usb/lp0 : Modified

restart daemons …
cupsを停止中: [ OK ]
cupsを起動中: [ OK ]
Shutting down /usr/sbin/ccpd: [ OK ]
.tarting /usr/sbin/ccpd: [ OK ]

completed!

[root@localhost KFukuma]#

この方法でやり直した所、今度は印刷成功です

しかし翌日また印刷されません。残念な結果です、、、、。電源を再投入しても印刷されません。しかし色々やってみますと、プリンタをつないだUSB端子に原因があることを突き止めました。USBポートはPCでは電源をオンしてPCに差し込んだときのみ有効なポートと認識しないポートが有るのです。このDynabookの場合、USBポートが4個あります。右奥1カ所が「ホットポート」でした(最初の設定は背面ポート)。多分、USBハブを用いて印刷させようとしても同じようにダメなのではないかと思います。右奥のUSBポートは電源on/offなどにかかわらず問題なく印刷が出来ました
_MG_8489

この写真はUSBポートに最初に認識されたLBP3108-3100-3150に、上記設定によってLBP3100が追加出来たときの写真です。

次回はプリントサーバー化です。これはまとまり次第報告致します。

 

<追記>
2015年2月に入りLinix によるPrinter Server化に心の動きが起こりました。再びチャレンジです。ところが、昨年オーディオルームの改造工事を行って床材などの貼り付けに使用された揮発性の溶剤などが遠因だと固く思っていますがDynabook Satellite J32のキーのsとdが全く反応しません。接点復活を何度か試みましたが、このM/Cもとうとう動かなくなってしまいました。
_MG_8811(XP機の全体は左の写真です)PCの外観は未だ綺麗です。Linuxによるプリントサーバー検討は残念ながらこれにて終わることにします。

2015年新春、プリンターをwifiマルチ接続が可能な無線LAN搭載型のプリンターに更新しました。

参考書:Amazonより中古の書籍雑誌を購入
Vine Linux4入門キット 林雅人、井坂銀次著 秀和システム
日経Linux 2012年2月号

2014/09/18 K.Fukuma
2nd USBポートの影響確認による含表題修正 K.Fukuma
3rd PCキーボード故障 写真追加とプリンタサーバー断念について K.Fukuma
4th 2015/02/20 変換ミスの訂正  K.Fukuma
5th 2015/03/29 追記