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;
BasicDataRefDAL . SetGLOrder ( ref CwVouitemsEntities ) ;
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
}
}