This commit is contained in:
PastSaid
2024-04-10 10:39:04 +08:00
parent 9a7bf9b67e
commit b2419eec9c
119 changed files with 23402 additions and 350 deletions

View File

@@ -0,0 +1,204 @@
using ExtensionMethods;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace ZHSW.STK_MisDelivery
{
[Description("【其他出库单】1.获取参考单价"), HotUpdate]
public class BillEventPlugInEx : AbstractDynamicFormPlugIn
{
public override void DataChanged(DataChangedEventArgs e)
{
base.DataChanged(e);
//表头日期
if (e.Field.Key.EqualsIgnoreCase("FDATE"))
{
if (DoDetection())
{
//其他出库单 明细表
var details = this.View.BusinessInfo.GetEntity("FEntity");
if (details != null)
{
var entrys = this.View.Model.GetEntityDataObject(details);
if (entrys != null && entrys.Any())
{
var dateValue = e.NewValue == null ? string.Empty : e.NewValue.ToString();
var dataList = new List<string>();
foreach (var entry in entrys)
{
var rowIndex = this.View.Model.GetRowIndex(details, entry);
var materialObjValue = entry["MaterialId_Id"];
var materialValue = materialObjValue.IsNullOrEmptyOrWhiteSpace() ? 0 : materialObjValue.Long2Int();
var stockObjValue = entry["StockId_Id"];
var stockValue = stockObjValue.IsNullOrEmptyOrWhiteSpace() ? 0 : stockObjValue.Long2Int();
var entityLinkObjList = entry["FEntity_Link"] as DynamicObjectCollection;
DynamicObject entityLinkObj = null;
if (entityLinkObjList != null && entityLinkObjList.Any())
entityLinkObj = entityLinkObjList[0];
var sBillId = entityLinkObj.IsNullOrEmptyOrWhiteSpace() ? 0 : entityLinkObj["SBillId"].Long2Int();
var sId = entityLinkObj.IsNullOrEmptyOrWhiteSpace() ? 0 : entityLinkObj["SId"].Long2Int();
var sTableName = entityLinkObj.IsNullOrEmptyOrWhiteSpace() ? "" : entityLinkObj["STableName"].ToString();
if (materialValue != 0 && stockValue != 0 && dateValue != string.Empty)
dataList.Add($"{materialValue},{rowIndex},{sBillId},{sId},{stockValue},{dateValue},{sTableName}");
//UpdReferPriceAndExplain(dateValue, materialValue, stockValue, rowIndex);
}
TotalReferAmount(entrys, details);
}
}
}
}
//子表物料id
if (e.Field.Key.EqualsIgnoreCase("FMaterialId"))
{
if (DoDetection())
{
var dateObjValue = this.View.Model.GetValue("FDATE");
var dateValue = dateObjValue == null ? string.Empty : dateObjValue.ToString();
var materialValue = e.NewValue == null ? string.Empty : e.NewValue.ToString();
var stockObjValue = this.View.Model.GetValue("StockId_Id", e.Row);
var stockValue = stockObjValue.IsNullOrEmptyOrWhiteSpace() ? string.Empty : stockObjValue.ToString();
//UpdReferPriceAndExplain(dateValue, materialValue, stockValue, e.Row);
TotalReferAmount(null, null);
}
}
//仓库
if (e.Field.Key.EqualsIgnoreCase("FStockId"))
{
if (DoDetection())
{
var materialObjValue = this.View.Model.GetValue("StockId_Id", e.Row); ;
var materialValue = materialObjValue == null ? string.Empty : materialObjValue.ToString();
var dateObjValue = this.View.Model.GetValue("FDATE");
var dateValue = dateObjValue == null ? string.Empty : dateObjValue.ToString();
var stockValue = e.NewValue == null ? string.Empty : e.NewValue.ToString();
//UpdReferPriceAndExplain(dateValue, materialValue, stockValue, e.Row);
TotalReferAmount(null, null);
}
}
//数量
if (e.Field.Key.EqualsIgnoreCase("FQty"))
{
if (DoDetection())
{
//参考单价
var referPrice = this.View.Model.GetValue("FReferPrice", e.Row).ToDecimalR();
var amount = (e.NewValue.ToDecimal() * referPrice).ToDecimalR();
//参考金额
this.View.Model.SetValue("FReferAmount", amount == 0 ? "" : amount.ToString(), e.Row);
//小数类型参考金额控件
//this.View.Model.SetValue("FReferAmountM", amount, e.Row);
TotalReferAmount(null, null);
}
}
#region 2023-12-14 ,
//参考单价
if (e.Field.Key.EqualsIgnoreCase("FReferPrice"))
{
if (DoDetection())
{
//数量
var FQty = this.View.Model.GetValue("FQty", e.Row).ToDecimalR();
#region 2024-01-27
//参考单价
var referPrice = e.NewValue.ToDecimal();
//参考金额
this.View.Model.SetValue("FReferAmount", referPrice == 0M ? "" : (FQty * referPrice).ToDecimalR().ToString(), e.Row);
#endregion
//小数类型参考金额控件
TotalReferAmount(null, null);
}
}
#endregion
}
/// <summary>
/// 检测组织
/// </summary>
/// <returns></returns>
private bool DoDetection()
{
//库存方向为退货时不执行取数
var stockDirect = this.View.Model.GetValue("FStockDirect");
if (!stockDirect.IsNullOrEmptyOrWhiteSpace() && stockDirect.Equals("RETURN"))
return false;
//直接调拨单 调出库存组织
var org = this.View.Model.GetValue("FStockOutOrgId") as DynamicObject;
//其他出库单 库存组织
if (org == null)
org = this.View.Model.GetValue("FStockOrgId") as DynamicObject;
return org != null && Convert.ToInt32(org["Id"]) == 101542;
}
/// <summary>
/// 参考金额汇总
/// </summary>
/// <param name="entrys"></param>
private void TotalReferAmount(DynamicObjectCollection entrys, Entity details)
{
if (entrys == null)
{
//其他出库单 明细表
details = this.View.BusinessInfo.GetEntity("FEntity");
entrys = this.View.Model.GetEntityDataObject(details);
}
var total = 0M;
if (entrys != null && entrys.Any())
{
foreach (var entry in entrys)
{
var rowIndex = this.View.Model.GetRowIndex(details, entry);
var tAmount = this.View.Model.GetValue("FReferAmount", rowIndex).ToDecimal();
total += tAmount;
}
}
try
{
this.View.Model.SetValue("F_GAT_Decimal1", total);
}
catch
{
try
{
this.View.Model.SetValue("FTotalReferAmount", total);
}
catch { }
finally { }
}
finally { }
}
}
}

