<!-- #include file="../../include.asp" -->

<%
'<!--
'################################################
'	名称	:期末繰越処理
'	作成日	:2009/11/2
'	作成者	:小野
'################################################
'-->
%>

<%
main()
Sub main()
	If Not(SessionCheck()) Then
		Exit Sub
	End If

	Dim Query
	Dim Content
	Dim Content2
	Dim Content3
	Dim Content4

	Dim TmpCnt
	Dim ii
	Dim jj
	Dim KanjyoCD(10)
	Dim KanjyoMeisyo(10)
	Dim TekiyoCD(10)
	Dim Tekiyo(10)
	Dim KarikataKingaku(10)
	Dim KashikataKingaku(10)

	Dim KurikoshiEnshuCD
	Dim Kitakuriyou
	Dim Genkariyou
	Query = "exec SPM演習取得 '" & GB_SystemCD & "', '" & EnshuCD & "'"
	Set Content = OpenQuery(Query)
	If Not(Content.BOF Or Content.EOF) Then
		KurikoshiEnshuCD = Content.Fields("期末繰越先演習CD")
		Kitakuriyou = "" & Content.Fields("寄託倉庫利用")
		Genkariyou = "" & Content.Fields("原価会計利用")
	End If

	Dim FromYmd
	Query = "exec SPM演習取得 '" & GB_SystemCD & "', '" & KurikoshiEnshuCD & "'"
	Set Content = OpenQuery(Query)
	If Not(Content.BOF Or Content.EOF) Then
		FromYmd = Content.Fields("会計開始日")
	End If

	Dim KitakuGaisyaCD
	If Kitakuriyou = "1" Then
		Query = "exec SPM会社取得 '" & GB_SystemCD & "', '" & EnshuCD & "', '" & KaisyaCD & "'"
		Set Content = OpenQuery(Query)
		If Not(Content.BOF Or Content.EOF) Then
			KitakuGaisyaCD = Content.Fields("寄託会社CD")
		End If
	End If


	'アプリケーションロック
	Call Application.Lock()


		Query = "exec SPM演習更新データコピー会社学生繰越 '" & GB_SystemCD & "','" & EnshuCD & "'"
		Query = Query & ", '" & KaisyaCD & "', '" & GB_GakuseiNo & "'"
		Query = Query & ", '" & KurikoshiEnshuCD & "'"
		Set Content = OpenQuery(Query)


		'以下単プロシージャで処理出来ない期末残高繰越処理

		Dim objFS
		Set objFS = CreateObject("Scripting.FileSystemObject")

		'会社一覧ループ(同時同業の場合は生徒会社全てのため)
		Query = "exec SPM会社一覧2 '" & GB_SystemCD & "', '" & EnshuCD & "', '', '', 2"
		Set Content = OpenQuery(Query)
		Do While Not(Content.BOF Or Content.EOF)
			If (GB_EnshuKubun = "P" And Content.Fields("学生番号") = GB_GakuseiNo) Or (GB_EnshuKubun = "G" And Content.Fields("会社CD") = KaisyaCD) Then

				Dim ZaikoFlg

				'商品テンポラリ挿入
				ZaikoFlg = 0
				'コピー元会社の在庫を取得
				Query = "exec SPR入出庫在庫単価 '" & GB_SystemCD & "', '" & EnshuCD & "', '" & Content.Fields("会社CD") & "'"
