PDF：源泉徴収簿：からCSV（テキスト）とCSV（eTax⑭役員報酬）を作成する

2021-9-28 無料の給与計算ソフト
各社から無料の給与計算ソフトが提供されるようになりましたので、
当記事は「不要」と考えます。

ちなみに、私は下記にデータ移行しました。※ご参考

給与計算ソフトが永久無料のフリーウェイ https://freeway-kyuuyo.net/

「データ一括処理メニュー」→「給与データエクスポート」
こうすると、
当記事でやりたかった事は代替できます。

勘定科目内訳明細書の標準フォーム等
(平成31年4月1日以後終了事業年度分)　※現時点（令和３年）まで、改定なし
https://www.e-tax.nta.go.jp/hojin/gimuka/csv_jyoho2_meisai_31.htm
HOI141_5.0.csv

○ レコードの内容及び留意事項(2-14) 
【勘定科目内訳明細書（⑭役員給与等の内訳書）】
（平成31年４月１日以後終了事業年度分）
https://www.e-tax.nta.go.jp/hojin/gimuka/csv_jyoho1/2/HOI141.pdf

#以下廃案(2021-9-28)

#<h1>はじめに</h1>
簡易版です。

目的１：PDF(源泉徴収簿)に入力した数字をCSV（テキスト）にする。
目的２：CSV（テキスト）からeTax【⑭役員報酬】にする。

会社員の源泉徴収簿ではなく、（現金の受渡あり、年末調整あり）
会社役員の源泉徴収簿なので、（現金の受渡無し、年末調整無し）
PDF(源泉徴収簿)の列：総支給金額
これしか抽出しません。

#<h1>使い方</h1>
#csv作成.R
```R:csv作成.R
source( "ファイル定義.R" ) )

FY <- "" # 会計年度(Fiscal Year)　
f <- file.path(	FY ,"源泉所得税" ,"h31_03_input.PDF" )

source( "PDF_源泉徴収簿.R" ) 

給料	<- 給料.csv( f )
	給料	# 目検
Write_会計( 給料 ,f ) # 会計ソフトに取り込む

## 勘定科目⑭役員報酬
source( "【⑭役員報酬】.R" )

i14 <- i14.init( 1 ) 	# 役員給与等の内訳(代表者)の場合
i14[ 1 ,"氏名=" ] <- "社長の高橋"
i14[ 1 ,"住所=" ] <- "東の京都渋谷区渋谷○－○○－○"
i14[ 1 ,"役員給与計=" ] <- sum( 給料[ ,"総支給金額=" ] )
i14[ 1 ,"定期同額給与=" ] <- i14[ 1 ,"役員給与計=" ]

Write_eTax( i14 ,s_i14 ) # 税務ソフト(eTax)に取り込む
```

#ファイル定義.R
```R:ファイル定義.R
# 会計ソフトに反映
Write_会計 <- function( df ,f ) {
	print( gsub( ".PDF" ,".txt" ,f ) )
	write.csv( 
		df 
		,gsub( ".PDF" ,".txt" ,f )
		,row.names=F 
#		,fileEncoding="CP932" 
	)
}
	print( c( "Write_会計()" ,Write_会計 ) )

# 税務ソフト(eTax)に反映
Write_eTax <- function( df ,s ) {
	
	print( paste0( s, ".csv" ) )
		# df:入力データフレーム型（行列型でも動くと思う）
		#  ↓
		#  s:出力シート名（MSエクセルのあれが必須です）
	write.table(
		 df
		,paste0( s ,".csv" )
		,quote=F
		,sep=","
		,row.names=F
		,col.names=F
		,eol="\r\n"
		,fileEncoding="CP932"
	)
}  
	print( c( "Write_eTax()" ,Write_eTax )  )
```
#<h1>源泉徴収簿</h1>
<h6>2019 平成31年分給与所得・退職所得に対する源泉徴収簿</h6>
入力用 ※これを使っています。
https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/pdf/h31_03_input.pdf

手書き用
https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/pdf/h31_03.pdf

<h6>2020 令和2年分給与所得・退職所得に対する源泉徴収簿</h6>
入力用（PDF/822KB）※今年は、これを使う
https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/pdf/r02_03_input.pdf

（PDF/727KB） 手書き前提
https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/pdf/r2bun_03.pdf

<h6>2021 令和3年分給与所得・退職所得に対する源泉徴収簿</h6>
 入力用（PDF/467KB）※来年は、これを使う
https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/pdf/r02_03_input.pdf

（PDF/423KB）手書き前提
https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/pdf/r2bun_03.pdf

<h6>［手続名］給与所得・退職所得に対する源泉徴収簿の作成</h6>
https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/annai/1648_03.htm

#<h1>想定PDF</h1>
2019 平成31年分給与所得・退職所得に対する源泉徴収簿
#<h6>左半分：給料・手当等</h6>

||列1|列2|列3|列4|列5|列6|列7|列8|列9|列10|
|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|
|列名|y|月区分=|支給月=|日=|総支給金額=|社会保険料等の控除額=|扶養親族等の数=|算出税額=|年末調整による過不足税=|差引徴収税額=|
|→x|横の位置|76〜78|略|略|153|略|略|352|略|略|
|↓y|自動取得|1月|略|略||略|略||略|略|
||自動取得|2月|略|略||略|略||略|略|
||自動取得|〜|略|略||略|略||略|略|
||自動取得|12月|略|略||略|略||略|略|

※賞与等は分析しなかった。

#<h6>右半分：扶養控除等の申告、年末調整などか？</h6>

※分析しなかった。