View File

@@ -0,0 +1,58 @@
USE [AIS20240128162426]
GO
/****** Object: StoredProcedure [dbo].[GetFmaterialDataNew] Script Date: 2024/4/1 9:36:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[GetFmaterialDataNew]
(
@FMaterID INT,
@FDATE date,
@FStockId nvarchar(1000)
)
as
begin
set @FStockId=RTRIM(@FStockId)
set @FStockId=LTRIM(@FStockId)
declare @Fprice decimal(28,10)
declare @FNOTE varchar(50)
declare @FAmount decimal(28,10)
declare @FQTY1 decimal(28,10)
EXEC GetPriceNew @FMaterID ,@FDATE ,@Fprice output ,@FNOTE output,@FAmount output,@FQTY1 output,@FStockId
if(@Fprice<>0)
begin
select @Fprice as Fprice ,@FNOTE as FNOTE,@FAmount as Amount,@FQTY1 as FQTY
end
else
begin
SELECT
CASE WHEN FPrice = 0 THEN round( C.FCostPrice ,2)
ELSE round(C.FPrice ,2)
END as Fprice
,'取采购入库单单价,单据编号为:' + A.FBILLNO as FNOTE
,CASE WHEN FPrice = 0 THEN round( C.FCostPrice ,2) * b.FREALQTY
else round( C.FPrice ,2) * b.FREALQTY
end as Amount
,b.FREALQTY as FQTY
FROM T_STK_INSTOCK A
INNER JOIN T_STK_INSTOCKENTRY B ON A.FID = B.FID
INNER JOIN T_STK_INSTOCKENTRY_F C ON C.FENTRYID = B.FENTRYID
INNER JOIN T_BD_MATERIAL D ON D.FMATERIALID = B.FMATERIALID
WHERE
A.FDOCUMENTSTATUS = 'C'
AND A.FCANCELSTATUS = 'A'
AND A.FSTOCKORGID = 101542
AND (c.FPrice <> 0 or c.FCostPrice <> 0)
AND b.FMATERIALID = @FMaterID
and b.fstockid = @FStockId
AND CONVERT(nvarchar(10),A.FDATE,23) <= CONVERT(nvarchar(10),@FDATE,23)
ORDER BY a.FDATE DESC, a .FAPPROVEDATE DESC,b.FSEQ DESC
end
end

View File

@@ -0,0 +1,29 @@
CREATE proc [dbo].[GetHTPrice]
(
@Fnumber nvarchar(50) ,
@Fprice decimal(28,10) out,
@Fnote nvarchar(50) out
)
as
begin
declare @Fprice1 decimal(28,10)
set @Fprice1=0
select top 1 @Fprice1=b.F_QNV_DECIMAL3,@Fnote=a.F_QNV_TEXT2
from QNV_t_Cust_Entry100003 a
inner join QNV_t_Cust_Entry100004 b on a.FID=b.fid
inner join T_BD_MATERIAL c on c.FMATERIALID=b.F_QNV_BASE1
inner join T_BD_MATERIAL_L d on d.FMATERIALID=c.FMATERIALID
where c.FNUMBER=@Fnumber
and a.FDOCUMENTSTATUS='C'
order by b.F_QNV_DATE2 desc
if(@Fprice1<>0)
begin
set @Fprice=@Fprice1
return
end
else
begin
set @Fprice=0
return
end
end

View File

@@ -0,0 +1,85 @@
CREATE proc [dbo].[GetPriceNew]
(
@FMaterID nvarchar(50) ,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
@FDATE date,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@Fprice decimal(28,10) out,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@FDATEO nvarchar(50) out, --<EFBFBD><EFBFBD>ע
@FAmount decimal(28,10) out,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@FQTY decimal(28,10) out,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@FStockId nvarchar(1000)
)
as
begin
DECLARE @FNUMBER nvarchar(50)
DECLARE @ChildFMATERIALID nvarchar(50)
DECLARE @Fprice1 decimal(28,10)
DECLARE @FDATEO1 nvarchar(50)
DECLARE @FAmount1 decimal(28,10)
DECLARE @FQTY1 nvarchar(50)
DECLARE @F_QNV_Combo nvarchar(50)--<EFBFBD>Ƿ<EFBFBD>ˮ<EFBFBD><EFBFBD>
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
select @FNUMBER= FNUMBER from T_BD_MATERIAL where FMATERIALID= @FMaterID
select @F_QNV_Combo= F_QNV_Combo from T_BD_MATERIAL where FMATERIALID= @FMaterID
set @Fprice1=0
exec GetSalePriceNEW @FDATE,@FMaterID,@Fprice1 out,@FDATEO1 out ,@FAmount1 out ,@FQTY1 out,@FStockId --<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(@Fprice1<>0)--<EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
set @Fprice=@Fprice1
set @FDATEO=@FDATEO1
set @FAmount=@FAmount1
set @FQTY=@FQTY1
return @Fprice
end
else --û<EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>
begin
IF(@F_QNV_Combo<>1)
begin
exec GetHTPrice @FNUMBER,@Fprice1 output,@FDATEO1 out
set @Fprice=@Fprice1
if (@Fprice<>0)
begin
set @FDATEO='ȡ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>,<2C><>ͬ<EFBFBD><CDAC>Ϊ<EFBFBD><CEAA>' +@FDATEO1
end
else
begin
set @FDATEO='û<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>۸<EFBFBD>'
end
set @FAmount=0
set @FQTY=0
return
end
ELSE
BEGIN
set @ChildFMATERIALID=0
IF EXISTS (SELECT 1 from T_ENG_BOM a
inner join T_ENG_BOMCHILD b on a.FID=b.FID
inner join T_BD_MATERIAL c on b.FMATERIALID=c.FMATERIALID
where a.FMATERIALID=@FMaterID AND c.F_QNV_COMBO<>1)
BEGIN
select @ChildFMATERIALID= c.FMATERIALID from T_ENG_BOM a
inner join T_ENG_BOMCHILD b on a.FID=b.FID
inner join T_BD_MATERIAL c on b.FMATERIALID=c.FMATERIALID
where a.FMATERIALID=@FMaterID
EXEC [GetPriceNew] @ChildFMATERIALID,@FDATE ,@Fprice output ,@FDATEO output , @FAmount output,@FQTY1 output,@FStockId
return
END
ELSE
BEGIN
set @Fprice=0
set @FDATEO='<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'+@FNUMBER+'û<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>BOM<EFBFBD><EFBFBD>'
set @FAmount=0
set @FQTY=0
return
END
END
end
end

View File

@@ -0,0 +1,74 @@
CREATE PROC [dbo].[GetSalePriceNew]
(
@FDate date,
@FMaterID int,
@Fprice decimal(28,10) out,
@FDateO nvarchar(50) out,
@FAmount decimal(28,10) out,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@FQTY decimal(28,10) out ,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
@FStockId nvarchar(1000)
)
as
begin
--declare @FDate date,
--@FMaterID int,
--@Fprice decimal(28,10) ,
--@FDateO nvarchar(50) ,
--@FAmount decimal(28,10) ,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--@FQTY decimal(28,10) ,--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
--@FStockId nvarchar(1000)
--SET @FDate = ''
--SET @FMaterID = 0
--SET @FStockId = 0
--exec GetSalePriceNew @FDate , @FMaterID ,@Fprice out , @FDateO out ,@FAmount out,@FQTY out ,@FStockId
--SELECT @FDate,@FMaterID,@Fprice,@FDateO,@FAmount,@FQTY,@FStockId
declare @Fyear int
declare @Fmonth int
declare @FNumber nvarchar(100)
SELECT @FNumber= fnumber FROM T_BD_MATERIAL WHERE FMATERIALID=@FMaterID
SELECT TOP 1
@Fyear = FYEAR
,@Fmonth = FPERIOD
,@FAMOUNT = sum(FAMOUNT)
,@FQty = sum(FQTY)
,@Fprice = CASE WHEN @FQty<>0 THEN ROUND( @FAMOUNT/@FQty,6) ELSE 0 END
,@FDateO= CONVERT(nvarchar(10),FYEAR)+'.'+CONVERT(nvarchar(10),FPERIOD)
FROM
(
SELECT a.FNUMBER,THO.FYEAR ,THO.FPERIOD,THIB.FAMOUNT,THIB.FQTY
FROM T_HS_INIVSTOCKDIMENSION THS --<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_HS_INIVBALANCE THIB --<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD>
ON (THS.FENTRYID = THIB.FDIMEENTRYID AND THIB.FENDINITKEY = '0')
INNER JOIN T_HS_OUTACCTG THO ON THIB.FID = THO.FID
INNER JOIN T_HS_CALDIMENSIONS TCH ON TCH.FDIMENSIONID = THO.FDIMENSIONID
INNER JOIN T_BD_MATERIAL a ON a.FMATERIALID=THS.FMATERIALID
WHERE
((TCH.FACCTSYSTEMID = 1 AND TCH.FACCTPOLICYID = 1)
AND THS.FSTOCKORGID = 101542)
AND a.FNUMBER=@FNumber
AND @FStockId = THS.FSTOCKID
UNION ALL
SELECT a.FNUMBER, THO.FYEAR ,THO.FPERIOD, THIB.FAMOUNT ,THIB.FQTY
FROM T_HS_INIVSTOCKDIMENSION THS --<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_HS_INIVBALANCE_H THIB --<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD>
ON (THS.FENTRYID = THIB.FDIMEENTRYID AND THIB.FENDINITKEY = '0')
INNER JOIN T_HS_OUTACCTG THO ON THIB.FID = THO.FID
INNER JOIN T_HS_CALDIMENSIONS TCH ON TCH.FDIMENSIONID = THO.FDIMENSIONID
INNER JOIN T_BD_MATERIAL a ON a.FMATERIALID=THS.FMATERIALID
WHERE
((TCH.FACCTSYSTEMID = 1 AND TCH.FACCTPOLICYID = 1) AND THS.FSTOCKORGID = 101542)
AND a.FNUMBER = @FNumber
AND @FStockId = THS.fstockid
) t
GROUP BY FYEAR ,FPERIOD
HAVING FYEAR*100 + FPERIOD <= year(@FDate) * 100 + MONTH(@FDate) AND sum(FQTY) >0
ORDER BY FYEAR DESC , FPERIOD DESC
RETURN
END

View File

@@ -0,0 +1,54 @@
SELECT t0.FBILLNO,t0.FDATE,t0e.FID,t0e.FENTRYID,t0e.FMATERIALID
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN t1.FPRICE --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>
WHEN 'T_STK_INSTOCKENTRY' THEN t2.FPRICE --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD><EFBFBD><EFBFBD>ۣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN t3.FPRICE --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ELSE 0
END) AS newReferPrice
,t0e.FReferPrice
,t0e.FQTY
,t0e.FReferAmount
,t0e.FExplain
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN 'Դ_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥ:'+ t1.FBILLNO
WHEN 'T_STK_INSTOCKENTRY' THEN 'Դ_<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥ:'+ t2.FBILLNO
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN 'Դ_<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>뵥:'+ t3.FBILLNO
ELSE ''
END) AS 'newExplain'
,t0e_lk.FSTABLENAME
INTO #TMP_HAS_PARENT_MIS
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID
OUTER APPLY (
SELECT t1.FBILLNO,t1e.FPRICE
FROM T_STK_MISDELIVERY t1 --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_MISDELIVERYENTRY t1e on t1.FID = t1e.FID
AND (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY')
) t1
OUTER APPLY (
SELECT t2.FBILLNO,t2e.FPRICE
FROM T_STK_INSTOCK t2 --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCKENTRY_F t2e on t2.FID = t2e.FID
AND (t2e.FID = t0e_lk.FSBILLID AND t2e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY')
) t2
OUTER APPLY (
SELECT t3.FBILLNO,(CASE LTRIM(RTRIM(t3e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,6) ,t3e.FReferPrice) END) AS FPRICE
FROM T_STK_STKTRANSFERIN t3 --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_STKTRANSFERINENTRY t3e on t3.FID = t3e.FID
AND (t3e.FID = t0e_lk.FSBILLID AND t3e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1')
) t3
WHERE 1 = 1
AND t0.FSTOCKORGID = 101542
AND t0e_lk.FSTABLENAME IN ('T_STK_STKTRANSFERINENTRY1','T_STK_INSTOCKENTRY' ,'T_STK_MISDELIVERYENTRY')
AND t0.FDATE >= '2023-11-01 00:00:00.000'
SELECT t1.*
--UPDATE t0e SET t0e.FReferPrice = t1.newReferPrice
--,t0e.FReferAmount = t1.newReferPrice * t0e.FQTY
--, t0e.FExplain = t1.newExplain
FROM T_STK_MISDELIVERYENTRY t0e
INNER JOIN #TMP_HAS_PARENT_MIS t1 on t0e.FENTRYID = t1.FENTRYID
WHERE t1.newReferPrice != 0
DROP TABLE #TMP_HAS_PARENT_MIS

View File

@@ -0,0 +1,178 @@
/********************************ȡ<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>start*****************************************/
SELECT t0e.FMATERIALID
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN t1.FPRICE --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>
WHEN 'T_STK_INSTOCKENTRY' THEN t2.FPRICE --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD><EFBFBD><EFBFBD>ۣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN t3.FPRICE --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ELSE 0
END) AS 'newReferPrice'
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN 'Դ_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥ:'+ t1.FBILLNO
WHEN 'T_STK_INSTOCKENTRY' THEN 'Դ_<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥ:'+ t2.FBILLNO
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN (CASE t3.FPRICE WHEN 0 THEN '' ELSE 'Դ_<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>뵥:'+ t3.FBILLNO END)
ELSE ''
END) AS 'newExplain'
,t0.FBILLNO
,t0.FDATE
,YEAR(t0.FDATE) * 100 + MONTH(t0.FDATE) AS DateNum
,t0e.FSTOCKID
,t0e.FID
,t0e.FENTRYID
,t0e_lk.FSTABLENAME
,t4.FMASTERID
,t4i.FINVPTYID
,t4i.FISAFFECTCOST
,t4i.FISENABLE
INTO #TMP_HAS_PARENT_MIS
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
LEFT JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID
LEFT JOIN (
SELECT t1.FBILLNO,t1e.FPRICE
,t1.FID,t1e.FENTRYID
FROM T_STK_MISDELIVERY t1 --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_MISDELIVERYENTRY t1e on t1.FID = t1e.FID
--AND (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY')
) t1 ON (t1.FID = t0e_lk.FSBILLID AND t1.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY')
LEFT JOIN (
SELECT t2.FBILLNO,t2e.FPRICE
,t2.FID,t2e.FENTRYID
FROM T_STK_INSTOCK t2 --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCKENTRY_F t2e on t2.FID = t2e.FID
--AND (t2e.FID = t0e_lk.FSBILLID AND t2e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY')
) t2 ON (t2.FID = t0e_lk.FSBILLID AND t2.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY')
LEFT JOIN (
SELECT t3.FBILLNO,(CASE LTRIM(RTRIM(t3e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,6) ,t3e.FReferPrice) END) AS FPRICE
,t3.FID,t3e.FENTRYID
FROM T_STK_STKTRANSFERIN t3 --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_STKTRANSFERINENTRY t3e on t3.FID = t3e.FID
--AND (t3e.FID = t0e_lk.FSBILLID AND t3e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1')
) t3 ON (t3.FID = t0e_lk.FSBILLID AND t3.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1')
INNER JOIN T_BD_MATERIAL t4 on t4.FMATERIALID = t0e.FMATERIALID
INNER JOIN T_BD_MATERIALINVPTY t4i on t0e.FMATERIALID = t4i.FMATERIALID AND t4i.FINVPTYID = 10001 --AND t4i.FISENABLE = 1
WHERE 1 = 1
AND t0.FSTOCKORGID = 101542
AND t0.FDATE >= '2024-01-01 00:00:00.000'
/********************************ȡ<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>end*****************************************/
/***********************************<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>start***************************************************/
SELECT t0.FID,t0.FENTRYID,t0.FDATE,t0.FBILLNO,t0.FMASTERID
,t0.FMATERIALID,t0.FSTOCKID,t0.FINVPTYID,t0.FISAFFECTCOST,t0.FISENABLE
,(CASE t0.newExplain WHEN ''
THEN (CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1 THEN t2.FDATE ELSE t3.FDATE END)
ELSE t0.newExplain
END)AS 'newExplain'
,(CASE t0.newExplain WHEN '' THEN
(CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1
THEN t2.PRICE
ELSE (CASE WHEN t3.FQTY <> 0 THEN ROUND(t3.FAMOUNT/t3.FQTY,6) ELSE 0 END)
END)
ELSE t0.newReferPrice
END) AS 'newReferPrice'
INTO #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST
FROM #TMP_HAS_PARENT_MIS t0
OUTER APPLY(
SELECT TOP 1 tt1.FDATE
,(CASE WHEN tt1.FQTY <> 0 THEN ROUND(tt1.FAMOUNT/tt1.FQTY,6) ELSE 0 END) AS PRICE
FROM V_MATERIAL_INIVSTOCKDIMENSION tt1
WHERE 1 = 1
AND t0.FMASTERID = tt1.FMASTERID
AND t0.FSTOCKID = tt1.FSTOCKID
AND tt1.DateNum <= t0.DateNum
AND (t0.FISENABLE = 1 AND t0.FISAFFECTCOST = 1)
AND t0.FSTABLENAME IS NULL
AND tt1.FQTY > 0
ORDER BY tt1.FYEAR DESC,tt1.FPERIOD DESC
) t2
OUTER APPLY (
SELECT TOP 1 tt2.FYEAR,tt2.FPERIOD
,CONVERT(nvarchar(10),FYEAR) + '.' + CONVERT(nvarchar(10),FPERIOD) AS FDATE
,SUM(tt2.FAMOUNT) AS FAMOUNT,SUM(tt2.FQTY) AS FQTY
FROM V_MATERIAL_INIVSTOCKDIMENSION tt2
WHERE 1 = 1
AND t0.FMASTERID = tt2.FMASTERID
AND tt2.DateNum <= t0.DateNum
AND (t0.FISENABLE = 0 OR t0.FISAFFECTCOST = 0)
AND t0.FSTABLENAME IS NULL
GROUP BY tt2.FYEAR,tt2.FPERIOD
HAVING SUM(tt2.FQTY) > 0
ORDER BY tt2.FYEAR DESC,tt2.FPERIOD DESC
) t3
--CREATE INDEX #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST_INDEX_FDATE ON #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST(FDATE)
/*****************************************<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>end***********************************************/
/*****************************************<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥstart**********************************************/
SELECT t0.FBILLNO,t0.FID,t0.FENTRYID,t0.FDATE,t0.FMASTERID
,t0.FMATERIALID,t0.FSTOCKID,t0.FINVPTYID,t0.FISAFFECTCOST
,ISNULL((CASE WHEN t0.newReferPrice = 0
THEN (CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1
THEN (CASE WHEN t1.FMATERIALID IS NOT NULL THEN t1.FPRICE ELSE t2.FPRICE END)
ELSE (CASE WHEN t2.FMATERIALID IS NOT NULL THEN t2.FPRICE ELSE t1.FPRICE END)
END)
ELSE t0.newReferPrice
END),0) AS 'newReferPrice'
,ISNULL((CASE WHEN t0.newReferPrice = 0
THEN (CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1
THEN (CASE WHEN t1.FMATERIALID IS NOT NULL THEN 'ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>:'+t1.FBILLNO ELSE 'ȡ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>,<2C><>ͬ<EFBFBD><CDAC>Ϊ:'+t2.FBILLNO END)
ELSE (CASE WHEN t2.FMATERIALID IS NOT NULL THEN 'ȡ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>,<2C><>ͬ<EFBFBD><CDAC>Ϊ:'+t2.FBILLNO ELSE 'ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>:'+t1.FBILLNO END)
END)
ELSE t0.newExplain
END),'û<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>') AS 'newExplain'
INTO #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST_1
FROM #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST t0
OUTER APPLY (
SELECT TOP 1 tt0.FBILLNO,tt0e.FMATERIALID,tt0e.FSTOCKID
,tt0e_f.FPRICE,tt0e_f.FCOSTPRICE
FROM T_STK_INSTOCK tt0 --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCKENTRY tt0e on tt0.FID = tt0e.FID
INNER JOIN T_STK_INSTOCKENTRY_F tt0e_f on tt0e.FENTRYID = tt0e_f.FENTRYID
WHERE
tt0.FDOCUMENTSTATUS = 'C'
AND tt0.FCANCELSTATUS = 'A'
AND tt0.FSTOCKORGID = 101542
AND (tt0e_f.FPRICE != 0 OR tt0e_f.FCOSTPRICE <> 0)
AND t0.FMATERIALID = tt0e.FMATERIALID AND tt0e.FSTOCKID = t0.FSTOCKID
AND DATEDIFF(DAY,tt0.FDATE, t0.FDATE) > -1
ORDER BY tt0.FDATE DESC
) t1
LEFT JOIN T_BD_MATERIAL tt1 on tt1.FMASTERID = t0.FMASTERID AND tt1.FDOCUMENTSTATUS = 'C' AND tt1.FFORBIDSTATUS = 'A'
CROSS APPLY (
SELECT
tt0e.F_QNV_BASE1 AS FMATERIALID
--,tt0e.F_QNV_DECIMAL3 AS FPRICE--<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>
--,tt0e.F_QNV_DECIMAL1 AS FPRICE--<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,tt0e.F_QNV_PRICE AS FPRICE--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,tt0.F_QNV_TEXT2 AS FBILLNO
FROM QNV_t_Cust_Entry100003 tt0 --<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD>ͬ
INNER JOIN QNV_t_Cust_Entry100004 tt0e on tt0.FID = tt0e.FID AND tt1.FMATERIALID = tt0e.F_QNV_BASE1
WHERE 1 = 1
AND tt0.FDOCUMENTSTATUS = 'C'
ORDER BY F_QNV_DATE2 DESC
) t2
--LEFT JOIN (
-- SELECT
-- tt0e.F_QNV_BASE1 AS FMATERIALID
-- --,tt0e.F_QNV_DECIMAL3 AS FPRICE--<2D>ۺϵ<DBBA><CFB5><EFBFBD>
-- --,tt0e.F_QNV_DECIMAL1 AS FPRICE--<2D><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
-- ,tt0e.F_QNV_PRICE AS FPRICE--<2D><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
-- ,tt0.F_QNV_TEXT2 AS FBILLNO
-- ,tt1.FMASTERID
-- ,ROW_NUMBER() OVER (PARTITION BY tt1.FMASTERID ORDER BY F_QNV_DATE2 DESC, tt1.FUSEORGID DESC) 'RN'
-- FROM QNV_t_Cust_Entry100003 tt0 --<2D><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD>ͬ
-- INNER JOIN QNV_t_Cust_Entry100004 tt0e on tt0.FID = tt0e.FID
-- INNER JOIN T_BD_MATERIAL tt1 on tt1.FMATERIALID = tt0e.F_QNV_BASE1
-- WHERE 1 = 1
-- AND tt0.FDOCUMENTSTATUS = 'C'
--) t2 on t0.FMASTERID = t2.FMASTERID AND t2.RN = 1
/*****************************************<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥend**********************************************/
SELECT t0.*
,t1e.FReferPrice,t1e.FReferAmount,t1e.FExplain
FROM #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST_1 t0
INNER JOIN T_STK_MISDELIVERYENTRY t1e on t0.FENTRYID = t1e.FENTRYID
WHERE 1= 1
--AND newExplain = 'û<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>'
--AND t0.fbillno = 'QTCK074080'
DROP TABLE #TMP_HAS_PARENT_MIS
DROP TABLE #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST
DROP TABLE #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST_1

View File

@@ -0,0 +1,176 @@
SELECT
rowSet2.[1] AS 'FMATERIALID'
,rowSet2.[2] AS 'inRow'
,rowSet2.[3] AS 'FSTOCKID'
,rowSet2.[4] AS 'FDate'
,rowSet2.[5] AS 'FSBILLID'
,rowSet2.[6] AS 'FSID'
,rowSet2.[7] AS 'FSTABLENAME'
INTO #TMP_DATA
FROM (SELECT 1 ID,CAST('<v>'+ REPLACE('100123,0,0,2024-04-07 00:00:00,0,0,',';','</v><v>') + '</v>' AS XML) AS xmlVal
) AS valSet
OUTER APPLY (
SELECT ROW_NUMBER() OVER (ORDER BY valSet.ID) RN
,CAST('<v>'+ REPLACE(T.C.value('.','varchar(100)'),',','</v><v>') + '</v>' AS XML) xmlVal
FROM valSet.xmlVal.nodes('/v') AS T(C)
) rowSet
OUTER APPLY (
SELECT TT2.* FROM (
SELECT T.C.value('.','varchar(100)') AS xmlVal
,ROW_NUMBER() OVER (ORDER BY rowSet.RN) RowNo
FROM rowSet.xmlVal.nodes('/v') AS T(C)
) TT
PIVOT (MAX(TT.xmlVal) FOR TT.RowNo IN ([1],[2],[3],[4],[5],[6],[7])) TT2
) rowSet2
/***********************************ȡ<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>start*****************************************/
SELECT t0e_lk.FMATERIALID
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN t1.FPRICE --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>
WHEN 'T_STK_INSTOCKENTRY' THEN t2.FPRICE --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD><EFBFBD><EFBFBD>ۣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN t3.FPRICE --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ELSE 0
END) AS 'newReferPrice'
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN 'Դ_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥ:'+ t1.FBILLNO
WHEN 'T_STK_INSTOCKENTRY' THEN 'Դ_<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥ:'+ t2.FBILLNO
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN (CASE t3.FPRICE WHEN 0 THEN '' ELSE 'Դ_<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>뵥:'+ t3.FBILLNO END)
ELSE ''
END) AS 'newExplain'
,t0e_lk.FSTABLENAME
,t0e_lk.FDATE
,t0e_lk.FSTOCKID
,t0e_lk.inRow
,t4.FMASTERID
,t4i.FINVPTYID
,t4i.FISAFFECTCOST
,t4i.FISENABLE
INTO #TMP_HAS_PARENT_MIS
FROM #TMP_DATA t0e_lk
OUTER APPLY (
SELECT t1.FBILLNO,t1e.FPRICE
FROM T_STK_MISDELIVERY t1 --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_MISDELIVERYENTRY t1e on t1.FID = t1e.FID
AND (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY')
) t1
OUTER APPLY (
SELECT t2.FBILLNO,t2e.FPRICE
FROM T_STK_INSTOCK t2 --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCKENTRY_F t2e on t2.FID = t2e.FID
AND (t2e.FID = t0e_lk.FSBILLID AND t2e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY')
) t2
OUTER APPLY (
SELECT t3.FBILLNO,(CASE LTRIM(RTRIM(t3e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,6) ,t3e.FReferPrice) END) AS FPRICE
FROM T_STK_STKTRANSFERIN t3 --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_STKTRANSFERINENTRY t3e on t3.FID = t3e.FID
AND (t3e.FID = t0e_lk.FSBILLID AND t3e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1')
) t3
INNER JOIN T_BD_MATERIAL t4 on t4.FMATERIALID = t0e.FMATERIALID
INNER JOIN T_BD_MATERIALINVPTY t4i on t0e.FMATERIALID = t4i.FMATERIALID AND t4i.FINVPTYID = 10001 --AND t4i.FISENABLE = 1
WHERE 1 = 1
/***********************************ȡ<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>end********************************************/
/***********************************<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>start***************************************************/
SELECT t0.FDATE
--,t0.FBILLNO,t0.FID,t0.FENTRYID
,t0.FMASTERID,t0.FMATERIALID,t0.FSTOCKID,t0.FINVPTYID,t0.FISAFFECTCOST,t0.FISENABLE
,(CASE t0.newExplain WHEN ''
THEN (CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1 THEN t2.FDATE ELSE t3.FDATE END)
ELSE t0.newExplain
END)AS 'newExplain'
,(CASE t0.newExplain WHEN '' THEN
(CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1
THEN t2.PRICE
ELSE (CASE WHEN t3.FQTY <> 0 THEN ROUND(t3.FAMOUNT/t3.FQTY,6) ELSE 0 END)
END)
ELSE t0.newReferPrice
END) AS 'newReferPrice'
INTO #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST
FROM #TMP_HAS_PARENT_MIS t0
OUTER APPLY(
SELECT TOP 1 tt1.FDATE
,(CASE WHEN tt1.FQTY <> 0 THEN ROUND(tt1.FAMOUNT/tt1.FQTY,6) ELSE 0 END) AS PRICE
FROM V_MATERIAL_INIVSTOCKDIMENSION tt1
WHERE 1 = 1
AND t0.FMASTERID = tt1.FMASTERID
AND t0.FSTOCKID = tt1.FSTOCKID
AND tt1.DateNum <= t0.DateNum
AND (t0.FISENABLE = 1 AND t0.FISAFFECTCOST = 1)
AND t0.FSTABLENAME IS NULL
AND tt1.FQTY > 0
ORDER BY tt1.FYEAR DESC,tt1.FPERIOD DESC
) t2
OUTER APPLY (
SELECT TOP 1 tt2.FYEAR,tt2.FPERIOD
,CONVERT(nvarchar(10),FYEAR) + '.' + CONVERT(nvarchar(10),FPERIOD) AS FDATE
,SUM(tt2.FAMOUNT) AS FAMOUNT,SUM(tt2.FQTY) AS FQTY
FROM V_MATERIAL_INIVSTOCKDIMENSION tt2
WHERE 1 = 1
AND t0.FMASTERID = tt2.FMASTERID
AND tt2.DateNum <= t0.DateNum
AND (t0.FISENABLE = 0 OR t0.FISAFFECTCOST = 0)
AND t0.FSTABLENAME IS NULL
GROUP BY tt2.FYEAR,tt2.FPERIOD
HAVING SUM(tt2.FQTY) > 0
ORDER BY tt2.FYEAR DESC,tt2.FPERIOD DESC
) t3
/*****************************************<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>end***********************************************/
/*****************************************<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥstart**********************************************/
SELECT t0.FDATE
--,t0.FBILLNO,t0.FID,t0.FENTRYID
,t0.FMASTERID,t0.FMATERIALID,t0.FSTOCKID,t0.FINVPTYID,t0.FISAFFECTCOST
,t0.inRow
,ISNULL((CASE WHEN t0.newReferPrice = 0
THEN (CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1
THEN (CASE WHEN t1.FMATERIALID IS NOT NULL THEN t1.FPRICE ELSE t2.FPRICE END)
ELSE (CASE WHEN t2.FMATERIALID IS NOT NULL THEN t2.FPRICE ELSE t1.FPRICE END)
END)
ELSE t0.newReferPrice
END),0) AS 'newReferPrice'
,ISNULL((CASE WHEN t0.newReferPrice = 0
THEN (CASE WHEN t0.FISAFFECTCOST = 1 AND t0.FISENABLE = 1
THEN (CASE WHEN t1.FMATERIALID IS NOT NULL THEN 'ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>:'+t1.FBILLNO ELSE 'ȡ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>,<2C><>ͬ<EFBFBD><CDAC>Ϊ:'+t2.FBILLNO END)
ELSE (CASE WHEN t2.FMATERIALID IS NOT NULL THEN 'ȡ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>,<2C><>ͬ<EFBFBD><CDAC>Ϊ:'+t2.FBILLNO ELSE 'ȡ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>:'+t1.FBILLNO END)
END)
ELSE t0.newExplain
END),'û<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>') AS 'newExplain'
--INTO #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST_1
FROM #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST t0
OUTER APPLY (
SELECT TOP 1 tt0.FBILLNO,tt0e.FMATERIALID,tt0e.FSTOCKID
,tt0e_f.FPRICE,tt0e_f.FCOSTPRICE
FROM T_STK_INSTOCK tt0 --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCKENTRY tt0e on tt0.FID = tt0e.FID
INNER JOIN T_STK_INSTOCKENTRY_F tt0e_f on tt0e.FENTRYID = tt0e_f.FENTRYID
WHERE
tt0.FDOCUMENTSTATUS = 'C'
AND tt0.FCANCELSTATUS = 'A'
AND tt0.FSTOCKORGID = 101542
AND (tt0e_f.FPRICE != 0 OR tt0e_f.FCOSTPRICE <> 0)
AND t0.FMATERIALID = tt0e.FMATERIALID AND tt0e.FSTOCKID = t0.FSTOCKID
AND DATEDIFF(DAY,tt0.FDATE, t0.FDATE) > -1
ORDER BY tt0.FDATE DESC
) t1
LEFT JOIN T_BD_MATERIAL tt1 on tt1.FMASTERID = t0.FMASTERID AND tt1.FDOCUMENTSTATUS = 'C' AND tt1.FFORBIDSTATUS = 'A'
CROSS APPLY (
SELECT
tt0e.F_QNV_BASE1 AS FMATERIALID
--,tt0e.F_QNV_DECIMAL3 AS FPRICE--<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>
--,tt0e.F_QNV_DECIMAL1 AS FPRICE--<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,tt0e.F_QNV_PRICE AS FPRICE--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,tt0.F_QNV_TEXT2 AS FBILLNO
FROM QNV_t_Cust_Entry100003 tt0 --<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD>ͬ
INNER JOIN QNV_t_Cust_Entry100004 tt0e on tt0.FID = tt0e.FID AND tt1.FMATERIALID = tt0e.F_QNV_BASE1
WHERE 1 = 1
AND tt0.FDOCUMENTSTATUS = 'C'
ORDER BY F_QNV_DATE2 DESC
) t2
/*****************************************<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥend**********************************************/
DROP TABLE #TMP_DATA
DROP TABLE #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>
DROP TABLE #TMP_HAS_PARENT_MIS
--DROP TABLE #TMP_NOT_PARENT_MIS
DROP TABLE #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST
--DROP TABLE #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>_END_LIST_1

View File

@@ -0,0 +1,125 @@
--v1.0 --<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN t1e.FPRICE --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>
WHEN 'T_STK_INSTOCKENTRY' THEN t2e.FPRICE --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD><EFBFBD><EFBFBD>ۣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN (CASE LTRIM(RTRIM(t3e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,2) ,t3e.FReferPrice) END) --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ELSE 0
END) AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,(CASE t0e_lk.FSTABLENAME
WHEN 'T_STK_MISDELIVERYENTRY' THEN t1.FBILLNO
WHEN 'T_STK_INSTOCKENTRY' THEN t2.FBILLNO
WHEN 'T_STK_STKTRANSFERINENTRY1' THEN t3.FBILLNO
ELSE ''
END) AS '<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>'
,t0e_lk.FSTABLENAME
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID
LEFT JOIN T_STK_MISDELIVERYENTRY t1e
on (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY') --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_MISDELIVERY t1 on t0e_lk.FSBILLID = t1.FID
LEFT JOIN T_STK_INSTOCKENTRY_F t2e
on (t2e.FID = t0e_lk.FSBILLID AND t2e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY') --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCK t2 on t0e_lk.FSBILLID = t2.FID
LEFT JOIN T_STK_STKTRANSFERINENTRY t3e
on (t3e.FID = t0e_lk.FSBILLID AND t3e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1') --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_STKTRANSFERIN t3 on t0e_lk.FSBILLID = t3.FID
WHERE t0.FSTOCKORGID = 101542
AND t0e_lk.FSTABLENAME IN ('T_STK_STKTRANSFERINENTRY1','T_STK_INSTOCKENTRY' ,'T_STK_MISDELIVERYENTRY')
--v2.0
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,(CASE
WHEN t1.LinkId IS NOT NULL THEN t1.FPRICE --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>ɱ<EFBFBD><EFBFBD><EFBFBD>
WHEN t2.LinkId IS NOT NULL THEN t2.FPRICE --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD><EFBFBD><EFBFBD>ۣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>
WHEN t3.LinkId IS NOT NULL THEN t3.FPRICE --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> -<EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ELSE 0
END) AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,(CASE WHEN t1.LinkId is not null THEN t1.FBILLNO
WHEN t2.LinkId is not null THEN t2.FBILLNO
WHEN t3.LinkId is not null THEN t3.FBILLNO
ELSE ''
END) AS '<EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>'
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e_lk.FENTRYID = t0e.FENTRYID
LEFT JOIN (
SELECT t1.FBILLNO,t1e.FPRICE,t0e_lk.FENTRYID AS LinkId,t0e_lk.FSTABLENAME
FROM T_STK_MISDELIVERY t1 --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_MISDELIVERYENTRY t1e on t1.FID = t1e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY'
) t1 on t1.LinkId = t0e.FENTRYID
LEFT JOIN (
SELECT t2.FBILLNO,t2e.FPRICE,t0e_lk.FENTRYID AS LinkId,t0e_lk.FSTABLENAME
FROM T_STK_INSTOCK t2 --<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCKENTRY_F t2e on t2e.FID = t2.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t2e.FID = t0e_lk.FSBILLID AND t2e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY'
) t2 on t2.LinkId = t0e.FENTRYID
LEFT JOIN (
SELECT t3.FBILLNO
,(CASE LTRIM(RTRIM(t3e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,2) ,t3e.FReferPrice) END) AS 'FPRICE'
,t0e_lk.FENTRYID AS LinkId
,t0e_lk.FSTABLENAME
FROM T_STK_STKTRANSFERIN t3 --<EFBFBD>ֲ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_STKTRANSFERINENTRY t3e on t3.FID = t3e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t3e.FID = t0e_lk.FSBILLID AND t3e.FENTRYID = t0e_lk.FSID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1'
) t3 on t3.LinkId = t0e.FENTRYID
WHERE t0.FSTOCKORGID = 101542
--v3.0
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,t1e.FPRICE AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,t0e_lk.FSTABLENAME
,t1.FBILLNO
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID AND t0e_lk.FSTABLENAME = 'T_STK_MISDELIVERYENTRY'
INNER JOIN T_STK_MISDELIVERYENTRY t1e
on (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID) --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_MISDELIVERY t1 on t0e_lk.FSBILLID = t1.FID
WHERE t0.FSTOCKORGID = 101542
UNION ALL
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,t1e.FPRICE AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,t0e_lk.FSTABLENAME
,t1.FBILLNO
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID AND t0e_lk.FSTABLENAME = 'T_STK_INSTOCKENTRY'
INNER JOIN T_STK_INSTOCKENTRY_F t1e
on (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID) --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_INSTOCK t1 on t0e_lk.FSBILLID = t1.FID
WHERE t0.FSTOCKORGID = 101542
UNION ALL
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID
,(CASE LTRIM(RTRIM(t1e.FReferPrice)) WHEN '' THEN 0 ELSE CONVERT(decimal(23,2) ,t1e.FReferPrice) END) AS newReferPrice
,t0e.FReferPrice
,t0e.FReferAmount
,t0e_lk.FSTABLENAME
,t1.FBILLNO
FROM T_STK_MISDELIVERY t0
INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_STK_MISDELIVERYENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID AND t0e_lk.FSTABLENAME = 'T_STK_STKTRANSFERINENTRY1'
INNER JOIN T_STK_STKTRANSFERINENTRY t1e
on (t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID) --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_STK_STKTRANSFERIN t1 on t0e_lk.FSBILLID = t1.FID
WHERE t0.FSTOCKORGID = 101542
/***********<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD>ȹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯstart**********/
--SELECT t0.FNUMBER,t0.FMATERIALID,t0i.FINVPTYID
--FROM T_BD_MATERIAL t0
-- INNER JOIN T_BD_MATERIALINVPTY t0i
-- on t0.FMATERIALID = t0i.FMATERIALID
-- AND t0i.FINVPTYID = 10001
-- AND t0i.FISAFFECTCOST = 1
--WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FFORBIDSTATUS = 'A'
/***********<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD>ȹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯend**********/

View File

@@ -0,0 +1,37 @@
--IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='V_MATERIAL_INIVSTOCKDIMENSION') --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-- DROP VIEW V_MATERIAL_INIVSTOCKDIMENSION --<2D><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
--GO
CREATE VIEW V_MATERIAL_INIVSTOCKDIMENSION
AS
SELECT
FYEAR,FPERIOD,t.FMASTERID,t.FSTOCKID
,sum(FAMOUNT) AS FAMOUNT
,sum(FQTY) AS FQTY
,CONVERT(nvarchar(10),FYEAR)+'.'+CONVERT(nvarchar(10),FPERIOD) AS FDATE
,FYEAR * 100 + FPERIOD AS DateNum
,ROW_NUMBER() over (ORDER BY FYEAR DESC,FPERIOD DESC) RN
--INTO #TMP_<50><5F><EFBFBD><EFBFBD><E6B5A5>
FROM (SELECT THO.FYEAR ,THO.FPERIOD,THIB.FAMOUNT,THIB.FQTY,THS.FSTOCKID,THS.FMATERIALID,t4.FMASTERID
FROM T_HS_INIVSTOCKDIMENSION THS --<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_HS_INIVBALANCE THIB --<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD>
ON (THS.FENTRYID = THIB.FDIMEENTRYID AND THIB.FENDINITKEY = '0')
INNER JOIN T_HS_OUTACCTG THO ON THIB.FID = THO.FID
INNER JOIN T_HS_CALDIMENSIONS TCH ON TCH.FDIMENSIONID = THO.FDIMENSIONID
INNER JOIN T_BD_MATERIAL t4 on t4.FMATERIALID = THS.FMATERIALID
WHERE
((TCH.FACCTSYSTEMID = 1 AND TCH.FACCTPOLICYID = 1) AND THS.FSTOCKORGID = 101542)
--AND t4.FMASTERID in (SELECT DISTINCT FMASTERID FROM #TMP_HAS_PARENT_MIS WHERE newReferPrice !=0)
UNION ALL
SELECT THO.FYEAR ,THO.FPERIOD, THIB.FAMOUNT,THIB.FQTY,THS.FSTOCKID,THS.FMATERIALID,t4.FMASTERID
FROM T_HS_INIVSTOCKDIMENSION THS --<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INNER JOIN T_HS_INIVBALANCE_H THIB --<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD>
ON (THS.FENTRYID = THIB.FDIMEENTRYID AND THIB.FENDINITKEY = '0')
INNER JOIN T_HS_OUTACCTG THO ON THIB.FID = THO.FID
INNER JOIN T_HS_CALDIMENSIONS TCH ON TCH.FDIMENSIONID = THO.FDIMENSIONID
INNER JOIN T_BD_MATERIAL t4 on t4.FMATERIALID = THS.FMATERIALID
WHERE
((TCH.FACCTSYSTEMID = 1 AND TCH.FACCTPOLICYID = 1) AND THS.FSTOCKORGID = 101542)
--AND t4.FMASTERID in (SELECT DISTINCT FMASTERID FROM #TMP_HAS_PARENT_MIS WHERE newReferPrice !=0)
) t
GROUP BY FYEAR,FPERIOD,t.FMASTERID,t.FSTOCKID
--ORDER BY FYEAR DESC,FPERIOD DESC