using System; using System.Linq; using System.Web.Mvc; using DSWeb.Areas.Account.DAL.Chfee_Invoiceapplication; using DSWeb.Areas.Account.Models.Chfee_Invoiceapplication; using DSWeb.Areas.Account.Models.Chfee_do_detail; using DSWeb.Areas.Account.Models.BillChfeeDetail; using DSWeb.MvcShipping.Helper; using DSWeb.MvcShipping.Comm.Cookie; using DSWeb.Areas.CommMng.DAL; using System.Collections.Generic; using HcUtility.Comm; using HcUtility.Core; using DSWeb.EntityDA; using DSWeb.Areas.Account.Models.Chfee_Exrate; using DSWeb.MvcShipping.DAL.MsSysBillNoSet; using DSWeb.MvcShipping.Models.MsSysBillNoSet; using DSWeb.MvcShipping.DAL.MsSysParamSet; using System.Data; using DSWeb.MvcShipping.DAL.MsCodeGoodInv; using DSWeb.MvcShipping.DAL.MsChFeeDAL; namespace DSWeb.Areas.Account.Controllers { [JsonRequestBehavior] public class Chfee_invoiceapplicationController : Controller { // // GET: public ActionResult Index() { return View(); } public ActionResult TruckIndex() { return View(); } // // GET: / public ActionResult Edit() { return View(); } public ActionResult BLEdit() { return View(); } public ActionResult NewEdit() { return View(); } public ActionResult TruckBLEdit() { return View(); } //付费申请审核 public ActionResult Audit() { return View(); } public ActionResult Index_Hangxin() { return View(); } // // GET: public ContentResult GetDataList(int start, int limit, string sort, string condition) { int totel = 0; var dataList = ChinvoiceapplicationDAL.GetDataList(start, limit,condition,out totel,Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), Convert.ToString(Session["COMPANYID"]), sort); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = totel, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetAuditDataList(int start, int limit, string sort, string condition, string isaudit) { var dataList = ChinvoiceapplicationDAL.GetAuditDataList(condition, Convert.ToString(Session["USERID"]), isaudit, Convert.ToString(Session["COMPANYID"]), 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) { ChInvoiceapplication head = null; if (handle == "edit") { var list = ChinvoiceapplicationDAL.GetDataListAll(condition, Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), Convert.ToString(Session["COMPANYID"])); if (list.Count > 0) head = list[0]; } if (head == null) { head = new ChInvoiceapplication(); } if (handle == "add") { head.APPLICANT = CookieConfig.GetCookie_CompanyId(Request); head.APPLICANTNAME =CookieConfig.GetCookie_UserName(Request); //head.CURRENCY = "RMB";//20191024 币别固化为RMB head.INVTYPE = "原币开票"; } var json = JsonConvert.Serialize( new { Success = true, Message = "查询成功", data = head }); return new ContentResult() { Content = json }; } public ContentResult GetDetailList(string condition,string sort) { var dataList = ChinvoiceapplicationDAL.GetDetailList(condition,sort); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetApplicationDetailList(string condition, string sort) { var dataList = ChinvoiceapplicationDAL.GetApplicationDetailList(condition, sort); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetBillList(string condition,string sort) { var dataList = ChinvoiceapplicationDAL.GetBodyList(condition, Convert.ToString(Session["USERID"]), sort); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetTruckBillList(string condition, string sort) { var dataList = ChinvoiceapplicationDAL.GetTruckBodyList(condition, sort); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetBillDataList(int start, int limit, string sort, string condition, string duino = "") { var dataList = ChinvoiceapplicationDAL.GetAddBillList(start, limit,condition,duino, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]), sort); int count = ChinvoiceapplicationDAL.getAddBillTotalCount(condition,duino, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); var list = dataList.Skip(start).Take(limit); var json = JsonConvert.Serialize( new { Success = true, Message = "查询成功", totalCount = count, data = list.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetTruckBillDataList(int start, int limit, string sort, string condition) { var dataList = ChinvoiceapplicationDAL.GetAddTruckBillList(start, limit, condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]), sort); int count = ChinvoiceapplicationDAL.getAddTruckBillTotalCount(condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); var json = JsonConvert.Serialize( new { Success = true, Message = "查询成功", totalCount = count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetFeeDetailList(string sort, string condition, string duino = "") { var dataList = ChinvoiceapplicationDAL.GetFeeDetailList(condition, duino,Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]), sort); var json = JsonConvert.Serialize( new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetBillSum(string condition) { var dataList = ChinvoiceapplicationDAL.GetBodySumList(condition); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult GetFeeDataList(int start, int limit, string sort, string condition,string duino="") { var dataList = ChinvoiceapplicationDAL.GetFeeDataList(condition,duino, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]), 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 GetAddSum(string condition) { var dataList = ChinvoiceapplicationDAL.GetAddSum(condition, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = dataList.ToList() }); return new ContentResult() { Content = json }; } public ContentResult Save(string opstatus, string data, string body,string detail="",bool issubmit=false) { if (Convert.ToString(Session["COMPANYID"]).ToString().Trim() == "" || Convert.ToString(Session["USERID"]).ToString().Trim() == "" || Convert.ToString(Session["CODENAME"]).ToString().Trim() == "" || Convert.ToString(Session["SHOWNAME"]).ToString().Trim() == "" || Convert.ToString(Session["DEPTNAME"]).ToString().Trim() == "") { var jsonRespose2 = new JsonResponse { Success = false, Message = "登录超时,请退出系统重新登录!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } var headData = JsonConvert.Deserialize(data); var bodyList = JsonConvert.Deserialize>(body); var detailList = JsonConvert.Deserialize>(detail); if (opstatus == "add") { headData.GID = Guid.NewGuid().ToString(); //headData.BILLNO = PubSysDAL.GetBillNo("0306"); headData.COMPANYID = CookieConfig.GetCookie_CompanyId(Request); headData.APPLICANT = CookieConfig.GetCookie_UserId(Request); // headData.APPLYTIME = DateTime.Now; headData.ENTERTIME = DateTime.Now; headData.DbOperationType = DbOperationType.DbotIns; var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='发票申请'", CookieConfig.GetCookie_CompanyId(Request)); if (billnoset.BILLTYPE != "") headData.BILLNO = MsSysBillNoSetDAL.GetBillNo(billnoset, headData.APPLYTIME.ToString().Trim(), headData.ENTERTIME.ToString()); else headData.BILLNO = PubSysDAL.GetBillNo("0306"); } else if (opstatus == "edit") { headData.DbOperationType = DbOperationType.DbotUpd; headData.ModelUIStatus = "E"; } else { headData.DbOperationType = DbOperationType.DbotDel; } var ct = ChinvoiceapplicationDAL.GetRdCount("GID<>'" + headData.GID + "' AND BILLNO='" + headData.BILLNO + "' "); if (ct != 0) { var jsonRespose0 = new JsonResponse { Success = false, Message = "发票申请重复,不允许保存!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose0) }; } decimal ttlinv = 0; decimal ttlrmbinv = 0; decimal ttlusdinv = 0; if (detailList != null && detailList.Count != 0) { foreach (var emv in detailList) { if (emv.CURRENCY == "USD") ttlusdinv = ttlusdinv + emv.AMOUNT; if (emv.CURRENCY == "RMB") ttlrmbinv = ttlrmbinv + emv.AMOUNT; } } if (headData.INVTYPE == "原币开票") { if (ttlusdinv > headData.OTCURRAMOUNT || ttlrmbinv > headData.APPLYAMOUNT) { var jsonRespose0 = new JsonResponse { Success = false, Message = "原币开票,开票信息中金额合计不允许超过原币合计金额!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose0) }; } }else if (headData.INVTYPE == "美元折人民币开票") { if (ttlusdinv!=0 || ttlrmbinv > headData.AMOUNT) { var jsonRespose0 = new JsonResponse { Success = false, Message = "美元折人民币开票,开票信息中必须是人民币并金额合计不允许超过合计折算金额!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose0) }; } } else if (headData.INVTYPE == "人民币折美元开票") { if (ttlusdinv > headData.AMOUNT || ttlrmbinv!=0) { var jsonRespose0 = new JsonResponse { Success = false, Message = "人民币折美元开票,开票信息中必须是美元并金额合计不允许超过合计折算金额!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose0) }; } } headData.OPERATETIME = DateTime.Now; T_ALL_DA T_ALL_DA = new T_ALL_DA(); DataSet dsHSCODE = T_ALL_DA.GetAllSQL("SELECT Gid,CODENAME as CustCode,SHORTNAME as CustName,CODENAME+'-'+SHORTNAME as CodeAndName,BillRises1,INVADDRTEL,[DESCRIPTION],RmbBillRises,(select top 1 BANKNAME+' '+ACCOUNT FROM info_client_bank WHERE CURRENCY='RMB' AND LINKID=info_client.GID) Rmbbank,Rmbaccount,usdBillRises,(select top 1 BANKNAME+' '+ACCOUNT FROM info_client_bank WHERE CURRENCY='USD' AND LINKID=info_client.GID) usdbank,usdaccount,TaxNo,Addr,Tel from info_client WHERE SHORTNAME='" + headData.CUSTOMERNAME + "' and corpid='"+ Convert.ToString(Session["COMPANYID"]) + "'"); if (dsHSCODE != null) { if (dsHSCODE.Tables[0].Rows.Count > 0) { if (headData.INVOICECUSTNAME == "") { if (dsHSCODE.Tables[0].Rows[0]["BillRises1"].ToString() != "") headData.INVOICECUSTNAME = dsHSCODE.Tables[0].Rows[0]["BillRises1"].ToString(); else headData.INVOICECUSTNAME = dsHSCODE.Tables[0].Rows[0]["DESCRIPTION"].ToString(); } if (headData.CUSTRATENO == "") headData.CUSTRATENO = dsHSCODE.Tables[0].Rows[0]["TaxNo"].ToString(); if (headData.CUSTADDRTEL == "") { if (dsHSCODE.Tables[0].Rows[0]["INVADDRTEL"].ToString() != "") headData.CUSTADDRTEL = dsHSCODE.Tables[0].Rows[0]["INVADDRTEL"].ToString(); else headData.CUSTADDRTEL = dsHSCODE.Tables[0].Rows[0]["Addr"].ToString() + " " + dsHSCODE.Tables[0].Rows[0]["Tel"].ToString(); } if (headData.CUSTBANK == "") { if (headData.RECVCURR == "USD") { headData.CUSTBANK = dsHSCODE.Tables[0].Rows[0]["usdbank"].ToString(); } else headData.CUSTBANK = dsHSCODE.Tables[0].Rows[0]["rmbbank"].ToString(); } } } var BILLNO = headData.BILLNO; var GID = headData.GID; var modb = new ModelObjectDB(); DBResult result = ChinvoiceapplicationDAL.SaveInvDetail(headData.GID,bodyList); if (result.Success==true){ result= modb.Save(headData); if (result.Success) { ChinvoiceapplicationDAL.SaveAppDetail(headData, detailList); } }; if (result.Success == true) { } else { MsSysBillNoSetDAL.DeleteBsNo(headData.BILLNO); } if ((result.Success == true)&&(issubmit==true)) { //系统参数如果设置为【开票分部与业务分部相同则不需要审核】则做判断是否进行审核 var dataList = ChinvoiceapplicationDAL.GetBodyList("BILLNO='" + BILLNO + "'", ""); if (dataList == null || dataList.Count == 0) { var jsonRespose2 = new JsonResponse { Success = false, Message = "无费用明细不能提交审核!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } decimal invamount = 0; var invitems = ChinvoiceapplicationDAL.GetDetailList("PID='" + headData.GID + "'", ""); foreach (var invitem in invitems) { invamount = invamount + invitem.AMOUNT + invitem.TAX; } if (invamount != headData.INVAMOUNT) { var jsonRespose2 = new JsonResponse { Success = false, Message = "开票明细与开票金额不一致,请检查!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } var flag = MsSysParamSetDAL.GetData("PARAMNAME='InvoiceSameComSkipAudit'"); if (flag.PARAMVALUE == "1") { if (headData.COMPANYID == headData.PAYCOMPANYID && ((headData.ACTUALCUSTOMERNAME != "" && headData.ACTUALCUSTOMERNAME == headData.CUSTOMERNAME) || headData.ACTUALCUSTOMERNAME == "")) { result = ChinvoiceapplicationDAL.PASSAUDITWithGID(headData.GID); } else { result = ChinvoiceapplicationDAL.SubmitAudit("InvAudit", CookieConfig.GetCookie_UserId(Request), headData.BILLNO, CookieConfig.GetCookie_CompanyId(Request)); } } else { result = ChinvoiceapplicationDAL.SubmitAudit("InvAudit", CookieConfig.GetCookie_UserId(Request), headData.BILLNO, CookieConfig.GetCookie_CompanyId(Request)); } } // if (result.Success) { ChinvoiceapplicationDAL.p_update_Amount(BILLNO, GID); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, Data = ChinvoiceapplicationDAL.GetData(" BILLNO='" + BILLNO + "'", CookieConfig.GetCookie_UserId(Request), CookieConfig.GetCookie_UserCode(Request), CookieConfig.GetCookie_CompanyId(Request)) }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult AddDetail(string bill, string data, string curr, bool islist, string GID, bool custgroup = false, string duino = "") { if (Convert.ToString(Session["COMPANYID"]).ToString().Trim() == "" || Convert.ToString(Session["USERID"]).ToString().Trim() == "" || Convert.ToString(Session["CODENAME"]).ToString().Trim() == "" || Convert.ToString(Session["SHOWNAME"]).ToString().Trim() == "" || Convert.ToString(Session["DEPTNAME"]).ToString().Trim() == "") { var jsonRespose2 = new JsonResponse { Success = false, Message = "登录超时,请退出系统重新登录!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } var bodyList = JsonConvert.Deserialize>(data); var headData = ChinvoiceapplicationDAL.GetData(" BILLNO='" + bill + "'", Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), Convert.ToString(Session["COMPANYID"])); var BLCOUNT="0"; var FEENOAUDITCANTSHENINV = MsSysParamSetDAL.GetData("PARAMNAME='FEENOAUDITCANTSHENINV'"); if (FEENOAUDITCANTSHENINV.PARAMVALUE == "1") { T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); BLCOUNT = T_ALL_DA.GetStrSQL("BLCOUNT", "select COUNT(*) BLCOUNT from ch_fee where FEETYPE=1 and (FEESTATUS=1 OR FEESTATUS=2 ) and BSNO='" + bodyList[0].BSNO + "'"); } if (BLCOUNT != "0") { var jsonRespose = new JsonResponse { Success = false, Message = "此票存在未审核的应收费用,不允许申请发票!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var modb = new ModelObjectDB(); DBResult result = ChinvoiceapplicationDAL.AddDetail(bill,duino,bodyList, curr, Convert.ToString(Session["COMPANYID"]), islist, GID, headData); if (result.Success) { ChinvoiceapplicationDAL.p_update_Amount(bill, GID); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } public ContentResult AddBill(string billno, string billcust, string billcurr, string feesql, string storeCurrExrate, bool islist, string GID,bool custgroup = false, string duino = "") { if (Convert.ToString(Session["COMPANYID"]).ToString().Trim() == "" || Convert.ToString(Session["USERID"]).ToString().Trim() == "" || Convert.ToString(Session["CODENAME"]).ToString().Trim() == "" || Convert.ToString(Session["SHOWNAME"]).ToString().Trim() == "" || Convert.ToString(Session["DEPTNAME"]).ToString().Trim() == "") { var jsonRespose2 = new JsonResponse { Success = false, Message = "登录超时,请退出系统重新登录!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } var exrateList = JsonConvert.Deserialize>(storeCurrExrate); if (islist) { var bodylist = ChinvoiceapplicationDAL.GetFeeDetailList(feesql + " and '代理'+FEENAME NOT IN (Select GOODNAME from code_goods_inv) ",duino, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); if (bodylist.Count != 0) { var feenamelist = ""; if (bodylist != null) { foreach (var enumValue in bodylist) { feenamelist = feenamelist + enumValue.FeeName+","; } } if (feenamelist != "") { var jsonRespose = new JsonResponse { Success = false, Message = "费用名称:"+feenamelist+"不在发票商品明细中,请先维护发票商品明细!"}; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } } var headData = ChinvoiceapplicationDAL.GetData(" BILLNO='" + billno + "'", Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), Convert.ToString(Session["COMPANYID"])); if ((exrateList == null) || (exrateList.Count == 0)) { exrateList = ChinvoiceapplicationDAL.GetCurrExrateData(billcust, billcurr, feesql, custgroup); if (exrateList.Count == 0) { var modb = new ModelObjectDB(); DBResult result = ChinvoiceapplicationDAL.AddBill(billno,duino,billcust, billcurr, feesql, exrateList, Convert.ToString(Session["COMPANYID"]), islist, GID,headData, custgroup, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"])); if (result.Success) { ChinvoiceapplicationDAL.p_update_Amount(billno, GID); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var INVGETNOWEXCHANGE = MsSysParamSetDAL.GetData("PARAMNAME='INVGETNOWEXCHANGE'").PARAMVALUE; if (INVGETNOWEXCHANGE == "1") { var invratelist = MsChFeeDAL.GetFeeNowInvCurrList(headData.APPLYTIME); if (invratelist != null) { foreach (var exrate in exrateList) { foreach (var invrate in invratelist) { if (invrate.CURR == exrate.CURR) { exrate.DFEXRATE = invrate.DEFRATE; } } } } } var jsonRespose = new JsonResponse { Success = true, Message = "查询成功", Data = exrateList.ToList() }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } else { var modb = new ModelObjectDB(); DBResult result = ChinvoiceapplicationDAL.AddBill(billno,duino,billcust, billcurr, feesql, exrateList, Convert.ToString(Session["COMPANYID"]), islist, GID, headData,false,Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"])); if (result.Success) { ChinvoiceapplicationDAL.p_update_Amount(billno, GID); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } public ContentResult AddDetailNew(string bill, string data, string curr, bool islist, string GID, bool custgroup = false, string duino = "") { if (Convert.ToString(Session["COMPANYID"]).ToString().Trim() == "" || Convert.ToString(Session["USERID"]).ToString().Trim() == "" || Convert.ToString(Session["CODENAME"]).ToString().Trim() == "" || Convert.ToString(Session["SHOWNAME"]).ToString().Trim() == "" || Convert.ToString(Session["DEPTNAME"]).ToString().Trim() == "") { var jsonRespose2 = new JsonResponse { Success = false, Message = "登录超时,请退出系统重新登录!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } var bodyList = JsonConvert.Deserialize>(data); var headData = ChinvoiceapplicationDAL.GetData(" BILLNO='" + bill + "'", Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), Convert.ToString(Session["COMPANYID"])); var BLCOUNT = "0"; var FEENOAUDITCANTSHENINV = MsSysParamSetDAL.GetData("PARAMNAME='FEENOAUDITCANTSHENINV'"); if (FEENOAUDITCANTSHENINV.PARAMVALUE == "1") { T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); BLCOUNT = T_ALL_DA.GetStrSQL("BLCOUNT", "select COUNT(*) BLCOUNT from ch_fee where FEETYPE=1 and (FEESTATUS=1 OR FEESTATUS=2 ) and BSNO='" + bodyList[0].BSNO + "'"); } if (BLCOUNT != "0") { var jsonRespose = new JsonResponse { Success = false, Message = "此票存在未审核的应收费用,不允许申请发票!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var modb = new ModelObjectDB(); DBResult result = ChinvoiceapplicationDAL.AddDetail(bill, duino, bodyList, curr, Convert.ToString(Session["COMPANYID"]), islist, GID, headData); if (result.Success) { ChinvoiceapplicationDAL.p_update_AmountNew(bill, GID, Convert.ToString(Session["DEPTNAME"]).ToString().Trim(), Convert.ToString(Session["COMPANYID"])); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } public ContentResult AddBillNew(string billno, string billcust, string billcurr, string feesql, string storeCurrExrate, bool islist, string GID, bool custgroup = false, string duino = "") { if (Convert.ToString(Session["COMPANYID"]).ToString().Trim() == "" || Convert.ToString(Session["USERID"]).ToString().Trim() == "" || Convert.ToString(Session["CODENAME"]).ToString().Trim() == "" || Convert.ToString(Session["SHOWNAME"]).ToString().Trim() == "" || Convert.ToString(Session["DEPTNAME"]).ToString().Trim() == "") { var jsonRespose2 = new JsonResponse { Success = false, Message = "登录超时,请退出系统重新登录!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } var exrateList = JsonConvert.Deserialize>(storeCurrExrate); if (islist) { var bodylist = ChinvoiceapplicationDAL.GetFeeDetailList(feesql + " and '代理'+FEENAME NOT IN (Select GOODNAME from code_goods_inv) ", duino, Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), Convert.ToString(Session["COMPANYID"])); if (bodylist.Count != 0) { var feenamelist = ""; if (bodylist != null) { foreach (var enumValue in bodylist) { feenamelist = feenamelist + enumValue.FeeName + ","; } } if (feenamelist != "") { var jsonRespose = new JsonResponse { Success = false, Message = "费用名称:" + feenamelist + "不在发票商品明细中,请先维护发票商品明细!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } } var headData = ChinvoiceapplicationDAL.GetData(" BILLNO='" + billno + "'", Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), Convert.ToString(Session["COMPANYID"])); if ((exrateList == null) || (exrateList.Count == 0)) { exrateList = ChinvoiceapplicationDAL.GetCurrExrateData(billcust, billcurr, feesql, custgroup); if (billcurr==""||exrateList.Count == 0) { var modb = new ModelObjectDB(); DBResult result = ChinvoiceapplicationDAL.AddBill(billno, duino, billcust, billcurr, feesql, exrateList, Convert.ToString(Session["COMPANYID"]), islist, GID, headData, custgroup, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"])); if (result.Success) { ChinvoiceapplicationDAL.p_update_AmountNew(billno, GID, Convert.ToString(Session["DEPTNAME"]).ToString().Trim(), Convert.ToString(Session["COMPANYID"])); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var INVGETNOWEXCHANGE = MsSysParamSetDAL.GetData("PARAMNAME='INVGETNOWEXCHANGE'").PARAMVALUE; if (INVGETNOWEXCHANGE == "1") { var invratelist = MsChFeeDAL.GetFeeNowInvCurrList(headData.APPLYTIME); if (invratelist != null) { foreach (var exrate in exrateList) { foreach (var invrate in invratelist) { if (invrate.CURR == exrate.CURR) { exrate.DFEXRATE = invrate.DEFRATE; } } } } } var jsonRespose = new JsonResponse { Success = true, Message = "查询成功", Data = exrateList.ToList() }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } else { var modb = new ModelObjectDB(); DBResult result = ChinvoiceapplicationDAL.AddBill(billno, duino, billcust, billcurr, feesql, exrateList, Convert.ToString(Session["COMPANYID"]), islist, GID, headData, false, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"])); if (result.Success) { ChinvoiceapplicationDAL.p_update_AmountNew(billno, GID, Convert.ToString(Session["DEPTNAME"]).ToString().Trim(), Convert.ToString(Session["COMPANYID"])); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } public ContentResult DelBill(string data, string billno,string GID) { var bodyList = JsonConvert.Deserialize>(data); DBResult result = ChinvoiceapplicationDAL.DelFeeDo(bodyList,GID); if (result.Success) { ChinvoiceapplicationDAL.p_update_Amount(billno,GID); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult GetIsAdd(string data) { var bodyList = JsonConvert.Deserialize>(data); var StrGid = ""; if (bodyList != null) { foreach (var enumValue in bodyList) { if (StrGid == "") StrGid = "'" + enumValue.GID + "'"; else StrGid = StrGid + ",'" + enumValue.GID + "'"; } } if (StrGid != "") { StrGid = "(" + StrGid + ")"; var dataList = ChinvoiceapplicationDAL.GetDataListAll(" BILLSTATUS=0 and GID IN " + StrGid, Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), Convert.ToString(Session["COMPANYID"])); if (dataList != null && dataList.Count != 0) { var jsonRespose = new JsonResponse { Success =true, Message ="可以生成!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } else { var jsonRespose = new JsonResponse { Success = false, Message = "发票申请已生成发票,请刷新!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } else { var jsonRespose = new JsonResponse { Success = false, Message = "无需要添加的发票申请!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } // public ContentResult Delete(string data) { var headData = JsonConvert.Deserialize(data); var dataList = ChinvoiceapplicationDAL.GetBodyList("BILLNO='" + headData.BILLNO + "'", Convert.ToString(Session["USERID"]).ToString().Trim()); DBResult result = ChinvoiceapplicationDAL.DelFeeDo(dataList,headData.GID); if (result.Success == true) { var modb = new ModelObjectDB(); modb.Delete(headData); ChinvoiceapplicationDAL.DeleteAppDetail(headData); MsSysBillNoSetDAL.DeleteBsNo(headData.BILLNO); T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); var blUpSQL = " insert into sys_log(GID,NAME,LOGTYPE,LOGTIME,LOGCONTENT,CREATEUSER) values(NEWID(),'" + headData.BILLNO + "','删除发票申请','" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','" + headData.BILLNO + '(' + headData.CUSTOMERNAME + ')' + "','" + Convert.ToString(Session["USERID"]) + "')"; bool bl = T_ALL_DA.GetExecuteSqlCommand(blUpSQL); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult DelInvDetail(string billno, string body, string GID) { var bodyList = JsonConvert.Deserialize>(body); DBResult result = ChinvoiceapplicationDAL.DelInvDetail(bodyList); if (result.Success) { ChinvoiceapplicationDAL.p_update_Amount(billno, GID); } var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult DelInvAppDetail(string billno, string body, string GID) { var bodyList = JsonConvert.Deserialize>(body); DBResult result = ChinvoiceapplicationDAL.DelInvAppDetail(bodyList); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult CreateInvList(string data, string storeCurrExrate) { var bodyList = JsonConvert.Deserialize>(data); var exrateList = JsonConvert.Deserialize>(storeCurrExrate); var headData = ChinvoiceapplicationDAL.GetData(" GID='" + bodyList[0].LINKGID + "'"); decimal ttlinv = 0; decimal ttlrmbinv = 0; decimal ttlusdinv = 0; if (bodyList != null && bodyList.Count != 0) { foreach (var emv in bodyList) { if (emv.CURRENCY == "USD") ttlusdinv = ttlusdinv + emv.AMOUNT; if (emv.CURRENCY == "RMB") ttlrmbinv = ttlrmbinv + emv.AMOUNT; } } if (headData.INVTYPE == "原币开票") { if (ttlusdinv > headData.OTCURRAMOUNT || ttlrmbinv > headData.APPLYAMOUNT) { var jsonRespose0 = new JsonResponse { Success = false, Message = "原币开票,开票信息中金额合计不允许超过原币合计金额!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose0) }; } } else if (headData.INVTYPE == "美元折人民币开票") { if (ttlusdinv != 0 || ttlrmbinv > headData.AMOUNT) { var jsonRespose0 = new JsonResponse { Success = false, Message = "美元折人民币开票,开票信息中必须是人民币并金额合计不允许超过合计折算金额!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose0) }; } } else if (headData.INVTYPE == "人民币折美元开票") { if (ttlusdinv > headData.AMOUNT || ttlrmbinv != 0) { var jsonRespose0 = new JsonResponse { Success = false, Message = "人民币折美元开票,开票信息中必须是美元并金额合计不允许超过合计折算金额!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose0) }; } } ChinvoiceapplicationDAL.SaveAppDetail(headData, bodyList); if ((exrateList == null) || (exrateList.Count == 0)) { exrateList = ChinvoiceapplicationDAL.GetAppCurrExrateData(headData, bodyList); if (exrateList.Count == 0) { DBResult result = ChinvoiceapplicationDAL.CreateInvList(headData,bodyList, exrateList, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); var jsonRespose2 = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } else { var INVGETNOWEXCHANGE = MsSysParamSetDAL.GetData("PARAMNAME='INVGETNOWEXCHANGE'").PARAMVALUE; if (INVGETNOWEXCHANGE == "1") { var invratelist = MsChFeeDAL.GetFeeNowInvCurrList(DateTime.Now.ToString("yyyy-MM-dd")); if (invratelist != null) { foreach (var exrate in exrateList) { foreach (var invrate in invratelist) { if (invrate.CURR == exrate.CURR) { exrate.DFEXRATE = invrate.DEFRATE; } } } } } var jsonRespose2 = new JsonResponse { Success = true, Message = "查询成功", Data = exrateList.ToList() }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose2) }; } } else { DBResult result = ChinvoiceapplicationDAL.CreateInvList(headData,bodyList, exrateList, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"])); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } #region 提交和撤销审核 public ContentResult SubmitAudit(string bill) { var headdata = ChinvoiceapplicationDAL.GetData("BILLNO='"+bill+"'"); var INVAPPMAXPARAM = MsSysParamSetDAL.GetData("PARAMNAME='INVAPPMAX'"); var INVAPPMAX = false; if (INVAPPMAXPARAM.PARAMVALUE == "1") { INVAPPMAX = true; } decimal invamount = 0; var invitems=ChinvoiceapplicationDAL.GetDetailList("PID='"+headdata.GID+"'", ""); var dataList = ChinvoiceapplicationDAL.GetBodyList("BILLNO='" + bill + "'", ""); if (dataList == null|| dataList.Count == 0) { var jsonRespose = new JsonResponse { Success = false, Message = "无费用明细不能提交审核!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } foreach (var invitem in invitems) { invamount = invamount + invitem.AMOUNT+invitem.TAX; } if (invamount != headdata.INVAMOUNT) { var jsonRespose = new JsonResponse { Success = false, Message = "开票明细与开票金额不一致,请检查!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } if (INVAPPMAX&&(headdata.INVAMOUNT >= 100000 || headdata.APPLYAMOUNT >= 100000)) { var jsonRespose = new JsonResponse { Success =false, Message ="申请开票金额,不能超过十万元!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } //DBResult result = ChinvoiceapplicationDAL.SubmitAudit("InvAudit", Convert.ToString(Session["DEPTGID"]), Convert.ToString(Session["USERID"]), bill); DBResult result = ChinvoiceapplicationDAL.SubmitAudit("InvAudit", Convert.ToString(Session["USERID"]), bill, CookieConfig.GetCookie_CompanyId(Request)); var json = JsonConvert.Serialize(result); return new ContentResult() { Content = json }; } public ContentResult SubmitAuditBack(string bill) { DBResult result = ChinvoiceapplicationDAL.SubmitAuditBack("InvAudit", Convert.ToString(Session["USERID"]), bill); var json = JsonConvert.Serialize(result); return new ContentResult() { Content = json }; } public ContentResult SubmitAuditList(string bills) { var INVAPPMAXPARAM = MsSysParamSetDAL.GetData("PARAMNAME='INVAPPMAX'"); var INVAPPMAX = false; if (INVAPPMAXPARAM.PARAMVALUE == "1") { INVAPPMAX = true; } var billList = bills.Split(','); foreach (var bill in billList) { var headdata = ChinvoiceapplicationDAL.GetData("BILLNO='" + bill + "'"); decimal invamount = 0; var invitems = ChinvoiceapplicationDAL.GetDetailList("PID='" + headdata.GID + "'", ""); var dataList = ChinvoiceapplicationDAL.GetBodyList("BILLNO='" + bill + "'", ""); if (dataList == null || dataList.Count == 0) { var jsonRespose = new JsonResponse { Success = false, Message = "无费用明细不能提交审核!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } foreach (var invitem in invitems) { invamount = invamount + invitem.AMOUNT + invitem.TAX; } if (invamount != headdata.INVAMOUNT) { var jsonRespose = new JsonResponse { Success = false, Message = "开票明细与开票金额不一致,请检查!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } if (INVAPPMAX && (headdata.INVAMOUNT >= 100000 || headdata.APPLYAMOUNT >= 100000)) { var jsonRespose = new JsonResponse { Success = false, Message = "申请开票金额,不能超过十万元!" }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } } DBResult result = ChinvoiceapplicationDAL.SubmitAuditList("InvAudit", Convert.ToString(Session["USERID"]), bills); var json = JsonConvert.Serialize(result); return new ContentResult() { Content = json }; } public ContentResult SubmitAuditBackList(string bills) { DBResult result = ChinvoiceapplicationDAL.SubmitAuditBackList("InvAudit", Convert.ToString(Session["USERID"]), bills); var json = JsonConvert.Serialize(result); return new ContentResult() { Content = json }; } public ContentResult AuditList(string data, string PAYCOMPANYID) { var bodyList = JsonConvert.Deserialize>(data); DBResult result = ChinvoiceapplicationDAL.AuditList(bodyList,PAYCOMPANYID,Convert.ToString(Session["USERID"])); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult AuditBackList(string data, string reason) { var bodyList = JsonConvert.Deserialize>(data); DBResult result = ChinvoiceapplicationDAL.AuditBackList(bodyList, Convert.ToString(Session["USERID"]), reason); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } #endregion public ContentResult GetPrint(string billno) { DBResult result = ChinvoiceapplicationDAL.GetPrint(billno, Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), Convert.ToString(Session["COMPANYID"])); var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult UpdatePrint(string billnos) { var result = new DBResult(); T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); string blUpSQL = " update ch_fee_invoiceapplication set ISPRINT='1',PRINTCOUNT=ISNULL(PRINTCOUNT,0)+1 where BILLNO IN (" + billnos + ")"; bool bl = T_ALL_DA.GetExecuteSqlCommand(blUpSQL); result.Success = true; result.Message = "更新成功!"; var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, // Data = MsChFeeDAL.GetDataList(headData.BillNo, Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), CookieConfig.GetCookie_OrgCode(Request)) }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } public ContentResult UpdateNoPrint(string billnos) { var result = new DBResult(); T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); string blUpSQL = " update ch_fee_invoiceapplication set ISPRINT='0' where BILLNO IN (" + billnos + ")"; bool bl = T_ALL_DA.GetExecuteSqlCommand(blUpSQL); result.Success = true; result.Message = "更新成功!"; var jsonRespose = new JsonResponse { Success = result.Success, Message = result.Message, // Data = MsChFeeDAL.GetDataList(headData.BillNo, Convert.ToString(Session["USERID"]), CookieConfig.GetCookie_UserCode(Request), CookieConfig.GetCookie_OrgCode(Request)) }; return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } #region 参照部分 #endregion } }