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/MsCtBankJournal/MsCtBankJournalDAL.cs

1249 lines
92 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using DSWeb.MvcShipping.DAL.MsCtInitialBalanceDAL;
using DSWeb.MvcShipping.Models.MsCtBankJournal;
using DSWeb.MvcShipping.Models.RptCtGenlegAccitems;
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.MsCtBankJournalDAL
{
public class MsCtBankJournalDAL
{
#region 查询主表
static public List<MsCtBankJournal> GetDataList2(string strCondition, string userid, string usercode, string companyid,string sort = null)
{
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
var strSql = new StringBuilder();
strSql.Append("SELECT *,CREATEUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.CREATEUSER),MODIFIEDUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.MODIFIEDUSER),ACCNAME=(select top 1 ACCNAME from [cw_accitems_gl] where gid=ct_bank_journal.ACCGID),SETTLETYPENAME=isnull((select top 1 STLNAME from [code_stlmode] where STLCODE=ct_bank_journal.SETTLETYPE),''),ISCHECKING=(case when CHECKINGGID='' then '' else (case when CHECKINGGID like 'auto%' then '*' else '**' end) end) from ct_bank_journal WITH(NOLOCK) where STARTGID='" + strCtSTARTGID + "'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
//
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else
{
strSql.Append(" order by VOUDATE desc,convert(decimal(10),ITEMNO) desc");
}
return SetData(strSql);
}
static public MsCtBankJournal GetData(string condition, string companyid, string strUserID)
{
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(strUserID);
var strSql = new StringBuilder();
strSql.Append("SELECT *,CREATEUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.CREATEUSER),MODIFIEDUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.MODIFIEDUSER),ACCNAME=(select top 1 ACCNAME from [cw_accitems_gl] where gid=ct_bank_journal.ACCGID),SETTLETYPENAME=isnull((select top 1 STLNAME from [code_stlmode] where STLCODE=ct_bank_journal.SETTLETYPE),''),ISCHECKING=(case when CHECKINGGID='' then '' else (case when CHECKINGGID like 'auto%' then '*' else '**' end) end) from ct_bank_journal WITH(NOLOCK) where STARTGID='" + strCtSTARTGID + "'");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
var list=SetData(strSql);
if (list.Count > 0)
return list[0];
return new MsCtBankJournal();
}
private static List<MsCtBankJournal> SetData(StringBuilder strSql)
{
var headList = new List<MsCtBankJournal>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
MsCtBankJournal data = new MsCtBankJournal();
#region Set DB data to Object
data.GID = (reader["GID"] == null ? "" : Convert.ToString(reader["GID"]));//惟一值
data.ACCGID = (reader["ACCGID"] == null ? "" : Convert.ToString(reader["ACCGID"]));//科目GID
data.FCYNO = (reader["FCYNO"] == null ? "" : Convert.ToString(reader["FCYNO"]));//外币编号usd
//data.VOUDATE = (reader["VOUDATE"] == null ? "" : Convert.ToString(reader["VOUDATE"]));//凭证日期
if (reader["VOUDATE"] != null && reader["VOUDATE"].ToString().Trim().IndexOf("0001") < 0 && reader["VOUDATE"].ToString().Trim().IndexOf("1900") < 0 && reader["VOUDATE"].ToString().Trim() != "")
{
data.VOUDATE = Convert.ToDateTime(reader["VOUDATE"]);//凭证日期
}
data.ITEMNO = (reader["ITEMNO"] == null ? 0 : Convert.ToInt32(reader["ITEMNO"]));//当日序号
data.VGID = (reader["VGID"] == null ? "" : Convert.ToString(reader["VGID"]));//凭证明细GID
data.VKNO = (reader["VKNO"] == null ? "" : Convert.ToString(reader["VKNO"]));//凭证字
data.VOUNO = (reader["VOUNO"] == null ? "" : Convert.ToString(reader["VOUNO"]));//凭证号
data.FENTRYID = (reader["FENTRYID"] == null ? 0 : Convert.ToInt32(reader["FENTRYID"]));//分录号
data.ACCDATE = (reader["ACCDATE"] == null ? "" : Convert.ToString(reader["ACCDATE"]));//会计期间
data.SETTLETYPE = (reader["SETTLETYPE"] == null ? 0 : Convert.ToInt32(reader["SETTLETYPE"]));//结算方式
data.BILLNO = (reader["BILLNO"] == null ? "" : Convert.ToString(reader["BILLNO"]));//结算号
//data.SVOUDATE = (reader["SVOUDATE"] == null ? "" : Convert.ToString(reader["SVOUDATE"]));//结算日期
if (reader["SVOUDATE"] != null && reader["SVOUDATE"].ToString().Trim().IndexOf("0001") < 0 && reader["SVOUDATE"].ToString().Trim().IndexOf("1900") < 0 && reader["SVOUDATE"].ToString().Trim() != "")
{
data.SVOUDATE = Convert.ToDateTime(reader["SVOUDATE"]);//结算日期
}
data.DC = (reader["DC"] == null ? "" : Convert.ToString(reader["DC"]));//借贷方向
data.DR = (reader["DR"] == null ? 0 : Convert.ToDecimal(reader["DR"]));//原币借方金额(互斥)
data.CR = (reader["CR"] == null ? 0 : Convert.ToDecimal(reader["CR"]));//原币贷方金额(互斥)
data.FCYEXRATE = (reader["FCYEXRATE"] == null ? 0 : Convert.ToDecimal(reader["FCYEXRATE"]));//汇率
data.QTYDR = (reader["QTYDR"] == null ? 0 : Convert.ToDecimal(reader["QTYDR"]));//折合本位币借方
data.QTYCR = (reader["QTYCR"] == null ? 0 : Convert.ToDecimal(reader["QTYCR"]));//折合本位币贷方
data.BLC = (reader["BLC"] == null ? 0 : Convert.ToDecimal(reader["BLC"]));//原币余额
data.EXPLAN = (reader["EXPLAN"] == null ? "" : Convert.ToString(reader["EXPLAN"]));//摘要,规则生成
data.ENTERED = (reader["ENTERED"] == null ? "" : Convert.ToString(reader["ENTERED"]));//经手人
data.ISINITIAL = (reader["ISINITIAL"] == null ? false : Convert.ToBoolean(reader["ISINITIAL"]));//是否期初
data.CHECKINGGID = (reader["CHECKINGGID"] == null ? "" : Convert.ToString(reader["CHECKINGGID"]));//对账GID
data.STARTGID = (reader["STARTGID"] == null ? "" : Convert.ToString(reader["STARTGID"]));//账套启用GID
data.CORPID = (reader["CORPID"] == null ? "" : Convert.ToString(reader["CORPID"]));//分公司GID
data.CREATEUSER = (reader["CREATEUSER"] == null ? "" : Convert.ToString(reader["CREATEUSER"]));//制单人GID
if (reader["CREATETIME"] != null && reader["CREATETIME"].ToString().Trim().IndexOf("0001") < 0 && reader["CREATETIME"].ToString().Trim().IndexOf("1900") < 0 && reader["CREATETIME"].ToString().Trim() != "")
{
data.CREATETIME = Convert.ToDateTime(reader["CREATETIME"]);//创建时间
}
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.SETTLETYPENAME = (reader["SETTLETYPENAME"] == null ? "" : Convert.ToString(reader["SETTLETYPENAME"]));//结算方式
data.CREATEUSERNAME = (reader["CREATEUSERNAME"] == null ? "" : Convert.ToString(reader["CREATEUSERNAME"]));//制单人
data.MODIFIEDUSERNAME = (reader["MODIFIEDUSERNAME"] == null ? "" : Convert.ToString(reader["MODIFIEDUSERNAME"]));//最后一次更改操作人
data.ACCNAME = (reader["ACCNAME"] == null ? "" : Convert.ToString(reader["ACCNAME"]));//科目
data.ISCHECKING = (reader["ISCHECKING"] == null ? "" : Convert.ToString(reader["ISCHECKING"]));//对账状态
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
static public List<MsCtBankJournal> GetDataList(string strCondition, string strCondition3, string userid, string usercode, string companyid, string sort = null)
{
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
var strSql = new StringBuilder();
strSql.Append("( ");
strSql.Append("SELECT *,CREATEUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.CREATEUSER),MODIFIEDUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.MODIFIEDUSER),ACCNAME=(select top 1 ACCNAME from [cw_accitems_gl] where gid=ct_bank_journal.ACCGID),SETTLETYPENAME=(select top 1 STLNAME from [code_stlmode] where STLCODE=ct_bank_journal.SETTLETYPE),ISCHECKING=(case when CHECKINGGID='' then '' else (case when CHECKINGGID like 'auto%' then '*' else '**' end) end),linenum=1,convert(decimal(10),ITEMNO) as ITEMNO1 from ct_bank_journal WITH(NOLOCK) where ISINITIAL=0 and STARTGID='" + strCtSTARTGID + "'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
strSql.Append(") union (");
//本日合计
strSql.Append("select newid() as GID,'','',VOUDATE,0 as ITEMNO,'','','',0,'','','','',DC=(case when isnull(SUM(BLC),0)<0 then '贷' else '借' end),DR=isnull(SUM(DR),0),CR=isnull(SUM(CR),0),1,QTYDR=0,QTYCR=0,BLC,'本日合计' as EXPLAN,'','','','','','','','','','','','','','',2 as linenum,'0' as ITEMNO1 ");
strSql.Append("from (select newid() as GID,VOUDATE,DR=isnull(DR,0),CR=isnull(CR,0),QTYDR=0,QTYCR=0,BLC=isnull((SELECT top 1 (CASE WHEN CURRENCY='RMB' THEN AMTLASTBLC ELSE FCYLASTBLC END) as BLC from ct_genleg_accitems WITH(NOLOCK) WHERE STARTGID='" + strCtSTARTGID + "' AND ([YEAR]+'-'+[MONTH]+'-'+[DAY])=convert(varchar,ct_bank_journal.VOUDATE,23)");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition.Trim().Replace("FCYNO", "CURRENCY").Replace("ACCGID", "LINKGID").Replace("ACCDATE", "([YEAR]+'-'+[MONTH])").Replace("VOUDATE", "([YEAR]+'-'+[MONTH]+'-'+[DAY])"));
}
strSql.Append(" ORDER by [YEAR] desc,[MONTH] desc,[DAY] desc),0) from ct_bank_journal WITH(NOLOCK) where ISINITIAL=0 and STARTGID='" + strCtSTARTGID + "'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
strSql.Append(") as als group by VOUDATE,BLC");
strSql.Append(") union (");
//本期合计
strSql.Append("select newid() as GID,'','',VOUDATE,0 as ITEMNO,'','','',0,'','','','',DC=(case when isnull(SUM(BLC),0)<0 then '贷' else '借' end),DR=isnull(SUM(DR),0),CR=isnull(SUM(CR),0),1,QTYDR=0,QTYCR=0,BLC,EXPLAN='本期合计','','','','','','','','','','','','','','',linenum=3,'0' as ITEMNO1 from (");
strSql.Append("select newid() as GID,(ACCDATE+'-'+CONVERT(nvarchar(2), DATEDIFF(day,(ACCDATE+'-01'),DATEADD(month,1,(ACCDATE+'-01'))))) as VOUDATE,DR=isnull(DR,0),CR=isnull(CR,0),QTYDR=0,QTYCR=0,BLC=isnull((SELECT top 1 (CASE WHEN CURRENCY='RMB' THEN AMTLASTBLC ELSE FCYLASTBLC END) as BLC from ct_genleg_accitems WHERE STARTGID='" + strCtSTARTGID + "' AND ([YEAR]+'-'+[MONTH])=ct_bank_journal.ACCDATE");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition.Trim().Replace("FCYNO", "CURRENCY").Replace("ACCGID", "LINKGID").Replace("ACCDATE", "([YEAR]+'-'+[MONTH])").Replace("VOUDATE", "([YEAR]+'-'+[MONTH]+'-'+[DAY])"));
}
strSql.Append(" ORDER by [YEAR] desc,[MONTH] desc,[DAY] desc),0) from ct_bank_journal WITH(NOLOCK) where ISINITIAL=0 and STARTGID='" + strCtSTARTGID + "'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
strSql.Append(") as bls group by VOUDATE,BLC");
strSql.Append(") union (");
//合计
strSql.Append("select newid() as GID,'','','9999-12-31 00:00:00.000',0,'','','',0,'','','','',DC=(case when BLC<0 then '贷' else '借' end),DR=isnull(SUM(DR),0),CR=isnull(SUM(CR),0),1,QTYDR=0,QTYCR=0,BLC,EXPLAN='合计','','','','','','','','','','','','','','',linenum=4,'0' as ITEMNO1 from (");
strSql.Append("select newid() as GID,DR=isnull(DR,0),CR=isnull(CR,0),QTYDR=0,QTYCR=0,BLC=isnull((SELECT top 1 (CASE WHEN CURRENCY='RMB' THEN AMTLASTBLC ELSE FCYLASTBLC END) as BLC from ct_genleg_accitems WITH(NOLOCK) WHERE STARTGID='" + strCtSTARTGID + "'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition.Trim().Replace("FCYNO", "CURRENCY").Replace("ACCGID", "LINKGID").Replace("ACCDATE", "([YEAR]+'-'+[MONTH])").Replace("VOUDATE", "([YEAR]+'-'+[MONTH]+'-'+[DAY])"));
}
strSql.Append(" ORDER by [YEAR] desc,[MONTH] desc,[DAY] desc),0) from ct_bank_journal WITH(NOLOCK) where ISINITIAL=0 and STARTGID='" + strCtSTARTGID + "'");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
strSql.Append(") as bls group by BLC");
strSql.Append(") union (");
//期初余额
strSql.Append("select top 1 GID,'','','' as VOUDATE,0,'','','',0,'','','','',DC=(case when (case when CURRENCY='RMB' then AMTYEARBLC else FCYYEARBLC end)<0 then '贷' else '借' end),DR=0,CR=0,1,QTYDR=0,QTYCR=0,BLC=isnull((case when (case when CURRENCY='RMB' then AMTYEARBLC else FCYYEARBLC end)<0 then -(case when CURRENCY='RMB' then AMTYEARBLC else FCYYEARBLC end) else (case when CURRENCY='RMB' then AMTYEARBLC else FCYYEARBLC end) end),0),EXPLAN='(期初余额)','','','','','','','','','','','','','','',linenum=0,'0' as ITEMNO1 from ct_genleg_accitems WITH(NOLOCK) where STARTGID='" + strCtSTARTGID + "'");
if (!string.IsNullOrEmpty(strCondition3))
{
strSql.Append(" and " + strCondition3);
}
strSql.Append(" and DAY='01' )");
//
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else
{
strSql.Append(" order by VOUDATE,linenum,ITEMNO1");
}
return SetData(strSql);
}
#endregion
#region 查询明细表
static public List<MsCtBankJournal> GetDetailList(string strCondition, string userid, string usercode, string companyid)
{
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string sCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
//
string sSQL = "select top 1 ACCDAY from ct_carry_over where STARTGID='" + sCtSTARTGID.Trim() + "' order by STARTGID,ACCDAY desc";
string sACCDAY = T_ALL_DA.GetStrSQL("ACCDAY", sSQL);
if (sACCDAY != "")
{
sACCDAY = DateTime.Parse(sACCDAY).ToString("yyyy-MM-dd");
sACCDAY = " and VOUDATE>'" + sACCDAY + "'";
}
//
var strSql = new StringBuilder();
strSql.Append("SELECT *,CREATEUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.CREATEUSER),MODIFIEDUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.MODIFIEDUSER),ACCNAME=(select top 1 ACCNAME from [cw_accitems_gl] where gid=ct_bank_journal.ACCGID),SETTLETYPENAME=isnull((select top 1 STLNAME from [code_stlmode] where STLCODE=ct_bank_journal.SETTLETYPE),''),ISCHECKING=(case when CHECKINGGID='' then '' else (case when CHECKINGGID like 'auto%' then '*' else '**' end) end) from ct_bank_journal WITH(NOLOCK) where STARTGID='" + sCtSTARTGID + "' and (CHECKINGGID='' or CHECKINGGID is null)" + sACCDAY);
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
strSql.Append(" order by VOUDATE,convert(decimal(10),ITEMNO)");
return SetData(strSql);
}
#endregion
#region 返回出纳当前账套和会计期间
public static string GetInitData(string isInitial, string strCompanyID, string strUserID)
{
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(strUserID);
if (strCtSTARTGID == "")
{
return "-1";
}
string sSTARTMONTH = T_ALL_DA.GetStrSQL("STARTMONTH", "select top 1 STARTMONTH from ct_design_startusing WITH(NOLOCK) where gid='" + strCtSTARTGID + "' and (ISDELETE=0 or ISDELETE is null)");
string strACCDATE = BasicDataRefDAL.GetCtACCDATE(strUserID);
if (strACCDATE == "")
{
return "-1";
}
//
if (isInitial=="1")
{
string strACCDAY = DateTime.Parse(sSTARTMONTH + "-01").AddDays(-1).ToString("yyyy-MM-dd");
sSTARTMONTH = strACCDAY.Substring(0, 7);
string strACCTODAY = sSTARTMONTH + "-" + DateTime.Now.Day.ToString();
return strCtSTARTGID + "" + sSTARTMONTH + "" + strACCDAY + "" + strACCTODAY;
}
else
{
string strACCDAY = DateTime.Parse(strACCDATE + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
string strACCTODAY = strACCDATE + "-" + DateTime.Now.Day.ToString();
return strCtSTARTGID + "" + strACCDATE + "" + strACCDAY + "" + strACCTODAY;
}
}
#endregion
#region 更新科目总账表ct_genleg_accitems
public static void onCtGenlegAccitems(MsCtBankJournal headRow, string companyid, string userid)
{
#region 默认值
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string sYear = headRow.VOUDATE.Year.ToString();
string sMonth = headRow.VOUDATE.Month.ToString();
if (sMonth.Trim().Length == 1)
{
sMonth = "0" + sMonth;
}
string sDay = headRow.VOUDATE.Day.ToString();
if (sDay.Trim().Length == 1)
{
sDay = "0" + sDay;
}
string sYear2 = headRow.VOUDATE.AddDays(1).Year.ToString();
string sMonth2 = headRow.VOUDATE.AddDays(1).Month.ToString();
if (sMonth2.Trim().Length == 1)
{
sMonth2 = "0" + sMonth2;
}
string sDay2 = headRow.VOUDATE.AddDays(1).Day.ToString();
if (sDay2.Trim().Length == 1)
{
sDay2 = "0" + sDay2;
}
string strCtACCDATE = BasicDataRefDAL.GetCtACCDATE(userid);
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
string sSQL = "select DC from cw_accitems_gl where STARTGID='" + strCtSTARTGID + "' AND GID='" + headRow.ACCGID.ToString() + "'";
string ACCDC = T_ALL_DA.GetStrSQL("DC", sSQL);
sSQL = "select top 1 GID from ct_genleg_accitems WITH(NOLOCK) WHERE STARTGID='" + strCtSTARTGID + "' AND YEAR='" + sYear + "' and MONTH='" + sMonth + "' and DAY='" + sDay + "' and LINKGID='" + headRow.ACCGID.ToString() + "' and CURRENCY='" + headRow.FCYNO.ToString() + "'";
string sGID = T_ALL_DA.GetStrSQL("GID", sSQL);
sSQL = "select top 1 GID from ct_genleg_accitems WITH(NOLOCK) WHERE STARTGID='" + strCtSTARTGID + "' AND YEAR='" + sYear2 + "' and MONTH='" + sMonth2 + "' and DAY='" + sDay2 + "' and LINKGID='" + headRow.ACCGID.ToString() + "' and CURRENCY='" + headRow.FCYNO.ToString() + "'";
string sGID2 = T_ALL_DA.GetStrSQL("GID", sSQL);
sSQL = "select top 1 * from ct_genleg_accitems WITH(NOLOCK) WHERE STARTGID='" + strCtSTARTGID + "' AND LINKGID='" + headRow.ACCGID.ToString() + "' and CURRENCY='" + headRow.FCYNO.ToString() + "' and convert(varchar,([Year] + '-' + [Month] + '-' + [Day]),23)<'" + headRow.VOUDATE.ToString("yyyy-MM-dd") + "' order by [YEAR] desc,[MONTH] desc,[DAY] desc";
DataSet dsCtGenlegAccitems = T_ALL_DA.GetAllSQL(sSQL);
#endregion
#region 当日总账表
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
if (sGID.Trim() == "")
{
#region 插入当日总账表
sSQL = "INSERT INTO [ct_genleg_accitems]([GID],[YEAR],[MONTH],[DAY],[LINKGID],[CURRENCY],[AMTYEARDR],[AMTYEARCR],[AMTYEARBLC],[AMTDR],[AMTCR],[AMTBLC],[AMTLASTDR],[AMTLASTCR],[AMTLASTBLC],[FCYYEARDR],[FCYYEARCR],[FCYYEARBLC],[FCYDR],[FCYCR],[FCYBLC],[FCYLASTDR],[FCYLASTCR],[FCYLASTBLC],[QTYYEARDR],[QTYYEARCR],[QTYYEARBLC],[QTYDR],[QTYCR],[QTYBLC],[QTYLASTDR],[QTYLASTCR],[QTYLASTBLC],[IsInitialEntry],[CORPID],[CREATEUSER],[CREATETIME],[MODIFIEDUSER],[MODIFIEDTIME],[ACCDATE],[STARTGID])"
+ " select NEWID() as GID,'" + sYear + "' as [YEAR],'" + sMonth + "' as [MONTH],'" + sDay + "' as [DAY],'" + headRow.ACCGID.ToString() + "' as [LINKGID],'" + headRow.FCYNO.ToString() + "' as [CURRENCY]";
#region 判断是否有之前数据余额
if (dsCtGenlegAccitems!=null)
{
if(dsCtGenlegAccitems.Tables[0].Rows.Count>0)
{
sSQL += ",AMTYEARDR=" + (ACCDC=="借" ? dsCtGenlegAccitems.Tables[0].Rows[0]["AMTLASTBLC"].ToString() : "0")
+ ",AMTYEARCR=" + (ACCDC == "贷" ? dsCtGenlegAccitems.Tables[0].Rows[0]["AMTLASTBLC"].ToString() : "0")
+ ",AMTYEARBLC=" + dsCtGenlegAccitems.Tables[0].Rows[0]["AMTLASTBLC"].ToString()
+ ",AMTDR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(DR),0) else 0 end)"
+ ",AMTCR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(CR),0) else 0 end)"
+ ",AMTBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",AMTLASTDR=" + (ACCDC == "借" ? dsCtGenlegAccitems.Tables[0].Rows[0]["AMTLASTBLC"].ToString() : "0") + "+(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(DR),0) else 0 end)"
+ ",AMTLASTCR=" + (ACCDC == "贷" ? dsCtGenlegAccitems.Tables[0].Rows[0]["AMTLASTBLC"].ToString() : "0") + "+(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(CR),0) else 0 end)"
+ ",AMTLASTBLC=" + dsCtGenlegAccitems.Tables[0].Rows[0]["AMTLASTBLC"].ToString() + "+(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",FCYYEARDR=" + (ACCDC == "借" ? dsCtGenlegAccitems.Tables[0].Rows[0]["FCYLASTBLC"].ToString() : "0")
+ ",FCYYEARCR=" + (ACCDC == "贷" ? dsCtGenlegAccitems.Tables[0].Rows[0]["FCYLASTBLC"].ToString() : "0")
+ ",FCYYEARBLC=" + dsCtGenlegAccitems.Tables[0].Rows[0]["FCYLASTBLC"].ToString()
+ ",FCYDR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(DR),0) else 0 end)"
+ ",FCYCR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(CR),0) else 0 end)"
+ ",FCYBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",FCYLASTDR=" + (ACCDC == "借" ? dsCtGenlegAccitems.Tables[0].Rows[0]["FCYLASTBLC"].ToString() : "0") + "+(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(DR),0) else 0 end)"
+ ",FCYLASTCR=" + (ACCDC == "贷" ? dsCtGenlegAccitems.Tables[0].Rows[0]["FCYLASTBLC"].ToString() : "0") + "+(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(CR),0) else 0 end)"
+ ",FCYLASTBLC=" + dsCtGenlegAccitems.Tables[0].Rows[0]["FCYLASTBLC"].ToString() + "+(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",QTYYEARDR=" + (ACCDC == "借" ? dsCtGenlegAccitems.Tables[0].Rows[0]["QTYLASTBLC"].ToString() : "0")
+ ",QTYYEARCR=" + (ACCDC == "贷" ? dsCtGenlegAccitems.Tables[0].Rows[0]["QTYLASTBLC"].ToString() : "0")
+ ",QTYYEARBLC=" + dsCtGenlegAccitems.Tables[0].Rows[0]["QTYLASTBLC"].ToString()
+ ",QTYDR=isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)"
+ ",QTYCR=isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)"
+ ",QTYBLC=(case when '" + ACCDC + "'='借' then (isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)) else (isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)) end)"
+ ",QTYLASTDR=" + (ACCDC == "借" ? dsCtGenlegAccitems.Tables[0].Rows[0]["QTYLASTBLC"].ToString() : "0") + "+isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)"
+ ",QTYLASTCR=" + (ACCDC == "贷" ? dsCtGenlegAccitems.Tables[0].Rows[0]["QTYLASTBLC"].ToString() : "0") + "+isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)"
+ ",QTYLASTBLC=" + dsCtGenlegAccitems.Tables[0].Rows[0]["QTYLASTBLC"].ToString() + "+(case when '" + ACCDC + "'='借' then (isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)) else (isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)) end)";
}
else
{
sSQL += ",AMTYEARDR=0,AMTYEARCR=0,AMTYEARBLC=0"
+ ",AMTDR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(DR),0) else 0 end)"
+ ",AMTCR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(CR),0) else 0 end)"
+ ",AMTBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",AMTLASTDR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(DR),0) else 0 end)"
+ ",AMTLASTCR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(CR),0) else 0 end)"
+ ",AMTLASTBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",FCYYEARDR=0,FCYYEARCR=0,FCYYEARBLC=0"
+ ",FCYDR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(DR),0) else 0 end)"
+ ",FCYCR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(CR),0) else 0 end)"
+ ",FCYBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",FCYLASTDR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(DR),0) else 0 end)"
+ ",FCYLASTCR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(CR),0) else 0 end)"
+ ",FCYLASTBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",QTYYEARDR=0,QTYYEARCR=0,QTYYEARBLC=0"
+ ",QTYDR=isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)"
+ ",QTYCR=isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)"
+ ",QTYBLC=(case when '" + ACCDC + "'='借' then (isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)) else (isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)) end)"
+ ",QTYLASTDR=isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)"
+ ",QTYLASTCR=isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)"
+ ",QTYLASTBLC=(case when '" + ACCDC + "'='借' then (isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)) else (isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)) end)";
}
}
else
{
sSQL += ",AMTYEARDR=0,AMTYEARCR=0,AMTYEARBLC=0"
+ ",AMTDR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(DR),0) else 0 end)"
+ ",AMTCR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(CR),0) else 0 end)"
+ ",AMTBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",AMTLASTDR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(DR),0) else 0 end)"
+ ",AMTLASTCR=(case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(CR),0) else 0 end)"
+ ",AMTLASTBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",FCYYEARDR=0,FCYYEARCR=0,FCYYEARBLC=0"
+ ",FCYDR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(DR),0) else 0 end)"
+ ",FCYCR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(CR),0) else 0 end)"
+ ",FCYBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",FCYLASTDR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(DR),0) else 0 end)"
+ ",FCYLASTCR=(case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(CR),0) else 0 end)"
+ ",FCYLASTBLC=(case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end)"
+ ",QTYYEARDR=0,QTYYEARCR=0,QTYYEARBLC=0"
+ ",QTYDR=isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)"
+ ",QTYCR=isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)"
+ ",QTYBLC=(case when '" + ACCDC + "'='借' then (isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)) else (isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)) end)"
+ ",QTYLASTDR=isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)"
+ ",QTYLASTCR=isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)"
+ ",QTYLASTBLC=(case when '" + ACCDC + "'='借' then (isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)) else (isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)) end)";
}
#endregion
sSQL += ",0 as IsInitialEntry,'" + companyid + "' as CORPID,'" + userid + "' as CREATEUSER,getdate() as CREATETIME,'" + userid + "' as MODIFIEDUSER,getdate() as MODIFIEDTIME,'" + sYear + "-" + sMonth + "' as ACCDATE,'" + strCtSTARTGID + "' as STARTGID"
+ " FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0";
#endregion
var cmdSql = db.GetSqlStringCommand(sSQL);
db.ExecuteNonQuery(cmdSql, tran);
}
else//edit
{
#region 更新当日总账表
sSQL = "update [ct_genleg_accitems] set"
+ " AMTDR=(select (case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(DR),0) else 0 end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",AMTCR=(select (case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(CR),0) else 0 end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",AMTBLC=(select (case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",AMTLASTDR=AMTYEARDR+(select (case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(DR),0) else 0 end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",AMTLASTCR=AMTYEARCR+(select (case when '" + headRow.FCYNO.ToString() + "'='RMB' then isnull(sum(CR),0) else 0 end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",AMTLASTBLC=AMTYEARBLC+(select (case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",FCYDR=(select (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(DR),0) else 0 end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",FCYCR=(select (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(CR),0) else 0 end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",FCYBLC=(select (case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",FCYLASTDR=FCYYEARDR+(select (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(DR),0) else 0 end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",FCYLASTCR=FCYYEARCR+(select (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then isnull(sum(CR),0) else 0 end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",FCYLASTBLC=FCYYEARBLC+(select (case when '" + ACCDC + "'='借' then (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else 0 end) else (case when '" + headRow.FCYNO.ToString() + "'<>'RMB' then (isnull(sum(CR),0)-isnull(sum(DR),0)) else 0 end) end) FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",QTYDR=(select isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0) as QTYDR FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",QTYCR=(select isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0) as QTYCR FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",QTYBLC=(select (case when '" + ACCDC + "'='借' then (isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)) else (isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)) end) as QTYBLC FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",QTYLASTDR=QTYYEARDR+(select isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0) as QTYDR FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",QTYLASTCR=QTYYEARCR+(select isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0) as QTYCR FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",QTYLASTBLC=QTYYEARBLC+(select (case when '" + ACCDC + "'='借' then (isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)) else (isnull(sum(Convert(decimal(18,2),(CR*FCYEXRATE))),0)-isnull(sum(Convert(decimal(18,2),(DR*FCYEXRATE))),0)) end) as QTYBLC FROM ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0)"
+ ",[MODIFIEDUSER]='" + userid + "',[MODIFIEDTIME]=getdate() where STARTGID='" + strCtSTARTGID + "' and GID='" + sGID + "'";
#endregion
var cmdSql = db.GetSqlStringCommand(sSQL);
db.ExecuteNonQuery(cmdSql, tran);
}
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
}
}
#endregion
#region 今日父类总账表
MsCtInitialBalanceDAL.MsCtInitialBalanceDAL.SaveRow(headRow.ACCGID.ToString(), headRow.FCYNO.ToString(), headRow.VOUDATE.ToString("yyyy-MM-dd"), strCtSTARTGID, false, companyid, userid);
#endregion
#region 明日总账表
MsCtInitialBalanceDAL.MsCtInitialBalanceDAL.onCtGenlegAccitemsFor(headRow.ACCGID.ToString(), headRow.FCYNO.ToString(), headRow.VOUDATE.ToString("yyyy-MM-dd"), strCtSTARTGID, strCtACCDATE, companyid, userid);
#endregion
}
#endregion
#region 插入更新余额
public static void onBLC(MsCtBankJournal headRow, bool isHJ, string companyid, string userid)
{
#region 默认值
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string sSQL = "select DC from cw_accitems_gl where GID='" + headRow.ACCGID.ToString() + "'";
string ACCDC = T_ALL_DA.GetStrSQL("DC", sSQL);
//本期期初数
string sSQL2 = "select top 1 GID,LINKGID as ACCGID,CURRENCY as FCYNO,([YEAR]+'-'+[MONTH]+'-'+[DAY]) as VOUDATE,0 as ITEMNO,'' as VGID,'' as VKNO,'' as VOUNO,'' as FENTRYID,([YEAR]+'-'+[MONTH]) as ACCDATE,'' as SETTLETYPE,'' as BILLNO,([YEAR]+'-'+[MONTH]+'-'+[DAY]) as SVOUDATE"
+ ",DC=(case when (case when CURRENCY='RMB' then AMTLASTBLC else FCYLASTBLC end)<0 then '贷' else '借' end)"
+ ",DR=isnull((case when (case when CURRENCY='RMB' then AMTLASTDR else FCYLASTDR end)<0 then -(case when CURRENCY='RMB' then AMTLASTDR else FCYLASTDR end) else (case when CURRENCY='RMB' then AMTLASTDR else FCYLASTDR end) end),0)"
+ ",CR=isnull((case when (case when CURRENCY='RMB' then AMTLASTCR else FCYLASTCR end)<0 then -(case when CURRENCY='RMB' then AMTLASTCR else FCYLASTCR end) else (case when CURRENCY='RMB' then AMTLASTCR else FCYLASTCR end) end),0)"
+ ",1 as FCYEXRATE,0 as QTYDR,0 as QTYCR"
+ ",BLC=isnull((case when (case when CURRENCY='RMB' then AMTLASTBLC else FCYLASTBLC end)<0 then -(case when CURRENCY='RMB' then AMTLASTBLC else FCYLASTBLC end) else (case when CURRENCY='RMB' then AMTLASTBLC else FCYLASTBLC end) end),0)"
+ ",'' as EXPLAN,'' as ENTERED,0 as ISINITIAL,'' as CHECKINGGID,STARTGID,CORPID,CREATEUSER,CREATETIME,MODIFIEDUSER,MODIFIEDTIME"
+ " from ct_genleg_accitems WITH(NOLOCK)"
+ " where STARTGID='" + strCtSTARTGID + "' and LINKGID='" + headRow.ACCGID.ToString() + "' and CURRENCY='" + headRow.FCYNO.ToString() + "' and ([YEAR]+'-'+[MONTH])<'" + headRow.VOUDATE.ToString("yyyy-MM") + "' order by ACCDATE desc,VOUDATE desc";
DataSet dsCtGenlegAccitems = T_ALL_DA.GetAllSQL(sSQL2);
Decimal dlCtGenlegAccitemsBLC = 0;
if (dsCtGenlegAccitems != null)
{
dlCtGenlegAccitemsBLC = Decimal.Parse(dsCtGenlegAccitems.Tables[0].Rows[0]["BLC"].ToString());
}
//本期日记账数据
sSQL = "select GID,ACCGID,FCYNO,VOUDATE,ITEMNO,VGID,VKNO,VOUNO,FENTRYID,ACCDATE,SETTLETYPE,BILLNO,SVOUDATE,DC,DR,CR,FCYEXRATE,QTYDR,QTYCR,BLC,EXPLAN,ENTERED,ISINITIAL,CHECKINGGID,STARTGID,CORPID,CREATEUSER,CREATETIME,MODIFIEDUSER,MODIFIEDTIME from ct_bank_journal WITH(NOLOCK) where STARTGID='" + strCtSTARTGID + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0 and VOUDATE>='" + headRow.VOUDATE.ToString("yyyy-MM") + "-01'"
+ " order by VOUDATE,ITEMNO,VKNO,VOUNO,FENTRYID";
DataSet dsCtBankJournal = T_ALL_DA.GetAllSQL(sSQL);
#endregion
#region 循环更新余额
Decimal dBLC = dlCtGenlegAccitemsBLC;
if (dsCtBankJournal != null)
{
if (dsCtBankJournal.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsCtBankJournal.Tables[0].Rows.Count; i++)
{
if (ACCDC == "借")
{
dBLC = Decimal.Parse((Decimal.Parse(dsCtBankJournal.Tables[0].Rows[i]["DR"].ToString()) - Decimal.Parse(dsCtBankJournal.Tables[0].Rows[i]["CR"].ToString()) + dBLC).ToString("F2"));
}
else
{
dBLC = Decimal.Parse((Decimal.Parse(dsCtBankJournal.Tables[0].Rows[i]["CR"].ToString()) - Decimal.Parse(dsCtBankJournal.Tables[0].Rows[i]["DR"].ToString()) + dBLC).ToString("F2"));
}
//
sSQL = "update [ct_bank_journal] set BLC=" + dBLC + " where gid='" + dsCtBankJournal.Tables[0].Rows[i]["GID"].ToString() + "'";
bool bl = T_ALL_DA.GetExecuteSqlCommand(sSQL);
}
}
}
#endregion
#region 单个更新余额语句_停用
/*
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
#region 循环更新余额
sSQL = "update [ct_bank_journal] set BLC=("
+ "select (case when '" + headRow.FCYNO.ToString() + "'='RMB' then (case when '" + ACCDC + "'='借' then (isnull(sum(DR),0)-isnull(sum(CR),0)) else (isnull(sum(CR),0)-isnull(sum(DR),0)) end) else 0 end)"
+ " FROM ("
+ "select top 1 GID,LINKGID as ACCGID,CURRENCY as FCYNO,([YEAR]+'-'+[MONTH]+'-'+[DAY]) as VOUDATE,0 as ITEMNO,'' as VGID,'' as VKNO,'' as VOUNO,'' as FENTRYID,([YEAR]+'-'+[MONTH]) as ACCDATE,'' as SETTLETYPE,'' as BILLNO,([YEAR]+'-'+[MONTH]+'-'+[DAY]) as SVOUDATE"
+ ",DC=(case when (case when CURRENCY='RMB' then AMTYEARBLC else FCYYEARBLC end)<0 then '贷' else '借' end)"
+ ",DR=isnull((case when (case when CURRENCY='RMB' then AMTYEARDR else FCYYEARDR end)<0 then -(case when CURRENCY='RMB' then AMTYEARDR else FCYYEARDR end) else (case when CURRENCY='RMB' then AMTYEARDR else FCYYEARDR end) end),0)"
+ ",CR=isnull((case when (case when CURRENCY='RMB' then AMTYEARCR else FCYYEARCR end)<0 then -(case when CURRENCY='RMB' then AMTYEARCR else FCYYEARCR end) else (case when CURRENCY='RMB' then AMTYEARCR else FCYYEARCR end) end),0)"
+ ",1 as FCYEXRATE,0 as QTYDR,0 as QTYCR"
+ ",BLC=isnull((case when (case when CURRENCY='RMB' then AMTYEARBLC else FCYYEARBLC end)<0 then -(case when CURRENCY='RMB' then AMTYEARBLC else FCYYEARBLC end) else (case when CURRENCY='RMB' then AMTYEARBLC else FCYYEARBLC end) end),0)"
+ ",'' as EXPLAN,'' as ENTERED,0 as ISINITIAL,'' as CHECKINGGID,STARTGID,CORPID,CREATEUSER,CREATETIME,MODIFIEDUSER,MODIFIEDTIME"
+ " from ct_genleg_accitems WITH(NOLOCK)"
+ " where STARTGID='" + strSTARTGID + "' and ([YEAR]+'-'+[MONTH])='" + headRow.VOUDATE.ToString("yyyy-MM") + "' and LINKGID='" + headRow.ACCGID.ToString() + "' and CURRENCY='" + headRow.FCYNO.ToString() + "'"
+ " union "
+ "select GID,ACCGID,FCYNO,VOUDATE,ITEMNO,VGID,VKNO,VOUNO,FENTRYID,ACCDATE,SETTLETYPE,BILLNO,SVOUDATE,DC,DR,CR,FCYEXRATE,QTYDR,QTYCR,BLC,EXPLAN,ENTERED,ISINITIAL,CHECKINGGID,STARTGID,CORPID,CREATEUSER,CREATETIME,MODIFIEDUSER,MODIFIEDTIME from ct_bank_journal WITH(NOLOCK) where STARTGID='" + strSTARTGID + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0"// and VOUDATE>='" + headRow.VOUDATE.ToString() + "'
+ ") as a where STARTGID='" + strSTARTGID + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and a.ITEMNO<=ct_bank_journal.ITEMNO and a.VOUDATE<=ct_bank_journal.VOUDATE"
+ ") where STARTGID='" + strSTARTGID + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0";// and VOUDATE>='" + headRow.VOUDATE.ToString() + "'
#endregion
var cmdSql = db.GetSqlStringCommand(sSQL);
db.ExecuteNonQuery(cmdSql, tran);
//
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
}
}
*/
#endregion
#region 根据科目方向更新余额和余额方向
Database db2 = DatabaseFactory.CreateDatabase();
using (var conn = db2.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
#region 循环更新余额
//sSQL = "update [ct_bank_journal] set "
//+ "DC=(select (case when '" + ACCDC + "'='借' then (case when BLC>=0 then '借' else '贷' end) else (case when BLC>=0 then '贷' else '借' end) end) as DC FROM ct_bank_journal as a where a.STARTGID='" + strCtSTARTGID + "' and a.GID=ct_bank_journal.GID)"
//+ ",BLC=(select (case when BLC>=0 then BLC else -BLC end) as BLC FROM ct_bank_journal as b where b.STARTGID='" + strCtSTARTGID + "' and b.GID=ct_bank_journal.GID)"
//+ " where STARTGID='" + strCtSTARTGID + "' and VOUDATE>='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0";
sSQL = "update [ct_bank_journal] set "
+ "DC=(select (case when '" + ACCDC + "'='借' then (case when BLC>=0 then 'D' else 'C' end) else (case when BLC>=0 then 'C' else 'D' end) end) as DC FROM ct_bank_journal as a where a.STARTGID='" + strCtSTARTGID + "' and a.GID=ct_bank_journal.GID)"
+ ",BLC=(select (case when BLC>=0 then BLC else -BLC end) as BLC FROM ct_bank_journal as b where b.STARTGID='" + strCtSTARTGID + "' and b.GID=ct_bank_journal.GID)"
+ " where STARTGID='" + strCtSTARTGID + "' and VOUDATE>='" + headRow.VOUDATE.ToString() + "' and ACCGID='" + headRow.ACCGID.ToString() + "' and FCYNO='" + headRow.FCYNO.ToString() + "' and ISINITIAL=0";
#endregion
var cmdSql = db2.GetSqlStringCommand(sSQL);
db2.ExecuteNonQuery(cmdSql, tran);
//
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
}
}
#endregion
}
#endregion
#region 更新期初余额
public static void onINITIAL(MsCtBankJournal headRow, string companyid, string userid)
{
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
#region 更新期初余额
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
#region 更新期初对账单
string sSQL = "update [ct_initial_balance] set QTYYEARDR_B=(select isnull(sum(DR),0) as DR from ct_bank_journal where ISINITIAL=1 and STARTGID='" + strCtSTARTGID + "' and ACCGID='" + headRow.ACCGID.ToString().Trim() + "' and FCYNO='" + headRow.FCYNO.ToString().Trim() + "'),QTYYEARCR_B=(select isnull(sum(CR),0) as CR from ct_bank_journal where ISINITIAL=1 and STARTGID='" + strCtSTARTGID + "' and ACCGID='" + headRow.ACCGID.ToString().Trim() + "' and FCYNO='" + headRow.FCYNO.ToString().Trim() + "') where STARTGID='" + strCtSTARTGID + "' and ACCGID='" + headRow.ACCGID.ToString().Trim() + "' and CURRENCY='" + headRow.FCYNO.ToString().Trim() + "'";
var cmdSql = db.GetSqlStringCommand(sSQL);
db.ExecuteNonQuery(cmdSql, tran);
sSQL = "update [ct_initial_balance] set QTYYEARBLC_BH=isnull((QTYYEARBLC_B+QTYYEARDR_B-QTYYEARCR_B),0) where STARTGID='" + strCtSTARTGID + "' and ACCGID='" + headRow.ACCGID.ToString().Trim() + "' and CURRENCY='" + headRow.FCYNO.ToString().Trim() + "'";
cmdSql = db.GetSqlStringCommand(sSQL);
db.ExecuteNonQuery(cmdSql, tran);
#endregion
//
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
}
}
#endregion
}
#endregion
#region 删除
public static DBResult Delete(string gids, string companyid, string userid)
{
#region 默认值
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
var result = new DBResult();
var sGids = " and GID in ('" + gids.Replace(",", "','") + "')";
var headList = new List<MsCtBankJournal>();
var strSql = new StringBuilder();
strSql.Append("SELECT *,CREATEUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.CREATEUSER),MODIFIEDUSERNAME=(select top 1 SHOWNAME from [user] where gid=ct_bank_journal.MODIFIEDUSER),ACCNAME=(select top 1 ACCNAME from [cw_accitems_gl] where gid=ct_bank_journal.ACCGID),SETTLETYPENAME=isnull((select top 1 STLNAME from [code_stlmode] where STLCODE=ct_bank_journal.SETTLETYPE),''),ISCHECKING=(case when CHECKINGGID='' then '' else (case when CHECKINGGID like 'auto%' then '*' else '**' end) end) from ct_bank_journal WITH(NOLOCK) where STARTGID='" + strCtSTARTGID + "' and (CHECKINGGID='' or CHECKINGGID is null)" + sGids);
strSql.Append(" order by VOUDATE,convert(decimal(10),ITEMNO)");
headList = SetData(strSql);
#endregion
#region 判断是否符合删除条件
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string sSQL = "select count(*) as inum from ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and (CHECKINGGID<>'' and CHECKINGGID is not null)" + sGids;
int inum = int.Parse(T_ALL_DA.GetStrSQL("inum", sSQL));
if (inum > 0)
{
result.Success = false;
result.Message = "操作错误,已经对账的数据,不允许操作!";//或轧账
return result;
}
#endregion
#region 插入更新余额_查询符合条件的数据
strSql.Clear();
strSql.Append("SELECT ACCGID,FCYNO,VOUDATE=(dateadd(dd,-day(ACCDATE+'-01'),dateadd(m,1,(ACCDATE+'-01'))))");
strSql.Append(" from ct_bank_journal WITH(NOLOCK)");
strSql.Append(" where STARTGID='" + strCtSTARTGID + "' and (CHECKINGGID='' or CHECKINGGID is null)" + sGids);
strSql.Append(" group by ACCGID,FCYNO,ACCDATE order by ACCGID,FCYNO");
DataSet ds2 = T_ALL_DA.GetAllSQL(strSql.ToString());
#endregion
#region 插入更新总账表_查询符合条件的数据
strSql.Clear();
strSql.Append("SELECT ACCGID,FCYNO,VOUDATE");
strSql.Append(" from ct_bank_journal WITH(NOLOCK)");
strSql.Append(" where STARTGID='" + strCtSTARTGID + "' and (CHECKINGGID='' or CHECKINGGID is null)" + sGids);
strSql.Append(" group by ACCGID,FCYNO,VOUDATE order by ACCGID,FCYNO,VOUDATE");
DataSet ds3 = T_ALL_DA.GetAllSQL(strSql.ToString());
#endregion
#region 删除
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdDelete = db.GetSqlStringCommand("delete from ct_bank_journal where STARTGID='" + strCtSTARTGID + "'" + sGids);
db.ExecuteNonQuery(cmdDelete, tran);
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "删除出现错误,请重试!";
return result;
}
}
#endregion
#region 插入更新余额
if (ds2 != null)
{
if (ds2.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds2.Tables[0].Rows)
{
MsCtBankJournal headRow = new MsCtBankJournal();
headRow.ACCGID = dr["ACCGID"].ToString();//科目GID
headRow.FCYNO = dr["FCYNO"].ToString();//外币编号usd
headRow.VOUDATE = DateTime.Parse(dr["VOUDATE"].ToString());//凭证日期
//插入更新余额
onBLC(headRow, true, companyid, userid);
}
}
}
#endregion
#region 插入更新总账表
if (ds3 != null)
{
if (ds3.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds3.Tables[0].Rows)
{
MsCtBankJournal headRow = new MsCtBankJournal();
headRow.ACCGID = dr["ACCGID"].ToString();//科目GID
headRow.FCYNO = dr["FCYNO"].ToString();//外币编号usd
headRow.VOUDATE = DateTime.Parse(dr["VOUDATE"].ToString());//凭证日期
//插入更新总账表
onCtGenlegAccitems(headRow, companyid, userid);
}
}
}
#endregion
result.Success = true;
result.Message = "操作成功";
return result;
}
public static void DeleteDetail(MsCtBankJournal headRow, string companyid, string userid)
{
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
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 ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and GID='" + headRow.GID.ToString() + "'");
db.ExecuteNonQuery(cmdDelete, tran);
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
}
}
onCtGenlegAccitems(headRow, companyid, userid);
}
#endregion
#region 导入
//判断是否有重复数据
public static DBResult isImportExcelGID(string condition, string companyid, string userid)
{
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
var result = new DBResult();
string strCtACCDATE = BasicDataRefDAL.GetCtACCDATE(userid);
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(userid);
string sGID = "";
#region 查询出符合条件的_重复GID
var strSql2 = new StringBuilder();
strSql2.Append("SELECT *,sCtGID=isnull((select gid from ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VGID=VW_cw_vouchers_vouitems_gl.GID),'') from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "' and (CHECKINGGID='' or CHECKINGGID is null))");
if (!string.IsNullOrEmpty(condition))
{
strSql2.Append(" and " + condition);
}
DataSet ds = T_ALL_DA.GetAllSQL(strSql2.ToString());
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (i == ds.Tables[0].Rows.Count-1)
{
sGID += "第" + ds.Tables[0].Rows[i]["ACCMONTH"].ToString() + "期" + ds.Tables[0].Rows[i]["VKNO"].ToString() + "字" + ds.Tables[0].Rows[i]["VOUNO"].ToString() + "号第" + ds.Tables[0].Rows[i]["ITEMNO"].ToString() + "条分录<br/>";//以上数据已经存在对应的日记账记录,是否覆盖,请确认?
}
else
{
sGID += "第" + ds.Tables[0].Rows[i]["ACCMONTH"].ToString() + "期" + ds.Tables[0].Rows[i]["VKNO"].ToString() + "字" + ds.Tables[0].Rows[i]["VOUNO"].ToString() + "号第" + ds.Tables[0].Rows[i]["ITEMNO"].ToString() + "条分录<br/>";//以上数据已经存在对应的日记账记录,是否覆盖,请确认?
}
}
}
}
#endregion
//
#region 重复但不覆盖的GID 行数
var strSql3 = new StringBuilder();
strSql3.Append("SELECT count(*) as inum from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "' and CHECKINGGID<>'' and CHECKINGGID is not null)");
if (!string.IsNullOrEmpty(condition))
{
strSql3.Append(" and " + condition);
}
#endregion
int inumContinue = int.Parse(T_ALL_DA.GetStrSQL("inum", strSql3.ToString()));
#region 查询出符合条件的_不重复GID
var strSql = new StringBuilder();
strSql.Append("SELECT count(*) as inum from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid not in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "')");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
#endregion
int inum = int.Parse(T_ALL_DA.GetStrSQL("inum", strSql.ToString()));
if (sGID == "")
{
if (inum == 0)
{
result.Success = true;
result.Message = "";
return result;
}
else
{
result.Success = true;
result.Message = "true";
return result;
}
}
if (inumContinue == 0)
{
sGID = "以下" + ds.Tables[0].Rows.Count + "条数据已经存在对应的日记账记录,是否覆盖,请确认?<br/>" + sGID;
}
else
{
sGID = "以下" + (ds.Tables[0].Rows.Count + inumContinue) + "条数据已经存在对应的日记账记录,其中有已经对账的" + inumContinue + "条数据不允许覆盖,其他的是否覆盖,请确认?<br/>" + sGID;
}
result.Success = true;
result.Message = sGID;
return result;
}
//获取符合条件的所有GID的字符串
public static DBResult onImportExcelData(string condition, string sTYPE, string companyid, string userid)
{
var strSql = new StringBuilder();
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
var result = new DBResult();
string strCtACCDATE = BasicDataRefDAL.GetCtACCDATE(userid);
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(userid);
string sError = "";
int inumINSERT = 0;
int inumUpdate = 0;
int inumContinue = 0;
#region 重复GID 行数
strSql.Append("SELECT count(*) as inum from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "' and (CHECKINGGID='' or CHECKINGGID is null))");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
#endregion
inumUpdate = int.Parse(T_ALL_DA.GetStrSQL("inum", strSql.ToString()));
//
#region 重复但不覆盖的GID 行数
strSql.Clear();
strSql.Append("SELECT count(*) as inum from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "' and CHECKINGGID<>'' and CHECKINGGID is not null)");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
#endregion
inumContinue = int.Parse(T_ALL_DA.GetStrSQL("inum", strSql.ToString()));
//
#region 不重复GID 行数
strSql.Clear();
strSql.Append("SELECT count(*) as inum from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid not in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "')");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
#endregion
inumINSERT = int.Parse(T_ALL_DA.GetStrSQL("inum", strSql.ToString()));
sError = "导入" + inumINSERT + "条数据";
//
if (sTYPE == "UPDATE")
{
#region 覆盖出符合条件的_重复GID
strSql.Clear();
strSql.Append("SELECT *,sCtGID=isnull((select gid from ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VGID=VW_cw_vouchers_vouitems_gl.GID),'') from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "' and (CHECKINGGID='' or CHECKINGGID is null))");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
strSql.Append("order by voudate,vouno,vkno,itemno");
#endregion
DataSet ds = T_ALL_DA.GetAllSQL(strSql.ToString());
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
onImportExcelGID(ds, sTYPE, companyid, userid);
}
}
sError += ",覆盖" + inumUpdate + "条数据!";
if (inumContinue!=0)
{
sError += "因已经对账不允许覆盖的" + inumContinue + "条数据!";
}
}
else
{
sError += ",跳过" + (inumUpdate + inumContinue) + "条数据!";
}
#region 查询出符合条件的_不重复GID
strSql.Clear();
strSql.Append("SELECT *,sCtGID=isnull((select gid from ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VGID=VW_cw_vouchers_vouitems_gl.GID),'') from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid not in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "')");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
strSql.Append("order by voudate,vouno,vkno,itemno");
#endregion
DataSet ds1 = T_ALL_DA.GetAllSQL(strSql.ToString());
if (ds1 != null)
{
if (ds1.Tables[0].Rows.Count > 0)
{
onImportExcelGID(ds1, "INSERT", companyid, userid);
}
}
//
#region 插入更新余额
strSql.Clear();
strSql.Append("SELECT ACCGID,FCYNO,VOUDATE=(dateadd(dd,-day(ACCDATE+'-01'),dateadd(m,1,(ACCDATE+'-01'))))");
strSql.Append(" from ct_bank_journal WITH(NOLOCK)");
strSql.Append(" where STARTGID='" + strCtSTARTGID + "' and (CHECKINGGID='' or CHECKINGGID is null)");
strSql.Append(" and VGID in (SELECT GID from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "'");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
strSql.Append(")");
strSql.Append(" group by ACCGID,FCYNO,ACCDATE order by ACCGID,FCYNO");
DataSet ds2 = T_ALL_DA.GetAllSQL(strSql.ToString());
if (ds2 != null)
{
if (ds2.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds2.Tables[0].Rows)
{
MsCtBankJournal headRow = new MsCtBankJournal();
headRow.ACCGID = dr["ACCGID"].ToString();//科目GID
headRow.FCYNO = dr["FCYNO"].ToString();//外币编号usd
headRow.VOUDATE = DateTime.Parse(dr["VOUDATE"].ToString());//凭证日期
//插入更新余额
onBLC(headRow, true, companyid, userid);
}
}
}
#endregion
#region 插入更新总账表
strSql.Clear();
strSql.Append("SELECT ACCGID,FCYNO,VOUDATE");
strSql.Append(" from ct_bank_journal WITH(NOLOCK)");
strSql.Append(" where STARTGID='" + strCtSTARTGID + "' and (CHECKINGGID='' or CHECKINGGID is null)");
strSql.Append(" and VGID in(SELECT GID from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "'");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
strSql.Append(")");
strSql.Append(" group by ACCGID,FCYNO,VOUDATE order by ACCGID,FCYNO,VOUDATE");
DataSet ds3 = T_ALL_DA.GetAllSQL(strSql.ToString());
if (ds3 != null)
{
if (ds3.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds3.Tables[0].Rows)
{
MsCtBankJournal headRow = new MsCtBankJournal();
headRow.ACCGID = dr["ACCGID"].ToString();//科目GID
headRow.FCYNO = dr["FCYNO"].ToString();//外币编号usd
headRow.VOUDATE = DateTime.Parse(dr["VOUDATE"].ToString());//凭证日期
//插入更新总账表
onCtGenlegAccitems(headRow, companyid, userid);
}
}
}
#endregion
result.Success = true;
result.Message = sError;
return result;
}
//按条导入或覆盖数据
public static void onImportExcelGID(DataSet ds, string sTYPE, string companyid, string userid)
{
DBResult result = new DBResult();
var sVOUDATE = "";
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(userid);
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
//
for (int i = 0; i < ds.Tables[0].Rows.Count;i++)
{
#region 按条导入或覆盖数据
MsCtBankJournal headRow = new MsCtBankJournal();
#region 默认值
headRow.ISINITIAL = false;//是否期初
headRow.ACCGID = ds.Tables[0].Rows[i]["ACCGID"].ToString();//科目GID
headRow.FCYNO = ds.Tables[0].Rows[i]["FCYNO"].ToString();//外币编号usd
headRow.VOUDATE = DateTime.Parse(ds.Tables[0].Rows[i]["VOUDATE"].ToString());//凭证日期
sVOUDATE = headRow.VOUDATE.ToString("yyyy-MM-dd");
string sMonth = headRow.VOUDATE.Month.ToString();
if (sMonth.Length == 1)
{
sMonth = "0" + sMonth;
}
string sSQL = "select isnull((select top 1 isnull(ITEMNO,0) as iITEMNO from ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + sVOUDATE + "' order by VOUDATE desc,convert(decimal(10),ITEMNO) desc),0) as iITEMNO";
int iITEMNO = int.Parse(T_ALL_DA.GetStrSQL("iITEMNO", sSQL));
headRow.ITEMNO = iITEMNO + 1;//当日序号
headRow.VGID = ds.Tables[0].Rows[i]["GID"].ToString();//凭证明细GID
headRow.VKNO = ds.Tables[0].Rows[i]["VKNO"].ToString();//凭证字
headRow.VOUNO = ds.Tables[0].Rows[i]["VOUNO"].ToString();//凭证号
headRow.FENTRYID = ds.Tables[0].Rows[i]["ITEMNO"].ToString() == "" ? 0 : int.Parse(ds.Tables[0].Rows[i]["ITEMNO"].ToString());//分录号
headRow.ACCDATE = ds.Tables[0].Rows[i]["ACCDATE"].ToString();//会计期间
headRow.SETTLETYPE = ds.Tables[0].Rows[i]["FSETTLCODE"].ToString() == "" ? 0 : int.Parse(ds.Tables[0].Rows[i]["FSETTLCODE"].ToString());//结算方式
headRow.BILLNO = ds.Tables[0].Rows[i]["FSETTLENO"].ToString();//结算号
headRow.SVOUDATE = headRow.VOUDATE;//结算日期
headRow.DC = ds.Tables[0].Rows[i]["DC"].ToString();//余额方向
headRow.DR = ds.Tables[0].Rows[i]["AMTDR"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[i]["AMTDR"].ToString());//原币借方金额(互斥)
headRow.CR = ds.Tables[0].Rows[i]["AMTCR"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[i]["AMTCR"].ToString());//原币贷方金额(互斥)
if (headRow.FCYNO.ToString().Trim() != "RMB")
{
headRow.DR = ds.Tables[0].Rows[i]["FCYDR"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[i]["FCYDR"].ToString());//原币借方金额(互斥)
headRow.CR = ds.Tables[0].Rows[i]["FCYCR"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[i]["FCYCR"].ToString());//原币贷方金额(互斥)
}
headRow.FCYEXRATE = ds.Tables[0].Rows[i]["FCYEXRATE"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[i]["FCYEXRATE"].ToString());//汇率
headRow.QTYDR = Math.Round((headRow.DR * headRow.FCYEXRATE), 2, MidpointRounding.AwayFromZero);//折合本位币借方
headRow.QTYCR = Math.Round((headRow.CR * headRow.FCYEXRATE), 2, MidpointRounding.AwayFromZero);//折合本位币贷方
headRow.BLC = 0;//原币余额
headRow.EXPLAN = ds.Tables[0].Rows[i]["EXPLAN"].ToString();//摘要,规则生成
headRow.ENTERED = ds.Tables[0].Rows[i]["PREPARED"].ToString();//经手人
headRow.CHECKINGGID = "";//对账GID
headRow.STARTGID = strCtSTARTGID;//账套启用GID
headRow.CORPID = companyid;//分公司GID
headRow.CREATEUSER = userid;//制单人GID
headRow.CREATETIME = DateTime.Now;//创建时间
headRow.MODIFIEDUSER = userid;//最后一次更改操作人GID
headRow.MODIFIEDTIME = DateTime.Now;//最后一次更改操作时间
#endregion
if (sTYPE.Trim() == "INSERT")//"add"
{
headRow.GID = Guid.NewGuid().ToString();
headRow.DbOperationType = DbOperationType.DbotIns;
}
else//"edit"
{
headRow.GID = ds.Tables[0].Rows[i]["sCtGID"].ToString().Trim();//唯一编码
headRow.DbOperationType = DbOperationType.DbotUpd;
headRow.ModelUIStatus = "E";
}
var modb = new ModelObjectDB();
result = modb.Save(headRow);
#endregion
}
}
//获取符合条件的所有GID的字符串
public static DBResult onImportExcelData2(string condition, string companyid, string userid)
{
#region 查询出符合条件的_重复GID
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
var result = new DBResult();
string strCtACCDATE = BasicDataRefDAL.GetCtACCDATE(userid);
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(userid);
string sGID = "";
var strSql2 = new StringBuilder();
strSql2.Append("SELECT *,sCtGID=isnull((select gid from ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VGID=VW_cw_vouchers_vouitems_gl.GID),'') from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "')");
if (!string.IsNullOrEmpty(condition))
{
strSql2.Append(" and " + condition);
}
DataSet ds = T_ALL_DA.GetAllSQL(strSql2.ToString());
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
sGID += "," + ds.Tables[0].Rows[i]["GID"].ToString().Trim() + "。" + "第" + ds.Tables[0].Rows[i]["ACCMONTH"].ToString() + "期" + ds.Tables[0].Rows[i]["VKNO"].ToString() + "字" + ds.Tables[0].Rows[i]["VOUNO"].ToString() + "号第" + ds.Tables[0].Rows[i]["ITEMNO"].ToString() + "条分录已经存在对应的日记账记录,是否覆盖,请确认?" + "。" + ds.Tables[0].Rows[i]["sCtGID"].ToString().Trim();
}
}
}
#endregion
#region 查询出符合条件的_不重复GID
int inum = 0;
var strSql = new StringBuilder();
strSql.Append("SELECT *,sCtGID=isnull((select gid from ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VGID=VW_cw_vouchers_vouitems_gl.GID),'') from [VW_cw_vouchers_vouitems_gl] WITH(NOLOCK) where STARTGID='" + strCwSTARTGID + "' and (ISDELETE=0 or ISDELETE is null) and ACCDATE='" + strCtACCDATE + "' and gid not in (select VGID from ct_bank_journal where VGID<>'' and VGID is not null and STARTGID='" + strCtSTARTGID + "')");
if (!string.IsNullOrEmpty(condition))
{
strSql.Append(" and " + condition);
}
ds = T_ALL_DA.GetAllSQL(strSql.ToString());
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DBResult result3 = onImportExcelGID2(ds.Tables[0].Rows[i]["GID"].ToString().Trim(), "INSERT", "", companyid, userid);
if (result3.Success)
{
inum++;
}
}
}
}
#endregion
if (sGID == "" && inum == 0)
{
result.Success = true;
result.Message = "";
return result;
}
sGID = inum.ToString() + sGID;
result.Success = true;
result.Message = sGID;
return result;
}
//判断是否有重复数据
public static DBResult isImportExcelGID2(string gids, string companyid, string userid)
{
#region 判断是否有重复数据
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(userid);
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
var result = new DBResult();
var strSql = new StringBuilder();
strSql.Append("SELECT top 1 * from VW_cw_vouchers_vouitems_gl where STARTGID='" + strCwSTARTGID + "' and GID in (SELECT VGID from [ct_bank_journal] where STARTGID='" + strCtSTARTGID + "' and VGID='" + gids + "')");
DataSet ds = T_ALL_DA.GetAllSQL(strSql.ToString());
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
result.Success = false;
result.Message = "第" + ds.Tables[0].Rows[0]["ACCMONTH"].ToString() + "期" + ds.Tables[0].Rows[0]["VKNO"].ToString() + "字" + ds.Tables[0].Rows[0]["VOUNO"].ToString() + "号第" + ds.Tables[0].Rows[0]["ITEMNO"].ToString() + "条分录已经存在对应的日记账记录,是否覆盖,请确认?";
return result;
}
}
#endregion
result.Success = true;
result.Message = "";
return result;
}
//按条导入或覆盖数据
public static DBResult onImportExcelGID2(string gids, string sTYPE, string sCtGID, string companyid, string userid)
{
#region 按条导入或覆盖数据
DBResult result = new DBResult();
var sVOUDATE = "";
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(userid);
string strCtSTARTGID = BasicDataRefDAL.GetCtSTARTGID(userid);
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string strSql = "SELECT top 1 * from VW_cw_vouchers_vouitems_gl where STARTGID='" + strCwSTARTGID + "' and GID='" + gids + "'";
DataSet ds = T_ALL_DA.GetAllSQL(strSql);
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
MsCtBankJournal headRow = new MsCtBankJournal();
#region 默认值
headRow.ISINITIAL = false;//是否期初
headRow.ACCGID = ds.Tables[0].Rows[0]["ACCGID"].ToString();//科目GID
headRow.FCYNO = ds.Tables[0].Rows[0]["FCYNO"].ToString();//外币编号usd
headRow.VOUDATE = DateTime.Parse(ds.Tables[0].Rows[0]["VOUDATE"].ToString());//凭证日期
sVOUDATE = headRow.VOUDATE.ToString("yyyy-MM-dd");
string sMonth = headRow.VOUDATE.Month.ToString();
if (sMonth.Length == 1)
{
sMonth = "0" + sMonth;
}
int iITEMNO = int.Parse(T_ALL_DA.GetStrSQL("iITEMNO", "select isnull((select top 1 isnull(ITEMNO,0) as iITEMNO from ct_bank_journal where STARTGID='" + strCtSTARTGID + "' and VOUDATE='" + sVOUDATE + "' order by VOUDATE desc,convert(decimal(10),ITEMNO) desc),0) as iITEMNO"));
headRow.ITEMNO = iITEMNO + 1;//当日序号
headRow.VGID = ds.Tables[0].Rows[0]["GID"].ToString();//凭证明细GID
headRow.VKNO = ds.Tables[0].Rows[0]["VKNO"].ToString();//凭证字
headRow.VOUNO = ds.Tables[0].Rows[0]["VOUNO"].ToString();//凭证号
headRow.FENTRYID = ds.Tables[0].Rows[0]["ITEMNO"].ToString() == "" ? 0 : int.Parse(ds.Tables[0].Rows[0]["ITEMNO"].ToString());//分录号
headRow.ACCDATE = ds.Tables[0].Rows[0]["ACCDATE"].ToString();//会计期间
headRow.SETTLETYPE = ds.Tables[0].Rows[0]["FSETTLCODE"].ToString() == "" ? 0 : int.Parse(ds.Tables[0].Rows[0]["FSETTLCODE"].ToString());//结算方式
headRow.BILLNO = ds.Tables[0].Rows[0]["FSETTLENO"].ToString();//结算号
headRow.SVOUDATE = headRow.VOUDATE;//结算日期
headRow.DC = ds.Tables[0].Rows[0]["DC"].ToString();//余额方向
headRow.DR = ds.Tables[0].Rows[0]["AMTDR"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[0]["AMTDR"].ToString());//原币借方金额(互斥)
headRow.CR = ds.Tables[0].Rows[0]["AMTCR"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[0]["AMTCR"].ToString());//原币贷方金额(互斥)
if (headRow.FCYNO.ToString().Trim()!="RMB")
{
headRow.DR = ds.Tables[0].Rows[0]["FCYDR"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[0]["FCYDR"].ToString());//原币借方金额(互斥)
headRow.CR = ds.Tables[0].Rows[0]["FCYCR"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[0]["FCYCR"].ToString());//原币贷方金额(互斥)
}
headRow.FCYEXRATE = ds.Tables[0].Rows[0]["FCYEXRATE"].ToString() == "" ? 0 : Decimal.Parse(ds.Tables[0].Rows[0]["FCYEXRATE"].ToString());//汇率
headRow.QTYDR = Math.Round((headRow.DR * headRow.FCYEXRATE), 2, MidpointRounding.AwayFromZero);//折合本位币借方
headRow.QTYCR = Math.Round((headRow.CR * headRow.FCYEXRATE), 2, MidpointRounding.AwayFromZero);//折合本位币贷方
headRow.BLC = 0;//原币余额
headRow.EXPLAN = ds.Tables[0].Rows[0]["EXPLAN"].ToString();//摘要,规则生成
headRow.ENTERED = ds.Tables[0].Rows[0]["PREPARED"].ToString();//经手人
headRow.CHECKINGGID = "";//对账GID
headRow.STARTGID = strCtSTARTGID;//账套启用GID
headRow.CORPID = companyid;//分公司GID
headRow.CREATEUSER = userid;//制单人GID
headRow.CREATETIME = DateTime.Now;//创建时间
headRow.MODIFIEDUSER = userid;//最后一次更改操作人GID
headRow.MODIFIEDTIME = DateTime.Now;//最后一次更改操作时间
#endregion
if (sTYPE.Trim() == "INSERT")//"add"
{
headRow.GID = Guid.NewGuid().ToString();
headRow.DbOperationType = DbOperationType.DbotIns;
}
else//"edit"
{
headRow.GID = sCtGID.Trim();//唯一编码
headRow.DbOperationType = DbOperationType.DbotUpd;
headRow.ModelUIStatus = "E";
}
var modb = new ModelObjectDB();
result = modb.Save(headRow);
if (result.Success)
{
//插入更新余额
MsCtBankJournalDAL.onBLC(headRow, false, companyid, userid);
//插入更新总账表
MsCtBankJournalDAL.onCtGenlegAccitems(headRow, companyid, userid);
}
}
}
#endregion
return result;
}
#endregion
}
}