ページビューの合計

2018年3月19日月曜日

#支払管理 アプリを作ってみよう(3)

Today, let's add some more features to the Notes form I created last time.


みなさま、こんにちは!
いよいよですね Think 2018
残念ながら現地で参加することはできませんでしたが、既にいろんな情報が発信されてきておりますので、ぜひアンテナを張っておいてください。

個人的には先週金曜のテクてく、なかなかヒットでした。

週末、MacのDockerを有効にし、Watson Explorer Community Editionのインストールまでは完了しましたが、まだそれ以降ができていません。
せっかくなので、会社のサーバー内にインストールを試みてみようかとも考えておりますので、もし案内できるような形ができれば、こちらでも取り上げてみたいと思います。
 
さて今回は先日までのフォームにもう少し機能を加えてみたいと思います。

まずは[ClosingDate]フィールドです。
弊社では支払処理を行っている月末を締日としていますので、デフォルト値に計算式を設定します。
※例外処理日などを考慮し、計算結果フィールドにはしていません。


Next:=@Adjust(@Today;0;1;(-(@Day(@Today)-1));0;0;0);
@Adjust(Next1;0;0;-1;0;0;0)


[Next]に今日を基準として、翌月1日をセットし、さらに1日引くことで当月末の日にちを取得しています。
※もちろん末締め以外の場合は考慮が必要です。

次に適用サイト[PaymentTerm]です。
マスタ作成時に書きませんでしたが、金額により支払サイトが異なる場合があります。
本アプリでは現状ふたつの閾値を設定できるようにしてあります。

具体的にはpaymentForm内の合計[PurchaseAmount]が
支払条件金額1[PaymentAmount1]より低い場合は支払条件1[PaymentTerm1]
それ以上、支払条件金額2[PaymentAmount2]より低い場合は支払条件2[PaymentTerm2]
それ以上は支払条件3[PaymentTerm3]が適用されます。

適用サイトフィールドは、その何れが適用されたのかを明示する数式を設定します。

それでは少し長くなりますが、[PaymentTerm]フィールドを計算結果に変更し、以下の式を設定します。


PA:=PurchaseAmount;
PA1:=PaymentAmount1;
PA2:=PaymentAmount2;
PT1:=PaymentTerm1;
PT2:=PaymentTerm2;
PT3:=PaymentTerm3;
@If(PA="";"";@If(PA<PA1;PT1;@If(PA<PA2;PT2;PT3)))

※注意点
この評価式を正しく処理させるため、makerFormの条件登録時に考慮が必要となってしまいます。

まず閾値が2点の場合は、以下のような設定となります。


金額に関わらず、全額同一の場合は以下のように支払条件金額1及び2に「1」を入れてください。また支払条件1,2,3はすべて同一になります。


最後に閾値が1点の場合です。こちらには閾値となり金額を支払条件金額1,2の両方にセットします。
支払条件1には閾値以下の日数を。支払条件2,3には以上の日数をセットします。


この時点でそれぞれの条件のメーカーマスタを作成し、金額を変更してみて正しく評価されるか確認してください。
条件が多岐にわたるため、本ブログでは割愛させて頂きます。

最後に支払予定日と支払日です。
支払予定日は計算結果として締日に適用サイトを足した日付を表示させます。


@If(PaymentTerm="";"";
@Adjust(ClosingDate;0;0;PaymentTerm;0;0;0))

※PaymentTermは合計を評価するまで値が入らないため、@If関数で値が入るまでは計算しないようにしてあります。

支払日については、こちらの支払予定日を参考に、実際に支払う日を手入力することになります。
理由は単純で、例えば2018年2月で処理した場合、適用サイトが60日だとすると、以下のような支払予定日が計算されてしまいます。


適用サイトは毎月の日数を30として便宜上決められた数値であるため、単純に足してしまうと、ほぼ本来の支払日とは不一致してしまいます。
そのため、実際の支払日は手入力を行う仕様としています。
もちろん月末のみの支払でしたらなんとか計算でできそうなのですが、サイトが45日などの場合等を考慮すると現状の私の能力はオーバーしております。

少し複雑になり、また運用で回避するような内容を含んでしまいましたが、本日はここまでと致します。

0 件のコメント:

コメントを投稿