提交 9df16ae2 authored 作者: 谢雨莎's avatar 谢雨莎

提高性能;

上级 dbf255be
...@@ -46,6 +46,19 @@ namespace LQKJ_OFLCostReport ...@@ -46,6 +46,19 @@ namespace LQKJ_OFLCostReport
[Description("获取销售订单明细报表数据"), HotUpdate] [Description("获取销售订单明细报表数据"), HotUpdate]
public class CostReportPlugin : AbstractListPlugIn public class CostReportPlugin : AbstractListPlugIn
{ {
public override void PreOpenForm(PreOpenFormEventArgs e)
{
if (DBServiceHelper.IsExistTable(e.Context, "cbmxCursor"))
{
DBServiceHelper.Execute(e.Context, $"DELETE FROM cbmxCursor_ckzjcl where FUserID ={e.Context.UserId};");
DBServiceHelper.Execute(e.Context, $"DELETE FROM cbmxCursor_ckzjrg where FUserID ={e.Context.UserId};");
DBServiceHelper.Execute(e.Context, $"DELETE FROM cbmxCursor_ckzzfy where FUserID ={e.Context.UserId};");
DBServiceHelper.Execute(e.Context, $"DELETE FROM cbmxCursor_ckljzj where FUserID ={e.Context.UserId};");
DBServiceHelper.Execute(e.Context, $"DELETE FROM cbmxCursor where FUserID ={e.Context.UserId};");
}
base.PreOpenForm(e);
}
private bool isLoading = false; private bool isLoading = false;
public override void OnLoad(EventArgs e) public override void OnLoad(EventArgs e)
...@@ -56,7 +69,27 @@ namespace LQKJ_OFLCostReport ...@@ -56,7 +69,27 @@ namespace LQKJ_OFLCostReport
ShowProgressBar(false); ShowProgressBar(false);
} }
public override void FormClosed(FormClosedEventArgs e)
{
base.FormClosed(e);
if (DBServiceHelper.IsExistTable(this.Context, "cbmxCursor"))
{
DBServiceHelper.Execute(this.Context, $"DELETE FROM cbmxCursor_ckzjcl where FUserID ={this.Context.UserId};");
DBServiceHelper.Execute(this.Context, $"DELETE FROM cbmxCursor_ckzjrg where FUserID ={this.Context.UserId};");
DBServiceHelper.Execute(this.Context, $"DELETE FROM cbmxCursor_ckzzfy where FUserID ={this.Context.UserId};");
DBServiceHelper.Execute(this.Context, $"DELETE FROM cbmxCursor_ckljzj where FUserID ={this.Context.UserId};");
DBServiceHelper.Execute(this.Context, $"DELETE FROM cbmxCursor where FUserID ={this.Context.UserId};");
}
}
public override void PrepareFilterParameter(FilterArgs e)
{
base.PrepareFilterParameter(e);
e.FilterString = $@"FUserID={this.Context.UserId}";
}
private void ShowProgressBar(bool userTruePro) private void ShowProgressBar(bool userTruePro)
{ {
...@@ -66,21 +99,9 @@ namespace LQKJ_OFLCostReport ...@@ -66,21 +99,9 @@ namespace LQKJ_OFLCostReport
{ {
try try
{ {
string sql = $@"IF EXISTS (SELECT * FROM sys.tables WHERE name = 'cbmxCursor')
BEGIN
delete cbmxCursor where FUserID ={this.Context.UserId}
END";
DBServiceHelper.Execute(this.Context, sql);
this.View.Session["ProcessRateValue"] = 10; this.View.Session["ProcessRateValue"] = 10;
DataTable dataTable = GetSaleDetailData(); string tmpTableName = GetSaleDetailData();
string tmpTableName = createTmpTable(dataTable); CreateView(tmpTableName);
//向表插入数据
using (KDTransactionScope scope = new KDTransactionScope(TransactionScopeOption.Required))
{
DBUtils.BulkInserts(this.Context, dataTable);
scope.Complete();
}
CreateView();
this.View.Session["ProcessRateValue"] = 100; this.View.Session["ProcessRateValue"] = 100;
isLoading = true; isLoading = true;
this.View.Refresh(); this.View.Refresh();
...@@ -97,23 +118,8 @@ END"; ...@@ -97,23 +118,8 @@ END";
}, null); }, null);
} }
public override void FormClosed(FormClosedEventArgs e)
{
base.FormClosed(e);
string sql = $@"IF EXISTS (SELECT * FROM sys.tables WHERE name = 'cbmxCursor')
BEGIN
delete cbmxCursor where FUserID ={this.Context.UserId}
END";
DBServiceHelper.Execute(this.Context, sql);
}
public override void PrepareFilterParameter(FilterArgs e)
{
base.PrepareFilterParameter(e);
e.FilterString = $@"FUserID={this.Context.UserId}";
}
// 获取销售明细简单账表数据 // 获取销售明细简单账表数据
public DataTable GetSaleDetailData() public string GetSaleDetailData()
{ {
this.View.Session["ProcessRateValue"] = 20; this.View.Session["ProcessRateValue"] = 20;
ISysReportService sysReporSservice = ServiceFactory.GetSysReportService(this.Context); ISysReportService sysReporSservice = ServiceFactory.GetSysReportService(this.Context);
...@@ -145,368 +151,403 @@ END"; ...@@ -145,368 +151,403 @@ END";
p.FilterParameter = filter; p.FilterParameter = filter;
p.FilterFieldInfo = model.FilterFieldInfo; p.FilterFieldInfo = model.FilterFieldInfo;
p.BaseDataTempTable.AddRange(permissionService.GetBaseDataTempTable(this.Context, saleMetadata.BusinessInfo.GetForm().Id)); p.BaseDataTempTable.AddRange(permissionService.GetBaseDataTempTable(this.Context, saleMetadata.BusinessInfo.GetForm().Id));
using (DataTable dt = sysReporSservice.GetData(this.Context, saleMetadata.BusinessInfo, p)) return sysReporSservice.GetDataTableName(this.Context, saleMetadata.BusinessInfo, p);
{
DataColumn newColumn = new DataColumn("FUserID", typeof(int));
dt.Columns.Add(newColumn);
foreach (DataRow row in dt.Rows)
{
row["FUserID"] = this.Context.UserId;
}
//dt.Rows
return dt;
//dt就是报表数据,接下来就是你发挥的时间。
}
} finally } finally
{ {
this.View.Session["ProcessRateValue"] = 50; this.View.Session["ProcessRateValue"] = 50;
ServiceFactory.CloseService(sysReporSservice); ServiceFactory.CloseService(sysReporSservice);
ServiceFactory.CloseService(permissionService); ServiceFactory.CloseService(permissionService);
} }
}
public string createTmpTable(DataTable data)
{
this.View.Session["ProcessRateValue"] = 60;
string fieldColumnSql = GetCreateTmpTableNameSql(data.Columns);
string tmpTableName = "cbmxCursor";
data.TableName = tmpTableName;
string createTmpTableSql = $@"/*dialect*/
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = '{tmpTableName}')
BEGIN
CREATE TABLE {tmpTableName} {fieldColumnSql};
CREATE INDEX idx_cbmx_FBillEntryId ON {tmpTableName} (FBillEntryId);
CREATE INDEX idx_cbmx_FBillNo ON {tmpTableName} (FBillNo);
CREATE INDEX idx_cbmx_FBillSeq ON {tmpTableName} (FBillSeq);
CREATE INDEX idx_cbmx_FSTOCKID ON {tmpTableName} (FSTOCKID);
CREATE INDEX idx_cbmx_FEXPENSEID ON {tmpTableName} (FEXPENSEID);
CREATE INDEX idx_cbmx_FUserId ON {tmpTableName} (FUserID);
END
ELSE
BEGIN
ALTER INDEX idx_cbmx_FBillEntryId ON {tmpTableName} REBUILD;
ALTER INDEX idx_cbmx_FBillNo ON {tmpTableName} REBUILD;
ALTER INDEX idx_cbmx_FBillSeq ON {tmpTableName} REBUILD;
ALTER INDEX idx_cbmx_FSTOCKID ON {tmpTableName} REBUILD;
ALTER INDEX idx_cbmx_FEXPENSEID ON {tmpTableName} REBUILD;
ALTER INDEX idx_cbmx_FUserId ON {tmpTableName} REBUILD;
END
";
DBServiceHelper.Execute(this.Context, createTmpTableSql);
this.View.Session["ProcessRateValue"] = 70;
return tmpTableName;
} }
private string GetCreateTmpTableNameSql(DataColumnCollection fieldColumn) private void CreateView(string tmpTableName)
{ {
StringBuilder stringBuilder = new StringBuilder(); if (!DBServiceHelper.IsExistTable(this.Context, "cbmxCursor"))
stringBuilder.AppendLine("(");
List<string> listStr = new List<string>();
foreach (var field in fieldColumn)
{ {
listStr.Add(Convert.ToString(field).Trim() + " nvarchar(1000)"); DBServiceHelper.Execute(this.Context, $@"select *,{this.Context.UserId} FUSERID into cbmxCursor from {tmpTableName}");
DBServiceHelper.Execute(this.Context, $@"/*dialect*/
SELECT t1.FBillNo,
t1.FUSERID,
t1.FBillSeq,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutDirectMaterial--直接材料
into cbmxCursor_ckzjcl FROM cbmxCursor t1
left join T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME = '材料成本'
and t1.FEXPENSENAME <> '小计'
group by t1.FBillNo, t1.FBillSeq, t1.FUSERID
");
DBServiceHelper.Execute(this.Context, $@"/*dialect*/
SELECT t1.FBillNo, t1.FUSERID, t1.FBillSeq, SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutDirectLabor--直接人工
into cbmxCursor_ckzjrg FROM cbmxCursor t1
left join
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME = '工资'
and t1.FEXPENSENAME <> '小计'
group by t1.FBillNo, t1.FBillSeq, t1.FUSERID
");
DBServiceHelper.Execute(this.Context, $@"/*dialect*/
SELECT t1.FBillNo,
t1.FUSERID,
t1.FBillSeq,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutManufacturingCost--制造费用
into cbmxCursor_ckzzfy FROM cbmxCursor t1
left join
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME <> '材料成本'
and t2L.FNAME <> '工资'
and FNAME not like '%折旧费用%'
and t1.FEXPENSENAME <> '小计'
group by t1.FBillNo, t1.FBillSeq, t1.FUSERID
");
DBServiceHelper.Execute(this.Context, $@"/*dialect*/
SELECT t1.FBillNo,
t1.FUSERID,
t1.FBillSeq,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutAddDepreciation --累计折旧
into cbmxCursor_ckljzj FROM cbmxCursor t1
left join
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where FNAME like '%折旧费用%'
and t1.FEXPENSENAME <> '小计'
group by t1.FBillNo, t1.FBillSeq, t1.FUSERID
");
string createTmpTableSql = $@"/*dialect*/
CREATE INDEX idx_cbmx_FBillEntryId ON cbmxCursor (FBillEntryId);
CREATE INDEX idx_cbmx_FBillNo ON cbmxCursor (FBillNo);
CREATE INDEX idx_cbmx_FBillSeq ON cbmxCursor (FBillSeq);
CREATE INDEX idx_cbmx_FSTOCKID ON cbmxCursor (FSTOCKID);
CREATE INDEX idx_cbmx_FEXPENSEID ON cbmxCursor (FEXPENSEID);
CREATE INDEX idx_cbmx_FUserId ON cbmxCursor (FUserID);
CREATE INDEX idx_cbmxCursor_ckzjcl_FBillNo ON cbmxCursor_ckzjcl (FBillNo);
CREATE INDEX idx_cbmxCursor_ckzjcl_FBillSeq ON cbmxCursor_ckzjcl (FBillSeq);
CREATE INDEX idx_cbmxCursor_ckzjcl_FUserId ON cbmxCursor_ckzjcl (FUSERID);
CREATE INDEX idx_cbmxCursor_ckzjrg_FBillNo ON cbmxCursor_ckzjrg (FBillNo);
CREATE INDEX idx_cbmxCursor_ckzjrg_FBillSeq ON cbmxCursor_ckzjrg (FBillSeq);
CREATE INDEX idx_cbmxCursor_ckzjrg_FUserId ON cbmxCursor_ckzjrg (FUSERID);
CREATE INDEX idx_cbmxCursor_ckzzfy_FBillNo ON cbmxCursor_ckzzfy (FBillNo);
CREATE INDEX idx_cbmxCursor_ckzzfy_FBillSeq ON cbmxCursor_ckzzfy (FBillSeq);
CREATE INDEX idx_cbmxCursor_ckzzfy_FUserId ON cbmxCursor_ckzzfy (FUSERID);
CREATE INDEX idx_cbmxCursor_ckljzj_FBillNo ON cbmxCursor_ckljzj (FBillNo);
CREATE INDEX idx_cbmxCursor_ckljzj_FBillSeq ON cbmxCursor_ckljzj (FBillSeq);
CREATE INDEX idx_cbmxCursor_ckljzj_FUserId ON cbmxCursor_ckljzj (FUSERID);
";
DBServiceHelper.Execute(this.Context, createTmpTableSql);
} }
stringBuilder.AppendLine(String.Join(",", listStr.Distinct())); else
stringBuilder.AppendLine(")"); {
return stringBuilder.ToString(); DBServiceHelper.Execute(this.Context, $@"insert into cbmxCursor select *,{this.Context.UserId} FUSERID from {tmpTableName}");
}
private void CreateView() DBServiceHelper.Execute(this.Context, $@"/*dialect*/
{ insert into cbmxCursor_ckzjcl SELECT t1.FBillNo,
t1.FUSERID,
t1.FBillSeq,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutDirectMaterial--直接材料
FROM cbmxCursor t1
left join T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME = '材料成本'
and t1.FEXPENSENAME <> '小计'
group by t1.FBillNo, t1.FBillSeq, t1.FUSERID
");
DBServiceHelper.Execute(this.Context, $@"/*dialect*/
insert into cbmxCursor_ckzjrg SELECT t1.FBillNo,t1.FUSERID, t1.FBillSeq, SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutDirectLabor--直接人工
FROM cbmxCursor t1
left join
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME = '工资'
and t1.FEXPENSENAME <> '小计'
group by t1.FBillNo, t1.FBillSeq, t1.FUSERID
");
DBServiceHelper.Execute(this.Context, $@"/*dialect*/
insert into cbmxCursor_ckzzfy SELECT t1.FBillNo,
t1.FUSERID,
t1.FBillSeq,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutManufacturingCost--制造费用
FROM cbmxCursor t1
left join
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME <> '材料成本'
and t2L.FNAME <> '工资'
and FNAME not like '%折旧费用%'
and t1.FEXPENSENAME <> '小计'
group by t1.FBillNo, t1.FBillSeq, t1.FUSERID
");
DBServiceHelper.Execute(this.Context, $@"/*dialect*/
insert into cbmxCursor_ckljzj SELECT t1.FBillNo,
t1.FUSERID,
t1.FBillSeq,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutAddDepreciation --累计折旧
FROM cbmxCursor t1
left join
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where FNAME like '%折旧费用%'
and t1.FEXPENSENAME <> '小计'
group by t1.FBillNo, t1.FBillSeq, t1.FUSERID
");
string createTmpTableSql = $@"/*dialect*/
ALTER INDEX idx_cbmx_FBillEntryId ON cbmxCursor REBUILD;
ALTER INDEX idx_cbmx_FBillNo ON cbmxCursor REBUILD;
ALTER INDEX idx_cbmx_FBillSeq ON cbmxCursor REBUILD;
ALTER INDEX idx_cbmx_FSTOCKID ON cbmxCursor REBUILD;
ALTER INDEX idx_cbmx_FEXPENSEID ON cbmxCursor REBUILD;
ALTER INDEX idx_cbmx_FUserId ON cbmxCursor REBUILD;
ALTER INDEX idx_cbmxCursor_ckzjcl_FBillNo ON cbmxCursor_ckzjcl REBUILD;
ALTER INDEX idx_cbmxCursor_ckzjcl_FBillSeq ON cbmxCursor_ckzjcl REBUILD;
ALTER INDEX idx_cbmxCursor_ckzjcl_FUserId ON cbmxCursor_ckzjcl REBUILD;
ALTER INDEX idx_cbmxCursor_ckzjrg_FBillNo ON cbmxCursor_ckzjrg REBUILD;
ALTER INDEX idx_cbmxCursor_ckzjrg_FBillSeq ON cbmxCursor_ckzjrg REBUILD;
ALTER INDEX idx_cbmxCursor_ckzjrg_FUserId ON cbmxCursor_ckzjrg REBUILD;
ALTER INDEX idx_cbmxCursor_ckzzfy_FBillNo ON cbmxCursor_ckzzfy REBUILD;
ALTER INDEX idx_cbmxCursor_ckzzfy_FBillSeq ON cbmxCursor_ckzzfy REBUILD;
ALTER INDEX idx_cbmxCursor_ckzzfy_FUserId ON cbmxCursor_ckzzfy REBUILD;
ALTER INDEX idx_cbmxCursor_ckljzj_FBillNo ON cbmxCursor_ckljzj REBUILD;
ALTER INDEX idx_cbmxCursor_ckljzj_FBillSeq ON cbmxCursor_ckljzj REBUILD;
ALTER INDEX idx_cbmxCursor_ckljzj_FUserId ON cbmxCursor_ckljzj REBUILD;
";
DBServiceHelper.Execute(this.Context, createTmpTableSql);
}
this.View.Session["ProcessRateValue"] = 80; this.View.Session["ProcessRateValue"] = 80;
string sql = $@"/*dialect*/IF OBJECT_ID('T_BAS_PREBDTWO', 'V') IS NULL string sql = $@"/*dialect*/IF OBJECT_ID('T_BAS_PREBDTWO', 'V') IS NULL
BEGIN BEGIN
EXEC('CREATE VIEW T_BAS_PREBDTWO AS EXEC('CREATE VIEW T_BAS_PREBDTWO AS
select ROW_NUMBER() OVER (ORDER BY FOutBillNo,FOutBillSeq) AS FID,* from ( select ROW_NUMBER() OVER (ORDER BY FOutBillNo,FOutBillSeq) AS FID,* from (
select ''0'' FNUMBER, select ''0'' FNUMBER,
''0'' FMASTERID, ''0'' FMASTERID,
''0'' FUSEORGID, ''0'' FUSEORGID,
''0'' FFORBIDSTATUS, ''0'' FFORBIDSTATUS,
t1.FBillDate FOutBillDate, -- 出库业务日期 t1.FBillDate FOutBillDate, -- 出库业务日期
t1.FBillNo FOutBillNo, -- 出库单据编号 t1.FBillNo FOutBillNo, -- 出库单据编号
t1.FBillSeq FOutBillSeq, -- 出库单据行号 t1.FBillSeq FOutBillSeq, -- 出库单据行号
t5.FNUMBER FMATERIALID, -- 物料编码 t5.FNUMBER FMATERIALID, -- 物料编码
t1.FMaterialName, -- 物料名称 t1.FMaterialName, -- 物料名称
t1.FSpecification, -- 规格型号 t1.FSpecification, -- 规格型号
ckmx.FREALQTY FOutQty, --出库数量 ckmx.FREALQTY FOutQty, --出库数量
t1.FUserID, ck.FNAME FSTOCKID, --仓库
ck.FNAME FSTOCKID, --仓库 t1.FUSERID,
ISNULL(ckzjcl.FOutDirectMaterial, 0) FOutDirectMaterial, --出库直接材料 ISNULL(ckzjcl.FOutDirectMaterial, 0) FOutDirectMaterial, --出库直接材料
ISNULL(ckzjrg.FOutDirectLabor, 0) FOutDirectLabor, --出库直接人工 ISNULL(ckzjrg.FOutDirectLabor, 0) FOutDirectLabor, --出库直接人工
ISNULL(ckzzfy.FOutManufacturingCost, 0) FOutManufacturingCost, --出库制造费用 ISNULL(ckzzfy.FOutManufacturingCost, 0) FOutManufacturingCost, --出库制造费用
ISNULL(ckljzj.FOutAddDepreciation, 0) FOutAddDepreciation, --出库累计折旧 ISNULL(ckljzj.FOutAddDepreciation, 0) FOutAddDepreciation, --出库累计折旧
ISNULL(ckzjcl.FOutDirectMaterial, 0) + ISNULL(ckzjrg.FOutDirectLabor, 0) + ISNULL(ckzjcl.FOutDirectMaterial, 0) + ISNULL(ckzjrg.FOutDirectLabor, 0) +
ISNULL(ckzzfy.FOutManufacturingCost, 0) + ISNULL(ckzzfy.FOutManufacturingCost, 0) +
ISNULL(ckljzj.FOutAddDepreciation, 0) FOutTotalCost, --出库成本合计 ISNULL(ckljzj.FOutAddDepreciation, 0) FOutTotalCost, --出库成本合计
t3.FDATE FRecBillDate, --应收业务日期 t3.FDATE FRecBillDate, --应收业务日期
t3.FBILLNO FRecBillNo, --应收单据编号 t3.FBILLNO FRecBillNo, --应收单据编号
t2.FPRICEQTY FPriceQty, --计价数量 t2.FPRICEQTY FPriceQty, --计价数量
t2.FTAXPRICE, --含税单价 t2.FTAXPRICE, --含税单价
t2.FPRICE, --单价 t2.FPRICE, --单价
t2.FENTRYTAXRATE, --税率, t2.FENTRYTAXRATE, --税率,
t2.FNOTAXAMOUNT FNOTAXAMOUNTFOR, --不含税金额 t2.FNOTAXAMOUNT FNOTAXAMOUNTFOR, --不含税金额
t2.FTAXAMOUNTFOR, --税额 t2.FTAXAMOUNTFOR, --税额
t2.FALLAMOUNTFOR, --价税合计 t2.FALLAMOUNTFOR, --价税合计
(ISNULL(ckzjcl.FOutDirectMaterial, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
(ISNULL(ckzjcl.FOutDirectMaterial, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) AS FInDirectMaterial, -- 收入直接材料
ISNULL(t2.FPRICEQTY, 0)) AS FInDirectMaterial, -- 收入直接材料 (ISNULL(ckzjrg.FOutDirectLabor, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
ISNULL(t2.FPRICEQTY, 0)) AS FInDirectLabor, -- 收入直接人工
(ISNULL(ckzzfy.FOutManufacturingCost, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
(ISNULL(ckzjrg.FOutDirectLabor, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) AS FInManufacturingCost, -- 收入制造费用
ISNULL(t2.FPRICEQTY, 0)) AS FInDirectLabor, -- 收入直接人工 (ISNULL(ckljzj.FOutAddDepreciation, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
ISNULL(t2.FPRICEQTY, 0)) AS FInAddDepreciation, -- 收入累计折旧
(ISNULL(ckzjcl.FOutDirectMaterial, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) +
(ISNULL(ckzzfy.FOutManufacturingCost, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * (ISNULL(ckzjrg.FOutDirectLabor, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) +
ISNULL(t2.FPRICEQTY, 0)) AS FInManufacturingCost, -- 收入制造费用 (ISNULL(ckzzfy.FOutManufacturingCost, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) +
(ISNULL(ckljzj.FOutAddDepreciation, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
ISNULL(t2.FPRICEQTY, 0)) AS FInTotalCost -- 收入成本合计
(ISNULL(ckljzj.FOutAddDepreciation, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * from cbmxCursor t1
ISNULL(t2.FPRICEQTY, 0)) AS FInAddDepreciation, -- 收入累计折旧 left join T_SAL_OUTSTOCKENTRY ckmx on ckmx.FENTRYID = t1.FBillEntryId and t1.FBillFormId = ''SAL_OUTSTOCK''
left join T_AR_RECEIVABLEENTRY_LK yslk
on t1.FBillEntryId = yslk.FSID and yslk.FSTABLENAME = ''T_SAL_OUTSTOCKENTRY''
(ISNULL(ckzjcl.FOutDirectMaterial, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) + left join t_AR_receivableEntry t2
(ISNULL(ckzjrg.FOutDirectLabor, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) + on t2.FENTRYID = yslk.FENTRYID
(ISNULL(ckzzfy.FOutManufacturingCost, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) + left join T_AR_RECEIVABLE t3 on t2.FID = t3.FID
(ISNULL(ckljzj.FOutAddDepreciation, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * left join T_BD_STOCK_L ck on t1.FSTOCKID = ck.FSTOCKID
ISNULL(t2.FPRICEQTY, 0)) AS FInTotalCost -- 收入成本合计 left join T_BD_EXPENSE t4 on t1.FEXPENSEID = t4.FNUMBER
left join T_BD_MATERIAL t5 on t1.FMATERIALID = t5.FMATERIALID
from cbmxCursor t1 left join cbmxCursor_ckzjcl ckzjcl
left join T_SAL_OUTSTOCKENTRY ckmx on ckmx.FENTRYID = t1.FBillEntryId and t1.FBillFormId = ''SAL_OUTSTOCK'' on t1.FBillNo = ckzjcl.FBillNo and t1.FBillSeq = ckzjcl.FBillSeq and t1.FUSERID = ckzjcl.FUSERID
left join T_AR_RECEIVABLEENTRY_LK yslk left join cbmxCursor_ckzjrg ckzjrg
on t1.FBillEntryId = yslk.FSID and yslk.FSTABLENAME = ''T_SAL_OUTSTOCKENTRY'' on t1.FBillNo = ckzjrg.FBillNo and t1.FBillSeq = ckzjrg.FBillSeq and t1.FUSERID = ckzjrg.FUSERID
left join t_AR_receivableEntry t2 left join cbmxCursor_ckzzfy ckzzfy
on t2.FENTRYID = yslk.FENTRYID on t1.FBillNo = ckzzfy.FBillNo and t1.FBillSeq = ckzzfy.FBillSeq and t1.FUSERID = ckzzfy.FUSERID
left join T_AR_RECEIVABLE t3 on t2.FID = t3.FID left join cbmxCursor_ckljzj ckljzj
left join T_BD_STOCK_L ck on t1.FSTOCKID = ck.FSTOCKID on t1.FBillNo = ckljzj.FBillNo and t1.FBillSeq = ckljzj.FBillSeq and t1.FUSERID = ckljzj.FUSERID
left join T_BD_EXPENSE t4 on t1.FEXPENSEID = t4.FNUMBER where ckmx.FID is not null
left join T_BD_MATERIAL t5 on t1.FMATERIALID = t5.FMATERIALID group by t1.FBillDate,
left join (SELECT t1.FBillNo, t1.FBillNo,
t1.FBillSeq, t1.FBillSeq,
t1.FUserID, t5.FNUMBER,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutDirectMaterial--直接材料 t1.FMaterialName,
FROM cbmxCursor t1 t1.FSpecification,
left join T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER ckmx.FREALQTY,
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052 ck.FNAME,
where t2L.FNAME = ''材料成本'' t3.FDATE,
and t1.FEXPENSENAME <> ''小计'' t1.FUSERID,
group by t1.FBillNo, t1.FBillSeq, t1.FUserID) ckzjcl t3.FBILLNO,
on t1.FBillNo = ckzjcl.FBillNo and t1.FBillSeq = ckzjcl.FBillSeq and t1.FUserID = ckzjcl.FUserID t2.FPRICEQTY,
left join (SELECT t1.FBillNo, t1.FBillSeq, t1.FUserID, SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutDirectLabor--直接人工 t2.FTAXPRICE,
FROM cbmxCursor t1 t2.FPRICE,
left join t2.FENTRYTAXRATE,
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER t2.FNOTAXAMOUNT,
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052 t2.FTAXAMOUNTFOR,
where t2L.FNAME = ''工资'' t2.FALLAMOUNTFOR,
and t1.FEXPENSENAME <> ''小计'' t1.FBillEntryId,
group by t1.FBillNo, t1.FBillSeq, t1.FUserID) ckzjrg ckzjcl.FOutDirectMaterial,
on t1.FBillNo = ckzjrg.FBillNo and t1.FBillSeq = ckzjrg.FBillSeq and t1.FUserID = ckzjrg.FUserID ckzjrg.FOutDirectLabor,
left join (SELECT t1.FBillNo, ckzzfy.FOutManufacturingCost,
t1.FBillSeq, ckljzj.FOutAddDepreciation
t1.FUserID, union all
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutManufacturingCost--制造费用
FROM cbmxCursor t1 select DISTINCT ''0'' FNUMBER,
left join ''0'' FMASTERID,
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER ''0'' FUSEORGID,
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052 ''0'' FFORBIDSTATUS,
where t2L.FNAME <> ''材料成本'' t1.FBillDate FOutBillDate, -- 出库业务日期
and t2L.FNAME <> ''工资'' t1.FBillNo FOutBillNo, -- 出库单据编号
and FNAME not like ''%折旧费用%'' t1.FBillSeq FOutBillSeq, -- 出库单据行号
and t1.FEXPENSENAME <> ''小计'' t5.FNUMBER FMATERIALID, -- 物料编码
group by t1.FBillNo, t1.FBillSeq, t1.FUserID) ckzzfy t1.FMaterialName, -- 物料名称
on t1.FBillNo = ckzzfy.FBillNo and t1.FBillSeq = ckzzfy.FBillSeq and t1.FUserID = ckzzfy.FUserID t1.FSpecification, -- 规格型号
left join (SELECT t1.FBillNo, ckmx.FREALQTY FOutQty, --出库数量
t1.FBillSeq, ck.FNAME FSTOCKID, --仓库
t1.FUserID, t1.FUSERID,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutAddDepreciation --累计折旧 ISNULL(ckzjcl.FOutDirectMaterial, 0) FOutDirectMaterial, --出库直接材料
FROM cbmxCursor t1 ISNULL(ckzjrg.FOutDirectLabor, 0) FOutDirectLabor, --出库直接人工
left join ISNULL(ckzzfy.FOutManufacturingCost, 0) FOutManufacturingCost, --出库制造费用
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER ISNULL(ckljzj.FOutAddDepreciation, 0) FOutAddDepreciation, --出库累计折旧
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052 ISNULL(ckzjcl.FOutDirectMaterial, 0) + ISNULL(ckzjrg.FOutDirectLabor, 0) +
where FNAME like ''%折旧费用%'' ISNULL(ckzzfy.FOutManufacturingCost, 0) +
and t1.FEXPENSENAME <> ''小计'' ISNULL(ckljzj.FOutAddDepreciation, 0) FOutTotalCost, --出库成本合计
group by t1.FBillNo, t1.FBillSeq, t1.FUserID) ckljzj t3.FDATE FRecBillDate, --应收业务日期
on t1.FBillNo = ckljzj.FBillNo and t1.FBillSeq = ckljzj.FBillSeq and t1.FUserID = ckljzj.FUserID t3.FBILLNO FRecBillNo, --应收单据编号
where ckmx.FID is not null t2.FPRICEQTY FPriceQty, --计价数量
group by t1.FBillDate, t2.FTAXPRICE, --含税单价
t1.FBillNo, t2.FPRICE, --单价
t1.FBillSeq, t2.FENTRYTAXRATE, --税率,
t5.FNUMBER, t2.FNOTAXAMOUNT FNOTAXAMOUNTFOR, --不含税金额
t1.FMaterialName, t2.FTAXAMOUNTFOR, --税额
t1.FSpecification, t2.FALLAMOUNTFOR, --价税合计
ckmx.FREALQTY, -- 收入直接材料
t1.FUserID, (ISNULL(ckzjcl.FOutDirectMaterial, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
ck.FNAME, ISNULL(t2.FPRICEQTY, 0)) AS FInDirectMaterial,
t3.FDATE,
t3.FBILLNO, -- 收入直接人工
t2.FPRICEQTY, (ISNULL(ckzjrg.FOutDirectLabor, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
t2.FTAXPRICE, ISNULL(t2.FPRICEQTY, 0)) AS FInDirectLabor,
t2.FPRICE,
t2.FENTRYTAXRATE, -- 收入制造费用
t2.FNOTAXAMOUNT, (ISNULL(ckzzfy.FOutManufacturingCost, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
t2.FTAXAMOUNTFOR, ISNULL(t2.FPRICEQTY, 0)) AS FInManufacturingCost,
t2.FALLAMOUNTFOR,
t1.FBillEntryId, -- 收入累计折旧
ckzjcl.FOutDirectMaterial, (ISNULL(ckljzj.FOutAddDepreciation, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
ckzjrg.FOutDirectLabor, ISNULL(t2.FPRICEQTY, 0)) AS FInAddDepreciation,
ckzzfy.FOutManufacturingCost,
ckljzj.FOutAddDepreciation -- 收入成本合计
union all (ISNULL(ckzjcl.FOutDirectMaterial, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) +
(ISNULL(ckzjrg.FOutDirectLabor, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) +
select DISTINCT ''0'' FNUMBER, (ISNULL(ckzzfy.FOutManufacturingCost, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
''0'' FMASTERID, ISNULL(t2.FPRICEQTY, 0)) +
''0'' FUSEORGID, (ISNULL(ckljzj.FOutAddDepreciation, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) *
''0'' FFORBIDSTATUS, ISNULL(t2.FPRICEQTY, 0)) AS FInTotalCost
t1.FBillDate FOutBillDate, -- 出库业务日期
t1.FBillNo FOutBillNo, -- 出库单据编号 from cbmxCursor t1
t1.FBillSeq FOutBillSeq, -- 出库单据行号 left join T_SAL_RETURNSTOCKENTRY ckmx on ckmx.FENTRYID = t1.FBillEntryId and t1.FBillFormId = ''SAL_RETURNSTOCK''
t5.FNUMBER FMATERIALID, -- 物料编码 left join T_AR_RECEIVABLEENTRY_LK yslk
t1.FMaterialName, -- 物料名称 on t1.FBillEntryId = yslk.FSID and yslk.FSTABLENAME = ''T_SAL_RETURNSTOCKENTRY''
t1.FSpecification, -- 规格型号 left join t_AR_receivableEntry t2
ckmx.FREALQTY FOutQty, --出库数量 on t2.FENTRYID = yslk.FENTRYID
t1.FUserID, left join T_AR_RECEIVABLE t3 on t2.FID = t3.FID
ck.FNAME FSTOCKID, --仓库 left join T_BD_STOCK_L ck on t1.FSTOCKID = ck.FSTOCKID
ISNULL(ckzjcl.FOutDirectMaterial, 0) FOutDirectMaterial, --出库直接材料 left join T_BD_EXPENSE t4 on t1.FEXPENSEID = t4.FNUMBER
ISNULL(ckzjrg.FOutDirectLabor, 0) FOutDirectLabor, --出库直接人工 left join T_BD_MATERIAL t5 on t1.FMATERIALID = t5.FMATERIALID
ISNULL(ckzzfy.FOutManufacturingCost, 0) FOutManufacturingCost, --出库制造费用 left join cbmxCursor_ckzjcl ckzjcl
ISNULL(ckljzj.FOutAddDepreciation, 0) FOutAddDepreciation, --出库累计折旧 on t1.FBillNo = ckzjcl.FBillNo and t1.FBillSeq = ckzjcl.FBillSeq and t1.FUSERID = ckzjcl.FUSERID
ISNULL(ckzjcl.FOutDirectMaterial, 0) + ISNULL(ckzjrg.FOutDirectLabor, 0) + left join cbmxCursor_ckzjrg ckzjrg
ISNULL(ckzzfy.FOutManufacturingCost, 0) + on t1.FBillNo = ckzjrg.FBillNo and t1.FBillSeq = ckzjrg.FBillSeq and t1.FUSERID = ckzjrg.FUSERID
ISNULL(ckljzj.FOutAddDepreciation, 0) FOutTotalCost, --出库成本合计 left join cbmxCursor_ckzzfy ckzzfy
t3.FDATE FRecBillDate, --应收业务日期 on t1.FBillNo = ckzzfy.FBillNo and t1.FBillSeq = ckzzfy.FBillSeq and t1.FUSERID = ckzzfy.FUSERID
t3.FBILLNO FRecBillNo, --应收单据编号 left join cbmxCursor_ckljzj ckljzj
t2.FPRICEQTY FPriceQty, --计价数量 on t1.FBillNo = ckljzj.FBillNo and t1.FBillSeq = ckljzj.FBillSeq and t1.FUSERID = ckljzj.FUSERID
t2.FTAXPRICE, --含税单价 where ckmx.FID is not null
t2.FPRICE, --单价 union all
t2.FENTRYTAXRATE, --税率, --查没有原单应收单
t2.FNOTAXAMOUNT FNOTAXAMOUNTFOR, --不含税金额 select ''0'' FNUMBER,
t2.FTAXAMOUNTFOR, --税额 ''0'' FMASTERID,
t2.FALLAMOUNTFOR, --价税合计 ''0'' FUSEORGID,
-- 收入直接材料 ''0'' FFORBIDSTATUS,
(ISNULL(ckzjcl.FOutDirectMaterial, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * null FOutBillDate, -- 出库业务日期
ISNULL(t2.FPRICEQTY, 0)) AS FInDirectMaterial, null FOutBillNo, -- 出库单据编号
null FOutBillSeq, -- 出库单据行号
-- 收入直接人工 t3.FNUMBER FMATERIALID, -- 物料编码
(ISNULL(ckzjrg.FOutDirectLabor, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * t3L.FNAME, -- 物料名称
ISNULL(t2.FPRICEQTY, 0)) AS FInDirectLabor, t3L.FSpecification, -- 规格型号
0 FOutQty, --出库数量
-- 收入制造费用 null FSTOCKID, --仓库
(ISNULL(ckzzfy.FOutManufacturingCost, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * t4.FUSERID,
ISNULL(t2.FPRICEQTY, 0)) AS FInManufacturingCost, 0 FOutDirectMaterial, --出库直接材料
0 FOutDirectLabor, --出库直接人工
-- 收入累计折旧 0 FOutManufacturingCost, --出库制造费用
(ISNULL(ckljzj.FOutAddDepreciation, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * 0 FOutAddDepreciation, --出库累计折旧
ISNULL(t2.FPRICEQTY, 0)) AS FInAddDepreciation, 0 FOutTotalCost, --出库成本合计
t1.FDATE FRecBillDate, --应收业务日期
-- 收入成本合计 t1.FBILLNO FRecBillNo, --应收单据编号
(ISNULL(ckzjcl.FOutDirectMaterial, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) + t2.FPRICEQTY FPriceQty, --计价数量
(ISNULL(ckzjrg.FOutDirectLabor, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * ISNULL(t2.FPRICEQTY, 0)) + t2.FTAXPRICE, --含税单价
(ISNULL(ckzzfy.FOutManufacturingCost, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * t2.FPRICE, --单价
ISNULL(t2.FPRICEQTY, 0)) + t2.FENTRYTAXRATE, --税率,
(ISNULL(ckljzj.FOutAddDepreciation, 0) / NULLIF(ISNULL(ckmx.FREALQTY, 0), 0) * t2.FNOTAXAMOUNT FNOTAXAMOUNTFOR, --不含税金额
ISNULL(t2.FPRICEQTY, 0)) AS FInTotalCost t2.FTAXAMOUNTFOR, --税额
t2.FALLAMOUNTFOR, --价税合计
from cbmxCursor t1 0 AS FInDirectMaterial, -- 收入直接材料
left join T_SAL_RETURNSTOCKENTRY ckmx on ckmx.FENTRYID = t1.FBillEntryId and t1.FBillFormId = ''SAL_RETURNSTOCK'' 0 AS FInDirectLabor, -- 收入直接人工
left join T_AR_RECEIVABLEENTRY_LK yslk 0 AS FInManufacturingCost, -- 收入制造费用
on t1.FBillEntryId = yslk.FSID and yslk.FSTABLENAME = ''T_SAL_RETURNSTOCKENTRY'' 0 AS FInAddDepreciation, -- 收入累计折旧
left join t_AR_receivableEntry t2 0 AS FInTotalCost -- 收入成本合计
on t2.FENTRYID = yslk.FENTRYID from (select FUserID from cbmxCursor group by FUserID) t4
left join T_AR_RECEIVABLE t3 on t2.FID = t3.FID cross join t_AR_receivable t1
left join T_BD_STOCK_L ck on t1.FSTOCKID = ck.FSTOCKID left join T_AR_RECEIVABLEENTRY t2 on t1.FID = t2.FID
left join T_BD_EXPENSE t4 on t1.FEXPENSEID = t4.FNUMBER left join T_BD_MATERIAL t3 on t3.FMATERIALID = t2.FMATERIALID
left join T_BD_MATERIAL t5 on t1.FMATERIALID = t5.FMATERIALID left join T_BD_MATERIAL_L t3L on t3.FMATERIALID = t3L.FMATERIALID and t3L.FLOCALEID = 2052
left join (SELECT t1.FBillNo, where FSOURCETYPE = ''''
t1.FBillSeq, )t1
t1.FUserID, ')
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutDirectMaterial--直接材料 END
FROM cbmxCursor t1 ";
left join T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME = ''材料成本''
and t1.FEXPENSENAME <> ''小计''
group by t1.FBillNo, t1.FBillSeq, t1.FUserID) ckzjcl
on t1.FBillNo = ckzjcl.FBillNo and t1.FBillSeq = ckzjcl.FBillSeq and t1.FUserID = ckzjcl.FUserID
left join (SELECT t1.FBillNo, t1.FBillSeq, t1.FUserID, SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutDirectLabor--直接人工
FROM cbmxCursor t1
left join
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME = ''工资''
and t1.FEXPENSENAME <> ''小计''
group by t1.FBillNo, t1.FBillSeq, t1.FUserID) ckzjrg
on t1.FBillNo = ckzjrg.FBillNo and t1.FBillSeq = ckzjrg.FBillSeq and t1.FUserID = ckzjrg.FUserID
left join (SELECT t1.FBillNo,
t1.FBillSeq,
t1.FUserID,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutManufacturingCost--制造费用
FROM cbmxCursor t1
left join
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where t2L.FNAME <> ''材料成本''
and t2L.FNAME <> ''工资''
and FNAME not like ''%折旧费用%''
and t1.FEXPENSENAME <> ''小计''
group by t1.FBillNo, t1.FBillSeq, t1.FUserID) ckzzfy
on t1.FBillNo = ckzzfy.FBillNo and t1.FBillSeq = ckzzfy.FBillSeq and t1.FUserID = ckzzfy.FUserID
left join (SELECT t1.FBillNo,
t1.FBillSeq,
t1.FUserID,
SUM(CAST(t1.FAmount AS DECIMAL(18, 2))) FOutAddDepreciation --累计折旧
FROM cbmxCursor t1
left join
T_BD_EXPENSE t2 ON t1.FEXPENSEID = t2.FNUMBER
left join T_BD_EXPENSE_L t2L on t2.FEXPID = t2L.FEXPID and t2L.FLOCALEID = 2052
where FNAME like ''%折旧费用%''
and t1.FEXPENSENAME <> ''小计''
group by t1.FBillNo, t1.FBillSeq, t1.FUserID) ckljzj
on t1.FBillNo = ckljzj.FBillNo and t1.FBillSeq = ckljzj.FBillSeq and t1.FUserID = ckljzj.FUserID
where ckmx.FID is not null
union all
--查没有原单应收单
select ''0'' FNUMBER,
''0'' FMASTERID,
''0'' FUSEORGID,
''0'' FFORBIDSTATUS,
null FOutBillDate, -- 出库业务日期
null FOutBillNo, -- 出库单据编号
null FOutBillSeq, -- 出库单据行号
t3.FNUMBER FMATERIALID, -- 物料编码
t3L.FNAME, -- 物料名称
t3L.FSpecification, -- 规格型号
0 FOutQty, --出库数量
t4.FUserID,
null FSTOCKID, --仓库
0 FOutDirectMaterial, --出库直接材料
0 FOutDirectLabor, --出库直接人工
0 FOutManufacturingCost, --出库制造费用
0 FOutAddDepreciation, --出库累计折旧
0 FOutTotalCost, --出库成本合计
t1.FDATE FRecBillDate, --应收业务日期
t1.FBILLNO FRecBillNo, --应收单据编号
t2.FPRICEQTY FPriceQty, --计价数量
t2.FTAXPRICE, --含税单价
t2.FPRICE, --单价
t2.FENTRYTAXRATE, --税率,
t2.FNOTAXAMOUNT FNOTAXAMOUNTFOR, --不含税金额
t2.FTAXAMOUNTFOR, --税额
t2.FALLAMOUNTFOR, --价税合计
0 AS FInDirectMaterial, -- 收入直接材料
0 AS FInDirectLabor, -- 收入直接人工
0 AS FInManufacturingCost, -- 收入制造费用
0 AS FInAddDepreciation, -- 收入累计折旧
0 AS FInTotalCost -- 收入成本合计
from t_AR_receivable t1
left join T_AR_RECEIVABLEENTRY t2 on t1.FID = t2.FID
left join T_BD_MATERIAL t3 on t3.FMATERIALID = t2.FMATERIALID
left join T_BD_MATERIAL_L t3L on t3.FMATERIALID = t3L.FMATERIALID and t3L.FLOCALEID = 2052
left join (select FUserID from cbmxCursor group by FUserID) t4 on 1 = 1
where FSOURCETYPE = ''''
)t1
')
END
";
DBServiceHelper.Execute(this.Context, sql); DBServiceHelper.Execute(this.Context, sql);
this.View.Session["ProcessRateValue"] = 90; this.View.Session["ProcessRateValue"] = 90;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论