Illustratorで使える消費税関連のスクリプト

桜が満開になっています。先の日曜日は非常に荒れた天気でお花見どころではなかったのですが、今週末はお城でも散策してみたいと思っています。
しかしながら、わたしの場合、春と言えばキッチンガーデンのスタートの季節です。まずイチゴの花が最盛期を迎えます。この辺では養蜂家の方がいらっしゃるのが遅く、野生の日本ミツバチがメインなのですが、それだけではちょっと追いつきません。ですから、わたしがミツバチの代わりをします。いちごとかゆすら梅は耳かきの反対側に付いているふわふわのヤツみたいなのを使います。これは使い捨てのハンディワイパーなんかの繊維が使いやすいです。一方ブルーベリーは面相筆を利用します。これがなかなか面倒な作業ですが、怠ると結実しないので仕方がありません。
また、この季節アスパラガスの収穫もスタートします。中旬には最盛期を迎え、8週間程毎日10本程を収穫できます。この間にマルベリーが花をつけますが、こいつは放置でOKなのでラクチンです。なかなかの巨木な為、収穫量がかなりあります。まあ、マルベリーというのは桑の実なんですが、ベリー類最強クラスの甘さなのです。大量に収穫しますので主にジャムやコンポートになります。
これからゴールデンウィークまでは夏野菜の用意が待っていますので休日が忙しかったりしますが、新鮮な野菜の味は格別なものです。皆様も是非やってみて下さい。ベランダ菜園なんかでも十分な収穫が楽しめる野菜もありますから。美味しいですよ。
話は全く関連しませんが、消費税上がっちゃいましたねぇ。3%って思ったより大きいです。スクリプト走らせた時にredraw()で逐一チェックしていると5%が8%に書き変わるのですが、思ったより金額が膨らんでいるのでびっくりします。ということで、今回は消費税変更に伴う処理に使える物を置いておきます。

taxChanger.png

こちらがブツなのですが、下のループが選択したテキストフレームの分回る感じのものです。

var taxCalc = {
     tax : 8,
     base : 5,
     inTax : true,
     exe : function (tg){
          if(tg.contents.match(/(\d+,)?\d{3}/)!=null){
               var str = tg.contents.match(/(\d+,)?\d{3}/)[0];
               var idx = tg.contents.indexOf(str);
               for (var i = idx+1;i<idx+str.length;i++) {
                    tg.characters[idx+1].remove();
                    //app.redraw();
                    }
               var num= this.rtTax(this.toN(str));
               tg.characters[idx].contents= this.toS(num);
               }
          },
     toS : function (n){
          if ((n+””).length<4) return String(n);
          var dl = “,”;
          var str = String(n);
          var rslt = “”;
          while (str.length>3){
               rslt = dl + str.substr (-3, 3) + rslt;
               str = str.slice(0,str.length-3);
               }
          rslt = str + rslt;
          if (rslt.substr(0,1)==”,”)
               rslt = rslt.substr(1,rslt.length-1);
          return rslt;
          },
     toN : function(st){
          while(st.indexOf(“,”)>-1) st = st.replace (“,”, “”);
          if (this.inTax) return Number(st/(1+this.base/100));
          else return Number(st);
          },
     rtTax : function (n){
          return Math.floor(n*(1+this.tax/100));
          }
     }

taxCalc.inTax = true; 
for (var i=0;i<app.selection.length;i++){
     taxCalc.exe(app.selection[i]);
     }
<idx+str.length;i++) {="" tg.characters[idx+1].remove();="" app.redraw();="" }="" var="" num="this.rtTax(this.toN(str));" tg.characters[idx].contents="this.toS(num);" },="" tos="" :="" function="" (n){="" if="" ((n+"").length<app.selection.length;i++){ taxcalc.exe(app.selection[i]);="" }

taxCalc.inTaxが消費税込みだった場合のフラグです。falseに設定すると税抜き価格として処理できます。また、将来10%に上がる時にもbaseとtaxプロパティとを設定すれば対応できる構造です。基本的に小数点以下は切り捨てになります。四捨五入の場合はrtTax関数内のfloorをroundに書き換えて下さい。
ご覧の通り機能的には最小限です。このままでも選択したテキストフレームに対しての処理は出来ますが、文字スタイルとかconfirmダイアログとかセンタービューとかの関数を組み込むと格段に使いやすくなるでしょう。
ぜんぶ以前書いたRegExpサンプルから流用できますが、やっちゃうと1000行超えそうなので自粛しますw

ten_a

Graphic Designer, Scripter and Coder. Adobe Community Professional.

シェアする

1件のコメント

コメントを残す