# XDMF_ZF400_0 / 年次繰越処理の起動

_言語: ja / データ版数 (設定の最終更新): 2024-07-11 11:38:19_

## 要約

| 項目 | 値 |
|------|------|
| FUNC\_ID | \`XDMF\_ZF400\_0\` |
| 機能名 | 年次繰越処理の起動 |
| 機能タイプ \(APP\_KBN\) | BAT / 検索ボタン無し |
| BG\_L | 4 |
| BG\_M | 12 |
| ブロック数 | 1 |
| 項目数 | 3 |
| 読み取りテーブル | 3 |
| 書き込みテーブル | 1 |
| DB 接続先 | 1 |


### 機能概要

現在の会計年度を締めて、新年度の期首残高を計算し更新します。実行すると入力認可過去月度が新年度の01に設定され、旧年度の会計データは変更できなくなります。
実行前にデータベースのバックアップ取得をお薦め致します。

## 機能設定

### 機能説明

| 項目 | 値 |
|------|----|
| 機能ID | XDMF\_ZF400\_0 |
| 機能名 | 年次繰越処理の起動 |
| 機能タイプ | 検索ボタン無し \(BAT\) |
| ADMIN\_ID |  |
| 業務分類 大 | XTEA生産管理 \(4\) |
| 業務分類 中 | その他マスタ \(12\) |
| 業務分類 小 |  |
| 作成 | 2024\-07\-11 11:38:09.0 demo |
| 最終更新 | 2024\-07\-11 11:38:09.0 demo |
| ヘルプリンク名 \(HELP\_LINK\_NM\) |  |
| ヘルプURL \(HELP\_URL\) |  |

#### 機能概要

現在の会計年度を締めて、新年度の期首残高を計算し更新します。実行すると入力認可過去月度が新年度の01に設定され、旧年度の会計データは変更できなくなります。
実行前にデータベースのバックアップ取得をお薦め致します。


### アプリケーション設定

#### 機能レベル設定一覧

_TLN_M_GENERAL_APP (FUNC_SEQ=-1) に登録されている全ての設定値。非表示フラグや個別セクションで重複して表示される設定も含む。_

| ボタン | 状態 | FUNC\_KBN |
|------|------|------|
| 機能タイプ | 検索ボタン無し | APP\_KBN=BAT |
| ボタンの非表示 \> Excel出力 | ON \[1\] | EXCEL\_BUTTON\_HDN\_FLG |
| ボタンの非表示 \> PDF出力 | ON \[1\] | PDF\_BUTTON\_HDN\_FLG |
| 起動Window状態 | 別Window \(既存あれば上書き\) \[NORMAL\] | OPEN\_WINDOW\_MODE |

#### 標準ボタン非表示設定

| ボタン | FUNC\_KBN | 状態 |
|------|------|------|
| PDF出力 | PDF\_BUTTON\_HDN\_FLG | 非表示 |
| Excel出力 | EXCEL\_BUTTON\_HDN\_FLG | 非表示 |
| Excel更新 | EXCELUPDATE\_BUTTON\_HDN\_FLG | 表示 |
| クリア | CLEAR\_BUTTON\_HDN\_FLG | 表示 |
| 検索 | SEARCH\_BUTTON\_HDN\_FLG | 表示 |
| 戻る | BACK\_BUTTON\_HDN\_FLG | 表示 |
| 確定 | EXECUTE\_BTN\_HDN\_FLG | 表示 |
| 参照 | VIEW\_BUTTON\_HDN\_FLG | 表示 |
| 画面設定 | COL\_BUTTON\_HDN\_FLG | 表示 |
| 検索条件保存 | COND\_SAVE\_HDN\_FLG | 表示 |
| 検索条件タイトル | IS\_CONDITION\_TITLE\_OFF | 表示 |
| ブロック名 | BLOCK\_NAME\_HDN\_FLG | 表示 |


### ユーザグループ

| FUNC\_ATH\_ID | グループ名 |
|------|------|
| system | システム管理 |



## 検索条件 (集約)

_(条件項目なし)_


## ブロック設定

### ブロック構成

| \# | TYPE | TITLE |
|------|------|------|
| BLOCK 1 | CARD | 年次繰越 |

### BLOCK 1: 年次繰越 [CARD]

#### SELECT 式

```sql
SELECT  
        ZT010.TXNAME as TXNAME
       ,ZT010.TXVALUE as TXVALUE
