# XDMF_JF030_0 / 製造指示工程明細の一括保守

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

## 要約

| 項目 | 値 |
|------|------|
| FUNC\_ID | \`XDMF\_JF030\_0\` |
| 機能名 | 製造指示工程明細の一括保守 |
| 機能タイプ \(APP\_KBN\) | STD / 固定検索条件 |
| BG\_L | 4 |
| BG\_M | 6 |
| ブロック数 | 2 |
| 項目数 | 27 |
| 読み取りテーブル | 3 |
| 書き込みテーブル | 2 |
| DB 接続先 | 1 |


### 機能概要

製造指示の保守から「工程編集」ボタンで起動する画面です。工程をマスタ値から変更する際に利用します。

※「開始完了予定自動計算処理」ボタン
　　計画対象の工程の開始と完了予定を基準として、前後の工程の開始・完了予定を自動計算する機能です。
　　休日設定された日付と作業場の稼働時刻を参照して計算しています。

## 機能設定

### 機能説明

| 項目 | 値 |
|------|----|
| 機能ID | XDMF\_JF030\_0 |
| 機能名 | 製造指示工程明細の一括保守 |
| 機能タイプ | 固定検索条件 \(STD\) |
| ADMIN\_ID |  |
| 業務分類 大 | XTEA生産管理 \(4\) |
| 業務分類 中 | 製造指示管理 \(6\) |
| 業務分類 小 |  |
| 作成 | 2024\-07\-11 11:38:09.0 demo |
| 最終更新 | 2024\-07\-11 11:38:09.0 demo |
| ヘルプリンク名 \(HELP\_LINK\_NM\) |  |
| ヘルプURL \(HELP\_URL\) |  |

#### 機能概要

製造指示の保守から「工程編集」ボタンで起動する画面です。工程をマスタ値から変更する際に利用します。

※「開始完了予定自動計算処理」ボタン
　　計画対象の工程の開始と完了予定を基準として、前後の工程の開始・完了予定を自動計算する機能です。
　　休日設定された日付と作業場の稼働時刻を参照して計算しています。


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

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

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

| ボタン | 状態 | FUNC\_KBN |
|------|------|------|
| 機能タイプ | 固定検索条件 | APP\_KBN=STD |
| 検索条件保存 \> 非表示 | ON \[1\] | COND\_SAVE\_HDN\_FLG |
| 起動Window状態 | 上書き＋親再検索 \[OVER\_WRITE\_SEARCH\] | 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 | 表示 |


#### 結合項目

_結合項目 (JOIN): 同じグループに属する他ブロックの検索項目は 1 つの検索条件として集約される。_

| 並び | 項目数 | 結合される項目 |
|------|------|------|
| 1 | 2 | BLOCK1: 製造指示№ \(NRSEIZO\) ↔ BLOCK2: 製造指示№ \(NRSEIZO\) |


### ユーザグループ

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



## 検索条件 (集約)

| 表示名 | COL\_NAME | データ型 | 桁 | 表示形式 | 改行 | 集約数 | 集約元 |
|------|------|------|------|------|------|------|------|
| 製造指示№ | NRSEIZO | VARCHAR2 | 30 | TEXT:半角、全角混在\(Byte\) |  | 2 | BLOCK1: NRSEIZO / BLOCK2: NRSEIZO |


## ブロック設定

### ブロック構成

| \# | TYPE | TITLE |
|------|------|------|
| BLOCK 1 | CARD | 製造指示 |
| BLOCK 2 | LIST | 工程明細 |

### BLOCK 1: 製造指示 [CARD]

#### ブロックレベル更新先テーブル

| 設定 | 内容 |
|------|------|
| SELECT式 \> 更新テーブル | JT010 |

#### SELECT 式

```sql
SELECT  
        JT010.NRSEIZO as NRSEIZO
       ,TLN_CONCAT(TLN_DATE_TO_CHAR('YMD',JT010.DTSEIZONOUKI),JT010.TMSEIZONOUKI,' ') as TXSEIZOYOTEI
       ,JT010.STSEIZO as STSEIZO
       ,JT010.IDHINMOKU as IDHINMOKU
       ,BT010.TXHINBAN as TXHINBAN
       ,BT010.TXHINMEI as TXHINMEI
       ,JT010.QTSEIZO as QTSEIZO
       ,BT010.KBUNIT as KBUNIT
       ,(CASE WHEN JT010.PRGENKA IS NULL THEN 0 ELSE JT010.PRGENKA END) as PRGENKA
       ,(CASE WHEN JT010.QTJYUTYU IS NULL THEN 0 ELSE JT010.QTJYUTYU END) as QTJYUTYU
       ,JT010.TXTEKIYO as TXTEKIYO
       ,JT010.MODIFY_COUNT as MODIFY_COUNT
FROM
 JT010 INNER JOIN BT010
            ON  JT010.IDHINMOKU = BT010.IDHINMOKU
