【e-Taxソフト】①預貯金等の内訳書をCSV形式にする

<h1>RStudio要約</h1>

```r:0_準備.R
install.packages("devtools")
library(devtools)
	# エクセル入出力パッケージ
install.packages( "openxlsx" )
library( openxlsx )  
	# eTax入出力パッケージ
install_github("nt1969m/office",force=T)
library(office)
```

```r:1_初年度.R
# 留意事項等 
"https://www.e-tax.nta.go.jp/hojin/gimuka/csv_jyoho1/2/all2.pdf" |>
  browseURL() 
# 入力・標準フォーム
i01	<-
  "https://www.e-tax.nta.go.jp/hojin/gimuka/csv_jyoho3/1/HOT010_3.0_BS_10.xlsx" |>
  read.xlsx(startRow = 2) 
View(i01)

# 残高等を編集

# 出力・標準フォーム
getwd() # setwd() # ^⇧H 
i01 |> 
    Write_eTax("HOI010_4.0.csv")　
```
```r:2_翌期以降.R
i01 <- 
  file.choose() |> Read_eTax("",f=_,"")
colnames(i01) <-
  "https://www.e-tax.nta.go.jp/hojin/gimuka/csv_jyoho2/2/HOI010_4.0_.xlsx" |>
  read.xlsx(startRow = 2) |> # 入力・標準フォーム
  colnames()
View(i01)
```
```r:3_合計行.R
i01 <- # 合計行が無い場合のみ
  i01 |>
  rbind(c(1,1,"","","","",0,""))
i <- which(i01[,2]==1) # 合計行
i01[i,7] <-
  i01[-i,7] |> sum()
  
# 【e-Taxソフト】財務諸表(CSV)を作成する
"https://qiita.com/nt1969m/items/7edac99942a8c11fe32c" |>
  browseURL() 
b <- which(bs[,1]=="現金及び預金")
  bs[b,]
bs[b,2] <- i01[i,7]
```
```r:4_試算表.R
# 試算表（Trial balance（トライアル バランス）の略、以下「tb」という。）
#  ※作成方法は後述
# から財務諸表に転記する。
#（代表例）
b <- which(bs[,1]=="法人税等還付税額")
b <- which(bs[,1]=="受取利息")
b <- which(bs[,1]=="法人税、住民税及び事業税") # 税額控除所得税　別表６(1)
b <- which(bs[,1]=="未払法人税等") # 本決算にて計上、仮決算では無視（どうせゼロになる）
```
以下、ファイル名の数字４桁は金融機関コードです。
例えば三井住友銀行なら、
0009（金融機関コード）SMBC JP JT（SWIFTコード）です。
<h6>PayPay銀行</h6>

```r:B_0033_JNB.R
B_0033	<-
  file.choose() |>
  Read_MS("",f=_,"")
View(B_0033)
i01[1,7] # 転記先の確認
i01[1,]$期末現在高 <-
    tail( B_0033$残高 ,n=1 )

# 試算表 1_摘要ごとに、出入(2_出と3_入)を集計する。
# 1_摘要が「勘定科目」となるはず。
tb_0033 <-
aggregate(B_0033[,10:9],by = list(substr(B_0033[,8],1,6)),FUN=sum)
View(tb_0033)

# 利息の源泉徴収額　後tb
i <- grep("決算お利息",B_0033[,8])
Risoku <- B_0033[i,]
Risoku$お支払金額 <-
  (Risoku$お預り金額 * 15.315 / (100 - 15.315) ) |>
  trunc()
View(Risoku)

tb_0033 <-
  c("国税",Risoku$お支払金額 |> sum() ,NA) |>
  rbind(tb_0033)
tb_0033 <-
  c("受取利息",NA,Risoku$お支払金額 |> sum() ) |>
  rbind(tb_0033)
View(tb_0033)
```
<h6>ゆうちょ銀行</h6>

```r:B_9900_ゆうちょ銀行.R
B_9900	<-
  file.choose() |>
  Read_MS("",f=_,"",n=7)
View(B_9900)

i01[2,]$期末現在高 <-
  tail( B_9900[,7],n=1 )
  
tb_9900 <-
  aggregate(B_9900[,4:3], # 出入ではなく入出金なので。。
    by = list( paste(B_9900[,5],B_9900[,6]) ),
    FUN=sum)
View(tb_9900)
```
<h6>住信SBIネット銀行</h6>

