using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using CY.BLL.EC; using CY.Infrastructure.Common; using CY.Model; using CY.BLL.OA; using CY.BLL.Sys; using System.Text; using CY.BLL; using System.Data; using System.Transactions; namespace CY.WebForm.Pages.financial { //吴辉 //外协预付款 public partial class NewWaixieExpenses : BasePage { private EC_OrderBasicBLL _eC_OrderBasicBLL = null; private OA_CorporateClientsBLL bll_OA_CorporateClientsBLL = null; OA_FirmAccountBLL _OA_FirmAccountBLL = null; OA_FirmAccountRecordBLL _OA_FirmAccountRecordBLL = null; OA_FirmAccountRecord firmAccountRecord = null; OA_FirmAccount firmAccount = null; OA_FukuanshenqingBLL _fukuanshenqingBLL = null; string orderNo = string.Empty; decimal? AllMoney = 0; decimal? ReceiveMoney = 0; /// /// 初始化构造 /// public NewWaixieExpenses() { bll_OA_CorporateClientsBLL = new OA_CorporateClientsBLL(); _OA_FirmAccountBLL = new OA_FirmAccountBLL(); firmAccountRecord = new OA_FirmAccountRecord(); _OA_FirmAccountRecordBLL = new OA_FirmAccountRecordBLL(); _fukuanshenqingBLL = new OA_FukuanshenqingBLL(); } /// /// 界面加载事件 /// /// /// protected void Page_Load(object sender, EventArgs e) { _eC_OrderBasicBLL = new EC_OrderBasicBLL(); btnSubmit.ServerClick += new EventHandler(btnSubmit_ServerClick); try { switch (Request["DataType"]) { case "change": Response.Write(reLoadAccountName(Request["TypeName"].ToString2())); break; default://一般情况不处理 if (IsPostBack || IsCallback) return; else { LoadOrder(); InitialData(); } return; } } catch (Exception ex) { PAGEHandleException(ex); Response.Clear(); Response.Write("-1"); } Response.End(); InitPage(); } protected void InitialData() { //科目名称 Sys_DictionaryBLL _Sys_DictionaryBLL = new Sys_DictionaryBLL(); OA_SubjectSetBLL _OA_SubjectSetBLL = new OA_SubjectSetBLL(); OA_FirmAccountBLL oA_FirmAccountBLL = new OA_FirmAccountBLL(); selSubject.DataSource = _OA_SubjectSetBLL.getAllSubject(CurrentUser.MemberId, "贷"); selSubject.DataBind(); selSubject.Items.Insert(0, new ListItem("请选择", "")); ///账户类型 selAcoountType.DataSource = _Sys_DictionaryBLL.GetDataByType("账户类型"); selAcoountType.DataBind(); //selAcoountType_SelectedIndexChanged(null, null); } protected string reLoadAccountName(string selAcoountType) { return JsonHelper.GetJsonStringByObject(_OA_FirmAccountBLL.getAllSubject(CurrentUser.MemberId, selAcoountType)); } /// /// 提交按钮点击事件 /// /// /// void btnSubmit_ServerClick(object sender, EventArgs e) { //_orderBasic = new EC_OrderBasic(); _eC_OrderBasicBLL = new EC_OrderBasicBLL(); //_orderBasic = _eC_OrderBasicBLL.SelectModelById(orderId.Value); //string orderno = ""; //string sellerName = ""; if(string.IsNullOrEmpty(Request["selAccountName"])) { JavaScript.MessageBox("请选择账户", this); return; } firmAccount = _OA_FirmAccountBLL.getSingleSubject(Request["selAccountName"].ToInt32()); var money = this.txtReciveMoney.Text.ToDecimal2(); if (this.txtReciveMoney.Text.ToDecimal2() > 0 && firmAccount.Balance < this.txtReciveMoney.Text.ToDecimal2()) { JavaScript.MessageBox("账户余额不足", this); return; } var ssss = false; var id = this.Keyid.Value.ToInt32().Value; var fukuanshenqing = _fukuanshenqingBLL.GetModelByKeyid(id); var Youwufapiao = Request["rdoReceiveQuannbu"]; if (fukuanshenqing.Youwufapiao == 2 && Youwufapiao == "1") { JavaScript.MessageBox("已经保存为有发票,无法修改为无发票!", this); return; } string[] Keys = fukuanshenqing.DindanId.Trim(',').Split(','); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted, Timeout = TransactionManager.MaximumTimeout } )) { try { var yishoumoney = fukuanshenqing.Yishoumoney.HasValue ? fukuanshenqing.Yishoumoney.Value : 0; fukuanshenqing.Yishoumoney = yishoumoney + money; if (money >= (fukuanshenqing.Fukuanmoney - fukuanshenqing.Yishoumoney)) { fukuanshenqing.FukuanStatus = 2; } fukuanshenqing.Updater = CurrentUser.ShortName; fukuanshenqing.LastUpdateTime = DateTime.Now; fukuanshenqing.Youwufapiao = Youwufapiao.ToInt32(); ssss = _fukuanshenqingBLL.UpdateModel(fukuanshenqing); if(this.txtReciveMoney.Text.ToDecimal2() > 0) { foreach (var item in Keys) { if (!string.IsNullOrEmpty(item)) { var orderBasic = _eC_OrderBasicBLL.SelectModelById(item.ToInt32().Value); if (orderBasic != null) { firmAccountRecord.AccountId = Request["selAccountName"].ToInt32(); firmAccountRecord.LastUpdateTime = DateTime.Now; firmAccountRecord.Money = orderBasic.UnPayedMoney; orderNo = orderBasic.SellerOrderId; firmAccountRecord.OperationalMatters = "外协付款" + "(" + orderNo + ")"; firmAccountRecord.Operator = CurrentUser.ShortName; firmAccountRecord.PaymentUnit = orderBasic.SellerName; firmAccountRecord.RecordTypeId = 2;//支出 firmAccountRecord.Remark = this.txtRemark.Value; firmAccountRecord.SubjectId = this.selSubject.Value.ToInt32(); firmAccountRecord.ResidualAmount = firmAccount.Balance - orderBasic.UnPayedMoney; ; firmAccount.AllExpenses = orderBasic.UnPayedMoney + firmAccount.AllExpenses; firmAccount.Balance = firmAccount.Balance - orderBasic.UnPayedMoney; ssss = _OA_FirmAccountRecordBLL.AddModel(firmAccountRecord, firmAccount); if (ssss) { UsePrepare(orderBasic); } else { JavaScript.MessageBox("添加失败", this); return; } } } } } if (ssss) { scope.Complete(); JavaScript.MessageBox("付款成功", this, "top.frmright.ReLoad();top.Dialog.close();"); } else JavaScript.MessageBox("添加失败", this); } catch (Exception ex) { PAGEHandleException(ex); JavaScript.MessageBox("添加失败", this); } finally { scope.Dispose(); } } } /// /// 加载页面数据 /// private void InitPage() { try { Sys_DictionaryBLL _Sys_DictionaryBLL = new Sys_DictionaryBLL(); //OA_SubjectSetBLL _OA_SubjectSetBLL = new OA_SubjectSetBLL(); OA_FirmAccountBLL oA_FirmAccountBLL = new OA_FirmAccountBLL(); int i = -1; //账户类型 List accountsType = _Sys_DictionaryBLL.GetDataByType("账户类型") as List; Request.RequestContext.RouteData.DataTokens.Add("accountsTypes", null == accountsType || accountsType.Count == 0 ? "[]" : JsonHelper.GetJsonStringByObject(accountsType)); List firmAccounts = oA_FirmAccountBLL.getAllSubject(CurrentUser.MemberId, "") as List; const string ACCOUNTSJSONKEY = "accounts"; if (null == firmAccounts) { Request.RequestContext.RouteData.DataTokens.Add(ACCOUNTSJSONKEY, "[]"); return; } IEnumerable> groupings = firmAccounts.GroupBy(fa => fa.AccountType); StringBuilder builder = new StringBuilder(); foreach (IGrouping groupitem in groupings) { OA_FirmAccount[] items = groupitem.ToArray(); builder.AppendFormat("{0}\"{2}\":{3}{1}", ",", "", groupitem.Key, JsonHelper.GetJsonStringByObject(items)); } builder.Append("}]"); builder.Replace(",", "[{", 0, 1); Request.RequestContext.RouteData.DataTokens.Add(ACCOUNTSJSONKEY, null == firmAccounts ? "[]" : builder.ToString()); } catch (Exception ex) { PAGEHandleException(ex); } } /// /// 加载订单 /// private void LoadOrder() { var id = Request["id"]; var fukuanshenqing = _fukuanshenqingBLL.GetModelByKeyid(id.ToInt32().Value); if (fukuanshenqing != null) { this.Keyid.Value = id; this.txtYouwufapiao.Value = fukuanshenqing.YouwufapiaoName; string[] Keys = fukuanshenqing.DindanId.Trim(',').Split(','); foreach (var item in Keys) { if (!string.IsNullOrEmpty(item)) { var orderBasic = _eC_OrderBasicBLL.SelectModelById(item.ToInt32().Value); if (orderBasic != null) { var sumPrice = orderBasic.SumPrice ?? 0; AllMoney += sumPrice; ReceiveMoney += orderBasic.UnPayedMoney; } } } this.spanAllMoney.InnerText = "¥" + AllMoney.Value.ToString("0.00"); this.spanReceiveMoney.InnerText = "¥" + ReceiveMoney.Value.ToString("0.00"); this.txtReciveMoney.Text = ReceiveMoney.Value.ToString("0.00"); this.spanCountRe.InnerHtml = Keys.Count().ToString2() + " 单"; } } /// /// 使用预付款(付款、收款) /// /// private bool UsePrepare(EC_OrderBasic orderBasic) { int operatTypeId = 3; string subject = "订单付款"; switch (Request["outsourceType"]) { case "1": operatTypeId = 2; subject = "外协付款"; break; default: break; } return _eC_OrderBasicBLL.ReceiveMoney(orderBasic.SellerId, orderBasic.BuyerId, orderBasic.Keyid.Value, orderBasic.UnPayedMoney, operatTypeId, subject, CurrentUser.ShortName); ;// _eC_OrderBasicBLL.ReceiveMoney(_orderBasic.SellerId, _orderBasic.BuyerId, _orderBasic.Keyid.Value, money.Value, operatTypeId, subject, CurrentUser.ShortName); } } }