using System ;
using System.Data ;
using System.Data.Common ;
using System.Collections.Generic ;
using System.Text ;
using DSWeb.MvcShipping.Models.MsOpPlan ;
using Microsoft.Practices.EnterpriseLibrary.Data ;
using DSWeb.EntityDA ;
using DSWeb.Areas.CommMng.Models ;
using HcUtility.Comm ;
using HcUtility.Core ;
using System.Data.SqlClient ;
using DSWeb.DataAccess ;
using DSWeb.MvcShipping.Models.MsCodeServiceFeeTemplate ;
using DSWeb.MvcShipping.DAL.MsCodeServiceFeeTemplateDAL ;
using System.Web ;
using DSWeb.MvcShipping.Models.MsSysBillNoSet ;
using DSWeb.MvcShipping.DAL.MsSysBillNoSet ;
using DSWeb.MvcShipping.DAL.MsChFeeDAL ;
using DSWeb.MvcShipping.Models.MsChFee ;
using DSWeb.MvcShipping.DAL.MsOpOtherDAL ;
using DSWeb.MvcShipping.Models.MsOpOther ;
using DSWeb.Areas.SysMng.DAL.SysUser ;
using DSWeb.MvcShipping.DAL.MsInfoClient ;
namespace DSWeb.MvcShipping.DAL.MsOpPlanDAL
{
public class MsOpPlanDAL
{
#region Inquery DataList
static public List < MsOpPlan > GetDataList ( int start , int limit , string strCondition , string userid , string usercode , string companyid , bool issale , string sort = null )
{
if ( issale )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and TOSALE=1 and SALE='" + usercode + "'" ;
}
else
{
strCondition = " TOSALE=1 and SALE='" + usercode + "'" ;
}
}
else
{
var rangstr = GetRangDAStr ( "index" , userid , usercode , companyid ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
}
var strSql = new StringBuilder ( ) ;
strSql . Append ( @"SELECT * from (SELECT row_number() over (" ) ;
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql . Append ( " order by " + sortstring ) ;
}
else
{
strSql . Append ( " order by SFNO " ) ;
}
strSql . Append ( @") as num , " ) ; / /
strSql . Append ( "op_plan.[BSNO],[MASTERNO],[CUSTNO],[BSSTATUS],[BSDATE],[ACCDATE],[BSSOURCE],[BSSOURCEDETAIL],[CUSTOMERNAME],[SALE]" ) ;
strSql . Append ( ",(SELECT TOP 1 STATUS FROM V_OP_STATUS WITH (NOLOCK) WHERE BSNO=op_plan.BSNO ORDER BY COMPTIME DESC,INPUTTIME DESC) as OPSTATUS" ) ;
strSql . Append ( ",[AMOUNT],[FEEDATE],[REMARK],[OTREMARK],[INPUTBY],[INPUTDATE],[CORPID],[TOSALE],[SFNO],dbo.F_GetBillDrFeeStatus(op_plan.MASTERNO) DRFEESTATUS,dbo.F_GetBillCrFeeStatus(op_plan.MASTERNO) CRFEESTATUS" ) ;
strSql . Append ( ",I.TTLDR,I.TTLINVDR,(SELECT CUSTNO FROM OP_OTHER WHERE BSNO=op_plan.MASTERNO) BSCUSTNO,MODIFIEDUSER,MODIFIEDTIME FROM op_plan" ) ;
strSql . Append ( " LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=op_plan.MASTERNO) " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where " + strCondition ) ;
}
strSql . Append ( @")as t " ) ;
strSql . Append ( string . Format ( "where t.num>={0} and t.num<={1} order by t.num" , start , start + limit ) ) ; / /
return SetData ( strSql . ToString ( ) ) ;
}
static public List < MsOpPlan > GetDataAllList ( int start , int limit , string strCondition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( @"SELECT * from (SELECT row_number() over (" ) ;
strSql . Append ( " order by BSDATE desc" ) ;
strSql . Append ( @") as num , " ) ; / /
strSql . Append ( "op_plan.[BSNO],[MASTERNO],[CUSTNO],[BSSTATUS],[BSDATE],[ACCDATE],[BSSOURCE],[BSSOURCEDETAIL],[CUSTOMERNAME],[SALE]" ) ;
strSql . Append ( ",(SELECT TOP 1 STATUS FROM V_OP_STATUS WITH (NOLOCK) WHERE BSNO=op_plan.BSNO ORDER BY COMPTIME DESC,INPUTTIME DESC) as OPSTATUS" ) ;
strSql . Append ( ",[AMOUNT],[FEEDATE],[REMARK],[OTREMARK],[INPUTBY],[INPUTDATE],[CORPID],[TOSALE],[SFNO],dbo.F_GetBillDrFeeStatus(op_plan.MASTERNO) DRFEESTATUS,dbo.F_GetBillCrFeeStatus(op_plan.MASTERNO) CRFEESTATUS" ) ;
strSql . Append ( ",I.TTLDR,I.TTLINVDR,(SELECT CUSTNO FROM OP_OTHER WHERE BSNO=op_plan.MASTERNO) BSCUSTNO,MODIFIEDUSER,MODIFIEDTIME FROM op_plan" ) ;
strSql . Append ( " LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=op_plan.MASTERNO) " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where " + strCondition ) ;
}
strSql . Append ( @")as t " ) ;
strSql . Append ( string . Format ( "where t.num>={0} and t.num<={1} order by t.num" , start , start + limit ) ) ; / /
return SetData ( strSql . ToString ( ) ) ;
}
public static int getTotalCount ( string strCondition , string userid , string usercode , string companyid , bool issale )
{
if ( issale )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and TOSALE=1 and SALE='" + usercode + "'" ;
}
else
{
strCondition = " TOSALE=1 and SALE='" + usercode + "'" ;
}
}
else
{
var rangstr = GetRangDAStr ( "index" , userid , usercode , companyid ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
}
StringBuilder strSql = new StringBuilder ( ) ;
strSql . Append ( "select count(*) " ) ;
strSql . Append ( " from op_plan " ) ;
strSql . Append ( " LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=op_plan.MASTERNO) " ) ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " where " + strCondition ) ;
}
int cnt = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
cnt = Convert . ToInt32 ( reader [ 0 ] ) ;
}
}
return cnt ;
}
static public string GetDataListStr ( string strCondition , string userid , string usercode , string companyid , bool issale , string sort = null )
{
if ( issale )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and TOSALE=1 and SALE='" + usercode + "'" ;
}
else
{
strCondition = " TOSALE=1 and SALE='" + usercode + "'" ;
}
}
else
{
var rangstr = GetRangDAStr ( "index" , userid , usercode , companyid ) ;
if ( ! string . IsNullOrEmpty ( rangstr ) )
{
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strCondition = strCondition + " and " + rangstr ;
}
else
{
strCondition = rangstr ;
}
}
}
/ /
String strSql = "SELECT op_plan.[BSNO],[MASTERNO],[CUSTNO],[BSSTATUS],[BSDATE],[ACCDATE],[BSSOURCE],[BSSOURCEDETAIL],[CUSTOMERNAME],[SALE]" ;
strSql = strSql + ",(SELECT TOP 1 STATUS FROM V_OP_STATUS WITH (NOLOCK) WHERE BSNO=op_plan.BSNO ORDER BY COMPTIME DESC,INPUTTIME DESC) as OPSTATUS" ;
strSql = strSql + ",[AMOUNT],[FEEDATE],[REMARK],[OTREMARK],[INPUTBY],[INPUTDATE],[CORPID],[TOSALE],[SFNO],dbo.F_GetBillDrFeeStatus(op_plan.MASTERNO) DRFEESTATUS,dbo.F_GetBillCrFeeStatus(op_plan.MASTERNO) CRFEESTATUS" ;
strSql = strSql + ",I.TTLDR,I.TTLINVDR,(SELECT CUSTNO FROM OP_OTHER WHERE BSNO=op_plan.MASTERNO) BSCUSTNO,MODIFIEDUSER,MODIFIEDTIME,'' DRINVSTATUS FROM op_plan" ;
strSql = strSql + " LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=op_plan.MASTERNO)" ;
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql + = " where " + strCondition ;
}
var sortstring = DatasetSort . Getsortstring ( sort ) ;
if ( ! string . IsNullOrEmpty ( sortstring ) )
{
strSql + = " order by " + sortstring ;
}
else
{
strSql + = " order by BSDATE desc" ;
}
return strSql . ToString ( ) ;
}
static public MsOpPlan GetData ( string condition )
{
String strSql = "SELECT op_plan.[BSNO],[MASTERNO],[CUSTNO],[BSSTATUS],[BSDATE],[ACCDATE],[BSSOURCE],[BSSOURCEDETAIL],[CUSTOMERNAME],[SALE]" ;
strSql = strSql + ",(SELECT TOP 1 STATUS FROM V_OP_STATUS WITH (NOLOCK) WHERE BSNO=op_plan.BSNO ORDER BY COMPTIME DESC,INPUTTIME DESC) as OPSTATUS" ;
strSql = strSql + ",[AMOUNT],[FEEDATE],[REMARK],[OTREMARK],[INPUTBY],[INPUTDATE],[CORPID],[TOSALE],[SFNO],dbo.F_GetBillDrFeeStatus(op_plan.MASTERNO) DRFEESTATUS,dbo.F_GetBillCrFeeStatus(op_plan.MASTERNO) CRFEESTATUS " ;
strSql = strSql + ",I.TTLDR,I.TTLINVDR,(SELECT CUSTNO FROM OP_OTHER WHERE BSNO=op_plan.MASTERNO) BSCUSTNO,MODIFIEDUSER,MODIFIEDTIME FROM op_plan" ;
strSql = strSql + " LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=op_plan.MASTERNO)" ;
if ( ! string . IsNullOrEmpty ( condition ) )
{
strSql + = " where " + condition ;
}
var list = SetData ( strSql ) ;
if ( list . Count > 0 )
{
return list [ 0 ] ;
}
return new MsOpPlan ( ) ;
}
private static List < MsOpPlan > SetData ( String strSql )
{
var headList = new List < MsOpPlan > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
MsOpPlan data = new MsOpPlan ( ) ;
#region Set DB data to Object
data . BSNO = Convert . ToString ( reader [ "BSNO" ] ) ;
data . MASTERNO = Convert . ToString ( reader [ "MASTERNO" ] ) ;
data . BSSTATUS = Convert . ToString ( reader [ "BSSTATUS" ] ) ;
data . OPSTATUS = Convert . ToString ( reader [ "OPSTATUS" ] ) ;
data . DRFEESTATUS = getfeestatus ( Convert . ToString ( reader [ "DRFEESTATUS" ] ) ) ;
data . CRFEESTATUS = getfeestatus ( Convert . ToString ( reader [ "CRFEESTATUS" ] ) ) ;
data . CUSTNO = Convert . ToString ( reader [ "CUSTNO" ] ) ;
data . BSCUSTNO = Convert . ToString ( reader [ "BSCUSTNO" ] ) ;
data . CUSTOMERNAME = Convert . ToString ( reader [ "CUSTOMERNAME" ] ) ;
data . BSDATE = Convert . ToString ( reader [ "BSDATE" ] ) ;
data . ACCDATE = Convert . ToString ( reader [ "ACCDATE" ] ) ;
data . BSSOURCE = Convert . ToString ( reader [ "BSSOURCE" ] ) ;
data . BSSOURCEDETAIL = Convert . ToString ( reader [ "BSSOURCEDETAIL" ] ) ;
data . SALE = Convert . ToString ( reader [ "SALE" ] ) ;
data . CORPID = Convert . ToString ( reader [ "CORPID" ] ) ;
data . REMARK = Convert . ToString ( reader [ "REMARK" ] ) ;
data . OTREMARK = Convert . ToString ( reader [ "OTREMARK" ] ) ;
data . INPUTBY = Convert . ToString ( reader [ "INPUTBY" ] ) ;
if ( reader [ "INPUTDATE" ] ! = DBNull . Value )
data . INPUTDATE = Convert . ToDateTime ( reader [ "INPUTDATE" ] ) . ToString ( "yyyy-MM-dd hh:mm:ss" ) ;
data . FEEDATE = Convert . ToString ( reader [ "FEEDATE" ] ) ;
decimal ttldr = 0 ;
if ( reader [ "TTLDR" ] ! = DBNull . Value )
ttldr = Convert . ToDecimal ( reader [ "TTLDR" ] ) ;
decimal ttlinvdr = 0 ;
if ( reader [ "TTLDR" ] ! = DBNull . Value )
ttlinvdr = Convert . ToDecimal ( reader [ "TTLINVDR" ] ) ;
if ( ttlinvdr = = 0 ) data . DRINVSTATUS = "未开票" ;
else if ( ttlinvdr = = ttldr ) data . DRINVSTATUS = "已开票" ;
else if ( ttlinvdr ! = ttldr ) data . DRINVSTATUS = "部分开票" ;
if ( reader [ "TOSALE" ] ! = DBNull . Value )
data . TOSALE = Convert . ToBoolean ( reader [ "TOSALE" ] ) ;
if ( reader [ "AMOUNT" ] ! = DBNull . Value )
data . AMOUNT = Convert . ToDecimal ( reader [ "AMOUNT" ] ) ;
data . MODIFIEDUSER = Convert . ToString ( reader [ "MODIFIEDUSER" ] ) ;
if ( reader [ "MODIFIEDTIME" ] ! = DBNull . Value )
data . MODIFIEDTIME = Convert . ToDateTime ( reader [ "MODIFIEDTIME" ] ) . ToString ( "yyyy-MM-dd hh:mm:ss" ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
public static string getfeestatus ( string feestatusint )
{
var result = "" ;
if ( feestatusint = = "0:" )
{
return "审核通过" ;
}
else if ( feestatusint = = "1:" )
{
return "录入状态" ;
}
else if ( feestatusint = = "2:" )
{
return "提交审核" ;
}
else if ( feestatusint = = "8:" )
{
return "部分结算" ;
}
else if ( feestatusint = = "9:" )
{
return "结算完毕" ;
}
else if ( feestatusint = = "" )
{
return "未录入" ;
}
else if ( feestatusint = = "3:" )
{
return "申请修改" ;
}
else if ( feestatusint = = "4:" )
{
return "申请删除" ;
}
else if ( feestatusint = = "6:" )
{
return "驳回提交" ;
}
else if ( feestatusint = = "7:" )
{
return "驳回申请" ;
}
else if ( feestatusint . IndexOf ( "9:" ) > - 1 )
{
return "部分结算" ;
}
else if ( feestatusint . IndexOf ( "8:" ) > - 1 )
{
return "部分结算" ;
}
else if ( feestatusint . IndexOf ( "0:" ) > - 1 )
{
return "部分审核" ;
}
else if ( feestatusint . IndexOf ( "2:" ) > - 1 )
{
return "部分提交" ;
}
else if ( feestatusint . IndexOf ( "6:" ) > - 1 )
{
return "驳回提交" ;
}
else if ( feestatusint . IndexOf ( "7:" ) > - 1 )
{
return "驳回申请" ;
}
return result ;
}
# endregion
#region 明细表
public static DBResult DeleteDetail ( MsOpPlan headData )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
var cmdDelete = db . GetSqlStringCommand ( "delete from op_plan_detail where BSNO='" + headData . BSNO + "'" ) ;
db . ExecuteNonQuery ( cmdDelete , tran ) ;
tran . Commit ( ) ;
}
catch ( Exception )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "删除出现错误,请重试或联系系统管理员" ;
return result ;
}
}
result . Success = true ;
result . Message = "保存成功" ;
return result ;
}
# endregion
#region 判断编码是否有重复
static public int GetRdCount ( string strCondition )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( "SELECT " ) ;
strSql . Append ( " Count(BSNO) AS CT " ) ;
strSql . Append ( " from op_plan " ) ;
if ( strCondition . Trim ( ) ! = String . Empty )
{
strSql . Append ( " where " + strCondition ) ;
}
var ct = 0 ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
ct = Convert . ToInt16 ( reader [ "CT" ] ) ;
}
reader . Close ( ) ;
}
return ct ;
}
# endregion
#region EXCEL导入
public static DBResult ImpOpPlan ( DataTable table , string userid , string username , string companyid )
{
var result = new DBResult ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
var cmdInsert =
db . GetSqlStringCommand (
@ "insert into op_plan (BSNO,CUSTNO,BSDATE,ACCDATE,BSSOURCE,BSSOURCEDETAIL,CUSTOMERNAME,SALE,AMOUNT,FEEDATE,REMARK,OTREMARK,INPUTBY,INPUTDATE,SFNO,CORPID)
values ( @BSNO , @CUSTNO , @BSDATE , @ACCDATE , @BSSOURCE , @BSSOURCEDETAIL , @CUSTOMERNAME , @SALE , @AMOUNT , @FEEDATE , @REMARK , @OTREMARK , @INPUTBY , @INPUTDATE , @SFNO , @CORPID ) ");
var _date = System . DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) ;
var FEEDATE = "" ;
using ( var conn = db . CreateConnection ( ) )
{
conn . Open ( ) ;
var tran = conn . BeginTransaction ( ) ;
try
{
int num = 0 ;
foreach ( DataRow row in table . Rows )
{
if ( row [ 1 ] . ToString ( ) ! = "" )
{
num = num + 1 ;
FEEDATE = Convert . ToString ( row [ "首次计费时间" ] ) . Replace ( "/" , "-" ) ;
if ( FEEDATE ! = "" )
{
var datelist = FEEDATE . Split ( '-' ) ;
if ( datelist . Length > 2 )
{
var datemonth = datelist [ 1 ] ;
if ( datemonth . Length = = 1 ) datemonth = "0" + datemonth ;
var dateday = datelist [ 2 ] ;
if ( dateday . Length = = 1 ) dateday = "0" + dateday ;
FEEDATE = datelist [ 0 ] + "-" + datemonth + "-" + dateday ;
if ( Convert . ToDateTime ( FEEDATE . Substring ( 0 , 10 ) ) > DateTime . Now . AddMonths ( 1 ) )
FEEDATE = Convert . ToDateTime ( FEEDATE . Substring ( 0 , 10 ) ) . AddYears ( - 70 ) . ToString ( "yyyy-MM-dd" ) ;
else FEEDATE = Convert . ToDateTime ( FEEDATE . Substring ( 0 , 10 ) ) . ToString ( "yyyy-MM-dd" ) ;
}
}
var ACCDATE = "" ;
var MONTH = Convert . ToString ( row [ "月份" ] ) ;
if ( MONTH . Length < 7 )
{
var YEAR = DateTime . Now . ToString ( "yyyy" ) ;
if ( MONTH = = "12" | | MONTH = = "11" )
{
var NOWMONTH = DateTime . Now . Month ;
if ( NOWMONTH < 3 )
{
YEAR = DateTime . Now . AddYears ( - 1 ) . ToString ( "yyyy" ) ;
}
}
if ( MONTH . Length = = 1 ) MONTH = "0" + MONTH ;
ACCDATE = YEAR + "-" + MONTH ;
}
else {
ACCDATE = MONTH ;
}
//if (!string.IsNullOrEmpty(CUSTNO))
//{
cmdInsert . Parameters . Clear ( ) ;
db . AddInParameter ( cmdInsert , "@BSNO" , DbType . String , Guid . NewGuid ( ) . ToString ( ) ) ;
db . AddInParameter ( cmdInsert , "@CUSTNO" , DbType . String , Convert . ToString ( row [ "计划单号" ] ) ) ;
db . AddInParameter ( cmdInsert , "@BSDATE" , DbType . String , System . DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) ) ;
db . AddInParameter ( cmdInsert , "@ACCDATE" , DbType . String , ACCDATE ) ;
db . AddInParameter ( cmdInsert , "@BSSOURCE" , DbType . String , Convert . ToString ( row [ "业务来源" ] ) ) ;
db . AddInParameter ( cmdInsert , "@BSSOURCEDETAIL" , DbType . String , Convert . ToString ( row [ "来源明细" ] ) ) ;
db . AddInParameter ( cmdInsert , "@CUSTOMERNAME" , DbType . String , Convert . ToString ( row [ "客户名称" ] ) ) ;
db . AddInParameter ( cmdInsert , "@SALE" , DbType . String , Convert . ToString ( row [ "揽货人" ] ) ) ;
db . AddInParameter ( cmdInsert , "@AMOUNT" , DbType . Decimal , Convert . ToDecimal ( row [ "金额" ] ) ) ;
db . AddInParameter ( cmdInsert , "@FEEDATE" , DbType . String , FEEDATE ) ;
db . AddInParameter ( cmdInsert , "@REMARK" , DbType . String , Convert . ToString ( row [ "备注" ] ) ) ;
db . AddInParameter ( cmdInsert , "@OTREMARK" , DbType . String , Convert . ToString ( row [ "其他备注" ] ) ) ;
db . AddInParameter ( cmdInsert , "@INPUTBY" , DbType . String , username ) ;
db . AddInParameter ( cmdInsert , "@INPUTDATE" , DbType . String , System . DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) ) ;
db . AddInParameter ( cmdInsert , "@SFNO" , DbType . Int32 , num ) ;
db . AddInParameter ( cmdInsert , "@CORPID" , DbType . String , companyid ) ;
db . ExecuteNonQuery ( cmdInsert , tran ) ;
//}
}
}
tran . Commit ( ) ;
result . Success = true ;
result . Message = "导入成功" ;
}
catch ( Exception ex )
{
tran . Rollback ( ) ;
result . Success = false ;
result . Message = "导入中出错:" + ex . Message + FEEDATE ;
}
}
return result ;
}
# endregion
public static DBResult SaveToOther ( List < MsOpPlan > bodyList , string userid , string username , string companyid )
{
var result = new DBResult ( ) ;
if ( bodyList ! = null )
{
T_ALL_DA T_ALL_DA = new EntityDA . T_ALL_DA ( ) ;
string rq = T_ALL_DA . GetStrSQL ( "rq" , "select getdate() as rq" ) ;
foreach ( var enumValue in bodyList )
{
var headData = new MsOpOtherEntity ( ) ;
headData . CORPID = companyid ;
headData . BSNO = "topother" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) ;
headData . ACCDATE = enumValue . ACCDATE ;
headData . SALE = enumValue . SALE ;
headData . BSSOURCE = enumValue . BSSOURCE ;
headData . BSSOURCEDETAIL = enumValue . BSSOURCEDETAIL ;
headData . REMARK = enumValue . REMARK ;
headData . CUSTOMERNAME = enumValue . CUSTOMERNAME ;
headData . DbOperationType = DbOperationType . DbotIns ;
headData . BSDATE = DateTime . Now . ToString ( "yyyy-MM-dd hh:mm:ss" ) ;
headData . ETD = DateTime . Now . ToString ( "yyyy-MM-dd" ) ;
headData . OPLB = "op_other" ; //业务类型
headData . OPLBNAME = "散杂运输" ; //业务类型名称
headData . BSSTATUS = false ; //业务状态
headData . FEESTATUS = false ; //费用状态
headData . ISVOU = false ; //是否生成凭证
headData . VOUNO = "" ; //凭证号
headData . CREATEUSER = userid ; //创建人
headData . CREATETIME = DateTime . Parse ( rq ) ; //创建时间
headData . MODIFIEDUSER = userid ; //最后一次操作人
headData . MODIFIEDTIME = DateTime . Parse ( rq ) ; //最后一次操作时间
var billnoset = MsSysBillNoSetDAL . GetData ( "OPLBNAME='综合业务'" , companyid ) ;
if ( billnoset . BILLTYPE ! = "" )
{
var CUSTOMHEAD = "" ;
if ( billnoset . CUSTOMHEAD ! = "" )
{
var HBLCUSTOMHEAD = billnoset . CUSTOMHEAD ;
if ( ( HBLCUSTOMHEAD . IndexOf ( "[SALE]" ) > = 0 ) & & ! string . IsNullOrEmpty ( headData . SALE ) )
{
var user = SysUserDAL . GetData ( "u.SHOWNAME='" + headData . SALE + "'" ) ;
if ( ! string . IsNullOrEmpty ( user . NOCODE ) )
HBLCUSTOMHEAD = HBLCUSTOMHEAD . Replace ( "[SALE]" , user . NOCODE ) ;
}
if ( ( HBLCUSTOMHEAD . IndexOf ( "[OP]" ) > = 0 ) & & ! string . IsNullOrEmpty ( headData . OP ) )
{
var user = SysUserDAL . GetData ( "u.SHOWNAME='" + headData . OP + "'" ) ;
if ( ! string . IsNullOrEmpty ( user . NOCODE ) )
HBLCUSTOMHEAD = HBLCUSTOMHEAD . Replace ( "[OP]" , user . NOCODE ) ;
}
CUSTOMHEAD = HBLCUSTOMHEAD ;
var CUST = MsInfoClientDAL . GetData ( "SHORTNAME='" + headData . CUSTOMERNAME + "'" ) ;
CUSTOMHEAD = CUSTOMHEAD . Replace ( "[CUSTCODE]" , CUST . CODENAME ) ;
}
headData . CUSTNO = MsSysBillNoSetDAL . GetBillNo ( billnoset , headData . ETD . ToString ( ) . Trim ( ) , headData . ACCDATE . ToString ( ) . Trim ( ) , "" , headData . OP , headData . SALECORPID , CUSTOMHEAD ) ;
}
else {
headData . CUSTNO = MsOpOtherDAL . MsOpOtherDAL . getCodeRule ( "委托编号" , 6 , "CUSTNO" , headData . BSDATE . ToString ( ) . Trim ( ) , headData . ACCDATE . ToString ( ) . Trim ( ) , userid , companyid ) ;
}
var modb = new ModelObjectDB ( ) ;
result = modb . Save ( headData ) ;
if ( result . Success ) {
var newfeelist = new List < MsChFee > ( ) ;
var enumValueBody = new MsChFee ( ) ;
enumValueBody . GId = Guid . NewGuid ( ) . ToString ( ) ;
enumValueBody . BsNo = "*" ;
enumValueBody . FeeType = 1 ;
enumValueBody . FeeStatus = 0 ;
if ( headData . BSSOURCE = = "维护" | | headData . BSSOURCE . IndexOf ( "续费" ) > 0 )
enumValueBody . FeeName = "维护费" ;
else
enumValueBody . FeeName = "软件费" ;
enumValueBody . CustomerName = enumValue . CUSTOMERNAME ;
enumValueBody . EnteroPerator = userid ;
enumValueBody . Unit = "票" ;
enumValueBody . Quantity = 1 ;
enumValueBody . UnitPrice = enumValue . AMOUNT ;
enumValueBody . Amount = enumValue . AMOUNT ;
enumValueBody . NoTaxAmount = enumValue . AMOUNT ;
enumValueBody . Currency = "RMB" ;
enumValueBody . ExChangerate = 1 ;
enumValueBody . IsOpen = "0" ;
enumValueBody . IsAdvancedpay = "0" ;
//enumValueBody.FeeStatus = 1;
enumValueBody . TaxRate = 0 ;
enumValueBody . AccTaxRate = 0 ;
enumValueBody . IsInvoice = "0" ;
enumValueBody . LOCALCURR = "RMB" ;
if ( enumValueBody . Amount ! = 0 )
newfeelist . Add ( enumValueBody ) ;
if ( newfeelist . Count ! = 0 )
MsChFeeDAL . MsChFeeDAL . SaveUpdateFee ( newfeelist , headData . BSNO , userid ) ;
enumValue . DbOperationType = DbOperationType . DbotUpd ;
enumValue . MASTERNO = headData . BSNO ;
enumValue . MODIFIEDUSER = userid ; //最后一次操作人
enumValue . MODIFIEDTIME = DateTime . Now . ToString ( "yyyy-MM-dd hh:mm:ss" ) ; //最后一次操作时间
modb . Save ( enumValue ) ;
}
}
}
result . Success = true ;
result . Message = "保存成功" + result . Message ;
return result ;
}
#region Rang权限范围
public static string GetRangDAStr ( string tb , string userid , string username , string companyid )
{
string str = "" ;
var strSql = new StringBuilder ( ) ;
strSql . Append ( "SELECT" ) ;
strSql . Append ( " VISIBLERANGE,OPERATERANGE,AUTHORITYID,VSSQL" ) ;
strSql . Append ( " from VW_User_Authority" ) ;
strSql . Append ( " where [NAME]='modOpPlanList' 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 = " (INPUTBY='" + username + "' OR SALE='" + username + "')" ;
}
else if ( visiblerange = = "3" )
{
str = " (INPUTBY='" + username + "' OR SALE='" + username + "')" ;
}
else if ( visiblerange = = "2" )
{
var rangeDa = new RangeDA ( ) ;
var deptname = rangeDa . GetDEPTNAME ( userid ) ;
str = " (INPUTBY in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "'))"
+ " OR SALE in (select showname from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')))" ;
}
else if ( visiblerange = = "1" )
{
str = " (UPPER(op_plan.Corpid)='" + companyid + "') " ;
}
else if ( visiblerange = = "5" )
{
if ( tb = = "index" )
{
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 = " (op_plan.Corpid='" + Convert . ToString ( reader [ "COMPANYID" ] ) + "' " ;
}
else
{
str = str + " or op_plan.Corpid='" + Convert . ToString ( reader [ "COMPANYID" ] ) + "'" ;
} ;
}
str = str + ")" ;
reader . Close ( ) ;
}
}
else
{
str = " (UPPER(op_plan.Corpid)='" + companyid + "') " ;
}
}
else if ( visiblerange = = "6" )
{
if ( tb = = "index" )
{
var opstr = "" ;
var userstr = new StringBuilder ( ) ;
userstr . Append ( " select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1" ) ;
Database userdb = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = userdb . ExecuteReader ( CommandType . Text , userstr . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
if ( opstr = = "" )
{
opstr = " ('" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "'" ;
}
else
{
opstr = opstr + ",'" + Convert . ToString ( reader [ "SHOWNAME" ] ) + "'" ;
} ;
}
if ( opstr ! = "" ) opstr = opstr + ")" ;
reader . Close ( ) ;
}
if ( opstr = = "" ) opstr = "('" + username + "')" ;
str = " (INPUTBY in " + opstr + " or SALE IN " + opstr + " )" ;
}
else
{
str = " (UPPER(op_plan.Corpid)='" + companyid + "') " ;
}
}
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
}
}