```r:B_0038_住信SBIネット銀行.R
# 普通預金
B_0038_1 <-
  file.choose() |>
  Read_MS("",f=_,"")
B_0038_1[,5] <- gsub(",","",B_0038_1[,5]) |> as.numeric()
i01[3,]$期末現在高  <- B_0038_1[1,]$残高.円.

# SBIハイブリッド預金
B_0038_2 <-
  file.choose() |>
  Read_MS("",f=_,"")
B_0038_2[,5] <- gsub(",","",B_0038_2[,5]) |> as.numeric()
i01[4,]$期末現在高  <- B_0038_2[1,]$残高.円.

# 試算表
B_0038 <- B_0038_1 |> rbind(B_0038_2)
B_0038[,3] <- gsub(",","",B_0038[,3]) |> as.numeric()
B_0038[,4] <- gsub(",","",B_0038[,4]) |> as.numeric()
tb_0038 <-
  B_0038[,3:4] |> 
  aggregate(by = list(B_0038[,2]),FUN=sum, na.rm = TRUE)
View(tb_0038)
```

<H1>以下、過去の挫折。。</H1>

<H1>反省文</H1>
反省の概要

#eTaxで勘定科目内訳明細書を印刷できなくなった。
（2020年からCSV閲覧不可)
→　紙やPDFの代替物として、エクセルを確保せざるを得ないかと。。

||国税庁|当初案<br>（廃案）|第２案|
|:--|:--|:--|:--|
|会計データ作成|言及なし|R言語<br>（無料）|R言語<br>（無料）|
|税務データ作成<br>（エクセル）|Office2013（買い切り）|使わない|Office Online（無料）|
|CSV作成<br>(eTax型式)|エクセル手作業|R言語<br>（無料）|R言語<br>（無料）|

#エクセルをCSV(eTax型式)に変換する、
Rのパッケージを作成しました。

勘定科目内訳書にも対応したつもりなので、
下記記事を参照してください。
【e-Taxソフト】財務諸表(CSV)を作成する
https://qiita.com/nt1969m/items/7edac99942a8c11fe32c

#以下廃案(2020-11-04)
#<H1>はじめに</H1>
　　　　　　　　　　　　*この記事は「法人税」のお話です。*
e-Taxソフトで提出できるデータ形式として、
**「CSV形式が認められた！」**
のは、2019年5月だったと思う。
これをきっかけに、経理作業を見直しました。

*この記事ではMacにインストールしたR言語を使っています。*
##<h6>＜Before＞</h6>
「経費精算」（省略）
「預金残高を確認する」
　　銀行のCSVデータを会計ソフトに取り込む。
「利息計上する」　
　　手書き伝票を会計ソフトに取り込む。
「①預貯金等の内訳書を作成する」
　　試算表（会計ソフトの帳票）をe-Taxソフトに手入力する。

##<h6>＜After＞</h6>
「経費精算」（省略）
「預金残高を確認する」（従来通り）
「利息計上する」　
　　R言語でCSVデータを作成し、会計ソフトに取り込む。
　　注.この記事では省略
 　　  普通預金もだが、特に定期預金の扱いには、知恵がいる。
「①預貯金等の内訳書を作成する」
　　R言語でCSVデータを作成し、e-Taxソフトに取り込む。

#<h1>銀行の出入明細をR言語に取り込む</H1>
　　*この記事では「入出金明細」のことを「出入明細」と表記します。*
↓この関数でどの銀行にも対応できる、と思う。

```r:B_Read_Bank.R
Read_Bank <- function( f ,e=".csv" ,n=0 )
 　# f:ファイル名(除く、拡張子)
 　# e:拡張子(extension)
 　# n:skipの引数
read.csv(
 paste0( f ,e )
,skip=n 
,fileEncoding="CP932"
,stringsAsFactors=F
)
```
以下、ファイル名の数字４桁は金融機関コードです。
例えば三井住友銀行なら、
0009（金融機関コード）SMBC JP JT（SWIFTコード）です。
##<h6>ジャパンネット銀行</h6>

```r:B_0033_JNB.R
f <- file.path( FY ,"B_0033_JNB" ,"JNB_2020-08-31" )
   # FY:会計年度(Fiscal Year)のディレクトリー
   # ジャパンネット銀行のディレクトリー 
   # 出入明細のファイル名（除く.csv） 
jnb <-	Read_Bank( f ) 
jnb.bal <- tail( jnb$残高 ,n=1 )
```

