001.
002.
003.
004.
005.
006.
007.
Public
Shared
Function
IC_B4_02xIC_21(
ByVal
Warehouse
As
String
,
008.
ByVal
From_Part_NO
As
String
,
009.
ByVal
To_Part_NO
As
String
,
010.
ByVal
From_Date
As
String
,
011.
ByVal
To_Date
As
String
,
012.
ByVal
OrgCode
As
String
)
As
DataTable
013.
Dim
strSQL
As
XCData =
Nothing
014.
015.
016.
017.
018.
019.
Dim
curDateDec30
As
String
=
If
(RDBMSType =
"Firebird"
,
"CAST('TODAY' AS TIMESTAMP) - @P_Cycle_NO"
,
If
(RDBMSType =
"SQLite"
,
"DATE('NOW','-@P_Cycle_NO day')"
,
"Not Implement yet."
))
020.
021.
Select
Case
(WL_Common.PubConstant.RDBMSType)
022.
Case
"MsAccess"
023.
024.
Case
Else
025.
strSQL =
026.
<![CDATA[
027.
SELECT
028.
029.
SUM(HIS_STAT.ISS_QTY) AS ISS_QTY, SUM(HIS_STAT.ADJ_INC) AS ADJ_INC, SUM(HIS_STAT.ADJ_DEC) AS ADJ_DEC, 0.00 AS TRAN_QTY, 0.00 AS TRAN_QTYSORT,
030.
SUM(HIS_STAT.TRAN_AMT) AS TRAN_AMT,
031.
MIN(UM_TAB.UM_DESC) AS UM_DESC, MIN(WHS_BAL.PART_DESC) AS PART_DESC, 0.00 AS UNIT_COST, (
032.
SELECT MIN(WHS_TAB.WHS_DESC)
033.
FROM WHS_TAB
034.
WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
035.
AND WHS_TAB.STK_LOCATION = (
036.
SELECT MIN(WHB.STK_LOCATION)
037.
FROM WHS_TAB WHB
038.
WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
039.
)
040.
) AS WHS_DESC, (
041.
SELECT MIN(TRAN_DESC)
042.
FROM PARTHIST
043.
WHERE 1 <> 1
044.
) AS TRAN_DESC, MIN(REP1.NOTE) AS NOTE, MIN(REP2.NOTE) AS NOTE2, CAST(
045.
FROM WHS_BAL
046.
LEFT JOIN WHS_STAT ON WHS_BAL.WAREHOUSE = WHS_STAT.WAREHOUSE AND WHS_BAL.PART_NO = WHS_STAT.PART_NO AND WHS_STAT.ZYEAR =
047.
LEFT JOIN HIS_STAT ON WHS_BAL.WAREHOUSE = HIS_STAT.WAREHOUSE AND WHS_BAL.PART_NO = HIS_STAT.PART_NO AND HIS_STAT.DOC_DATE <
048.
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
049.
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
050.
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
051.
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
052.
LEFT JOIN REP REP2 ON REP2.ID =
053.
WHERE WHS_BAL.WAREHOUSE = @Warehouse AND WHS_BAL.PART_NO BETWEEN @From_Part_NO AND @To_Part_NO
054.
GROUP BY WHS_BAL.WAREHOUSE, WHS_BAL.PART_NO
055.
056.
UNION ALL
057.
058.
SELECT
059.
PARTHIST.TRAN_TYPE, 0.00 AS BEGIN_BAL, 0.00 AS BEG_AMT, 0.00 AS REC_QTY, 0.00 AS ISS_QTY, 0.00 AS ADJ_INC, 0.00 AS ADJ_DEC, PARTHIST.TRAN_QTY, CASE
060.
WHEN ABS(PARTHIST.TRAN_QTY) > 0
061.
THEN (PARTHIST.TRAN_QTY / (ABS(PARTHIST.TRAN_QTY)))
062.
ELSE 0
063.
END AS TRAN_QTYSORT, PARTHIST.TRAN_AMT, PARTHIST.POST_FLAG, WHS_BAL.ACCODE, AC_TAB.ACCOUNT_NO, UM_TAB.UM, UM_TAB.UM_DESC, WHS_BAL.PART_DESC, PARTHIST.UNIT_COST, (
064.
SELECT MIN(WHS_TAB.WHS_DESC)
065.
FROM WHS_TAB
066.
WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
067.
AND WHS_TAB.STK_LOCATION = (
068.
SELECT MIN(WHB.STK_LOCATION)
069.
FROM WHS_TAB WHB
070.
WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
071.
)
072.
) AS WHS_DESC, PARTHIST.TRAN_DESC, REP1.NOTE AS NOTE, REP2.NOTE AS NOTE2, CAST(
073.
FROM WHS_BAL
074.
LEFT JOIN PARTHIST ON WHS_BAL.WAREHOUSE = PARTHIST.WAREHOUSE AND WHS_BAL.PART_NO = PARTHIST.PART_NO AND PARTHIST.DOC_DATE BETWEEN
075.
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
076.
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
077.
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
078.
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
079.
LEFT JOIN REP REP2 ON REP2.ID =
080.
WHERE WHS_BAL.WAREHOUSE =
081.
082.
UNION ALL
083.
084.
SELECT
085.
WHEN ABS(PARTHIST.TRAN_QTY) > 0
086.
THEN (PARTHIST.TRAN_QTY / (ABS(PARTHIST.TRAN_QTY)))
087.
ELSE 0
088.
END AS TRAN_QTYSORT, PARTHIST.TRAN_AMT, PARTHIST.POST_FLAG, WHS_BAL.ACCODE, AC_TAB.ACCOUNT_NO, UM_TAB.UM, UM_TAB.UM_DESC, WHS_BAL.PART_DESC, PARTHIST.UNIT_COST, (
089.
SELECT MIN(WHS_TAB.WHS_DESC)
090.
FROM WHS_TAB
091.
WHERE WHS_TAB.WAREHOUSE = WHS_BAL.WAREHOUSE
092.
AND WHS_TAB.STK_LOCATION = (
093.
SELECT MIN(WHB.STK_LOCATION)
094.
FROM WHS_TAB WHB
095.
WHERE WHB.WAREHOUSE = WHS_BAL.WAREHOUSE
096.
)
097.
) AS WHS_DESC, PARTHIST.TRAN_DESC, REP1.NOTE AS NOTE, REP2.NOTE AS NOTE2, CASE
098.
WHEN (- HDL.TRAN_QTY) > 0
099.
THEN CAST((- HDL.TRAN_QTY) AS NUMERIC(15, 2))
100.
ELSE 0
101.
END AS HDL_TRAN_QTY, CASE
102.
WHEN HDL.UNIT_COST > 0
103.
THEN CAST(HDL.UNIT_COST AS NUMERIC(15, 2))
104.
ELSE 0
105.
END AS HDL_UNIT_COST
106.
FROM WHS_BAL
107.
LEFT JOIN PARTHIST ON WHS_BAL.WAREHOUSE = PARTHIST.WAREHOUSE AND WHS_BAL.PART_NO = PARTHIST.PART_NO AND PARTHIST.DOC_DATE BETWEEN
108.
LEFT JOIN HIS_DTL HDL ON HDL.WAREHOUSE = PARTHIST.WAREHOUSE AND HDL.DOC_DATE = PARTHIST.DOC_DATE AND HDL.DOC_NO = PARTHIST.DOC_NO AND HDL.SEQ = PARTHIST.SEQ
109.
LEFT JOIN AC_TAB ON WHS_BAL.WAREHOUSE = AC_TAB.WAREHOUSE AND WHS_BAL.ACCODE = AC_TAB.ACCODE
110.
LEFT JOIN PART_STD ON WHS_BAL.PART_NO = PART_STD.PART_NO
111.
LEFT JOIN UM_TAB ON PART_STD.UM = UM_TAB.UM
112.
LEFT JOIN (SELECT @COMPANY AS NOTE) AS REP1 ON 1=1
113.
LEFT JOIN REP REP2 ON REP2.ID =
114.
WHERE WHS_BAL.WAREHOUSE =
115.
ORDER BY 2, 3, 6, 7, 4, 5
116.
]]>
117.
End
Select
118.
119.
Return
WL_DatabaseVB.DbHelper.Query(strSQL.Value,
New
List(Of DbParameter) From
120.
{
121.
BuildParameter(
"@From_Date"
, From_Date),
122.
BuildParameter(
"@To_Date"
, To_Date),
123.
BuildParameter(
"@Tran_Code"
, Warehouse),
124.
BuildParameter(
"@Warehouse"
, Warehouse)
125.
})
126.
End
Function