2020年7月5日日曜日

以前書いたphpは、バージョン変えたら動かないの巻き

FileMakerに本腰入れてから、随分とphp書いてなかったんだけど、取引先からPHPの話が来て、XAMPP、PHP、MYSQLを、おニュー!にリニューアルしちゃったんだよねぇ!(汗)
さぁ、以前作った(2008年頃)に動いていたファイルを動かしてみよか?と思ったら、エラーだらけ(笑)

まじかよ。前は動いてたじゃん。
Noticeエラーかと思ってたら、Warning、Fatal errorだらけ。
いったいどうしちゃったの?

一部ね
Fatal error: Call to undefined function mysql_connect() って何さ。
ver5.5以降ではmysql_系関数が使えなくなったらしいのよ。そんなこと聞いてないんだけど。
mysql_を 書き換えろっちゅー話。
しかも今はpdoらしい(笑)
えー、まじでそんなの今から覚えてられない・・・
で、いろいろと他人さまの調べてみたら
mysqli_でもいいらしいので、とりあえず今はmysqli_に変えてみた。

これで大丈夫だろ、と思ったら、今度は
mysqli_select_db() expects parameter 1 to be mysqli, string givenだと。
何をわけのわからない事言ってるんじゃ、と思ったら、
パラメーターの渡す順番が違うと・・・。(そんなに厳しかったっけか?)

mysql_select_db($this->db_name, $this->db_obj)を、
mysql_select_db($this->db_obj , $this->db_name)に変えたさ。



46行目の mysql_real_escape_string($values);も、正しくはmysqli_real_escape_string($values)らしい・・・。

が、phpを見てみると



注意:
これまでに mysql_real_escape_string() をよく使っていた人は、 mysqli_real_escape_string() の引数が mysql_real_escape_string() とは違うことに注意しましょう。 mysqli_real_escape_string() の最初の引数は link であり、 mysql_real_escape_string() のようにエスケープしたい文字列を最初に書くのではなくなりました。

とある。


他にもNoticeエラーが山ほど出たので先頭にerror_reporting(0);を入れて逃げた。

<?php
error_reporting(0);

後で絶対直すよー。とにかく他の動きが見たいのに、PHPとMySQLが動いてくれないんだもの。しょーがないよね。


ちなみに、phpが動くかどうかWeb上でTestすることができます。

<?php
function familyName($fname) {
  echo "$fname Refsnes.<br>";
}

familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>

サンプルも入れているが、中を消してRunボタンを押してみるといいです。



自分の古いライブラリ、古い本は要注意ってやつですわ。
で、依頼は丁重にお断りしようかと思うのでありました(笑)


あと、17ファイル修正して動くかどうかだ・・・
やっぱ、FileMakerいいよ。
FileMakerにしな。


2020年6月4日木曜日

2020年6月3日水曜日

締日別の売上入金消込と入金繰越処理

前回のお問い合わせの内容の続きです。

ざっくりですが作ってみました。
とりあえず動作確認中なので今回はダウンロードはできません。


まず、締め別の売上請求の一覧。(請求書を作るところは省いてます)



次に入金処理の画面(請求テーブルに入金テーブルを参照しています)
デモデータは少なめにしておきました。締日別、前回、今回、次回などが確認できたり、得意先で検索し、請求・入金・繰越の流れを見られるように作りました。
また、フィールドタイプの集計は使わないということでしたので、
ポータルでsum関数を使用して合計を出しています。
(計算式や非保存を極力使用せず、スクリプトで計算しているので、集計を使用しても
気にされるほど遅くは感じないかと思います)
ボタンが多くなるのが気になりますね(笑)

(パートは締日別、得意先別です)

渡邉と入れて検索ボタンを押してみます。


5月、6月、7月の状況(流れ)を見る事ができます。
入金日によって、繰越更新基準日(名前はなんでもOK)が計算され、次回に回すか、そのまた次に回すかを計算できるようにしています。