##<h6>ゆうちょ銀行</h6>
```r:B_9900_ゆうちょ銀行.R
jp <-	Read_Bank( f ,n=7 )
   # n=7:サンプルcsv参照
jp.bal <- tail(jp$現在.貸付.高,n=1)
```
```r:B_9900_ゆうちょ銀行.csv
1:お客さま口座情報
2:現在高：,"1",円,
3:出力日時：令和 02 年 09 月 04 日 18 時 20 分
4:お客さま口座番号：10180-12345678
5:照会対象：期間指定
6:日付指定：令和 01 年 09 月 01 日 〜 令和 02 年 08 月 31 日
7:明細件数：17
8:取引日,入出金明細ＩＤ,受入金額（円）,払出金額（円）,詳細１,詳細２,現在（貸付）高,
9:20190919,201909190000001,1060000,,振込,ﾀｶﾊｼ ﾅｵﾋﾄ,1069117,
（以下、個人情報につき削除）
```
##<h6>住信SBIネット銀行</h6>
```r:B_0038_住信SBIネット銀行.R
# 普通預金
	sbi1 <-Read_Bank( f )
    sbi1.bal <- sbi1[1,]$残高.円.
# SBIハイブリッド預金
	sbi2 <-Read_Bank( f )
    sbi2.bal <- sbi2[1,]$残高.円.
```

#<h1>eTaxソフト①預貯金等の内訳書</H1>
```r:main.R
setwd( paste0( FY ,"/eTax" ) )  # 出力先のディレクトリー
getwd()  # 目検（目視にて検証する)

# ①に限らず、↓この関数で対応できるはず。。
Write_etax <- function( df ,s ) 
   # df:入力データフレーム型（行列型でも動くと思う）
   #  ↓
   #  s:出力シート名（MSエクセルのあれが必須です。。）
write.table(
 df ,paste0( s ,".csv" )
,quote=F
,sep=","
,row.names=F
,col.names=F
,eol="\r\n"
,fileEncoding="CP932" 
)

　　　#（命名規約)バージョン番号(_4.0_)までは必須
s <- "HOI010_4.0_預貯金等"

i01 <- data.frame( matrix(  NA ,0 ,8 ) )
　　　#（任意)↓列名、なくても大丈夫（あくまでも説明のため)
colnames( i01 ) <- c( "フォーマット区分=1" ,"行区分=" ,"金融機関名=" ,"支店名=" ,"種類=" ,"口座番号=" ,"期末現在高=" ,"摘要=" )  

i01[1,] <- c(1,0,"みずほ","渋谷","普通","210-1234567" ,"82332","")  
i01[2,] <- c(1,0,"ジャパンネット","本店営業部","普通","001-1234567" , jnb.bal , "")
i01[3,] <- c(1,0,"","","定期","" ,"0" ,"")  
i01[4,] <- c(1,0,"ゆうちょ","０１８","普通","018-1234567",jp.bal,"")  
i01[5,] <- c(1,0,"住信ＳＢＩ","法人第一","普通","106-1234567",sbi1.bal,"")
i01[6,] <- c(1,0,"","","ハイブリッド","" ,sbi2.bal,"")  
i01[7,] <- c(1,0,"","","定期","" ,"0","")  

#カンマ削除
i01$"期末現在高=" <- gsub( "," ,"" ,i01$"期末現在高=" )

Write_etax( i01 , s )
 ```
#<h1>eTaxソフト、csv形式に関する情報</H1>
CSV形式で提出可能
https://www.e-tax.nta.go.jp/toiawase/qa/gimuka/23.htm

勘定科目内訳明細書及び法人税申告書別表等(明細記載を要する部分)のCSV形式データの作成方法
https://www.e-tax.nta.go.jp/hojin/gimuka/csv_jyoho2.htm

勘定科目内訳明細書の標準フォーム等(平成31年4月1日以後終了事業年度分)
https://www.e-tax.nta.go.jp/hojin/gimuka/csv_jyoho2_meisai_31.htm

財務諸表のＣＳＶ形式データの作成方法
https://www.e-tax.nta.go.jp/hojin/gimuka/csv_jyoho4.htm

#<h1>参考文献</H1>
清文社：STEP式 法人税申告書と決算書の作成手順