You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/DSWeb/Areas/MvcShipping/DAL/RptCwCfs/RptCwCfsDAL.cs

1344 lines
86 KiB
C#

3 years ago
using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using DSWeb.MvcShipping.Models.RptCwCfsEntity;
using DSWeb.MvcShipping.Models.MsCwAccitemsGl;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.EntityDA;
using DSWeb.Areas.CommMng.Models;
using HcUtility.Comm;
using System.Data.SqlClient;
using DSWeb.DataAccess;
using HcUtility.Core;
using DSWeb.Areas.CommMng.DAL;
namespace DSWeb.MvcShipping.DAL.RptCwCfsDAL
{
public class RptCwCfsDAL
{
#region 查询
static public List<RptVWCwCfsTemplateModelItemEntity> GetDataList(string sMODELGID, string sACCDATE, string USERID, string SHOWNAME, string companyid, string sort = null)
{
isSaveRow(sMODELGID, sACCDATE, USERID, companyid);
var strSql = new StringBuilder();
string sSql = GetDataListSQL(sMODELGID, sACCDATE, companyid, USERID);
strSql.Append(sSql);
//
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else
{
strSql.Append(" order by LINENUM");
}
return SetData(strSql);
}
static public List<RptVWCwCfsTemplateModelItemEntity> GetDataListTZ(string sMODELGID, string sACCDATE, string USERID, string SHOWNAME, string companyid, string sort = null)
{
var strSql = new StringBuilder();
string sSql = GetDataListSQL(sMODELGID, sACCDATE, companyid, USERID);
strSql.Append(sSql);
//
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else
{
strSql.Append(" order by LINENUM");
}
return SetData(strSql);
}
static public string GetDataListStr(string sMODELGID, string sACCDATE, string companyid, string strUSERID)
{
var strSql = new StringBuilder();
string sSql = GetDataListSQL(sMODELGID, sACCDATE, companyid, strUSERID);
strSql.Append("select GID as 唯一编码, LINENUM as 行号, MODELNAME as 项目方案, ITEMNAME as 项目名称, ITEMTYPE as 项目类型, ACCDATE as 会计期间, QTYLASTBLC as 本年累计金额, QTYBLC as 本月金额, QTYLASTBLC_S as [本年累计金额(系统)], QTYBLC_S as [本月金额(系统)], QTYLASTBLC_H as [本年累计金额(调动)], QTYBLC_H as [本月金额(调动)],(select top 1 STARTNAME from [cw_design_startusing] where gid=a.STARTGID and (ISDELETE=0 or ISDELETE is null)) as 账套启用,(select top 1 [NAME] from [company] where gid=a.CORPID) as 分公司,(select top 1 SHOWNAME from [user] where gid=a.MODIFIEDUSER) as 更改操作人,MODIFIEDTIME as 更改操作时间 from (");
strSql.Append(sSql);
strSql.Append(") as a order by LINENUM");
return strSql.ToString();
}
static public string GetDataListSQL(string sMODELGID, string sACCDATE, string companyid, string strUserID)
{
#region 综合本位币
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUserID);
var strSql = new StringBuilder();
strSql.Append("select * from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "'");
if (!string.IsNullOrEmpty(sMODELGID))
{
strSql.Append(" and MODELGID='" + sMODELGID + "'");
}
if (!string.IsNullOrEmpty(sACCDATE))
{
strSql.Append(" and ACCDATE='" + sACCDATE + "'");
}
//strSql.Append(" and CORPID='" + companyid + "'");//需求编号SR2017082800002
#endregion
return strSql.ToString();
}
private static List<RptVWCwCfsTemplateModelItemEntity> SetData(StringBuilder strSql)
{
var headList = new List<RptVWCwCfsTemplateModelItemEntity>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
RptVWCwCfsTemplateModelItemEntity data = new RptVWCwCfsTemplateModelItemEntity();
#region Set DB data to Object
data.GID = (reader["GID"] == null ? "" : Convert.ToString(reader["GID"]));//GID
data.MODELGID = (reader["MODELGID"] == null ? "" : Convert.ToString(reader["MODELGID"]));//MODELGID
data.ITEMGID = (reader["ITEMGID"] == null ? "" : Convert.ToString(reader["ITEMGID"]));//ITEMGID
data.ACCDATE = (reader["ACCDATE"] == null ? "" : Convert.ToString(reader["ACCDATE"]));//ACCDATE
data.QTYLASTBLC = (reader["QTYLASTBLC"] == null ? 0 : Convert.ToDecimal(reader["QTYLASTBLC"]));//QTYLASTBLC
data.QTYBLC = (reader["QTYBLC"] == null ? 0 : Convert.ToDecimal(reader["QTYBLC"]));//QTYBLC
data.QTYLASTBLC_S = (reader["QTYLASTBLC_S"] == null ? 0 : Convert.ToDecimal(reader["QTYLASTBLC_S"]));//QTYLASTBLC_S
data.QTYBLC_S = (reader["QTYBLC_S"] == null ? 0 : Convert.ToDecimal(reader["QTYBLC_S"]));//QTYBLC_S
data.QTYLASTBLC_H = (reader["QTYLASTBLC_H"] == null ? 0 : Convert.ToDecimal(reader["QTYLASTBLC_H"]));//QTYLASTBLC_H
data.QTYBLC_H = (reader["QTYBLC_H"] == null ? 0 : Convert.ToDecimal(reader["QTYBLC_H"]));//QTYBLC_H
data.STARTGID = (reader["STARTGID"] == null ? "" : Convert.ToString(reader["STARTGID"]));//STARTGID
data.CORPID = (reader["CORPID"] == null ? "" : Convert.ToString(reader["CORPID"]));//CORPID
data.MODIFIEDUSER = (reader["MODIFIEDUSER"] == null ? "" : Convert.ToString(reader["MODIFIEDUSER"]));//MODIFIEDUSER
if (reader["MODIFIEDTIME"] != null && reader["MODIFIEDTIME"].ToString().Trim().IndexOf("0001") < 0 && reader["MODIFIEDTIME"].ToString().Trim().IndexOf("1900") < 0 && reader["MODIFIEDTIME"].ToString().Trim()!="")
{
data.MODIFIEDTIME = Convert.ToDateTime(reader["MODIFIEDTIME"]);//更改操作时间
}
data.MODELNAME = (reader["MODELNAME"] == null ? "" : Convert.ToString(reader["MODELNAME"]));//MODELNAME
data.ISDEFAULT = (reader["ISDEFAULT"] == null ? false : Convert.ToBoolean(reader["ISDEFAULT"]));//ISDEFAULT
data.ITEMNAME = (reader["ITEMNAME"] == null ? "" : Convert.ToString(reader["ITEMNAME"]));//ITEMNAME
data.LINENUM = (reader["LINENUM"] == null ? 0 : Convert.ToInt32(reader["LINENUM"]));//LINENUM
data.DETAILED = (reader["DETAILED"] == null ? false : Convert.ToBoolean(reader["DETAILED"]));//DETAILED
data.ISALTER = (reader["ISALTER"] == null ? false : Convert.ToBoolean(reader["ISALTER"]));//ISALTER
data.PACCGID = (reader["PACCGID"] == null ? "" : Convert.ToString(reader["PACCGID"]));//PACCGID
data.ITEMTYPE = (reader["ITEMTYPE"] == null ? "" : Convert.ToString(reader["ITEMTYPE"]));//ITEMTYPE
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 查询明细表
static public List<RptCwCfsDetailEntity> GetDetailList(string sACCDATE, string strCondition, string companyid, string strUSERID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUSERID);
var strSql = new StringBuilder();
strSql.Append("SELECT *,ACCNAME=ISNULL((select top 1 ACCNAME from cw_accitems_gl WITH(NOLOCK) where GID=cw_cfs_template_detail.ACCGID and [YEAR]=SUBSTRING(convert(varchar,'" + sACCDATE + "-01',23),1,4)),''),ACCDATE=(select top 1 ACCDATE from cw_cfs_template WITH(NOLOCK) where GID=cw_cfs_template_detail.LINKGID),ACCIDNAME=ISNULL((select top 1 (ACCID+'-'+ACCNAME) as ACCIDNAME from cw_accitems_gl WITH(NOLOCK) where GID=cw_cfs_template_detail.ACCGID and [YEAR]=SUBSTRING(convert(varchar,'" + sACCDATE + "-01',23),1,4)),'') from cw_cfs_template_detail WITH(NOLOCK) where LINKGID in (select GID from cw_cfs_template where [STARTGID]='" + strCwSTARTGID + "')");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
strSql.Append(" order by ACCIDNAME,MODIFIEDTIME");
return SetDetail(strSql);
}
private static List<RptCwCfsDetailEntity> SetDetail(StringBuilder strSql)
{
var headList = new List<RptCwCfsDetailEntity>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
RptCwCfsDetailEntity data = new RptCwCfsDetailEntity();
#region Set DB data to Object
data.GID = (reader["GID"] == null ? "" : Convert.ToString(reader["GID"]));//唯一编码
data.LINKGID = (reader["LINKGID"] == null ? "" : Convert.ToString(reader["LINKGID"]));//模板GID
data.ACCGID = (reader["ACCGID"] == null ? "" : Convert.ToString(reader["ACCGID"]));//科目GID
data.OPERATORS = (reader["OPERATORS"] == null ? "" : Convert.ToString(reader["OPERATORS"]));//运算符号
data.ACCESS = (reader["ACCESS"] == null ? "" : Convert.ToString(reader["ACCESS"]));//取数规则
data.QTYLASTBLC = (reader["QTYLASTBLC"] == null ? 0 : Convert.ToDecimal(reader["QTYLASTBLC"]));//本年累计余额
data.QTYBLC = (reader["QTYBLC"] == null ? 0 : Convert.ToDecimal(reader["QTYBLC"]));//本月金额
data.MODIFIEDUSER = (reader["MODIFIEDUSER"] == null ? "" : Convert.ToString(reader["MODIFIEDUSER"]));//更改操作人gid
if (reader["MODIFIEDTIME"] != null && reader["MODIFIEDTIME"].ToString().Trim().IndexOf("0001") < 0 && reader["MODIFIEDTIME"].ToString().Trim().IndexOf("1900") < 0 && reader["MODIFIEDTIME"].ToString().Trim() != "")
{
data.MODIFIEDTIME = Convert.ToDateTime(reader["MODIFIEDTIME"]);//最后一次更新操作时间
}
data.ACCNAME = (reader["ACCNAME"] == null ? "" : Convert.ToString(reader["ACCNAME"]));//科目名称
data.ACCDATE = (reader["ACCDATE"] == null ? "" : Convert.ToString(reader["ACCDATE"]));//会计期间
data.ACCIDNAME = (reader["ACCIDNAME"] == null ? "" : Convert.ToString(reader["ACCIDNAME"]));//科目名称
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 查询项目表
static public List<RptCwCfsModelEntity> GetCwCfsModelList(string strCondition, string companyid, string strUSERID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUSERID);
var strSql = new StringBuilder();
strSql.Append("SELECT * from cw_cfs_model WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
strSql.Append(" order by ISDEFAULT,MODELNAME");
return SetCwCfsModel(strSql);
}
private static List<RptCwCfsModelEntity> SetCwCfsModel(StringBuilder strSql)
{
var headList = new List<RptCwCfsModelEntity>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
RptCwCfsModelEntity data = new RptCwCfsModelEntity();
#region Set DB data to Object
data.GID = (reader["GID"] == null ? "" : Convert.ToString(reader["GID"]));//唯一编码
data.MODELNAME = (reader["MODELNAME"] == null ? "" : Convert.ToString(reader["MODELNAME"]));//方案名称
data.ISDEFAULT = (reader["ISDEFAULT"] == null ? false : Convert.ToBoolean(reader["ISDEFAULT"]));//是否默认方案并不允许删除
data.STARTGID = (reader["STARTGID"] == null ? "" : Convert.ToString(reader["STARTGID"]));//账套启用GID
data.CORPID = (reader["CORPID"] == null ? "" : Convert.ToString(reader["CORPID"]));//分公司代码
data.MODIFIEDUSER = (reader["MODIFIEDUSER"] == null ? "" : Convert.ToString(reader["MODIFIEDUSER"]));//更改操作人gid
if (reader["MODIFIEDTIME"] != null && reader["MODIFIEDTIME"].ToString().Trim().IndexOf("0001") < 0 && reader["MODIFIEDTIME"].ToString().Trim().IndexOf("1900") < 0 && reader["MODIFIEDTIME"].ToString().Trim() != "")
{
data.MODIFIEDTIME = Convert.ToDateTime(reader["MODIFIEDTIME"]);//最后一次更新操作时间
}
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 项目维护列表
static public List<RptCwCfsModelItemEntity> GetCwCfsModelItemList(string sMODELGID, string companyid, string strUSERID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUSERID);
var strSql = new StringBuilder();
strSql.Append("SELECT * from cw_cfs_model_item WITH(NOLOCK) where PACCGID='0' and MODELGID in (SELECT GID from cw_cfs_model WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "')");
if (!string.IsNullOrEmpty(sMODELGID))
{
strSql.Append(" and MODELGID='" + sMODELGID + "'");
}
strSql.Append(" order by LINENUM");
return SetCwCfsModelItem(strSql);
}
static public List<RptCwCfsModelItemEntity> GetCwCfsModelItemList2(string sITEMGID, string companyid, string strUSERID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUSERID);
var strSql = new StringBuilder();
strSql.Append("SELECT * from cw_cfs_model_item WITH(NOLOCK) where PACCGID<>'0' and ITEMTYPE<>'' and MODELGID in (SELECT GID from cw_cfs_model WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "')");
if (!string.IsNullOrEmpty(sITEMGID))
{
strSql.Append(" and PACCGID='" + sITEMGID + "'");
}
strSql.Append(" order by LINENUM");
return SetCwCfsModelItem(strSql);
}
private static List<RptCwCfsModelItemEntity> SetCwCfsModelItem(StringBuilder strSql)
{
var headList = new List<RptCwCfsModelItemEntity>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
RptCwCfsModelItemEntity data = new RptCwCfsModelItemEntity();
#region Set DB data to Object
data.GID = (reader["GID"] == null ? "" : Convert.ToString(reader["GID"]));//唯一编码
data.MODELGID = (reader["MODELGID"] == null ? "" : Convert.ToString(reader["MODELGID"]));//方案GID
data.ITEMNAME = (reader["ITEMNAME"] == null ? "" : Convert.ToString(reader["ITEMNAME"]));//项目名称
data.LINENUM = (reader["LINENUM"] == null ? 0 : Convert.ToInt32(reader["LINENUM"]));//项目行次
data.DETAILED = (reader["DETAILED"] == null ? false : Convert.ToBoolean(reader["DETAILED"]));//末级科目(标志)
data.ISALTER = (reader["ISALTER"] == null ? false : Convert.ToBoolean(reader["ISALTER"]));//是否允许修改项目
data.PACCGID = (reader["PACCGID"] == null ? "" : Convert.ToString(reader["PACCGID"]));//父级科目代码
data.ITEMTYPE = (reader["ITEMTYPE"] == null ? "" : Convert.ToString(reader["ITEMTYPE"]));//项目属性
data.MODIFIEDUSER = (reader["MODIFIEDUSER"] == null ? "" : Convert.ToString(reader["MODIFIEDUSER"]));//更改操作人gid
if (reader["MODIFIEDTIME"] != null && reader["MODIFIEDTIME"].ToString().Trim().IndexOf("0001") < 0 && reader["MODIFIEDTIME"].ToString().Trim().IndexOf("1900") < 0 && reader["MODIFIEDTIME"].ToString().Trim() != "")
{
data.MODIFIEDTIME = Convert.ToDateTime(reader["MODIFIEDTIME"]);//最后一次更新操作时间
}
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#region 项目重新排序
static public void GetSort(string sMODELGID, string strUSERID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUSERID);
T_ALL_DA T_ALL_DA = new T_ALL_DA();
string sSQL = "SELECT * from cw_cfs_model_item WITH(NOLOCK) where MODELGID in (SELECT GID from cw_cfs_model WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "')";
if (!string.IsNullOrEmpty(sMODELGID))
{
sSQL += " and MODELGID='" + sMODELGID + "'";
}
sSQL += " order by LINENUM,PACCGID,ITEMTYPE desc";
DataSet ds = T_ALL_DA.GetAllSQL(sSQL);
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
sSQL = "update cw_cfs_model_item set LINENUM=" + (i + 1) + " where gid='" + ds.Tables[0].Rows[i]["GID"].ToString() + "'";
bool bl = T_ALL_DA.GetExecuteSqlCommand(sSQL);
}
}
}
}
#endregion
#region 新建方案//需求编号SR2017082800002
static public DBResult onAddModel(string dataDiv, string USERID, string companyid)
{
var result = new DBResult();
if (string.IsNullOrEmpty(dataDiv))
{
result.Success = false;
result.Message = "方案名称不允许为空!";
return result;
}
//
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(USERID);
string strCwACCDATE = BasicDataRefDAL.GetCwACCDATE(USERID);
T_ALL_DA T_ALL_DA = new T_ALL_DA();
string strGID = Guid.NewGuid().ToString();
string sSQL = "select top 1 GID from [cw_cfs_model] where ISDEFAULT=1 and STARTGID='" + strCwSTARTGID + "'";// and [MODELNAME]='默认方案'
string sGIDMR = T_ALL_DA.GetStrSQL("GID",sSQL);
if (sGIDMR == "")
{
sSQL = "select top 1 GID from [cw_cfs_model] where ISDEFAULT=1";// and [MODELNAME]='默认方案' and STARTGID='" + strCwSTARTGID + "'
sGIDMR = T_ALL_DA.GetStrSQL("GID", sSQL);
if (sGIDMR == "")
{
result.Success = false;
result.Message = "没有默认方案,请联系管理员!";
return result;
}
}
//
sSQL = "SELECT * from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sGIDMR + "' and [PACCGID]='0'";
DataSet dsMR = T_ALL_DA.GetAllSQL(sSQL);
if (dsMR == null)
{
result.Success = false;
result.Message = "没有默认方案项目,请联系管理员!";
return result;
}
else
{
if (dsMR.Tables[0].Rows.Count == 0)
{
result.Success = false;
result.Message = "没有默认方案项目,请联系管理员!";
return result;
}
}
//
string strACCDATE = T_ALL_DA.GetStrSQL("ACCDATE", "select top 1 ACCDATE from cw_cfs_template WITH(NOLOCK) where MODELGID='" + sGIDMR + "' and ITEMGID in (SELECT gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sGIDMR + "') group by ACCDATE order by ACCDATE desc");
if (strACCDATE == "")
{
result.Success = false;
result.Message = "没有默认方案,请联系管理员!";
return result;
}
//
sSQL = "SELECT * from cw_cfs_template WITH(NOLOCK) where MODELGID='" + sGIDMR + "' and ITEMGID in (SELECT gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sGIDMR + "') and ACCDATE='" + strACCDATE + "'";//STARTGID='" + strCwSTARTGID + "' and
DataSet dsFAXM = T_ALL_DA.GetAllSQL(sSQL);
if (dsFAXM == null)
{
result.Success = false;
result.Message = "没有默认项目,请联系管理员!";
return result;
}
else
{
if (dsFAXM.Tables[0].Rows.Count == 0)
{
result.Success = false;
result.Message = "没有默认项目,请联系管理员!";
return result;
}
}
//
sSQL = "SELECT * from cw_cfs_template_detail WITH(NOLOCK) where LINKGID in (select gid from cw_cfs_template where MODELGID='" + sGIDMR + "' and ITEMGID in (SELECT gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sGIDMR + "') and ACCDATE='" + strACCDATE + "')";//STARTGID='" + strCwSTARTGID + "' and
DataSet dsXMGS = T_ALL_DA.GetAllSQL(sSQL);
if (dsXMGS == null)
{
result.Success = false;
result.Message = "没有默认项目公式,请联系管理员!";
return result;
}
else
{
if (dsXMGS.Tables[0].Rows.Count == 0)
{
result.Success = false;
result.Message = "没有默认项目公式,请联系管理员!";
return result;
}
}
//插入新方案
sSQL = "INSERT INTO [cw_cfs_model] ([GID],[MODELNAME],[ISDEFAULT],[STARTGID],[CORPID],[MODIFIEDUSER],[MODIFIEDTIME]) VALUES ('" + strGID + "','" + dataDiv + "',0,'" + strCwSTARTGID + "','" + companyid + "','" + USERID + "',getdate())";
bool bl = T_ALL_DA.GetExecuteSqlCommand(sSQL);
if (bl)
{
//根据默认方案,插入新方案项目
sSQL = "INSERT INTO [cw_cfs_model_item] ([GID],[MODELGID],[ITEMNAME],[LINENUM],[DETAILED],[ISALTER],[PACCGID],[ITEMTYPE],[MODIFIEDUSER],[MODIFIEDTIME])"
+ "select (case when len(LINENUM)>1 then ('" + strGID.Substring(0, strGID.Length - 2) + "'+ CONVERT(nvarchar(2), [LINENUM])) else ('" + strGID.Substring(0, strGID.Length - 2) + "'+'0'+CONVERT(nvarchar(2), [LINENUM])) end) as [GID],'" + strGID + "' as [MODELGID],[ITEMNAME],[LINENUM],[DETAILED],[ISALTER],[PACCGID],[ITEMTYPE],[MODIFIEDUSER],[MODIFIEDTIME] from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sGIDMR + "'";
bl = T_ALL_DA.GetExecuteSqlCommand(sSQL);
if (bl)
{
//查出新方案中的项目大类
sSQL = "SELECT * from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + strGID + "' and [PACCGID]='0'";
DataSet ds = T_ALL_DA.GetAllSQL(sSQL);
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//更新新方案项目的父类GID
sSQL = "update [cw_cfs_model_item] set [PACCGID]='" + ds.Tables[0].Rows[i]["GID"].ToString() + "' where [MODELGID]='" + strGID + "' and [PACCGID]<>'0' and [PACCGID]='" + dsMR.Tables[0].Rows[i]["GID"].ToString() + "'";
bl = T_ALL_DA.GetExecuteSqlCommand(sSQL);
}
}
}
}
//根据默认方案,插入新默认项目
sSQL = "INSERT INTO [cw_cfs_template]([GID],[MODELGID],[ITEMGID],[ACCDATE],[QTYLASTBLC],[QTYBLC],[QTYLASTBLC_S],[QTYBLC_S],[QTYLASTBLC_H],[QTYBLC_H],[STARTGID],[CORPID],[MODIFIEDUSER],[MODIFIEDTIME])"
+ "select newid() as [GID],'" + strGID + "' as [MODELGID],[ITEMGID]"
//+ ",[ITEMGID]=(select top 1 gid from cw_cfs_model_item where LINENUM=(select top 1 LINENUM from cw_cfs_model_item where gid=cw_cfs_template.ITEMGID))"
+ ",'" + strCwACCDATE + "' as [ACCDATE],0 as [QTYLASTBLC],0 as [QTYBLC],0 as [QTYLASTBLC_S],0 as [QTYBLC_S],0 as [QTYLASTBLC_H],0 as [QTYBLC_H],'" + strCwSTARTGID + "' as [STARTGID],'" + companyid + "' as [CORPID],'" + USERID + "' as [MODIFIEDUSER],getdate() as [MODIFIEDTIME] from cw_cfs_template WITH(NOLOCK) where MODELGID='" + sGIDMR + "' and ACCDATE='" + strACCDATE + "'";
bl = T_ALL_DA.GetExecuteSqlCommand(sSQL);
if (!bl)
{
result.Success = false;
result.Message = "插入新项目失败,请联系管理员!";
return result;
}
//根据默认方案,插入新默认项目公式
sSQL = "INSERT INTO [cw_cfs_template_detail]([GID],[LINKGID],[ACCGID],[OPERATORS],[ACCESS],[QTYLASTBLC],[QTYBLC],[MODIFIEDUSER],[MODIFIEDTIME])"
+ "select newid() as [GID]"
+ ",[LINKGID]=(select top 1 gid from cw_cfs_template where MODELGID='" + strGID + "' and ITEMGID=(select top 1 ITEMGID from cw_cfs_template where MODELGID='" + sGIDMR + "' and GID=cw_cfs_template_detail.LINKGID))"
+ ",[ACCGID]=(select top 1 gid from cw_accitems_gl where STARTGID='" + strCwSTARTGID + "' and accid=(select top 1 accid from cw_accitems_gl where gid=cw_cfs_template_detail.ACCGID))"
+ ",[OPERATORS],[ACCESS],0 as [QTYLASTBLC],0 as [QTYBLC],'" + USERID + "' as [MODIFIEDUSER],getdate() as [MODIFIEDTIME] from cw_cfs_template_detail WITH(NOLOCK) where [LINKGID] in (select gid from cw_cfs_template where MODELGID='" + sGIDMR + "' and ACCDATE='" + strACCDATE + "')";
bl = T_ALL_DA.GetExecuteSqlCommand(sSQL);
if (!bl)
{
result.Success = false;
result.Message = "插入新项目公式失败,请联系管理员!";
return result;
}
//根据默认方案,插入新默认项目
sSQL = "update [cw_cfs_template] set [ITEMGID]=(select top 1 gid from cw_cfs_model_item where MODELGID='" + strGID + "' and LINENUM=(select top 1 LINENUM from cw_cfs_model_item where gid=cw_cfs_template.ITEMGID))"
+ " where MODELGID='" + strGID + "' and ACCDATE='" + strCwACCDATE + "'";
bl = T_ALL_DA.GetExecuteSqlCommand(sSQL);
if (!bl)
{
result.Success = false;
result.Message = "更新新项目失败,请联系管理员!";
return result;
}
}
else
{
result.Success = false;
result.Message = "操作出错!";
return result;
}
result.Success = true;
result.Message = "操作成功";
return result;
}
#endregion
#endregion
#region 删除明细表
public static DBResult DeleteDetail(RptCwCfsDetailEntity head)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdDelete = db.GetSqlStringCommand("delete from cw_cfs_template_detail where GID='" + head.GID.ToString().Trim() + "'");
db.ExecuteNonQuery(cmdDelete, tran);
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "删除出现错误,请重试!";
return result;
}
}
result.Success = true;
result.Message = "操作成功";
return result;
}
#endregion
#region 重新计算
static public void GetRecount(string sMODELGID, string sACCDATE, string USERID, string companyid)
{
isSaveRow(sMODELGID, sACCDATE, USERID, companyid);
SaveRow(sMODELGID, sACCDATE, companyid, USERID);
}
#endregion
#region 按规则合计明细表金额
public static void SaveRowDetail(string sACCDATE, string strCondition, string strUSERID)
{
string strVOUDATE = sACCDATE + "-01";
string sYEAR = DateTime.Parse(strVOUDATE).Year.ToString();
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUSERID);
#region 更新_明细表金额
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
int iResult = 0;
#region 损益发生额_old
//string sSQL = "update cw_cfs_template_detail set"
//+ " QTYLASTBLC=isnull(("
//+ "isnull((select QTYLASTBLC from (select LINKGID,isnull(sum(case when ACCATTRIBUTE<>'损益' then QTYLASTBLC ELSE (case when DC='借' then QTYDR ELSE QTYCR END) END),0) as QTYLASTBLC"//累计余额
//+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
//+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
//+ " and STARTGID='" + strSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
//+ " GROUP by LINKGID) as a"
//+ " where a.LINKGID=cw_cfs_template_detail.ACCGID),0)"
//+ "-"
//+ "isnull((select QTYYEARBLC from (select LINKGID,isnull(sum(case when ACCATTRIBUTE<>'损益' then QTYYEARBLC ELSE 0 END),0) as QTYYEARBLC"//累计余额
//+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
//+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
//+ " and STARTGID='" + strSTARTGID + "' and SUBSTRING(ACCDATE,1,4)=SUBSTRING('" + sACCDATE + "',1,4) and IsInitialEntry=1"
//+ " GROUP by LINKGID) as a"
//+ " where a.LINKGID=cw_cfs_template_detail.ACCGID),0)"
//+ "),0)"
//+ ",QTYBLC=isnull(("
//+ "select QTYBLC from (select LINKGID,isnull(sum(case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE (case when DC='借' then QTYDR ELSE QTYCR END) END),0) as QTYBLC"//累计余额
//+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
//+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
//+ " and STARTGID='" + strSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
//+ " GROUP by LINKGID) as a"
//+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
//+ "),0)"
//+ " where ACCESS='损益发生额' and " + strCondition;
#endregion
#region 损益发生额
string sSQL = "update cw_cfs_template_detail set"
+ " QTYLASTBLC=isnull(("
+ "select QTYBLC from (select LINKGID,isnull(sum(case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE (case when DC='借' then QTYDR ELSE QTYCR END) END),0) as QTYBLC"//累计余额
+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
+ " and STARTGID='" + strCwSTARTGID + "' and ACCDATE<='" + sACCDATE + "'"
+ " GROUP by LINKGID) as a"
+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
+ "),0)"
+ ",QTYBLC=isnull(("
+ "select QTYBLC from (select LINKGID,isnull(sum(case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE (case when DC='借' then QTYDR ELSE QTYCR END) END),0) as QTYBLC"//累计余额
+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
+ " and STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
+ " GROUP by LINKGID) as a"
+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
+ "),0)"
+ " where ACCESS='损益发生额' and LINKGID in (select GID from cw_cfs_template where [STARTGID]='" + strCwSTARTGID + "') and " + strCondition;
#endregion
iResult = -1;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
#region 借方发生额_old
//sSQL = "update cw_cfs_template_detail set"
//+ " QTYLASTBLC=isnull(("
//+ "isnull((select QTYLASTBLC from (select LINKGID,isnull(sum(case when DC='贷' then (-(case when ACCATTRIBUTE<>'损益' then QTYLASTBLC ELSE QTYDR END)) ELSE (case when ACCATTRIBUTE<>'损益' then QTYLASTBLC ELSE QTYDR END) END),0) as QTYLASTBLC"//累计借方
//+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
//+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
//+ " and STARTGID='" + strSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
//+ " GROUP by LINKGID) as a"
//+ " where a.LINKGID=cw_cfs_template_detail.ACCGID),0)"
//+ "-"
//+ "isnull((select QTYYEARBLC from (select LINKGID,isnull(sum(case when DC='贷' then (-(case when ACCATTRIBUTE<>'损益' then QTYYEARBLC ELSE 0 END)) ELSE (case when ACCATTRIBUTE<>'损益' then QTYYEARBLC ELSE 0 END) END),0) as QTYYEARBLC"//累计借方
//+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
//+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
//+ " and STARTGID='" + strSTARTGID + "' and SUBSTRING(ACCDATE,1,4)=SUBSTRING('" + sACCDATE + "',1,4) and IsInitialEntry=1"
//+ " GROUP by LINKGID) as a"
//+ " where a.LINKGID=cw_cfs_template_detail.ACCGID),0)"
//+ "),0)"
//+ ",QTYBLC=isnull(("
//+ "select QTYBLC from (select LINKGID,isnull(sum(case when DC='贷' then (-(case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE QTYDR END)) ELSE (case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE QTYDR END) END),0) as QTYBLC"//累计借方
//+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
//+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
//+ " and STARTGID='" + strSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
//+ " GROUP by LINKGID) as a"
//+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
//+ "),0)"
//+ " where ACCESS='借方发生额' and " + strCondition;
#endregion
#region 借方发生额
sSQL = "update cw_cfs_template_detail set"
+ " QTYLASTBLC=isnull(("
+ "select QTYBLC from (select LINKGID,isnull(sum(case when DC='贷' then (-(case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE QTYDR END)) ELSE (case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE QTYDR END) END),0) as QTYBLC"//累计借方
+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
+ " and STARTGID='" + strCwSTARTGID + "' and ACCDATE<='" + sACCDATE + "'"
+ " GROUP by LINKGID) as a"
+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
+ "),0)"
+ ",QTYBLC=isnull(("
+ "select QTYBLC from (select LINKGID,isnull(sum(case when DC='贷' then (-(case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE QTYDR END)) ELSE (case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE QTYDR END) END),0) as QTYBLC"//累计借方
+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
+ " and STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
+ " GROUP by LINKGID) as a"
+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
+ "),0)"
+ " where ACCESS='借方发生额' and LINKGID in (select GID from cw_cfs_template where [STARTGID]='" + strCwSTARTGID + "') and " + strCondition;
#endregion
iResult = -2;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
#region 贷方发生额_old
//sSQL = "update cw_cfs_template_detail set"
//+ " QTYLASTBLC=isnull(("
//+ "isnull((select QTYLASTBLC from (select LINKGID,isnull(sum(case when DC='借' then (-(case when ACCATTRIBUTE<>'损益' then QTYLASTBLC ELSE QTYCR END)) ELSE (case when ACCATTRIBUTE<>'损益' then QTYLASTBLC ELSE QTYCR END) END),0) as QTYLASTBLC"//累计贷方
//+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
//+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
//+ " and STARTGID='" + strSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
//+ " GROUP by LINKGID) as a"
//+ " where a.LINKGID=cw_cfs_template_detail.ACCGID),0)"
//+ "-"
//+ "isnull((select QTYYEARBLC from (select LINKGID,isnull(sum(case when DC='借' then (-(case when ACCATTRIBUTE<>'损益' then QTYYEARBLC ELSE 0 END)) ELSE (case when ACCATTRIBUTE<>'损益' then QTYYEARBLC ELSE 0 END) END),0) as QTYYEARBLC"//累计贷方
//+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
//+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
//+ " and STARTGID='" + strSTARTGID + "' and SUBSTRING(ACCDATE,1,4)=SUBSTRING('" + sACCDATE + "',1,4) and IsInitialEntry=1"
//+ " GROUP by LINKGID) as a"
//+ " where a.LINKGID=cw_cfs_template_detail.ACCGID),0)"
//+ "),0)"
//+ ",QTYBLC=isnull(("
//+ "select QTYBLC from (select LINKGID,isnull(sum(case when DC='借' then (-(case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE QTYCR END)) ELSE (case when ACCATTRIBUTE<>'损益' then QTYBLC ELSE QTYCR END) END),0) as QTYBLC"//累计贷方
//+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
//+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
//+ " and STARTGID='" + strSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
//+ " GROUP by LINKGID) as a"
//+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
//+ "),0)"
//+ " where ACCESS='贷方发生额' and " + strCondition;
#endregion
#region 贷方发生额
sSQL = "update cw_cfs_template_detail set"
+ " QTYLASTBLC=isnull(("
+ "select QTYCR from (select LINKGID,isnull(sum(case when DC='借' then (-QTYCR) ELSE QTYCR END),0) as QTYCR"//累计贷方
+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
+ " and STARTGID='" + strCwSTARTGID + "' and ACCDATE<='" + sACCDATE + "'"
+ " GROUP by LINKGID) as a"
+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
+ "),0)"
+ ",QTYBLC=isnull(("
+ "select QTYCR from (select LINKGID,isnull(sum(case when DC='借' then (-QTYCR) ELSE QTYCR END),0) as QTYCR"//累计贷方
+ " from VW_cw_genleg_accitems_gl WITH(NOLOCK)"
+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
+ " and STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
+ " GROUP by LINKGID) as a"
+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
+ "),0)"
+ " where ACCESS='贷方发生额' and LINKGID in (select GID from cw_cfs_template where [STARTGID]='" + strCwSTARTGID + "') and " + strCondition;
#endregion
iResult = -3;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
#region 期初数_本年\本月期初数
sSQL = "update cw_cfs_template_detail set"
+ " QTYLASTBLC=isnull(("
+ "select QTYYEARBLC from (select LINKGID,isnull(sum(QTYYEARBLC),0) as QTYYEARBLC"//累计余额
+ " from cw_genleg_accitems WITH(NOLOCK)"
+ " where IsInitialEntry=1 and ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
+ " and STARTGID='" + strCwSTARTGID + "'"
+ " and [YEAR]='" + sACCDATE.Trim().Substring(0, 4) + "'"
+ " GROUP by LINKGID) as a"
+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
+ "),0)"
+ ",QTYBLC=isnull(("
+ "select QTYYEARBLC from (select LINKGID,isnull(sum(QTYYEARBLC),0) as QTYYEARBLC"//累计余额
+ " from cw_genleg_accitems WITH(NOLOCK)"
+ " where ISENABLE=1 and (ISDELETE=0 or ISDELETE is NULL)"
+ " and STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "'"
+ " GROUP by LINKGID) as a"
+ " where a.LINKGID=cw_cfs_template_detail.ACCGID"
+ "),0)"
+ " where ACCESS='期初数' and LINKGID in (select GID from cw_cfs_template where [STARTGID]='" + strCwSTARTGID + "') and " + strCondition;
#endregion
iResult = -4;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
}
#endregion
#region 按规则合计主表金额
public static void SaveRow(string sMODELGID, string sACCDATE, string companyid, string strUSERID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUSERID);
#region 更新_明细表金额
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string strSql = GetDataListSQL(sMODELGID, sACCDATE, companyid, strUSERID) + " order by LINENUM";
DataSet ds = T_ALL_DA.GetAllSQL(strSql);
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string strCondition = "LINKGID='" + ds.Tables[0].Rows[i]["GID"].ToString() + "'";
SaveRowDetail(sACCDATE, strCondition, strUSERID);
}
}
}
#endregion
#region 更新_主表明细金额
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYLASTBLC_S=isnull((select sum((case when OPERATORS='-' then (-QTYLASTBLC) ELSE QTYLASTBLC end)) from cw_cfs_template_detail WITH(NOLOCK) where LINKGID=cw_cfs_template.GID),0)"
+ ",QTYBLC_S=isnull((select sum((case when OPERATORS='-' then (-QTYBLC) ELSE QTYBLC end)) from cw_cfs_template_detail where LINKGID=cw_cfs_template.GID),0)"
+ " where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "'";
int iResult = -2;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
#region 更新_“一、二、三”的现金流量净额
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYLASTBLC_S=isnull((select sum((case when ITEMTYPE='现金流入' then QTYLASTBLC_S else (-QTYLASTBLC_S) end)) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and DETAILED=1 and ITEMTYPE<>'' and PACCGID in (select PACCGID from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where ITEMGID=cw_cfs_template.ITEMGID)),0)"
+ ",QTYBLC_S=isnull((select sum((case when ITEMTYPE='现金流入' then QTYBLC_S else (-QTYBLC_S) end)) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and DETAILED=1 and ITEMTYPE<>'' and PACCGID in (select PACCGID from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where ITEMGID=cw_cfs_template.ITEMGID)),0)"
+ ",QTYLASTBLC_H=isnull((select sum((case when ITEMTYPE='现金流入' then QTYLASTBLC_H else (-QTYLASTBLC_H) end)) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and DETAILED=1 and ITEMTYPE<>'' and PACCGID in (select PACCGID from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where ITEMGID=cw_cfs_template.ITEMGID)),0)"
+ ",QTYBLC_H=isnull((select sum((case when ITEMTYPE='现金流入' then QTYBLC_H else (-QTYBLC_H) end)) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and DETAILED=1 and ITEMTYPE<>'' and PACCGID in (select PACCGID from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where ITEMGID=cw_cfs_template.ITEMGID)),0)"
+ " where MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and ITEMGID in (SELECT gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and DETAILED=1 and ITEMTYPE='') and STARTGID='" + strCwSTARTGID + "'";
int iResult = -16;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
#region 更新_四、现金净增加额
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYLASTBLC_S=isnull((select sum(QTYLASTBLC_S) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and DETAILED=1 and ITEMTYPE=''),0)"
+ ",QTYBLC_S=isnull((select sum(QTYBLC_S) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and DETAILED=1 and ITEMTYPE=''),0)"
+ ",QTYLASTBLC_H=isnull((select sum(QTYLASTBLC_H) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and DETAILED=1 and ITEMTYPE=''),0)"
+ ",QTYBLC_H=isnull((select sum(QTYBLC_H) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and DETAILED=1 and ITEMTYPE=''),0)"
+ " where MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and ITEMGID in (SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%四、现金净增加额%' and DETAILED=0 and ITEMTYPE='') and STARTGID='" + strCwSTARTGID + "'";
int iResult = -17;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
#region 五、期末现金余额
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYLASTBLC_S=isnull((select sum(QTYLASTBLC_S) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and (ITEMNAME like '%四、现金净增加额%' or PACCGID in (SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%四、现金净增加额%' and DETAILED=0 and ITEMTYPE=''))),0)"
+ ",QTYBLC_S=isnull((select sum(QTYBLC_S) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and (ITEMNAME like '%四、现金净增加额%' or PACCGID in (SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%四、现金净增加额%' and DETAILED=0 and ITEMTYPE=''))),0)"
+ ",QTYLASTBLC_H=isnull((select sum(QTYLASTBLC_H) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and (ITEMNAME like '%四、现金净增加额%' or PACCGID in (SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%四、现金净增加额%' and DETAILED=0 and ITEMTYPE=''))),0)"
+ ",QTYBLC_H=isnull((select sum(QTYBLC_H) from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and (ITEMNAME like '%四、现金净增加额%' or PACCGID in (SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%四、现金净增加额%' and DETAILED=0 and ITEMTYPE=''))),0)"
+ " where MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and ITEMGID in (SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%五、期末现金余额%' and DETAILED=0 and ITEMTYPE='') and STARTGID='" + strCwSTARTGID + "'";
int iResult = -18;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
#region 更新_各个项目的合计字段
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYLASTBLC=isnull((QTYLASTBLC_S+QTYLASTBLC_H),0)"
+ ",QTYBLC=isnull((QTYBLC_S+QTYBLC_H),0)"
+ " where STARTGID='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "'";
int iResult = -19;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
#region 更新_调整本年“一、二、三”的负数
DataSet dsVW = T_ALL_DA.GetAllSQL("select * from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and (ITEMNAME LIKE '%收到其他与经营活动有关的现金%' or ITEMNAME LIKE '%支付其他与经营活动有关的现金%' or ITEMNAME LIKE '%收回短期投资、长期债券投资和长期股权投资收到的现金%' or ITEMNAME LIKE '%短期投资、长期债券投资和长期股权投资支付的现金%' or ITEMNAME LIKE '%取得借款收到的现金%' or ITEMNAME LIKE '%偿还借款本金支付的现金%') and QTYLASTBLC<0 order by LINENUM");
if (dsVW != null)
{
if (dsVW.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsVW.Tables[0].Rows.Count; i++)
{
#region 提取_调整的项目
string sITEM = "";
string sITEM2 = "";
if (dsVW.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("收到其他与经营活动有关的现金") > -1)
{
sITEM = "收到其他与经营活动有关的现金";
sITEM2 = "支付其他与经营活动有关的现金";
}
else if (dsVW.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("支付其他与经营活动有关的现金") > -1)
{
sITEM = "支付其他与经营活动有关的现金";
sITEM2 = "收到其他与经营活动有关的现金";
}
else if (dsVW.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("收回短期投资、长期债券投资和长期股权投资收到的现金") > -1)
{
sITEM = "收回短期投资、长期债券投资和长期股权投资收到的现金";
sITEM2 = "短期投资、长期债券投资和长期股权投资支付的现金";
}
else if (dsVW.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("短期投资、长期债券投资和长期股权投资支付的现金") > -1)
{
sITEM = "短期投资、长期债券投资和长期股权投资支付的现金";
sITEM2 = "收回短期投资、长期债券投资和长期股权投资收到的现金";
}
else if (dsVW.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("取得借款收到的现金") > -1)
{
sITEM = "取得借款收到的现金";
sITEM2 = "偿还借款本金支付的现金";
}
else if (dsVW.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("偿还借款本金支付的现金") > -1)
{
sITEM = "偿还借款本金支付的现金";
sITEM2 = "取得借款收到的现金";
}
#endregion
#region 更新_调整项目 sITEM2 的负数
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYLASTBLC=isnull((QTYLASTBLC+(" + dsVW.Tables[0].Rows[i]["QTYLASTBLC"].ToString() + "*-1)),0)"
+ ",QTYLASTBLC_S=isnull((QTYLASTBLC_S+(" + dsVW.Tables[0].Rows[i]["QTYLASTBLC_S"].ToString() + "*-1)),0)"
+ ",QTYLASTBLC_H=isnull((QTYLASTBLC_H+(" + dsVW.Tables[0].Rows[i]["QTYLASTBLC_H"].ToString() + "*-1)),0)"
+ " where MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and ITEMGID=(SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%" + sITEM2 + "%' and DETAILED=1 and ITEMTYPE<>'') and STARTGID='" + strCwSTARTGID + "'";
int iResult = -4;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
#region 更新_调整项目 sITEM 的负数
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYLASTBLC=isnull((QTYLASTBLC-(" + dsVW.Tables[0].Rows[i]["QTYLASTBLC"].ToString() + ")),0)"
+ ",QTYLASTBLC_S=isnull((QTYLASTBLC_S-(" + dsVW.Tables[0].Rows[i]["QTYLASTBLC_S"].ToString() + ")),0)"
+ ",QTYLASTBLC_H=isnull((QTYLASTBLC_H-(" + dsVW.Tables[0].Rows[i]["QTYLASTBLC_H"].ToString() + ")),0)"
+ " where MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and ITEMGID=(SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%" + sITEM + "%' and DETAILED=1 and ITEMTYPE<>'') and STARTGID='" + strCwSTARTGID + "'";
int iResult = -5;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
}
}
}
#endregion
#region 更新_调整本月“一、二、三”的负数
DataSet dsVWM = T_ALL_DA.GetAllSQL("select * from VW_CwCfsTemplate_ModelItem WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and (ITEMNAME LIKE '%收到其他与经营活动有关的现金%' or ITEMNAME LIKE '%支付其他与经营活动有关的现金%' or ITEMNAME LIKE '%收回短期投资、长期债券投资和长期股权投资收到的现金%' or ITEMNAME LIKE '%短期投资、长期债券投资和长期股权投资支付的现金%' or ITEMNAME LIKE '%取得借款收到的现金%' or ITEMNAME LIKE '%偿还借款本金支付的现金%') and QTYBLC<0 order by LINENUM");
if (dsVWM != null)
{
if (dsVWM.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsVWM.Tables[0].Rows.Count; i++)
{
#region 提取_调整的项目
string sITEM = "";
string sITEM2 = "";
if (dsVWM.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("收到其他与经营活动有关的现金") > -1)
{
sITEM = "收到其他与经营活动有关的现金";
sITEM2 = "支付其他与经营活动有关的现金";
}
else if (dsVWM.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("支付其他与经营活动有关的现金") > -1)
{
sITEM = "支付其他与经营活动有关的现金";
sITEM2 = "收到其他与经营活动有关的现金";
}
else if (dsVWM.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("收回短期投资、长期债券投资和长期股权投资收到的现金") > -1)
{
sITEM = "收回短期投资、长期债券投资和长期股权投资收到的现金";
sITEM2 = "短期投资、长期债券投资和长期股权投资支付的现金";
}
else if (dsVWM.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("短期投资、长期债券投资和长期股权投资支付的现金") > -1)
{
sITEM = "短期投资、长期债券投资和长期股权投资支付的现金";
sITEM2 = "收回短期投资、长期债券投资和长期股权投资收到的现金";
}
else if (dsVWM.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("取得借款收到的现金") > -1)
{
sITEM = "取得借款收到的现金";
sITEM2 = "偿还借款本金支付的现金";
}
else if (dsVWM.Tables[0].Rows[i]["ITEMNAME"].ToString().IndexOf("偿还借款本金支付的现金") > -1)
{
sITEM = "偿还借款本金支付的现金";
sITEM2 = "取得借款收到的现金";
}
#endregion
#region 更新_调整项目 sITEM2 的负数
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYBLC=isnull((QTYBLC+(" + dsVWM.Tables[0].Rows[i]["QTYBLC"].ToString() + "*-1)),0)"
+ ",QTYBLC_S=isnull((QTYBLC_S+(" + dsVWM.Tables[0].Rows[i]["QTYBLC_S"].ToString() + "*-1)),0)"
+ ",QTYBLC_H=isnull((QTYBLC_H+(" + dsVWM.Tables[0].Rows[i]["QTYBLC_H"].ToString() + "*-1)),0)"
+ " where MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and ITEMGID=(SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%" + sITEM2 + "%' and DETAILED=1 and ITEMTYPE<>'') and STARTGID='" + strCwSTARTGID + "'";
int iResult = -4;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
#region 更新_调整项目 sITEM 的负数
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYBLC=isnull((QTYBLC-(" + dsVWM.Tables[0].Rows[i]["QTYBLC"].ToString() + ")),0)"
+ ",QTYBLC_S=isnull((QTYBLC_S-(" + dsVWM.Tables[0].Rows[i]["QTYBLC_S"].ToString() + ")),0)"
+ ",QTYBLC_H=isnull((QTYBLC_H-(" + dsVWM.Tables[0].Rows[i]["QTYBLC_H"].ToString() + ")),0)"
+ " where MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and ITEMGID=(SELECT top 1 gid from cw_cfs_model_item WITH(NOLOCK) where MODELGID='" + sMODELGID + "' and ITEMNAME like '%" + sITEM + "%' and DETAILED=1 and ITEMTYPE<>'') and STARTGID='" + strCwSTARTGID + "'";
int iResult = -5;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
}
}
}
#endregion
}
#endregion
#region 判断会计期间内是否有模板
public static void isSaveRow(string sMODELGID, string sACCDATE, string USERID, string companyid)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(USERID);
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string sMODELGID_MR = "";
string strACCDATE = T_ALL_DA.GetStrSQL("ACCDATE", "select top 1 ACCDATE from cw_cfs_template WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' group by ACCDATE order by ACCDATE desc");
if (strACCDATE == "")
{
//当前方案本期无数据,取本年其他会计期间的数据
strACCDATE = T_ALL_DA.GetStrSQL("ACCDATE", "select top 1 ACCDATE from cw_cfs_template WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and SUBSTRING(convert(varchar,(ACCDATE + '-01'),23),1,4)=SUBSTRING(convert(varchar,'" + sACCDATE + "-01',23),1,4) group by ACCDATE order by ACCDATE desc");
if (strACCDATE == "")
{
//当前方案无本年数据,取默认方案的本年数据
sMODELGID_MR = T_ALL_DA.GetStrSQL("GID", "select top 1 GID from [cw_cfs_model] where ISDEFAULT=1 and STARTGID='" + strCwSTARTGID + "'");
strACCDATE = T_ALL_DA.GetStrSQL("ACCDATE", "select top 1 ACCDATE from cw_cfs_template WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID_MR + "' and SUBSTRING(convert(varchar,(ACCDATE + '-01'),23),1,4)=SUBSTRING(convert(varchar,'" + sACCDATE + "-01',23),1,4) group by ACCDATE order by ACCDATE desc");
if (strACCDATE == "")
{
//当默认方案无本年数据,取默认方案的其他年限的数据
strACCDATE = T_ALL_DA.GetStrSQL("ACCDATE", "select top 1 ACCDATE from cw_cfs_template WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID_MR + "' group by ACCDATE order by ACCDATE desc");
if (strACCDATE == "")
{
//当默认方案无本年数据,取默认方案的其他帐套的数据
strACCDATE = T_ALL_DA.GetStrSQL("ACCDATE", "select top 1 ACCDATE from cw_cfs_template WITH(NOLOCK) where MODELGID='" + sMODELGID_MR + "' group by ACCDATE order by ACCDATE desc");
}
}
}
}
if (strACCDATE != sACCDATE)
{
if (sMODELGID_MR == "")
{
#region 插入当前会计期间的数据
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
//主表
string sSQL = "INSERT INTO [cw_cfs_template]([GID],[MODELGID],[ITEMGID],[ACCDATE],[QTYLASTBLC],[QTYBLC],[QTYLASTBLC_S],[QTYBLC_S],[QTYLASTBLC_H],[QTYBLC_H],[STARTGID],[CORPID],[MODIFIEDUSER],[MODIFIEDTIME]) "
+ "SELECT NEWID() as [GID],[MODELGID],[ITEMGID],'" + sACCDATE + "' as [ACCDATE],0 as [QTYLASTBLC],0 as [QTYBLC],0 as [QTYLASTBLC_S],0 as [QTYBLC_S],0 as [QTYLASTBLC_H],0 as [QTYBLC_H],[STARTGID],'" + companyid + "' as [CORPID],'" + USERID + "' as [MODIFIEDUSER],GETDATE() FROM [cw_cfs_template] where STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + strACCDATE + "' and MODELGID='" + sMODELGID + "'";
int iResult = -2;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//明细表
sSQL = "INSERT INTO [cw_cfs_template_detail]([GID],[LINKGID],[ACCGID],[OPERATORS],[ACCESS],[QTYLASTBLC],[QTYBLC],[MODIFIEDUSER],[MODIFIEDTIME]) "
+ "SELECT NEWID() as [GID]"
+ ",[LINKGID]=isnull((SELECT top 1 [GID] FROM [cw_cfs_template] where STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "' and MODELGID='" + sMODELGID + "' and ITEMGID=(select top 1 gid from cw_cfs_model_item where MODELGID='" + sMODELGID + "' and ITEMNAME=(select top 1 ITEMNAME from cw_cfs_model_item where MODELGID='" + sMODELGID + "' and gid=(select top 1 ITEMGID from cw_cfs_template where STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + strACCDATE + "' and MODELGID='" + sMODELGID + "' and STARTGID='" + strCwSTARTGID + "' and gid=[cw_cfs_template_detail].LINKGID)))),'')"
+ ",[ACCGID]=(SELECT top 1 [GID] FROM [cw_accitems_gl] where STARTGID='" + strCwSTARTGID + "' and ACCID=(select top 1 ACCID from cw_accitems_gl WITH(NOLOCK) where GID=cw_cfs_template_detail.ACCGID) and [year]='" + sACCDATE.Trim().Substring(0, 4) + "')"
+ ",[OPERATORS],[ACCESS],0 as [QTYLASTBLC],0 as [QTYBLC],'" + USERID + "' as [MODIFIEDUSER],GETDATE()"
+ " FROM [cw_cfs_template_detail] WITH(NOLOCK)"
+ " where LINKGID in (SELECT [GID] FROM [cw_cfs_template] WITH(NOLOCK) where ACCDATE='" + strACCDATE + "' and MODELGID='" + sMODELGID + "' and STARTGID='" + strCwSTARTGID + "')";
iResult = -3;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
}
else
{
#region 插入当前会计期间的数据_根据默认方案
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
//主表
string sSQL = "INSERT INTO [cw_cfs_template]([GID],[MODELGID],[ITEMGID],[ACCDATE],[QTYLASTBLC],[QTYBLC],[QTYLASTBLC_S],[QTYBLC_S],[QTYLASTBLC_H],[QTYBLC_H],[STARTGID],[CORPID],[MODIFIEDUSER],[MODIFIEDTIME]) "
+ "SELECT NEWID() as [GID],'" + sMODELGID + "' as [sMODELGID]"
+ ",[ITEMGID]=isnull((select top 1 GID from cw_cfs_model_item where MODELGID='" + sMODELGID + "' and ITEMNAME=(select top 1 ITEMNAME from cw_cfs_model_item where MODELGID='" + sMODELGID_MR + "' and gid=[cw_cfs_template].ITEMGID)),'')"
+ ",'" + sACCDATE + "' as [ACCDATE],0 as [QTYLASTBLC],0 as [QTYBLC],0 as [QTYLASTBLC_S],0 as [QTYBLC_S],0 as [QTYLASTBLC_H],0 as [QTYBLC_H],[STARTGID],'" + companyid + "' as [CORPID],'" + USERID + "' as [MODIFIEDUSER],GETDATE()"
+ " FROM [cw_cfs_template] where STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + strACCDATE + "' and MODELGID='" + sMODELGID_MR + "'";
int iResult = -2;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//明细表
sSQL = "INSERT INTO [cw_cfs_template_detail]([GID],[LINKGID],[ACCGID],[OPERATORS],[ACCESS],[QTYLASTBLC],[QTYBLC],[MODIFIEDUSER],[MODIFIEDTIME]) "
+ "SELECT NEWID() as [GID]"
+ ",[LINKGID]=isnull((SELECT top 1 [GID] FROM [cw_cfs_template] where STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "' and STARTGID='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID + "' and ITEMGID=(select top 1 gid from cw_cfs_model_item where MODELGID='" + sMODELGID + "' and ITEMNAME=(select top 1 ITEMNAME from cw_cfs_model_item where MODELGID='" + sMODELGID_MR + "' and gid=(select top 1 ITEMGID from cw_cfs_template where STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + strACCDATE + "' and STARTGID='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID_MR + "' and gid=[cw_cfs_template_detail].LINKGID)))),'')"
+ ",[ACCGID],[OPERATORS],[ACCESS],0 as [QTYLASTBLC],0 as [QTYBLC],'" + USERID + "' as [MODIFIEDUSER],GETDATE()"
+ " FROM [cw_cfs_template_detail] WITH(NOLOCK)"
+ " where LINKGID in (SELECT [GID] FROM [cw_cfs_template] WITH(NOLOCK) where ACCDATE='" + strACCDATE + "' and STARTGID='" + strCwSTARTGID + "' and MODELGID='" + sMODELGID_MR + "')";
iResult = -3;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
}
}
else
{
if (sMODELGID_MR != "")
{
#region 插入当前会计期间的数据_根据默认方案
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
//主表
string sSQL = "INSERT INTO [cw_cfs_template]([GID],[MODELGID],[ITEMGID],[ACCDATE],[QTYLASTBLC],[QTYBLC],[QTYLASTBLC_S],[QTYBLC_S],[QTYLASTBLC_H],[QTYBLC_H],[STARTGID],[CORPID],[MODIFIEDUSER],[MODIFIEDTIME]) "
+ "SELECT NEWID() as [GID],'" + sMODELGID + "' as [sMODELGID]"
+ ",[ITEMGID]=isnull((select top 1 GID from cw_cfs_model_item where MODELGID='" + sMODELGID + "' and ITEMNAME=(select top 1 ITEMNAME from cw_cfs_model_item where MODELGID='" + sMODELGID_MR + "' and gid=[cw_cfs_template].ITEMGID)),'')"
+ ",'" + sACCDATE + "' as [ACCDATE],0 as [QTYLASTBLC],0 as [QTYBLC],0 as [QTYLASTBLC_S],0 as [QTYBLC_S],0 as [QTYLASTBLC_H],0 as [QTYBLC_H],[STARTGID],'" + companyid + "' as [CORPID],'" + USERID + "' as [MODIFIEDUSER],GETDATE()"
+ " FROM [cw_cfs_template] where ACCDATE='" + strACCDATE + "' and MODELGID='" + sMODELGID_MR + "' and STARTGID='" + strCwSTARTGID + "'";
int iResult = -2;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//明细表
sSQL = "INSERT INTO [cw_cfs_template_detail]([GID],[LINKGID],[ACCGID],[OPERATORS],[ACCESS],[QTYLASTBLC],[QTYBLC],[MODIFIEDUSER],[MODIFIEDTIME]) "
+ "SELECT NEWID() as [GID]"
+ ",[LINKGID]=isnull((SELECT top 1 [GID] FROM [cw_cfs_template] where STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "' and MODELGID='" + sMODELGID + "' and ITEMGID=(select top 1 gid from cw_cfs_model_item where MODELGID='" + sMODELGID + "' and ITEMNAME=(select top 1 ITEMNAME from cw_cfs_model_item where MODELGID='" + sMODELGID_MR + "' and gid=(select top 1 ITEMGID from cw_cfs_template where STARTGID='" + strCwSTARTGID + "' and ACCDATE='" + strACCDATE + "' and MODELGID='" + sMODELGID_MR + "' and gid=[cw_cfs_template_detail].LINKGID)))),'')"
+ ",[ACCGID],[OPERATORS],[ACCESS],0 as [QTYLASTBLC],0 as [QTYBLC],'" + USERID + "' as [MODIFIEDUSER],GETDATE()"
+ " FROM [cw_cfs_template_detail] WITH(NOLOCK)"
+ " where LINKGID in (SELECT [GID] FROM [cw_cfs_template] WITH(NOLOCK) where ACCDATE='" + strACCDATE + "' and MODELGID='" + sMODELGID_MR + "' and STARTGID='" + strCwSTARTGID + "')";
iResult = -3;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
}
}
}
#endregion
#region 判断资产负债表是否平衡
public static DBResult onIsCwSofp(string sACCDATE, string companyid, string strUSERID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUSERID);
var result = new DBResult();
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
try
{
Decimal dl = Decimal.Parse(T_ALL_DA.GetStrSQL("inum", "SELECT top 1 (QTYLASTBLC-QTYLASTBLC2) as inum from cw_sofp_template where [STARTGID]='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "' ORDER BY LINENUM DESC"));
if (dl != 0)
{
result.Success = false;
result.Message = "资产负债表不平衡,请先调整!";
return result;
}
}
catch (Exception)
{
result.Success = false;
result.Message = "资产负债表不平衡,请先调整!";
return result;
}
//货币资金_期末数
Decimal dlQTYLASTBLC = Decimal.Parse(T_ALL_DA.GetStrSQL("QTYLASTBLC", "SELECT isnull(QTYLASTBLC,0) as QTYLASTBLC from cw_sofp_template where [STARTGID]='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "' and LINENUM=2"));
result.Success = true;
result.Message = dlQTYLASTBLC.ToString();
return result;
}
#endregion
#region 自动调平
static public void onAutoLevel(string sMODELGID, string sACCDATE, string USERID, string companyid)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(USERID);
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
Decimal dlSofp = 0;
int iResult = 0;
DBResult result = onIsCwSofp(sACCDATE, companyid, USERID);
if (result.Message.IndexOf("不平衡") < 0)
{
dlSofp = Decimal.Parse(result.Message.ToString());
}
Decimal dlSofp2 = Decimal.Parse(T_ALL_DA.GetStrSQL("QTYYEARBLC", "SELECT isnull(QTYYEARBLC,0) as QTYYEARBLC from cw_sofp_template where [STARTGID]='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "' and LINENUM=2"));
DataSet ds = T_ALL_DA.GetAllSQL("SELECT top 1 * from VW_CwCfsTemplate_ModelItem where [STARTGID]='" + strCwSTARTGID + "' and ACCDATE='" + sACCDATE + "' ORDER BY LINENUM DESC");
#region 差额 = 最后一行 - 资表【货币资金期末数】,更新到“支付其他与经营活动有关的现金”
Decimal dlCE = Decimal.Parse(ds.Tables[0].Rows[0]["QTYLASTBLC"].ToString()) - dlSofp;
Decimal dlQTYBLC = Decimal.Parse(ds.Tables[0].Rows[0]["QTYBLC"].ToString()) - dlSofp2;
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
try
{
string sSQL = "update cw_cfs_template set"
+ " QTYLASTBLC_H=isnull((QTYLASTBLC_H+" + dlCE + "),0)"
+ ",QTYBLC_H=isnull((QTYBLC_H+" + dlQTYBLC + "),0)"
+ " where MODELGID='" + sMODELGID + "' and ACCDATE='" + sACCDATE + "' and STARTGID='" + strCwSTARTGID + "' and ITEMGID=(SELECT top 1 GID from cw_cfs_model_item where MODELGID in (SELECT GID from cw_cfs_model WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "') and ITEMNAME like '%支付其他与经营活动有关的现金%')";
iResult = -1;
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, sSQL, null);
//事务提交
iResult = 1;
sqlTran.Commit();
}
catch (Exception)
{
sqlTran.Rollback();
}
finally
{
SqlHelper.CloseConnection();
sqlTran.Dispose();
}
}
#endregion
GetRecount(sMODELGID, sACCDATE, USERID, companyid);
}
#endregion
}
}