#<h1>PDF_源泉徴収簿.R</h1>
```r:PDF_源泉徴収簿.R
# CSV作成
	# PDFをインポートするため
library( pdftools )	# install.packages(	'pdftools'	)

#	pdf_info(	f	)
df <-	pdf_data(	f	)

給料.init <- function() {
	給料 <- data.frame( matrix( NA ,0 ,10 ) )		# 列数
	colnames( 給料 ) <- c(
		"月区分="		# 列1
		,"y"			# 列1-2
		,"支給月="		# 列3
		,"日="			# 列4
		,"総支給金額="		# 列5
		,"社会保険料等の控除額="	# 列6
		,"扶養親族等の数="	# 列7
		,"算出税額="		# 列8
		,"年末調整による過不足税="	# 列9
		,"差引徴収税額="		# 列10
	)
	print( sapply( 給料 ,mode ) )
		# 列数
	給料[ 1:12,"月区分=" ] <- c( 1: 12 ) # 各列を初期化
	給料[ ,2:10 ] <- 0
	給料[ ,"日=" ] <- 20
return( 給料 )
}
	print( c( "給料.init()" ,給料.init )  )

給料.text <- function( df ,x ,y ,e = -9 ) {
	# e:誤差
	w <- df[[1]]  [ 
		   df[[1]]$"x" == x  &
		   df[[1]]$"y" >= y + e & #上段だとマイナス
		   df[[1]]$"y" <= y  
		, ] $"text"
	if( length( w ) == 0 ) return( 0 )
return( as.integer( gsub( "," ,"" ,w ) ) )
}
	print( c( "給料.text()" ,給料.text )  )

給料.csv <- function( f ) {
	print( f )
	給料 <- 給料.init()

	月区分 <-	df[[1]]	[ df[[1]]$"x" >= 76 & df[[1]]$"x" <= 78	 ,	]	# 月区分	(1-12)　
	o <-	order( as.integer( 月区分$"text" )  )
	給料[ ,"y" ] <- 月区分[ o, ]$y	# 月別のy(縦位置)

	給料[ ,"総支給金額="] <- sapply( 給料[ ,"y"] ,function( y ){ 給料.text( df ,153 ,y ) }  ) 
	給料[ ,"算出税額="] <- sapply( 給料[ ,"y"] ,function( y ){ 給料.text( df ,352 ,y ) }  )

# Write_会計( 給料 ,f_給料 )
return( 給料 )
}
	print( c( "給料.csv()" ,給料.csv )  )
```

#<h1>CSVスペック</h1>
○ レコードの内容及び留意事項(2-14)
 【勘定科目内訳明細書(14役員給与等の内訳書)】
(平成31年4月1日以後終了事業年度分)
https://www.e-tax.nta.go.jp/hojin/gimuka/csv_jyoho1/2/HOI141.pdf

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

#<h1>【⑭役員報酬】.R</h1>
```r:【⑭役員報酬】.R
s_i14 <- "HOI141_5.0_⑭役員報酬"　# 2020（令和２年)
	print( c( "s_i14" ,s_i14 )  )

i14.init <- function( n ) {	# n:フォーマット区分( 14-n )
		# 列数 
	i14 <- data.frame( matrix( NA ,0 ,15 ) )
		# 列名
	colnames( i14 ) <- c( 
	  "フォーマット区分=" # 14-1 14-2 
	  ,"行区分="
	  ,"役職名="
	  ,"担当業務="
	  ,"氏名="
	  ,"代表者との関係="
	  ,"住所="
	  ,"常勤・非常勤の別="
	  ,"役員給与計="
	  	,"使用人職務分=" 		# 左の内訳.
	  		,"定期同額給与=" 			# 使用人職務分以外.
	  		,"事前確定届出給与=" 	# 使用人職務分以外.
	  		,"業績連動給与="		 	# 使用人職務分以外.
	  		,"その他="						# 使用人職務分以外.
	  ,"退職給与="
	 ) 
	# 行列、ひな型
	switch( n 
	, "1" = { 		# 役員給与等の内訳(代表者)の場合
		i14[ 1 ,"フォーマット区分=" ] <- "14-1"
		i14[ 1 ,"行区分=" ] <- 0
		i14[ 1 ,"役職名=" ] <- "01"				# 代表取締役 
		i14[ 1 ,"代表者との関係=" ] <- "01"	# 本人  
		i14[ 1 ,"常勤・非常勤の別=" ] <- 1		# 常勤の場合 
	  }
	, "2" = {	# 役員給与等の内訳(代表者以外)の場合 
		i14[ 1 ,"フォーマット区分="] <- "14-2"
		i14[ 1 ,"行区分=" ] <- 0
	  }
	, "3" = { # 人件費の内訳の場合 
			# 列数 
		i14 <- data.frame( matrix(  NA ,0 ,10 ) )
			# 列名
		colnames( i14 ) <- c( 
		  "フォーマット区分=" # 14-3 
		  ,"行区分="
		  ,"役員給与.総額="
		  ,"役員給与.総額のうち代表者及びその家族分="

		  ,"従業員給料手当.総額="
		  ,"従業員給料手当.総額のうち代表者及びその家族分="

		  ,"従業員賃金手当.総額="
		  ,"従業員賃金手当.総額のうち代表者及びその家族分="

		  ,"計.総額="
		  ,"計.総額のうち代表者及びその家族分="
		 ) 
		i14[ 1 ,"フォーマット区分="] <- "14-3"
	  }
	)
return( i14 )
}
	print( c( "i14.init()" ,i14.init )  )

```
#<h1>感謝した記事</h1>
#<h6>apply関数</h6>
Rのlapply関数に関するメモ
https://onoshima.github.io/r/laaply/