2.VBのインストール最初はVirtualBox(VB)のインストールです(VBのInstall手順は省略致します)。MacにVBのサイトからダウンロードしてインストールしました。通常のアプリと同じです。問題無くインストール出来ました。LTSのインストールLinuxは最初はCentOSをインストールしましたが、自分のPCの能力ではデスクトップの動きが緩慢で、Ubuntuにしました。Ubuntuも最新版ではなく、最初は少し前のVer16.04を北陸先端大のサイトからダウンロードしました。18.04にLAMP環境をインストールする」の手順などを参考にさせて頂きました。LTSはファイルメーカーとの連動性で選びました。MySQL5.7版が欲しかったからです。LTSでMySQLやApache、phpをlamp-serverでセットインストールします(Ubuntu18でも良かったかもしれませんが)。VBを起動し、VBの端末で以下のコマンドを実行しました。lamp-serverインストール後、ダミーphpを記述し、所定のフォルダーに保存後、localhostにWeb表示出来ていました。ubuntu以外にインストールしたパッケージは次の通りです。7.0.334.ssh接続の準備Macをクライアントとしますので、VBにssh接続とするため、IPアドレスは固定にします。Ubuntuをインストールした直後は全部ポートが閉まっています。端末で最初に22番を開放しました。reload次に、ssh-serverをインストールします。openssh-server(openssh-serverはネットワークがつながってないとダウンロード出来ませんので、同じようにVBの80番ポートを空けます。)ssh接続する前に、VB内の端末でMySQLが起動できるか、予めチェックします。root以外の専用userを作成し、仮DBを作成し、権限を付与させておきます(MySQLのuser作成やDB作成は省略致します)。5.設定とssh接続MySQLにDATAを入力できたら、VBのネットワーク設定を以下の様に設定します。接続はブリッジにしました(ポートフォワーディングでも接続出来ます。どちらでも良いと思います)。ブリッジ設定は、VBの設定でネットワークを選び、アダプター1を選択し、割り当てをブリッジアダプターにします。Ethernetとなっています(これは使用する環境で異なります)。この名称をメモしておきます。「高度」の設定はしません。ifconfigで確認します。端末に表示されたenpアドレスをメモします。Ifconfigで確認出来るアドレスに、Macのターミナルでssh接続させます。‘user_nama’@’ip-address’の書式です。user_nameはVBインストール時に登録したuser名です。listに登録されます。その後、続いてパスワードが求められます。このパスワードは、VBインストール時に設定したパスワードを入力します。LinuxのVBに接続されます。VBにつながったら、続いてMacの端末でMySQLを起動します。-pmysql_user_nameは、MySQLをインストールした時に設定したuser名です。パスワードもMySQLのパスワードです。下のスクリーンショットは、MacからMySQLが起動された画面です。セッティングの使い勝手など別途投稿致します。販売管理の伝票等で使用可能な簡単な電子印鑑の作成方法を紹介いたします。電子印鑑は、専用サイトで購入する方法もありますが、図形加工ソフトがあれば自分で作成してもそんなに時間はかかりません。今回は多くの利用者がいると思われるマイクロソフトPowerPointを使用しました。<電子印鑑の作成手順>PowerPointを起動し、新しいプレゼンテーションを選びます(PowerPoinTのVersionは下を参照下さい)。プレゼンテーション画面は、起動時に出てくる最初のページでも、追加したページでも、どちらでも構いません。最初の画面に表示されている「タイトルを入力」や「テキストを入力」の枠は全て消去します。次に、PowerPointのヘッダーの「図形」から、基本図形の「丸」を選びます(次のスクリーンショット参照)。基本図形を選んだら、プレゼンテーションページの中央付近に上下3等分位になる程度の大きさの「青い丸」をマウスで描きます。下記のスクリーンショットの様な円形の丸にします(楕円の印鑑の時は、楕円にします)。次に、青い丸の図形全体を選択した状態にします。PowerPointのヘッダーから「図形の塗りつぶし」で、Color=[白」を選ぶと青い丸が白い丸になります。次に、丸の中央部をダブルクリックして姓名を入力します。入力した文字を選択し、フォントの色を朱肉に近い色に変換します。文字は「フォントの色変換」で、外周の青は「た図形の塗りつぶし」で同じ朱色にします。下の例は、浅川さんという姓名を書き込んだ例です。文字は横書きで書き、縦書きに変換しています。縦書きは、文字を選択し、ヘッダーの文字拡大(A▲)をしていくと、フルサイズになったところで縦書きになります。PowerPointは閉じません。続いて、作成した印鑑図の中央にマウスを置き、右クリックします。ドロップダウンで出てきたメニューから印鑑画像の書式設定を「Jpeg」にします。続けて右クリックし、「図として保存」を選び、印鑑画像を保存します。開いたままのPowerPointのプレゼン資料は、xxさんの印鑑図などの名前を付けて保存します。別の名前を作成する特は、この保存したプレゼン資料を読み出し、姓を書き換えることで追加出来ます。下のスクリーンショットは販売管理の納品書に電子印鑑を使用した例です。伝票のレイアウトが白の時は印鑑画像の下地を白にするのがポイントです。スルー画像にして伝票下地=白でも構いません。販売管理」からご利用可能です。軽減税率の内部計算2019年10月から予定されている販売管理の軽減税率内部計算について記載します。一般的な消費税計算は、伝票合計額に消費税率を乗じた伝票ベースの計算を使用することが多いと思います。税抜合計額の8/108が消費税額になります。軽減税率が摘要されると、伝票合計額に対する消費税計算はほぼ使用出来なくなります。商品の中に軽減税率適用品目があると、その商品のみ税率を変更することが必要です。販売管理では、一品毎に税率が異なることを想定して、商品単位で税額を計算する必要があります。下のスクリーンショットの例で説明します。在ると、軽減税率を特定するフィールドに8%を特定できるマークを付与する方法で進めることにしました。上のスクリーンショットの例で説明します。商品単位に是下津を特定するフィールドを設けます。上の例では、特税フィールドになっています。表示を付け、標準税率品目と区分させます。¥476.8になります。その他は、標準税率です。特税フィールドはnullとします。伝票の軽減税率品の消費税額合計は、¥5276.8ですが、切り捨て整数化するときの消費全額は¥5,276となります。標準税率についても、.08が.1とするだけで計算は同じです。この様に、軽減税率は内部計算はシンプルですが、伝票出力は少々面倒です。税率単位の区分記載では集計欄が8%戸10%の2行必要です。これを、売上伝票や、仕入伝票以外の請求書、元帳など全て変更しなければなりません。以上、計算方法についての簡単な紹介でした。販売管理は、当ホームページの販売管理ページから、ダウンロードして利用することができます。販売管理のID番号欠落を埋めるコメントをどうぞ今回はファイルメーカー販売管理のID番号欠落を埋めるについてです。ファイルメーカー販売管理の顧客IDや伝票IDは、プログラムで識別する固有数字を使用しています(テキストを使用しても問題はありません)。絞り優先AE一般的に、ID番号はシリアル自動発番が使われますが、自動発番、つまりSerial自動とすると、伝票起票後に伝票を削除した時、ID番号が抜けてしまいます。使用していく内に次第に番号欠落が増えていくという問題があります(たいした問題ではありませんが)。8の如く、データ5件中、伝票番号3、6、7番を削除すると、レコード番号とSerial番号が合わなくなってきます。合わなくても、捨ててしまえばそれで良いのですが、整理する方法もあります。テストとして欠落番号を再利用してみました。(過去に取引のあった伝票またはミス伝票を再度使用することになります。前に印刷した伝票が残っているときはおなじ番号は存在する事になりますので、この場合は事後に使用した番号との違いは日付や内容ということになります)そうした背景は承知の上で、あえて作成すると以下の様になります。ID欠落を探す方法は、(1)発番済みの伝票番号の中から最大値を取得し、その値を+1とし、次のID番号にする(2)欠落番号を順次探し穴埋めするといったやり方でしょうか。(1)の方法では結局埋まりません。(2)は番号が大きくなると欠落番号を探すのに時間がかかるかもしれませんが、ここを工夫してやれば解決すると考えました。いうことで(2)のやり方で作ってみました。最初に伝票番号をソートします。欠落番号はレコード番号とのANDか、差分1か、またはレコード番号との不一致を探すかとなりますが、不一致を探す方法で行いました。スクリプトサンプルは以下です。欠落があるとフラグを立て、最終レコードまで欠落無しで連続している時は最終レコード番号を+1としてID番号とします。上の例では記載していませんが、以降伝票が削除された時は順次サーチ、全部補完された後は最終番号+1とすればサーチ時間は解決できると思います。アルゴリズムの検討にしかなっていませんが、とりあえず開発Verはこのままとし、本体プログラムは元に戻しました。Fukumaファイルメーカーのフィールドに条件付き書式を摘要するコメントをどうぞ今回はファイルメーカーの条件付き書式です。フィールドに条件付き書式を設定して見栄えを改善します。f4フィールドの条件付き書式を適用した出力例を最下部に載せました。販売管理の入金回収予定フォロー表です。回収予定が迫っている予定日となるフィールドを条件書式を使ってみました。表の左側が請求伝票、中央が回収予定日、右側が入金伝票になります。入金予定日が今日より後の日付を青色にします。やり方は、入金予定日フィールドを選択し書式設定の中の条件付き書式で設定します。日付が今日より後の文字の色を変えることが出来ます。違う使い方として、例えばまだ入金がされてない時の入金予定額は通常より薄い色とするなど(上の条件付き書式の例の入金額フィールド)変化を持たせることが出来ます。入金済み伝票のテキスト色は普通の黒とし、未締切の時グレーにするなどです。日付が迫ってきた時、アイコンの色を赤に変えて入力者の操作誘導も可能になります。フィールドの背景とテキストの色を同じにする(例えば下地が白でテキストも白)ことで条件によってそのフィールドの表示を見えなくすることも出来ます。ソートや検索では有効としながら実際には見えないという表示応用です。今回は条件付き書式の簡単な例を記載しました。上の回収予定表が小さく見えにくいため下に部分拡大を載せました。今回はファイルメーカーのシリアル番号発番方法のご紹介です。通常シリアル番号は該当フィールドを自動発番にすることで可能です。販売管理では、請求明細書のように、先月の締日から当月締日までに請求書が何件か存在する場合困ることがあります。2018/0522納品書と請求書に番号の関連性がありません。対策として、納品書単位で発番せず、請求明細書という別テーブルを作り、リレーションをかけました。この時のリレーションシップ例を左記に掲載します。請求明細書は顧客単位に締日でくくった番号発生にします。この明細書を明細書ID台帳として明細書の番号を発番させる元帳にします。明細書ID番号というフィールドを作り、フィールドOptionで番号をシリアル自動発番にセットします。この明細書テーブルは、明細書が新規発生する都度ID番号が一つ増加します。掛け販売または仕入の場合、1顧客(または仕入先)に対し1締日、1明細書になります。生成した番号が重複しないようにスクリプトで制御管理します。下記はそのスクリプト事例です。動作としては、明細書ID台帳に同じ顧客、同じ締日の登録が既にあればその明細書番号を読み出します。番号が存在しなければレコードを新規発番し、発番された番号が明細書番号になります。この番号を請求明細書に印刷時に送信してプリントします。このレイアウトの例を最下部に掲載しました。年賀状出し受け管理)毎年正月になると年賀状の出し受けチェックや整理に時間をとられてしまいます。皆様年賀状のデータ整理はどうされていますか。自分の住所録は現役の頃からの継続でファイルメーカーで構築を続けています。ファイルメーカーとしたのはMacで動く住所録ソフトがなかったことが主な理由です。Mac用の住所録ソフトが出てきても動きも悪く使いづらいものでした。50ファイルメーカーは、自作ということで汎用性が高い(自分でプログラミングしているので当然ですが)訳ですが、更新を重ねてだいぶ修正も少なくなってきました。ファイルメーカーを頼りにしていることはデータの信頼性が高いと考えています。スタートはVerが一桁の頃からで、データー数が3000、4000、5000と増えても一度も消失などのトラブルはありません。残念な点は日本語フォントです。横書き印刷は問題ありませんが縦書き印刷がダメです。プログラム的に制御するのがむずかしく目下あきらめ状態です。今回は、ファイルメーカー住所録の年賀状の受け出し管理の部分のご紹介です。左のスクリーンショットは年賀状の出し受け表になります。チェック年度は、今年を中心に翌年と過去3年前まで可能です。レンジは拡大出来ますが、最低数年が分かればよしととしました。よってビジブルな期間は絶対年次ではなく相対年度で計5年間を1年単位で更新させることにしました。管理表は年賀受け取り、出しとマーク、及び年賀に関してのお相手に帯するコメントとなる備考です。いずれも表のようにしていますがフィールドで構成しています。記載事例は2017年に年賀状を受けとり、同年この相手にも発信しているということです。右の数字のマークは何らかの決まり事チェックに使用します。プライオリティーをつけたり、受けとった日にちにしたり、会社・自宅のダブル送付、マークなどに応用出来ます。年賀受け取りのフィールドは、漢字で「受」とし、喪中はがき受け取りは「喪」としました。受けと喪の選択はファイルメーカーのフィールドに選択可能なリストを登録し、マウスで設定します。年度は毎年新年に年次更新とします。年賀受け、年賀出しの各フィールド内容を前年のフィールドにデータをムーブさせて更新します。データムーブはスクリプトで行うことが出来る様にしました。ムーブは2017年「受」を→2016に。2015年、→2014年といった具合です。更新後はスクリプトに現在の西暦年をチェックしインターロックをとって二重更新ミスがないようにしています。住所録は3月頃までに細かな修正などを行ってランタイム版を生成し(またはファイルメーカー版で)、指摘やご指導をいただこうと考えています。ポータルの行を追加するファイルメーカーのポータルで、スクリプトを使った行の追加を掲載します。35mm下のスクリーンショットは、販売管理の受注伝票のポータルを使ったサンプルです。2番目のスクリーンショットはその時のリレーションシップです。受注伝票を事例に説明いたします。商品を受注すると、その情報を保存する場所が必要となります。このサンプルでは「受注データ」というテーブルに保存することにします。受注データに受注価格や数量などといった名前のフィールドを作ります。ポータルの下地となる受注伝票は顧客と伝票番号を発番して登録します。ファイルメーカーのポータルの定義は、(ポータルを組んだレイアウトに)リレーションした関連データを表示させるとなっています。ポータル設定で、関連レコード表示の所を「受注データ」とします。これで「受注データ」の内容がポータルに表示される様になります。ポータルのフィールド配置などは他の投稿を参照ください。受注伝票で商品の各情報を入力すると、ポータルで入力、保存、表示の3つを行うことが出来る様になります。上の伝票画面はサンプルデータが2件入っています。商品を追加入力しなければならないこともあります。この時、ポータルに行を追加する場合、上のリレーションシップの図の編集で、受注データ側の「このリレーションシップを使用して、このテーブルにレコード作成を許可」をチェックするのが一般的です(レコード作成を許可とすると下の受注伝票のスクリーンショットの様に最下行がいつでも入力出来る状態になります)。この方法ではポータルの最下行に入力がまだ終わってない時も行Max値と行数が異なるといったことがおこります。ポータル内の語句サーチや行の挿入並び替えなどを行うとき不便になることがあります。スクリプトによる方法を以下に紹介します。やり方は受注データに新規にレコードを起こしポータルに新行を発生させるやり方です。この時は、リレーションシップ編集のレコード作成を許可はチェックしません。ポータル行とデータ数も一致します。このスクリプトを使った方法による新行を追加した画面を最下部に載せました。販売管理)の受注伝票作成について説明致します。販売管理では、商品を受注したときに行わなければならない手続きがあります。一つは、どこから、何を、何個、いくらで受注したかという「受注情報」の取得です。受注伝票の作成時に必要な情報です。プログラミングするときは、こうした情報をどの様に処理すれば良いでしょうか。ファイルメーカーは、「レイアウト」という優れたユーザーインターフェース(UI)を持っています。レイアウトは、ほぼ自由デザインです。自分で見たいようにレイアウトを作ることが出来ます。ファイルメーカーでは、データを格納する場所はフィールドです。フィールドは目的別にテーブルに作成しますが、このフィールドをレイアウトに自由に配置することが出来るのです。受注情報を受け取った時の話に戻りますが、要は、受注の時は受注に関するレイアウトを作れば良いのです。16mmプログラミングの基本は、「情報の流れ」を関連図に描いて整理することです。紙に鉛筆で、先ずは情報を一つずつイメージしながら描きだします。お客様から自分に来る情報は、例えば受注日付やお客様の名前、受注した商品名や単価などになります。どこから情報を受け、どう処理し、どう格納するかを描いていきます。(頭で考え絵にするところはとてもロジカルです。ぼけ防止にもいいかもしれません。)もう一度話が転じます。Bookだけの独学です)。それまでは、方眼紙に鉛筆でパターンマスクを描き、これを繰り返し大きなマスク図に仕上げていきます。繰り返し図を描いていくのはとても面倒でした。こんな時、計算機は役に立ちました。これは、後々CADになりましたが、大事なのはどうすれば計算機を動かすことが出来るかです。ファイルメーカーに話を戻します。レイアウトだけではプログラムは動きません。1枚のレイアウトを1件の受注伝票にしたとします。伝票は、いろんな所から注文が来ます。受注の度に伝票を増やす必要があります。冊子になっている伝票帳をイメージしてみて下さい。ファイルメーカーでも他のソフトも同じですが、1レイアウトを1レコード、1枚の伝票と考えるところが最初のポイントです。顧客からの情報の流れで、レコード(伝票)を増やしていく概念を描くと下の様な図ができます。この様な絵を描いて、顧客の受注情報を1レコード発生させて受注伝票で受けます。持って行けば良いのです。この図は伝票と顧客の相互関係だけです。このままでは伝票レイアウトには顧客データしか表示出来ません。受注したときにもらう情報は他にもあります。商品に関する情報です。受注伝票レイアウトに商品の情報も記述しなければなりません。レイアウトに顧客情報以外の他の情報を表示するには、ファイルメーカーでは「ポータル」を使います。覗き窓の様なものです。伝票レイアウトに商品を表示する窓を貼り付けるのです。受注伝票というレイアウトには、受注番号や顧客情報に関するフィールドを先ず表示できるようにします(下のレイアウト設定のスクリーンショットを参照下さい。商品データ(商品名、価格など)は、その下の画面例の様に、ポータルに設定します。これで、受注伝票自身の受注番号や顧客の情報と、ポータルに商品データを1枚のレイアウトに表示出来る様になります。ファイルメーカーは異なるテーブル間で関連データを表示できるようにリレーションというコネクションを行います。リレーションは無関係のテーブルの関連づけを行います。商品は商品マスター(台帳)に作成登録しておきます。商品ID、商品コード、商品名などです。顧客情報も同様に顧客マスター(台帳)に登録します。受注伝票に顧客データと商品データを登場させるためにリレーションは欠かせません。受注額など内部計算が必要なときは、例えばフィールドオプションの計算Optionで計算させることが出来ます。受注額=受注数x受注価格の様にします。リレーションの下に受注伝票のレイアウト画面を載せました(説明用の例です。中央のボックスがポータルです。受注伝票はデータを書き出すことも出来ます。印刷や書き出しも、ファイルメーカーではレイアウトを経由して行います。従って、データの入力も出力も自由にレイアウトが出来るということです。市販の印刷済みフォーマットに合わせ込んで美しい印刷帳票にすることも可能です。最下部に受注伝票の印刷イメージをのせました。印刷に注文者の情報を追加したり、入金、送付などのチェックフィールドを設けるとさらに強化出来ます。受注伝票を作成する時のベーシックな構成については以上です。販売管理」は、全くの個人開発です。サル先で販売管理ソフトとしてご利用いただいています。事業用に使用したい場合や、個人事業を立ち上げるときなど、是非ご利用下さい。ファイルメーカーの関連記事はHP内にいくつか掲載しています。販売管理」を利用希望の時は、HPのお問い合わせからメール送信下さい。販売管理」から行うことが出来ます。入力画面を修正時に誤消去してしまいました。仕入伝票の作成FileMakerによる販売管理の仕入れ(自己流)について簡単に説明致します。販売管理の注文伝票作成は前に説明致しました。今回は注文した商品の仕入れについてです。24mm下のスクリーンショットは、前回の注文伝票で作った画面です。入力して注文伝票を起こせば発注となります。仕入れは、仕入れ伝票に直接記帳して受け入れるのがオーソドックスですが、注文画面から受け入れ処理して仕入れ確定とすることも可能です。今回は後者の方法で説明いたします。注文伝票にポータルで入荷数という商品受け入れ用フィールドを作ります(この画面の他のフィールドは今のところ無視願います)。入力サンプル例で説明しますと、単価60000円の100型パソコンを10台、単価24000円の照明器具Aが20台発注されています。ある日(仕入れ日を規定しないといけませんがここでは省略しています)この商品が入荷したとします。入荷数フィールドに入荷量をインプットします。仕入れの確定は画面上方にある「仕入れ伝票に書き出し」ボタンから書き出しを行います。その1確定の方法>仕入れ締め切りは、既に「受け入れ処理済み」というメッセージを書き出し、事後の重複入力を避けます。書き出しボタンを押すと以下のスクリーンショットの様に、例えば「仕入書出済」(適当な名前で)という文字を打ち出します。スクリプトは以下です。このLoopは受入数が不足の時は「未納」、注文通りなら「完納」といったコメント出力します。発注数と入荷数を比較し、注文商品を全部チェックしLoopを抜けます。<仕入れ伝票への書き出し>仕入れの確定(締め切り)は仕入れ伝票発行とします。発注伝票から仕入れ伝票への操作は、仕入伝票とそのデータの2件のレイアウトで行います。下記スクリーンショット参照下さい。最初が仕入れ伝票レイアウト、次が仕入れ伝票データレイアウトです。仕入れ伝票はほとんど発注伝票と同じ構成で出来ます。発注伝票を作成している場合、レイアウトの複写で同じ様なレイアウトを作ることが出来ます。主なフィールドは、仕入れ先、注文時の伝票番号、シリアルな仕入れ伝票番号。メインデータは発注伝票と同じポータルです。データレイアウトは体裁は不要です。仕入れ伝票とリンクしたレイアウトとするだけでOKです。該当の発注伝票から仕入れ伝票への書き込みを行うのですが、前に何度かやっていますLookupでデータを移行させます。例として下記の様なスクリプトを使用しました。スクリプトは、書き込み先の仕入伝票データに同じデータが存在しないことを確認した後、該当の注文データを書き込みます。上のスクリプト、フィールド設定命令の下から2番目発注データ;:注文数→発注データ;:入荷数の誤りでした。発注と同数入荷した商品は一度完納の表示が付きますが、仕入への書き込みを行うと、下記のスクリーンショットの様に、注文伝票の完納のコメントが「仕入書出済」に変更となります。これで、最初の説明の二重書き込みを防ぎます。仕入れ伝票は注文伝票作成とほぼ同じデザインで作ることが出来ます。入荷したことを仕入伝票番号毎に記録保管することで入荷エビデンスになります。仕入伝票という名称は既に使用していますので、サンプル例として「仕入リスト」という下記の様な帳票を作りました。この帳票は書き込んだ仕入伝票データから仕入伝票画面の伝票番号を抽出して印刷します。仕入リストの印刷レイアウトも、発注伝票の印刷レイアウトの複写で作ることが出来ます。今回は仕入伝票の確定を印刷帳票としましたが、実際は入出庫管理とするのが良いと思います。仕入受け入れ=入庫として在庫とし、出荷系につないでいく考え方です。倉庫管理をファイルメーカーで作成し、入出庫が見えるようにすれば万全です。今回作成しました仕入リストは倉庫管理で役に立ちますので後で利用する様にします。単価変更などいろんな処理ルーチンも必要ですが、ここではメイン部分のご紹介としました。上の仕入リストの注文数→仕入数の間違いでした。