,'新年度の期首残高（在庫・売掛・買掛）が残高増減履歴にもとづいて計算され、更新されます。
実行前にバックアップを取っておくことをお奨めします。
処理後は旧年度の会計データを変更できなくなります。' as TXMEMO
FROM
        ZT010
WHERE ZT010.IDVARIANT = 'ALLOWED_FISCAL_MONTH'
```

#### 項目情報

| 並び順 | 物理項目名 | 表示名 | キー | 更新 | 検索 | 必須 | 改行 | グループ名 | 表示形式 | データ型 | 桁 | 表示桁 | 行数 | コンポーネント | 識別コード |
|------|------|------|------|------|------|------|------|------|------|------|------|------|------|------|------|
| 1 | TXNAME | 名称 |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 50 |  |  |  |  |
| 2 | TXVALUE | 現在の値\(年度・月序\) |  |  |  |  | ○ |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 100 |  |  |  |  |
| 3 | TXMEMO | 注意事項 |  |  |  |  | ○ |  | TEXT:半角、全角混在\(Byte\) | CHAR | 500 | 100 | 3 |  |  |

#### 詳細設定

##### 基本設定 (全ブロック共通) (1件)

| 設定種別 | 値 | FUNC\_KBN |
|------|------|------|
| ブロック名フィールドを非表示 | ON \[1\] | BLOCK\_NAME\_HDN\_FLG |

##### その他 (LIST/CARD/帳票/権限など) (1件)

| 設定種別 | 値 | FUNC\_KBN |
|------|------|------|
| ボタンの非表示 \> 画面設定 | ON \[1\] | COL\_BUTTON\_HDN\_FLG |

#### 処理呼出

##### ボタン: 年次繰越処理の実行 · JavaScript呼出

| 設定 | 内容 |
| --- | --- |
| ボタン名 | 年次繰越処理の実行 |
| ライブラリ全て | ON |
| 処理後検索 | ON |
| 確認ダイアログ | ON |
| コード | (下のコードブロック参照) |

_コード_

```javascript
function exec() {

	/* 事前準備 */
	if (TALON.getDbConfig().isMssql()) {
		var itemSelectList = TALON.select( 
		    "SELECT  " + 
		    " TLN_CHAR_TO_NUMBER(SUBSTRING(TXVALUE,1,4))     AS NOW_NENDO " + 
		    ",TLN_CHAR_TO_NUMBER(SUBSTRING(TXVALUE,1,4)) + 1 AS NEX_NENDO " + 
		    ",SUBSTRING(TXVALUE,5,2) AS NOW_MONTH " + 
		    ",SUBSTRING( TLN_DATE_TO_CHAR('MD', TLN_DATEADD('M', 1, TLN_CHAR_TO_DATE('YMDHMS2',CONCAT(TXVALUE,'01000000')) ) ), 1, 2 ) AS NEX_MONTH " + 
		    "FROM ZT010 " + 
		    "WHERE IDVARIANT = 'ALLOWED_FISCAL_MONTH' "
		);
	} else {
		var itemSelectList = TALON.select( 
		    "SELECT  " + 
		    " TLN_CHAR_TO_NUMBER(SUBSTR(TXVALUE,1,4))     AS NOW_NENDO " + 
		    ",TLN_CHAR_TO_NUMBER(SUBSTR(TXVALUE,1,4)) + 1 AS NEX_NENDO " + 
		    ",SUBSTR(TXVALUE,5,2) AS NOW_MONTH " + 
		    ",SUBSTR( TLN_DATE_TO_CHAR('MD', TLN_DATEADD('M', 1, TLN_CHAR_TO_DATE('YMDHMS2',CONCAT(TXVALUE,'01000000')) ) ), 1, 2 ) AS NEX_MONTH " + 
		    "FROM ZT010 " + 
		    "WHERE IDVARIANT = 'ALLOWED_FISCAL_MONTH' "
		);
	}
	var lineDataMap = itemSelectList[0];
	var _NOW_NENDO = lineDataMap['NOW_NENDO'];
	var _NEX_NENDO = lineDataMap['NEX_NENDO'];


	/* 買掛繰越処理 */

	var itemSelectList = TALON.select( 
	    "SELECT  " + 
	    "  DT010.IDSIIRESAKI " + 
	    " ,DT010.AMKISYUKAIKAKE + DT100.SHIIRE - DT100.SHIIRE_NEW - DT100.SIHARAI + DT100.SIHARAI_NEW AS AMKISYUKAIKAKE " + 
	    " ,DT100.SHIIRE_NEW AS AMSIIRE " + 
	    " ,DT100.SIHARAI_NEW AS AMSIHARAI " + 
	    " ,DT010.AMKISYUKAIKAKE + DT100.SHIIRE - DT100.SIHARAI AS AMGENKAIKAKE " + 
	    "FROM DT010  " + 
	    "LEFT OUTER JOIN ( " + 
	    " SELECT  " + 
	    "  DT100.IDSIIRESAKI " + 
	    " ,SUM( CASE WHEN DT100.KBKAITORI  = '90'                                       THEN AMZOUGEN ELSE 0 END ) AS SIHARAI     " + 
	    " ,SUM( CASE WHEN DT100.KBKAITORI  = '90' AND DT100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS SIHARAI_NEW " + 
	    " ,SUM( CASE WHEN DT100.KBKAITORI <> '90'                                       THEN AMZOUGEN ELSE 0 END ) AS SHIIRE      " + 
	    " ,SUM( CASE WHEN DT100.KBKAITORI <> '90' AND DT100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS SHIIRE_NEW  " + 
	    " FROM DT100 " + 
	    " WHERE DT100.FGVALID = 'T' " + 
	    "   AND DT100.DTNEND  = " + _NOW_NENDO + " " + 
	    " GROUP BY DT100.IDSIIRESAKI " + 
	    ") DT100 " + 
	    " ON DT100.IDSIIRESAKI = DT010.IDSIIRESAKI "
	);
	for (var i = 0; i < itemSelectList.length; i++) {
	    var lineDataMap = itemSelectList[i]
	    var itemDataList = new Array();

	    //仕入先ID
	    itemDataList['IDSIIRESAKI']    = lineDataMap['IDSIIRESAKI'];
	    //期首買掛残高
	    itemDataList['AMKISYUKAIKAKE'] = lineDataMap['AMKISYUKAIKAKE'];
	    //期間仕入額(税込金額)
	    itemDataList['AMSIIRE']        = lineDataMap['AMSIIRE'];
	    //期間支払額
	    itemDataList['AMSIHARAI']      = lineDataMap['AMSIHARAI'];
	    //現買掛残高
	    itemDataList['AMGENKAIKAKE']   = lineDataMap['AMGENKAIKAKE'];

	    updateDT010(itemDataList);
	}


	/* 売掛繰越処理 */

	var itemSelectList = TALON.select( 
		"SELECT  " + 
		"  ET010.IDTOKUISAKI " + 
		" ,ET010.AMKISYUURIKAKE + ET100.URIAGE - ET100.URIAGE_NEW - ET100.JURYOU + ET100.JURYOU_NEW AS AMKISYUURIKAKE " + 
		" ,ET100.URIAGE_NEW AS AMURIAGE " + 
		" ,ET100.JURYOU_NEW AS AMJYURYO " + 
		" ,ET010.AMKISYUURIKAKE + ET100.URIAGE - ET100.JURYOU AS AMGENURIKAKE " + 
		"FROM ET010  " + 
		"LEFT OUTER JOIN ( " + 
		" SELECT  " + 
		"  ET100.IDTOKUISAKI " + 
		" ,SUM( CASE WHEN ET100.KBURITORI NOT IN ('90','91','92')                                       THEN AMZOUGEN ELSE 0 END ) AS URIAGE     " + 
		" ,SUM( CASE WHEN ET100.KBURITORI NOT IN ('90','91','92') AND ET100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS URIAGE_NEW " + 
		" ,SUM( CASE WHEN ET100.KBURITORI     IN ('90','91','92')                                       THEN AMZOUGEN ELSE 0 END ) AS JURYOU     " + 
		" ,SUM( CASE WHEN ET100.KBURITORI     IN ('90','91','92') AND ET100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS JURYOU_NEW " + 
		" FROM ET100 " + 
		" WHERE ET100.FGVALID = 'T' " + 
		"   AND ET100.DTNEND  = " + _NOW_NENDO + " " + 
		" GROUP BY ET100.IDTOKUISAKI " + 
		") ET100 " + 
		" ON ET100.IDTOKUISAKI = ET010.IDTOKUISAKI "
	);
	for (var i = 0; i < itemSelectList.length; i++) {
	    var lineDataMap = itemSelectList[i]
	    var itemDataList = new Array();

	    //得意先ID
	    itemDataList['IDTOKUISAKI']    = lineDataMap['IDTOKUISAKI'];
	    //期首売掛残高
	    itemDataList['AMKISYUURIKAKE'] = lineDataMap['AMKISYUURIKAKE'];
	    //期間売上額
	    itemDataList['AMURIAGE']       = lineDataMap['AMURIAGE'];
	    //期間受領額
	    itemDataList['AMJYURYO']       = lineDataMap['AMJYURYO'];
	    //現売掛残高
	    itemDataList['AMGENURIKAKE']   = lineDataMap['AMGENURIKAKE'];

	    updateET010(itemDataList);
	}


	/* 在庫繰越処理 */

	var itemSelectList = TALON.select( 
		"SELECT  " + 
		"  FT010.IDHINMOKU " + 
		" ,FT010.CDSOUKO " + 
		" ,FT010.QTKISYU + FT100.NYUKO_SU - FT100.NYUKO_SU_NEW - FT100.SYUKO_SU + FT100.SYUKO_SU_NEW AS QTKISYU " + 
		" ,FT100.SYUKO_SU_NEW AS QTNYUKO " + 
		" ,FT100.NYUKO_SU_NEW AS QTSYUKKO " + 
		" ,FT010.AMKISYU + FT100.NYUKO - FT100.NYUKO_NEW - FT100.SYUKO + FT100.SYUKO_NEW AS AMKISYU " + 
		" ,FT100.SYUKO_NEW AS AMNYUKO " + 
		" ,FT100.NYUKO_NEW AS AMSYUKKO " + 
		"FROM FT010  " + 
		"LEFT OUTER JOIN ( " + 
		" SELECT  " + 
		"  FT100.IDHINMOKU " + 
		" ,FT100.CDSOUKO " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI     IN ('110','120','130','140','150','160','170')                                       THEN QTZOUGEN * -1 ELSE 0 END ) AS SYUKO_SU " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI     IN ('110','120','130','140','150','160','170') AND FT100.DTNEND = " + _NEX_NENDO + " THEN QTZOUGEN * -1 ELSE 0 END ) AS SYUKO_SU_NEW " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI NOT IN ('110','120','130','140','150','160','170')                                       THEN QTZOUGEN ELSE 0 END ) AS NYUKO_SU " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI NOT IN ('110','120','130','140','150','160','170') AND FT100.DTNEND = " + _NEX_NENDO + " THEN QTZOUGEN ELSE 0 END ) AS NYUKO_SU_NEW " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI     IN ('110','120','130','140','150','160','170')                                       THEN AMZOUGEN * -1 ELSE 0 END ) AS SYUKO " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI     IN ('110','120','130','140','150','160','170') AND FT100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN * -1 ELSE 0 END ) AS SYUKO_NEW " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI NOT IN ('110','120','130','140','150','160','170')                                       THEN AMZOUGEN ELSE 0 END ) AS NYUKO " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI NOT IN ('110','120','130','140','150','160','170') AND FT100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS NYUKO_NEW " + 
		" FROM FT100 " + 
		" WHERE FT100.FGVALID = 'T' " + 
		"   AND FT100.DTNEND  = " + _NOW_NENDO + " " + 
		" GROUP BY FT100.IDHINMOKU " + 
		"         ,FT100.CDSOUKO " + 
		") FT100 " + 
		" ON FT100.IDHINMOKU = FT010.IDHINMOKU " + 
		"AND FT100.CDSOUKO   = FT010.CDSOUKO "
	);
	for (var i = 0; i < itemSelectList.length; i++) {
	    var lineDataMap = itemSelectList[i]
	    var itemDataList = new Array();

	    //品目ID
	    itemDataList['IDHINMOKU']     = lineDataMap['IDHINMOKU'];
	    //倉庫Ｃ
	    itemDataList['CDSOUKO']       = lineDataMap['CDSOUKO'];
	    //期首在庫数
	    itemDataList['QTKISYU']       = lineDataMap['QTKISYU'];
	    //期間入庫数
	    itemDataList['QTNYUKO']       = lineDataMap['QTNYUKO'];
	    //期間出庫数
	    itemDataList['QTSYUKKO']      = lineDataMap['QTSYUKKO'];
	    //期首在庫額
	    itemDataList['AMKISYU']       = lineDataMap['AMKISYU'];
	    //期間入庫額
	    itemDataList['AMNYUKO']       = lineDataMap['AMNYUKO'];
	    //期間出庫額
	    itemDataList['AMSYUKKO']      = lineDataMap['AMSYUKKO'];

	    updateFT010(itemDataList);
	}


	/* 入力認可過去月度の更新 */
	TALON.update( 
	    "UPDATE ZT010 SET " +
	    " TXVALUE = '" + _NEX_NENDO + "01'  " + 
	    "WHERE IDVARIANT = 'ALLOWED_FISCAL_MONTH' "
	)


	TALON.addMsg( "年次繰越処理を実行しました" );
	TALON.setIsSuccess(true);
}

