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/Controllers/MsChFeeAutoDuiController.cs

1136 lines
46 KiB
C#

2 years ago
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using DSWeb.Areas.CommMng.DAL;
using DSWeb.Areas.RptMng.Comm;
using DSWeb.TruckMng.Comm.Cookie;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.EntityDA;
using DSWeb.Areas.CommMng.Models;
using HcUtility.Comm;
using HcUtility.Core;
using System.IO;
using System.Data.OleDb;
using DSWeb.MvcShipping.Models.MsChFeeAutoDui;
using DSWeb.MvcShipping.DAL.MsChFeeAutoDuiDAL;
using DSWeb.MvcShipping.DAL.MsChDui;
using DSWeb.MvcShipping.Models.MsChDui;
using DSWeb.MvcShipping.Models.MsChDuiView;
using DSWeb.MvcShipping.DAL.MsSysBillNoSet;
using DSWeb.MvcShipping.DAL.Chfee_AuditDAL;
using DSWeb.Areas.Account.Models.MsOpBill;
using System.Web.Configuration;
using DSWeb.Areas.Account.Models.Chfee_Payapplication;
using DSWeb.Areas.Account.DAL.Chfee_Payapplication;
using DSWeb.Areas.Account.Models.ChfeeDetail;
using DSWeb.MvcShipping.Helper;
using DSWeb.TruckMng.Helper.Repository;
//using DSWeb.MvcShipping.Helper.Repository;
namespace DSWeb.MvcShipping.Controllers
{
/// <summary>
/// 路单查询
/// </summary>
[JsonRequestBehavior]
public class MsChFeeAutoDuiController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Edit()
{
return View();
}
public static string GetRangDAStr(string tb, string userid, string usercode, string orgcode)
{
string str = "";
var strSql = new StringBuilder();
strSql.Append("SELECT ");
strSql.Append(" VISIBLERANGE,OPERATERANGE ");
strSql.Append(" from VW_User_Authority ");
strSql.Append(" where [NAME]='modMsChFeeAutoDui' and USERID='" + userid + "' and ISDELETE=0");
string visiblerange = "4";
string operaterange = "4";
Database db = DatabaseFactory.CreateDatabase();
DataSet ds = new DataSet();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
visiblerange = Convert.ToString(reader["VISIBLERANGE"]);
operaterange = Convert.ToString(reader["OPERATERANGE"]);
break;
}
reader.Close();
}
if (visiblerange == "4")
{
str = "1=2";
}
else if (visiblerange == "3")
{
if (tb == "index")
{
str = " A.UserCode='" + usercode + "'";
}
else
{
str = " UPPER(A.OrgCode)='" + orgcode + "'";
}
}
else if (visiblerange == "2")
{
if (tb == "index")
{
var rangeDa = new RangeDA();
var companyid = rangeDa.GetCORPID(userid);
var deptname = rangeDa.GetDEPTNAME(userid);
var userstr = new StringBuilder();
userstr.Append(" select codename from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')");
Database userdb = DatabaseFactory.CreateDatabase();
using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString()))
{
str = "";
while (reader.Read())
{
if (str == "")
{
str = "(A.usercode='" + Convert.ToString(reader["codename"]) + "'";
}
else
{
str = str+ " or A.usercode='" + Convert.ToString(reader["codename"]) + "'";
};
}
str =str+ ")";
reader.Close();
}
}
else
{
str = " UPPER(A.OrgCode)='" + orgcode + "'";
}
}
else if (visiblerange == "1")
{
str = " UPPER(A.OrgCode)='" + orgcode + "'";
}
return str;
}
public ContentResult GetDataList(int start, int limit, string sort, string condition)
{
var dataList = MsChFeeAutoDuiDAL.GetDataList(condition, sort);
var list = dataList.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() });
return new ContentResult() { Content = json };
}
public ContentResult GetData(string handle,string condition)
{
MsChFeeAutoDuimb head = null;
if (handle == "add")
{
head = new MsChFeeAutoDuimb();
head.GID = System.Guid.NewGuid().ToString();
head.OP = Convert.ToString(Session["SHOWNAME"]);
head.OPDATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
head.FEETYPE = "2";
head.FEEDC = "0";
head.DUITYPE = "1";
head.FEEDUITYPECONDIT = "等于";
}
else
{
var _t = "";
var list = MsChFeeAutoDuiDAL.GetDataList(condition, _t);
if (list.Count > 0)
head = list[0];
if (head == null)
{
head = new MsChFeeAutoDuimb();
}
}
var json = JsonConvert.Serialize(
new { Success = true, Message = "查询成功", data = head });
return new ContentResult() { Content = json };
}
public ContentResult GetBodyList ( int start, int limit, string sort, string condition )
{
var dataList = MsChFeeAutoDuiDAL.GetBodyList(condition, sort);
var list = dataList.Skip(start).Take(limit);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() });
return new ContentResult() { Content = json };
}
public ContentResult GetBodyListStr(string sort, string condition)
{
var dataListStr = MsChFeeAutoDuiDAL.GetBodyListStr(condition, sort);
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", Data = dataListStr });
return new ContentResult() { Content = json };
}
public ContentResult Save ( string opstatus, string data,
string CargoBody, string CargoDelBody )
{
var head = JsonConvert.Deserialize<MsChFeeAutoDuimb>(data);
var CargobodyList = JsonConvert.Deserialize<List<CH_FEE_AutoDuiDetailmb>>(CargoBody);
var CargodelbodyList = JsonConvert.Deserialize<List<CH_FEE_AutoDuiDetailmb>>(CargoDelBody);
if (opstatus == "add")
{
head.DbOperationType = DbOperationType.DbotIns;
head.ModelUIStatus = "I";
//head.Mainstate = "0";
head.GID = PubSysDAL.GetBillNo("N001");
}
else if (opstatus == "edit")
{
head.DbOperationType = DbOperationType.DbotUpd;
head.ModelUIStatus = "E";
}
else
{
head.DbOperationType = DbOperationType.DbotDel;
}
var _OP = Session["SHOWNAME"].ToString();
head.OP = _OP;
head.OPDATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
var modb = new ModelObjectRepository();
DBResult result = modb.Save(head,
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(CargobodyList),
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(CargodelbodyList)
);
head = MsChFeeAutoDuiDAL.GetData("GID='" + head.GID + "'");
//var _r2 = MsChFeeAutoDuiDAL.ReMake(head);
//刷新父窗口上的父节点
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = MsChFeeAutoDuiDAL.GetData("GID='" + head.GID + "'")
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult CFSave(string data,
string CargoBody, string CargoDelBody)
{
var head = JsonConvert.Deserialize<MsChFeeAutoDuimb>(data);
var CargobodyList = MsChFeeAutoDuiDAL.GetBodyList(" D.BSNO='" + head.GID + "' and isnull(D.ISOK,0)=1 ");
head.DbOperationType = DbOperationType.DbotIns;
head.ModelUIStatus = "I";
//head.Mainstate = "0";
head.GID = PubSysDAL.GetBillNo("N001");
var _OP = Session["SHOWNAME"].ToString();
head.OP = _OP;
head.OPDATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
head.STATUS = "对账平衡";
var modb = new ModelObjectDB();
DBResult result = modb.Save(head);
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
CargobodyList.ForEach(i =>
{
if (i.ISOK == "1")
{
var cmd = db.GetSqlStringCommand("update CH_FEE_AutoDuiDetail set BSNO='"+head.GID+"' WHERE GID='"+i.GID+"'");
db.ExecuteNonQuery(cmd, tran);
}
});
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
}
}
head = MsChFeeAutoDuiDAL.GetData("GID='" + head.GID + "'");
//var _r2 = MsChFeeAutoDuiDAL.ReMake(head);
//刷新父窗口上的父节点
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = MsChFeeAutoDuiDAL.GetData("GID='" + head.GID + "'")
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
private List<CH_FEE_AutoDuiDetailmb> InsertLocalDetail ( MsChFeeAutoDuimb head, List<CH_FEE_AutoDuiDetailmb> DetailList )
{
//如果有开始和结束日期查询所有结算对象中包含head.customername的业务
//然后遍历DetailList,如果提单号没有则向DetailList当中添加该业务。
var userid = Session["USERID"].ToString();
var username = Session["SHOWNAME"].ToString();
var companyid = Session["COMPANYID"].ToString();
var feesql = "";
if (head.FSTATUS == "1") {
feesql = " AND ch_fee.FEESTATUS IN (0,8,9) ";
} else if (head.FSTATUS == "2")
{
feesql = " AND ch_fee.FEESTATUS IN (1,2) ";
}
else if (head.FSTATUS == "3")
{
feesql = " AND ch_fee.FEESTATUS IN (0,8,9) AND ch_fee.ORDERAMOUNT=0 ";
}
else if (head.FSTATUS == "4")
{
feesql = " AND ch_fee.ORDERAMOUNT=0 ";
}
var BillList = new List<MsOpBill>();
if (head.STARTDATE != "" && head.ENDDATE != "")
{
if (head.HAVEDEBIT == "0")
{
//BillList = Chfee_AuditDAL.GetBillDataList(" OPLBNAME='海运出口' and ETD between '" + head.STARTDATE + "' and '" + head.ENDDATE + "' and exists(select 1 from ch_fee where customername='" + head.CUSTOMERNAME + "' and bsno=V_op_Bill.BSNO and Amount<>settlement and isnull(ISDEBIT,0)=0) ", userid, username, companyid);
BillList = Chfee_AuditDAL.GetBillDataList(" ETD between '" + head.STARTDATE + "' and '" + head.ENDDATE + "' and exists(select 1 from ch_fee where ch_fee.customername='" + head.CUSTOMERNAME + "' and ch_fee.bsno=V_op_Bill.BSNO and Amount<>settlement and isnull(ISDEBIT,0)=0 "+feesql+") ", userid, username, companyid);
}
else
{
BillList = Chfee_AuditDAL.GetBillDataList(" ETD between '" + head.STARTDATE + "' and '" + head.ENDDATE + "' and exists(select 1 from ch_fee where ch_fee.customername='" + head.CUSTOMERNAME + "' and ch_fee.bsno=V_op_Bill.BSNO and Amount<>settlement " + feesql + ") ", userid, username, companyid);
}
foreach (var _bill in BillList)
{
var = true;
foreach (var _d in DetailList)
{
if (_bill.MBLNO == _d.MBLNO)
{
= false;
continue;
}
}
if ()
{
var newdetail = new CH_FEE_AutoDuiDetailmb();
newdetail.GID = Guid.NewGuid().ToString();
newdetail.MBLNO = _bill.MBLNO;
newdetail.ISOK = "0";
newdetail.BSNO = "";
newdetail.RMBAMOUNT = "0";
newdetail.USDAMOUNT = "0";
newdetail.L_RMBAMOUNT = "0";
newdetail.L_USDAMOUNT = "0";
newdetail.REMARK2 = "对方账单无此提单号";
DetailList.Add(newdetail);
}
}
}
return DetailList;
}
public ContentResult ReMake (string data )
{
var head = JsonConvert.Deserialize<MsChFeeAutoDuimb>(data);
/* 20170124 DAL便excel
var DetailList = MsChFeeAutoDuiDAL.GetBodyList("BSNO='"+head.GID+"'");
DetailList = InsertLocalDetail(head, DetailList);
var _DelDetailList = new List<CH_FEE_AutoDuiDetailmb>();
var modb = new ModelObjectRepository();
DBResult result = modb.SaveComm("BSNO",head.GID,
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(DetailList),
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(_DelDetailList)
);
*/
var userid = Session["USERID"].ToString();
var username = Session["SHOWNAME"].ToString();
var companyid = Session["COMPANYID"].ToString();
DBResult result = MsChFeeAutoDuiDAL.ReMake(head, userid, username, companyid);
//刷新父窗口上的父节点
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = MsChFeeAutoDuiDAL.GetData("GID='" + head.GID + "'")
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult MakeDui ( string type ,string data )
{
var _head = JsonConvert.Deserialize<MsChFeeAutoDuimb>(data);
var head = MsChFeeAutoDuiDAL.GetData("GID='" + _head.GID + "'");
var result = new DBResult();
if (type == "1")
{
var DetailList = MsChFeeAutoDuiDAL.GetBodyJoinList(" D.BSNO='" + head.GID + "' and isnull(D.ISOK,0)=1 ");
//var _DelDetailList = new List<CH_FEE_AutoDuiDetailmb>();
var headData = new ChDui();
headData.DUIDATE = DateTime.Now.ToString("yyyy-MM-dd");
var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='客户对账'", Convert.ToString(Session["COMPANYID"]));
if (billnoset.BILLTYPE != "")
headData.DUINO = MsSysBillNoSetDAL.GetBillNo(billnoset, headData.DUIDATE.ToString().Trim(), headData.DUIDATE.ToString().Trim());
else
headData.DUINO = PubSysDAL.GetBillNo("0301");
headData.OP = Convert.ToString(Session["SHOWNAME"]);
headData.CUSTNAME = head.CUSTOMERNAME;
headData.DbOperationType = DbOperationType.DbotIns;
headData.ModelUIStatus = "I";
if (head.FEETYPE == "1") {
//应收
headData.DC = "D";
}
if (head.FEETYPE == "2")
{
//应付
headData.DC = "C";
}
if (head.FEETYPE == "3")
{
//全部
headData.DC = "A";
}
//费用范围 未结费用
headData.ISNOSTL = "B";
var DuiBillList = new List<ChDuiBill>();
var DuiBillDelList = new List<ChDuiBill>();
//对账单内业务明细
foreach (var _D in DetailList) {
if (_D.B_BSNO != "")
{
var DuiBill = new ChDuiBill();
DuiBill.DUINO = "";
DuiBill.BSNO = _D.B_BSNO;
DuiBillList.Add(DuiBill);
}
}
var modb = new ModelObjectRepository();
result = modb.Save(headData);
if (result.Success == true)
{
head.DUINO = headData.DUINO;
head.DbOperationType = DbOperationType.DbotUpd;
head.ModelUIStatus = "E";
result = modb.SaveHead(head
);
//Database db = DatabaseFactory.CreateDatabase();
//using (var conn = db.CreateConnection())
//{
// conn.Open();
// var tran = conn.BeginTransaction();
// try
// {
// var cmd = db.GetSqlStringCommand("insert ch_dui_bill(DUINO,BSNO) SELECT @DUINO,B_BSNO from CH_FEE_AutoDuiDetail D where D.BSNO='" + head.GID + "' AND isnull(D.B_BSNO,'')<>'' and isnull(D.ISOK,0)=1 ");
// db.AddInParameter(cmd, "@DUINO", DbType.String, head.DUINO);
// db.ExecuteNonQuery(cmd, tran);
// tran.Commit();
// }
// catch (Exception)
// {
// tran.Rollback();
// }
//}
//将范围内的费用逐个添加至对账单内。
var _isdebit = "否";
if (head.HAVEDEBIT != "1")
{
_isdebit = "否";//对账单属性 是否包含已对账
}
else
{
_isdebit = "是";
}
var _condition = "f.BSNO in (select bsno from v_op_bill b where EXISTS (select 1 from CH_FEE_AutoDuiDetail fd where (b.MBLNO=fd.MBLNO or b.HBLNO=fd.MBLNO) AND ISNULL(fd.MBLNO,'')<>'' AND isnull(fd.ISOK,0)=1 and fd.bsno='"
+ head.GID + "')) and f.customername='" + head.CUSTOMERNAME + "' and f.amount<>f.settlement ";
if (head.FEEDC != "0" && head.FEEDC.Trim()!= "")
{
_condition=_condition+" and f.FEETYPE=" + head.FEEDC;
}
if (head.CURR != "")
{
_condition=_condition+" and f.CURRENCY='" + head.CURR + "'";
}
if (head.FSTATUS == "1" || head.FSTATUS == "3")
{
_condition = _condition + " AND (F.FEESTATUS=0 or F.FEESTATUS=8 or F.FEESTATUS=9)";
}
else if (head.FSTATUS == "2")
{
_condition = _condition + " AND (F.FEESTATUS!=0 and F.FEESTATUS!=8 and F.FEESTATUS!=9) ";
}
if (head.FSTATUS == "3" || head.FSTATUS == "4")
{
_condition = _condition + " AND (f.AMOUNT-isnull(f.SETTLEMENT,0)-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0))<>0 ";
}
if (head.SALECORP != "") {
_condition = _condition + " AND F.SALECORP='"+head.SALECORP+"' ";
}
if (head.FEEDUITYPE != "")
{
if (head.FEEDUITYPECONDIT == "不等于")
{
_condition = _condition + " and not EXISTS (select 1 from code_fee c where c.[NAME]=f.FEENAME and c.DUITYPE='" + head.FEEDUITYPE + "') ";
}
else
{
_condition = _condition + " and EXISTS (select 1 from code_fee c where c.[NAME]=f.FEENAME and c.DUITYPE='" + head.FEEDUITYPE + "') ";
}
}
if (_isdebit == "是")
{
//包含已对账的,所以不加条件
}
else
{
_condition += " and isnull(f.ISDEBIT,0)=0 ";
}
var _feelist = MsChDuiDAL.GetFeeDetailList(_condition,"否", Convert.ToString(Session["USERID"]));
var feelist = new List<ChDuiDetailView>();
foreach (var _f in _feelist) {
var _df = new ChDuiDetailView();
_df.DUINO = "";
_df.CH_ID = _f.CH_ID;
_df.BSNO = _f.BSNO;
_df.FeeName = _f.FeeName;
_df.CustomerName = _f.CustomerName;
_df.Amount = _f.Amount;
_df.NoTaxAmount = _f.NoTaxAmount;
_df.BalAmount = _f.BalAmount;
_df.Currency = _f.Currency;
_df.ExChangerate = _f.ExChangerate;
feelist.Add(_df);
}
result = MsChDuiDAL.AddDetail(headData.DUINO, feelist, _isdebit);
////Database db = DatabaseFactory.CreateDatabase();
//using (var conn = db.CreateConnection())
//{
// conn.Open();
// var tran = conn.BeginTransaction();
// try
// {
// var cmdinsertbill = db.GetSqlStringCommand("insert into ch_dui_bill(BSNO,DUINO) SELECT distinct BSNO, '" + head.DUINO + "' FROM [ch_dui_detail] where duino = '" + duino + "' "
// + " AND NOT EXISTS (SELECT 1 from ch_dui_bill where DUINO='" + head.DUINO + "' AND BSNO=ch_dui_detail.BSNO )");
// tran.Commit();
// }
// catch (Exception)
// {
// tran.Rollback();
// }
//}
}
}
else {
//result = MsChFeeAutoDuiDAL.DelDui(head);
var userid=Session["USERID"].ToString();
var username=Session["SHOWNAME"].ToString();
var companyid=Session["COMPANYID"].ToString();
var headData = MsChDuiDAL.GetData("ch_dui.DUINO='" + _head.DUINO + "'", userid, username, companyid);
result = MsChDuiDAL.DelBill(_head.DUINO, "1=1");
if (result.Success == true)
{
var modb = new ModelObjectDB();
modb.Delete(headData, "update CH_FEE_AutoDui set DUINO='' where DUINO='" + headData.DUINO + "'");
MsSysBillNoSetDAL.DeleteBsNo(headData.DUINO);
}
//var jsonRespose2 = new JsonResponse { Success = result.Success, Message = result.Message };
//return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) };
}
//刷新父窗口上的父节点
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = MsChFeeAutoDuiDAL.GetData("GID='" + head.GID + "'")
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
public ContentResult MakeShen(string data)
{
var _head = JsonConvert.Deserialize<MsChFeeAutoDuimb>(data);
var head = MsChFeeAutoDuiDAL.GetData("GID='" + _head.GID + "'");
var headShen = new ChPayapplication();
headShen.GID = Guid.NewGuid().ToString();
headShen.COMPANYID = CookieConfig.GetCookie_CompanyId(Request);
headShen.APPLICANT = CookieConfig.GetCookie_UserId(Request);
headShen.APPLYTIME = DateTime.Now;
headShen.ENTERTIME = DateTime.Now;
headShen.DbOperationType = DbOperationType.DbotIns;
headShen.PAYABLETIME = DateTime.Now.ToString("yyyy-MM-dd");
var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='付费申请'", Convert.ToString(Session["COMPANYID"]));
if (billnoset.BILLTYPE != "")
headShen.BILLNO = MsSysBillNoSetDAL.GetBillNo(billnoset, headShen.PAYABLETIME.ToString().Trim(), headShen.APPLYTIME.ToString());
else
headShen.BILLNO = PubSysDAL.GetBillNo("0303");
headShen.CUSTOMERNAME = head.CUSTOMERNAME;
var modb = new ModelObjectDB();
DBResult result = modb.Save(headShen);
var DetailList = MsChFeeAutoDuiDAL.GetBodyList(" D.BSNO='" + head.GID + "' ");
var _condition = "";
var condition = "f.BSNO in (select bsno from v_op_bill b where EXISTS (select 1 from CH_FEE_AutoDuiDetail fd where (isnull(fd.ISOK,0)=1 or (fd.L_RMBAMOUNT<=fd.RMBAMOUNT AND fd.L_USDAMOUNT<=fd.USDAMOUNT)) and (b.MBLNO=fd.MBLNO or b.HBLNO=fd.MBLNO) AND ISNULL(fd.MBLNO,'')<>'' and fd.bsno='"
+ head.GID + "')) and f.customername='" + head.CUSTOMERNAME + "' and f.amount<>f.settlement ";
if (head.FEEDC != "0" && head.FEEDC.Trim() != "")
{
_condition = _condition + " and f.FEETYPE=" + head.FEEDC;
}
if (head.CURR != "")
{
_condition = _condition + " and f.CURRENCY='" + head.CURR + "'";
}
if (head.FSTATUS == "1"|| head.FSTATUS == "3")
{
_condition = _condition + " AND (F.FEESTATUS=0 or F.FEESTATUS=8 or F.FEESTATUS=9)";
}
else if (head.FSTATUS == "2")
{
_condition = _condition + " AND (F.FEESTATUS!=0 and F.FEESTATUS!=8 and F.FEESTATUS!=9) ";
}
if (head.FSTATUS == "3" || head.FSTATUS == "4")
{
_condition = _condition + " AND (f.AMOUNT-isnull(f.SETTLEMENT,0)-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0))<>0 ";
}
if (head.SALECORP != "")
{
_condition = _condition + " AND F.SALECORP='" + head.SALECORP + "' ";
}
if (head.FEEDUITYPE != "") {
if (head.FEEDUITYPECONDIT == "不等于")
{
_condition = _condition + " and not EXISTS (select 1 from code_fee c where c.[NAME]=f.FEENAME and c.DUITYPE='"+head.FEEDUITYPE+"') ";
}
else {
_condition = _condition + " and EXISTS (select 1 from code_fee c where c.[NAME]=f.FEENAME and c.DUITYPE='" + head.FEEDUITYPE + "') ";
}
}
condition = condition + _condition;
result = ChpayapplicationDAL.AddBill(headShen.BILLNO, headShen.CUSTOMERNAME,"", condition, null, Convert.ToString(Session["COMPANYID"]), Convert.ToString(Session["USERID"]),false);
var NOkList = DetailList.FindAll(t => !String.IsNullOrEmpty(t.B_BSNO)&& t.ISOK != "1" && ((Convert.ToDecimal(t.L_RMBAMOUNT)>Convert.ToDecimal(t.RMBAMOUNT))||(Convert.ToDecimal(t.L_USDAMOUNT)>Convert.ToDecimal(t.USDAMOUNT))));
if (NOkList != null) {
var feedolist = new List<Areas.Account.Models.ChfeeDetail.ChFeeDetail>();
foreach (var enumValue in NOkList)
{
var econdition = " f.customername='" + head.CUSTOMERNAME + "' and EXISTS (SELECT 1 FROM V_OP_BILL B WHERE B.BSNO=f.BSNO AND (b.MBLNO='" + enumValue.MBLNO+"' or b.HBLNO='"+enumValue.MBLNO+"')) ";
econdition = econdition + _condition;
var feelist = ChpayapplicationDAL.GetFeeDetailList(econdition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]));
decimal blrmbttl = 0; decimal blusdttl = 0;
decimal mrmb = 0;decimal musd = 0;
if (Convert.ToDecimal(enumValue.L_RMBAMOUNT) > Convert.ToDecimal(enumValue.RMBAMOUNT))
{ mrmb = Convert.ToDecimal(enumValue.RMBAMOUNT); } else { mrmb = Convert.ToDecimal(enumValue.L_RMBAMOUNT); };
if (Convert.ToDecimal(enumValue.L_USDAMOUNT) > Convert.ToDecimal(enumValue.USDAMOUNT))
{ musd = Convert.ToDecimal(enumValue.USDAMOUNT); }
else { musd = Convert.ToDecimal(enumValue.L_USDAMOUNT); };
feelist.ForEach(i =>
{
if (i.Currency == "RMB"&&i.BalAmount!=0) {
if ((blrmbttl + i.BalAmount) <= mrmb)
{
i.DoAmount = i.BalAmount;
i.StlAmount = i.BalAmount;
feedolist.Add(i);
blrmbttl = blrmbttl + i.BalAmount;
}
else {
if (blrmbttl<mrmb)
{
i.DoAmount = mrmb - blrmbttl;
i.StlAmount = mrmb - blrmbttl;
feedolist.Add(i);
blrmbttl = mrmb;
}
}
}
if (i.Currency == "USD" && i.BalAmount != 0)
{
if ((blusdttl + i.BalAmount) <= musd)
{
i.DoAmount = i.BalAmount;
i.StlAmount = i.BalAmount;
feedolist.Add(i);
blusdttl = blusdttl + i.BalAmount;
}
else
{
if (blusdttl < musd)
{
i.DoAmount = musd - blusdttl;
i.StlAmount = musd - blusdttl;
feedolist.Add(i);
blusdttl = musd;
}
}
}
});
}
if (feedolist != null) {
result=ChpayapplicationDAL.AddDetail(headShen.BILLNO, feedolist,"", Convert.ToString(Session["COMPANYID"]),head.SALECORP);
}
}
if (result.Success)
{ ChpayapplicationDAL.p_update_Amount(headShen.BILLNO); }
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
Data = MsChFeeAutoDuiDAL.GetData("GID='" + head.GID + "'")
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
[HttpPost]
public ContentResult File()
{
var jsonRespose = new JsonResponse { Success = false, Message = "" };
if (Request.Files.Count != 1)
{
jsonRespose.Success = false;
jsonRespose.Message = "请选择上传的文件";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var file = Request.Files["file"];
var BSNO = Request.Form["GID"].ToString().Trim();
var CUSTOMERNAME = Request.Form["CUSTOMERNAME"].ToString().Trim();
var FEETYPE = Request.Form["FEETYPE"].ToString().Trim();
if (file == null)
{
jsonRespose.Success = false;
jsonRespose.Message = "上传文件发生未知错误,请重新上传";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var path = Server.MapPath("../../UploadFiles/CtnTkDetail");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
var size = file.ContentLength;
var name = Path.GetFileName(file.FileName);
//var bsno = Request.Form["bsno"];
var usercode = CookieConfig.GetCookie_UserCode(Request);
string filename = path + "\\" + usercode + DateTime.Now.ToString("yyyyMMddHHmmssfff") + name;
if (System.IO.File.Exists(filename))
{
System.IO.File.Delete(filename);
}
file.SaveAs(filename);
if (!System.IO.File.Exists(filename))
{
jsonRespose.Success = false;
jsonRespose.Message = "上传的Excel不包含数据01";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
try
{
string ext = Path.GetExtension(file.FileName).ToLower();
if (ext != ".xls" && ext != ".xlsx")
{
jsonRespose.Success = false;
jsonRespose.Message = "上传的文件不是Excel文件";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var strMsg = "";
DataTable table = ExcelHelper.ExcelToDatatable(file.InputStream, ext, out strMsg);
if (!string.IsNullOrEmpty(strMsg))
{
jsonRespose.Success = false;
jsonRespose.Message = strMsg;
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
if (table.Rows.Count > 0)
{
}
else
{
jsonRespose.Success = false;
jsonRespose.Message = "excel无数据";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var message = string.Empty;
List<CH_FEE_AutoDuiDetailmb> headList;
//if (customerFieldName == "委托单位")
//{
var InsertCount = 0;
var UpdateCount = 0;
var msg = "";
//ImportExcelData ( HttpRequestBase request, DataTable table, out string msg,out Int32 InsertCount, out Int32 UpdateCount, string AutoDui_GID, string CUSTOMERNAME, out List<CH_FEE_AutoDuiDetailmb> headList )
var userid = Session["USERID"].ToString();
var username = Session["SHOWNAME"].ToString();
var companyid = Session["COMPANYID"].ToString();
var isSucess = MsChFeeAutoDuiDAL.ImportExcelData(Request, table, out msg, out InsertCount, out UpdateCount, BSNO, CUSTOMERNAME, FEETYPE, out headList, userid, username, companyid);
if (!isSucess)
{
jsonRespose.Success = false;
jsonRespose.Message = message;
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var json = JsonConvert.Serialize(new
{
success = true,
Message = "上传成功,共处理" + Convert.ToString(headList.Count) + "条记录,其中新增" + Convert.ToString(InsertCount)
+ "个,更新" + Convert.ToString(UpdateCount) + "个。" + msg,
data = ""
});
return new ContentResult() { Content = json };
}
catch (Exception e)
{
jsonRespose.Success = false;
jsonRespose.Message = "读取Excel文件出错请确认文件正确性" + e.Message;
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
[HttpPost]
public ContentResult File2()
{
var jsonRespose = new JsonResponse { Success = false, Message = "" };
if (Request.Files.Count != 1)
{
jsonRespose.Success = false;
jsonRespose.Message = "请选择上传的文件";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var file = Request.Files["file"];
var BSNO = Request.Form["GID"].ToString().Trim();
var CUSTOMERNAME = Request.Form["CUSTOMERNAME"].ToString().Trim();
var FEETYPE = Request.Form["FEETYPE"].ToString().Trim();
if (file == null)
{
jsonRespose.Success = false;
jsonRespose.Message = "上传文件发生未知错误,请重新上传";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var path = Server.MapPath("../../UploadFiles/CtnTkDetail");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
var size = file.ContentLength;
var name = Path.GetFileName(file.FileName);
//var bsno = Request.Form["bsno"];
var usercode = CookieConfig.GetCookie_UserCode(Request);
string filename = path + "\\" + usercode + DateTime.Now.ToString("yyyyMMddHHmmssfff") + name;
if (System.IO.File.Exists(filename))
{
System.IO.File.Delete(filename);
}
file.SaveAs(filename);
if (!System.IO.File.Exists(filename))
{
jsonRespose.Success = false;
jsonRespose.Message = "上传的Excel不包含数据01";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var ExcelExt = "";
try
{
ExcelExt = WebConfigurationManager.AppSettings["ExcelExt"].ToString();
}
catch
{
}
if (ExcelExt == "" || ExcelExt == null) ExcelExt = "Excel 8.0;HDR=Yes;IMEX=1";
var errostr = "";
List<string> sheets = ExcelSheetName(filename, ExcelExt, out errostr);
if (sheets.Count == 0)
{
jsonRespose.Success = false;
jsonRespose.Message = "上传的Excel不包含数据02" + errostr;
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
try
{
var sheetname = sheets[0];
//var sheetname ="Sheet1";
string excelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename +
";Extended Properties=" + ExcelExt;
if (filename.ToLower().IndexOf(".xlsx") > 0)
{
excelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename +
";Extended Properties=\"Excel 12.0 Xml;IMEX=1;HDR=Yes\"";
}
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "A1:X]", excelConn);
DataSet ds = new DataSet();
oada.Fill(ds);
if (ds.Tables.Count == 0)
{
jsonRespose.Success = false;
jsonRespose.Message = "上传的Excel不包含数据03";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var table = ds.Tables[0];
if (table.Rows.Count == 0)
{
jsonRespose.Success = false;
jsonRespose.Message = "上传的Excel不包含数据04";
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var message = string.Empty;
List<CH_FEE_AutoDuiDetailmb> headList;
//if (customerFieldName == "委托单位")
//{
var InsertCount = 0;
var UpdateCount = 0;
var msg = "";
//ImportExcelData ( HttpRequestBase request, DataTable table, out string msg,out Int32 InsertCount, out Int32 UpdateCount, string AutoDui_GID, string CUSTOMERNAME, out List<CH_FEE_AutoDuiDetailmb> headList )
var userid = Session["USERID"].ToString();
var username = Session["SHOWNAME"].ToString();
var companyid = Session["COMPANYID"].ToString();
var isSucess = MsChFeeAutoDuiDAL.ImportExcelData(Request, table, out msg, out InsertCount, out UpdateCount, BSNO, CUSTOMERNAME, FEETYPE, out headList, userid, username, companyid);
if (!isSucess)
{
jsonRespose.Success = false;
jsonRespose.Message = message;
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
var json = JsonConvert.Serialize(new
{
success = true,
Message = "上传成功,共处理" + Convert.ToString(headList.Count) + "条记录,其中新增" + Convert.ToString(InsertCount)
+ "个,更新" + Convert.ToString(UpdateCount) + "个。" + msg,
data = ""
});
return new ContentResult() { Content = json };
}
catch (Exception e)
{
jsonRespose.Success = false;
jsonRespose.Message = "读取Excel文件出错请确认文件正确性" + e.Message;
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
public List<string> ExcelSheetName ( string filepath,string ExcelExt,out string errostr)
{
var al = new List<string>();
try
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties="+ ExcelExt;
if (filepath.ToLower().IndexOf(".xlsx") > 0)
{
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath +
";Extended Properties=\"Excel 12.0 Xml;HDR=Yes\"";
}
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
System.Data.DataTable sheetNames = conn.GetOleDbSchemaTable
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
conn.Close();
foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[2].ToString());
}
}
catch (Exception e)
{
errostr = e.Message;
return new List<string>();
}
errostr = "";
return al;
}
public ContentResult Delete ( string data, string USERID )
{
var _head = JsonConvert.Deserialize<MsChFeeAutoDuimb>(data);
var head = MsChFeeAutoDuiDAL.GetData("GID='"+_head.GID+"'");
if (head.DUINO != "")
{
var jsonRespose1 = new JsonResponse { Success = false, Message = "已经生成了对账单,不能删除" };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose1) };
}
else
{
var modb = new ModelObjectDB();
DBResult result = modb.Delete(head, "delete from CH_FEE_AutoDuiDetail where BSNO='" + head.GID + "'");
//var ContractNo = head.ContractNo;
var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message };
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
#region 参照部分
#endregion
}
}