%
' 履歴 :2012/10/17 小野 材料元帳モードを新設
Function HojyoboSyohinAridakatyo(EnshuCD, KaisyaCD, SakuseiKaisyaCD, BunsyoSyuruiCD, BunsyoNaiyoCD, AutoFlg, PrintFlg, Param1, Param2, Param3)
Dim SyohinCD
SyohinCD = BunsyoNaiyoCD
Dim ShohinMenu
ShohinMenu = 1
Dim RowBreakNum, RowCount
Dim Page,Dummy
RowCount = 0
If PrintFlg = 1 Then
RowBreakNum = 40
Else
RowBreakNum = MaxRowBreakNum
MaxPage = 1
End If
Dim DbKarikataKingakuTotal
Dim DbKashikataKingakuTotal
DbKarikataKingakuTotal = 0
DbKashikataKingakuTotal = 0
Dim KaikeiKaishibi, KaikeiSyuryobi
Query = "exec SPM演習取得 '" & GB_SystemCD & "','" & EnshuCD & "'"
Set Content = OpenQuery(Query)
If Not(Content.BOF Or Content.EOF) Then
KaikeiKaishibi = SetTimeYYYYMMDD(Content.Fields("会計開始日"))
KaikeiSyuryobi = SetTimeYYYYMMDD(Content.Fields("会計終了日"))
End If
If Param1 <> "" Then
KaikeiSyuryobi = Param1
End If
'記帳の有無を確認するフラグ(照会集計画面用)
Dim KichoFlg
Set KichoFlg = Server.CreateObject("Scripting.Dictionary")
Dim PageType
Dim Label
If AutoFlg = 1 Then
Query = "exec SPR入出庫在庫明細 '" & GB_SystemCD & "','" & EnshuCD & "', '" & KaisyaCD & "','" & SyohinCD & "','" & KaikeiSyuryobi & "'"
If Param2 = "Zairyo" Then
PageType = "材料在庫"
Label = "材料"
ElseIf Param2 = "Seihin" Then
PageType = "製品在庫"
Label = "商品"
ElseIf Param2 = "Shiwake" Then
'記帳の有無を確認するフラグ(照会集計画面用)
Query = ""
Query = Query & " "
Query = Query & " SELECT 商品CD, COUNT(商品CD) AS 記帳数 "
Query = Query & " FROM TSK伝票仕入売上明細F "
Query = Query & " WHERE システムCD = '" & GB_SystemCD & "' AND 演習CD = '" & EnshuCD & "' AND 会社CD = '" & GB_KaisyaCD & "' "
Query = Query & " GROUP BY 商品CD "
Query = Query & " "
Set Content = OpenQuery(Query)
Do While Not(Content.BOF Or Content.EOF)
' 引数は確実に文字列指定しないとダメ
KichoFlg("" & Content.Fields("商品CD")) = "" & Content.Fields("記帳数")
Content.MoveNext
Loop
Query = "exec SPR入出庫在庫明細仕入売上伝票 '" & GB_SystemCD & "','" & EnshuCD & "', '" & KaisyaCD & "','" & SyohinCD & "','" & KaikeiSyuryobi & "'"
PageType = "商品有高帳(自動)"
Label = "商品"
Else
PageType = "商品在庫"
Label = "商品"
ShohinMenu = 0
End If
Else
If Param2 = "Zairyo" Then
'記帳の有無を確認するフラグ(照会集計画面用)
Query = ""
Query = Query & " "
Query = Query & " SELECT 材料CD, COUNT(材料元帳CD) AS 記帳数 "
Query = Query & " FROM TSK補助簿_材料元帳F "
Query = Query & " WHERE システムCD = '" & GB_SystemCD & "' AND 演習CD = '" & EnshuCD & "' AND 会社CD = '" & GB_KaisyaCD & "' "
Query = Query & " GROUP BY 材料CD "
Query = Query & " "
Set Content = OpenQuery(Query)
Do While Not(Content.BOF Or Content.EOF)
' 引数は確実に文字列指定しないとダメ
KichoFlg("" & Content.Fields("材料CD")) = "" & Content.Fields("記帳数")
Content.MoveNext
Loop
Query = "exec SPK補助簿_材料元帳取得 '" & GB_SystemCD & "','" & EnshuCD & "', '" & KaisyaCD & "','" & SyohinCD & "'"
PageType = "材料元帳"
Label = "材料"
Else'If Param2 = "Seihin" Then
'記帳の有無を確認するフラグ(照会集計画面用)
Query = ""
Query = Query & " "
Query = Query & " SELECT 商品CD, COUNT(商品有高帳CD) AS 記帳数 "
Query = Query & " FROM TSK補助簿_商品有高帳F "
Query = Query & " WHERE システムCD = '" & GB_SystemCD & "' AND 演習CD = '" & EnshuCD & "' AND 会社CD = '" & GB_KaisyaCD & "' "
Query = Query & " GROUP BY 商品CD "
Query = Query & " "
Set Content = OpenQuery(Query)
Do While Not(Content.BOF Or Content.EOF)
' 引数は確実に文字列指定しないとダメ
KichoFlg("" & Content.Fields("商品CD")) = "" & Content.Fields("記帳数")
Content.MoveNext
Loop
Query = "exec SPK補助簿_商品有高帳取得 '" & GB_SystemCD & "','" & EnshuCD & "', '" & KaisyaCD & "','" & SyohinCD & "'"
PageType = "商品有高帳"
Label = "商品"
End If
End If
'Response.Write(Query)
'Exit Function
Set Content = OpenQuery(Query)
Dim KeisanHoho
Dim Tani
Dim Query, Content
Dim Query1, Content1
If AutoFlg = 0 Then
If Not(Content.BOF Or Content.EOF) Then
KeisanHoho = Content.Fields("" & PageType & "計算区分")
Tani = Content.Fields("単位")
End If
Else
Query1 = "exec SPM" & Label & "取得 '" & GB_SystemCD & "','" & EnshuCD & "','" & SyohinCD & "'"
Set Content1 = OpenQuery(Query1)
If Not(Content1.BOF Or Content1.EOF) Then
Tani = Content1.Fields("単位")
End If
If BunsyoSyuruiCD = "MJ" Then
KeisanHoho = "IH"
ElseIf BunsyoSyuruiCD = "MK" Then
KeisanHoho = "SH"
Else
KeisanHoho = "SS"
End If
End If
Dim MyTable()
ReDim MyTable(15, 0)
Dim ii, jj ,kk
ii = 0
'総平均算出用
Dim SoNyukoSu, SoNyukoGaku
SoNyukoSu = 0
SoNyukoGaku = 0
' 総平均法を追加(140220)
If BunsyoSyuruiCD = "MJ" Or BunsyoSyuruiCD = "MK" Or AutoFlg = 0 Then '06/06/28
Dim TmpHaraidashiTanka
TmpHaraidashiTanka = 0
Do While Not(Content.BOF Or Content.EOF)
Dim JogaiFlg
JogaiFlg = False
If AutoFlg = 1 Then
JogaiFlg = True
'区分ごとに取捨選択
If (Param2 = "Shikakari" And (Content.fields("文書種類CD") = "PS" Or Content.fields("文書種類CD") = "PU")) _
Or (Param2 = "Seihin" And (Content.fields("文書種類CD") = "MS" Or Content.fields("文書種類CD") = "MU")) _
Or (Param2 = "Zairyo" And (Content.fields("文書種類CD") = "ZS" Or Content.fields("文書種類CD") = "ZU")) _
Or (Param2 <> "Shikakari" And Param2 <> "Seihin" And Param2 <> "Zairyo" And Content.fields("文書種類CD") <> "PS" And Content.fields("文書種類CD") <> "PU" And Content.fields("文書種類CD") <> "MS" And Content.fields("文書種類CD") <> "MU" And Content.fields("文書種類CD") <> "YS" And Content.fields("文書種類CD") <> "YU" And Content.fields("文書種類CD") <> "ZS" And Content.fields("文書種類CD") <> "ZU") Then
JogaiFlg = False
End If
End If
If Not(JogaiFlg) Then
ii = ii + 1
'移動平均法の場合の処理はここで行います。2006/06/27 By Hamada
Dim SyohinAridakatyoCD, Torihikibi,TorihikisakiMeisyo
Dim UkebaraiKubun, UkeireSuryo, UkeireTanka, UkeireKingaku
Dim HaraidashiSuryo, HaraidashiTanka, HaraidashiKingaku
Dim ZandakaSuryo, ZandakaTanka, ZandakaKingaku
Dim bOriginal
If AutoFlg = 0 Then
'Dummy = "あれ"
Torihikibi = SetTimeYYYYMMDD(Content.Fields("取引日"))
KeisanHoho = Content.Fields("" & PageType & "計算区分")
UkebaraiKubun = Content.Fields("受払区分名称")
UkeireSuryo = Content.Fields("受入数量")
UkeireTanka = Content.Fields("受入単価")
UkeireKingaku = Content.Fields("受入金額")
HaraidashiSuryo = Content.Fields("払出数量")
HaraidashiTanka = Content.Fields("払出単価")
HaraidashiKingaku = Content.Fields("払出金額")
ZandakaSuryo = Content.Fields("残高数量")
ZandakaTanka = Content.Fields("残高単価")
ZandakaKingaku = Content.Fields("残高金額")
Else
'Dummy = "これ"
Torihikibi = SetTimeMMDD(Content.Fields("処理日"))
Select Case Content.fields("文書種類CD")
Case "PS" '仕掛品入庫
If Content.fields("文書内容CD") = 0 Then
UkebaraiKubun = "前期繰越"
Else
UkebaraiKubun = "入庫"
End If
UkeireSuryo = Content.fields("数量")
UkeireTanka = Content.fields("単価")
HaraidashiSuryo = 0
HaraidashiTanka = 0
'総平均算出用
SoNyukoSu = SoNyukoSu + UkeireSuryo
SoNyukoGaku = SoNyukoGaku + (UkeireTanka * UkeireSuryo)
Case "PU" '仕掛品出庫
UkebaraiKubun = "出庫"
UkeireSuryo = 0
UkeireTanka = 0
HaraidashiSuryo = Content.fields("数量")
HaraidashiTanka = Content.fields("単価")
Case "MS" '製品入庫
If Content.fields("文書内容CD") = 0 Then
UkebaraiKubun = "前期繰越"
Else
UkebaraiKubun = "入庫"
End If
UkeireSuryo = Content.fields("数量")
UkeireTanka = Content.fields("単価")
HaraidashiSuryo = 0
HaraidashiTanka = 0
'総平均算出用
SoNyukoSu = SoNyukoSu + UkeireSuryo
SoNyukoGaku = SoNyukoGaku + (UkeireTanka * UkeireSuryo)
Case "MU" '製品出庫
UkebaraiKubun = "出庫"
UkeireSuryo = 0
UkeireTanka = 0
HaraidashiSuryo = Content.fields("数量")
HaraidashiTanka = Content.fields("単価")
Case "ZS" '材料入庫
If Content.fields("文書内容CD") = 0 Then
UkebaraiKubun = "前期繰越"
Else
UkebaraiKubun = "入庫"
End If
UkeireSuryo = Content.fields("数量")
UkeireTanka = Content.fields("単価")
HaraidashiSuryo = 0
HaraidashiTanka = 0
'総平均算出用
SoNyukoSu = SoNyukoSu + UkeireSuryo
SoNyukoGaku = SoNyukoGaku + (UkeireTanka * UkeireSuryo)
Case "ZU" '材料出庫
UkebaraiKubun = "出庫"
UkeireSuryo = 0
UkeireTanka = 0
HaraidashiSuryo = Content.fields("数量")
HaraidashiTanka = Content.fields("単価")
Case "SC" 'オ商入庫
UkebaraiKubun = "オ商入庫"
UkeireSuryo = Content.fields("数量")
UkeireTanka = Content.fields("単価")
HaraidashiSuryo = 0
HaraidashiTanka = 0
bOriginal = 1
'総平均算出用
SoNyukoSu = SoNyukoSu + UkeireSuryo
SoNyukoGaku = SoNyukoGaku + (UkeireTanka * UkeireSuryo)
Case "SS" '仕入入庫
If Content.fields("文書内容CD") = 0 Then
UkebaraiKubun = "前期繰越"
Else
UkebaraiKubun = "仕入"
End If
UkeireSuryo = Content.fields("数量")
UkeireTanka = Content.fields("単価")
HaraidashiSuryo = 0
HaraidashiTanka = 0
'総平均算出用
SoNyukoSu = SoNyukoSu + UkeireSuryo
SoNyukoGaku = SoNyukoGaku + (UkeireTanka * UkeireSuryo)
Case "SU" '売上出庫
UkebaraiKubun = "売上"
UkeireSuryo = 0
UkeireTanka = 0
HaraidashiSuryo = Content.fields("数量")
HaraidashiTanka = ZandakaTanka 'Content.fields("単価")
If HaraidashiTanka = 0 Then
HaraidashiTanka = TmpHaraidashiTanka
End If
TmpHaraidashiTanka = HaraidashiTanka
Case "SX" '仕入返品
UkebaraiKubun = "仕入返品"
UkeireSuryo = 0
UkeireTanka = 0
HaraidashiSuryo = Content.fields("数量")
HaraidashiTanka = Content.fields("単価")
TmpHaraidashiTanka = HaraidashiTanka
Case "SY" '売上返品
UkebaraiKubun = "売上返品"
UkeireSuryo = Content.fields("数量")
UkeireTanka = ZandakaTanka 'Content.fields("単価")
If UkeireTanka = 0 Then
UkeireTanka = TmpHaraidashiTanka
End If
HaraidashiSuryo = 0
HaraidashiTanka = 0
'総平均算出用
SoNyukoSu = SoNyukoSu + UkeireSuryo
SoNyukoGaku = SoNyukoGaku + (UkeireTanka * UkeireSuryo)
Case Else
UkebaraiKubun = "その他"
UkeireSuryo = Content.fields("数量")
UkeireTanka = Content.fields("単価")
HaraidashiSuryo = Content.fields("数量")
HaraidashiTanka = Content.fields("単価")
'総平均算出用
If UkeireSuryo > 0 Then
SoNyukoSu = SoNyukoSu + UkeireSuryo
If UkeireTanka > 0 Then
SoNyukoGaku = SoNyukoGaku + (UkeireTanka * UkeireSuryo)
End If
End If
End Select
If IsNull(UkeireSuryo) Or UkeireSuryo="" Then
UkeireSuryo = 0
End If
If IsNull(UkeireTanka) Or UkeireTanka="" Then
UkeireTanka = 0
End If
If IsNull(HaraidashiSuryo) Or HaraidashiSuryo="" Then
HaraidashiSuryo = 0
End If
If IsNull(HaraidashiTanka) Or HaraidashiTanka="" Then
HaraidashiTanka = 0
End If
UkeireKingaku = UkeireSuryo * UkeireTanka
HaraidashiKingaku = HaraidashiSuryo * HaraidashiTanka
ZandakaSuryo = ZandakaSuryo + UkeireSuryo - HaraidashiSuryo
If ZandakaSuryo >= 0 Then
ZandakaKingaku = ZandakaKingaku + UkeireKingaku - HaraidashiKingaku
If ZandakaSuryo <> 0 Then
ZandakaTanka = Clng(ZandakaKingaku / ZandakaSuryo)
Else
ZandakaTanka = 0
End If
ZandakaKingaku = ZandakaTanka * ZandakaSuryo
Else '在庫がマイナスになった場合は仕入単価が存在しないので便宜上払出単価を仕入単価とする
ZandakaTanka = Content.Fields("単価")
ZandakaKingaku = ZandakaTanka * ZandakaSuryo
End If
End If
TorihikisakiMeisyo = Content.Fields("取引先名称")
'小売販売
If UCase(Content.Fields("取引先CD")) = "SJ4KOURIHANBAI" Then
TorihikisakiMeisyo = ConvKaisyaRyakuMeisyo(Content.Fields("取引先CD"))
'製造部
ElseIf UCase(Content.Fields("取引先CD")) = "SJ4SEIZOZIES" Then
TorihikisakiMeisyo = ConvKaisyaRyakuMeisyo(Content.Fields("取引先CD"))
End If
ReDim Preserve MyTable(15, ii)
MyTable(1, ii) = Torihikibi
MyTable(2, ii) = UkebaraiKubun
MyTable(3, ii) = TorihikisakiMeisyo
MyTable(4, ii) = UkeireSuryo
MyTable(5, ii) = UkeireTanka
MyTable(6, ii) = UkeireKingaku
MyTable(7, ii) = HaraidashiSuryo
MyTable(8, ii) = HaraidashiTanka
MyTable(9, ii) = HaraidashiKingaku
MyTable(10, ii) = ZandakaSuryo
If ZandakaSuryo = 0 Then '表示のバグ修正 BY HAMADA 06/06/27
MyTable(11, ii) = HaraidashiTanka
Else
MyTable(11, ii) = ZandakaTanka
End If
MyTable(12, ii) = ZandakaKingaku
'複数行時括弧付加処理
If ii > 1 Then
If MyTable(1, ii) = "" And MyTable(1, ii - 1) <> "" Then
'取引日がNULLかつ直前行がNULLでなければ直前行をtopにする
MyTable(15, ii - 1) = "top"
'自行をmidにする
MyTable(15, ii) = "mid"
End If
If MyTable(1, ii) = "" And MyTable(15, ii - 1) = "mid" Then
'取引日がNULLかつ直前行がmidなら同じくmidにする
MyTable(15, ii - 1) = "mid"
'自行をmidにする
MyTable(15, ii) = "mid"
End If
If MyTable(1, ii) <> "" And MyTable(15, ii - 1) = "mid" Then
'取引日が存在していて直前行がmidなら直前行をbotに変更する
MyTable(15, ii - 1) = "bot"
End If
End If
'Exit Function
End If
Content.MoveNext
Loop
'複数行時括弧付加処理(最終行のみ)
If ii > 1 Then
If MyTable(15, ii - 1) = "top" Or MyTable(15, ii - 1) = "mid" Then
'直前行がtopかmidなら最終行をbotに変更する
MyTable(15, ii) = "bot"
End If
End If
'総平均法の場合は払出単価・金額及び最終行以外の残高単価・金額をNULLにする
If AutoFlg = 1 And BunsyoSyuruiCD = "MK" Then
For ii = 1 To Ubound(MyTable, 2)
MyTable(8, ii) = null
MyTable(9, ii) = null
MyTable(11, ii) = null
MyTable(12, ii) = null
If ii = Ubound(MyTable, 2) Then
'最終行の残高は総平均計算(単価・残高個別端数処理)
If SoNyukoSu > 0 And SoNyukoGaku > 0 Then
'総入庫金額を総入庫数で割ったのが平均単価
MyTable(11, ii) = Fix(SoNyukoGaku / SoNyukoSu)
'MyTable(12, ii) = MyTable(10, ii) * MyTable(11, ii) '平均単価で端数処理をしてから乗算すると誤差が大きくなるのでダメ
MyTable(12, ii) = Fix(MyTable(10, ii) * (SoNyukoGaku / SoNyukoSu))
End If
End If
Next
End If
Else
'仕入単位の在庫配列
Dim ShiireTanka() '仕入単価
Dim ZaikoSuryo() '入出庫によって増減する数量
Dim MotoSuryo() '仕入時の数量(売上返品を受けられる上限数量として必要)
Dim iii
iii = 0
Dim jjj
Dim zzz
Dim MinusSuryo
Dim PlusSuryo
Dim KaigyoFlg
KaigyoFlg = 0
Dim StyleStr
Dim Zaikos()
ReDim Zaikos(9, 0)
Dim mm
mm = 0
Dim Gyosu
Dim TmpGyosu
Dim TmpMyTable
ReDim TmpMyTable(3,0)
Dim nn
Dim Tmpmm
Dim UkeireGyosu
Dim HaraidashiGyosu
Dim ZandakaGyosu
Dim SentoFlg
Do While Not(Content.BOF Or Content.EOF)
'区分ごとに取捨選択
If (Param2 = "Shikakari" And (Content.fields("文書種類CD") = "PS" Or Content.fields("文書種類CD") = "PU")) _
Or (Param2 = "Seihin" And (Content.fields("文書種類CD") = "MS" Or Content.fields("文書種類CD") = "MU")) _
Or (Param2 = "Zairyo" And (Content.fields("文書種類CD") = "ZS" Or Content.fields("文書種類CD") = "ZU")) _
Or (Param2 <> "Shikakari" And Param2 <> "Seihin" And Param2 <> "Zairyo" And Content.fields("文書種類CD") <> "PS" And Content.fields("文書種類CD") <> "PU" And Content.fields("文書種類CD") <> "MS" And Content.fields("文書種類CD") <> "MU" And Content.fields("文書種類CD") <> "YS" And Content.fields("文書種類CD") <> "YU" And Content.fields("文書種類CD") <> "ZS" And Content.fields("文書種類CD") <> "ZU") Then
Gyosu = 0
TmpGyosu = 0
Dim TankaA, SuryoA
Dim PlusMinus, TargetSell
RowCount = RowCount + 1
TankaA = Content.fields("単価")
SuryoA = Content.fields("数量")
Select Case Content.fields("文書種類CD")
Case "YS" '材料仕掛品入庫
If Content.fields("文書内容CD") = 0 Then
UkebaraiKubun = "前期繰越"
Else
UkebaraiKubun = "入庫"
End If
PlusMinus = 1
TargetSell = 4
Case "YU" '材料仕掛品出庫
UkebaraiKubun = "出庫"
PlusMinus = -1
TargetSell = 5
Case "PS" '仕掛品入庫
If Content.fields("文書内容CD") = 0 Then
UkebaraiKubun = "前期繰越"
Else
UkebaraiKubun = "入庫"
End If
PlusMinus = 1
TargetSell = 4
Case "PU" '仕掛品出庫
UkebaraiKubun = "出庫"
PlusMinus = -1
TargetSell = 5
Case "MS" '製品入庫
If Content.fields("文書内容CD") = 0 Then
UkebaraiKubun = "前期繰越"
Else
UkebaraiKubun = "入庫"
End If
PlusMinus = 1
TargetSell = 4
Case "MU" '製品出庫
UkebaraiKubun = "出庫"
PlusMinus = -1
TargetSell = 5
Case "ZS" '材料入庫
If Content.fields("文書内容CD") = 0 Then
UkebaraiKubun = "前期繰越"
Else
UkebaraiKubun = "入庫"
End If
PlusMinus = 1
TargetSell = 4
Case "ZU" '材料出庫
UkebaraiKubun = "出庫"
PlusMinus = -1
TargetSell = 5
Case "SC" 'オ商入庫
UkebaraiKubun = "オ商入庫"
PlusMinus = 1
TargetSell = 4
bOriginal = 1
Case "SS" '仕入入庫
If Content.fields("文書内容CD") = 0 Then
UkebaraiKubun = "前期繰越"
Else
UkebaraiKubun = "仕入"
End If
PlusMinus = 1
TargetSell = 4
Case "SU" '売上出庫
UkebaraiKubun = "売上"
PlusMinus = -1
TargetSell = 5
Case "SX" '仕入返品
UkebaraiKubun = "仕入返品"
PlusMinus = -1
TargetSell = 5
Case "SY" '売上返品
UkebaraiKubun = "売上返品"
PlusMinus = 1
TargetSell = 4
Case Else
UkebaraiKubun = "その他"
PlusMinus = 1
TargetSell = 4
End Select
StyleStr = "style=""border-style: solid solid none solid;"""
'ヘッダ出力処理
mm = mm + 1
ReDim Preserve MyTable(15, mm)
MyTable(1, mm) = SetTimeYYYYMMDD(Content.fields("処理日"))
MyTable(2, mm) = UkebaraiKubun
MyTable(3, mm) = Content.fields("取引先名称")
'小売販売・製造部
If UCase(Content.Fields("取引先CD")) = "SJ4KOURIHANBAI" Then
MyTable(3, mm) = ConvKaisyaRyakuMeisyo(Content.Fields("取引先CD"))
'製品入庫
ElseIf Content.fields("文書種類CD") = "MS" Then
MyTable(3, mm) = "製造部門"
'製品出庫
ElseIf Content.fields("文書種類CD") = "MU" Then
MyTable(3, mm) = "商社部門"
ElseIf UCase(Content.Fields("取引先CD")) = "SJ4SEIZOZIES" Then
MyTable(3, mm) = ConvKaisyaRyakuMeisyo(Content.Fields("取引先CD"))
End If
'内訳出力処理
'仕入・オ商仕入・材料入庫・仕掛品入庫・製品入庫
If Content.fields("文書種類CD") = "SS" Or Content.fields("文書種類CD") = "SC" Or Content.fields("文書種類CD") = "ZS" Or Content.fields("文書種類CD") = "PS" Or Content.fields("文書種類CD") = "MS" Then
'先入在庫配列作成
UkeireGyosu = 1
If iii > 0 Then
'仕入単価が直前配列と同じなら新規配列を作らず直前配列に加算する
If ShiireTanka(iii) = Content.fields("単価") Then
ZaikoSuryo(iii) = ZaikoSuryo(iii) + Content.fields("数量")
MotoSuryo(iii) = MotoSuryo(iii) + Content.fields("数量")
Else
iii = iii + 1
ReDim Preserve ShiireTanka(iii)
ReDim Preserve ZaikoSuryo(iii)
ReDim Preserve MotoSuryo(iii)
ShiireTanka(iii) = Content.fields("単価")
ZaikoSuryo(iii) = Content.fields("数量")
MotoSuryo(iii) = Content.fields("数量")
End If
Else
iii = iii + 1
ReDim Preserve ShiireTanka(iii)
ReDim Preserve ZaikoSuryo(iii)
ReDim Preserve MotoSuryo(iii)
ShiireTanka(iii) = Content.fields("単価")
ZaikoSuryo(iii) = Content.fields("数量")
MotoSuryo(iii) = Content.fields("数量")
End If
'出力処理
MyTable(4, mm) = Content.fields("数量")
MyTable(5, mm) = Content.fields("単価")
MyTable(6, mm) = Content.fields("数量") * Content.fields("単価")
'残高行出力処理
KaigyoFlg = 0
For zzz = 1 To iii
If ZaikoSuryo(zzz) <> 0 Then
If KaigyoFlg > 0 Then
mm = mm + 1
ReDim Preserve MyTable(15, mm)
End If
MyTable(10, mm) = ZaikoSuryo(zzz)
MyTable(11, mm) = ShiireTanka(zzz)
MyTable(12, mm) = ZaikoSuryo(zzz) * ShiireTanka(zzz)
KaigyoFlg = 1
ZandakaGyosu = ZandakaGyosu + 1
End If
Next
'売上・仕入返品・材料出庫・仕掛品出庫・製品出庫
ElseIf Content.fields("文書種類CD") = "SU" Or Content.fields("文書種類CD") = "SX" Or Content.fields("文書種類CD") = "ZU" Or Content.fields("文書種類CD") = "PU" Or Content.fields("文書種類CD") = "MU" Then
MinusSuryo = Content.fields("数量")
KaigyoFlg = 0
'先入在庫配列から先出処理
jjj = 1
Dim LoopCnt
LoopCnt = 1
Do While MinusSuryo > 0 And LoopCnt <= iii '在庫配列の最大番号
jjj = LoopCnt
If Content.fields("文書種類CD") = "SX" Then
'仕入返品は後入れ在庫から払い出すため逆順ループ
jjj = iii + 1 - LoopCnt
End If
If ZaikoSuryo(jjj) <= 0 Then '0以下の在庫配列は無視
ElseIf ZaikoSuryo(jjj) < MinusSuryo Then '在庫配列の方が少ない場合
'出力処理
If KaigyoFlg > 0 Then
mm = mm + 1
ReDim Preserve MyTable(15, mm)
End If
MyTable(7, mm) = ZaikoSuryo(jjj)
MyTable(8, mm) = ShiireTanka(jjj)
MyTable(9, mm) = ZaikoSuryo(jjj) * ShiireTanka(jjj) '差し引いた数×仕入単価
KaigyoFlg = 1
Gyosu = Gyosu + 1
HaraidashiGyosu = HaraidashiGyosu + 1
MinusSuryo = MinusSuryo - ZaikoSuryo(jjj)
ZaikoSuryo(jjj) = 0
Else
'出力処理
If KaigyoFlg > 0 Then
mm = mm + 1
ReDim Preserve MyTable(15, mm)
End If
MyTable(7, mm) = MinusSuryo
MyTable(8, mm) = ShiireTanka(jjj)
MyTable(9, mm) = MinusSuryo * ShiireTanka(jjj)
KaigyoFlg = 1
Gyosu = Gyosu + 1
HaraidashiGyosu = HaraidashiGyosu + 1
ZaikoSuryo(jjj) = ZaikoSuryo(jjj) - MinusSuryo
MinusSuryo = 0
End If
LoopCnt = LoopCnt + 1
'出力処理
Loop
'在庫が足らなかったらマイナスの仕入在庫配列を作成する
If MinusSuryo > 0 Then
iii = iii + 1
ReDim Preserve ShiireTanka(iii)
ReDim Preserve ZaikoSuryo(iii)
ReDim Preserve MotoSuryo(iii)
'仕入返品の払出単価を仕入単価とする
ShiireTanka(iii) = Content.fields("単価")
ZaikoSuryo(iii) = MinusSuryo * -1
MotoSuryo(iii) = 0 '上限数量はゼロとする
'出力処理
If KaigyoFlg > 0 Then
mm = mm + 1
ReDim Preserve MyTable(15, mm)
End If
MyTable(7, mm) = ZaikoSuryo(iii) * -1 '払出数量はプラス表記
MyTable(8, mm) = ShiireTanka(iii)
MyTable(9, mm) = ZaikoSuryo(iii) * ShiireTanka(iii) * -1
KaigyoFlg = 1
Gyosu = Gyosu + 1
HaraidashiGyosu = HaraidashiGyosu + 1
End If
'残高行予備出力処理
KaigyoFlg = 0
nn = 0
For zzz = 1 To iii
If ZaikoSuryo(zzz) <> 0 Then
nn = nn + 1
ReDim Preserve TmpMyTable(3, nn)
TmpMyTable(1, nn) = ZaikoSuryo(zzz)
TmpMyTable(2, nn) = ShiireTanka(zzz)
TmpMyTable(3, nn) = ZaikoSuryo(zzz) * ShiireTanka(zzz)
End If
Next
'残高行出力処理
If nn > 0 Then
Do While nn > Gyosu '行数より残高行数が多ければ行を進める
mm = mm + 1
ReDim Preserve MyTable(15, mm)
Gyosu = Gyosu + 1
Loop
Tmpmm = mm
For ii = nn To 1 Step -1 '降順で残高行挿入
MyTable(10, Tmpmm) = TmpMyTable(1, ii)
MyTable(11, Tmpmm) = TmpMyTable(2, ii)
MyTable(12, Tmpmm) = TmpMyTable(3, ii)
Tmpmm = Tmpmm - 1
ZandakaGyosu = ZandakaGyosu + 1
Next
End If
' KaigyoFlg = 0
' For zzz = 1 To iii
' If ZaikoSuryo(zzz) <> 0 Then
' If KaigyoFlg > 0 Then
' mm = mm + 1
' ReDim Preserve MyTable(15, mm)
' End If
' KaigyoFlg = 1
' MyTable(10, mm) = ZaikoSuryo(zzz)
' MyTable(11, mm) = ShiireTanka(zzz)
' MyTable(12, mm) = ZaikoSuryo(zzz) * ShiireTanka(zzz)
' End If
' Next
'売上返品
Else
PlusSuryo = Content.fields("数量")
KaigyoFlg = 0
'先入在庫配列に後戻し処理
jjj = iii
Dim TmpZaikoSuryo
Dim TmpPlusSuryo
ReDim TmpMyTable(3,0)
nn = 1
ReDim Preserve TmpMyTable(3, nn)
Dim TmpKaigyoFlg
TmpKaigyoFlg = 0
Do While PlusSuryo > 0 And jjj > 0
If ZaikoSuryo(jjj) < 0 Then 'マイナス在庫に戻す場合
TmpZaikoSuryo = ZaikoSuryo(jjj)
ZaikoSuryo(jjj) = ZaikoSuryo(jjj) + PlusSuryo
If ZaikoSuryo(jjj) > 0 Then
'予備出力処理
If TmpKaigyoFlg > 0 Then
nn = nn + 1
ReDim Preserve TmpMyTable(3, nn)
End If
TmpMyTable(1, nn) = TmpZaikoSuryo * -1
TmpMyTable(2, nn) = ShiireTanka(jjj)
TmpMyTable(3, nn) = TmpZaikoSuryo * ShiireTanka(jjj) * -1
TmpKaigyoFlg = 1
Gyosu = Gyosu + 1
UkeireGyosu = UkeireGyosu + 1
PlusSuryo = ZaikoSuryo(jjj)
ZaikoSuryo(jjj) = 0
Else
'予備出力処理
If TmpKaigyoFlg > 0 Then
nn = nn + 1
ReDim Preserve TmpMyTable(3, nn)
End If
TmpMyTable(1, nn) = PlusSuryo
TmpMyTable(2, nn) = ShiireTanka(jjj)
TmpMyTable(3, nn) = PlusSuryo * ShiireTanka(jjj)
TmpKaigyoFlg = 1
Gyosu = Gyosu + 1
UkeireGyosu = UkeireGyosu + 1
PlusSuryo = 0
End If
Else
TmpPlusSuryo = PlusSuryo
TmpZaikoSuryo = ZaikoSuryo(jjj)
ZaikoSuryo(jjj) = ZaikoSuryo(jjj) + PlusSuryo
If ZaikoSuryo(jjj) > MotoSuryo(jjj) Then
PlusSuryo = ZaikoSuryo(jjj) - MotoSuryo(jjj)
ZaikoSuryo(jjj) = MotoSuryo(jjj)
If PlusSuryo <> TmpPlusSuryo Then
'予備出力処理
If TmpKaigyoFlg > 0 Then
nn = nn + 1
ReDim Preserve TmpMyTable(3, nn)
End If
TmpMyTable(1, nn) = MotoSuryo(jjj) - TmpZaikoSuryo
TmpMyTable(2, nn) = ShiireTanka(jjj)
TmpMyTable(3, nn) = (MotoSuryo(jjj) - TmpZaikoSuryo) * ShiireTanka(jjj)
TmpKaigyoFlg = 1
Gyosu = Gyosu + 1
UkeireGyosu = UkeireGyosu + 1
End If
Else
'予備出力処理
If TmpKaigyoFlg > 0 Then
nn = nn + 1
ReDim Preserve TmpMyTable(3, nn)
End If
TmpMyTable(1, nn) = PlusSuryo
TmpMyTable(2, nn) = ShiireTanka(jjj)
TmpMyTable(3, nn) = PlusSuryo * ShiireTanka(jjj)
TmpKaigyoFlg = 1
Gyosu = Gyosu + 1
UkeireGyosu = UkeireGyosu + 1
PlusSuryo = 0
End If
End If
jjj = jjj - 1
Loop
'出力処理(昇順に入れ替え)
For ii = nn To 1 Step -1
' For ii = UBound(TmpMyTable, 2)-1 To 1 Step -1
If KaigyoFlg > 0 Then
mm = mm + 1
ReDim Preserve MyTable(15, mm)
End If
MyTable(4, mm) = TmpMyTable(1, ii)
MyTable(5, mm) = TmpMyTable(2, ii)
MyTable(6, mm) = TmpMyTable(3, ii)
KaigyoFlg = 1
Next
'在庫配列が足らなかったら余剰分の仕入在庫配列を作成する
KaigyoFlg = 0 '← 070711追加(小野)
If PlusSuryo > 0 Then
iii = iii + 1
ReDim Preserve ShiireTanka(iii)
ReDim Preserve ZaikoSuryo(iii)
ReDim Preserve MotoSuryo(iii)
'売上返品の払出単価を仕入単価とする
ShiireTanka(iii) = Content.fields("単価")
ZaikoSuryo(iii) = PlusSuryo
MotoSuryo(iii) = ZaikoSuryo(iii)
'出力処理
If KaigyoFlg > 0 Then
mm = mm + 1
ReDim Preserve MyTable(15, mm)
End If
MyTable(4, mm) = ZaikoSuryo(iii)
MyTable(5, mm) = ShiireTanka(iii)
MyTable(6, mm) = ZaikoSuryo(iii) * ShiireTanka(iii)
KaigyoFlg = 1
Gyosu = Gyosu + 1
UkeireGyosu = UkeireGyosu + 1
End If
'残高行予備出力処理
KaigyoFlg = 0
nn = 0
For zzz = 1 To iii
If ZaikoSuryo(zzz) <> 0 Then
nn = nn + 1
ReDim Preserve TmpMyTable(3, nn)
TmpMyTable(1, nn) = ZaikoSuryo(zzz)
TmpMyTable(2, nn) = ShiireTanka(zzz)
TmpMyTable(3, nn) = ZaikoSuryo(zzz) * ShiireTanka(zzz)
End If
Next
'残高行出力処理
If nn > 0 Then
Do While nn > Gyosu '行数より残高行数が多ければ行を進める
mm = mm + 1
ReDim Preserve MyTable(15, mm)
Gyosu = Gyosu + 1
Loop
Tmpmm = mm
For ii = nn To 1 Step -1 '降順で残高行挿入
MyTable(10, Tmpmm) = TmpMyTable(1, ii)
MyTable(11, Tmpmm) = TmpMyTable(2, ii)
MyTable(12, Tmpmm) = TmpMyTable(3, ii)
Tmpmm = Tmpmm - 1
ZandakaGyosu = ZandakaGyosu + 1
Next
End If
' KaigyoFlg = 0
' For zzz = 1 To iii
' If ZaikoSuryo(zzz) <> 0 Then
' If KaigyoFlg > 0 Then
' mm = mm + 1
' ReDim Preserve MyTable(15, mm)
' End If
' KaigyoFlg = 1
' MyTable(10, mm) = ZaikoSuryo(zzz)
' MyTable(11, mm) = ShiireTanka(zzz)
' MyTable(12, mm) = ZaikoSuryo(zzz) * ShiireTanka(zzz)
' End If
' Next
End If
'複数行時括弧付加処理
If UkeireGyosu > 1 Then
SentoFlg = 1
Tmpmm = mm
ii = ZandakaGyosu
Do While ii > UkeireGyosu '受入行数より残高行数が多ければ最下行を上シフト
Tmpmm = Tmpmm - 1
ii = ii - 1
Loop
For ii = UkeireGyosu To 1 Step -1
If SentoFlg > 0 Then
MyTable(13, Tmpmm) = "bot"
SentoFlg = 0
ElseIf ii = 1 Then
MyTable(13, Tmpmm) = "top"
Else
MyTable(13, Tmpmm) = "mid"
End If
Tmpmm = Tmpmm - 1
Next
End If
If HaraidashiGyosu > 1 Then
SentoFlg = 1
Tmpmm = mm
ii = ZandakaGyosu
Do While ii > HaraidashiGyosu '払出行数より残高行数が多ければ最下行を上シフト
Tmpmm = Tmpmm - 1
ii = ii - 1
Loop
For ii = HaraidashiGyosu To 1 Step -1
If SentoFlg > 0 Then
MyTable(14, Tmpmm) = "bot"
SentoFlg = 0
ElseIf ii = 1 Then
MyTable(14, Tmpmm) = "top"
Else
MyTable(14, Tmpmm) = "mid"
End If
Tmpmm = Tmpmm - 1
Next
End If
If ZandakaGyosu > 1 Then
SentoFlg = 1
Tmpmm = mm
For ii = ZandakaGyosu To 1 Step -1
If SentoFlg > 0 Then
MyTable(15, Tmpmm) = "bot"
SentoFlg = 0
ElseIf ii = 1 Then
MyTable(15, Tmpmm) = "top"
Else
MyTable(15, Tmpmm) = "mid"
End If
Tmpmm = Tmpmm - 1
Next
End If
UkeireGyosu = 0
HaraidashiGyosu = 0
ZandakaGyosu = 0
KaigyoFlg = 0
End If
Content.MoveNext
Loop
'次期繰越残高表示
' SentoFlg = 1
' KaigyoFlg = 0
' For zzz = 1 To iii
' If ZaikoSuryo(zzz) <> 0 Then
' If SentoFlg > 0 Then
' mm = mm + 1
' ReDim Preserve MyTable(15, mm)
' MyTable(1, mm) = GB_KaikeiSyuryobi
' MyTable(2, mm) = "次期繰越"
' SentoFlg = 0
' ElseIf KaigyoFlg > 0 Then
' mm = mm + 1
' ReDim Preserve MyTable(15, mm)
' End If
' KaigyoFlg = 1
' MyTable(10, mm) = ZaikoSuryo(zzz)
' MyTable(11, mm) = ShiireTanka(zzz)
' MyTable(12, mm) = ZaikoSuryo(zzz) * ShiireTanka(zzz)
' End If
' Next
End If
If PrintFlg = 0 Then
%>
<%
End If
Dim HeightCell
Dim WidthCell1, WidthCell2, WidthCell3, WidthCell4, WidthParent, WidthParent2
Dim BaseText1214
Dim BaseText1416
If PrintFlg = 0 Then
HeightCell = 20
WidthCell1 = 60
WidthCell2 = 75
WidthCell3 = 55
WidthCell4 = 96
WidthParent = 954
WidthParent2 = 933
BaseText1214 = "tx1416"
BaseText1416 = "tx1618"
Else
HeightCell = 18
WidthCell1 = 49
WidthCell2 = 60
WidthCell3 = 43
WidthCell4 = 71
WidthParent = 709
WidthParent2 = WidthParent
BaseText1214 = "tx1214"
BaseText1416 = "tx1416"
End If
ii = 0
RowCount = 0
For Page = 1 To MaxPage
If Page <> 1 Then
Response.Write(PageBreakBefore)
End If
%>
<%
If PrintFlg = 1 Then
Response.Write(PrintHeader1(AutoFlg))
End if
%>
<% = SetStringInsertSpace(PageType) %>
<% If AutoFlg <> -1 And PrintFlg = 1 Then %><% = Page %>ページ<% End If %>
計算方法:<%= Dummy %><% = ConvKubunMeisyo("商品有高帳計算区分", KeisanHoho) %>
<% If Param2 = "Zairyo" Then %>
材料名 :<% = ConvZairyoMeisyo(SyohinCD) %>
<% ' 自動転記 手入力の照会集計 印刷モードは除外 商品在庫は除外 %>
<% ElseIf (Param2 = "Shiwake" Or Param3 = "ViewOnly") And PrintFlg <> 1 And ShohinMenu = 1 Then %>
商品名 :syokaisyukei/fk_syohinaridakatyo_view.asp?RouteType=<% = Param3 %>&Mode=Shiwake<% '自動転記帳簿
Else
%>hojyobo/fk_syohinaridakatyo_view.asp?RouteType=ViewOnly<% '手入力帳簿
End If
%>&SyohinCD=' + this.value);" onMouseOver="if(SubmitFlg!=0){this.focus();}">
<< 選択して下さい >>
<%
Query = "exec SPM商品一覧 '" & GB_SystemCD & "','" & EnshuCD & "', '" & GB_GakuseiNo & "'"
Set Content = OpenQuery(Query)
Do While Not(Content.BOF Or Content.EOF)
'照会集計画面では記帳の存在する科目に絞り込む 引数は確実に文字列指定しないとダメ
'If AutoFlg = 1 Or "" & KichoFlg("" & Content.Fields("商品CD")) <> "" Then
If "" & KichoFlg("" & Content.Fields("商品CD")) <> "" Then
Response.Write("" & Content.Fields("商品名称") & " " & vbCrLf)
End If
Content.MoveNext
Loop
%>
<% Else %>
商品名:<% = ConvSyohinMeisyo(SyohinCD) %>
<% End If %>
単位:<% = Tani %>
取引 日
摘 要
受 入
払 出
残 高
受払区分
取引先
数量
単価
金額
数量
単価
金額
数量
単価
金額
<% If PrintFlg <> 1 Then %>
<% End If %>
<%
If SyohinCD <> "" Then
For jj = 1 To RowBreakNum
If ii + 1 > Ubound(MyTable, 2) Then
Exit For
End If
RowCount = RowCount + 1
Response.Write("" & vbCrLf)
Response.Write("" & SetDateStr(MyTable(1, ii + 1), "MM/DD") & " " & vbCrLf)
Response.Write("" & MyTable(2, ii + 1) & " " & vbCrLf)
Response.Write("" & MyTable(3, ii + 1) & " " & vbCrLf)
If MyTable(13, ii + 1) <> "" Then
Response.Write("" & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write( ConvIntToMoney(MyTable(4, ii + 1), false, true) & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write(" " & vbCrLf)
Else
Response.Write("" & ConvIntToMoney(MyTable(4, ii + 1), false, true) & " " & vbCrLf)
End If
Response.Write("" & ConvIntToMoney(MyTable(5, ii + 1), false, true) & " " & vbCrLf)
Response.Write("" & ConvIntToMoney(MyTable(6, ii + 1), false, true) & " " & vbCrLf)
If MyTable(14, ii + 1) <> "" Then
Response.Write("" & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write( ConvIntToMoney(MyTable(7, ii + 1), false, true) & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write(" " & vbCrLf)
Else
Response.Write("" & ConvIntToMoney(MyTable(7, ii + 1), false, true) & " " & vbCrLf)
End If
Response.Write("" & ConvIntToMoney(MyTable(8, ii + 1), false, true) & " " & vbCrLf)
Response.Write("" & ConvIntToMoney(MyTable(9, ii + 1), false, true) & " " & vbCrLf)
'表示のバグ修正 BY HAMADA 06/06/27
If MyTable(10, ii + 1) = "0" Then
'Response.Write("" & MyTable(10, ii + 1) & " " & vbCrLf)
If MyTable(15, ii + 1) <> "" Then
Response.Write("" & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write( MyTable(10, ii + 1) & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write(" " & vbCrLf)
Else
Response.Write("" & ConvIntToMoney(MyTable(10, ii + 1), false, true) & " " & vbCrLf)
End If
Else
'Response.Write("" & ConvIntToMoney(MyTable(10, ii + 1), false, true) & " " & vbCrLf)
If MyTable(15, ii + 1) <> "" Then
Response.Write("" & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write( ConvIntToMoney(MyTable(10, ii + 1), false, true) & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write("
" & vbCrLf)
Response.Write(" " & vbCrLf)
Else
Response.Write("" & ConvIntToMoney(MyTable(10, ii + 1), false, true) & " " & vbCrLf)
End If
End If
Response.Write("" & ConvIntToMoney(MyTable(11, ii + 1), false, true) & " " & vbCrLf)
If MyTable(12, ii + 1) = "0" Then
Response.Write("" & MyTable(12, ii + 1) & " " & vbCrLf)
Else
Response.Write("" & ConvIntToMoney(MyTable(12, ii + 1), false, true) & " " & vbCrLf)
End If
Response.Write(" " & vbCrLf)
ii = ii + 1
If (RowCount Mod RowBreakNum = 0) Then
Exit For
End If
Next
End If
For jj = RowCount + 1 To Max(35, Max(RowBreakNum, (Int((RowCount - 1) / RowBreakNum) + 1) * RowBreakNum) * PrintFlg)
Response.Write("" & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" " & vbCrLf)
Response.Write(" ")
Next
%>
<% If PrintFlg <> 1 Then %>
<% End If %>
<%
If PrintFlg = 1 Then
Response.Write(PrintFooter())
End If
%>
<%
If ii + 1 > Ubound(MyTable, 2) Then
Exit For
End If
Next
If PrintFlg = 0 Then
%>
<%
End if
End Function
%>