入金0円と入金日が薄文字で書かれている箇所は、空の状態ですと繰越計算をしないので、"請求入金ボタン"を使用して今回締日5月20日だとすれば、+1日を計上しています。「6月20日までが入金予定日ですよ」という意味合いで、実際の入金日が6月21日で、差額があれば、7月20日の締に繰越分として計上されます。
実際に入金があれば、薄文字カ所に上書きでいいでしょう。薄文字は予定表示と考えればいいかもしれません。



繰越処理はこんな感じで大丈夫ですかね?
繰越が算出されてますから、請求合計も合わせて請求書に載せればいいですよね。
(請求書等は作っていません)



請求テーブルの自己リレーションを作り、上記のように結びます。
繰越更新基準日とは、入金日によって締日を変更し、入金差額を次回に回したり、次の次に回したりします。
一請求先に対して、複数の請求があるので、差額のルックアップは使用せず、入金テーブル(ポータル)差額の合計を、パート集計(得意先)の繰越しに計上しています。
請求ごとに繰越ではなく、請求先別の今回、次回の集計欄(パート)です。


ん~、こんな感じですかね・・・




前回のトピックスの題目と違う質問がありましたので、別にあげときますです。

  1. すみません、前回のトピックスの題目と違う質問がありましたので、別にあげときますです。以下
  2. -------------------------------------------------------------------------------------------------
  3. 小林と申します。はじめまして。
    請求処理と入金処理についてのご相談なのですが、現在、売上に対し消込むような形で入金処理を行っているのですが、どうしても過不足があり、次回請求に回したい場合の差額の繰越処理が上手くいきません。また、請求はお客様別の締日ごとに請求書を印刷、発送しています。入金予定も得意先によって翌月であったり、翌々月の末入金であったり、バラバラです。FileMakerでいろいろと検索して探してみたのですが、該当する内容が違っていて、思い切って直接ご相談をもちかけてしまいました。お忙しい中申し訳ありません。何卒、宜しくお願いいたします。
    返信削除
  4. おはようございます。

    締日別の請求入金繰越処理ですねー。
    現在はFileMakerでどの辺まで使用していますか?
    毎月、締日ごとにざっくり何件くらいの処理を行っていますか?
    できましたらFileMakerのバージョンとデバイスを教えて頂けると助かります。
    返信削除
    返信
    1. 小林です。早々のご返信ありがとうございます。
      情報が少なくて申し訳ありません。FileMakerのバージョンは17です。Windows10で社内ではもっぱらエクセルを使用しており、FileMakerは5台使用できるようになっているのですが、顧客管理と見積書、請求書を発行する程度で、その後の処理、入金や売掛管理が出来ていません。エクセルで手打ちで管理している状態です。毎月の請求書は200枚から250枚、繁忙期の秋は1000枚を超える事もあります。その入金は請求テーブルと照合しているのですが、繰越処理が出来ずに困っています。
      削除
  5. 申し訳ありません。
    Filemakerで出来なければ結構なのですが、エクセルの請求の明細が膨大で重い為、FileMakerでも集計の計算を使わずに
    表示することは可能でしょうか。スクリプトとボタンで計算でも構いません。
    返信削除

  6. もうすこし細かい情報がほしいのです。
    「消込み入金の差額分と未回収分の繰越し」の場合、は得意先分として一括でポンと入金、差額を
    出すというわけにはいかないのと、複数あった場合、繰越分の元を追うのが運用上けっこう大変かと思いますよ。

    ●請求毎、1得意先に複数の請求が上がることが有るか無いかで作り方が若干変わります。
    ●特に、重くさせないために集計を使用しない・スクリプト計算なら、ポータルを使用してsum関数で合計を
     出すのですが、パートごとに集計機能が使用出来るものと、できないものがあるので、ちょっと大変ですね
    (得意先で絞っても、締のパート集計が存在していれば関係の無い得意先分も集計されてしまう:
     集計を使えば問題ありませんが、ポータルSumでは締パート内の表示を消すくらいのことしか出来ません)
    ●また、その複数の請求分の入金日がバラバラで締をまたぐ事があるかどうかでも変わります。

    たとえば、
    前回Aさん(20日締・翌月20日)の請求が

    ●請求金額2,000円
    ●請求金額3,000円
    ●請求金額4,000円

    とあり、

    入金が
    ●5月19日入金金額1,000円 差額1,000円が次回6月20日の請求分に繰越
    ●5月22日入金金額2,000円 差額1,000円が次の次7月20日の請求分に繰越
    ●6月末日予定 金額0円 未入金4,000円が次の次の次の8月20日の請求分繰越 

    という風な感じになる可能性があるのか?こうなると、元の請求と差額の不足分を追うのがけっこう
    大変になりますよね。 (得意先で検索して出し入れの流れを見れば解りますが)

    こういう得意先が複数あると、システムを使用する上で「待ち」が発生するので、システムを分けては
    いかがでしょうか。
    普通に問題なく入金される得意先のシステムと、事故扱いのシステムの2つという事です。
    月に200枚以上の請求書を発行するのなら、なおさらかもしれませんよ。
    どのような業態かは分かりませんが、総合計を算出するために一つのシステムを使い続けるより、
    問題の無い得意先のシステムはどんどん進め、問題のある得意先のシステムは別扱いで
    後にゆっくり管理したほうが、スピーディーですし、計画の見通しが立ちます。
    「払わない客は、いつまでも続く」、そのせいで優良なお客様の締処理に影響させるの方が、
    辛いですよね。
    返信削除