'				Query = "exec SPR入出庫在庫 '" & GB_SystemCD & "', '" & EnshuCD & "', '" & Content.Fields("会社CD") & "', '" & GB_KaikeiSyuryobi & "'"
				Set Content2 = OpenQuery(Query)
				Do While Not(Content2.BOF Or Content2.EOF)

					If "" & Content2.Fields("在庫数") <> "" And "" & Content2.Fields("在庫数") <> "0" Then

						ZaikoFlg = 1

						Query = "exec SPK繰越商品挿入"
						Query = Query & "  '" & GB_SystemCD & "'"
						Query = Query & ", '" & KurikoshiEnshuCD & "'"	'演習CD
						Query = Query & ", '" & Content.Fields("会社CD") & "'"	'会社CD
						Query = Query & ", 'SS'"	'商品入庫
						Query = Query & ", '" & Content2.Fields("商品CD") & "'"	'商品CD
						Query = Query & ", " & Content2.Fields("在庫数") & ""	'数量
						If "" & Content2.Fields("単価") <> "" Then
							Query = Query & "," & Content2.Fields("単価") & ""	'単価
						Else
							Query = Query & ", null"	'単価
						End If
						Query = Query & ",0"					'受注単価
						Set Content3 = OpenQuery(Query)

						If Kitakuriyou = "1" Then	'商品
							Query = "exec SPD寄託在庫繰越商品挿入 '" & GB_SystemCD & "',"
							Query = Query & " '" & KurikoshiEnshuCD & "'"		'演習CD
							Query = Query & ",'" & Content.Fields("会社CD") & "'"		'会社CD
							Query = Query & ",'" & KitakuGaisyaCD & "'"	'寄託会社CD
							Query = Query & ",''"	'学生番号
							Query = Query & ",'" & Content2.Fields("商品CD") & "'"	'商品CD
							Query = Query & "," & Content2.Fields("在庫数")			'数量
							If "" & Content2.Fields("単価") <> "" Then
								Query = Query & "," & Content2.Fields("単価") & ""	'単価
							Else
								Query = Query & ", null"	'単価
							End If
							Query = Query & ",0"				'運送単価
							Set Content3 = OpenQuery(Query)
						End If

					End If

					Content2.MoveNext
				Loop

				'期首製品は存在出来ない仕様なので強制的に期首商品に含める
				If Genkariyou = "1" Then

					Dim MinusSuryo
					Dim TmpBunsyoNaiyoCD
					Query = "exec SPD製造指図書一覧 '" & GB_SystemCD & "'"
					Query = Query & ", '" & EnshuCD & "'"
					Query = Query & ", '" & Content.Fields("会社CD") & "'"
					Set Content4 = OpenQuery(Query)
					Do While Not(Content4.BOF Or Content4.EOF)
						If TmpBunsyoNaiyoCD <> Content4.Fields("文書内容CD") Then
							TmpBunsyoNaiyoCD = Content4.Fields("文書内容CD")
							MinusSuryo = 0
							'すでに出庫された数量をMinusSuryoに算出する
							If Content4.Fields("製造状況区分") = "MS" Then
								Query = "exec SPD入出庫一覧 '" & GB_SystemCD & "', '" & EnshuCD & "', '" & Content.Fields("会社CD") & "', '" & Content.Fields("会社CD") & "', 'MU'"
								Set Content2 = OpenQuery(Query)
								Do While Not(Content2.BOF Or Content2.EOF)
									'先方書類が当該入庫に該当する出庫の数量をMinusSuryoに算出
									If Content2.Fields("先方文書種類CD") = Content4.Fields("製造状況区分") And Content2.Fields("先方文書内容CD") = Content4.Fields("文書内容CD") Then
										Query = "exec SPD入出庫取得2 '" & GB_SystemCD & "', '" & EnshuCD & "', '" & Content.Fields("会社CD") & "', '" & Content.Fields("会社CD") & "', 'MU', '" & Content2.Fields("文書内容CD") & "'"
										Set Content3 = OpenQuery(Query)
										Do While Not(Content3.BOF Or Content3.EOF)
											MinusSuryo = MinusSuryo + Content3.Fields("数量")
											Content3.MoveNext
										Loop
									End If
									Content2.MoveNext
								Loop

								If (Content4.Fields("商品数量") - MinusSuryo) > 0 Then

									ZaikoFlg = 1

									Query = "exec SPK繰越商品挿入"
									Query = Query & "  '" & GB_SystemCD & "'"
									Query = Query & ", '" & KurikoshiEnshuCD & "'"	'演習CD
									Query = Query & ", '" & Content.Fields("会社CD") & "'"	'会社CD
									Query = Query & ", 'SS'"	'商品入庫
									Query = Query & ", '" & Content4.Fields("商品CD") & "'"	'商品CD
									Query = Query & ", " & Content4.Fields("商品数量") - MinusSuryo & ""	'数量
									If "" & Content4.Fields("商品単価") <> "" Then
										Query = Query & "," & Content4.Fields("商品単価") & ""	'単価
									Else
										Query = Query & ", null"	'単価
									End If
									Query = Query & ",0"					'受注単価
									Set Content3 = OpenQuery(Query)

									If Kitakuriyou = "1" Then	'商品
										Query = "exec SPD寄託在庫繰越商品挿入 '" & GB_SystemCD & "',"
										Query = Query & " '" & KurikoshiEnshuCD & "'"		'演習CD
										Query = Query & ",'" & Content.Fields("会社CD") & "'"		'会社CD
										Query = Query & ",'" & KitakuGaisyaCD & "'"	'寄託会社CD
										Query = Query & ",''"	'学生番号
										Query = Query & ",'" & Content4.Fields("商品CD") & "'"	'商品CD
										Query = Query & ", " & Content4.Fields("商品数量") - MinusSuryo & ""	'数量
										If "" & Content4.Fields("商品単価") <> "" Then
											Query = Query & "," & Content4.Fields("商品単価") & ""	'単価
										Else
											Query = Query & ", null"	'単価
										End If
										Query = Query & ",0"				'運送単価
										Set Content3 = OpenQuery(Query)
									End If

								End If

							End If
						End If
						Content4.MoveNext
					Loop

				End If

				'商品テンポラリから本テーブルに挿入
				If ZaikoFlg = 1 Then

					Query = "exec SPK繰越商品更新"
					Query = Query & "  '" & GB_SystemCD & "'"
					Query = Query & ", '" & KurikoshiEnshuCD & "'"
					Query = Query & ", '" & Content.Fields("会社CD") & "'"
					Query = Query & ", 'SS'"	'商品入庫
					Query = Query & ", '" & FromYmd & "'"
					Query = Query & ",''"
					Set Content3 = OpenQuery(Query)

					If Kitakuriyou = "1" Then
						Query = "exec SPD寄託在庫繰越商品更新 '" & GB_SystemCD & "',"
						Query = Query & " '" & KurikoshiEnshuCD & "'"		'演習CD
						Query = Query & ",'" & Content.Fields("会社CD") & "'"		'会社CD
						Query = Query & ",'" & FromYmd & "'"	'寄託会社CD
						Query = Query & ",''"
						Set Content3 = OpenQuery(Query)
					End If

				'繰越商品の入庫を削除(明細はYTMP操作時に空になる)
				Else

					Query = "exec SPK繰越商品削除"
					Query = Query & "  '" & GB_SystemCD & "'"
					Query = Query & ", '" & KurikoshiEnshuCD & "'"
					Query = Query & ", '" & Content.Fields("会社CD") & "'"
					Query = Query & ", 'SS'"	'商品入庫
					Query = Query & ", '" & FromYmd & "'"
					Query = Query & ", ''"
					Set Content3 = OpenQuery(Query)

					If Kitakuriyou = "1" Then
						Query = "exec SPD寄託在庫繰越商品削除 '" & GB_SystemCD & "',"
						Query = Query & " '" & KurikoshiEnshuCD & "'"		'演習CD
						Query = Query & ",'" & Content.Fields("会社CD") & "'"		'会社CD
						Query = Query & ",'" & FromYmd & "'"
						Query = Query & ",''"
						Set Content3 = OpenQuery(Query)
					End If

				End If


				'材料
				If Genkariyou = "1" Then

					ZaikoFlg = 0
					'コピー元会社の在庫を取得
					Query = "exec SPR材料入出庫在庫単価 '" & GB_SystemCD & "', '" & EnshuCD & "', '" & Content.Fields("会社CD") & "'"
					Set Content2 = OpenQuery(Query)
					Do While Not(Content2.BOF Or Content2.EOF)

						If "" & Content2.Fields("在庫数") <> "" And "" & Content2.Fields("在庫数") <> "0" Then

							ZaikoFlg = 1

							Query = "exec SPK繰越商品挿入"
							Query = Query & "  '" & GB_SystemCD & "'"
							Query = Query & ", '" & KurikoshiEnshuCD & "'"	'演習CD
							Query = Query & ", '" & Content.Fields("会社CD") & "'"	'会社CD
							Query = Query & ", 'ZS'"	'材料入庫
							Query = Query & ", '" & Content2.Fields("商品CD") & "'"	'商品CD
							Query = Query & ", " & Content2.Fields("在庫数") & ""	'数量
							If "" & Content2.Fields("単価") <> "" Then
								Query = Query & "," & Content2.Fields("単価") & ""	'単価
							Else
								Query = Query & ", null"	'単価
							End If
							Query = Query & ",0"					'受注単価
							Set Content3 = OpenQuery(Query)

						End If

						Content2.MoveNext
					Loop

					If ZaikoFlg = 1 Then

						Query = "exec SPK繰越商品更新"
						Query = Query & "  '" & GB_SystemCD & "'"
						Query = Query & ", '" & KurikoshiEnshuCD & "'"
						Query = Query & ", '" & Content.Fields("会社CD") & "'"
						Query = Query & ", 'ZS'"	'材料入庫
						Query = Query & ", '" & FromYmd & "'"
						Query = Query & ",''"
						Set Content3 = OpenQuery(Query)

					'繰越商品の入庫を削除(明細はYTMP操作時に空になる)
					Else

						Query = "exec SPK繰越商品削除"
						Query = Query & "  '" & GB_SystemCD & "'"
						Query = Query & ", '" & KurikoshiEnshuCD & "'"
						Query = Query & ", '" & Content.Fields("会社CD") & "'"
						Query = Query & ", 'ZS'"	'材料入庫
						Query = Query & ", '" & FromYmd & "'"
						Query = Query & ", ''"
						Set Content3 = OpenQuery(Query)

					End If

				End If



				'仕訳残高(商社・銀行・製造部)
				Dim EndCnt
				EndCnt = 1
				If Genkariyou = "1" And GB_GyosyuKubun = "S" Then
					EndCnt = 2
				End If
				For TmpCnt = 1 To EndCnt

					Dim ShiwakeFlg
					ShiwakeFlg = 0
					jj = 0
					Dim TmpGyoshu
					TmpGyoshu = GB_GyosyuKubun
					If TmpCnt = 2 Then
						TmpGyoshu = "G"	'製造部
					End If
					Query = "exec SPK自動転記帳簿_合計残高試算表照会 '" & GB_SystemCD & "', '" & EnshuCD & "', '" & Content.Fields("会社CD") & "', '" & GB_KaikeiKaishibi & "', '" & GB_KaikeiSyuryobi & "', 11, '" & TmpGyoshu & "'"
					Set Content2 = OpenQuery(Query)
					Do While Not(Content2.BOF Or Content2.EOF)

						If "" & Content2.Fields("借方残高") <> "0" Or "" & Content2.Fields("貸方残高") <> "0" Then

							ShiwakeFlg = 1

							If jj = 10 Then
								jj = 1
							Else 
								jj = jj + 1
							End If

							'1~9回目までは代入のみ
							KanjyoCD(jj) = Content2.Fields("勘定CD")
							KanjyoMeisyo(jj) = Content2.Fields("勘定名称")
							TekiyoCD(jj) = ""
							Tekiyo(jj) = ""
							KarikataKingaku(jj) = Content2.Fields("借方残高")
							If KarikataKingaku(jj) = 0 Then
								KarikataKingaku(jj) = "null"
							End If
							KashikataKingaku(jj) = Content2.Fields("貸方残高")
							If KashikataKingaku(jj) = 0 Then
								KashikataKingaku(jj) = "null"
							End If

							'10回目に挿入
							If jj = 10 Then
								Query = "exec SPK繰越残高設定挿入10 '" & GB_SystemCD & "', '" & KurikoshiEnshuCD & "', '" & Content.Fields("会社CD") & "'"
								If TmpGyoshu = "G" Then
									Query = Query & ", 'D8'"	'製造部振替伝票
								Else
									Query = Query & ", 'D5'"	'振替伝票
								End If
								Query = Query & ", " & jj	'行数
								For ii = 1 To jj
									Query = Query & ", '" & KanjyoCD(ii) & "'"
									Query = Query & ", '" & TekiyoCD(ii) & "'"
									Query = Query & ", '" & Tekiyo(ii) & "'"
									Query = Query & ",  " & KarikataKingaku(ii)
									Query = Query & ",  " & KashikataKingaku(ii)
								Next
								For ii = jj + 1 To 10	'余りは埋めないと例外エラーになる。プロシージャ側で無視されるので何でも良い。
									Query = Query & ", '" & KanjyoCD(ii) & "'"
									Query = Query & ", '" & TekiyoCD(ii) & "'"
									Query = Query & ", '" & Tekiyo(ii) & "'"
									Query = Query & ", null"
									Query = Query & ", null"
								Next
								Set Content3 = OpenQuery(Query)
							End If

						End If

						Content2.MoveNext
					Loop

					'ループアウト時に端数があれば此処で処理
					If jj < 10 Then
						Query = "exec SPK繰越残高設定挿入10 '" & GB_SystemCD & "', '" & KurikoshiEnshuCD & "', '" & Content.Fields("会社CD") & "'"
						If TmpGyoshu = "G" Then
							Query = Query & ", 'D8'"	'製造部振替伝票
						Else
							Query = Query & ", 'D5'"	'振替伝票
						End If
						Query = Query & ", " & jj	'行数
						For ii = 1 To jj
							Query = Query & ", '" & KanjyoCD(ii) & "'"
							Query = Query & ", '" & TekiyoCD(ii) & "'"
							Query = Query & ", '" & Tekiyo(ii) & "'"
							Query = Query & ",  " & KarikataKingaku(ii)
							Query = Query & ",  " & KashikataKingaku(ii)
						Next
						For ii = jj + 1 To 10	'余りは埋めないと例外エラーになる。プロシージャ側で無視されるので何でも良い。
							Query = Query & ", '" & KanjyoCD(ii) & "'"
							Query = Query & ", '" & TekiyoCD(ii) & "'"
							Query = Query & ", '" & Tekiyo(ii) & "'"
							Query = Query & ", null"
							Query = Query & ", null"
						Next
						Set Content3 = OpenQuery(Query)
					End If

					If ShiwakeFlg = 1 Then
						Query = "exec SPK繰越残高設定更新 '" & GB_SystemCD & "',"
						Query = Query & "  '" & KurikoshiEnshuCD & "'"
						Query = Query & ", '" & Content.Fields("会社CD") & "'"
						If TmpGyoshu = "G" Then
							Query = Query & ", 'D8'"	'製造部振替伝票
						Else
							Query = Query & ", 'D5'"	'振替伝票
						End If
						Query = Query & ", '" & FromYmd & "'"
						Query = Query & ", ''"
						Set Content3 = OpenQuery(Query)

						Query = "exec SPM記帳チェック挿入伝票 '" & GB_SystemCD & "',"
						Query = Query & " '" & KurikoshiEnshuCD & "',"
						Query = Query & " '" & Content.Fields("会社CD") & "'"
						Set Content3 = OpenQuery(Query)
					End If

				Next


				'ポータルサイト画像
				If Not(objFS.FolderExists(Server.MapPath(FPortal & "/" & KurikoshiEnshuCD))) Then
					objFS.CreateFolder(Server.MapPath(FPortal & "/" & KurikoshiEnshuCD))
				End If
				If objFS.FolderExists(Server.MapPath(FPortal & "/" & EnshuCD & "/" & Content.Fields("会社CD"))) Then
					objFS.CopyFolder Server.MapPath(FPortal & "/" & EnshuCD & "/" & Content.Fields("会社CD")), Server.MapPath(FPortal & "/" & KurikoshiEnshuCD & "/" & Content.Fields("会社CD")), True
				End If


			End If
			Content.MoveNext
		Loop


		'商品画像(演習一括処理)
		If objFS.FolderExists(Server.MapPath(Fgoods & "/" & EnshuCD)) Then
			objFS.CopyFolder Server.MapPath(Fgoods & "/" & EnshuCD), Server.MapPath(Fgoods & "/" & KurikoshiEnshuCD), True
		End If

		'名刺画像(演習一括処理)
		Dim MeishiDir
		MeishiDir = "/" & HomeAlias & "/data/meishi"
		If objFS.FolderExists(Server.MapPath(MeishiDir)) Then
			Dim objFolder
			Set objFolder = objFS.GetFolder(Server.MapPath(MeishiDir))
			Dim FileName
			For Each FileName In objFolder.Files
				Dim FileNameAry
				FileNameAry = Split(FileName.Name, "_~_")
				If UBound(FileNameAry) = 3 Then
					If FileNameAry(0) = EnshuCD And ((GB_EnshuKubun = "G" And FileNameAry(1) = KaisyaCD) Or (GB_EnshuKubun = "P" And FileNameAry(2) = GB_GakuseiNo)) Then
						objFS.CopyFile Server.MapPath(MeishiDir & "/" & FileName.Name), Server.MapPath(MeishiDir & "/" & KurikoshiEnshuCD & Mid(FileName.Name, Len(EnshuCD) + 1)), True
					End If
				ElseIf UBound(FileNameAry) = 2 Then	'旧ファイル名仕様
					If FileNameAry(0) = EnshuCD And ((GB_EnshuKubun = "G" And FileNameAry(1) = KaisyaCD) Or (GB_EnshuKubun = "P" And Right(FileNameAry(1), Len(GB_GakuseiNo) + 1) = "-" & GB_GakuseiNo)) Then
						objFS.CopyFile Server.MapPath(MeishiDir & "/" & FileName.Name), Server.MapPath(MeishiDir & "/" & KurikoshiEnshuCD & Mid(FileName.Name, Len(EnshuCD) + 1)), True
					End If
				End If
			Next
		End If


	Call Application.Unlock()


	'繰越先演習にオートログイン
	Response.Redirect("../default_bin.asp?AutoLogin=1&EnshuCD=" & KurikoshiEnshuCD & "&AutoLoginKaisyaCD=" & KaisyaCD & "&Kurikoshi=1")


End Sub
%>