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.

1006 lines
58 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;
using System.Collections.Generic;
using System.Text;
using DSWeb.Areas.Account.Models.Chfee_management;
using Microsoft.Practices.EnterpriseLibrary.Data;
using HcUtility.Comm;
using DSWeb.Areas.CommMng.Models;
using DSWeb.Areas.Account.Models.MsCwVouchersGl3;
using DSWeb.MvcShipping.Models.MsCwVouchersGl;
using DSWeb.MvcShipping.Models.MsCwVouitemsGl;
using DSWeb.MvcShipping.DAL.MsBaseInfoDAL;
using DSWeb.Areas.CommMng.DAL;
using DSWeb.EntityDA;
using HcUtility.Core;
using DSWeb.MvcShipping.DAL.MsSysParamSet;
namespace DSWeb.Areas.Account.DAL.Chfee_management
{
public partial class Chfee_managementDAL
{
#region 管理费用列表
static public List<C_Mmb> GetDataList(string strCondition, string USERID, string sort = null)
{
//管理费用列表
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(USERID);
var strSql = new StringBuilder();
strSql.Append(" SELECT Feeid,FEESTATUS,FEETYPE,AMOUNT,dbo.trimdate(FEEDATE) FEEDATE ");
strSql.Append(" ,dbo.trimdate(CREATEDATE) CREATEDATE,CREATOR,VOUCHERNO,case cm.ISVOU when 1 then '是' else '否' end as ISVOU,dbo.trimdate(AUDITDATE) AUDITDATE,AUDITOR ");
strSql.Append(" ,(select showname from [user] where codename=CREATOR) CREATOR_REF,(select showname from [user] where codename=AUDITOR) AUDITOR_REF");
strSql.Append(" ,OPERATORSIDE,BILLINGDATE,REMARK,cm.currency,cm.exchangerate ");
strSql.Append(" ,convert(bigint ,cm.TimeMark) as TimeMark,ACCDATE ");
strSql.Append(" ,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=cm.FeeStatus) as FeeStatus_Ref ");
strSql.Append(" ,(select ACCNAME from cw_accitems where accid=cm.OPERATORSIDE) as OPERATORSIDE_Ref ");
strSql.Append(" ,case FEETYPE when 1 then '收入' else '支出' end as FeeType_Ref");
strSql.Append(" ,OPERATORSIDE_gl,(select top 1 accname from cw_accitems_gl where accid=OPERATORSIDE_gl and startgid=(select startgid from [cw_design_startusing_user] where usergid='" + USERID + "')) OPERATORSIDE_gl_REF");
strSql.Append(" ,VOUALLNO=(select top 1 VOUALLNO from cw_vouno_bs_gl WITH(NOLOCK) where BSGID=cm.Feeid and BSTABLENAME='ch_fee_management' and STARTGID='" + strCwSTARTGID + "')");
strSql.Append(" FROM ch_fee_management cm where cm.ISDELETE<>1 ");
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 CREATEDATE DESC");
}
return SetData(strSql);
}
static public C_Mmb GetData(string condition,string USERID)
{
var list = GetDataList(condition,USERID);
if (list.Count > 0)
return list[0];
return new C_Mmb();
}
private static List<C_Mmb> SetData(StringBuilder strSql)
{
var headList = new List<C_Mmb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
C_Mmb data = new C_Mmb();
#region Set DB data to Object
data.Feeid = Convert.ToString(reader["Feeid"]);
data.FEESTATUS = Convert.ToString(reader["FEESTATUS"]);
data.FEETYPE = Convert.ToString(reader["FEETYPE"]);
data.AMOUNT = Convert.ToString(reader["AMOUNT"]);
data.FEEDATE = Convert.ToString(reader["FEEDATE"]);
data.CREATEDATE = Convert.ToString(reader["CREATEDATE"]);
data.CREATOR = Convert.ToString(reader["CREATOR"]);
data.CREATOR_REF = Convert.ToString(reader["CREATOR_REF"]);
data.VOUCHERNO = Convert.ToString(reader["VOUCHERNO"]);
data.ISVOU = Convert.ToString(reader["ISVOU"]);
data.AUDITDATE = Convert.ToString(reader["AUDITDATE"]);
data.AUDITOR = Convert.ToString(reader["AUDITOR"]);
data.AUDITOR_REF = Convert.ToString(reader["AUDITOR_REF"]);
data.OPERATORSIDE = Convert.ToString(reader["OPERATORSIDE"]);
data.OPERATORSIDE_Ref = Convert.ToString(reader["OPERATORSIDE_Ref"]);
data.REMARK = Convert.ToString(reader["REMARK"]);
data.TimeMark = Convert.ToDecimal(reader["TimeMark"]);
data.FeeStatus_Ref = Convert.ToString(reader["FeeStatus_Ref"]);
data.FeeType_Ref = Convert.ToString(reader["FeeType_Ref"]);
data.CURRENCY = Convert.ToString(reader["CURRENCY"]);
data.EXCHANGERATE = Convert.ToString(reader["EXCHANGERATE"]);
data.ACCDATE = Convert.ToString(reader["ACCDATE"]);
data.OPERATORSIDE_gl = Convert.ToString(reader["OPERATORSIDE_gl"]);
data.OPERATORSIDE_gl_REF = Convert.ToString(reader["OPERATORSIDE_gl_REF"]);
data.VOUALLNO = Convert.ToString(reader["VOUALLNO"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 管理费用明细
static public List<C_MBodymb> GetBodyList(string strCondition,string USERID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(USERID);
var strSql = new StringBuilder();
strSql.Append(" SELECT * ");
strSql.Append(" ,(select top 1 accname from cw_accitems_gl where accid=OPERATORSIDE_gl and startgid=(select startgid from [cw_design_startusing_user] where usergid='" + USERID + "')) OPERATORSIDE_gl_REF");
strSql.Append(" ,(select ACCNAME from cw_accitems where accid=cfm.feename) as Feenameref ");
strSql.Append(" ,(select voucherno from ch_fee_management where Feeid=cfm.Feeid) as Voucherno ");
strSql.Append(" ,(select deptname from sys_dept where gid=cfm.deptgid) as deptname ");
strSql.Append(" ,VOUALLNO=(select top 1 VOUALLNO from cw_vouno_bs_gl WITH(NOLOCK) where BSGID=cfm.Feeid and BSTABLENAME='ch_fee_management' and STARTGID='" + strCwSTARTGID + "')");
strSql.Append(" FROM ch_fee_Mbody cfm ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
return BodySetData(strSql);
}
private static List<C_MBodymb> BodySetData(StringBuilder strSql)
{
var headList = new List<C_MBodymb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
C_MBodymb data = new C_MBodymb();
#region Set DB data to Object
data.gid = Convert.ToString(reader["gid"]);
data.Feeid = Convert.ToString(reader["Feeid"]);
data.CUSTOMERSIDE = Convert.ToString(reader["CUSTOMERSIDE"]);
data.FEENAME = Convert.ToString(reader["FEENAME"]);
data.AMOUNT = Convert.ToString(reader["AMOUNT"]);
data.REMARK = Convert.ToString(reader["REMARK"]);
data.FEENAMEREF = Convert.ToString(reader["FEENAMEREF"]);
data.DEPTGID = Convert.ToString(reader["DEPTGID"]);
data.SALE = Convert.ToString(reader["SALE"]);
data.DEPTNAME = Convert.ToString(reader["DEPTNAME"]);
data.VOUCHERNO = Convert.ToString(reader["VOUCHERNO"]);
data.CUSTBANK = Convert.ToString(reader["CUSTBANK"]);
data.CUSTACCOUNT = Convert.ToString(reader["CUSTACCOUNT"]);
data.OPERATORSIDE_gl = Convert.ToString(reader["OPERATORSIDE_gl"]);
data.OPERATORSIDE_gl_REF = Convert.ToString(reader["OPERATORSIDE_gl_REF"]);
data.VOUALLNO = Convert.ToString(reader["VOUALLNO"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 费用列表
static public List<C_MBodymb_2> GetBodyList_Index ( string strCondition, string USERID )
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(USERID);
var strSql = new StringBuilder();
strSql.Append(" SELECT * ");
strSql.Append(" ,(select top 1 accname from cw_accitems_gl where accid=cfm.OPERATORSIDE_gl and startgid=(select startgid from [cw_design_startusing_user] where usergid='" + USERID + "')) OPERATORSIDE_gl_REF");
strSql.Append(" ,(select ACCNAME from cw_accitems where accid=cfm.feename) as Feenameref ");
strSql.Append(" ,(select voucherno from ch_fee_management where Feeid=cfm.Feeid) as Voucherno ");
strSql.Append(" ,(select deptname from sys_dept where gid=cfm.deptgid) as deptname ");
strSql.Append(" ,m.CURRENCY,case M.CURRENCY when 'RMB' then cfm.amount else 0 end AMOUNTRMB ");
strSql.Append(" ,case M.CURRENCY when 'USD' then cfm.amount else 0 end AMOUNTUSD ");
strSql.Append(" ,case when M.CURRENCY not in('RMB','USD') then cfm.amount else 0 end AMOUNTOTHER ");
strSql.Append(" ,VOUALLNO=(select top 1 VOUALLNO from cw_vouno_bs_gl WITH(NOLOCK) where BSGID=cfm.Feeid and BSTABLENAME='ch_fee_management' and STARTGID='" + strCwSTARTGID + "')");
strSql.Append(" FROM ch_fee_Mbody cfm left join ch_fee_management m on m.FEEID=cfm.FEEID ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
return BodySetData_Index(strSql);
}
private static List<C_MBodymb_2> BodySetData_Index ( StringBuilder strSql )
{
var headList = new List<C_MBodymb_2>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
C_MBodymb_2 data = new C_MBodymb_2();
#region Set DB data to Object
data.gid = Convert.ToString(reader["gid"]);
data.Feeid = Convert.ToString(reader["Feeid"]);
data.CUSTOMERSIDE = Convert.ToString(reader["CUSTOMERSIDE"]);
data.FEENAME = Convert.ToString(reader["FEENAME"]);
data.AMOUNT = Convert.ToString(reader["AMOUNT"]);
data.REMARK = Convert.ToString(reader["REMARK"]);
data.FEENAMEREF = Convert.ToString(reader["FEENAMEREF"]);
data.DEPTGID = Convert.ToString(reader["DEPTGID"]);
data.DEPTNAME = Convert.ToString(reader["DEPTNAME"]);
data.SALE = Convert.ToString(reader["SALE"]);
data.VOUCHERNO = Convert.ToString(reader["VOUCHERNO"]);
data.CUSTBANK = Convert.ToString(reader["CUSTBANK"]);
data.CUSTACCOUNT = Convert.ToString(reader["CUSTACCOUNT"]);
data.OPERATORSIDE_gl = Convert.ToString(reader["OPERATORSIDE_gl"]);
data.OPERATORSIDE_gl_REF = Convert.ToString(reader["OPERATORSIDE_gl_REF"]);
data.CURRENCY = Convert.ToString(reader["CURRENCY"]);
data.AMOUNTRMB = Convert.ToString(reader["AMOUNTRMB"]);
data.AMOUNTUSD = Convert.ToString(reader["AMOUNTUSD"]);
data.AMOUNTOTHER = Convert.ToString(reader["AMOUNTOTHER"]);
data.VOUALLNO = Convert.ToString(reader["VOUALLNO"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 删除
public static DBResult DeleteDetail(string bsno)
{
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 ch_fee_Mbody where Feeid='" + bsno + "'");
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 生成总账凭证
#region 生成汇率列表
static public List<MsCwVouchersGl4> GetCodeCurrencyList(string strGids, string companyid, string strUserID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUserID);
string strCwACCDATE = BasicDataRefDAL.GetCwACCDATE(strUserID);
var strSql = new StringBuilder();
strSql.Append("select CURRENCY,(select top 1 BEGRATE from cw_currency_rate where ACCDATE='" + strCwACCDATE + "' and STARTGID='" + strCwSTARTGID + "' and LINKGID in (select GID from code_currency where CODENAME=VW_ch_fee_management_mbody.CURRENCY)) as FCYEXRATE from VW_ch_fee_management_mbody where CURRENCY<>'RMB'");
if (!string.IsNullOrEmpty(strGids))
{
string strCondition = " and Feeid in ('" + strGids.Trim().Replace(",", "','") + "')";
strSql.Append(strCondition);
}
else
{
strSql.Append(" and 1<0");
}
strSql.Append(" group by CURRENCY order by CURRENCY");
return SetCodeCurrencyData(strSql);
}
private static List<MsCwVouchersGl4> SetCodeCurrencyData(StringBuilder strSql)
{
var headList = new List<MsCwVouchersGl4>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
MsCwVouchersGl4 data = new MsCwVouchersGl4();
#region Set DB data to Object
data.CURR = (reader["CURRENCY"] == null ? "" : Convert.ToString(reader["CURRENCY"]));
data.FCYEXRATE = (reader["FCYEXRATE"] == null ? "" : Convert.ToString(reader["FCYEXRATE"]));
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 生成总账凭证
public static DBResult onAddCwVouchers(string strGids, MsCwVouchersGl3 headData, List<MsCwVouchersGl4> bodyList, string strUserID, string strSHOWNAME, string companyid)
{
Database db = DatabaseFactory.CreateDatabase();
var result = new DBResult();
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string sSQL = "";
int iResult = 0;
string zt = "";
string sError = "操作完成!";
string strError = "";
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUserID);
var CWSTARTUSING = MsSysParamSetDAL.GetData("PARAMNAME='CWSTARTUSING'");
if (CWSTARTUSING.PARAMVALUE != "")
{
if (strCwSTARTGID != CWSTARTUSING.PARAMVALUE)
{
result.Success = false;
result.Message = "当前账套不是设置的账套,不能生成凭证!";
return result;
}
}
string strCwACCDATE = BasicDataRefDAL.GetCwACCDATE(strUserID);
string sNum = "";
string strCondition = " and Feeid not in (select [BSGID] from [cw_vouno_bs_gl] WITH(NOLOCK) where BSTABLENAME='ch_fee_management' and STARTGID='" + strCwSTARTGID + "')";
string sAndGids = " and Feeid in ('" + strGids.Trim().Replace(",", "','") + "')";
#region 生成前的判断
//帐套设置
sSQL = "SELECT top 1 * from cw_design_gl WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "'";// and CORPID='"+companyid+"'
DataSet dsCwDesign = T_ALL_DA.GetAllSQL(sSQL);
if (dsCwDesign == null)
{
result.Success = false;
result.Message = "请先设置帐套信息!" + result.Message;
return result;
}
//帐套设置_核算科目
sSQL = "SELECT [GID],[LINKGID],[ITEMGID],[OPTYPE],[MODIFIEDUSER],[MODIFIEDTIME],[MODIFIEDUSERNAME]=(select top 1 SHOWNAME from [user] where gid=[cw_design_gl_item].MODIFIEDUSER),[ITEMCODE]=(SELECT top 1 ITEMCODE from cw_item where GID=[cw_design_gl_item].[ITEMGID]),[ITEMNAME]=(SELECT top 1 ITEMNAME from cw_item where GID=[cw_design_gl_item].[ITEMGID]) FROM [cw_design_gl_item] WITH(NOLOCK) where LINKGID in (SELECT top 1 GID from cw_design_gl WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "') ORDER BY [ITEMCODE]";
DataSet dsCwDesignItem = T_ALL_DA.GetAllSQL(sSQL);
#endregion
string[] items = strGids.Trim().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
int n = 0;
if (items.Length > 0)
{
for (int i = 0; i < items.Length; i++)
{
sAndGids = " and Feeid in ('" + items[i].ToString().Trim().Replace(",", "','") + "')";
DBResult result2 = GetIsVoucher(items[i].ToString().Trim(), strUserID);
if (!result2.Success)
{
strError = result2.Message;
}
else
{
#region 判断收支科目是否存在当前账套中
string blSQL = "select count(*) as iNum from VW_ch_fee_management_mbody WITH(NOLOCK) where OPERATORSIDE not in (select accid from cw_accitems_gl where [STARTGID]='" + strCwSTARTGID + "' and [YEAR]='" + strCwACCDATE.Substring(0, 4) + "' and DETAILED=1)" + sAndGids;
int iNum = int.Parse(T_ALL_DA.GetStrSQL("iNum", blSQL));
if (iNum > 0)
{
strError = "收支科目不存在当前账套中,请重新选择!";
continue;
}
#endregion
#region 判断贷方科目是否存在当前账套中
blSQL = "select count(*) as iNum from VW_ch_fee_management_mbody WITH(NOLOCK) where OPERATORSIDE_gl not in (select accid from cw_accitems_gl where [STARTGID]='" + strCwSTARTGID + "' and [YEAR]='" + strCwACCDATE.Substring(0, 4) + "' and DETAILED=1)" + sAndGids;
iNum = int.Parse(T_ALL_DA.GetStrSQL("iNum", blSQL));
if (iNum > 0)
{
strError = "录入的科目不存在当前账套中,请重新选择!";
continue;
}
#endregion
#region 提前生成凭证号
string sACCDATE = headData.VOUDATE.Substring(0, 7);
if (DateTime.Parse(sACCDATE + "-01") < DateTime.Parse(strCwACCDATE + "-01"))
{
sACCDATE = strCwACCDATE;
}
string strBPVW = dsCwDesign.Tables[0].Rows[0]["TVW"].ToString().Trim();
string strVOUNOhj = DSWeb.MvcShipping.DAL.MsBaseInfoDAL.MsBaseInfoDAL.GetCwVOUNO(strBPVW, sACCDATE, strUserID);
string[] items2 = strVOUNOhj.Trim().Split(new string[] { "~" }, StringSplitOptions.RemoveEmptyEntries);
string strVOUNO = items2[3].ToString().Trim();
string sACCMONTH = DateTime.Parse(headData.VOUDATE.ToString()).Month.ToString();//月
if (sACCMONTH.ToString().Length == 1)
{
sACCMONTH = "0" + sACCMONTH.ToString();//月
}
string cfVOUALLNO = strBPVW + DateTime.Parse(headData.VOUDATE.ToString()).Year.ToString() + sACCMONTH + strVOUNO;//年+月+自动生成编号=凭证号
#endregion
#region 把凭证号和业务GID插入到凭证生成的关系表
blSQL = "INSERT INTO [cw_vouno_bs_gl]([GID],[BSTABLENAME],[BSGID],[VOUALLNO],[ORDNO],[STARTGID],[CREATEUSER],[CREATETIME])"
+ "select newid() as [GID],'ch_fee_management' as [BSTABLENAME],Feeid as [BSGID],'" + cfVOUALLNO + "' as [VOUALLNO],'' as [ORDNO],'" + strCwSTARTGID + "' as [STARTGID],'" + strUserID + "' as [CREATEUSER],getdate() as [CREATETIME]"
+ " from ch_fee_management WITH(NOLOCK) where 1=1" + sAndGids + " and Feeid not in (select BSGID from cw_vouno_bs_gl WITH(NOLOCK) where BSTABLENAME='ch_fee_management' and [STARTGID]='" + strCwSTARTGID + "')";
#endregion
int iCount = db.ExecuteNonQuery(CommandType.Text, blSQL);
if (iCount != 0)
{
iResult = getSC(dsCwDesign, null, sAndGids, headData, bodyList, strCwACCDATE, strUserID, companyid, cfVOUALLNO, strSHOWNAME);
zt += "," + iResult;
if (zt.IndexOf("-") < 0)
{
n++;
}
}
else
{
strError = "有已经生成凭证的数据,不允许重复生成,请重新选择!";
continue;
}
}
}
}
if (strError.Trim() != "")
{
sError = strError.Trim()+"</br>";
}
sError = "共" + items.Length + "票单据,生成" + n + "条凭证,失败" + (items.Length - n) + "条凭证!";
result.Success = true;
result.Message = sError;//"操作完成!";
return result;
}
/// <summary>
/// 生成凭证
/// </summary>
/// <param name="ds">帐套设置数据集</param>
/// <param name="sGids">gid业务编号</param>
/// <returns></returns>
protected static int getSC(DataSet dsCwDesign, DataSet dsCwDesignItem, string sAndGids, MsCwVouchersGl3 headData, List<MsCwVouchersGl4> bodyList, string strACCDATE, string strUserID, string strCompanyID, string cfVOUALLNO, string strSHOWNAME)
{
var result = new DBResult();
#region 基本变量
//全部
string sSQL = "";
string strEXPLAN = "";
string strFCY = "RMB";
string strIsExplan2 = "";
Decimal dEXCHANGERATE = 0;
//总合计
Decimal strJie = 0;
Decimal strDai = 0;
string strBPVW = dsCwDesign.Tables[0].Rows[0]["TVW"].ToString().Trim();//凭证字
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUserID);
string strCondition = sAndGids + " and Feeid in (select [BSGID] from [cw_vouno_bs_gl] WITH(NOLOCK) where BSTABLENAME='ch_fee_management' and VOUALLNO='" + cfVOUALLNO + "' and STARTGID='" + strCwSTARTGID + "')";
//摘要
string strISEXPLAN = ",CUSTOMERSIDE, REMARK_F";
#endregion
#region 科目设置
//科目设置 收支科目
sSQL = "SELECT top 1 * from cw_accitems_gl where ACCID=(SELECT top 1 OPERATORSIDE From VW_ch_fee_management_mbody WHERE 1=1" + strCondition + ")";
DataSet dsSZKM = T_ALL_DA.GetAllSQL(sSQL);
//科目设置 汇兑损益
sSQL = "SELECT top 1 * from cw_accitems_gl where ACCID='" + dsCwDesign.Tables[0].Rows[0]["EGOL"].ToString().Trim() + "' and [YEAR]=SUBSTRING('" + strACCDATE + "',1,4) and [STARTGID]='" + strCwSTARTGID + "'";
DataSet dsEGOL = T_ALL_DA.GetAllSQL(sSQL);
#endregion
#region 基本数据集
string strORDNO = getGid();
IList<MsCwVouitemsGl> CwVouitemsEntities = new List<MsCwVouitemsGl>();
#region 提取费率
string tbRATE = "";
string tbRATE_CASH = "";
//是否按照系统录入汇率
if (headData.ISRATE == true)
{
tbRATE = "EXCHANGERATE";
tbRATE_CASH = "EXCHANGERATE";
}
else
{
tbRATE = "EXCHANGERATE";
tbRATE_CASH = "(CASE";
if (bodyList != null)
{
if (bodyList.Count > 0)
{
for (int i = 0; i < bodyList.Count; i++)
{
tbRATE_CASH += " WHEN CURRENCY='" + bodyList[i].CURR.ToString().Trim() + "' THEN " + bodyList[i].FCYEXRATE.ToString().Trim();
}
}
}
tbRATE_CASH += " ELSE EXCHANGERATE END)";
}
#endregion
#region 科目设置:收支
string sqlOPERATORSIDE = "SELECT (CASE WHEN FEETYPE = 1 THEN '应收账款' WHEN FEETYPE=2 THEN '应付账款' ELSE '' END) as FEETYPE"
+ ",CURRENCY," + tbRATE + " as EXCHANGERATE"
+ ",SUM(AMOUNT_F) AS je"
+ ",convert(decimal(18,2),round(SUM(AMOUNT_F*" + tbRATE + "),2)) AS hj"
+ ",OPERATORSIDE,OPERATORSIDE_gl" + strISEXPLAN
+ " From VW_ch_fee_management_mbody WHERE 1=1" + strCondition
+ " GROUP BY FEETYPE,CURRENCY,EXCHANGERATE,OPERATORSIDE,OPERATORSIDE_gl" + strISEXPLAN
+ " ORDER BY FEETYPE desc,CURRENCY" + strISEXPLAN;
DataSet dsOPERATORSIDE = T_ALL_DA.GetAllSQL(sqlOPERATORSIDE);
#endregion
#endregion
if (dsOPERATORSIDE != null)
{
#region 插入明细表
if (dsOPERATORSIDE.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsOPERATORSIDE.Tables[0].Rows.Count; i++)
{
//摘要
strEXPLAN = " " + dsOPERATORSIDE.Tables[0].Rows[i]["CUSTOMERSIDE"].ToString().Trim() + " " + dsOPERATORSIDE.Tables[0].Rows[i]["REMARK_F"].ToString().Trim();
//科目设置 反向收支科目
sSQL = "SELECT top 1 * from cw_accitems_gl where ACCID='" + dsOPERATORSIDE.Tables[0].Rows[i]["OPERATORSIDE_gl"].ToString().Trim() + "'";
DataSet dsFXSZKM = T_ALL_DA.GetAllSQL(sSQL);
#region 收支科目
MsCwVouitemsGl MsCwVouitemsGl = new MsCwVouitemsGl();
//MsCwVouitemsGl.GID 唯一编码 newid()
MsCwVouitemsGl.ORDNO = strORDNO.Trim();
MsCwVouitemsGl.ITEMNO = 0;// 行号
MsCwVouitemsGl.PACCID = "";//父级科目贷码
MsCwVouitemsGl.PROPERTY = 0;//科目属性
MsCwVouitemsGl.GRADE = 0;//科目级别
if (dsOPERATORSIDE.Tables[0].Rows[i]["FEETYPE"].ToString().Trim().IndexOf("收") > -1)
{
#region 收入
strJie = strJie + Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["hj"].ToString().Trim());
//
MsCwVouitemsGl.ACCID = dsSZKM.Tables[0].Rows[0]["ACCID"].ToString().Trim();//账款科目贷码
MsCwVouitemsGl.AMTDR = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["hj"].ToString().Trim());//本位币借方金额(互斥)
MsCwVouitemsGl.AMTCR = 0;//本位币贷方金额(互斥)
MsCwVouitemsGl.FCYNO = dsOPERATORSIDE.Tables[0].Rows[i]["CURRENCY"].ToString().Trim();//外币编号usd
MsCwVouitemsGl.ISFCY = false;//是否外币
MsCwVouitemsGl.FCYDR = 0;//外币借方金额
MsCwVouitemsGl.FCYCR = 0;//外币贷方金额
MsCwVouitemsGl.FCYEXRATE = 1;//汇率
dEXCHANGERATE = 1;//汇率
if (MsCwVouitemsGl.FCYNO.ToString().Trim() != "RMB")
{
MsCwVouitemsGl.ISFCY = true;//是否外币
MsCwVouitemsGl.FCYDR = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["je"].ToString().Trim());//外币借方金额
MsCwVouitemsGl.FCYCR = 0;//外币贷方金额
MsCwVouitemsGl.FCYEXRATE = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["EXCHANGERATE"].ToString().Trim());//汇率
dEXCHANGERATE = MsCwVouitemsGl.FCYEXRATE;//汇率
strFCY = MsCwVouitemsGl.FCYNO;
}
#endregion
}
else
{
#region 支出
strDai = strDai + Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["hj"].ToString().Trim());
//
MsCwVouitemsGl.ACCID = dsSZKM.Tables[0].Rows[0]["ACCID"].ToString().Trim();//账款科目贷码
MsCwVouitemsGl.AMTDR = 0;//本位币借方金额(互斥)
MsCwVouitemsGl.AMTCR = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["hj"].ToString().Trim());//本位币贷方金额(互斥)
MsCwVouitemsGl.FCYNO = dsOPERATORSIDE.Tables[0].Rows[i]["CURRENCY"].ToString().Trim();//外币编号usd
MsCwVouitemsGl.ISFCY = false;//是否外币
MsCwVouitemsGl.FCYDR = 0;//外币借方金额
MsCwVouitemsGl.FCYCR = 0;//外币贷方金额
MsCwVouitemsGl.FCYEXRATE = 1;//汇率
dEXCHANGERATE = 1;//汇率
if (MsCwVouitemsGl.FCYNO.ToString().Trim() != "RMB")
{
MsCwVouitemsGl.ISFCY = true;//是否外币
MsCwVouitemsGl.FCYDR = 0;//外币借方金额
MsCwVouitemsGl.FCYCR = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["je"].ToString().Trim());//外币贷方金额
MsCwVouitemsGl.FCYEXRATE = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["EXCHANGERATE"].ToString().Trim());//汇率
dEXCHANGERATE = MsCwVouitemsGl.FCYEXRATE;//汇率
strFCY = MsCwVouitemsGl.FCYNO;
}
#endregion
}
//
MsCwVouitemsGl.ACCNAME = dsSZKM.Tables[0].Rows[0]["ACCNAME"].ToString().Trim();//科目名称
MsCwVouitemsGl.ISDEPTACC = Boolean.Parse(dsSZKM.Tables[0].Rows[0]["ISDEPTACC"].ToString().Trim());//核算部门,按规则设置生成
MsCwVouitemsGl.ISEMPLACC = Boolean.Parse(dsSZKM.Tables[0].Rows[0]["ISEMPLACC"].ToString().Trim());//核算人员,按规则设置生成
MsCwVouitemsGl.ISCORPACC = Boolean.Parse(dsSZKM.Tables[0].Rows[0]["ISCORPACC"].ToString().Trim());//核算客户,按规则设置生成
MsCwVouitemsGl.ISITEMACC = Boolean.Parse(dsSZKM.Tables[0].Rows[0]["ISITEMACC"].ToString().Trim());//核算项目,按规则设置生成
if (dsSZKM.Tables[0].Rows[0]["DC"].ToString().Trim() == "借")
{
MsCwVouitemsGl.DC = "D";//借方向
}
else
{
MsCwVouitemsGl.DC = "C";//贷方向
}
//
string strACCALL = "";
//是否核算客户
MsCwVouitemsGl.CORPID = "";//客户(系统)
MsCwVouitemsGl.CUSTOMERNAME = "";//客户(系统)
if (dsSZKM.Tables[0].Rows[0]["ISCORPACC"].ToString().Trim() == "True")
{
MsCwVouitemsGl.CORPID = "";//客户(系统)
MsCwVouitemsGl.CUSTOMERNAME = dsOPERATORSIDE.Tables[0].Rows[i]["CUSTOMERSIDE"].ToString().Trim();//客户(系统)
strACCALL += "▁" + MsCwVouitemsGl.CUSTOMERNAME;
}
//是否核算人员_揽货人
if (dsSZKM.Tables[0].Rows[0]["ISEMPLACC"].ToString().Trim() == "True")
{
MsCwVouitemsGl.SALE = dsOPERATORSIDE.Tables[0].Rows[i]["SALE"].ToString().Trim();//人员名称
strACCALL += "▁" + MsCwVouitemsGl.SALE;
}
//是否核算部门
if (dsSZKM.Tables[0].Rows[0]["ISDEPTACC"].ToString().Trim() == "True")
{
MsCwVouitemsGl.DEPTGID = dsOPERATORSIDE.Tables[0].Rows[i]["DEPTGID"].ToString().Trim();//揽货人的部门
strACCALL += "▁" + dsOPERATORSIDE.Tables[0].Rows[i]["DEPTNAME"].ToString().Trim();
}
//是否核算项目
if (dsSZKM.Tables[0].Rows[0]["ISITEMACC"].ToString().Trim() == "True")
{
MsCwVouitemsGl.ITEMGID = "";
if (dsCwDesignItem != null)
{
for (int j = 0; j < dsCwDesignItem.Tables[0].Rows.Count; j++)
{
if (dsOPERATORSIDE.Tables[0].Rows[0]["OPLBNAME"].ToString().Trim() == dsCwDesignItem.Tables[0].Rows[j]["OPTYPE"].ToString().Trim())
{
MsCwVouitemsGl.ITEMGID = dsCwDesignItem.Tables[0].Rows[j]["ITEMGID"].ToString().Trim();//是否核算项目
strACCALL += "▁" + dsCwDesignItem.Tables[0].Rows[j]["ITEMNAME"].ToString().Trim();
}
}
}
}
MsCwVouitemsGl.ACCALL = BasicDataRefDAL.setCAGA(dsSZKM.Tables[0].Rows[0]["PACCGID"].ToString(), MsCwVouitemsGl.ACCNAME.ToString().Trim()) + strACCALL;
MsCwVouitemsGl.EXPLAN = strEXPLAN;//摘要
strIsExplan2 = strEXPLAN;//摘要
MsCwVouitemsGl.BLNO = "";
//if (dsCwDesign.Tables[0].Rows[0]["ISRPMBLNO"].ToString().Trim() == "True")
//{
// MsCwVouitemsGl.BLNO = dsVwcfsdAR.Tables[0].Rows[i]["MBLNO"].ToString().Trim();
//}
if (dsCwDesign.Tables[0].Rows[0]["ISVBM"].ToString().Trim() == "True")
{
MsCwVouitemsGl.ISSYS = false;//是否手动录入
}
else
{
MsCwVouitemsGl.ISSYS = true;//是否手动录入
}
MsCwVouitemsGl.QTYUNIT = "";//数量包装单位
MsCwVouitemsGl.QTYDR = 0;//借方数量
MsCwVouitemsGl.QTYCR = 0;//贷方数量
MsCwVouitemsGl.DEPTID = "";//部门(系统)
MsCwVouitemsGl.EMPLID = "";//人员(系统)
MsCwVouitemsGl.PITEMID = 0;//父级项目编号
MsCwVouitemsGl.ITEMID = "";//项目编号
MsCwVouitemsGl.FIELD1 = "";//预留字段1
MsCwVouitemsGl.FIELD2 = "";//预留字段2
MsCwVouitemsGl.FIELD3 = "";//预留字段3
MsCwVouitemsGl.FIELD4 = "";//预留字段4
MsCwVouitemsGl.FIELD5 = "";//预留字段5
MsCwVouitemsGl.FIELD6 = "";//预留字段6
MsCwVouitemsGl.FIELD7 = "";//预留字段7
MsCwVouitemsGl.FIELD8 = "";//预留字段8
MsCwVouitemsGl.FIELD9 = "";//预留字段9
MsCwVouitemsGl.FIELD10 = "";//预留字段10
MsCwVouitemsGl.FSETTLCODE = "";//结算方式
MsCwVouitemsGl.FSETTLDATE = DateTime.Parse(DateTime.Parse(headData.VOUDATE).ToString("yyyy-MM-dd"));//结算日期
MsCwVouitemsGl.FSETTLENO = "";//财务辅助编号
MsCwVouitemsGl.MODIFIEDUSER = strUserID;//最后一次更新操作人
#endregion
CwVouitemsEntities.Add(MsCwVouitemsGl);
#region 反向收支科目
MsCwVouitemsGl MsCwVouitemsGl2 = new MsCwVouitemsGl();
//MsCwVouitemsGl2.GID 唯一编码 newid()
MsCwVouitemsGl2.ORDNO = strORDNO.Trim();
MsCwVouitemsGl2.ITEMNO = 0;// 行号
MsCwVouitemsGl2.PACCID = "";//父级科目贷码
MsCwVouitemsGl2.PROPERTY = 0;//科目属性
MsCwVouitemsGl2.GRADE = 0;//科目级别
if (dsOPERATORSIDE.Tables[0].Rows[i]["FEETYPE"].ToString().Trim().IndexOf("收") > -1)
{
#region 支出
strDai = strDai + Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["hj"].ToString().Trim());
//
MsCwVouitemsGl2.ACCID = dsFXSZKM.Tables[0].Rows[0]["ACCID"].ToString().Trim();//账款科目贷码
MsCwVouitemsGl2.AMTDR = 0;//本位币借方金额(互斥)
MsCwVouitemsGl2.AMTCR = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["hj"].ToString().Trim());//本位币贷方金额(互斥)
MsCwVouitemsGl2.FCYNO = dsOPERATORSIDE.Tables[0].Rows[i]["CURRENCY"].ToString().Trim();//外币编号usd
MsCwVouitemsGl2.ISFCY = false;//是否外币
MsCwVouitemsGl2.FCYDR = 0;//外币借方金额
MsCwVouitemsGl2.FCYCR = 0;//外币贷方金额
MsCwVouitemsGl2.FCYEXRATE = 1;//汇率
dEXCHANGERATE = 1;//汇率
if (MsCwVouitemsGl2.FCYNO.ToString().Trim() != "RMB")
{
MsCwVouitemsGl2.ISFCY = true;//是否外币
MsCwVouitemsGl2.FCYDR = 0;//外币借方金额
MsCwVouitemsGl2.FCYCR = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["je"].ToString().Trim());//外币贷方金额
MsCwVouitemsGl2.FCYEXRATE = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["EXCHANGERATE"].ToString().Trim());//汇率
dEXCHANGERATE = MsCwVouitemsGl2.FCYEXRATE;//汇率
strFCY = MsCwVouitemsGl2.FCYNO;
}
#endregion
}
else
{
#region 收入
strJie = strJie + Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["hj"].ToString().Trim());
//
MsCwVouitemsGl2.ACCID = dsFXSZKM.Tables[0].Rows[0]["ACCID"].ToString().Trim();//账款科目贷码
MsCwVouitemsGl2.AMTDR = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["hj"].ToString().Trim());//本位币借方金额(互斥)
MsCwVouitemsGl2.AMTCR = 0;//本位币贷方金额(互斥)
MsCwVouitemsGl2.FCYNO = dsOPERATORSIDE.Tables[0].Rows[i]["CURRENCY"].ToString().Trim();//外币编号usd
MsCwVouitemsGl2.ISFCY = false;//是否外币
MsCwVouitemsGl2.FCYDR = 0;//外币借方金额
MsCwVouitemsGl2.FCYCR = 0;//外币贷方金额
MsCwVouitemsGl2.FCYEXRATE = 1;//汇率
dEXCHANGERATE = 1;//汇率
if (MsCwVouitemsGl2.FCYNO.ToString().Trim() != "RMB")
{
MsCwVouitemsGl2.ISFCY = true;//是否外币
MsCwVouitemsGl2.FCYDR = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["je"].ToString().Trim());//外币借方金额
MsCwVouitemsGl2.FCYCR = 0;//外币贷方金额
MsCwVouitemsGl2.FCYEXRATE = Decimal.Parse(dsOPERATORSIDE.Tables[0].Rows[i]["EXCHANGERATE"].ToString().Trim());//汇率
dEXCHANGERATE = MsCwVouitemsGl2.FCYEXRATE;//汇率
strFCY = MsCwVouitemsGl2.FCYNO;
}
#endregion
}
//
MsCwVouitemsGl2.ACCNAME = dsFXSZKM.Tables[0].Rows[0]["ACCNAME"].ToString().Trim();//科目名称
MsCwVouitemsGl2.ISDEPTACC = Boolean.Parse(dsFXSZKM.Tables[0].Rows[0]["ISDEPTACC"].ToString().Trim());//核算部门,按规则设置生成
MsCwVouitemsGl2.ISEMPLACC = Boolean.Parse(dsFXSZKM.Tables[0].Rows[0]["ISEMPLACC"].ToString().Trim());//核算人员,按规则设置生成
MsCwVouitemsGl2.ISCORPACC = Boolean.Parse(dsFXSZKM.Tables[0].Rows[0]["ISCORPACC"].ToString().Trim());//核算客户,按规则设置生成
MsCwVouitemsGl2.ISITEMACC = Boolean.Parse(dsFXSZKM.Tables[0].Rows[0]["ISITEMACC"].ToString().Trim());//核算项目,按规则设置生成
if (dsFXSZKM.Tables[0].Rows[0]["DC"].ToString().Trim() == "借")
{
MsCwVouitemsGl2.DC = "D";//借方向
}
else
{
MsCwVouitemsGl2.DC = "C";//贷方向
}
//
strACCALL = "";
//是否核算客户
MsCwVouitemsGl2.CORPID = "";//客户(系统)
MsCwVouitemsGl2.CUSTOMERNAME = "";//客户(系统)
if (dsFXSZKM.Tables[0].Rows[0]["ISCORPACC"].ToString().Trim() == "True")
{
MsCwVouitemsGl2.CORPID = "";//客户(系统)
MsCwVouitemsGl2.CUSTOMERNAME = dsOPERATORSIDE.Tables[0].Rows[i]["CUSTOMERSIDE"].ToString().Trim();//客户(系统)
strACCALL += "▁" + MsCwVouitemsGl2.CUSTOMERNAME;
}
//是否核算人员_揽货人
if (dsFXSZKM.Tables[0].Rows[0]["ISEMPLACC"].ToString().Trim() == "True")
{
MsCwVouitemsGl2.SALE = dsOPERATORSIDE.Tables[0].Rows[i]["SALE"].ToString().Trim();//人员名称
strACCALL += "▁" + MsCwVouitemsGl2.SALE;
}
//是否核算部门
if (dsFXSZKM.Tables[0].Rows[0]["ISDEPTACC"].ToString().Trim() == "True")
{
MsCwVouitemsGl2.DEPTGID = dsOPERATORSIDE.Tables[0].Rows[i]["DEPTGID"].ToString().Trim();//揽货人的部门
strACCALL += "▁" + dsOPERATORSIDE.Tables[0].Rows[i]["DEPTNAME"].ToString().Trim();
}
//是否核算项目
if (dsFXSZKM.Tables[0].Rows[0]["ISITEMACC"].ToString().Trim() == "True")
{
MsCwVouitemsGl2.ITEMGID = "";
if (dsCwDesignItem != null)
{
for (int j = 0; j < dsCwDesignItem.Tables[0].Rows.Count; j++)
{
if (dsOPERATORSIDE.Tables[0].Rows[0]["OPLBNAME"].ToString().Trim() == dsCwDesignItem.Tables[0].Rows[j]["OPTYPE"].ToString().Trim())
{
MsCwVouitemsGl2.ITEMGID = dsCwDesignItem.Tables[0].Rows[j]["ITEMGID"].ToString().Trim();//是否核算项目
strACCALL += "▁" + dsCwDesignItem.Tables[0].Rows[j]["ITEMNAME"].ToString().Trim();
}
}
}
}
MsCwVouitemsGl2.ACCALL = BasicDataRefDAL.setCAGA(dsFXSZKM.Tables[0].Rows[0]["PACCGID"].ToString(), MsCwVouitemsGl2.ACCNAME.ToString().Trim()) + strACCALL;
MsCwVouitemsGl2.EXPLAN = strEXPLAN;//摘要
strIsExplan2 = strEXPLAN;//摘要
MsCwVouitemsGl2.BLNO = "";
//if (dsCwDesign.Tables[0].Rows[0]["ISRPMBLNO"].ToString().Trim() == "True")
//{
// MsCwVouitemsGl2.BLNO = dsVwcfsdAR.Tables[0].Rows[i]["MBLNO"].ToString().Trim();
//}
if (dsCwDesign.Tables[0].Rows[0]["ISVBM"].ToString().Trim() == "True")
{
MsCwVouitemsGl2.ISSYS = false;//是否手动录入
}
else
{
MsCwVouitemsGl2.ISSYS = true;//是否手动录入
}
MsCwVouitemsGl2.QTYUNIT = "";//数量包装单位
MsCwVouitemsGl2.QTYDR = 0;//借方数量
MsCwVouitemsGl2.QTYCR = 0;//贷方数量
MsCwVouitemsGl2.DEPTID = "";//部门(系统)
MsCwVouitemsGl2.EMPLID = "";//人员(系统)
MsCwVouitemsGl2.PITEMID = 0;//父级项目编号
MsCwVouitemsGl2.ITEMID = "";//项目编号
MsCwVouitemsGl2.FIELD1 = "";//预留字段1
MsCwVouitemsGl2.FIELD2 = "";//预留字段2
MsCwVouitemsGl2.FIELD3 = "";//预留字段3
MsCwVouitemsGl2.FIELD4 = "";//预留字段4
MsCwVouitemsGl2.FIELD5 = "";//预留字段5
MsCwVouitemsGl2.FIELD6 = "";//预留字段6
MsCwVouitemsGl2.FIELD7 = "";//预留字段7
MsCwVouitemsGl2.FIELD8 = "";//预留字段8
MsCwVouitemsGl2.FIELD9 = "";//预留字段9
MsCwVouitemsGl2.FIELD10 = "";//预留字段10
MsCwVouitemsGl2.FSETTLCODE = "";//结算方式
MsCwVouitemsGl2.FSETTLDATE = DateTime.Parse(DateTime.Parse(headData.VOUDATE).ToString("yyyy-MM-dd"));//结算日期
MsCwVouitemsGl2.FSETTLENO = "";//财务辅助编号
MsCwVouitemsGl2.MODIFIEDUSER = strUserID;//最后一次更新操作人
#endregion
CwVouitemsEntities.Add(MsCwVouitemsGl2);
}
}
#endregion
#region 插入主表
MsCwVouchersGl MsCwVouchersGl = new MsCwVouchersGl();
MsCwVouchersGl.ORDNO = strORDNO.Trim();//唯一编码 newid() varchar (36)
MsCwVouchersGl.VOUDATE = headData.VOUDATE;//凭证日期
////strY + "~" + strM + "~" + sVOUNO + "~" + strVOUNO + "~" + strVOUDATE + "~" + strACCDATE;
//string sACCDATE = headData.VOUDATE.Substring(0, 7);
//if (DateTime.Parse(sACCDATE + "-01") < DateTime.Parse(strACCDATE + "-01"))
//{
// sACCDATE = strACCDATE;
//}
//string strVOUNOhj = MsBaseInfoDAL.GetCwVOUNO(strBPVW.Trim(), sACCDATE, strUserID);
//string[] items = strVOUNOhj.Trim().Split(new string[] { "~" }, StringSplitOptions.RemoveEmptyEntries);
//string sVOUNO = items[2].ToString().Trim();
//string strVOUNO = items[3].ToString().Trim();
//MsCwVouchersGl.VOUNO = sVOUNO;//月初清零 varchar (16)
MsCwVouchersGl.VOUNO = int.Parse(cfVOUALLNO.Trim().Substring(cfVOUALLNO.Trim().Length - 4)).ToString();//sVOUNO;//月初清零 varchar (16)
MsCwVouchersGl.ACCYEAR = DateTime.Parse(headData.VOUDATE.ToString()).Year.ToString();//年
MsCwVouchersGl.ACCMONTH = DateTime.Parse(headData.VOUDATE.ToString()).Month.ToString();//月
if (MsCwVouchersGl.ACCMONTH.ToString().Length == 1)
{
MsCwVouchersGl.ACCMONTH = "0" + MsCwVouchersGl.ACCMONTH.ToString();//月
}
MsCwVouchersGl.VKNO = strBPVW.Trim();//凭证字
//MsCwVouchersGl.VOUALLNO = MsCwVouchersGl.VKNO + MsCwVouchersGl.ACCYEAR + MsCwVouchersGl.ACCMONTH + strVOUNO;//年+月+自动生成编号=凭证号
MsCwVouchersGl.VOUALLNO = cfVOUALLNO.Trim().Replace("记", strBPVW.Trim());//年+月+自动生成编号=凭证号
MsCwVouchersGl.ATTACHS = 1;// int.Parse(dsCwDesign.Tables[0].Rows[0]["AFFIXNO"].ToString().Trim());//附件(单据)数
MsCwVouchersGl.AMTDR = strJie;// iAMTDR;//本位币借方
MsCwVouchersGl.AMTCR = strDai;//iAMTDR;// iAMTCR;//本位币贷方
MsCwVouchersGl.FCY = strFCY;//是否含有外币科目
MsCwVouchersGl.QTY = "";//是否含有数量科目
MsCwVouchersGl.VOUPROP = "";//凭证属性
MsCwVouchersGl.PREPARED = headData.PREPARED == null ? strSHOWNAME : headData.PREPARED.ToString().Trim();//制单人
MsCwVouchersGl.CHECKED = "";//审核人
MsCwVouchersGl.ENTERED = "";//记账人
MsCwVouchersGl.ERRMSG = "";//错误信息
MsCwVouchersGl.ISDELETE = false;//是否废除
MsCwVouchersGl.DELETEUSER = "";//废除操作人
MsCwVouchersGl.CREATEUSER = strUserID;//创建人
MsCwVouchersGl.CREATETIME = DateTime.Now;//创建时间
MsCwVouchersGl.MODIFIEDUSER = strUserID;//最后一次更新操作人
MsCwVouchersGl.MODIFIEDTIME = DateTime.Now;//最后一次更新操作时间
MsCwVouchersGl.DbOperationType = DbOperationType.DbotIns;
MsCwVouchersGl.STARTGID = strCwSTARTGID;
#endregion
#region 生成入库
var modb = new ModelObjectDB();
result = modb.Save(MsCwVouchersGl);
if (result.Success == true)
{
int n = 1;
foreach (var enumValue in CwVouitemsEntities)
{
enumValue.GID = Guid.NewGuid().ToString();
enumValue.ITEMNO = n;//行号
enumValue.DbOperationType = DbOperationType.DbotIns;
var modb2 = new ModelObjectDB();
DBResult result2 = modb2.Save(enumValue);
n++;
}
//更新凭证生成关系表中的ORDNO数据
string strLS = sAndGids.Replace("Feeid", "BSGID");
string blSQL = "update [cw_vouno_bs_gl] set ORDNO='" + MsCwVouchersGl.ORDNO + "' where VOUALLNO='" + cfVOUALLNO + "' and BSTABLENAME='ch_fee_management' and [STARTGID]='" + strCwSTARTGID + "'" + strLS;
bool bl = T_ALL_DA.GetExecuteSqlCommand(blSQL);
blSQL = "update code_fill_serialno set ISDELETE=1,DELETEUSER='" + strUserID + "',DELETETIME=GETDATE() where TABLENAME='cw_vouchers_gl' and SERIALNO='" + cfVOUALLNO + "' and STARTGID='" + strCwSTARTGID + "'";
bl = T_ALL_DA.GetExecuteSqlCommand(blSQL);
}
else
{
//result.Success = false;
//result.Message = result.Message;
//return result;
//删除凭证生成关系表中的ch_fee_management的GID数据
string strLS = sAndGids.Replace("Feeid", "BSGID");
string blSQL = "delete from [cw_vouno_bs_gl] where VOUALLNO='" + cfVOUALLNO + "' and BSTABLENAME='ch_fee_management' and [STARTGID]='" + strCwSTARTGID + "'" + strLS;
bool bl = T_ALL_DA.GetExecuteSqlCommand(blSQL);
return -2;//重复数据
}
#endregion
}
else
{
//删除凭证生成关系表中的ch_fee_management的GID数据
string strLS = sAndGids.Replace("Feeid", "BSGID");
string blSQL = "delete from [cw_vouno_bs_gl] where VOUALLNO='" + cfVOUALLNO + "' and BSTABLENAME='ch_fee_management' and [STARTGID]='" + strCwSTARTGID + "'" + strLS;
bool bl = T_ALL_DA.GetExecuteSqlCommand(blSQL);
return -3;//结算无明细数据
}
//result.Success = true;
//result.Message = result.Message;
//return result;
return 1;
}
#endregion
#region 判断是否生成
public static String getGid()
{
string strgid = Guid.NewGuid().ToString();
strgid = strgid.Replace("-", "");
strgid = "VOU" + strgid;
return strgid;
}
public static DBResult GetIsVoucher(string strGids, string strUserID)
{
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUserID);
var result = new DBResult();
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string sSQL = "SELECT count(*) as inum from VW_ch_fee_management_mbody where Feeid in ('" + strGids.Trim().Replace(",", "','") + "') and (Feeid in (select [BSGID] from [cw_vouno_bs_gl] WITH(NOLOCK) where BSTABLENAME='ch_fee_management' and STARTGID='" + strCwSTARTGID + "') or FEESTATUS=1 or OPERATORSIDE_gl='' or OPERATORSIDE_gl is null or OPERATORSIDE='' or OPERATORSIDE is null)";//因烟台爱德林不需要“关系人”,因此去掉“ or CUSTOMERSIDE='' or CUSTOMERSIDE is null”2016-12-13
int inum = int.Parse(T_ALL_DA.GetStrSQL("inum", sSQL));
if (inum == 0)
{
result.Success = true;
result.Message = "";
return result;
}
else
{
result.Success = false;
result.Message = "请选择已审核通过、总账科目、收支科目不为空,且未生成凭证的单据!";//因烟台爱德林不需要“关系人”因此去掉“关系人不为空”的判断2016-12-13
return result;
}
}
/// <summary>
/// 是否自动弹出结算总账凭证
/// </summary>
/// <returns></returns>
public static DBResult onIsSettlementsopen(string strUserID)
{
var result = new DBResult();
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
string strCwSTARTGID = BasicDataRefDAL.GetCwSTARTGID(strUserID);
string sSQL = "SELECT top 1 ISSETTLEMENTSOPEN from cw_design_gl WITH(NOLOCK) where [STARTGID]='" + strCwSTARTGID + "'";
Boolean blISSETTLEMENTSOPEN = Boolean.Parse(T_ALL_DA.GetStrSQL("ISSETTLEMENTSOPEN", sSQL));
if (blISSETTLEMENTSOPEN)
{
result.Success = true;
result.Message = "";
return result;
}
else
{
result.Success = false;
result.Message = "";
return result;
}
}
#endregion
#endregion
}
}