2020年5月27日水曜日

繰返しフィールドを使った週の集計って出来かなったっけ? filemaker repeating field_week total

初心者のFileMaker pro Q&Aのサイトのあるトピックスを見ていて気になりました。
このサイトって初心者とか書いてるけど、めちゃめちゃ凄い諸先生方が回答しているので、本当は上級者向けでもあるんだよね。ぜんぜん初心者なんかじゃない(笑)


そのトピックス(解決事案:ふせときます)のレンジではなく、付随したことなんだけど
暇だったし、サンプル作ってみたんだよねー。
週ごとのクロス集計(繰返しフィールド)を作って、さぁ、合計は?

あれ?

どうするんだっけ??
随分前に絶対に一覧表で作ってる筈なんだけど・・・・。
ライブラリの中を探したんだけど出てこなかったので、トピの依頼内容通り最初から作ってみることに・・・


トピ内容に沿ったので余計な項目もありますが

というか、繰返し範囲の合計って難しい。繰返し1からラストはできるじゃん?問題は途中の範囲よ、、、カスタム関数とかプラグインとかできそうなんだけど、ん~、そこまで使わないかな。
それで、なんとか強引に計算の結果を合うようにしたのだが・・・。
こんな原始的な方法でいいのかね!?ひどいね。

Sum(Row[29];Row[30];Row[31];Row[32];Row[33];Row[34];Row[35])

そのまんまじゃん!配列なんて概念がまるっきり無いよね。
過去に作った記憶はあっても、こんな式書いた覚えはないもの。
こんな苦肉の策でしか動かなかった事実。




56歳になりました。
FileMakerを使い始めたのは91年2月からなので29年使ってるんだよー
なのに、この式ってば。
(最近、体操とさ、妻と一緒にエアロビやってんだよねー)
記憶力と物事を素直に吸収できるようにするには、どうしたらいいですか?


サンプル(FM17 Win8)
※その掲示板のトピックスに沿って作ったので関係の無い項目もありますが、こんかいのテストサンプルです。




最適化してますか?

 まるで入院していた患者が退院して元気に復活するような機能。 クラウドを使用するユーザーさんがほとんどなのですが、このゴールデンウィーク中は 最適化のメンテしときます。 データがピチピチしちゃいますよぅ。