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; OA_SubjectSetBLL _OA_SubjectSetBLL = null; Sys_DictionaryBLL _Sys_DictionaryBLL = null; OA_StaffBLL staffBLL = null; OA_BaozhengjinBLL oA_BaozhengjinBLL = 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(); _Sys_DictionaryBLL = new Sys_DictionaryBLL(); staffBLL = new OA_StaffBLL(); oA_BaozhengjinBLL = new OA_BaozhengjinBLL(); _OA_SubjectSetBLL = new OA_SubjectSetBLL(); } //页面加载 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.hidReceiveMoney.Value = ReceiveMoney.Value.ToString(); this.spanCountRe.InnerHtml = Keys.Count().ToString2() + " 单"; this.txtReciveMoney.Value = (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; } var werwerwerwerwe = Request["txtReciveMoney"]; ReceiveMoney = this.txtReciveMoney.Value.ToDecimal2(); int? SubjectId = this.selSubject.Value.ToInt32(); var molingmoney = this.txtMolingMoney.Value.ToDecimal2(); decimal? money = ReceiveMoney; 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); if (fukuanshenqing.FukuanStatus == 2 && money>0) { JavaScript.MessageBox("该申请已经付款结束!", this); return; } if (money > (fukuanshenqing.Fukuanmoney - fukuanshenqing.Yishoumoney)) { JavaScript.MessageBox("操作金额大于剩余应付金额!", this); return; } var Youwufapiao = Request["rdoReceiveQuannbu"]; if (fukuanshenqing.Youwufapiao == 2 && Youwufapiao == "1") { JavaScript.MessageBox("已经保存为有发票,无法修改为无发票!", this); return; } if (molingmoney.HasValue) { if ((money + molingmoney.Value) != (fukuanshenqing.Fukuanmoney - fukuanshenqing.Yishoumoney)) { 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; } if (molingmoney.HasValue) { if ((money + molingmoney.Value) >= (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.Value.ToDecimal2() > 0) { List m_OA_ProcurementList = new List(); List m_OA_FirmAccountRecordList = new List(); m_OA_FirmAccountOut.Balance -= money; m_OA_FirmAccountOut.AllExpenses += money; decimal molingmoneyvalue = 0; if (molingmoney.HasValue) { molingmoneyvalue = molingmoney.Value; } foreach (var item in Keys) { OA_Procurement m_OA_Procurement = bll_OA_ProcurementBLL.SelectSingleModel(item); if (m_OA_Procurement != null) { 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;//支出 m_OA_FirmAccountRecordOut.Money = m_OA_Procurement.AllMoney.Value; m_OA_Procurement.ReceiveMoney = m_OA_Procurement.AllMoney.Value ; if (molingmoneyvalue > 0) { if (m_OA_Procurement.AllMoney.Value >= molingmoneyvalue) { m_OA_Procurement.ReceiveMoney = m_OA_Procurement.AllMoney.Value - molingmoneyvalue; m_OA_FirmAccountRecordOut.Money = m_OA_Procurement.AllMoney.Value - molingmoneyvalue; molingmoneyvalue = 0; } else { m_OA_Procurement.ReceiveMoney = 0; m_OA_FirmAccountRecordOut.Money = 0; molingmoneyvalue = molingmoneyvalue - m_OA_Procurement.AllMoney.Value; } } 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_Procurement.ReceiveMoney == m_OA_Procurement.AllMoney) m_OA_Procurement.ClearingStatusId = bll_Sys_DictionaryBLL.GetKeyIdByKeyid(1, "结账状态"); if (fukuanshenqing.FukuanStatus == 2) m_OA_Procurement.ClearingStatusId = bll_Sys_DictionaryBLL.GetKeyIdByKeyid(1, "结账状态"); m_OA_Procurement.Operator = CurrentUser.ShortName; m_OA_Procurement.LastUpdateTime = DateTime.Now; } } if (m_OA_ProcurementList.Count > 0) { ssss = bll_OA_FirmAccountBLL.PurchasePayList(m_OA_FirmAccountRecordList, m_OA_ProcurementList, m_OA_FirmAccountOut); if (!string.IsNullOrEmpty(this.selSubject.Value)) { var oA_SubjectSet = _OA_SubjectSetBLL.getSingleSubject(m_OA_FirmAccountRecordList[0].SubjectId); if (oA_SubjectSet.SubjectName.IndexOf("投标保证金") >= 0 || oA_SubjectSet.SubjectName.IndexOf("履约保证金") >= 0) { //如果选择科目是保证金,插入以条保证金数据 OA_Baozhengjin oA_Baozhengjin = new OA_Baozhengjin(); oA_Baozhengjin.FirmId = CurrentUser.MemberId; oA_Baozhengjin.FukuanTime = DateTime.Now; oA_Baozhengjin.Zhanghuleixing = this.selAcoountTypeOut.Value; var ss = _Sys_DictionaryBLL.GetDataByType("账户类型").FirstOrDefault(x => x.Name == oA_Baozhengjin.Zhanghuleixing); if (ss != null) { oA_Baozhengjin.ReceiveWay = ss.Keyid; } oA_Baozhengjin.Account = Request["selAccountName"].ToInt32(); oA_Baozhengjin.Fukuanzhanghu = m_OA_FirmAccountOut.AccountName + "-" + m_OA_FirmAccountOut.UserName; oA_Baozhengjin.Subject = m_OA_FirmAccountRecordList[0].SubjectId; oA_Baozhengjin.Fukuankemu = oA_SubjectSet.SubjectName; oA_Baozhengjin.Fukuanmoney = money; oA_Baozhengjin.Shoukuandanwei = m_OA_FirmAccountRecordList[0].PaymentUnit; oA_Baozhengjin.remark = m_OA_FirmAccountRecordList[0].OperationalMatters; oA_Baozhengjin.TuikuanTime = null; oA_Baozhengjin.TuikuanStatus = 1; oA_Baozhengjin.Creater = CurrentUser.ShortName; oA_Baozhengjin.CreateTime = oA_Baozhengjin.FukuanTime; oA_Baozhengjin.Updater = CurrentUser.ShortName; oA_Baozhengjin.LastUpdateTime = oA_Baozhengjin.FukuanTime; oA_Baozhengjin.MemberName = fukuanshenqing.Creater; var oA_Staff = staffBLL.SelectListByFirmId(CurrentUser.MemberId, false, false).Where(x => x.Name == oA_Baozhengjin.MemberName).FirstOrDefault(); oA_Baozhengjin.MemberId = oA_Staff.Keyid; var sss = oA_BaozhengjinBLL.InsertModel(oA_Baozhengjin); } } } } 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); } } } }