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.

156 lines
7.4 KiB
C#

10 months 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.Import.Models.Comm;
using DSWeb.Areas.CommMng.Models;
using DSWeb.TruckMng.Helper;
using DSWeb.TruckMng.Helper.Repository;
using Microsoft.Practices.EnterpriseLibrary.Data;
using HcUtility.Comm;
using HcUtility.Core;
namespace DSWeb.Areas.Import.Controllers
{
/// <summary>
/// 项目信息明细
/// </summary>
public class PaymentController : Controller
{
//
// GET: /Import/RptImportFeedetail/
public ActionResult Index()
{
return View();
}
public ActionResult Edit()
{
return View();
}
public ContentResult GetDataList(int start, int limit, string sort, string condition)
{
var dataList = 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 };
}
private static List<Import_Paymentmb> GetDataList(string strCondition, string sort)
{
var strSql = new StringBuilder();
strSql.Append(" select * from (select ip.FEENAME,ip.id,ip.gid ,c.NAME [companyname],M.HTH,ip.AMOUNT,ip.currency,m.op,M.buyer buyer,m.seller,m.port,m.company ");
strSql.Append(" ,dbo.trimdate(ip.createtime) createtime,ip.remark,dbo.f_danhao(ip.gid,1) CR_DR ");
strSql.Append(" ,cf.currency CF_currency,cf.settlement,(select top 1 PaymentGID from ch_fee where PaymentGID=ip.GID) as PaymentGID,isnull(ip.EXCHANGERATE,0) EXCHANGERATE ");
strSql.Append(" ,isnull(ip.DHF,0)DHF,isnull(ip.SXF,0) SXF,isnull(ip.ReceiveAgio,0) ReceiveAgio,isnull(ip.TotalAmount,0) TotalAmount ");
strSql.Append(" ,isnull((select sum(amount) amount from ch_fee where bsno=M.ContractNo ");
strSql.Append(" and feetype=1 and (CUSTOMERNAME=ip.BUYER OR CUSTOMERNAME=ip.SELLER) and (feename=ip.feename or REMARK like '%'+ip.feename+'%' )),0) ReceiveAmount ");
strSql.Append(" ,case ip.feename when '预付款' then dbo.trimdate(m.prepaydate) else dbo.trimdate(m.paydate) end paytime ");
strSql.Append(" ,dbo.trimdate(CZDATE) CZDATE ");
strSql.Append(" ,dbo.f_fee((select bsno from ch_fee where gid=ip.gid),ip.buyer,'RMB','购货差额') Amount_Did ");
strSql.Append(" ,(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=10 and EnumValueID=M.port) as portRef ");
strSql.Append(" from import_payment ip ");
strSql.Append(" left join ch_fee cf on cf.gid=ip.gid ");
strSql.Append(" left join import_main m on m.contractno=cf.BSNO ");
strSql.Append(" left join [company] c on c.gid=m.company )t ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
return SetData(strSql);
}
private static List<Import_Paymentmb> SetData(StringBuilder strSql)
{
var headList = new List<Import_Paymentmb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
var data = new Import_Paymentmb();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
//字段过滤器(判断是否存在该列)
reader.GetSchemaTable().DefaultView.RowFilter = "ColumnName= 'FEENAME'";
if (reader.GetSchemaTable().DefaultView.Count > 0)
data.FEENAME = Convert.ToString(reader["FEENAME"]);
data.PaymentGID = Convert.ToString(reader["PaymentGID"]);
data.HTH = Convert.ToString(reader["HTH"]);
data.CURRENCY = Convert.ToString(reader["CURRENCY"]);
data.AMOUNT = Convert.ToString(reader["AMOUNT"]);
data.OP = Convert.ToString(reader["OP"]);
data.BUYER = Convert.ToString(reader["BUYER"]);
data.SELLER = Convert.ToString(reader["SELLER"]);
data.REMARK = Convert.ToString(reader["REMARK"]);
data.CREATETIME = Convert.ToString(reader["CREATETIME"]);
data.PAYTIME = Convert.ToString(reader["PAYTIME"]);
data.CR_DR = Convert.ToString(reader["CR_DR"]);
data.CF_CURRENCY = Convert.ToString(reader["CF_CURRENCY"]);
data.SETTLEMENT = Convert.ToString(reader["SETTLEMENT"]);
data.EXCHANGERATE = Convert.ToDecimal(reader["EXCHANGERATE"]);
data.DHF = Convert.ToDecimal(reader["DHF"]);
data.SXF = Convert.ToDecimal(reader["SXF"]);
data.ReceiveAmount = Convert.ToDecimal(reader["ReceiveAmount"]);
data.ReceiveAgio = Convert.ToDecimal(reader["ReceiveAgio"]);
data.TotalAmount = Convert.ToDecimal(reader["TotalAmount"]);
data.id = Convert.ToDecimal(reader["id"]);
data.COMPANYNAME = Convert.ToString(reader["COMPANYNAME"]);
data.CZDATE = Convert.ToString(reader["CZDATE"]);
data.AMOUNT_DID = Convert.ToString(reader["AMOUNT_DID"]);
data.portRef = Convert.ToString(reader["portRef"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
public ContentResult Save(string PaymentBody, string PaymentDelBody)
{
var ProjectBodyList = JsonConvert.Deserialize<List<Import_Paymentmb>>(PaymentBody);
var ProjectDelBodyList = JsonConvert.Deserialize<List<Import_Paymentmb>>(PaymentDelBody);
var modb = new ModelObjectRepository();
DBResult result = modb.SaveComm(
ModelObjectConvert<Import_Paymentmb>.ToModelObjectList(ProjectBodyList),
ModelObjectConvert<Import_Paymentmb>.ToModelObjectList(ProjectDelBodyList)
);
foreach (var item in ProjectBodyList)
{
var str = "UPDATE import_main SET "+(item.FEENAME == "预付款"? "prepaydate": "paydate") +"='" + item.PAYTIME +
"' where contractno in(select BSNO from ch_fee where GID='" + item.GID + "')";
DSWeb.SoftMng.DBUtility.DbHelperSQL.ExecuteSql(str);
}
//刷新父窗口上的父节点
var jsonRespose = new JsonResponse
{
Success = result.Success,
Message = result.Message,
//Data = XXHDAL.GetData("M.ContractNo='" + head.ContractNo + "'")
};
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
}
}
}