2018年6月29日金曜日

e-Taxソフト(WEB版)を使って納税証明書を交付請求してみた!

先日、とある申請のため納税証明書を取得する必要がありました。
e-Taxを使うと手数料が若干安いということもあり、e-Tax(WEB版)を使って交付申請してみました。


準備


e-Taxにはアプリケーションをインストールする「e-Taxソフト」とブラウザ上で使用する「e-Taxソフト(WEB版)」があります。今回はインストール不要なe-Taxソフト(WEB版)を使用しました。

使用前に事前準備が必要ですが、それらをまとめてやってくれる「事前準備セットアップ」ツールが提供されています。
マニュアルもありますので、手順に従えば迷うことはありません。セットアップの最後に「JPKI利用者ソフト」のインストールがありますが、私の環境にはすでに入っていたのでインストールしませんでした。

利用を開始するには開始届出、つまりユーザー登録が必要です。
e-Tax上で法人情報等を入力すると「利用者識別番号」が発行されます。
この利用者識別番号と自身で設定した暗証番号でログインすることになります。


いざ申請!


システムにログインし、納税証明書の交付申請を行います。
必要事項を入力し、処理を進めていきます。今回は税務署に受け取りに行くことにしたので「来署予定日」を入力し、マイナンバーカードで電子署名をして、送信すれば完了です。

しばらくして、税務署から電話がかかってきました。
何かやらかしたかと思ったら、申請確認の電話で「何時ごろに来署するか」を尋ねられました。
受理されたことの安心感はありますが、一件一件電話で確認しているとしたら大変だなと思いました。

予定日に税務署に受け取りに行き、無事納税証明書をゲットしました。
ただ、e-Taxを使うと待ち時間が短縮、と書かれていたのですが、受け取るまでに10分、お釣りをもらうまでに5分かかり、
「窓口で書面で請求するとどれだけ時間がかかるんだろう」と考えると頭がクラクラしてきました。

ところが


後日、税務署から電話がかかってきました。
「今回取得した利用者識別番号とは別に、すでに利用者識別番号が発行されている」とのこと。

そうなんです。
税理士さんが取得して使っておられたんです。
そちらが使えなくなってはいけないので、今回取得した利用者識別番号はキャンセルしてもらいました。

またいつか、どこかで。

2018年6月23日土曜日

IBM CloudのNoSQL DBを使ってみよう ~第6章~(Android:ListViewにボタン追加でListItemのClickイベントが効かない)

どうも、もりもりです。

ListViewにボタンを配置する前はTextViewだけで、リストアイテムのクリックで
取消線や文字色を制御していましたが
編集や削除のImageButtonを追加するとListViewのItemClickイベントが
走らなくなっちゃいました。

ということで、ListViewのItemClickイベントとImageButtonのClickイベント、
どちらも走るようにする方法についてです。

ListViewのアイテムクリックイベント


まずは、ListViewのアイテムをクリックした際の
イベントリスナーを設定するメソッドです。

private void setListViewListener() {
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView parent, View view, int position, long id) {
            LinearLayout layout = (LinearLayout) view;
            TextView textViewDescription = (TextView) layout.findViewById(R.id.task_description);

            toggleTaskCompleteAt(position);
            Task task = (Task) mTaskAdapter.getItem(position);
            ControlUtility.changeItemState(textViewDescription, task.isCompleted());
        }
    });
}

編集、削除クリックイベント


編集クリックイベントのソースです。

public void onClickTaskEdit(View v) {
    this.editPosition = (Integer)v.getTag();
    this.showDialog(DIALOG_EDIT_TASK);
}

削除クリックイベントのソースです。

public void onClickTaskDelete(View v) {
    int position= (Integer)v.getTag();
    this.deleteTaskAt(position);
}

ListViewのItemレイアウト


ListViewの一行一行のレイアウトです。
10行目の「android:descendantFocusability="blocksDescendants"」が
必要となります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
    android:paddingRight="?android:attr/listPreferredItemPaddingRight"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:background="@color/list_item_color"
    android:descendantFocusability="blocksDescendants">

    <TextView
        android:id="@+id/task_description"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"/>

    <ImageButton
        android:id="@+id/button_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:gravity="right"
        android:src="@android:drawable/ic_menu_edit"
        android:background="@color/list_item_button_color"
        android:onClick="onClickTaskEdit"/>

    <ImageButton
        android:id="@+id/button_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:gravity="right"
        android:src="@android:drawable/ic_delete"
        android:background="@color/list_item_button_color"
        android:onClick="onClickTaskDelete"/>

</LinearLayout>

本当はActivity.showDialog()も3.x系以降は非推奨となったので
DialogFragmentを使用したかったのですが、今回はそこまで手がまわりませんでした。
また時間を見つけて試したいと思います。


ではまた、いつの日か~。

2018年6月16日土曜日

IBM CloudのNoSQL DBを使ってみよう ~第5章~(Android:テキストに取消線を入れる)

どうも、もりもりです。

今回は、ListViewの行をタップした際にTextViewのテキストに
取消線を入れる方法について説明します。

下記のTask5やTask7のように、完了したことがわかるように
取消線を入れ、文字色を変更するようにしました。


テキストに取消線を入れる


TextViewとフラグを渡して表示を変更するメソッドを追加します。

TextViewからTextPaintを取得し、そやつに対してsetFlagsするだけです。