```

#### 項目情報

| 並び順 | 物理項目名 | 表示名 | キー | 更新 | 検索 | 必須 | 改行 | グループ名 | 表示形式 | データ型 | 桁 | 表示桁 | 行数 | コンポーネント | 識別コード |
|------|------|------|------|------|------|------|------|------|------|------|------|------|------|------|------|
| 1 | NRSEIZO | 製造指示№ | ○ |  | ○ | ○ |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 30 |  |  |  |  |
| 2 | TXSEIZOYOTEI | 製造納期 |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 100 | 15 |  |  |  |
| 3 | STSEIZO | 製造状況 |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 2 |  |  | リストボックス \(1\) | STSEIZO |
| 4 | IDHINMOKU | 品目ID |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 30 |  |  |  |  |
| 5 | TXHINBAN | 品番 |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 100 |  |  |  |  |
| 6 | TXHINMEI | 品名 |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 100 |  |  |  |  |
| 7 | QTSEIZO | 製造指示数 |  |  |  |  | ○ |  | INT:整数　　　　　　　　　　 | NUMBER | 11 |  |  |  |  |
| 8 | KBUNIT | 単位 |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 3 |  |  | リストボックス \(1\) | KBUNIT |
| 9 | PRGENKA | 実勢原価 |  |  |  |  |  |  | INT:整数　　　　　　　　　　 | NUMBER | 11 |  |  |  |  |
| 10 | QTJYUTYU | 受注数 |  |  |  |  |  |  | INT:整数　　　　　　　　　　 | NUMBER | 11 |  |  |  |  |
| 11 | TXTEKIYO | 摘要 |  | ○ |  |  |  | 摘要 | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 900 | 120 | 3 |  |  |
| 12 | MODIFY\_COUNT |  |  |  |  |  |  |  | INT:整数　　　　　　　　　　 | NUMBER | 10 |  |  |  |  |


##### 項目別 詳細設定 (ITEM_OPTN)

###### 項目: NRSEIZO (製造指示№)

| 設定種別 | 並び | 内容 |
|------|------|------|
| 検索子画面 \> 機能ID | 1 | 機能ID=XDMF\_JF100\_0 \(製造指示№の検索子画面\) |
| 検索子画面 | 1 | 子画面項目=NRSEIZO \(製造指示№\) / 項目名=NRSEIZO \(製造指示№\) |
| 検索子画面 | 2 | 子画面項目=IDHINMOKU \(品目ID\) / 項目名=IDHINMOKU \(品目ID\) |
| 検索子画面 | 3 | 子画面項目=NRSEIZO \(製造指示№\) / 戻り値=NRSEIZO \(製造指示№\) |
| 検索子画面 | 4 | 子画面項目=IDHINMOKU \(品目ID\) / 戻り値=IDHINMOKU \(品目ID\) |
| 検索子画面 | 5 | 項目名=ON \[INIT\_SEARCH\] |

###### 項目: IDHINMOKU (品目ID)

| 設定種別 | 並び | 内容 |
|------|------|------|
| 検索子画面 \> 機能ID | 1 | 機能ID=XDMF\_BF100\_0 \(品目マスターの検索子画面\) |
| 検索子画面 | 1 | 子画面項目=IDHINMOKU \(品目ID\) / 項目名=IDHINMOKU \(品目ID\) |
| 検索子画面 | 2 | 子画面項目=TXHINBAN \(品番\) / 項目名=TXHINBAN \(品番\) |
| 検索子画面 | 3 | 子画面項目=TXHINMEI \(品名\) / 項目名=TXHINMEI \(品名\) |
| 検索子画面 | 4 | 子画面項目=IDHINMOKU \(品目ID\) / 戻り値=IDHINMOKU \(品目ID\) |
| 検索子画面 | 5 | 子画面項目=TXHINBAN \(品番\) / 戻り値=TXHINBAN \(品番\) |
| 検索子画面 | 6 | 子画面項目=TXHINMEI \(品名\) / 戻り値=TXHINMEI \(品名\) |
| 検索子画面 | 7 | 項目名=ON \[INIT\_SEARCH\] |

#### 詳細設定

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

| 設定種別 | 値 | FUNC\_KBN |
|------|------|------|
| 表示高さ | 220 | SPACE\_HEIGHT |

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

| 設定種別 | 値 | FUNC\_KBN |
|------|------|------|
| 確定時オプション \> 排他制御 | ON \[1\] | EXCLUSIVE\_CONTROL\_FLG |
| 処理権限 \> 更新 | ON \[1\] | UPDATE\_FLG |

#### 処理呼出

##### ボタン: 開始完了予定自動計算処理 · JavaScript呼出

| 設定 | 内容 |
| --- | --- |
| ボタン名 | 開始完了予定自動計算処理 |
| ライブラリ全て | ON |
| 処理後検索 | ON |
| 確認ダイアログ | ON |
| コード | (下のコードブロック参照) |

_コード_

```javascript
function selectXDMF_JF030_0(_NRSEIZO,_SQLIST,_KBN) {
	if (_KBN == '1')  {
		var tSQL = '>=';
		var tODR = 'SQLIST';
	} else {
		var tSQL = '<=';
		var tODR = 'SQLIST desc';
	}
	var sql = 
	" SELECT  " + 
	"  JT030.NRSEIZO " + 
	" ,JT030.SQKOUTEI " + 
	" ,JT030.CDKOUTEI " + 
	" ,JT030.SQCENTER " + 
	" ,JT030.LTSEIZO " + 
	" ,JT030.DTFROM " + 
	" ,JT030.TMFROM " + 
	" ,JT030.DTTHRU " + 
	" ,JT030.TMTHRU " + 
	" ,JT030.SQLIST " + 
	" ,JT030.TXSAGYOYOTEI " + 
	" ,JT030.AMKAKOU " + 
	" ,JT030.CREATED_DATE " + 
	" ,JT030.CREATED_BY " + 
	" ,JT030.CREATED_PRG_NM " + 
	" ,JT030.UPDATED_DATE " + 
	" ,JT030.UPDATED_BY " + 
	" ,JT030.UPDATED_PRG_NM " + 
	" ,JT030.MODIFY_COUNT " + 
	" ,BT060.KBCALENDAR " + 
	" ,BT060.TMFROM as KADO_TMFROM " + 
	" ,BT060.TMTHRU as KADO_TMTHRU " + 
	" FROM JT030  " + 
	" LEFT OUTER JOIN BT060 " + 
	"   ON BT060.CDKOUTEI = JT030.CDKOUTEI " + 
	"  AND BT060.SQCENTER = JT030.SQCENTER " + 
	" WHERE JT030.NRSEIZO = '" + _NRSEIZO + "' " + 
	"   AND JT030.SQLIST  " + tSQL + " '" + _SQLIST + "' " +
	" ORDER BY " + tODR
	;
	var itemSelectList = TALON.select(sql);

	return itemSelectList;
}

