using System; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using DSWeb.Areas.TruckMng.Models.Comm; using DSWeb.Areas.CommMng.DAL; using DSWeb.Areas.Account.DAL.Chfee_management; using DSWeb.Areas.Account.Models.Chfee_management; using DSWeb.TruckMng.Comm.Cookie; using DSWeb.TruckMng.Helper; using DSWeb.TruckMng.Helper.Repository; using DSWeb.Areas.TruckMng.DAL.Comm; using HcUtility.Comm; using HcUtility.Core; using DSWeb.Areas.Import.Models.CwVouchers; using DSWeb.Areas.Import.Models.CwVouitems; using DSWeb.Areas.Import.Models.CwDesign; using DSWeb.Areas.Import.Models.CWAccitems; using DSWeb.Areas.Import.DAL.CwVouchersDAL; using Microsoft.Practices.EnterpriseLibrary.Data; using System.Text; using System.Data; using DSWeb.EntityDA; using DSWeb.MvcShipping.DAL.MsSysBillNoSet; using DSWeb.MvcShipping.Models.MsSysBillNoSet; using DSWeb.Areas.Account.Models.MsCwVouchersGl3; namespace DSWeb.Areas.Account.Controllers { [JsonRequestBehavior] public class Chfee_managementController : Controller { // // GET: /Import/XXH public ActionResult Index() { return View(); } // // GET: /Import/XXH/Edit public ActionResult Edit() { return View(); } public ActionResult CMView() { return View(); } // // GET:/Import/XXH/GetDataList public ContentResult GetDataList(int start, int limit, string sort, string condition) { var dataList = Chfee_managementDAL.GetDataList(condition, Convert.ToString(Session["USERID"]),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) { C_Mmb head = null; if (handle == "edit") { var list = Chfee_managementDAL.GetDataList(condition, Convert.ToString(Session["USERID"])); if (list.Count > 0) head = list[0]; } if (head == null) { head = new C_Mmb(); } var json = JsonConvert.Serialize( new { Success = true, Message = "查询成功", data = head }); return new ContentResult() { Content = json }; } // // public ContentResult Save(string opstatus, string data, string FeeBody, string FeeDelBody) { var head = JsonConvert.Deserialize(data); var FeebodyList = JsonConvert.Deserialize>(FeeBody); var FeeDelbodyList = JsonConvert.Deserialize>(FeeDelBody); if (opstatus == "add") { head.DbOperationType = DbOperationType.DbotIns; head.ModelUIStatus = "I"; var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='管理费用'", Convert.ToString(Session["COMPANYID"])); if (billnoset.BILLTYPE != "") head.Feeid = MsSysBillNoSetDAL.GetBillNo(billnoset, head.CREATEDATE.ToString().Trim(), head.ACCDATE.ToString().Trim()); else head.Feeid = PubSysDAL.GetBillNo("0205"); //获取管理费单号 //20131011 应客户要求,将合同号改为接单人手动填写的必填项目。不再自动生成合同号 /*自动填写接单审单人id headData.UserCode = CookieConfig.GetCookie_UserCode(Request); headData.UserName = CookieConfig.GetCookie_UserName(Request); headData.OrgCode = CookieConfig.GetCookie_OrgCode(Request); headData.OrgName = CookieConfig.GetCookie_OrgName(Request);*/ //headData.LrDate = DateTime.Now; } else if (opstatus == "edit") { head.DbOperationType = DbOperationType.DbotUpd; head.ModelUIStatus = "E"; } else { head.DbOperationType = DbOperationType.DbotDel; } //if (FeebodyList != null && FeebodyList.Count != 0) { // foreach (var fee in FeebodyList) { // fee.FE // } //} var modb = new ModelObjectRepository(); DBResult result = modb.Save(head, ModelObjectConvert.ToModelObjectList(FeebodyList), ModelObjectConvert.ToModelObjectList(FeeDelbodyList) ); //刷新父窗口上的父节点 var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, Data = Chfee_managementDAL.GetData("CM.Feeid='" + head.Feeid + "'", Convert.ToString(Session["USERID"])) }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult Delete(string data,string USERID) { var head = JsonConvert.Deserialize(data); var modb = new ModelObjectDB(); DBResult result = modb.Delete(head); if (result.Success == true) { Chfee_managementDAL.DeleteDetail(head.Feeid); MsSysBillNoSetDAL.DeleteBsNo(head.Feeid); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult AuditList(string data, string type) { var headData = JsonConvert.Deserialize>(data); DBResult result = Chfee_managementDAL.AuditList(headData, type, Convert.ToString(Session["USERID"])); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult GetFeeList(string condition) { var _condition = condition; //var _condition = " cfm.Feeid = '" + condition + "' "; List list = Chfee_managementDAL.GetBodyList(_condition, Convert.ToString(Session["USERID"])); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = list.Count, data = list.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetFeeList_Index ( string condition ) { var _condition = condition; //var _condition = " cfm.Feeid = '" + condition + "' "; List list = Chfee_managementDAL.GetBodyList_Index(_condition, Convert.ToString(Session["USERID"])); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = list.Count, data = list.ToList() }); return new ContentResult() { Content = json }; } public ContentResult CreateVoucher(string VoucherDate, string UsdExrate, string User, string useRate, string feesql) { var modb = new ModelObjectDB(); DBResult result = CreateDCVoucher(VoucherDate, UsdExrate, User, useRate, feesql); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public static DBResult CreateDCVoucher(string VoucherDate, string UsdExrate, string User, string useRate, string feesql) { var result = new DBResult(); result.Success = true; var Feeid = ""; var VouitemsList = new List(); var VouOrdNo = Guid.NewGuid().ToString(); CwDesign CWDesign = CwVouchersDAL.GetCwDesign(); if (CWDesign.AR == "" || CWDesign.AR == null ) { result.Success = false; result.Message = "请先设置帐套信息,才能生成凭证!"; } else { decimal DebitAmt = Convert.ToDecimal(0.00); decimal CreditAmt = Convert.ToDecimal(0.00); int itemsno = 1; CwVouchers Voucher = new CwVouchers(); Database db = DatabaseFactory.CreateDatabase(); using (var conn = db.CreateConnection()) { conn.Open(); var strSql = new StringBuilder(); if (useRate == "1") { strSql.Append("SELECT c.Feeid,c.CUSTOMERSIDE"); strSql.Append(", FAPCODE=(select top 1 FAPCODE from info_client where SHORTNAME=c.CUSTOMERSIDE) "); strSql.Append(", FARCODE=(select top 1 FARCODE from info_client where SHORTNAME=c.CUSTOMERSIDE) "); strSql.Append(",c.FEENAME,c.AMOUNT,cast(round(c.AMOUNT*m.EXCHANGERATE,2) as numeric(20,2)) AS mhj,m.FEETYPE,m.OPERATORSIDE,m.CURRENCY,m.AMOUNT AS je,cast(round(m.AMOUNT*m.EXCHANGERATE,2) as numeric(20,2)) AS hj"); strSql.Append(",m.EXCHANGERATE From ch_fee_Mbody c left join ch_fee_management m on (m.Feeid=c.Feeid) WHERE c.Feeid IN " + feesql); strSql.Append(" order by c.Feeid "); } else { strSql.Append("SELECT c.Feeid,c.CUSTOMERSIDE"); strSql.Append(", FAPCODE=(select top 1 FAPCODE from info_client where SHORTNAME=c.CUSTOMERSIDE) "); strSql.Append(", FARCODE=(select top 1 FARCODE from info_client where SHORTNAME=c.CUSTOMERSIDE) "); strSql.Append(",c.FEENAME,c.AMOUNT,cast(round(c.AMOUNT*" + UsdExrate + ",2) as numeric(20,2)) AS mhj,m.FEETYPE,m.OPERATORSIDE,m.CURRENCY,m.AMOUNT AS je,cast(round(m.AMOUNT*" + UsdExrate + ",2) as numeric(20,2)) AS hj,"); strSql.Append(UsdExrate + " as EXCHANGERATE From ch_fee_Mbody c left join ch_fee_management m on (m.Feeid=c.Feeid) WHERE c.Feeid IN " + feesql); strSql.Append(" order by c.Feeid "); } using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { while (reader.Read()) { if (Feeid != Convert.ToString(reader["Feeid"])) { Feeid = Convert.ToString(reader["Feeid"]); var BankAccitems = CwVouchersDAL.GetCwAccitems(Convert.ToString(reader["OPERATORSIDE"])); if (BankAccitems.ACCID == "") { result.Success = false; result.Message = "单号:" + Convert.ToString(reader["Feeid"]) + "费用项目没有对应的财务科目!"; } CwVouitems bankdata = new CwVouitems(); bankdata.ACCID = BankAccitems.ACCID; bankdata.ACCNAME = BankAccitems.ACCNAME; bankdata.ORDNO = VouOrdNo; bankdata.BLNO = Convert.ToString(reader["Feeid"]); bankdata.EXPLAN = "费用单号:" + Convert.ToString(reader["Feeid"]); bankdata.ITEMNO = itemsno; bankdata.ISSYS = true; if (BankAccitems.DC == "借") { bankdata.DC = "D"; } else if (BankAccitems.DC == "贷") { bankdata.DC = "C"; } if (Convert.ToString(reader["FEETYPE"]) == "1") { if (Convert.ToString(reader["CURRENCY"]) == "RMB") { bankdata.AMTDR = Convert.ToDecimal(reader["je"]); bankdata.AMTCR = Convert.ToDecimal(0.00); bankdata.FCYCR = Convert.ToDecimal(0.00); bankdata.FCYDR = Convert.ToDecimal(0.00); bankdata.FCYEXRATE = Convert.ToDecimal(1); bankdata.FCYNO = "RMB"; DebitAmt = DebitAmt + Convert.ToDecimal(reader["je"]); } else { bankdata.AMTDR = Convert.ToDecimal(reader["hj"]); bankdata.AMTCR = Convert.ToDecimal(0.00); bankdata.FCYCR = Convert.ToDecimal(0.00); bankdata.FCYDR = Convert.ToDecimal(reader["je"]); bankdata.FCYEXRATE = Convert.ToDecimal(reader["EXCHANGERATE"]); bankdata.FCYNO = "USD"; DebitAmt = DebitAmt + Convert.ToDecimal(reader["hj"]); } } else if (Convert.ToString(reader["FEETYPE"]) == "2") { if (Convert.ToString(reader["CURRENCY"]) == "RMB") { bankdata.AMTDR =Convert.ToDecimal(0.00); bankdata.AMTCR = Convert.ToDecimal(reader["je"]); bankdata.FCYCR = Convert.ToDecimal(0.00); bankdata.FCYDR = Convert.ToDecimal(0.00); bankdata.FCYEXRATE = Convert.ToDecimal(1); bankdata.FCYNO = "RMB"; CreditAmt = CreditAmt + Convert.ToDecimal(reader["je"]); } else { bankdata.AMTDR = Convert.ToDecimal(0.00); bankdata.AMTCR = Convert.ToDecimal(reader["hj"]); bankdata.FCYCR = Convert.ToDecimal(reader["je"]); bankdata.FCYDR = Convert.ToDecimal(0.00); bankdata.FCYEXRATE = Convert.ToDecimal(reader["EXCHANGERATE"]); bankdata.FCYNO = "USD"; CreditAmt = CreditAmt + Convert.ToDecimal(reader["hj"]); } } itemsno = itemsno + 1; VouitemsList.Add(bankdata); } var Accitems = CwVouchersDAL.GetCwAccitems(Convert.ToString(reader["FEENAME"])); if (Accitems.ACCID == "") { result.Success = false; result.Message = "单号:" + Convert.ToString(reader["Feeid"]) + "费用项目没有对应的财务科目!"; } CwVouitems data = new CwVouitems(); data.ACCID = Accitems.ACCID; data.ACCNAME = Accitems.ACCNAME; data.ORDNO = VouOrdNo; data.BLNO = Convert.ToString(reader["Feeid"]); data.EXPLAN = Accitems.ACCNAME; data.ITEMNO = itemsno; data.ISSYS = true; if (Accitems.DC == "借") { data.DC = "D"; } else if (Accitems.DC == "贷") { data.DC = "C"; } if (Convert.ToString(reader["FEETYPE"]) == "2") { if (Convert.ToString(reader["CUSTOMERSIDE"]) != "") { if (Convert.ToString(reader["FARCODE"]) == "") { result.Success = false; result.Message = "单号:" + Convert.ToString(reader["Feeid"]) + "客户没有设置对应的财务代码!"; } else { data.CORPID = Convert.ToString(reader["FARCODE"]); data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERSIDE"]); } } if (Convert.ToString(reader["CURRENCY"]) == "RMB") { data.AMTDR = Convert.ToDecimal(reader["AMOUNT"]); data.AMTCR = Convert.ToDecimal(0.00); data.FCYCR = Convert.ToDecimal(0.00); data.FCYDR = Convert.ToDecimal(0.00); data.FCYEXRATE = Convert.ToDecimal(1); data.FCYNO = "RMB"; DebitAmt = DebitAmt + Convert.ToDecimal(reader["AMOUNT"]); } else { data.AMTDR = Convert.ToDecimal(reader["mhj"]); data.AMTCR = Convert.ToDecimal(0.00); data.FCYCR = Convert.ToDecimal(0.00); data.FCYDR = Convert.ToDecimal(reader["AMOUNT"]); data.FCYEXRATE = Convert.ToDecimal(reader["EXCHANGERATE"]); data.FCYNO = "USD"; DebitAmt = DebitAmt + Convert.ToDecimal(reader["mhj"]); } } else if (Convert.ToString(reader["FEETYPE"]) == "1") { if (Convert.ToString(reader["CUSTOMERSIDE"]) != "") { if (Convert.ToString(reader["FAPCODE"]) == "") { result.Success = false; result.Message = "单号:" + Convert.ToString(reader["Feeid"]) + "客户没有设置对应的财务代码!"; } else { data.CORPID = Convert.ToString(reader["FAPCODE"]); } } if (Convert.ToString(reader["CURRENCY"]) == "RMB") { data.AMTDR = Convert.ToDecimal(0.00); data.AMTCR = Convert.ToDecimal(reader["AMOUNT"]); data.FCYCR = Convert.ToDecimal(0.00); data.FCYDR = Convert.ToDecimal(0.00); data.FCYEXRATE = Convert.ToDecimal(1); data.FCYNO = "RMB"; CreditAmt = CreditAmt + Convert.ToDecimal(reader["AMOUNT"]); } else { data.AMTDR = Convert.ToDecimal(0.00); data.AMTCR = Convert.ToDecimal(reader["mhj"]); data.FCYCR = Convert.ToDecimal(reader["AMOUNT"]); data.FCYDR = Convert.ToDecimal(0.00); data.FCYEXRATE = Convert.ToDecimal(reader["EXCHANGERATE"]); data.FCYNO = "USD"; CreditAmt = CreditAmt + Convert.ToDecimal(reader["mhj"]); } } itemsno = itemsno + 1; VouitemsList.Add(data); } reader.Close(); } Voucher.ORDNO = VouOrdNo; var voudate = Convert.ToDateTime(VoucherDate); Voucher.ACCYEAR = voudate.ToString("yyyy"); Voucher.ACCMONTH = voudate.ToString("MM"); Voucher.PREPARED = User; Voucher.VOUDATE = voudate; Voucher.VKNO = CWDesign.TVW; Voucher.AMTDR = DebitAmt; Voucher.AMTCR = CreditAmt; //帐套设置 T_ALL_DA T_ALL_DA = new T_ALL_DA(); DataSet dsCwDesign = T_ALL_DA.GetAllSQL("SELECT top 1 * from cw_design"); if (dsCwDesign == null) { result.Success = false; result.Message = "没有设置账套信息!"; } Voucher.VOUNO = CwVouchersDAL.getVOUNO(dsCwDesign, Voucher.ACCYEAR, Voucher.ACCMONTH); Voucher.VOUALLNO = Voucher.ACCYEAR + Voucher.ACCMONTH + Voucher.VOUNO; Voucher.ATTACHS = CWDesign.AFFIXNO; Voucher.FCY = ""; Voucher.QTY = "";//是否含有数量科目="";//varchar="";//(1) Voucher.VOUPROP = "";//凭证属性="";//varchar="";//(1) Voucher.CHECKED = "";//审核人="";//varchar="";//(10) Voucher.ENTERED = "";//记账人="";//varchar="";//(10) Voucher.ERRMSG = "";//错误信息="";//varchar="";//(6) Voucher.ISDELETE = false;//是否废除="";//bit="";//Y Voucher.DELETEUSER = "";//废除操作人="";//Varchar(36)="";//Y } var strSel = " AND Feeid in " + feesql; if (result.Success) { result = CwVouchersDAL.InsertVoucher(Voucher, VouitemsList, "ch_fee_management", Voucher.VOUALLNO, strSel, User); } } return result; } #region 生成总账凭证 public ContentResult GetCodeCurrencyList(string strGids) { var dataList = Chfee_managementDAL.GetCodeCurrencyList(strGids, Convert.ToString(Session["COMPANYID"]), Convert.ToString(Session["USERID"])); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult onAddCwVouchers(string strGids, string dataDiv, string jsonBody) { var headData = JsonConvert.Deserialize(dataDiv); List bodyList = new List(); if (jsonBody != null) { bodyList = JsonConvert.Deserialize>(jsonBody); } if (bodyList == null && headData.ISRATE == false) { headData.ISRATE = true; } // DBResult result2 = Chfee_managementDAL.GetIsVoucher(strGids, Convert.ToString(Session["USERID"])); if (!result2.Success) { var jsonRespose2 = new JsonResponse { Success = result2.Success, Message = result2.Message, Data = "" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } // DBResult result = Chfee_managementDAL.onAddCwVouchers(strGids, headData, bodyList, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); // string sGids = "'" + strGids.Trim().Replace(",", "','") + "'"; T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); string sVOUCHERNO = T_ALL_DA.GetStrSQL("VOUCHERNO", "select top 1 VOUCHERNO from ch_fee_settlement where gid in (" + sGids + ")"); // var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, Data = sVOUCHERNO }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult GetIsVoucher(string strGids) { DBResult result = Chfee_managementDAL.GetIsVoucher(strGids, Convert.ToString(Session["USERID"])); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, Data = "" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } /// /// 是否自动弹出结算总账凭证 /// /// public ContentResult onIsSettlementsopen() { DBResult result = Chfee_managementDAL.onIsSettlementsopen(Convert.ToString(Session["USERID"])); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, Data = "" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } #endregion } }