public static void changeItemState(TextView textView, boolean flag) {
    TextPaint paint = textView.getPaint();

    if (flag) {
        textView.setTextColor(Color.BLACK);
        // 取消線を入れる
        paint.setFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    } else {
        textView.setTextColor(Color.WHITE);
        // 取消線を外す
        paint.setFlags(textView.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
    }
    paint.setAntiAlias(true);
}

取消線を入れる場合は「Paint.STRIKE_THRU_TEXT_FLAG(0x10)」とOR演算、
戻す場合は反転ビットとAND演算するだけです。

次回予告


次回 は、ListViewのアイテムにボタンを追加した際に、
アイテム自体のクリックイベントが発生しなくなる場合の解決方法についてです。


ではまた~。

2018年6月8日金曜日

IBM CloudのNoSQL DBを使ってみよう ~第4章~(Android:ToolBarの常時表示方法)

どうも、もりもりです。

前回まではIBM Cloudについてでしたが、今回からはAndroidのお話になります。

今回は、ToolBarを常に表示させる方法を残しておきます。

私が使用しているGalaxy s7 edgeはメニューボタンがありません。
バックキーを長押しすることでメニューを表示できますが、
それはそれで使い勝手が悪いので
ToolBarを常に表示するよう変更しようと思いました。

レイアウト


サンプルは28~42行目だけでしたが、改変後はこんな感じです。
14~26行目がToolBarになります。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ToDoActivity">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:popupTheme="@style/AppTheme.PopupOverlay"/>

        </android.support.design.widget.AppBarLayout>

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="4dp">

            <ListView android:id="@+id/list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@xml/bg_transparent_gray"
                android:layout_weight="1"
                android:choiceMode="singleChoice"
                android:drawSelectorOnTop="false"/>

        </LinearLayout>

    </LinearLayout>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_marginRight="100dp"
        android:layout_marginBottom="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_input_add"/>

</android.support.design.widget.CoordinatorLayout>

スーパークラスの変更


サンプルはListActivityを継承していましたが
AppCompatActivityを継承するよう変更し、
ListViewのイベントなどは別で実装しています。

public class ToDoActivity extends AppCompatActivity
implements OnSharedPreferenceChangeListener {

}

ツールバーの設定


onCreateに8,9行目を追加するだけでOKです。

@Override
protected void onCreate(Bundle savedInstanceState) {
    Log.d(LOG_TAG, "onCreate()");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_todo);

    // ツールバー
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    ・・・
}

下記の赤枠ToolBarが常に表示されるようになりました。


メニュー表示設定


今回のメニューは4つあります。
・NEW
・Download(Pull)
・Upload(Push)
・Settings

ToolBarをご覧いただいておわかりの通り、「NEW」のみ表示されており
右上のメニューアイコンをタップすることで残りのメニューが表示されます。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:compat="http://schemas.android.com/apk/res-auto" >

    <item
        android:id="@+id/action_new"
        android:layout_height="wrap_content"
        android:orderInCategory="100"
        compat:showAsAction="ifRoom"
        android:title="@string/action_new" />

    <item
        android:id="@+id/action_download"
        android:orderInCategory="100"
        compat:showAsAction="never"
        android:title="@string/action_download" />

    <item
        android:id="@+id/action_upload"
        android:orderInCategory="100"
        compat:showAsAction="never"
        android:title="@string/action_upload" />

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        compat:showAsAction="never"
        android:title="@string/action_settings" />

</menu>

showAsActionで、常に表示するか、メニュー内に入れるかなどを指定することが可能となっています。

<showAsAction>
詳細
ifRoom 表示するスペースがあれば表示する
withText titleのテキストを表示する
never 常に表示しない
always 常に表示する
collapseActionView actionViewLayoutで指定したアクションビューと関連付ける

次回予告


次回 はテキストに取消線を入れる方法を紹介したいと思います。


ではまた~。

2018年6月1日金曜日

IBM CloudのNoSQL DBを使ってみよう ~第3章~(Cloudant NoSQL DBの権限設定)

どうも、もりもりです。

今回はクラウド上のDBに対して読み取り専用権限を付ける方法についてです。

だれかと情報の共有はしたいが見せるだけというような場合に、権限を設定すれば可能となります。

権限の追加


1.権限設定画面を表示
  前回 作成したDBを選択し、「Permissions」をクリックします。

2.APIキー生成
  「Generate API Key」をクリックします。


  すぐ下にKeyとPasswordが表示されると共に、上の権限一覧にも追加されます。
  権限一覧の「_reader」のみチェックがONになっていることを確認します。


  ここで注意ですが、クリック後、下に生成されたKeyとPasswordが表示されます。
  このタイミングでエディタにコピペしておきましょう。
  表示が消えると今後一切見れなくなります。
  そうなってしまった場合は再度APIキーを生成してください。

AndroidのTodoアプリで設定


1.AndroidのTodoアプリにキーとパスワードを設定
  Todoアプリの設定画面を開き、下記を設定してください。

<設定>
設定項目 設定値
API Key 生成したKey
API Password 生成したpassword


2.TodoアプリでPULL確認
  メニュー「Download(Pull)」を選択します。
  成功するはずです。

3.TodoアプリでPUSH確認
  任意のタスクをタップして完了状態にし、メニュー「Upload(Push)」を選択します。
  「Replication Error」というToastが表示されるはずです。

次回予告


次回 はAndroidのお話ですが、ToolBarを常に表示する対応方法についてです。


ではまた~。