using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using CY.BLL.OA; using System.Data; using System.Data.SqlClient; using CY.Infrastructure.Common; using CY.Model; using CY.BLL.Sys; using CY.BLL; using System.Transactions; namespace CY.WebForm.Pages.financial { //吴辉 //采购付款选择账户 public partial class CaigouPayEdit : BasePage { OA_WarehouseInfoBLL _OA_WarehouseInfoBLL = null; OA_CargoSpaceBLL _OA_CargoSpaceBLL = null; OA_OutOfStorageBLL bll_OA_OutOfStorageBLL = null; OA_SubjectSetBLL bll_OA_SubjectSetBLL = null; Sys_DictionaryBLL bll_Sys_DictionaryBLL = null; OA_ProcurementBLL bll_OA_ProcurementBLL = null; OA_FirmAccountBLL bll_OA_FirmAccountBLL = null; OA_SuppliersBLL bll_OA_SuppliersBLL = null; OA_FukuanshenqingBLL _fukuanshenqingBLL = null; decimal? AllMoney = 0; decimal? ReceiveMoney = 0; //初始化 public CaigouPayEdit() { bll_OA_OutOfStorageBLL = new OA_OutOfStorageBLL(); _OA_WarehouseInfoBLL = new OA_WarehouseInfoBLL(); _OA_CargoSpaceBLL = new OA_CargoSpaceBLL(); bll_OA_SubjectSetBLL = new OA_SubjectSetBLL(); bll_Sys_DictionaryBLL = new Sys_DictionaryBLL(); bll_OA_ProcurementBLL = new OA_ProcurementBLL(); bll_OA_FirmAccountBLL = new OA_FirmAccountBLL(); bll_OA_SuppliersBLL = new OA_SuppliersBLL(); _fukuanshenqingBLL = new OA_FukuanshenqingBLL(); } //页面加载 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { InitialData(); } } //加载数据 protected void InitialData() { //科目名称 this.selSubject.DataSource = bll_OA_SubjectSetBLL.getAllSubject(CurrentUser.MemberId, "贷"); this.selSubject.DataBind(); this.selSubject.Items.Insert(0, new ListItem("请选择", "")); //账户类型 this.selAcoountTypeOut.DataSource = bll_Sys_DictionaryBLL.GetDataByType("账户类型"); this.selAcoountTypeOut.DataBind(); 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)) { OA_Procurement m_OA_Procurement = bll_OA_ProcurementBLL.SelectSingleModel(item); if (m_OA_Procurement != null) { AllMoney += m_OA_Procurement.AllMoney; ReceiveMoney += (m_OA_Procurement.AllMoney - m_OA_Procurement.ReceiveMoney); } } } this.spanAllMoney.InnerHtml = "¥" + (AllMoney ?? 0).ToString("0.00"); this.spanReceiveMoney.InnerHtml = "¥" + ReceiveMoney.Value.ToString("0.00"); this.spanCountRe.InnerHtml = Keys.Count().ToString2() + " 单"; this.txtReciveMoney.Enabled = false; this.txtReciveMoney.Text = (ReceiveMoney ?? 0).ToString("0.00"); this.txtReciveMoney.Attributes.Add("max", (ReceiveMoney ?? 0).ToString("0.00")); } } //提交事件 protected void btn_Submit_form(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(Request["selAccountNameOut"])) { JavaScript.MessageBox("请选择账户", this); return; } ReceiveMoney = this.txtReciveMoney.Text.ToDecimal2(); int? SubjectId = this.selSubject.Value.ToInt32(); decimal? money = ReceiveMoney; if (Request["amount"].ToString2() == "one") { money = this.txtReciveMoney.Text.ToDecimal2(); } int? AccountIdOut = Request["selAccountNameOut"].ToInt32(); if (SubjectId == null || money == null || AccountIdOut == null) JavaScript.MessageBox("操作失败", this); else { DateTime nowTime = DateTime.Now; OA_SubjectSet m_OA_SubjectSet = bll_OA_SubjectSetBLL.getSingleSubject(SubjectId); OA_FirmAccount m_OA_FirmAccountOut = bll_OA_FirmAccountBLL.getSingleSubject(AccountIdOut); if (m_OA_FirmAccountOut.Balance < money) { JavaScript.MessageBox("账户余额不足", this); } else { 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(','); var ssss = false; 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; if (money >= (fukuanshenqing.Fukuanmoney - fukuanshenqing.Yishoumoney)) { fukuanshenqing.FukuanStatus = 2; } fukuanshenqing.Yishoumoney = yishoumoney + money; fukuanshenqing.Updater = CurrentUser.ShortName; fukuanshenqing.LastUpdateTime = DateTime.Now; fukuanshenqing.Youwufapiao = Youwufapiao.ToInt32(); ssss = _fukuanshenqingBLL.UpdateModel(fukuanshenqing); if (this.txtReciveMoney.Text.ToDecimal2() > 0) { List m_OA_ProcurementList = new List(); List m_OA_FirmAccountRecordList = new List(); m_OA_FirmAccountOut.Balance -= money; m_OA_FirmAccountOut.AllExpenses += money; foreach (var item in Keys) { OA_Procurement m_OA_Procurement = bll_OA_ProcurementBLL.SelectSingleModel(item); if (m_OA_Procurement != null) { if (Request["amount"].ToString2() == "one") m_OA_Procurement.ReceiveMoney += money; else m_OA_Procurement.ReceiveMoney = m_OA_Procurement.AllMoney; if (m_OA_Procurement.ReceiveMoney == m_OA_Procurement.AllMoney) m_OA_Procurement.ClearingStatusId = bll_Sys_DictionaryBLL.GetKeyIdByKeyid(1, "结账状态"); m_OA_Procurement.Operator = CurrentUser.ShortName; m_OA_Procurement.LastUpdateTime = DateTime.Now; OA_Suppliers m_OA_Suppliers = bll_OA_SuppliersBLL.getSingleSupplier(m_OA_Procurement.SuppliersId.ToString2()); OA_FirmAccountRecord m_OA_FirmAccountRecordOut = new OA_FirmAccountRecord(); m_OA_FirmAccountRecordOut.AccountId = m_OA_FirmAccountOut.Keyid; m_OA_FirmAccountRecordOut.RecordTypeId = 2;//支出 if (Request["amount"].ToString2() == "one") m_OA_FirmAccountRecordOut.Money = money; else m_OA_FirmAccountRecordOut.Money = (m_OA_Procurement.AllMoney - m_OA_Procurement.ReceiveMoney); m_OA_FirmAccountRecordOut.SubjectId = m_OA_SubjectSet.Keyid; m_OA_FirmAccountRecordOut.OperationalMatters = "采购付款"; m_OA_FirmAccountRecordOut.PaymentUnit = m_OA_Suppliers.Name; m_OA_FirmAccountRecordOut.LastUpdateTime = nowTime; m_OA_FirmAccountRecordOut.Operator = CurrentUser.ShortName.ToString2(); m_OA_FirmAccountRecordOut.Remark = ""; m_OA_FirmAccountRecordOut.ResidualAmount = m_OA_FirmAccountOut.Balance; m_OA_FirmAccountRecordList.Add(m_OA_FirmAccountRecordOut); m_OA_ProcurementList.Add(m_OA_Procurement); } } if (m_OA_ProcurementList.Count > 0) { ssss = bll_OA_FirmAccountBLL.PurchasePayList(m_OA_FirmAccountRecordList, m_OA_ProcurementList, m_OA_FirmAccountOut); } } 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(); } } } } } catch (Exception ex) { PAGEHandleException(ex); JavaScript.MessageBox("操作失败", this); } } } }