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;
|
|
/// <summary>
|
/// 初始化构造
|
/// </summary>
|
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();
|
}
|
|
/// <summary>
|
/// 界面加载事件
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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));
|
}
|
/// <summary>
|
/// 提交按钮点击事件
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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;
|
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)
|
{
|
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();
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
/// <summary>
|
/// 加载页面数据
|
/// </summary>
|
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<Sys_Dictionary> accountsType = _Sys_DictionaryBLL.GetDataByType("账户类型") as List<Sys_Dictionary>;
|
Request.RequestContext.RouteData.DataTokens.Add("accountsTypes", null == accountsType || accountsType.Count == 0 ? "[]" : JsonHelper.GetJsonStringByObject(accountsType));
|
|
List<OA_FirmAccount> firmAccounts = oA_FirmAccountBLL.getAllSubject(CurrentUser.MemberId, "") as List<OA_FirmAccount>;
|
|
const string ACCOUNTSJSONKEY = "accounts";
|
if (null == firmAccounts)
|
{
|
Request.RequestContext.RouteData.DataTokens.Add(ACCOUNTSJSONKEY, "[]");
|
return;
|
}
|
|
IEnumerable<IGrouping<string, OA_FirmAccount>> groupings = firmAccounts.GroupBy(fa => fa.AccountType);
|
StringBuilder builder = new StringBuilder();
|
|
foreach (IGrouping<string, OA_FirmAccount> 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);
|
}
|
}
|
|
/// <summary>
|
/// 加载订单
|
/// </summary>
|
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() + " 单";
|
}
|
|
|
|
|
}
|
|
/// <summary>
|
/// 使用预付款(付款、收款)
|
/// </summary>
|
/// <returns></returns>
|
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);
|
}
|
|
}
|
}
|