You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/DSWeb/Areas/MvcShipping/DAL/MsOpPlan/MsOpPlanDAL.cs

793 lines
35 KiB
C#

2 years ago
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 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
}
}