function execXDMF_JF030_0() {

	//入力値を取得
	var _BS_NRSEIZO  = '';
	var _BS_SQLIST   = 0;
	var _MX_SQLIST   = 0;
	var itemBlockList = TALON.getBlockData_List(2);
	for (var i = 0; i < itemBlockList.length; i++) {
		var lineDataMap = itemBlockList[i]
		if (lineDataMap['FGPLANNING'] == 'T') {
			_BS_NRSEIZO = lineDataMap['NRSEIZO'];
			_BS_SQLIST  = lineDataMap['SQLIST'];
		}
		if (_MX_SQLIST < lineDataMap['SQLIST']) {
			_MX_SQLIST = lineDataMap['SQLIST']
		}
	}
	if (_BS_NRSEIZO == '') {
		TALON.addErrorMsg( "計画対象の工程が見つかりませんでした" );
		TALON.setIsSuccess(false);
		//retrun;
	} else {
		//取得した行番を基準に＋の処理を実施
		var itemSelectList = selectXDMF_JF030_0(_BS_NRSEIZO, _BS_SQLIST, '1');
		var lineDataMap = itemSelectList[0];
		var _DTTHRU = lineDataMap['DTTHRU'];
		var _TMTHRU = lineDataMap['TMTHRU'];
		var _DTFROM = _DTTHRU;
		var _TMFROM = _TMTHRU;

		var iLoop = 1;
		for (var i = iLoop; i < itemSelectList.length; i++) {
			var lineDataMap = itemSelectList[i];

			//製造リードタイム
			_LTSEIZO = lineDataMap['LTSEIZO'];
			if (_LTSEIZO == null) {
				_LTSEIZO = 1;
			}


			//前作業の完了日より開始日を作成
			_DTFROM = _DTTHRU;
			_TMFROM = _TMTHRU;



			//計算
			var _KADO_TMFROM = lineDataMap['KADO_TMFROM'];
			var _KADO_TMTHRU = lineDataMap['KADO_TMTHRU'];
			var _KBCALENDAR  = lineDataMap['KBCALENDAR'];

			//if (_KADO_TMFROM > _TMFROM || _TMFROM > _KADO_TMTHRU) {
			//	_TMFROM = _KADO_TMFROM;
			//}

			var rDATE = calcDTTM_F(_DTFROM,_TMFROM,_LTSEIZO,_KADO_TMFROM,_KADO_TMTHRU,_KBCALENDAR);
			var rDATEA = rDATE.toString().split(",")[0];
			var rDATEB = rDATE.toString().split(",")[1];
			_DTTHRU = rDATEA.toString().split(" ")[0];
			_TMTHRU = rDATEA.toString().split(" ")[1];
			_DTFROM = rDATEB.toString().split(" ")[0];
			_TMFROM = rDATEB.toString().split(" ")[1];



			// * 
			// * //作成された開始日より完了予定日を作成
			// * var wdate = tln_com_todatetime(_DTFROM.toString().split(" ")[0] + " " + _TMFROM);
			// * wdate.setMinutes(wdate.getMinutes() + _LTSEIZO);
			// * var tdate = tln_com_date2string2(wdate);
			// * _DTTHRU = tdate.toString().split(" ")[0];
			// * _TMTHRU = tdate.toString().split(" ")[1];
			// * 
			// * 
			// * //日付が休日の場合は翌日
			// * var _KBCALENDAR = lineDataMap['KBCALENDAR'];
			// * var flg = true;
			// * var twk = _DTTHRU;
			// * while (flg){
			// * 	if (getHOLIDAY_FLG(_KBCALENDAR,twk + ' 00:00:00.0') == '0') {
			// * 		_DTTHRU = twk;
			// * 		flg = false;
			// * 	} else {
			// * 		wdate = tln_com_todatetime(twk + ' 00:00:00.0');
			// * 		wdate.setMinutes(wdate.getMinutes() + 1);
			// * 		//wdate.setDate(wdate.getDate() + 1);
			// * 		var tdate = tln_com_date2string2(wdate);
			// * 		twk = tdate.toString().split(" ")[0];
			// * 	}
			// * }
			// * 


			var itemDataList = new Array();
			itemDataList['NRSEIZO']       = lineDataMap['NRSEIZO'];
			itemDataList['SQKOUTEI']      = lineDataMap['SQKOUTEI'];
			itemDataList['CDKOUTEI']      = lineDataMap['CDKOUTEI'];
			itemDataList['SQCENTER']      = lineDataMap['SQCENTER'];
			itemDataList['LTSEIZO']       = lineDataMap['LTSEIZO'];
			itemDataList['SQLIST']        = lineDataMap['SQLIST'];
			itemDataList['TXSAGYOYOTEI']  = lineDataMap['TXSAGYOYOTEI'];
			itemDataList['AMKAKOU']       = lineDataMap['AMKAKOU'];

			//開始予定日
			itemDataList['DTFROM']        = _DTFROM;
			//開始予定時刻
			itemDataList['TMFROM']        = tln_com_lcut(_TMFROM,5);
			//完了予定日
			itemDataList['DTTHRU']        = _DTTHRU;
			//完了予定時刻
			itemDataList['TMTHRU']        = tln_com_lcut(_TMTHRU,5);

			updateJT030(itemDataList);

		}



		//取得した行番を基準にーの処理を実施
		var itemSelectList = selectXDMF_JF030_0(_BS_NRSEIZO, _BS_SQLIST, '2');
		var lineDataMap = itemSelectList[0];
		var _DTFROM = lineDataMap['DTFROM'];
		var _TMFROM = lineDataMap['TMFROM'];
		var _DTTHRU = _DTFROM;
		var _TMTHRU = _TMFROM;

		var iLoop = 1;
		for (var i = iLoop; i < itemSelectList.length; i++) {
			var lineDataMap = itemSelectList[i];

			//製造リードタイム
			_LTSEIZO = lineDataMap['LTSEIZO'];
			if (_LTSEIZO == null) {
				_LTSEIZO = 0;
			}


			//次作業の開始予定日より完了予定日を作成
			_DTTHRU = _DTFROM;
			_TMTHRU = _TMFROM;


			//計算
			var _KADO_TMFROM = lineDataMap['KADO_TMFROM'];
			var _KADO_TMTHRU = lineDataMap['KADO_TMTHRU'];
			var _KBCALENDAR  = lineDataMap['KBCALENDAR'];

			//if (_KADO_TMFROM > _TMTHRU || _TMTHRU > _KADO_TMTHRU) {
			//	_TMTHRU = _KADO_TMTHRU;
			//}

			var rDATE  = calcDTTM_R(_DTTHRU,_TMTHRU,_LTSEIZO,_KADO_TMFROM,_KADO_TMTHRU,_KBCALENDAR);
			var rDATEA = rDATE.toString().split(",")[0];
			var rDATEB = rDATE.toString().split(",")[1];
			_DTFROM = rDATEA.toString().split(" ")[0];
			_TMFROM = rDATEA.toString().split(" ")[1];
			_DTTHRU = rDATEB.toString().split(" ")[0];
			_TMTHRU = rDATEB.toString().split(" ")[1];


			// * 
			// * //作成された完了予定日より開始予定日を作成
			// * var wdate = tln_com_todatetime(_DTTHRU.toString().split(" ")[0] + " " + _TMTHRU);
			// * wdate.setMinutes(wdate.getMinutes() - _LTSEIZO);
			// * var tdate = tln_com_date2string2(wdate);
			// * _DTFROM = tdate.toString().split(" ")[0];
			// * _TMFROM = tdate.toString().split(" ")[1];
			// * 
			// * 
			// * //日付が休日の場合は前日
			// * var _KBCALENDAR = lineDataMap['KBCALENDAR'];
			// * var flg = true;
			// * var twk = _DTFROM;
			// * while (flg){
			// * 	if (getHOLIDAY_FLG(_KBCALENDAR,twk + ' 00:00:00.0') == '0') {
			// * 		_DTFROM = twk;
			// * 		flg = false;
			// * 	} else {
			// * 		wdate = tln_com_todatetime(twk + ' 00:00:00.0');
			// * 		wdate.setMinutes(wdate.getMinutes() - 1);
			// * 
			// * 		//wdate.setDate(wdate.getDate() - 1);
			// * 		var tdate = tln_com_date2string2(wdate);
			// * 		twk = tdate.toString().split(" ")[0];
			// * 	}
			// * }
			// * 


			var itemDataList = new Array();
			itemDataList['NRSEIZO']       = lineDataMap['NRSEIZO'];
			itemDataList['SQKOUTEI']      = lineDataMap['SQKOUTEI'];
			itemDataList['CDKOUTEI']      = lineDataMap['CDKOUTEI'];
			itemDataList['SQCENTER']      = lineDataMap['SQCENTER'];
			itemDataList['LTSEIZO']       = lineDataMap['LTSEIZO'];
			itemDataList['SQLIST']        = lineDataMap['SQLIST'];
			itemDataList['TXSAGYOYOTEI']  = lineDataMap['TXSAGYOYOTEI'];
			itemDataList['AMKAKOU']       = lineDataMap['AMKAKOU'];

			//開始予定日
			itemDataList['DTFROM']        = _DTFROM;
			//開始予定時刻
			itemDataList['TMFROM']        = tln_com_lcut(_TMFROM,5);
			//完了予定日
			itemDataList['DTTHRU']        = _DTTHRU;
			//完了予定時刻
			itemDataList['TMTHRU']        = tln_com_lcut(_TMTHRU,5);

			updateJT030(itemDataList);

		}

		TALON.addMsg( "処理が完了しました" );
		TALON.setIsSuccess(true);

	}

}