exec();


```


## 参照情報

### メニュー位置

| FUNC\_ATH\_ID | グループ名 | 表示名 | AUTH\_KBN | PRINT\_SORT | APP\_URL | HELP\_URL |
|------|------|------|------|------|------|------|
| XTEA//XTEA\_SYSTEM |  | 年次繰越処理の起動 | 1 | 4300 | TALON/APPLICATION/GENERALFREE/GENERALFREE.xhtml?PARAM\_FUNC\_ID=XDMF\_ZF400\_0 |  |


### 依存関係

#### 参照先テーブル (書き込み)

_INSERT/UPDATE/DELETE/MERGE/UPDATE_TABLE 設定_

| テーブル名 | 出典 |
|------|------|
| <a href="er-diagram.html#tbl-ZT010">ZT010</a> | BUTTON\_BAT/ALL \(FUNC\_SEQ=0\) |

#### 参照先テーブル (読み取りのみ)

_FROM / JOIN 句から抽出_

| テーブル名 | 出典 |
|------|------|
| <a href="er-diagram.html#tbl-DT010">DT010</a> | BUTTON\_BAT/ALL \(FUNC\_SEQ=0\) |
| <a href="er-diagram.html#tbl-ET010">ET010</a> | BUTTON\_BAT/ALL \(FUNC\_SEQ=0\) |
| <a href="er-diagram.html#tbl-FT010">FT010</a> | BUTTON\_BAT/ALL \(FUNC\_SEQ=0\) |

> **✎ テーブル参照解析の注意事項**
>
> - テーブル参照は `UPDATE_TABLE` 設定 + ブロック SELECT 式 (BODY_SQL/TITLE_SQL) + JavaScript コード (CHR_TEXT) + 呼び出すストアドプロシージャ本体 (Oracle / PostgreSQL / MySQL / SQL Server) を `FROM` / `JOIN` / `INSERT INTO` / `UPDATE ... SET` / `DELETE FROM` / `MERGE INTO` / `REPLACE INTO` / `MERGE ... USING` の正規表現で抽出した結果です。 動的SQLは文字列リテラルが DML 文で始まる場合のみ抽出します。
> - **書き込み** = INSERT/UPDATE/DELETE/MERGE が検出されたテーブル / **読み取り** = FROM/JOIN のみのテーブル
> - **⚠ 抜け・漏れの可能性**: コード内で動的に組み立てられた SQL、変数連結、条件分岐内の SQL は検出できない場合があります。
> - **⚠ 対象外**: ストアドプロシージャ本体は Oracle / PostgreSQL / MySQL / SQL Server に対応 (DB2 等は今後)。 プロシージャから更に呼ぶ別プロシージャ、 BODY_SQL/JS 直書きの CALL/EXEC、 外部 API 経由、 トリガ連動は含まれません。 動的SQLの変数組み立てテーブル名も対象外 (リテラル完結分は抽出)。
> - **✎ 補完 (備考タグ)**: 解析で捕捉できない依存は 機能説明タブの備考に `[R:テーブル名]` (読み) / `[W:テーブル名]` (書き) / `[WR:テーブル名]` (読み書き) と記入すると依存として取り込まれます (1タグ1テーブル、 文章中に埋め込み可)。 `@番号` で複数DB接続の接続先を明示できます (例 `[W:LOG_TBL@2]`。 省略時は機能の DB 接続先)。



## コードブック

### JavaScript / 各種コード

#### 処理呼出 サーバJS (JavaScript) (ブロック1, 並び=0)

```javascript
function exec() {

	/* 事前準備 */
	if (TALON.getDbConfig().isMssql()) {
		var itemSelectList = TALON.select( 
		    "SELECT  " + 
		    " TLN_CHAR_TO_NUMBER(SUBSTRING(TXVALUE,1,4))     AS NOW_NENDO " + 
		    ",TLN_CHAR_TO_NUMBER(SUBSTRING(TXVALUE,1,4)) + 1 AS NEX_NENDO " + 
		    ",SUBSTRING(TXVALUE,5,2) AS NOW_MONTH " + 
		    ",SUBSTRING( TLN_DATE_TO_CHAR('MD', TLN_DATEADD('M', 1, TLN_CHAR_TO_DATE('YMDHMS2',CONCAT(TXVALUE,'01000000')) ) ), 1, 2 ) AS NEX_MONTH " + 
		    "FROM ZT010 " + 
		    "WHERE IDVARIANT = 'ALLOWED_FISCAL_MONTH' "
		);
	} else {
		var itemSelectList = TALON.select( 
		    "SELECT  " + 
		    " TLN_CHAR_TO_NUMBER(SUBSTR(TXVALUE,1,4))     AS NOW_NENDO " + 
		    ",TLN_CHAR_TO_NUMBER(SUBSTR(TXVALUE,1,4)) + 1 AS NEX_NENDO " + 
		    ",SUBSTR(TXVALUE,5,2) AS NOW_MONTH " + 
		    ",SUBSTR( TLN_DATE_TO_CHAR('MD', TLN_DATEADD('M', 1, TLN_CHAR_TO_DATE('YMDHMS2',CONCAT(TXVALUE,'01000000')) ) ), 1, 2 ) AS NEX_MONTH " + 
		    "FROM ZT010 " + 
		    "WHERE IDVARIANT = 'ALLOWED_FISCAL_MONTH' "
		);
	}
	var lineDataMap = itemSelectList[0];
	var _NOW_NENDO = lineDataMap['NOW_NENDO'];
	var _NEX_NENDO = lineDataMap['NEX_NENDO'];


	/* 買掛繰越処理 */

	var itemSelectList = TALON.select( 
	    "SELECT  " + 
	    "  DT010.IDSIIRESAKI " + 
	    " ,DT010.AMKISYUKAIKAKE + DT100.SHIIRE - DT100.SHIIRE_NEW - DT100.SIHARAI + DT100.SIHARAI_NEW AS AMKISYUKAIKAKE " + 
	    " ,DT100.SHIIRE_NEW AS AMSIIRE " + 
	    " ,DT100.SIHARAI_NEW AS AMSIHARAI " + 
	    " ,DT010.AMKISYUKAIKAKE + DT100.SHIIRE - DT100.SIHARAI AS AMGENKAIKAKE " + 
	    "FROM DT010  " + 
	    "LEFT OUTER JOIN ( " + 
	    " SELECT  " + 
	    "  DT100.IDSIIRESAKI " + 
	    " ,SUM( CASE WHEN DT100.KBKAITORI  = '90'                                       THEN AMZOUGEN ELSE 0 END ) AS SIHARAI     " + 
	    " ,SUM( CASE WHEN DT100.KBKAITORI  = '90' AND DT100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS SIHARAI_NEW " + 
	    " ,SUM( CASE WHEN DT100.KBKAITORI <> '90'                                       THEN AMZOUGEN ELSE 0 END ) AS SHIIRE      " + 
	    " ,SUM( CASE WHEN DT100.KBKAITORI <> '90' AND DT100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS SHIIRE_NEW  " + 
	    " FROM DT100 " + 
	    " WHERE DT100.FGVALID = 'T' " + 
	    "   AND DT100.DTNEND  = " + _NOW_NENDO + " " + 
	    " GROUP BY DT100.IDSIIRESAKI " + 
	    ") DT100 " + 
	    " ON DT100.IDSIIRESAKI = DT010.IDSIIRESAKI "
	);
	for (var i = 0; i < itemSelectList.length; i++) {
	    var lineDataMap = itemSelectList[i]
	    var itemDataList = new Array();

	    //仕入先ID
	    itemDataList['IDSIIRESAKI']    = lineDataMap['IDSIIRESAKI'];
	    //期首買掛残高
	    itemDataList['AMKISYUKAIKAKE'] = lineDataMap['AMKISYUKAIKAKE'];
	    //期間仕入額(税込金額)
	    itemDataList['AMSIIRE']        = lineDataMap['AMSIIRE'];
	    //期間支払額
	    itemDataList['AMSIHARAI']      = lineDataMap['AMSIHARAI'];
	    //現買掛残高
	    itemDataList['AMGENKAIKAKE']   = lineDataMap['AMGENKAIKAKE'];

	    updateDT010(itemDataList);
	}


	/* 売掛繰越処理 */

	var itemSelectList = TALON.select( 
		"SELECT  " + 
		"  ET010.IDTOKUISAKI " + 
		" ,ET010.AMKISYUURIKAKE + ET100.URIAGE - ET100.URIAGE_NEW - ET100.JURYOU + ET100.JURYOU_NEW AS AMKISYUURIKAKE " + 
		" ,ET100.URIAGE_NEW AS AMURIAGE " + 
		" ,ET100.JURYOU_NEW AS AMJYURYO " + 
		" ,ET010.AMKISYUURIKAKE + ET100.URIAGE - ET100.JURYOU AS AMGENURIKAKE " + 
		"FROM ET010  " + 
		"LEFT OUTER JOIN ( " + 
		" SELECT  " + 
		"  ET100.IDTOKUISAKI " + 
		" ,SUM( CASE WHEN ET100.KBURITORI NOT IN ('90','91','92')                                       THEN AMZOUGEN ELSE 0 END ) AS URIAGE     " + 
		" ,SUM( CASE WHEN ET100.KBURITORI NOT IN ('90','91','92') AND ET100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS URIAGE_NEW " + 
		" ,SUM( CASE WHEN ET100.KBURITORI     IN ('90','91','92')                                       THEN AMZOUGEN ELSE 0 END ) AS JURYOU     " + 
		" ,SUM( CASE WHEN ET100.KBURITORI     IN ('90','91','92') AND ET100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS JURYOU_NEW " + 
		" FROM ET100 " + 
		" WHERE ET100.FGVALID = 'T' " + 
		"   AND ET100.DTNEND  = " + _NOW_NENDO + " " + 
		" GROUP BY ET100.IDTOKUISAKI " + 
		") ET100 " + 
		" ON ET100.IDTOKUISAKI = ET010.IDTOKUISAKI "
	);
	for (var i = 0; i < itemSelectList.length; i++) {
	    var lineDataMap = itemSelectList[i]
	    var itemDataList = new Array();

	    //得意先ID
	    itemDataList['IDTOKUISAKI']    = lineDataMap['IDTOKUISAKI'];
	    //期首売掛残高
	    itemDataList['AMKISYUURIKAKE'] = lineDataMap['AMKISYUURIKAKE'];
	    //期間売上額
	    itemDataList['AMURIAGE']       = lineDataMap['AMURIAGE'];
	    //期間受領額
	    itemDataList['AMJYURYO']       = lineDataMap['AMJYURYO'];
	    //現売掛残高
	    itemDataList['AMGENURIKAKE']   = lineDataMap['AMGENURIKAKE'];

	    updateET010(itemDataList);
	}


	/* 在庫繰越処理 */

	var itemSelectList = TALON.select( 
		"SELECT  " + 
		"  FT010.IDHINMOKU " + 
		" ,FT010.CDSOUKO " + 
		" ,FT010.QTKISYU + FT100.NYUKO_SU - FT100.NYUKO_SU_NEW - FT100.SYUKO_SU + FT100.SYUKO_SU_NEW AS QTKISYU " + 
		" ,FT100.SYUKO_SU_NEW AS QTNYUKO " + 
		" ,FT100.NYUKO_SU_NEW AS QTSYUKKO " + 
		" ,FT010.AMKISYU + FT100.NYUKO - FT100.NYUKO_NEW - FT100.SYUKO + FT100.SYUKO_NEW AS AMKISYU " + 
		" ,FT100.SYUKO_NEW AS AMNYUKO " + 
		" ,FT100.NYUKO_NEW AS AMSYUKKO " + 
		"FROM FT010  " + 
		"LEFT OUTER JOIN ( " + 
		" SELECT  " + 
		"  FT100.IDHINMOKU " + 
		" ,FT100.CDSOUKO " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI     IN ('110','120','130','140','150','160','170')                                       THEN QTZOUGEN * -1 ELSE 0 END ) AS SYUKO_SU " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI     IN ('110','120','130','140','150','160','170') AND FT100.DTNEND = " + _NEX_NENDO + " THEN QTZOUGEN * -1 ELSE 0 END ) AS SYUKO_SU_NEW " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI NOT IN ('110','120','130','140','150','160','170')                                       THEN QTZOUGEN ELSE 0 END ) AS NYUKO_SU " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI NOT IN ('110','120','130','140','150','160','170') AND FT100.DTNEND = " + _NEX_NENDO + " THEN QTZOUGEN ELSE 0 END ) AS NYUKO_SU_NEW " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI     IN ('110','120','130','140','150','160','170')                                       THEN AMZOUGEN * -1 ELSE 0 END ) AS SYUKO " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI     IN ('110','120','130','140','150','160','170') AND FT100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN * -1 ELSE 0 END ) AS SYUKO_NEW " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI NOT IN ('110','120','130','140','150','160','170')                                       THEN AMZOUGEN ELSE 0 END ) AS NYUKO " + 
		" ,SUM( CASE WHEN FT100.KBUKEBARAI NOT IN ('110','120','130','140','150','160','170') AND FT100.DTNEND = " + _NEX_NENDO + " THEN AMZOUGEN ELSE 0 END ) AS NYUKO_NEW " + 
		" FROM FT100 " + 
		" WHERE FT100.FGVALID = 'T' " + 
		"   AND FT100.DTNEND  = " + _NOW_NENDO + " " + 
		" GROUP BY FT100.IDHINMOKU " + 
		"         ,FT100.CDSOUKO " + 
		") FT100 " + 
		" ON FT100.IDHINMOKU = FT010.IDHINMOKU " + 
		"AND FT100.CDSOUKO   = FT010.CDSOUKO "
	);
	for (var i = 0; i < itemSelectList.length; i++) {
	    var lineDataMap = itemSelectList[i]
	    var itemDataList = new Array();

	    //品目ID
	    itemDataList['IDHINMOKU']     = lineDataMap['IDHINMOKU'];
	    //倉庫Ｃ
	    itemDataList['CDSOUKO']       = lineDataMap['CDSOUKO'];
	    //期首在庫数
	    itemDataList['QTKISYU']       = lineDataMap['QTKISYU'];
	    //期間入庫数
	    itemDataList['QTNYUKO']       = lineDataMap['QTNYUKO'];
	    //期間出庫数
	    itemDataList['QTSYUKKO']      = lineDataMap['QTSYUKKO'];
	    //期首在庫額
	    itemDataList['AMKISYU']       = lineDataMap['AMKISYU'];
	    //期間入庫額
	    itemDataList['AMNYUKO']       = lineDataMap['AMNYUKO'];
	    //期間出庫額
	    itemDataList['AMSYUKKO']      = lineDataMap['AMSYUKKO'];

	    updateFT010(itemDataList);
	}


	/* 入力認可過去月度の更新 */
	TALON.update( 
	    "UPDATE ZT010 SET " +
	    " TXVALUE = '" + _NEX_NENDO + "01'  " + 
	    "WHERE IDVARIANT = 'ALLOWED_FISCAL_MONTH' "
	)


	TALON.addMsg( "年次繰越処理を実行しました" );
	TALON.setIsSuccess(true);
}

exec();


```


