using System ;
using System.Data ;
using System.Data.Common ;
using System.Collections ;
using System.Collections.Generic ;
using System.Text ;
using DSWeb.Areas.OA.Models.Baoxiao ;
using DSWeb.Areas.OA.Models.Comm ;
using Microsoft.Practices.EnterpriseLibrary.Data ;
using HcUtility.Comm ;
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.Areas.CommMng.Models ;
using DSWeb.MvcShipping.DAL.MsSysParamSet ;
namespace DSWeb.Areas.OA.DAL.Baoxiao2
{
public partial class BaoxiaoDAL
{
#region 报销单列表
//报销单列表
static public List < Baoxiao2mb > GetDataList ( string strCondition , string userid , string username , string corpid , string sort = null )
{
var rangstr = GetListRangDAStr ( "BXLIST" , userid , username , corpid ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
string strCwSTARTGID = BasicDataRefDAL . GetCwSTARTGID ( userid ) ;
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select BXGID,bx.BSNO,COMPANY,DEPTNAME,CREATEUSER,BXNO,BX.JKTYPE,BX.JKREASON,BX.JJNO,BX.JJDATE " ) ;
strSql . Append ( " ,dbo.trimdate(CREATEDATE) CREATEDATE " ) ;
strSql . Append ( " ,bx.ISDELETE,bx.DELETEUSER,bx.DELETETIME,BXSTATUS,REMARK,AMOUNT " ) ;
strSql . Append ( " ,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=bx.bxstatus) as bxstatus_Ref " ) ;
strSql . Append ( " ,CHEQUENO,CHEQUEAMOUNT,BX.ISVOU,(case BX.ISVOU when 1 then '是' else '否' end) ISVOU_REF,BX.VOUCHERNO " ) ;
strSql . Append ( " ,(case (select isnull(sum(obp.amount),0) from OA_Baoxiao_Pay obp where obp.BXGID=bx.BXGID) " ) ;
strSql . Append ( " when isnull(bx.amount,0) then '是' else '否' end) ISPAYED " ) ;
strSql . Append ( " ,BX.RMBAMOUNT,BX.USDAMOUNT,BX.OTHERAMOUNT" ) ;
strSql . Append ( " ,(select showname from vw_user where userid=(select top 1 auditor from workflow_do where billno=bx.BXGID order by AUDITTIME DESC )) auditor" ) ;
strSql . Append ( " ,(select top 1 dbo.trimtime(AUDITTIME) from workflow_do where billno=bx.BXGID order by AUDITTIME DESC ) audittime" ) ;
strSql . Append ( " ,(select showname from vw_user where userid=(select top 1 OP from workflow_using where bsno=bx.BXGID order by CREATETIME)) submitop" ) ;
strSql . Append ( " ,(select top 1 dbo.trimtime(CREATETIME) from workflow_using where bsno=bx.BXGID order by CREATETIME ) submittime" ) ;
strSql . Append ( " ,(case when EXISTS (select * from ch_Fee where BX.BXGID=BXGID and ISNULL(JKGID,'')<>'') then '借款' else '直接报销' end) isjk " ) ;
strSql . Append ( " ,dbo.[F_CHFEE_BX2remark](BXGID) FEEREMARK " ) ;
strSql . Append ( " ,VOUALLNO=isnull((select top 1 VOUALLNO from cw_vouno_bs_gl WITH(NOLOCK) where BSGID=BX.BXGID and BSTABLENAME='OA_Baoxiao' and STARTGID='" + strCwSTARTGID + "'),'')" ) ;
strSql . Append ( ",BX.SALECORPID,(select [NAME] from [company] where GID=BX.SALECORPID) as SALECORP,ISREVINV" ) ;
strSql . Append ( " FROM vw_Baoxiao BX " ) ;
strSql . Append ( " where (bx.isdelete=0 or bx.isdelete is null) " ) ;
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 string GetDataListStr ( string strCondition , string userid , string username , string corpid , string sort = null )
{
var rangstr = GetListRangDAStr ( "BXLIST" , userid , username , corpid ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
string strCwSTARTGID = BasicDataRefDAL . GetCwSTARTGID ( userid ) ;
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select BXGID,bx.BSNO,COMPANY,DEPTNAME,CREATEUSER,BXNO,BX.JKTYPE,BX.JKREASON,BX.JJNO,BX.JJDATE " ) ;
strSql . Append ( " ,dbo.trimdate(CREATEDATE) CREATEDATE " ) ;
strSql . Append ( " ,bx.ISDELETE,bx.DELETEUSER,bx.DELETETIME,BXSTATUS,REMARK,AMOUNT " ) ;
strSql . Append ( " ,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=bx.bxstatus) as bxstatus_Ref " ) ;
strSql . Append ( " ,CHEQUENO,CHEQUEAMOUNT,BX.ISVOU,(case BX.ISVOU when 1 then '是' else '否' end) ISVOU_REF,BX.VOUCHERNO " ) ;
strSql . Append ( " ,(case (select isnull(sum(obp.amount),0) from OA_Baoxiao_Pay obp where obp.BXGID=bx.BXGID) " ) ;
strSql . Append ( " when isnull(bx.amount,0) then '是' else '否' end) ISPAYED " ) ;
strSql . Append ( " ,BX.RMBAMOUNT,BX.USDAMOUNT,BX.OTHERAMOUNT" ) ;
strSql . Append ( " ,(select showname from vw_user where userid=(select top 1 auditor from workflow_do where billno=bx.BXGID order by AUDITTIME DESC )) auditor" ) ;
strSql . Append ( " ,(select top 1 dbo.trimtime(AUDITTIME) from workflow_do where billno=bx.BXGID order by AUDITTIME DESC ) audittime" ) ;
strSql . Append ( " ,(select showname from vw_user where userid=(select top 1 OP from workflow_using where bsno=bx.BXGID order by CREATETIME)) submitop" ) ;
strSql . Append ( " ,(select top 1 dbo.trimtime(CREATETIME) from workflow_using where bsno=bx.BXGID order by CREATETIME ) submittime" ) ;
strSql . Append ( " ,(case when EXISTS (select * from ch_Fee where BX.BXGID=BXGID and ISNULL(JKGID,'')<>'') then '借款' else '直接报销' end) isjk " ) ;
strSql . Append ( " ,dbo.[F_CHFEE_BX2remark](BXGID) FEEREMARK " ) ;
strSql . Append ( " ,VOUALLNO=isnull((select top 1 VOUALLNO from cw_vouno_bs_gl WITH(NOLOCK) where BSGID=BX.BXGID and BSTABLENAME='OA_Baoxiao' and STARTGID='" + strCwSTARTGID + "'),'')" ) ;
strSql . Append ( ",BX.SALECORPID,(select [NAME] from [company] where GID=BX.SALECORPID) as SALECORP,ISREVINV" ) ;
strSql . Append ( " FROM vw_Baoxiao BX " ) ;
strSql . Append ( " where (bx.isdelete=0 or bx.isdelete is null) " ) ;
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 strSql . ToString ( ) ;
}
static public List < Baoxiao2mb > GetZCDataList ( string strCondition , string USERID , string sort = null )
{
string strCwSTARTGID = BasicDataRefDAL . GetCwSTARTGID ( USERID ) ;
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select BXGID,bx.BSNO,COMPANY,DEPTNAME,CREATEUSER,BXNO,BX.JKTYPE,BX.JKREASON,BX.JJNO,BX.JJDATE " ) ;
strSql . Append ( " ,dbo.trimdate(CREATEDATE) CREATEDATE " ) ;
strSql . Append ( " ,bx.ISDELETE,bx.DELETEUSER,bx.DELETETIME,BXSTATUS,REMARK,AMOUNT " ) ;
strSql . Append ( " ,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=bx.bxstatus) as bxstatus_Ref " ) ;
strSql . Append ( " ,CHEQUENO,CHEQUEAMOUNT,BX.ISVOU,(case BX.ISVOU when 1 then '是' else '否' end) ISVOU_REF,BX.VOUCHERNO " ) ;
strSql . Append ( " ,(case (select isnull(sum(obp.amount),0) from OA_Baoxiao_Pay obp where obp.BXGID=bx.BXGID) " ) ;
strSql . Append ( " when isnull(bx.amount,0) then '是' else '否' end) ISPAYED " ) ;
strSql . Append ( " ,BX.RMBAMOUNT,BX.USDAMOUNT,BX.OTHERAMOUNT" ) ;
strSql . Append ( " ,(select showname from vw_user where userid=(select top 1 auditor from workflow_do where billno=bx.BXGID order by AUDITTIME DESC )) auditor" ) ;
strSql . Append ( " ,(select top 1 dbo.trimtime(AUDITTIME) from workflow_do where billno=bx.BXGID order by AUDITTIME DESC ) audittime" ) ;
strSql . Append ( " ,'' submitop" ) ;
strSql . Append ( " ,'' submittime" ) ;
strSql . Append ( " ,(case when EXISTS (select * from ch_Fee where BX.BXGID=BXGID and ISNULL(JKGID,'')<>'') then '借款' else '直接报销' end) isjk " ) ;
strSql . Append ( " ,dbo.[F_CHFEE_BX2remark](BXGID) FEEREMARK " ) ;
strSql . Append ( " ,VOUALLNO=isnull((select top 1 VOUALLNO from cw_vouno_bs_gl WITH(NOLOCK) where BSGID=BX.BXGID and BSTABLENAME='OA_Baoxiao' and STARTGID='" + strCwSTARTGID + "'),'')" ) ;
strSql . Append ( ",BX.SALECORPID,(select [NAME] from [company] where GID=BX.SALECORPID) as SALECORP,ISREVINV" ) ;
strSql . Append ( " FROM vw_Baoxiao BX " ) ;
strSql . Append ( " where (bx.isdelete=0 or bx.isdelete is null) " ) ;
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 Baoxiao2mb GetData ( string condition , string userid , string username , string corpid )
{
var list = GetDataList ( condition , userid , username , corpid ) ;
if ( list . Count > 0 )
return list [ 0 ] ;
return new Baoxiao2mb ( ) ;
}
private static List < Baoxiao2mb > SetData ( StringBuilder strSql )
{
var headList = new List < Baoxiao2mb > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
Baoxiao2mb data = new Baoxiao2mb ( ) ;
#region Set DB data to Object
data . BXGID = Convert . ToString ( reader [ "BXGID" ] ) ;
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . COMPANY = Convert . ToString ( reader [ "COMPANY" ] ) ;
data . DEPTNAME = Convert . ToString ( reader [ "DEPTNAME" ] ) ;
data . CREATEUSER = Convert . ToString ( reader [ "CREATEUSER" ] ) ;
data . CREATEDATE = Convert . ToString ( reader [ "CREATEDATE" ] ) ;
data . ISDELETE = Convert . ToString ( reader [ "ISDELETE" ] ) ;
data . DELETEUSER = Convert . ToString ( reader [ "DELETEUSER" ] ) ;
data . DELETETIME = Convert . ToString ( reader [ "DELETETIME" ] ) ;
data . BXSTATUS = Convert . ToString ( reader [ "BXSTATUS" ] ) ;
data . BXSTATUS_REF = Convert . ToString ( reader [ "BXSTATUS_REF" ] ) ;
data . REMARK = Convert . ToString ( reader [ "REMARK" ] ) ;
data . AMOUNT = Convert . ToString ( reader [ "AMOUNT" ] ) ;
data . CHEQUENO = Convert . ToString ( reader [ "CHEQUENO" ] ) ;
data . CHEQUEAMOUNT = Convert . ToString ( reader [ "CHEQUEAMOUNT" ] ) ;
data . ISVOU_REF = Convert . ToString ( reader [ "ISVOU_REF" ] ) ;
data . VOUCHERNO = Convert . ToString ( reader [ "VOUCHERNO" ] ) ;
data . BXNO = Convert . ToString ( reader [ "BXNO" ] ) ;
data . ISPAYED = Convert . ToString ( reader [ "ISPAYED" ] ) ;
data . RMBAMOUNT = Convert . ToString ( reader [ "RMBAMOUNT" ] ) ;
data . USDAMOUNT = Convert . ToString ( reader [ "USDAMOUNT" ] ) ;
data . OTHERAMOUNT = Convert . ToString ( reader [ "OTHERAMOUNT" ] ) ;
data . AUDITOR = Convert . ToString ( reader [ "AUDITOR" ] ) ;
data . AUDITTIME = Convert . ToString ( reader [ "AUDITTIME" ] ) ;
data . SUBMITOP = Convert . ToString ( reader [ "submitop" ] ) ;
data . SUBMITTIME = Convert . ToString ( reader [ "submittime" ] ) ;
data . ISJK = Convert . ToString ( reader [ "ISJK" ] ) ;
data . FEEREMARK = Convert . ToString ( reader [ "FEEREMARK" ] ) ;
data . VOUALLNO = Convert . ToString ( reader [ "VOUALLNO" ] ) ;
data . JKTYPE = Convert . ToString ( reader [ "JKTYPE" ] ) ;
data . JKREASON = Convert . ToString ( reader [ "JKREASON" ] ) ;
data . JJNO = Convert . ToString ( reader [ "JJNO" ] ) ;
data . SALECORPID = Convert . ToString ( reader [ "SALECORPID" ] ) ;
data . SALECORP = Convert . ToString ( reader [ "SALECORP" ] ) ;
if ( reader [ "JJDATE" ] ! = DBNull . Value )
data . JJDATE = Convert . ToDateTime ( reader [ "JJDATE" ] ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ; //截港日期
if ( reader [ "ISREVINV" ] ! = DBNull . Value )
data . ISREVINV = Convert . ToBoolean ( reader [ "ISREVINV" ] ) ; //截港日期
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
public static string GetListRangDAStr ( string modustr , string userid , string username , string companyid )
{
string str = "" ;
//string modustr = "";
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT " ) ;
strSql . Append ( " VISIBLERANGE,OPERATERANGE,AUTHORITYID,VSSQL " ) ;
strSql . Append ( " from VW_User_Authority " ) ;
strSql . Append ( " where [NAME]='" + modustr + "' and USERID='" + userid + "' and ISDELETE=0" ) ;
string visiblerange = "4" ;
string operaterange = "4" ;
string AUTHORITYID = "" ;
string VSSQL = "" ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
visiblerange = Convert . ToString ( reader [ "VISIBLERANGE" ] ) ;
operaterange = Convert . ToString ( reader [ "OPERATERANGE" ] ) ;
AUTHORITYID = Convert . ToString ( reader [ "AUTHORITYID" ] ) ;
VSSQL = Convert . ToString ( reader [ "VSSQL" ] ) ;
break ;
}
reader . Close ( ) ;
}
if ( visiblerange = = "4" )
{
str = " BX.CREATEUSER='" + username + "'" ;
}
else if ( visiblerange = = "3" )
{
str = " BX.CREATEUSER='" + username + "'" ;
}
else if ( visiblerange = = "2" )
{
var rangeDa = new RangeDA ( ) ;
var deptname = rangeDa . GetDEPTNAME ( userid ) ;
str = " BX.CREATEUSER in (select showname from vw_user where COMPANYID='" + companyid + "') " ;
}
else if ( visiblerange = = "1" )
{
str = " BX.CREATEUSER in (select showname from vw_user where COMPANYID='" + companyid + "') " ;
}
else if ( visiblerange = = "5" )
{
str = " BX.CREATEUSER in (select showname from vw_user where COMPANYID in (select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1)) " ;
//var userstr = new StringBuilder();
//userstr.Append(" select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1");
//Database userdb = DatabaseFactory.CreateDatabase();
//using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString()))
//{
// str = "";
// while (reader.Read())
// {
// if (str == "")
// {
// str = " COMPANYID='" + companyid + "' ";
// }
// else
// {
// str = str + " or COMPANYID='" + companyid + "' ";
// };
// }
// str = str + ")";
// reader.Close();
//}
}
else if ( visiblerange = = "6" )
{
str = " EXISTS (select 1 from user_authority_range_op P left join [user] u on (u.GID=P.OPID) where (BX.CREATEUSER=U.SHOWNAME ) AND P.userid='" + userid + "' and P.AUTHORITYID='" + AUTHORITYID + "' and P.VISIBLERANGE=1) " ;
}
else if ( visiblerange = = "0" )
{
str = " 1=1 " ;
}
VSSQL = VSSQL . Trim ( ) ;
if ( ! string . IsNullOrEmpty ( VSSQL ) )
{
if ( ! string . IsNullOrEmpty ( str ) )
{
str = str + " and (" + VSSQL + ") " ;
}
else
{
str = " (" + VSSQL + ") " ;
}
}
return str ;
}
# endregion
# region
static public List < BaoXiao2Bodymb > GetBaoXiao2Body ( string condition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select GID,JKGID,BXGID,BSNO,FEEDESCRIPTION,PaymentGID,CARGO_GID " ) ;
strSql . Append ( " ,FEETYPE,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=FeeType) FEETYPE_REF " ) ;
strSql . Append ( " ,FEESTATUS,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=FeeStatus) FEESTATUS_REF " ) ;
strSql . Append ( " ,SALESNO,FEENAME,CURRENCY,AMOUNT,NOTAXAMOUNT,CUSTOMERNAME,MODIFIEDUSER,MODIFIEDTIME,Remark,Settlement,INVOICENUM,TAXRATE " ) ;
strSql . Append ( " ,(select showname from vw_user where userid=(select enteroperator from oa_jiekuan where GID=c.JKGID)) JKNAME" ) ;
strSql . Append ( " ,(select dbo.trimdate(enterdate) from oa_jiekuan where GID=c.JKGID) JKDATE" ) ;
strSql . Append ( " ,case isnull(c.REASON,'') when '' then (select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=36 and EnumValueID=(select JKTYPE from oa_jiekuan where GID=c.JKGID)) else c.REASON end JKTYPE_REF" ) ;
strSql . Append ( " ,(SELECT TOP 1 MBLNO FROM V_OP_BILL WHERE BSNO=C.BSNO) MBLNO " ) ;
strSql . Append ( " from ch_fee c " ) ;
if ( ! string . IsNullOrEmpty ( condition ) )
{
strSql . Append ( " where " + condition ) ;
}
return SetJieKuan2Body ( strSql ) ;
}
static public List < BaoXiao2Bodymb > GetBaoXiaoZCBody ( string condition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select GID,JKGID,BXGID,BSNO,FEEDESCRIPTION,PaymentGID,CARGO_GID " ) ;
strSql . Append ( " ,FEETYPE,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=FeeType) FEETYPE_REF " ) ;
strSql . Append ( " ,FEESTATUS,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=FeeStatus) FEESTATUS_REF " ) ;
strSql . Append ( " ,SALESNO,FEENAME,CURRENCY,AMOUNT,NOTAXAMOUNT,CUSTOMERNAME,MODIFIEDUSER,MODIFIEDTIME,Remark,Settlement,INVOICENUM,TAXRATE " ) ;
strSql . Append ( " ,(select showname from vw_user where userid=(select enteroperator from oa_jiekuan where GID=c.JKGID)) JKNAME" ) ;
strSql . Append ( " ,(select dbo.trimdate(enterdate) from oa_jiekuan where GID=c.JKGID) JKDATE" ) ;
strSql . Append ( " ,case isnull(c.REASON,'') when '' then (select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=36 and EnumValueID=(select JKTYPE from oa_jiekuan where GID=c.JKGID)) else c.REASON end JKTYPE_REF" ) ;
strSql . Append ( " ,(SELECT TOP 1 MBLNO FROM V_OP_BILL WHERE BSNO=C.PaymentGID) MBLNO " ) ;
strSql . Append ( " from ch_fee c " ) ;
if ( ! string . IsNullOrEmpty ( condition ) )
{
strSql . Append ( " where " + condition ) ;
}
return SetJieKuan2Body ( strSql ) ;
}
private static List < BaoXiao2Bodymb > SetJieKuan2Body ( StringBuilder strSql )
{
var headList = new List < BaoXiao2Bodymb > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
BaoXiao2Bodymb data = new BaoXiao2Bodymb ( ) ;
#region Set DB data to Object
data . GID = Convert . ToString ( reader [ "GID" ] ) ;
data . JKGID = Convert . ToString ( reader [ "JKGID" ] ) ;
data . BXGID = Convert . ToString ( reader [ "BXGID" ] ) ;
data . PaymentGID = Convert . ToString ( reader [ "PaymentGID" ] ) ;
data . CARGO_GID = Convert . ToString ( reader [ "CARGO_GID" ] ) ;
data . FEETYPE = Convert . ToString ( reader [ "FEETYPE" ] ) ;
data . FEETYPE_REF = Convert . ToString ( reader [ "FEETYPE_REF" ] ) ;
data . FEESTATUS = Convert . ToString ( reader [ "FEESTATUS" ] ) ;
data . FEESTATUS_REF = Convert . ToString ( reader [ "FEESTATUS_REF" ] ) ;
data . SALESNO = Convert . ToString ( reader [ "SALESNO" ] ) ;
data . FEENAME = Convert . ToString ( reader [ "FEENAME" ] ) ;
data . CURRENCY = Convert . ToString ( reader [ "CURRENCY" ] ) ;
if ( reader [ "AMOUNT" ] ! = DBNull . Value )
data . AMOUNT = Convert . ToDecimal ( reader [ "AMOUNT" ] ) ;
if ( reader [ "NOTAXAMOUNT" ] ! = DBNull . Value )
data . NOTAXAMOUNT = Convert . ToDecimal ( reader [ "NOTAXAMOUNT" ] ) ;
data . MODIFIEDUSER = Convert . ToString ( reader [ "MODIFIEDUSER" ] ) ;
data . MODIFIEDTIME = Convert . ToString ( reader [ "MODIFIEDTIME" ] ) ;
data . Remark = Convert . ToString ( reader [ "Remark" ] ) ;
data . JKNAME = Convert . ToString ( reader [ "JKNAME" ] ) ;
data . JKDATE = Convert . ToString ( reader [ "JKDATE" ] ) ;
data . JKTYPE_REF = Convert . ToString ( reader [ "JKTYPE_REF" ] ) ;
data . SETTLEMENT = Convert . ToDecimal ( reader [ "SETTLEMENT" ] ) ;
data . INVOICENUM = Convert . ToString ( reader [ "INVOICENUM" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . CUSTOMERNAME = Convert . ToString ( reader [ "CUSTOMERNAME" ] ) ;
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . FEEDESCRIPTION = Convert . ToString ( reader [ "FEEDESCRIPTION" ] ) ;
if ( reader [ "TAXRATE" ] ! = DBNull . Value )
data . TAXRATE = Convert . ToDecimal ( reader [ "TAXRATE" ] ) ;
if ( data . TAXRATE = = 0 )
data . TAX = 0 ;
else
data . TAX = Math . Round ( data . AMOUNT - data . NOTAXAMOUNT , 2 , MidpointRounding . AwayFromZero ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
#region 审核用报销单列表
//报销单列表
static public List < BaoxiaoAuditmb > GetAuditDataList ( string strCondition , string workflowname , string corpid , string userid )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " declare @workflowname varchar(50),@corpid varchar(50),@userid varchar(50)" ) ;
strSql . Append ( " set @workflowname ='" + workflowname + "'" ) ;
strSql . Append ( " set @corpid ='" + corpid + "'" ) ;
strSql . Append ( " set @userid ='" + userid + "'" ) ;
strSql . Append ( " select BXGID,bx.BSNO,COMPANY,DEPTNAME,CREATEUSER,BXNO," ) ;
strSql . Append ( " case CREATEDATE when '1900-1-1' then '' else CONVERT(varchar, CREATEDATE, 120 ) end CREATEDATE " ) ;
strSql . Append ( " ,bx.ISDELETE,bx.DELETEUSER,bx.DELETETIME,BXSTATUS,REMARK,AMOUNT " ) ;
strSql . Append ( " ,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=bx.bxstatus) as bxstatus_Ref " ) ;
strSql . Append ( " ,CHEQUENO,CHEQUEAMOUNT,BX.ISVOU,(case BX.ISVOU when 1 then '是' else '否' end) ISVOU_REF,BX.VOUCHERNO " ) ;
strSql . Append ( " ,(case BX.ISVOU when 1 then '是' else '否' end) ISVOU_REF,BX.VOUCHERNO " ) ;
strSql . Append ( " ,(case (select isnull(sum(obp.amount),0) from OA_Baoxiao_Pay obp where obp.BXGID=bx.BXGID) " ) ;
strSql . Append ( " when isnull(bx.amount,0) then '是' else '否' end) ISPAYED " ) ;
strSql . Append ( " ,dbo.[GetUsingStep](wu.workflowid,wu.currentid,@userid,wu.stepno) usingStep,wu.workflowid " ) ;
strSql . Append ( " FROM OA_Baoxiao BX left join workflow_using wu on wu.bsno=bx.bxgid " ) ;
strSql . Append ( " where (bx.isdelete=0 or bx.isdelete is null) " ) ;
//strSql.Append(" and dbo.[GetUsingStep](@workflowname,@corpid,wu.currentid,@userid,wu.stepno)<>0 ");
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
return SetAuditData ( strSql ) ;
}
//static public Baoxiaomb GetAuditData(string condition, string USERID)
//{
// var list = GetDataList(condition, USERID);
// if (list.Count > 0)
// return list[0];
// return new Baoxiaomb();
//}
private static List < BaoxiaoAuditmb > SetAuditData ( StringBuilder strSql )
{
var headList = new List < BaoxiaoAuditmb > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
BaoxiaoAuditmb data = new BaoxiaoAuditmb ( ) ;
#region Set DB data to Object
data . BXGID = Convert . ToString ( reader [ "BXGID" ] ) ;
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . COMPANY = Convert . ToString ( reader [ "COMPANY" ] ) ;
data . DEPTNAME = Convert . ToString ( reader [ "DEPTNAME" ] ) ;
data . CREATEUSER = Convert . ToString ( reader [ "CREATEUSER" ] ) ;
data . CREATEDATE = Convert . ToString ( reader [ "CREATEDATE" ] ) ;
data . ISDELETE = Convert . ToString ( reader [ "ISDELETE" ] ) ;
data . DELETEUSER = Convert . ToString ( reader [ "DELETEUSER" ] ) ;
data . DELETETIME = Convert . ToString ( reader [ "DELETETIME" ] ) ;
data . BXSTATUS = Convert . ToString ( reader [ "BXSTATUS" ] ) ;
data . BXSTATUS_REF = Convert . ToString ( reader [ "BXSTATUS_REF" ] ) ;
data . REMARK = Convert . ToString ( reader [ "REMARK" ] ) ;
data . AMOUNT = Convert . ToString ( reader [ "AMOUNT" ] ) ;
data . CHEQUENO = Convert . ToString ( reader [ "CHEQUENO" ] ) ;
data . CHEQUEAMOUNT = Convert . ToString ( reader [ "CHEQUEAMOUNT" ] ) ;
data . ISVOU_REF = Convert . ToString ( reader [ "ISVOU_REF" ] ) ;
data . VOUCHERNO = Convert . ToString ( reader [ "VOUCHERNO" ] ) ;
data . BXNO = Convert . ToString ( reader [ "BXNO" ] ) ;
data . ISPAYED = Convert . ToString ( reader [ "ISPAYED" ] ) ;
data . USINGSTEP = Convert . ToString ( reader [ "USINGSTEP" ] ) ;
data . WORKFLOWID = Convert . ToString ( reader [ "WORKFLOWID" ] ) ;
//data.WORKFLOWUSING_GID = Convert.ToString(reader["WORKFLOWUSING_GID"]);
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
# endregion
static public List < BSNOmb > GetBSNO ( string COMPANYID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select bsno,CUSTNO,mblno,HBLNO,'' OPLB from V_op_bs " ) ;
strSql . Append ( " where inputby in (select showname from [user] where gid in(select userid from user_company where companyid='" + COMPANYID + "' )) " ) ;
//feestatus=0 and
//strSql.Append(" union all ");
//strSql.Append(" select bsno,CUSTNO+'_'+mblno code,mblno from op_seai ");
//strSql.Append(" where feestatus=0 and inputby in (select showname from [user] where gid in(select userid from user_company where companyid='" + COMPANYID + "' )) ");
//strSql.Append(" FROM OA_Baoxiao BX ");
return SetDataBSNO ( strSql ) ;
}
/ *
static public List < BSNOmb > GetAllBSNO ( string COMPANYID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select bsno,CUSTNO,mblno,OPLB from V_op_bs " ) ;
return SetDataBSNO ( strSql ) ;
} * /
static public List < BSNOmb > GetAllBSNO ( string condition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select bsno,CUSTNO,mblno,OPLB,HBLNO from V_op_bs where 1=1 " + condition + " " ) ;
return SetDataBSNO ( strSql ) ;
}
static public List < BSNOmb > GetTruckMBLNO ( string condition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select distinct mblno,HBLNO,'' BSNO,'' CUSTNO,'' OPLB from V_OP_BS " ) ;
return SetDataBSNO ( strSql ) ;
}
static public List < BSNOmb > GetTruckBSNO ( string condition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " select bsno, CUSTNO ,mblno,OPLB,HBLNO from V_OP_BS " ) ;
if ( ! string . IsNullOrEmpty ( condition ) )
{
strSql . Append ( condition ) ;
}
return SetDataBSNO ( strSql ) ;
}
private static List < BSNOmb > SetDataBSNO ( StringBuilder strSql )
{
var headList = new List < BSNOmb > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
BSNOmb data = new BSNOmb ( ) ;
#region Set DB data to Object
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . CUSTNO = Convert . ToString ( reader [ "CUSTNO" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . HBLNO = Convert . ToString ( reader [ "HBLNO" ] ) ;
data . OPLB = Convert . ToString ( reader [ "OPLB" ] ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
#region 查询费用数据
static public List < MsChFee > GetFeeList ( string strCondition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT " ) ;
strSql . Append ( " c.GId,c.BsNo,vs.MBLNO , c.FeeStatus,vs.CUSTNO, " ) ;
strSql . Append ( " (select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=c.FeeStatus) as FeeStatus_Ref " ) ;
strSql . Append ( " ,FeeType, (select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=c.FeeType) as FeeType_Ref " ) ;
strSql . Append ( " ,FeeName,(select NAME from vMsTruckFeeType where NAME=c.FeeName) as FeeName_Ref " ) ;
strSql . Append ( " ,FeeDescription,CustomerType,c.CustomerName, " ) ;
strSql . Append ( " (select top 1 CustName from vMsTruckClient v where v.CustName=c.CustomerName) as CustomerName_Ref " ) ;
strSql . Append ( " ,Unit,UnitPrice,Quantity,Amount,Currency,ExChangerate,Reason " ) ;
strSql . Append ( " ,Remark,Commissionrate,Settlement,Invoice,OrderAmount,OrderInvoice,SubmitDate " ) ;
strSql . Append ( " ,Auditoperator,AuditDate,EnteroPerator,EnterDate,DebitNo,IsDebit,IsOpen " ) ;
strSql . Append ( " ,IsAdvancedpay,Sort,IsInvoice,FeeFrt,IsCrmOrderFee,AuditStatus,InvoiceNum " ) ;
strSql . Append ( " ,ChequeNum,WmsOutBsNo,c.BXGID,C.TAX,C.TAXRATE,C.NOTAXAMOUNT,C.reason,C.CHEQUENUM,C.ISOPEN, " ) ;
strSql . Append ( " case c.isopen when 1 then '是' else '否' end ISOPEN_REF " ) ;
strSql . Append ( " from ch_fee c left join v_op_bs vs on vs.bsno=c.bsno " ) ;
if ( strCondition . Trim ( ) ! = String . Empty )
{
strSql . Append ( " where " + strCondition ) ;
}
return SetFeeData ( strSql ) ;
}
static public List < MsChFeeAmount > GetAmountList ( string strCondition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT " ) ;
strSql . Append ( " c.GId,c.BsNo,vs.MBLNO , c.FeeStatus,vs.CUSTNO, " ) ;
strSql . Append ( " (select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=c.FeeStatus) as FeeStatus_Ref " ) ;
strSql . Append ( " ,FeeType, (select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99020 and EnumValueID=c.FeeType) as FeeType_Ref " ) ;
strSql . Append ( " ,FeeName,(select NAME from vMsTruckFeeType where NAME=c.FeeName) as FeeName_Ref " ) ;
strSql . Append ( " ,FeeDescription,CustomerType,c.CustomerName, " ) ;
strSql . Append ( " (select top 1 CustName from vMsTruckClient v where v.CustName=c.CustomerName) as CustomerName_Ref " ) ;
strSql . Append ( " ,Unit,UnitPrice,Quantity,Amount,Currency,ExChangerate,Reason " ) ;
strSql . Append ( " ,Remark,Commissionrate,Settlement,Invoice,OrderAmount,OrderInvoice,SubmitDate " ) ;
strSql . Append ( " ,Auditoperator,AuditDate,EnteroPerator,EnterDate,DebitNo,IsDebit,IsOpen " ) ;
strSql . Append ( " ,IsAdvancedpay,Sort,IsInvoice,FeeFrt,IsCrmOrderFee,AuditStatus,InvoiceNum " ) ;
strSql . Append ( " ,ChequeNum,WmsOutBsNo,c.BXGID,C.TAX,C.TAXRATE,C.NOTAXAMOUNT,C.reason,C.CHEQUENUM,C.ISOPEN, " ) ;
strSql . Append ( " case c.isopen when 1 then '是' else '否' end ISOPEN_REF,c.feeName+'_'+convert(varchar(50),c.Amount) as FeeNameAmount " ) ;
strSql . Append ( " from ch_fee c left join vw_settlement vs on vs.bsno=c.bsno " ) ;
if ( strCondition . Trim ( ) ! = String . Empty )
{
strSql . Append ( " where " + strCondition ) ;
}
return SetAmountData ( strSql ) ;
}
private static List < MsChFee > SetFeeData ( StringBuilder strSql )
{
var bodyList = new List < MsChFee > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
MsChFee data = new MsChFee ( ) ;
#region Set DB data to Object
data . GId = Convert . ToString ( reader [ "GId" ] ) ;
data . BsNo = Convert . ToString ( reader [ "BsNo" ] ) ;
data . CUSTNO = Convert . ToString ( reader [ "CUSTNO" ] ) ;
data . FeeStatus = Convert . ToDecimal ( reader [ "FeeStatus" ] ) ;
data . FeeStatus_Ref = Convert . ToString ( reader [ "FeeStatus_Ref" ] ) ;
data . FeeType = Convert . ToDecimal ( reader [ "FeeType" ] ) ;
data . FeeType_Ref = Convert . ToString ( reader [ "FeeType_Ref" ] ) ;
data . FeeName = Convert . ToString ( reader [ "FeeName" ] ) ;
data . FeeName_Ref = Convert . ToString ( reader [ "FeeName_Ref" ] ) ;
data . FeeDescription = Convert . ToString ( reader [ "FeeDescription" ] ) ;
data . CustomerType = Convert . ToString ( reader [ "CustomerType" ] ) ;
data . CustomerName = Convert . ToString ( reader [ "CustomerName" ] ) ;
data . CustomerName_Ref = Convert . ToString ( reader [ "CustomerName_Ref" ] ) ;
data . Unit = Convert . ToString ( reader [ "Unit" ] ) ;
data . UnitPrice = Convert . ToDecimal ( reader [ "UnitPrice" ] ) ;
data . Quantity = Convert . ToDecimal ( reader [ "Quantity" ] ) ;
data . Amount = Convert . ToDecimal ( reader [ "Amount" ] ) ;
data . TAX = Convert . ToString ( reader [ "TAX" ] ) ;
data . Taxrate = Convert . ToDecimal ( reader [ "TAXRATE" ] ) ;
data . NOTAXAMOUNT = Convert . ToString ( reader [ "NOTAXAMOUNT" ] ) ;
data . Currency = Convert . ToString ( reader [ "Currency" ] ) ;
data . ExChangerate = Convert . ToDecimal ( reader [ "ExChangerate" ] ) ;
data . Reason = Convert . ToString ( reader [ "Reason" ] ) ;
data . Remark = Convert . ToString ( reader [ "Remark" ] ) ;
data . Commissionrate = Convert . ToDecimal ( reader [ "Commissionrate" ] ) ;
data . Settlement = Convert . ToDecimal ( reader [ "Settlement" ] ) ;
if ( reader [ "Invoice" ] ! = DBNull . Value )
data . Invoice = Convert . ToDecimal ( reader [ "Invoice" ] ) ;
data . OrderAmount = Convert . ToDecimal ( reader [ "OrderAmount" ] ) ;
data . OrderInvoice = Convert . ToDecimal ( reader [ "OrderInvoice" ] ) ;
if ( reader [ "SubmitDate" ] ! = DBNull . Value )
data . SubmitDate = Convert . ToDateTime ( reader [ "SubmitDate" ] ) ;
data . Auditoperator = Convert . ToString ( reader [ "Auditoperator" ] ) ;
if ( reader [ "AuditDate" ] ! = DBNull . Value )
data . AuditDate = Convert . ToDateTime ( reader [ "AuditDate" ] ) ;
data . EnteroPerator = Convert . ToString ( reader [ "EnteroPerator" ] ) ;
if ( reader [ "EnterDate" ] ! = DBNull . Value )
data . EnterDate = Convert . ToDateTime ( reader [ "EnterDate" ] ) ;
data . DebitNo = Convert . ToString ( reader [ "DebitNo" ] ) ;
data . IsDebit = Convert . ToString ( reader [ "IsDebit" ] ) ;
data . IsOpen = Convert . ToString ( reader [ "IsOpen" ] ) ;
data . IsAdvancedpay = Convert . ToString ( reader [ "IsAdvancedpay" ] ) ;
data . Sort = Convert . ToString ( reader [ "Sort" ] ) ;
data . IsInvoice = Convert . ToString ( reader [ "IsInvoice" ] ) ;
data . FeeFrt = Convert . ToString ( reader [ "FeeFrt" ] ) ;
data . IsCrmOrderFee = Convert . ToString ( reader [ "IsCrmOrderFee" ] ) ;
data . AuditStatus = Convert . ToDecimal ( reader [ "AuditStatus" ] ) ;
data . InvoiceNum = Convert . ToString ( reader [ "InvoiceNum" ] ) ;
data . ChequeNum = Convert . ToString ( reader [ "ChequeNum" ] ) ;
data . WmsOutBsNo = Convert . ToString ( reader [ "WmsOutBsNo" ] ) ;
data . BXGID = Convert . ToString ( reader [ "BXGID" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . Reason = Convert . ToString ( reader [ "Reason" ] ) ;
data . CHEQUENUM = Convert . ToString ( reader [ "CHEQUENUM" ] ) ;
data . IsOpen = Convert . ToString ( reader [ "IsOpen" ] ) ;
data . IsOpen_REF = Convert . ToString ( reader [ "IsOpen_REF" ] ) ;
# endregion
bodyList . Add ( data ) ;
}
reader . Close ( ) ;
}
return bodyList ;
}
private static List < MsChFeeAmount > SetAmountData ( StringBuilder strSql )
{
var bodyList = new List < MsChFeeAmount > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
MsChFeeAmount data = new MsChFeeAmount ( ) ;
#region Set DB data to Object
data . GId = Convert . ToString ( reader [ "GId" ] ) ;
data . BsNo = Convert . ToString ( reader [ "BsNo" ] ) ;
data . CUSTNO = Convert . ToString ( reader [ "CUSTNO" ] ) ;
data . FeeStatus = Convert . ToDecimal ( reader [ "FeeStatus" ] ) ;
data . FeeStatus_Ref = Convert . ToString ( reader [ "FeeStatus_Ref" ] ) ;
data . FeeType = Convert . ToDecimal ( reader [ "FeeType" ] ) ;
data . FeeType_Ref = Convert . ToString ( reader [ "FeeType_Ref" ] ) ;
data . FeeName = Convert . ToString ( reader [ "FeeName" ] ) ;
data . FeeName_Ref = Convert . ToString ( reader [ "FeeName_Ref" ] ) ;
data . FeeDescription = Convert . ToString ( reader [ "FeeDescription" ] ) ;
data . CustomerType = Convert . ToString ( reader [ "CustomerType" ] ) ;
data . CustomerName = Convert . ToString ( reader [ "CustomerName" ] ) ;
data . CustomerName_Ref = Convert . ToString ( reader [ "CustomerName_Ref" ] ) ;
data . Unit = Convert . ToString ( reader [ "Unit" ] ) ;
data . UnitPrice = Convert . ToDecimal ( reader [ "UnitPrice" ] ) ;
data . Quantity = Convert . ToDecimal ( reader [ "Quantity" ] ) ;
data . Amount = Convert . ToDecimal ( reader [ "Amount" ] ) ;
data . TAX = Convert . ToString ( reader [ "TAX" ] ) ;
data . Taxrate = Convert . ToDecimal ( reader [ "TAXRATE" ] ) ;
data . NOTAXAMOUNT = Convert . ToString ( reader [ "NOTAXAMOUNT" ] ) ;
data . Currency = Convert . ToString ( reader [ "Currency" ] ) ;
data . ExChangerate = Convert . ToDecimal ( reader [ "ExChangerate" ] ) ;
data . Reason = Convert . ToString ( reader [ "Reason" ] ) ;
data . Remark = Convert . ToString ( reader [ "Remark" ] ) ;
data . Commissionrate = Convert . ToDecimal ( reader [ "Commissionrate" ] ) ;
data . Settlement = Convert . ToDecimal ( reader [ "Settlement" ] ) ;
if ( reader [ "Invoice" ] ! = DBNull . Value )
data . Invoice = Convert . ToDecimal ( reader [ "Invoice" ] ) ;
data . OrderAmount = Convert . ToDecimal ( reader [ "OrderAmount" ] ) ;
data . OrderInvoice = Convert . ToDecimal ( reader [ "OrderInvoice" ] ) ;
if ( reader [ "SubmitDate" ] ! = DBNull . Value )
data . SubmitDate = Convert . ToDateTime ( reader [ "SubmitDate" ] ) ;
data . Auditoperator = Convert . ToString ( reader [ "Auditoperator" ] ) ;
if ( reader [ "AuditDate" ] ! = DBNull . Value )
data . AuditDate = Convert . ToDateTime ( reader [ "AuditDate" ] ) ;
data . EnteroPerator = Convert . ToString ( reader [ "EnteroPerator" ] ) ;
if ( reader [ "EnterDate" ] ! = DBNull . Value )
data . EnterDate = Convert . ToDateTime ( reader [ "EnterDate" ] ) ;
data . DebitNo = Convert . ToString ( reader [ "DebitNo" ] ) ;
data . IsDebit = Convert . ToString ( reader [ "IsDebit" ] ) ;
data . IsOpen = Convert . ToString ( reader [ "IsOpen" ] ) ;
data . IsAdvancedpay = Convert . ToString ( reader [ "IsAdvancedpay" ] ) ;
data . Sort = Convert . ToString ( reader [ "Sort" ] ) ;
data . IsInvoice = Convert . ToString ( reader [ "IsInvoice" ] ) ;
data . FeeFrt = Convert . ToString ( reader [ "FeeFrt" ] ) ;
data . IsCrmOrderFee = Convert . ToString ( reader [ "IsCrmOrderFee" ] ) ;
data . AuditStatus = Convert . ToDecimal ( reader [ "AuditStatus" ] ) ;
data . InvoiceNum = Convert . ToString ( reader [ "InvoiceNum" ] ) ;
data . ChequeNum = Convert . ToString ( reader [ "ChequeNum" ] ) ;
data . WmsOutBsNo = Convert . ToString ( reader [ "WmsOutBsNo" ] ) ;
data . BXGID = Convert . ToString ( reader [ "BXGID" ] ) ;
data . MBLNO = Convert . ToString ( reader [ "MBLNO" ] ) ;
data . Reason = Convert . ToString ( reader [ "Reason" ] ) ;
data . CHEQUENUM = Convert . ToString ( reader [ "CHEQUENUM" ] ) ;
data . IsOpen = Convert . ToString ( reader [ "IsOpen" ] ) ;
data . IsOpen_REF = Convert . ToString ( reader [ "IsOpen_REF" ] ) ;
data . FeeNameAmount = Convert . ToString ( reader [ "FeeNameAmount" ] ) ;
# endregion
bodyList . Add ( data ) ;
}
reader . Close ( ) ;
}
return bodyList ;
}
# endregion
#region 查询支付数据
static public List < BXPaymb > GetPayList ( string BXGID , string USERID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " SELECT *, " ) ;
strSql . Append ( " (select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=26 and EnumValueID=obp.settlementtype) as settlementtype_Ref " ) ;
strSql . Append ( " ,(select top 1 accname from cw_accitems_gl where accid=OPERATORSIDE_gl and startgid=(select top 1 startgid from [cw_design_startusing_user] where usergid='" + USERID + "')) OPERATORSIDE_gl_REF" ) ;
strSql . Append ( " from OA_Baoxiao_Pay obp " ) ;
if ( BXGID . Trim ( ) ! = String . Empty )
{
strSql . Append ( " where BXGID='" + BXGID + "'" ) ;
}
return SetPayData ( strSql ) ;
}
private static List < BXPaymb > SetPayData ( StringBuilder strSql )
{
var bodyList = new List < BXPaymb > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
BXPaymb data = new BXPaymb ( ) ;
#region Set DB data to Object
data . GID = Convert . ToString ( reader [ "GID" ] ) ;
data . BXGID = Convert . ToString ( reader [ "BXGID" ] ) ;
data . SETTLEMENTTYPE = Convert . ToString ( reader [ "SETTLEMENTTYPE" ] ) ;
data . SETTLEMENTTYPE_REF = Convert . ToString ( reader [ "SETTLEMENTTYPE_REF" ] ) ;
data . TICKETNO = Convert . ToString ( reader [ "TICKETNO" ] ) ;
data . AMOUNT = Convert . ToString ( reader [ "AMOUNT" ] ) ;
data . REMARK = Convert . ToString ( reader [ "REMARK" ] ) ;
data . FINANCIALCODE = Convert . ToString ( reader [ "FINANCIALCODE" ] ) ;
data . OPERATORSIDE_gl = Convert . ToString ( reader [ "OPERATORSIDE_gl" ] ) ;
data . OPERATORSIDE_gl_REF = Convert . ToString ( reader [ "OPERATORSIDE_gl_REF" ] ) ;
# endregion
bodyList . Add ( data ) ;
}
reader . Close ( ) ;
}
return bodyList ;
}
# endregion
#region 提交申请
// 根据handle类型执行更新操作: 更新费用信息ch_fee.feestatus和工作流运行表WorkFlowDo信息
// 费用状态值 费用状态主要有11个状态,分别为
// 审核通过( STATUS=0) 录入状态( STATUS=1) 提交审核( STATUS=2) 申请修改 (STATUS=3)
// 取消申请(STATUS=5)驳回提交( STATUS=6) 驳回申请( STATUS=7) 部分结算( STATUS=8) 结算完毕( STATUS=9)
//List<C_Mmb> chfeeList
internal static DBResult Audit ( int newStatus , string WorkFlowName , /*string DEPTGID,*/ string USERID , string Reason , List < Baoxiaomb > BaoxiaoList )
{
var result = new DBResult ( ) ;
var islast = false ;
foreach ( var BX in BaoxiaoList )
{
islast = false ;
if ( WorkFlowDAL . GetWorkFlowFinal_BSNO ( WorkFlowName , BX . BXGID , USERID ) )
islast = true ;
var status = int . Parse ( BX . BXSTATUS ) ;
var canAudit = true ;
var BXGID = BX . BXGID ;
BX . WORKFLOWID = WorkFlowDAL . GetBSNOWorkFlowID ( WorkFlowName , BXGID ) [ 0 ] . GID ;
if ( newStatus = = 2 )
{
canAudit = status = = 1 | | status = = 6 ;
}
else if ( newStatus = = 0 )
{
canAudit = status = = 2 ;
}
else if ( newStatus = = 6 )
{
canAudit = status = = 0 | | status = = 2 ;
}
else if ( newStatus = = 8 | | newStatus = = 9 )
{
canAudit = status = = 0 ;
}
else if ( WorkFlowDAL . GetWorkFlowDo ( BX . WORKFLOWID , BX . BXGID ) ! = 0 )
{
canAudit = false ;
}
if ( ! canAudit )
{
result . Success = false ;
if ( newStatus = = 2 )
result . Message = "只有在'录入状态'和'驳回提交'状态下才能提交审核操作" ;
else if ( newStatus = = 0 )
{
result . Message = "只有在‘提交审核’状态下才能进行‘审核通过’操作" ;
}
else if ( newStatus = = 6 )
{
result . Message = "只有在‘审核通过’或‘提交审核’状态下才能进行此操作" ;
}
else if ( newStatus = = 8 | | newStatus = = 9 )
{
result . Message = "只有在‘审核通过’状态下才能进行此操作" ;
}
else if ( newStatus = = 1 )
{
result . Message = "只有未经审核的单据才能撤回" ;
}
return result ;
}
}
Database db = DatabaseFactory . CreateDatabase ( ) ;
//if ()
var updateSql = " update OA_Baoxiao set BXStatus=@BXStatus where BXGID=@BXGID " ;
if ( newStatus = = 0 )
{
updateSql = updateSql + " insert into ch_fee_do (gid,billno,bsno,mblno,customername,bstype,feeid,feename,currency, " ;
updateSql = updateSql + " amount,doamount,feetype,category,billstatus,createtime,exchangerate,origamount,companyid " ;
updateSql = updateSql + " )select newid(),BXGID,bsno,'',customername,2,gid,feename,currency, " ;
updateSql = updateSql + " amount,amount as doamount,2,8,1,getdate(),1,amount, " ;
updateSql = updateSql + " (select companyid from user_company uc where uc.userid=f.enteroperator) " ;
updateSql = updateSql + " from ch_fee f where bxgid=@BXGID " ;
if ( islast )
{
updateSql = updateSql + " update ch_fee set feestatus=9,orderamount=amount,settlement=amount where BXGID=@BXGID " ;
}
else
{
updateSql = updateSql + " update ch_fee set feestatus=2,orderamount=amount where BXGID=@BXGID " ;
}
foreach ( var BX in BaoxiaoList )
{
WorkFlowDAL . InsertWorkFlowDo ( WorkFlowName , BX . BXGID , USERID , BX . BXNO ) ;
}
}
else if ( newStatus = = 6 )
{
updateSql = updateSql + " delete from ch_fee_do where feeid in(select gid from ch_fee where bxgid=@BXGID ) " ;
updateSql = updateSql + " update ch_fee set feestatus=6,orderamount=0,settlement=0 where BXGID=@BXGID " ;
foreach ( var BX in BaoxiaoList )
{
WorkFlowDAL . DeleteWorkFlowDo ( WorkFlowName , BX . BXGID , USERID , Reason ) ;
}
} else if ( newStatus = = 2 )
{
foreach ( var BX in BaoxiaoList )
{
WorkFlowDAL . WorkFlowStart ( WorkFlowName , BX . BXGID , USERID , BX . BXNO , BX . BXGID , "" , "" , "备注:" + BX . REMARK ) ;
}
updateSql = updateSql + " update ch_fee set feestatus=2,orderamount=amount where BXGID=@BXGID " ;
}
else if ( newStatus = = 1 )
{
foreach ( var BX in BaoxiaoList )
{
WorkFlowDAL . DeleteWorkFlowUsing ( WorkFlowName , BX . BXGID , USERID ) ;
}
}
else {
updateSql = updateSql + " update ch_fee set feestatus=@BXStatus where BXGID=@BXGID " ;
}
const string enumSql =
"select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=99024 and EnumValueID=@EnumValueID" ;
if ( newStatus = = 0 & & islast ! = true )
{
newStatus = 2 ;
}
using ( DbConnection connection = db . CreateConnection ( ) )
{
connection . Open ( ) ;
try
{
var cmdEnum = db . GetSqlStringCommand ( enumSql ) ;
db . AddInParameter ( cmdEnum , "@EnumValueID" , DbType . Int32 , newStatus ) ;
var newStatusRef = Convert . ToString ( db . ExecuteScalar ( cmdEnum ) ) ;
DbTransaction transaction = connection . BeginTransaction ( ) ;
try
{
foreach ( var BX in BaoxiaoList )
{
var cmdUpdate = db . GetSqlStringCommand ( updateSql ) ;
db . AddInParameter ( cmdUpdate , "@BXStatus" , DbType . Int32 , newStatus ) ;
db . AddInParameter ( cmdUpdate , "@BXGID" , DbType . String , BX . BXGID ) ;
db . ExecuteNonQuery ( cmdUpdate , transaction ) ;
}
transaction . Commit ( ) ;
result . Success = true ;
result . Message = "提交成功" ;
result . Data = newStatusRef ;
}
catch ( Exception e )
{
transaction . Rollback ( ) ;
result . Success = false ;
if ( e is MsChFeeDealException )
result . Message = e . Message ;
else
result . Message = "执行提交发生未知错误,请重试" ;
}
}
finally
{
connection . Close ( ) ;
}
}
if ( newStatus = = 0 | | result . Success = = true )
{
SetGZ ( BaoxiaoList ) ; //设置挂账信息
}
return result ;
}
# endregion
public static DBResult UpdateISREVINV ( String bills , string type )
{
var result = new DBResult ( ) ;
var billList = bills . Split ( ',' ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
foreach ( var bill in billList )
{
var cmdupdate = db . GetSqlStringCommand ( "update OA_Baoxiao set ISREVINV=" + type + " where BXGID=@BXGID" ) ;
cmdupdate . Parameters . Clear ( ) ;
db . AddInParameter ( cmdupdate , "@BXGID" , DbType . String , bill ) ;
db . ExecuteNonQuery ( cmdupdate , tran ) ;
result = new DBResult ( ) ;
result . Success = true ;
result . Message = "提交成功" ;
}
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "撤销提交错误,请重试或联系系统管理员" ;
return result ;
}
}
return result ;
}
public static int SetGZ ( List < Baoxiaomb > BaoxiaoList )
{
var _count = 0 ;
var updateSql = "" ;
foreach ( var BX in BaoxiaoList )
{
var BXGID = BX . BXGID ;
updateSql = " update ch_fee set feestatus=0 where " ;
updateSql = updateSql + " CHEQUENUM in( select TICKETNO from OA_Baoxiao_Pay where SETTLEMENTTYPE=4 and bxgid='" + BXGID + "') " ;
updateSql = updateSql + " and bxgid='" + BXGID + "' " ;
updateSql = updateSql + " update ch_fee set feestatus=9 where " ;
updateSql = updateSql + " CHEQUENUM in( select TICKETNO from OA_Baoxiao_Pay where SETTLEMENTTYPE<>4 and bxgid='" + BXGID + "') " ;
updateSql = updateSql + " and bxgid='" + BXGID + "' " ;
}
return _count ;
}
#region 删除报销单下的费用
static public int DELBXChFee ( string BXGID )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( " delete from ch_fee where bxgid =( '" + BXGID + "')" ) ;
var _count = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
_count = db . ExecuteNonQuery ( CommandType . Text , strSql . ToString ( ) ) ;
return _count ;
}
# endregion
#region 解除费用与报销单的关联
public static int FeeUnUnion ( List < MsChFeeAmount > feeUnUnionList )
{
var strSql = new StringBuilder ( ) ;
var _count = 0 ;
foreach ( var Fee in feeUnUnionList )
{
var GID = Fee . GId ;
strSql . Append ( " update ch_fee set bxgid = null where gid='" + GID + "' " ) ;
_count = _count + SetFee ( strSql ) ;
}
return _count ; //ExecuteNonQuery
}
# endregion
public static int SetFee ( StringBuilder strSql )
{
var _count = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
_count = db . ExecuteNonQuery ( CommandType . Text , strSql . ToString ( ) ) ;
return _count ;
}
#region 将借款单费用添加至报销单
static public int AddJKFee ( string BXGID , string FeeList )
{
var _count = 0 ;
var strSql = new StringBuilder ( ) ;
if ( FeeList ! = "" )
{
strSql . Append ( " Update ch_fee set bxgid='" + BXGID + "' where gid in( " + FeeList + ") " ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
_count = db . ExecuteNonQuery ( CommandType . Text , strSql . ToString ( ) ) ;
}
return _count ;
}
static public int DelJKFee ( string FeeList )
{
var _count = 0 ;
var strSql = new StringBuilder ( ) ;
if ( FeeList ! = "" )
{
strSql . Append ( " delete from ch_fee where gid in( " + FeeList + ") and isnull(jkgid,'')='' and feestatus in(1,6) " ) ;
strSql . Append ( " Update ch_fee set bxgid='',feestatus=0,settlement=0 where gid in( " + FeeList + ") " ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
_count = db . ExecuteNonQuery ( CommandType . Text , strSql . ToString ( ) ) ;
}
return _count ;
}
# 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_OA_Baoxiao_chFee.CURRENCY)) as FCYEXRATE from VW_OA_Baoxiao_chFee where CURRENCY<>'RMB'" ) ;
if ( ! string . IsNullOrEmpty ( strGids ) )
{
string strCondition = " and BXGID 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 BXGID not in (select [BSGID] from [cw_vouno_bs_gl] WITH(NOLOCK) where BSTABLENAME='OA_Baoxiao' and STARTGID='" + strCwSTARTGID + "')" ;
string sAndGids = " and BXGID 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 ACCOUNT from (SELECT isnull(REASON,'') as ACCOUNT from VW_OA_Baoxiao_chFee where 1=1 " + strCondition + sAndGids + " and REASON<>'' and REASON is not NULL and REASON<>'现金') as a group by ACCOUNT" ; // where CORPID='"+companyid+"'
DataSet dsACCOUNT = T_ALL_DA . GetAllSQL ( sSQL ) ;
if ( dsACCOUNT ! = null )
{
if ( dsACCOUNT . Tables [ 0 ] . Rows . Count > 0 )
{
int isLS = 0 ;
for ( int i = 0 ; i < dsACCOUNT . Tables [ 0 ] . Rows . Count ; i + + )
{
sSQL = "SELECT count(*) as inum from cw_accitems_gl INNER JOIN sys_bank on cw_accitems_gl.ACCID=sys_bank.CWGLACCID where sys_bank.BANKNAME in ('" + dsACCOUNT . Tables [ 0 ] . Rows [ i ] [ "ACCOUNT" ] . ToString ( ) . Trim ( ) + "') and cw_accitems_gl.[year]=SUBSTRING('" + strCwACCDATE + "',1,4) and cw_accitems_gl.[STARTGID]='" + strCwSTARTGID + "'" ; // where CORPID='"+companyid+"'
int inum = int . Parse ( T_ALL_DA . GetStrSQL ( "inum" , sSQL ) ) ;
if ( inum = = 0 )
{
isLS + + ;
}
}
if ( isLS > 0 )
{
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 ) ;
//判断总账科目是否完全配置好
//判断是否有核算项目的科目
if ( dsCwDesignItem = = null )
{
//现金
sSQL = "SELECT COUNT(*) as inum from cw_accitems_gl where ISITEMACC=1 and ACCID in ('" + dsCwDesign . Tables [ 0 ] . Rows [ 0 ] [ "CASH" ] . ToString ( ) . Trim ( ) + "') and [STARTGID]='" + strCwSTARTGID + "'" ;
sNum = T_ALL_DA . GetStrSQL ( "inum" , sSQL ) ;
if ( sNum ! = "" & & sNum ! = "0" )
{
result . Success = false ;
result . Message = "请先设置帐套信息中的核算项目匹配设置!" + result . Message ;
return result ;
}
//银行
sSQL = "SELECT COUNT(*) as inum from cw_accitems_gl where ISITEMACC=1 and ACCID in (select CWGLACCID from sys_bank where CWGLACCID<>'' and CWGLACCID is not null) and [STARTGID]='" + strCwSTARTGID + "'" ;
sNum = T_ALL_DA . GetStrSQL ( "inum" , sSQL ) ;
if ( sNum ! = "" & & sNum ! = "0" )
{
result . Success = false ;
result . Message = "请先设置银行信息中的核算项目匹配设置!" + result . Message ;
return result ;
}
}
# 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 BXGID 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_OA_Baoxiao_Pay 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 ;
int 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],'OA_Baoxiao' as [BSTABLENAME],BXGID as [BSGID],'" + cfVOUALLNO + "' as [VOUALLNO],'' as [ORDNO],'" + strCwSTARTGID + "' as [STARTGID],'" + strUserID + "' as [CREATEUSER],getdate() as [CREATETIME]"
+ " from OA_Baoxiao WITH(NOLOCK) where 1=1" + sAndGids + " and BXGID not in (select BSGID from cw_vouno_bs_gl WITH(NOLOCK) where BSTABLENAME='OA_Baoxiao' and [STARTGID]='" + strCwSTARTGID + "')" ;
# endregion
int iCount = db . ExecuteNonQuery ( CommandType . Text , blSQL ) ;
if ( iCount ! = 0 )
{
iResult = getSC ( dsCwDesign , dsCwDesignItem , sAndGids , headData , bodyList , strCwACCDATE , strUserID , companyid , cfVOUALLNO ) ;
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 )
{
var result = new DBResult ( ) ;
#region 基本变量
//全部
string sSQL = "" ;
string strFCY = "RMB" ;
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 BXGID in (select [BSGID] from [cw_vouno_bs_gl] WITH(NOLOCK) where BSTABLENAME='OA_Baoxiao' and VOUALLNO='" + cfVOUALLNO + "' and STARTGID='" + strCwSTARTGID + "')" ;
# endregion
#region 科目设置
//科目设置 现金
sSQL = "SELECT top 1 * from cw_accitems_gl where ACCID='" + dsCwDesign . Tables [ 0 ] . Rows [ 0 ] [ "CASH" ] . ToString ( ) . Trim ( ) + "' and [YEAR]=SUBSTRING('" + strACCDATE + "',1,4) and [STARTGID]='" + strCwSTARTGID + "'" ;
DataSet dsCASH = T_ALL_DA . GetAllSQL ( sSQL ) ;
//科目设置 银行账号
sSQL = "SELECT cw_accitems_gl.*,sys_bank.GID as BankGid,sys_bank.BANKNAME from cw_accitems_gl INNER JOIN sys_bank on cw_accitems_gl.ACCID=sys_bank.CWGLACCID where cw_accitems_gl.[YEAR]=SUBSTRING('" + strACCDATE + "',1,4) and cw_accitems_gl.[STARTGID]='" + strCwSTARTGID + "' and sys_bank.BANKNAME in (select ACCOUNT from (SELECT isnull(REASON,'') as ACCOUNT from VW_OA_Baoxiao_chFee where 1=1" + strCondition + " and REASON<>'' and REASON is not NULL) as a group by ACCOUNT)" ;
DataSet dsBank = T_ALL_DA . GetAllSQL ( sSQL ) ;
//科目设置 其他科目
sSQL = "SELECT * from cw_accitems_gl where [YEAR]=SUBSTRING('" + strACCDATE + "',1,4) and [STARTGID]='" + strCwSTARTGID + "' and accid in (select OPERATORSIDE_gl from VW_OA_Baoxiao_Pay where 1=1" + strCondition + " and OPERATORSIDE_gl<>'' and OPERATORSIDE_gl is not NULL)" ;
DataSet dsOther = 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 strISEXPLANdai = ",REMARK_F" ;
string strISEXPLANjie = ",REMARK_P" ;
#region 屏蔽的摘要判断
//if (dsCwDesign.Tables[0].Rows[0]["ISRPCLIENTNAME"].ToString().Trim() == "True")
//{
// strISEXPLAN += ",CUSTOMERSIDE";//是否收付客户名称
//}
//if (dsCwDesign.Tables[0].Rows[0]["ISRPCUSTNO"].ToString().Trim() == "True")
//{
// strISEXPLAN += ",CUSTNO";//是否收付委托编号
//}
//if (dsCwDesign.Tables[0].Rows[0]["ISRPMBLNO"].ToString().Trim() == "True")
//{
// strISEXPLAN += ",MBLNO";//是否收付主提单号
//}
//if (dsCwDesign.Tables[0].Rows[0]["ISRPVESSEL"].ToString().Trim() == "True")
//{
// strISEXPLAN += ",VESSEL";//是否收付船名
//}
//if (dsCwDesign.Tables[0].Rows[0]["ISRPVOYNO"].ToString().Trim() == "True")
//{
// strISEXPLAN += ",VOYNO";//是否收付航次
//}
//if (dsCwDesign.Tables[0].Rows[0]["ISRPBSSOURCE"].ToString().Trim() == "True")
//{
// strISEXPLAN += ",BSSOURCE";//是否收付业务来源
//}
//if (dsCwDesign.Tables[0].Rows[0]["ISRPBILLNO"].ToString().Trim() == "True")
//{
// strISEXPLAN += ",BILLNO";//是否收付结算单号
//}
//if (dsCwDesign.Tables[0].Rows[0]["ISRPBILLNO_ACAD"].ToString().Trim() == "True")
//{
// strISEXPLAN += ",BILLNO_ACAD";//是否收付申请单号
//}
# endregion
# endregion
#region 基本数据集
#region 基本信息
string strORDNO = getGid ( ) ;
string sqlCASH = "" ;
string sqlBank = "" ;
ArrayList alBank = new ArrayList ( ) ;
ArrayList alBankDs = new ArrayList ( ) ;
string sqlOther = "" ;
ArrayList alOther = new ArrayList ( ) ;
ArrayList alOtherDs = new ArrayList ( ) ;
IList < MsCwVouitemsGl > CwVouitemsEntities = new List < MsCwVouitemsGl > ( ) ;
# endregion
#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 贷方科目设置:现金、账户
#region 现金
#region 核算科目
string sISEXPLAN = "" ;
//是否核算客户
if ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISCORPACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
sISEXPLAN + = ",CUSTOMERNAME" ; //是否委托单位
}
//是否核算人员
if ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISEMPLACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
sISEXPLAN + = ",SALE" ; //是否揽货人
}
//是否核算部门
if ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISDEPTACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
sISEXPLAN + = ",DEPTGID,DEPTNAME" ; //是否揽货人的部门
}
//是否核算项目
if ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISITEMACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
if ( dsCwDesignItem ! = null )
{
sISEXPLAN + = ",OPLBNAME" ; //是否核算项目
}
}
# endregion
//ISFCY 是否核算外币
if ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISFCY" ] . ToString ( ) . Trim ( ) = = "True" )
{
sqlCASH = "SELECT FEETYPE,CURRENCY,EXCHANGERATE,REASON"
+ ",SUM(je) AS je,SUM(hj) AS hj" + sISEXPLAN //,SETTLETYPE + strISEXPLAN
+ " from ("
+ "SELECT (CASE WHEN FEETYPE = 1 THEN '应收账款' WHEN FEETYPE=2 THEN '应付账款' ELSE '' END) as FEETYPE"
+ ",CURRENCY,EXCHANGERATE"
+ ",SUM(AMOUNT_F) AS je"
+ ",convert(decimal(18,2),round(SUM(AMOUNT_F*" + tbRATE_CASH + "),2)) AS hj"
+ sISEXPLAN + strISEXPLANdai
+ " From VW_OA_Baoxiao_chFee WHERE 1=1" + strCondition + " and REASON='现金'"
+ " GROUP BY EXCHANGERATE,CURRENCY,REASON,FEETYPE" + sISEXPLAN + strISEXPLANdai
+ ") as a"
+ " GROUP BY EXCHANGERATE,CURRENCY,REASON,FEETYPE" + sISEXPLAN + strISEXPLANdai
+ " ORDER BY CURRENCY,FEETYPE" + sISEXPLAN + strISEXPLANdai ;
}
else
{
sqlCASH = "SELECT (CASE WHEN FEETYPE = 1 THEN '应收账款' WHEN FEETYPE=2 THEN '应付账款' ELSE '' END) as FEETYPE,'RMB' as CURRENCY,1 as EXCHANGERATE"
+ ",SUM(AMOUNT_F) AS je"
+ ",convert(decimal(18,2),round(SUM(AMOUNT_F*" + tbRATE_CASH + "),2)) AS hj"
+ sISEXPLAN + strISEXPLANdai
+ " From VW_OA_Baoxiao_chFee WHERE 1=1" + strCondition + " and REASON='现金'"
+ " GROUP BY FEETYPE" + sISEXPLAN + strISEXPLANdai
+ " ORDER BY FEETYPE" + sISEXPLAN + strISEXPLANdai ;
}
# endregion
#region 银行账户
if ( dsBank ! = null )
{
for ( int i = 0 ; i < dsBank . Tables [ 0 ] . Rows . Count ; i + + )
{
#region 循环账户
#region 核算科目
sISEXPLAN = "" ;
//是否核算客户
if ( dsBank . Tables [ 0 ] . Rows [ i ] [ "ISCORPACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
sISEXPLAN + = ",CUSTOMERNAME" ; //是否委托单位
}
//是否核算人员
if ( dsBank . Tables [ 0 ] . Rows [ i ] [ "ISEMPLACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
sISEXPLAN + = ",SALE" ; //是否揽货人
}
//是否核算部门
if ( dsBank . Tables [ 0 ] . Rows [ i ] [ "ISDEPTACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
sISEXPLAN + = ",DEPTGID,DEPTNAME" ; //是否揽货人的部门
}
//是否核算项目
if ( dsBank . Tables [ 0 ] . Rows [ i ] [ "ISITEMACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
if ( dsCwDesignItem ! = null )
{
sISEXPLAN + = ",OPLBNAME" ; //是否核算项目
}
}
# endregion
//ISFCY 是否核算外币
if ( dsBank . Tables [ 0 ] . Rows [ i ] [ "ISFCY" ] . ToString ( ) . Trim ( ) = = "True" )
{
sqlBank = "SELECT FEETYPE,CURRENCY,EXCHANGERATE,REASON"
+ ",SUM(je) AS je,SUM(hj) AS hj" + sISEXPLAN + strISEXPLANdai
+ " from ("
+ "SELECT (CASE WHEN FEETYPE = 1 THEN '应收账款' WHEN FEETYPE=2 THEN '应付账款' ELSE '' END) as FEETYPE"
+ ",CURRENCY,EXCHANGERATE"
+ ",SUM(AMOUNT_F) AS je"
+ ",convert(decimal(18,2),round(SUM(AMOUNT_F*" + tbRATE_CASH + "),2)) AS hj"
+ sISEXPLAN + strISEXPLANdai
+ " From VW_OA_Baoxiao_chFee WHERE 1=1" + strCondition
+ " and REASON='" + dsBank . Tables [ 0 ] . Rows [ i ] [ "ACCNAME" ] . ToString ( ) . Trim ( ) + "'"
+ " GROUP BY EXCHANGERATE,CURRENCY,REASON,FEETYPE" + sISEXPLAN + strISEXPLANdai
+ ") as a"
+ " GROUP BY EXCHANGERATE,CURRENCY,REASON,FEETYPE" + sISEXPLAN + strISEXPLANdai
+ " ORDER BY CURRENCY,FEETYPE" + sISEXPLAN + strISEXPLANdai ;
}
else
{
sqlBank = "SELECT (CASE WHEN FEETYPE = 1 THEN '应收账款' WHEN FEETYPE=2 THEN '应付账款' ELSE '' END) as FEETYPE"
+ ",'RMB' as CURRENCY,1 as EXCHANGERATE,REASON"
+ ",SUM(AMOUNT_F) AS je"
+ ",convert(decimal(18,2),round(SUM(AMOUNT_F*" + tbRATE_CASH + "),2)) AS hj"
+ sISEXPLAN + strISEXPLANdai
+ " From VW_OA_Baoxiao_chFee WHERE 1=1" + strCondition
+ " and REASON='" + dsBank . Tables [ 0 ] . Rows [ i ] [ "ACCNAME" ] . ToString ( ) . Trim ( ) + "'"
+ " GROUP BY FEETYPE,REASON" + sISEXPLAN + strISEXPLANdai
+ " ORDER BY FEETYPE,REASON" + sISEXPLAN + strISEXPLANdai ;
}
alBank . Add ( sqlBank ) ;
# endregion
}
}
# endregion
# endregion
#region 借方科目设置: 其他科目dsOther
if ( dsOther ! = null )
{
for ( int i = 0 ; i < dsOther . Tables [ 0 ] . Rows . Count ; i + + )
{
#region 循环其他科目
#region 核算科目
sISEXPLAN = "" ;
//是否核算客户
if ( dsOther . Tables [ 0 ] . Rows [ i ] [ "ISCORPACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
sISEXPLAN + = ",CUSTOMERNAME" ; //是否委托单位
}
//是否核算人员
if ( dsOther . Tables [ 0 ] . Rows [ i ] [ "ISEMPLACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
sISEXPLAN + = ",SALE" ; //是否揽货人
}
//是否核算部门
if ( dsOther . Tables [ 0 ] . Rows [ i ] [ "ISDEPTACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
sISEXPLAN + = ",DEPTGID,DEPTNAME" ; //是否揽货人的部门
}
//是否核算项目
if ( dsOther . Tables [ 0 ] . Rows [ i ] [ "ISITEMACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
if ( dsCwDesignItem ! = null )
{
sISEXPLAN + = ",OPLBNAME" ; //是否核算项目
}
}
# endregion
sqlOther = "SELECT 'RMB' as CURRENCY,1 as EXCHANGERATE,SUM(AMOUNT_P) AS je,SUM(AMOUNT_P) AS hj,OPERATORSIDE_gl" + sISEXPLAN + strISEXPLANjie
+ " From VW_OA_Baoxiao_Pay WHERE 1=1" + strCondition
+ " and OPERATORSIDE_gl='" + dsOther . Tables [ 0 ] . Rows [ i ] [ "ACCID" ] . ToString ( ) . Trim ( ) + "'"
+ " GROUP BY OPERATORSIDE_gl" + sISEXPLAN + strISEXPLANjie
+ " ORDER BY OPERATORSIDE_gl" + sISEXPLAN + strISEXPLANjie ;
alOther . Add ( sqlOther ) ;
# endregion
}
}
# endregion
#region 数据集
DataSet dsVwcfsdCASH = null ;
if ( sqlCASH . Trim ( ) ! = "" )
{
dsVwcfsdCASH = T_ALL_DA . GetAllSQL ( sqlCASH ) ;
}
if ( alBank ! = null )
{
if ( alBank . Count > 0 )
{
for ( int i = 0 ; i < alBank . Count ; i + + )
{
DataSet dsVwcfsdBank = null ;
if ( alBank [ i ] . ToString ( ) . Trim ( ) ! = "" ) //sqlBank
{
dsVwcfsdBank = T_ALL_DA . GetAllSQL ( alBank [ i ] . ToString ( ) . Trim ( ) ) ; //sqlBank
if ( dsVwcfsdBank ! = null )
{
if ( dsVwcfsdBank . Tables [ 0 ] . Rows . Count > 0 )
{
alBankDs . Add ( dsVwcfsdBank ) ;
}
}
}
}
}
}
if ( alOther ! = null )
{
if ( alOther . Count > 0 )
{
for ( int i = 0 ; i < alOther . Count ; i + + )
{
DataSet dsVwcfsdOther = null ;
if ( alOther [ i ] . ToString ( ) . Trim ( ) ! = "" ) //sqlOther
{
dsVwcfsdOther = T_ALL_DA . GetAllSQL ( alOther [ i ] . ToString ( ) . Trim ( ) ) ; //sqlOther
if ( dsVwcfsdOther ! = null )
{
if ( dsVwcfsdOther . Tables [ 0 ] . Rows . Count > 0 )
{
alOtherDs . Add ( dsVwcfsdOther ) ;
}
}
}
}
}
}
# endregion
# endregion
if ( ( dsVwcfsdCASH ! = null | | alBankDs . Count > 0 ) & & alOtherDs . Count > 0 )
{
#region 明细表_实体类
#region 插入明细表 现金
if ( dsVwcfsdCASH ! = null )
{
if ( dsVwcfsdCASH . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int i = 0 ; i < dsVwcfsdCASH . Tables [ 0 ] . Rows . Count ; i + + )
{
if ( dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) = = "" )
{
continue ;
}
#region 插入明细表 现金_全额
MsCwVouitemsGl MsCwVouitemsGl = new MsCwVouitemsGl ( ) ;
//MsCwVouitemsGl.GID 唯一编码 newid()
MsCwVouitemsGl . ORDNO = strORDNO . Trim ( ) ;
MsCwVouitemsGl . ITEMNO = 0 ; //行号
MsCwVouitemsGl . PACCID = "" ; //父级科目贷码
MsCwVouitemsGl . PROPERTY = 0 ; //科目属性
MsCwVouitemsGl . GRADE = 0 ; //科目级别
MsCwVouitemsGl . ACCID = dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ACCID" ] . ToString ( ) . Trim ( ) ; //科目代码
MsCwVouitemsGl . ACCNAME = dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ACCNAME" ] . ToString ( ) . Trim ( ) ; //科目名称
/ /
if ( dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "CURRENCY" ] . ToString ( ) . Trim ( ) = = "RMB" )
{
MsCwVouitemsGl . AMTDR = 0 ; //本位币贷方金额(互斥)
MsCwVouitemsGl . AMTCR = Decimal . Parse ( dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ; //本位币借方金额(互斥)
strJie = strJie + Decimal . Parse ( dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ;
MsCwVouitemsGl . ISFCY = false ; //是否外币
MsCwVouitemsGl . FCYDR = 0 ; //外币借方金额
MsCwVouitemsGl . FCYCR = 0 ; //外币贷方金额
}
else
{
MsCwVouitemsGl . AMTDR = 0 ; //本位币贷方金额(互斥)
MsCwVouitemsGl . AMTCR = Decimal . Parse ( dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ; //本位币借方金额(互斥)
strJie = strJie + Decimal . Parse ( dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ;
MsCwVouitemsGl . ISFCY = true ; //是否外币
MsCwVouitemsGl . FCYDR = 0 ; //外币贷方金额
MsCwVouitemsGl . FCYCR = Decimal . Parse ( dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "je" ] . ToString ( ) . Trim ( ) ) ; //外币借方金额
}
MsCwVouitemsGl . DC = "C" ; //贷方向
strBPVW = dsCwDesign . Tables [ 0 ] . Rows [ 0 ] [ "BPVW" ] . ToString ( ) . Trim ( ) ;
MsCwVouitemsGl . FCYNO = dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "CURRENCY" ] . ToString ( ) . Trim ( ) ; //外币编号usd
MsCwVouitemsGl . FCYEXRATE = Decimal . Parse ( dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "EXCHANGERATE" ] . ToString ( ) . Trim ( ) ) ; //汇率
dEXCHANGERATE = Decimal . Parse ( dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "EXCHANGERATE" ] . ToString ( ) . Trim ( ) ) ; //汇率
MsCwVouitemsGl . ISDEPTACC = Boolean . Parse ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISDEPTACC" ] . ToString ( ) . Trim ( ) ) ; //核算部门,按规则设置生成
MsCwVouitemsGl . ISEMPLACC = Boolean . Parse ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISEMPLACC" ] . ToString ( ) . Trim ( ) ) ; //核算人员,按规则设置生成
MsCwVouitemsGl . ISCORPACC = Boolean . Parse ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISCORPACC" ] . ToString ( ) . Trim ( ) ) ; //核算客户,按规则设置生成
MsCwVouitemsGl . ISITEMACC = Boolean . Parse ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISITEMACC" ] . ToString ( ) . Trim ( ) ) ; //核算项目,按规则设置生成
/ /
string strACCALL = "" ;
//是否核算客户
MsCwVouitemsGl . CORPID = "" ; //客户(系统)
MsCwVouitemsGl . CUSTOMERNAME = "" ; //客户(系统)
if ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISCORPACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . CORPID = "" ; //客户(系统)
MsCwVouitemsGl . CUSTOMERNAME = dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "CUSTOMERNAME" ] . ToString ( ) . Trim ( ) ; //客户(系统)
strACCALL + = "▁" + MsCwVouitemsGl . CUSTOMERNAME ;
}
//是否核算人员_揽货人
if ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISEMPLACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . SALE = dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "SALE" ] . ToString ( ) . Trim ( ) ; //人员名称
strACCALL + = "▁" + MsCwVouitemsGl . SALE ;
}
//是否核算部门
if ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "ISDEPTACC" ] . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . DEPTGID = dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "DEPTGID" ] . ToString ( ) . Trim ( ) ; //揽货人的部门
strACCALL + = "▁" + dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "DEPTNAME" ] . ToString ( ) . Trim ( ) ;
}
//是否核算项目
if ( dsCASH . 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 ( dsVwcfsdCASH . 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 ( dsCASH . Tables [ 0 ] . Rows [ 0 ] [ "PACCGID" ] . ToString ( ) , MsCwVouitemsGl . ACCNAME . ToString ( ) . Trim ( ) ) + strACCALL ;
MsCwVouitemsGl . BLNO = "" ;
MsCwVouitemsGl . EXPLAN = dsVwcfsdCASH . Tables [ 0 ] . Rows [ i ] [ "REMARK_F" ] . ToString ( ) . Trim ( ) ; //摘要, 规则生成ALL
/ /
MsCwVouitemsGl . QTYUNIT = "" ; //数量包装单位
MsCwVouitemsGl . QTYDR = 0 ; //借方数量
MsCwVouitemsGl . QTYCR = 0 ; //贷方数量
MsCwVouitemsGl . DEPTID = "" ; //strDEPTID;//部门(系统)
MsCwVouitemsGl . EMPLID = "" ; //strEMPLID;//人员(系统)
MsCwVouitemsGl . SALE = "" ; //strSALE;//人员名称
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 . ISSYS = true ; //是否手动录入
MsCwVouitemsGl . FSETTLCODE = "" ; //结算方式
MsCwVouitemsGl . FSETTLENO = "" ; //财务辅助编号
MsCwVouitemsGl . FSETTLDATE = DateTime . Parse ( DateTime . Parse ( headData . VOUDATE ) . ToString ( "yyyy-MM-dd" ) ) ; //结算日期
MsCwVouitemsGl . CREATEUSER = strUserID ; //创建人
MsCwVouitemsGl . CREATETIME = DateTime . Now ; //创建时间
MsCwVouitemsGl . MODIFIEDUSER = strUserID ; //最后一次更新操作人
MsCwVouitemsGl . MODIFIEDTIME = DateTime . Now ; //最后一次更新操作时间
# endregion
CwVouitemsEntities . Add ( MsCwVouitemsGl ) ;
}
}
}
# endregion
#region 插入明细表 账户
if ( alBankDs ! = null )
{
if ( alBankDs . Count > 0 )
{
for ( int j = 0 ; j < alBankDs . Count ; j + + )
{
DataSet ds = ( DataSet ) alBankDs [ j ] ;
if ( ds ! = null )
{
if ( ds . Tables [ 0 ] . Rows . Count > 0 )
{
#region 插入明细表 现金_全额
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
if ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) = = "" )
{
continue ;
}
#region 插入明细表 现金_全额
MsCwVouitemsGl MsCwVouitemsGl = new MsCwVouitemsGl ( ) ;
//MsCwVouitemsGl.GID 唯一编码 newid()
MsCwVouitemsGl . ORDNO = strORDNO . Trim ( ) ;
MsCwVouitemsGl . ITEMNO = 0 ; //行号
MsCwVouitemsGl . PACCID = "" ; //父级科目贷码
MsCwVouitemsGl . PROPERTY = 0 ; //科目属性
MsCwVouitemsGl . GRADE = 0 ; //科目级别
//MsCwVouitemsGl.ACCID = ds.Tables[0].Rows[0]["ACCID"].ToString().Trim();//科目代码
//MsCwVouitemsGl.ACCNAME = ds.Tables[0].Rows[0]["ACCNAME"].ToString().Trim();//科目名称
string lsPACCGID = "" ; // ds.Tables[0].Rows[0]["PACCGID"].ToString().Trim();
if ( dsBank ! = null )
{
if ( dsBank . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int k = 0 ; k < dsBank . Tables [ 0 ] . Rows . Count ; k + + )
{
if ( ds . Tables [ 0 ] . Rows [ i ] [ "REASON" ] . ToString ( ) . Trim ( ) = = dsBank . Tables [ 0 ] . Rows [ k ] [ "BANKNAME" ] . ToString ( ) . Trim ( ) )
{
MsCwVouitemsGl . ACCID = dsBank . Tables [ 0 ] . Rows [ k ] [ "ACCID" ] . ToString ( ) . Trim ( ) ; //科目代码
MsCwVouitemsGl . ACCNAME = dsBank . Tables [ 0 ] . Rows [ k ] [ "ACCNAME" ] . ToString ( ) . Trim ( ) ; //科目名称
lsPACCGID = dsBank . Tables [ 0 ] . Rows [ 0 ] [ "PACCGID" ] . ToString ( ) . Trim ( ) ;
MsCwVouitemsGl . ISDEPTACC = Boolean . Parse ( dsBank . Tables [ 0 ] . Rows [ 0 ] [ "ISDEPTACC" ] . ToString ( ) . Trim ( ) ) ; //核算部门,按规则设置生成
MsCwVouitemsGl . ISEMPLACC = Boolean . Parse ( dsBank . Tables [ 0 ] . Rows [ 0 ] [ "ISEMPLACC" ] . ToString ( ) . Trim ( ) ) ; //核算人员,按规则设置生成
MsCwVouitemsGl . ISCORPACC = Boolean . Parse ( dsBank . Tables [ 0 ] . Rows [ 0 ] [ "ISCORPACC" ] . ToString ( ) . Trim ( ) ) ; //核算客户,按规则设置生成
MsCwVouitemsGl . ISITEMACC = Boolean . Parse ( dsBank . Tables [ 0 ] . Rows [ 0 ] [ "ISITEMACC" ] . ToString ( ) . Trim ( ) ) ; //核算项目,按规则设置生成
}
}
}
}
/ /
if ( ds . Tables [ 0 ] . Rows [ i ] [ "CURRENCY" ] . ToString ( ) . Trim ( ) = = "RMB" )
{
MsCwVouitemsGl . AMTDR = 0 ; //本位币贷方金额(互斥)
MsCwVouitemsGl . AMTCR = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ; //本位币借方金额(互斥)
strJie = strJie + Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ;
MsCwVouitemsGl . ISFCY = false ; //是否外币
MsCwVouitemsGl . FCYDR = 0 ; //外币借方金额
MsCwVouitemsGl . FCYCR = 0 ; //外币贷方金额
}
else
{
MsCwVouitemsGl . AMTDR = 0 ; //本位币贷方金额(互斥)
MsCwVouitemsGl . AMTCR = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ; //本位币借方金额(互斥)
strJie = strJie + Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ;
MsCwVouitemsGl . ISFCY = true ; //是否外币
MsCwVouitemsGl . FCYDR = 0 ; //外币贷方金额
MsCwVouitemsGl . FCYCR = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "je" ] . ToString ( ) . Trim ( ) ) ; //外币借方金额
}
MsCwVouitemsGl . DC = "C" ; //借方向
strBPVW = dsCwDesign . Tables [ 0 ] . Rows [ 0 ] [ "BPVW" ] . ToString ( ) . Trim ( ) ;
MsCwVouitemsGl . FCYNO = ds . Tables [ 0 ] . Rows [ i ] [ "CURRENCY" ] . ToString ( ) . Trim ( ) ; //外币编号usd
MsCwVouitemsGl . FCYEXRATE = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "EXCHANGERATE" ] . ToString ( ) . Trim ( ) ) ; //汇率
dEXCHANGERATE = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "EXCHANGERATE" ] . ToString ( ) . Trim ( ) ) ; //汇率
/ /
string strACCALL = "" ;
//是否核算客户
MsCwVouitemsGl . CORPID = "" ; //客户(系统)
MsCwVouitemsGl . CUSTOMERNAME = "" ; //客户(系统)
if ( MsCwVouitemsGl . ISCORPACC . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . CORPID = "" ; //客户(系统)
MsCwVouitemsGl . CUSTOMERNAME = ds . Tables [ 0 ] . Rows [ i ] [ "CUSTOMERNAME" ] . ToString ( ) . Trim ( ) ; //客户(系统)
strACCALL + = "▁" + MsCwVouitemsGl . CUSTOMERNAME ;
}
//是否核算人员_揽货人
if ( MsCwVouitemsGl . ISEMPLACC . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . SALE = ds . Tables [ 0 ] . Rows [ i ] [ "SALE" ] . ToString ( ) . Trim ( ) ; //人员名称
strACCALL + = "▁" + MsCwVouitemsGl . SALE ;
}
//是否核算部门
if ( MsCwVouitemsGl . ISDEPTACC . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . DEPTGID = ds . Tables [ 0 ] . Rows [ i ] [ "DEPTGID" ] . ToString ( ) . Trim ( ) ; //揽货人的部门
strACCALL + = "▁" + ds . Tables [ 0 ] . Rows [ i ] [ "DEPTNAME" ] . ToString ( ) . Trim ( ) ;
}
//是否核算项目
if ( MsCwVouitemsGl . ISITEMACC . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . ITEMGID = "" ;
if ( dsCwDesignItem ! = null )
{
for ( int k = 0 ; k < dsCwDesignItem . Tables [ 0 ] . Rows . Count ; k + + )
{
if ( ds . Tables [ 0 ] . Rows [ 0 ] [ "OPLBNAME" ] . ToString ( ) . Trim ( ) = = dsCwDesignItem . Tables [ 0 ] . Rows [ k ] [ "OPTYPE" ] . ToString ( ) . Trim ( ) )
{
MsCwVouitemsGl . ITEMGID = dsCwDesignItem . Tables [ 0 ] . Rows [ k ] [ "ITEMGID" ] . ToString ( ) . Trim ( ) ; //是否核算项目
strACCALL + = "▁" + dsCwDesignItem . Tables [ 0 ] . Rows [ k ] [ "ITEMNAME" ] . ToString ( ) . Trim ( ) ;
}
}
}
}
MsCwVouitemsGl . ACCALL = BasicDataRefDAL . setCAGA ( lsPACCGID , MsCwVouitemsGl . ACCNAME . ToString ( ) . Trim ( ) ) + strACCALL ;
MsCwVouitemsGl . BLNO = "" ;
MsCwVouitemsGl . EXPLAN = ds . Tables [ 0 ] . Rows [ i ] [ "REMARK_F" ] . ToString ( ) . Trim ( ) ; //摘要, 规则生成ALL
/ /
MsCwVouitemsGl . QTYUNIT = "" ; //数量包装单位
MsCwVouitemsGl . QTYDR = 0 ; //借方数量
MsCwVouitemsGl . QTYCR = 0 ; //贷方数量
MsCwVouitemsGl . DEPTID = "" ; //strDEPTID;//部门(系统)
MsCwVouitemsGl . EMPLID = "" ; //strEMPLID;//人员(系统)
MsCwVouitemsGl . SALE = "" ; //strSALE;//人员名称
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 . ISSYS = true ; //是否手动录入
MsCwVouitemsGl . FSETTLCODE = "" ; //结算方式
MsCwVouitemsGl . FSETTLENO = "" ; //财务辅助编号
MsCwVouitemsGl . FSETTLDATE = DateTime . Parse ( DateTime . Parse ( headData . VOUDATE ) . ToString ( "yyyy-MM-dd" ) ) ; //结算日期
MsCwVouitemsGl . CREATEUSER = strUserID ; //创建人
MsCwVouitemsGl . CREATETIME = DateTime . Now ; //创建时间
MsCwVouitemsGl . MODIFIEDUSER = strUserID ; //最后一次更新操作人
MsCwVouitemsGl . MODIFIEDTIME = DateTime . Now ; //最后一次更新操作时间
# endregion
CwVouitemsEntities . Add ( MsCwVouitemsGl ) ;
}
# endregion
}
}
}
}
}
# endregion
#region 插入明细表 其他科目
if ( alOtherDs ! = null )
{
if ( alOtherDs . Count > 0 )
{
for ( int j = 0 ; j < alOtherDs . Count ; j + + )
{
DataSet ds = ( DataSet ) alOtherDs [ j ] ;
if ( ds ! = null )
{
if ( ds . Tables [ 0 ] . Rows . Count > 0 )
{
#region 插入明细表 现金_全额
for ( int i = 0 ; i < ds . Tables [ 0 ] . Rows . Count ; i + + )
{
if ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) = = "" )
{
continue ;
}
#region 插入明细表 现金_全额
MsCwVouitemsGl MsCwVouitemsGl = new MsCwVouitemsGl ( ) ;
//MsCwVouitemsGl.GID 唯一编码 newid()
MsCwVouitemsGl . ORDNO = strORDNO . Trim ( ) ;
MsCwVouitemsGl . ITEMNO = 0 ; //行号
MsCwVouitemsGl . PACCID = "" ; //父级科目贷码
MsCwVouitemsGl . PROPERTY = 0 ; //科目属性
MsCwVouitemsGl . GRADE = 0 ; //科目级别
//MsCwVouitemsGl.ACCID = ds.Tables[0].Rows[0]["ACCID"].ToString().Trim();//科目代码
//MsCwVouitemsGl.ACCNAME = ds.Tables[0].Rows[0]["ACCNAME"].ToString().Trim();//科目名称
string lsPACCGID = "" ; // ds.Tables[0].Rows[0]["PACCGID"].ToString().Trim();
if ( dsOther ! = null )
{
if ( dsOther . Tables [ 0 ] . Rows . Count > 0 )
{
for ( int k = 0 ; k < dsOther . Tables [ 0 ] . Rows . Count ; k + + )
{
if ( ds . Tables [ 0 ] . Rows [ i ] [ "OPERATORSIDE_gl" ] . ToString ( ) . Trim ( ) = = dsOther . Tables [ 0 ] . Rows [ k ] [ "ACCID" ] . ToString ( ) . Trim ( ) )
{
MsCwVouitemsGl . ACCID = dsOther . Tables [ 0 ] . Rows [ k ] [ "ACCID" ] . ToString ( ) . Trim ( ) ; //科目代码
MsCwVouitemsGl . ACCNAME = dsOther . Tables [ 0 ] . Rows [ k ] [ "ACCNAME" ] . ToString ( ) . Trim ( ) ; //科目名称
lsPACCGID = dsOther . Tables [ 0 ] . Rows [ 0 ] [ "PACCGID" ] . ToString ( ) . Trim ( ) ;
MsCwVouitemsGl . ISDEPTACC = Boolean . Parse ( dsOther . Tables [ 0 ] . Rows [ 0 ] [ "ISDEPTACC" ] . ToString ( ) . Trim ( ) ) ; //核算部门,按规则设置生成
MsCwVouitemsGl . ISEMPLACC = Boolean . Parse ( dsOther . Tables [ 0 ] . Rows [ 0 ] [ "ISEMPLACC" ] . ToString ( ) . Trim ( ) ) ; //核算人员,按规则设置生成
MsCwVouitemsGl . ISCORPACC = Boolean . Parse ( dsOther . Tables [ 0 ] . Rows [ 0 ] [ "ISCORPACC" ] . ToString ( ) . Trim ( ) ) ; //核算客户,按规则设置生成
MsCwVouitemsGl . ISITEMACC = Boolean . Parse ( dsOther . Tables [ 0 ] . Rows [ 0 ] [ "ISITEMACC" ] . ToString ( ) . Trim ( ) ) ; //核算项目,按规则设置生成
}
}
}
}
/ /
if ( ds . Tables [ 0 ] . Rows [ i ] [ "CURRENCY" ] . ToString ( ) . Trim ( ) = = "RMB" )
{
MsCwVouitemsGl . AMTDR = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ; //本位币贷方金额(互斥)
MsCwVouitemsGl . AMTCR = 0 ; //本位币借方金额(互斥)
strDai = strDai + Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ;
MsCwVouitemsGl . ISFCY = false ; //是否外币
MsCwVouitemsGl . FCYDR = 0 ; //外币借方金额
MsCwVouitemsGl . FCYCR = 0 ; //外币贷方金额
}
else
{
MsCwVouitemsGl . AMTDR = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ; //本位币贷方金额(互斥)
MsCwVouitemsGl . AMTCR = 0 ; //本位币借方金额(互斥)
strDai = strDai + Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "hj" ] . ToString ( ) . Trim ( ) ) ;
MsCwVouitemsGl . ISFCY = true ; //是否外币
MsCwVouitemsGl . FCYDR = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "je" ] . ToString ( ) . Trim ( ) ) ; //外币贷方金额
MsCwVouitemsGl . FCYCR = 0 ; //外币借方金额
}
MsCwVouitemsGl . DC = "D" ; //借方向
strBPVW = dsCwDesign . Tables [ 0 ] . Rows [ 0 ] [ "BPVW" ] . ToString ( ) . Trim ( ) ;
MsCwVouitemsGl . FCYNO = ds . Tables [ 0 ] . Rows [ i ] [ "CURRENCY" ] . ToString ( ) . Trim ( ) ; //外币编号usd
MsCwVouitemsGl . FCYEXRATE = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "EXCHANGERATE" ] . ToString ( ) . Trim ( ) ) ; //汇率
dEXCHANGERATE = Decimal . Parse ( ds . Tables [ 0 ] . Rows [ i ] [ "EXCHANGERATE" ] . ToString ( ) . Trim ( ) ) ; //汇率
/ /
string strACCALL = "" ;
//是否核算客户
MsCwVouitemsGl . CORPID = "" ; //客户(系统)
MsCwVouitemsGl . CUSTOMERNAME = "" ; //客户(系统)
if ( MsCwVouitemsGl . ISCORPACC . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . CORPID = "" ; //客户(系统)
MsCwVouitemsGl . CUSTOMERNAME = ds . Tables [ 0 ] . Rows [ i ] [ "CUSTOMERNAME" ] . ToString ( ) . Trim ( ) ; //客户(系统)
strACCALL + = "▁" + MsCwVouitemsGl . CUSTOMERNAME ;
}
//是否核算人员_揽货人
if ( MsCwVouitemsGl . ISEMPLACC . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . SALE = ds . Tables [ 0 ] . Rows [ i ] [ "SALE" ] . ToString ( ) . Trim ( ) ; //人员名称
strACCALL + = "▁" + MsCwVouitemsGl . SALE ;
}
//是否核算部门
if ( MsCwVouitemsGl . ISDEPTACC . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . DEPTGID = ds . Tables [ 0 ] . Rows [ i ] [ "DEPTGID" ] . ToString ( ) . Trim ( ) ; //揽货人的部门
// strACCALL += "▁" + ds.Tables[0].Rows[i]["DEPTNAME"].ToString().Trim();
}
//是否核算项目
if ( MsCwVouitemsGl . ISITEMACC . ToString ( ) . Trim ( ) = = "True" )
{
MsCwVouitemsGl . ITEMGID = "" ;
if ( dsCwDesignItem ! = null )
{
for ( int k = 0 ; k < dsCwDesignItem . Tables [ 0 ] . Rows . Count ; k + + )
{
if ( ds . Tables [ 0 ] . Rows [ 0 ] [ "OPLBNAME" ] . ToString ( ) . Trim ( ) = = dsCwDesignItem . Tables [ 0 ] . Rows [ k ] [ "OPTYPE" ] . ToString ( ) . Trim ( ) )
{
MsCwVouitemsGl . ITEMGID = dsCwDesignItem . Tables [ 0 ] . Rows [ k ] [ "ITEMGID" ] . ToString ( ) . Trim ( ) ; //是否核算项目
strACCALL + = "▁" + dsCwDesignItem . Tables [ 0 ] . Rows [ k ] [ "ITEMNAME" ] . ToString ( ) . Trim ( ) ;
}
}
}
}
MsCwVouitemsGl . ACCALL = BasicDataRefDAL . setCAGA ( lsPACCGID , MsCwVouitemsGl . ACCNAME . ToString ( ) . Trim ( ) ) + strACCALL ;
MsCwVouitemsGl . BLNO = "" ;
MsCwVouitemsGl . EXPLAN = ds . Tables [ 0 ] . Rows [ i ] [ "REMARK_P" ] . ToString ( ) . Trim ( ) ; //摘要, 规则生成ALL
/ /
MsCwVouitemsGl . QTYUNIT = "" ; //数量包装单位
MsCwVouitemsGl . QTYDR = 0 ; //借方数量
MsCwVouitemsGl . QTYCR = 0 ; //贷方数量
MsCwVouitemsGl . DEPTID = "" ; //strDEPTID;//部门(系统)
MsCwVouitemsGl . EMPLID = "" ; //strEMPLID;//人员(系统)
MsCwVouitemsGl . SALE = "" ; //strSALE;//人员名称
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 . ISSYS = true ; //是否手动录入
MsCwVouitemsGl . FSETTLCODE = "" ; //结算方式
MsCwVouitemsGl . FSETTLENO = "" ; //财务辅助编号
MsCwVouitemsGl . FSETTLDATE = DateTime . Parse ( DateTime . Parse ( headData . VOUDATE ) . ToString ( "yyyy-MM-dd" ) ) ; //结算日期
MsCwVouitemsGl . CREATEUSER = strUserID ; //创建人
MsCwVouitemsGl . CREATETIME = DateTime . Now ; //创建时间
MsCwVouitemsGl . MODIFIEDUSER = strUserID ; //最后一次更新操作人
MsCwVouitemsGl . MODIFIEDTIME = DateTime . Now ; //最后一次更新操作时间
# endregion
CwVouitemsEntities . Add ( MsCwVouitemsGl ) ;
}
# endregion
}
}
}
}
}
# endregion
# 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 . ToString ( ) . Trim ( ) ; //制单人
MsCwVouchersGl . CHECKED = "" ; //审核人
MsCwVouchersGl . ENTERED = "" ; //记账人
MsCwVouchersGl . ERRMSG = "" ; //错误信息
MsCwVouchersGl . ISDELETE = false ; //是否废除
MsCwVouchersGl . DELETEUSER = "" ; //废除操作人
MsCwVouchersGl . DbOperationType = DbOperationType . DbotIns ;
MsCwVouchersGl . STARTGID = strCwSTARTGID ;
MsCwVouchersGl . CREATEUSER = strUserID ; //创建人
MsCwVouchersGl . CREATETIME = DateTime . Now ; //创建时间
MsCwVouchersGl . MODIFIEDUSER = strUserID ; //最后一次更新操作人
MsCwVouchersGl . MODIFIEDTIME = DateTime . Now ; //最后一次更新操作时间
# 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 ( "BXGID" , "BSGID" ) ;
string blSQL = "update [cw_vouno_bs_gl] set ORDNO='" + MsCwVouchersGl . ORDNO + "' where VOUALLNO='" + cfVOUALLNO + "' and BSTABLENAME='OA_Baoxiao' 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;
//删除凭证生成关系表中的OA_Baoxiao的GID数据
string strLS = sAndGids . Replace ( "BXGID" , "BSGID" ) ;
string blSQL = "delete from [cw_vouno_bs_gl] where VOUALLNO='" + cfVOUALLNO + "' and BSTABLENAME='OA_Baoxiao' and [STARTGID]='" + strCwSTARTGID + "'" + strLS ;
bool bl = T_ALL_DA . GetExecuteSqlCommand ( blSQL ) ;
return - 2 ; //重复数据
}
# endregion
}
else
{
//删除凭证生成关系表中的OA_Baoxiao的GID数据
string strLS = sAndGids . Replace ( "BXGID" , "BSGID" ) ;
string blSQL = "delete from [cw_vouno_bs_gl] where VOUALLNO='" + cfVOUALLNO + "' and BSTABLENAME='OA_Baoxiao' 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_OA_Baoxiao_chFee where BXGID in ('" + strGids . Trim ( ) . Replace ( "," , "','" ) + "') and (BXGID in (select [BSGID] from [cw_vouno_bs_gl] WITH(NOLOCK) where BSTABLENAME='OA_Baoxiao' and STARTGID='" + strCwSTARTGID + "') or FEESTATUS=1 or REASON='' or REASON is null)" ;
int inum = int . Parse ( T_ALL_DA . GetStrSQL ( "inum" , sSQL ) ) ;
if ( inum = = 0 )
{
sSQL = "SELECT count(*) as inum from VW_OA_Baoxiao_Pay where BXGID in ('" + strGids . Trim ( ) . Replace ( "," , "','" ) + "') and (BXGID in (select [BSGID] from [cw_vouno_bs_gl] WITH(NOLOCK) where BSTABLENAME='OA_Baoxiao' and STARTGID='" + strCwSTARTGID + "') or OPERATORSIDE_gl='' or OPERATORSIDE_gl is null)" ;
inum = int . Parse ( T_ALL_DA . GetStrSQL ( "inum" , sSQL ) ) ;
if ( inum = = 0 )
{
sSQL = "SELECT count(*) as inum from VW_OA_Baoxiao_Pay where BXGID in ('" + strGids . Trim ( ) . Replace ( "," , "','" ) + "') and BXGID not in (select [BSGID] from [cw_vouno_bs_gl] WITH(NOLOCK) where BSTABLENAME='OA_Baoxiao' and STARTGID='" + strCwSTARTGID + "')" ;
inum = int . Parse ( T_ALL_DA . GetStrSQL ( "inum" , sSQL ) ) ;
if ( inum = = 0 )
{
result . Success = false ;
result . Message = "请选择已审核通过、支付方式、总账科目、结算方式不为空,且未生成凭证的单据!" ;
return result ;
}
else
{
sSQL = "SELECT count(*) as inum from VW_OA_Baoxiao_chFee where BXGID in ('" + strGids . Trim ( ) . Replace ( "," , "','" ) + "') and BXGID not in (select [BSGID] from [cw_vouno_bs_gl] WITH(NOLOCK) where BSTABLENAME='OA_Baoxiao' and STARTGID='" + strCwSTARTGID + "')" ;
inum = int . Parse ( T_ALL_DA . GetStrSQL ( "inum" , sSQL ) ) ;
if ( inum = = 0 )
{
result . Success = false ;
result . Message = "请选择已审核通过、支付方式、总账科目、结算方式不为空,且未生成凭证的单据!" ;
return result ;
}
else
{
result . Success = true ;
result . Message = "" ;
return result ;
}
}
}
else
{
result . Success = false ;
result . Message = "请选择已审核通过、支付方式、总账科目、结算方式不为空,且未生成凭证的单据!" ;
return result ;
}
}
else
{
result . Success = false ;
result . Message = "请选择已审核通过、支付方式、总账科目、结算方式不为空,且未生成凭证的单据!" ;
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
}
internal class MsChFeeDealException : Exception
{
internal MsChFeeDealException ( string message ) : base ( message )
{
}
}
/ /
}