execXDMF_JF030_0();






```

### BLOCK 2: 工程明細 [LIST]

#### ブロックレベル更新先テーブル

| 設定 | 内容 |
|------|------|
| SELECT式 \> 更新テーブル | JT030 |

#### SELECT 式

```sql
SELECT  
        JT030.NRSEIZO as NRSEIZO
       ,JT030.SQKOUTEI as SQKOUTEI
       ,JT030.SQLIST as SQLIST
       ,JT030.CDKOUTEI as CDKOUTEI 
       ,BT050.TXNAME as TXNAME
       ,JT030.SQCENTER as SQCENTER
       ,BT060.TXCENTER as TXCENTER
       ,BT050.FGPLANNING as FGPLANNING
       ,JT030.LTSEIZO
       ,JT030.DTFROM
       ,JT030.TMFROM
       ,JT030.DTTHRU
       ,JT030.TMTHRU
       ,JT030.TXSAGYOYOTEI as TXSAGYOYOTEI
       ,JT030.MODIFY_COUNT as MODIFY_COUNT
FROM
 JT010
, JT030
, BT050
, BT060
WHERE
       JT010.NRSEIZO  = JT030.NRSEIZO
AND JT030.CDKOUTEI = BT050.CDKOUTEI
AND JT030.CDKOUTEI = BT060.CDKOUTEI
AND JT030.SQCENTER = BT060.SQCENTER
```

#### 項目情報

| 並び順 | 物理項目名 | 表示名 | キー | 更新 | 検索 | 必須 | 改行 | グループ名 | 表示形式 | データ型 | 桁 | 表示桁 | 行数 | コンポーネント | 識別コード |
|------|------|------|------|------|------|------|------|------|------|------|------|------|------|------|------|
| 1 | NRSEIZO | 製造指示№ | ○ | ○ | ○ | ○ |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 0 |  |  |  |  |
| 2 | SQKOUTEI | 行番 | ○ | ○ |  | ○ |  |  | INT:整数　　　　　　　　　　 | NUMBER | 3 | 5 |  |  |  |
| 3 | SQLIST | 工程順序 |  | ○ |  | ○ |  |  | INT:整数　　　　　　　　　　 | NUMBER | 5 |  |  |  |  |
| 4 | CDKOUTEI | 工程Ｃ |  | ○ |  | ○ |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 30 | 10 |  |  |  |
| 5 | TXNAME | 工程 |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 100 |  |  |  |  |
| 6 | SQCENTER | 作業場行番 |  | ○ |  | ○ |  |  | INT:整数　　　　　　　　　　 | VARCHAR2 | 4 |  |  |  |  |
| 7 | TXCENTER | 作業場名 |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 100 |  |  |  |  |
| 8 | FGPLANNING | 計画対象 |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 1 |  |  | チェックボックス \(5\) | FGPLANNING |
| 9 | LTSEIZO | 製造LT\(分\) |  | ○ |  |  |  |  | INT:整数　　　　　　　　　　 | NUMBER | 5 |  |  |  |  |
| 10 | DTFROM | 開始予定日 |  | ○ |  |  |  |  | DATE:YYYY/MM/DD | DATE | 10 |  |  |  |  |
| 11 | TMFROM | 開始予定時刻 |  | ○ |  |  |  |  | HM:hh:mm | VARCHAR2 | 5 |  |  |  |  |
| 12 | DTTHRU | 完了予定日 |  | ○ |  |  |  |  | DATE:YYYY/MM/DD | DATE | 10 |  |  |  |  |
| 13 | TMTHRU | 完了予定時刻 |  | ○ |  |  |  |  | HM:hh:mm | VARCHAR2 | 5 |  |  |  |  |
| 14 | TXSAGYOYOTEI |  |  |  |  |  |  |  | TEXT:半角、全角混在\(Byte\) | VARCHAR2 | 100 |  |  |  |  |
| 15 | MODIFY\_COUNT |  |  |  |  |  |  |  | INT:整数　　　　　　　　　　 | NUMBER | 10 |  |  |  |  |


##### 項目別 詳細設定 (ITEM_OPTN)

###### 項目: SQKOUTEI (行番)

| 設定種別 | 並び | 内容 |
|------|------|------|
| 表示位置 | 1 | 中央 \[C\] |

###### 項目: CDKOUTEI (工程Ｃ)

| 設定種別 | 並び | 内容 |
|------|------|------|
| LOOKUP | 1 | 子画面項目=CDKOUTEI \(工程C\) / 項目名=CDKOUTEI \(工程Ｃ\) |
| LOOKUP | 2 | 子画面項目=SQCENTER \(作業場行番\) / 項目名=SQCENTER \(作業場行番\) |
| LOOKUP | 3 | 子画面項目=TXNAME \(工程名\) / 戻り値=TXNAME \(工程\) |
| LOOKUP | 4 | 子画面項目=TXCENTER \(作業場名\) / 戻り値=TXCENTER \(作業場名\) |
| LOOKUP \> 機能ID | 1 | 機能ID=XDMF\_BF120\_0 \(作業場マスターの検索子画面\) |
| マスタチェック | 1 | ON |
| 検索子画面 \> 機能ID | 1 | 機能ID=XDMF\_BF120\_0 \(作業場マスターの検索子画面\) |
| 検索子画面 | 1 | 子画面項目=CDKOUTEI \(工程C\) / 項目名=CDKOUTEI \(工程Ｃ\) |
| 検索子画面 | 2 | 子画面項目=SQCENTER \(作業場行番\) / 項目名=SQCENTER \(作業場行番\) |
| 検索子画面 | 3 | 子画面項目=CDKOUTEI \(工程C\) / 戻り値=CDKOUTEI \(工程Ｃ\) |
| 検索子画面 | 4 | 子画面項目=TXNAME \(工程名\) / 戻り値=TXNAME \(工程\) |
| 検索子画面 | 5 | 子画面項目=SQCENTER \(作業場行番\) / 戻り値=SQCENTER \(作業場行番\) |
| 検索子画面 | 6 | 子画面項目=TXCENTER \(作業場名\) / 戻り値=TXCENTER \(作業場名\) |
| 検索子画面 | 7 | 項目名=ON \[INIT\_SEARCH\] |

###### 項目: SQCENTER (作業場行番)

| 設定種別 | 並び | 内容 |
|------|------|------|
| LOOKUP | 1 | 子画面項目=CDKOUTEI \(工程C\) / 項目名=CDKOUTEI \(工程Ｃ\) |
| LOOKUP | 2 | 子画面項目=SQCENTER \(作業場行番\) / 項目名=SQCENTER \(作業場行番\) |
| LOOKUP | 3 | 子画面項目=TXNAME \(工程名\) / 戻り値=TXNAME \(工程\) |
| LOOKUP | 4 | 子画面項目=TXCENTER \(作業場名\) / 戻り値=TXCENTER \(作業場名\) |
| LOOKUP \> 機能ID | 1 | 機能ID=XDMF\_BF120\_0 \(作業場マスターの検索子画面\) |
| マスタチェック | 1 | ON |
| 検索子画面 \> 機能ID | 1 | 機能ID=XDMF\_BF120\_0 \(作業場マスターの検索子画面\) |
| 検索子画面 | 1 | 子画面項目=CDKOUTEI \(工程C\) / 項目名=CDKOUTEI \(工程Ｃ\) |
| 検索子画面 | 2 | 子画面項目=SQCENTER \(作業場行番\) / 項目名=SQCENTER \(作業場行番\) |
| 検索子画面 | 3 | 子画面項目=CDKOUTEI \(工程C\) / 戻り値=CDKOUTEI \(工程Ｃ\) |
| 検索子画面 | 4 | 子画面項目=TXNAME \(工程名\) / 戻り値=TXNAME \(工程\) |
| 検索子画面 | 5 | 子画面項目=SQCENTER \(作業場行番\) / 戻り値=SQCENTER \(作業場行番\) |
| 検索子画面 | 6 | 子画面項目=TXCENTER \(作業場名\) / 戻り値=TXCENTER \(作業場名\) |
| 検索子画面 | 7 | 項目名=ON \[INIT\_SEARCH\] |

#### 詳細設定

| 設定種別 | 値 | FUNC\_KBN |
|------|------|------|
| 処理権限 \> 削除 | ON \[1\] | DELETE\_FLG |
| ボタンの非表示 \> Excel更新 | ON \[1\] | EXCELUPDATE\_BUTTON\_HDN\_FLG |
| 確定時オプション \> 排他制御 | ON \[1\] | EXCLUSIVE\_CONTROL\_FLG |
| 改ページしない | ON \[1\] | HDN\_PAGER\_FLG |
| 処理権限 \> 登録 | ON \[1\] | INSERT\_FLG |
| 処理権限 \> 更新 | ON \[1\] | UPDATE\_FLG |
| ボタンの非表示 \> 参照 | ON \[1\] | VIEW\_BUTTON\_HDN\_FLG |


## 参照情報

### メニュー位置

_(なし)_


### 依存関係

#### 参照先機能

| FUNC\_ID | FUNC\_NM | APP\_KBN |
|------|------|------|
| XDMF\_BF100\_0 | 品目マスターの検索子画面 | SUB |
| XDMF\_BF120\_0 | 作業場マスターの検索子画面 | SUB |
| XDMF\_JF100\_0 | 製造指示№の検索子画面 | SUB |

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

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

| テーブル名 | 出典 |
|------|------|
| <a href="er-diagram.html#tbl-JT010">JT010</a> | UPDATE\_TABLE \(FUNC\_SEQ=0\) / UPDATE\_TABLE \(FUNC\_SEQ=0\) |
| <a href="er-diagram.html#tbl-JT030">JT030</a> | UPDATE\_TABLE \(FUNC\_SEQ=1\) / UPDATE\_TABLE \(FUNC\_SEQ=1\) |

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

_FROM / JOIN 句から抽出_

| テーブル名 | 出典 |
|------|------|
| <a href="er-diagram.html#tbl-BT010">BT010</a> | BLOCK1.BODY\_SQL |
| <a href="er-diagram.html#tbl-BT050">BT050</a> | BLOCK2.BODY\_SQL |
| <a href="er-diagram.html#tbl-BT060">BT060</a> | BLOCK2.BODY\_SQL / 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 接続先)。

#### 被参照 (呼出元機能)

| FUNC\_ID | FUNC\_NM | APP\_KBN | 参照箇所 |
|------|------|------|------|
| XDMF\_JF011\_0 | 製造指示の保守\(ヘッダー修正のみ\) | STD | BUTTON\_NEXT \(ALL\) |
| XDMF\_JF011\_0Free | 製造指示の保守 | STD | BUTTON\_NEXT \(ALL\) |
| XDMF\_JF012\_0 | 製造指示と関連情報の確認 | STD | BUTTON\_NEXT \(ALL\) |


### マスタ参照

#### 汎用CD (TLN_M_HANYO_CODE_MAIN)

| 識別コード | KEY | 名称 | DSP1 | DSP2 | DSP3 | DSP\_NO1 | SORT |
|------|------|------|------|------|------|------|------|
| FGPLANNING | T | 計画対象フラグ | 対象 |  |  | 0 |  |
| KBUNIT | CNT | 単位区分 | 件 |  |  | 0 | 20 |
| KBUNIT | ECH | 単位区分 | 個 |  |  | 0 | 10 |
| KBUNIT | G | 単位区分 | ｇ |  |  | 0 | 60 |
| KBUNIT | KG | 単位区分 | kg |  |  | 0 | 50 |
| KBUNIT | MTR | 単位区分 | ｍ |  |  | 0 | 30 |
| KBUNIT | ROL | 単位区分 | 巻 |  |  | 0 | 40 |
| STSEIZO | 10 | 製造状況 | 未発行 |  |  | 0 | 10 |
| STSEIZO | 20 | 製造状況 | 発行済 |  |  | 0 | 20 |
| STSEIZO | 30 | 製造状況 | 出庫済 |  |  | 0 | 30 |
| STSEIZO | 40 | 製造状況 | 完成済 |  |  | 0 | 40 |
| STSEIZO | 50 | 製造状況 | 販売済 |  |  | 0 | 50 |
| STSEIZO | 90 | 製造状況 | 取消済 |  |  | 0 | 90 |



## コードブック

### JavaScript / 各種コード

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

```javascript
function selectXDMF_JF030_0(_NRSEIZO,_SQLIST,_KBN) {
	if (_KBN == '1')  {
		var tSQL = '>=';
		var tODR = 'SQLIST';
	} else {
		var tSQL = '<=';
		var tODR = 'SQLIST desc';
	}
	var sql = 
	" SELECT  " + 
	"  JT030.NRSEIZO " + 
	" ,JT030.SQKOUTEI " + 
	" ,JT030.CDKOUTEI " + 
	" ,JT030.SQCENTER " + 
	" ,JT030.LTSEIZO " + 
	" ,JT030.DTFROM " + 
	" ,JT030.TMFROM " + 
	" ,JT030.DTTHRU " + 
	" ,JT030.TMTHRU " + 
	" ,JT030.SQLIST " + 
	" ,JT030.TXSAGYOYOTEI " + 
	" ,JT030.AMKAKOU " + 
	" ,JT030.CREATED_DATE " + 
	" ,JT030.CREATED_BY " + 
	" ,JT030.CREATED_PRG_NM " + 
	" ,JT030.UPDATED_DATE " + 
	" ,JT030.UPDATED_BY " + 
	" ,JT030.UPDATED_PRG_NM " + 
	" ,JT030.MODIFY_COUNT " + 
	" ,BT060.KBCALENDAR " + 
	" ,BT060.TMFROM as KADO_TMFROM " + 
	" ,BT060.TMTHRU as KADO_TMTHRU " + 
	" FROM JT030  " + 
	" LEFT OUTER JOIN BT060 " + 
	"   ON BT060.CDKOUTEI = JT030.CDKOUTEI " + 
	"  AND BT060.SQCENTER = JT030.SQCENTER " + 
	" WHERE JT030.NRSEIZO = '" + _NRSEIZO + "' " + 
	"   AND JT030.SQLIST  " + tSQL + " '" + _SQLIST + "' " +
	" ORDER BY " + tODR
	;
	var itemSelectList = TALON.select(sql);

	return itemSelectList;
}

function execXDMF_JF030_0() {

	//入力値を取得
	var _BS_NRSEIZO  = '';
	var _BS_SQLIST   = 0;
	var _MX_SQLIST   = 0;
	var itemBlockList = TALON.getBlockData_List(2);
	for (var i = 0; i < itemBlockList.length; i++) {
		var lineDataMap = itemBlockList[i]
		if (lineDataMap['FGPLANNING'] == 'T') {
			_BS_NRSEIZO = lineDataMap['NRSEIZO'];
			_BS_SQLIST  = lineDataMap['SQLIST'];
		}
		if (_MX_SQLIST < lineDataMap['SQLIST']) {
			_MX_SQLIST = lineDataMap['SQLIST']
		}
	}
	if (_BS_NRSEIZO == '') {
		TALON.addErrorMsg( "計画対象の工程が見つかりませんでした" );
		TALON.setIsSuccess(false);
		//retrun;
	} else {
		//取得した行番を基準に＋の処理を実施
		var itemSelectList = selectXDMF_JF030_0(_BS_NRSEIZO, _BS_SQLIST, '1');
		var lineDataMap = itemSelectList[0];
		var _DTTHRU = lineDataMap['DTTHRU'];
		var _TMTHRU = lineDataMap['TMTHRU'];
		var _DTFROM = _DTTHRU;
		var _TMFROM = _TMTHRU;

		var iLoop = 1;
		for (var i = iLoop; i < itemSelectList.length; i++) {
			var lineDataMap = itemSelectList[i];

			//製造リードタイム
			_LTSEIZO = lineDataMap['LTSEIZO'];
			if (_LTSEIZO == null) {
				_LTSEIZO = 1;
			}


			//前作業の完了日より開始日を作成
			_DTFROM = _DTTHRU;
			_TMFROM = _TMTHRU;



			//計算
			var _KADO_TMFROM = lineDataMap['KADO_TMFROM'];
			var _KADO_TMTHRU = lineDataMap['KADO_TMTHRU'];
			var _KBCALENDAR  = lineDataMap['KBCALENDAR'];

			//if (_KADO_TMFROM > _TMFROM || _TMFROM > _KADO_TMTHRU) {
			//	_TMFROM = _KADO_TMFROM;
			//}

			var rDATE = calcDTTM_F(_DTFROM,_TMFROM,_LTSEIZO,_KADO_TMFROM,_KADO_TMTHRU,_KBCALENDAR);
			var rDATEA = rDATE.toString().split(",")[0];
			var rDATEB = rDATE.toString().split(",")[1];
			_DTTHRU = rDATEA.toString().split(" ")[0];
			_TMTHRU = rDATEA.toString().split(" ")[1];
			_DTFROM = rDATEB.toString().split(" ")[0];
			_TMFROM = rDATEB.toString().split(" ")[1];



			// * 
			// * //作成された開始日より完了予定日を作成
			// * var wdate = tln_com_todatetime(_DTFROM.toString().split(" ")[0] + " " + _TMFROM);
			// * wdate.setMinutes(wdate.getMinutes() + _LTSEIZO);
			// * var tdate = tln_com_date2string2(wdate);
			// * _DTTHRU = tdate.toString().split(" ")[0];
			// * _TMTHRU = tdate.toString().split(" ")[1];
			// * 
			// * 
			// * //日付が休日の場合は翌日
			// * var _KBCALENDAR = lineDataMap['KBCALENDAR'];
			// * var flg = true;
			// * var twk = _DTTHRU;
			// * while (flg){
			// * 	if (getHOLIDAY_FLG(_KBCALENDAR,twk + ' 00:00:00.0') == '0') {
			// * 		_DTTHRU = twk;
			// * 		flg = false;
			// * 	} else {
			// * 		wdate = tln_com_todatetime(twk + ' 00:00:00.0');
			// * 		wdate.setMinutes(wdate.getMinutes() + 1);
			// * 		//wdate.setDate(wdate.getDate() + 1);
			// * 		var tdate = tln_com_date2string2(wdate);
			// * 		twk = tdate.toString().split(" ")[0];
			// * 	}
			// * }
			// * 


			var itemDataList = new Array();
			itemDataList['NRSEIZO']       = lineDataMap['NRSEIZO'];
			itemDataList['SQKOUTEI']      = lineDataMap['SQKOUTEI'];
			itemDataList['CDKOUTEI']      = lineDataMap['CDKOUTEI'];
			itemDataList['SQCENTER']      = lineDataMap['SQCENTER'];
			itemDataList['LTSEIZO']       = lineDataMap['LTSEIZO'];
			itemDataList['SQLIST']        = lineDataMap['SQLIST'];
			itemDataList['TXSAGYOYOTEI']  = lineDataMap['TXSAGYOYOTEI'];
			itemDataList['AMKAKOU']       = lineDataMap['AMKAKOU'];

			//開始予定日
			itemDataList['DTFROM']        = _DTFROM;
			//開始予定時刻
			itemDataList['TMFROM']        = tln_com_lcut(_TMFROM,5);
			//完了予定日
			itemDataList['DTTHRU']        = _DTTHRU;
			//完了予定時刻
			itemDataList['TMTHRU']        = tln_com_lcut(_TMTHRU,5);

			updateJT030(itemDataList);

		}



		//取得した行番を基準にーの処理を実施
		var itemSelectList = selectXDMF_JF030_0(_BS_NRSEIZO, _BS_SQLIST, '2');
		var lineDataMap = itemSelectList[0];
		var _DTFROM = lineDataMap['DTFROM'];
		var _TMFROM = lineDataMap['TMFROM'];
		var _DTTHRU = _DTFROM;
		var _TMTHRU = _TMFROM;

		var iLoop = 1;
		for (var i = iLoop; i < itemSelectList.length; i++) {
			var lineDataMap = itemSelectList[i];

			//製造リードタイム
			_LTSEIZO = lineDataMap['LTSEIZO'];
			if (_LTSEIZO == null) {
				_LTSEIZO = 0;
			}


			//次作業の開始予定日より完了予定日を作成
			_DTTHRU = _DTFROM;
			_TMTHRU = _TMFROM;


			//計算
			var _KADO_TMFROM = lineDataMap['KADO_TMFROM'];
			var _KADO_TMTHRU = lineDataMap['KADO_TMTHRU'];
			var _KBCALENDAR  = lineDataMap['KBCALENDAR'];

			//if (_KADO_TMFROM > _TMTHRU || _TMTHRU > _KADO_TMTHRU) {
			//	_TMTHRU = _KADO_TMTHRU;
			//}

			var rDATE  = calcDTTM_R(_DTTHRU,_TMTHRU,_LTSEIZO,_KADO_TMFROM,_KADO_TMTHRU,_KBCALENDAR);
			var rDATEA = rDATE.toString().split(",")[0];
			var rDATEB = rDATE.toString().split(",")[1];
			_DTFROM = rDATEA.toString().split(" ")[0];
			_TMFROM = rDATEA.toString().split(" ")[1];
			_DTTHRU = rDATEB.toString().split(" ")[0];
			_TMTHRU = rDATEB.toString().split(" ")[1];


			// * 
			// * //作成された完了予定日より開始予定日を作成
			// * var wdate = tln_com_todatetime(_DTTHRU.toString().split(" ")[0] + " " + _TMTHRU);
			// * wdate.setMinutes(wdate.getMinutes() - _LTSEIZO);
			// * var tdate = tln_com_date2string2(wdate);
			// * _DTFROM = tdate.toString().split(" ")[0];
			// * _TMFROM = tdate.toString().split(" ")[1];
			// * 
			// * 
			// * //日付が休日の場合は前日
			// * var _KBCALENDAR = lineDataMap['KBCALENDAR'];
			// * var flg = true;
			// * var twk = _DTFROM;
			// * while (flg){
			// * 	if (getHOLIDAY_FLG(_KBCALENDAR,twk + ' 00:00:00.0') == '0') {
			// * 		_DTFROM = twk;
			// * 		flg = false;
			// * 	} else {
			// * 		wdate = tln_com_todatetime(twk + ' 00:00:00.0');
			// * 		wdate.setMinutes(wdate.getMinutes() - 1);
			// * 
			// * 		//wdate.setDate(wdate.getDate() - 1);
			// * 		var tdate = tln_com_date2string2(wdate);
			// * 		twk = tdate.toString().split(" ")[0];
			// * 	}
			// * }
			// * 


			var itemDataList = new Array();
			itemDataList['NRSEIZO']       = lineDataMap['NRSEIZO'];
			itemDataList['SQKOUTEI']      = lineDataMap['SQKOUTEI'];
			itemDataList['CDKOUTEI']      = lineDataMap['CDKOUTEI'];
			itemDataList['SQCENTER']      = lineDataMap['SQCENTER'];
			itemDataList['LTSEIZO']       = lineDataMap['LTSEIZO'];
			itemDataList['SQLIST']        = lineDataMap['SQLIST'];
			itemDataList['TXSAGYOYOTEI']  = lineDataMap['TXSAGYOYOTEI'];
			itemDataList['AMKAKOU']       = lineDataMap['AMKAKOU'];

			//開始予定日
			itemDataList['DTFROM']        = _DTFROM;
			//開始予定時刻
			itemDataList['TMFROM']        = tln_com_lcut(_TMFROM,5);
			//完了予定日
			itemDataList['DTTHRU']        = _DTTHRU;
			//完了予定時刻
			itemDataList['TMTHRU']        = tln_com_lcut(_TMTHRU,5);

			updateJT030(itemDataList);

		}

		TALON.addMsg( "処理が完了しました" );
		TALON.setIsSuccess(true);

	}

}

execXDMF_JF030_0();






```


