/**
* OrderMoneyReceive.aspx.cs
*
* 功 能: 订单收款
* 类 名: OrderMoneyReceive
*
* Ver 变更日期 负责人 变更内容
* ───────────────────────────────────
* V0.01 2013-5-28 13:44 吴崎均 初版
*
*/
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.Transactions;
namespace CY.WebForm.Pages.financial
{
public partial class InvoicingShouruqueren : BasePage
{
private EC_OrderBasicBLL _eC_OrderBasicBLL = null;
private OA_CorporateClientsBLL bll_OA_CorporateClientsBLL = null;
OA_KaipiaoshenqingBLL oA_KaipiaoshenqingBLL = null;
OA_KaipiaoJineQuerenBLL oA_KaipiaoJineQuerenBLL = null;
///
/// 初始化构造
///
public InvoicingShouruqueren()
{
bll_OA_CorporateClientsBLL = new OA_CorporateClientsBLL();
oA_KaipiaoshenqingBLL = new OA_KaipiaoshenqingBLL();
_eC_OrderBasicBLL = new EC_OrderBasicBLL();
oA_KaipiaoJineQuerenBLL = new OA_KaipiaoJineQuerenBLL();
}
///
/// 界面加载事件
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
//btnSubmit.ServerClick += new EventHandler(btnSubmit_ServerClick);
if (!IsPostBack)
{
LoadOrder();
}
if (IsPostBack || IsCallback)
return;
InitPage();
}
///
/// 提交按钮点击事件
///
///
///
protected void btn_Submit_form(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(this.txtReceiveMoney.Value) )
{
JavaScript.MessageBox("请填写收款金额!", this);
return;
}
if (this.txtReceiveMoney.Value.ToDecimal2() <= 0 )
{
JavaScript.MessageBox("请填写收款金额!", this);
return;
}
if (this.txtReceiveMoney.Value.ToDecimal2()> this.hidReceiveMoney.Value.ToDecimal2())
{
JavaScript.MessageBox("本次收款金额大于订单未付款!", this);
return;
}
var id = Request["id"];
var ids = this.ids.Value;
bool isWin = false;
var idssss = ids.Trim(',').Split(',');
var idsssssint = new List();
foreach(var iddd in idssss)
{
idsssssint.Add(int.Parse(iddd));
}
var a_Kaipiaoshenqing = oA_KaipiaoshenqingBLL.GetModelByKeyid(id.ToGuid2());
var oA_KaipiaoJineQuerens = oA_KaipiaoJineQuerenBLL.GetModelBybuyerid(a_Kaipiaoshenqing.BuyerId).Where(x => x.Querenstatus == 0 && idsssssint.Contains(x.Keyid));
var ReceiveMoney = this.txtReceiveMoney.Value.ToDecimal2();
var WeiHexiaomoney = oA_KaipiaoJineQuerens.Sum(x=>x.WeiHexiaomoney);
if (WeiHexiaomoney< ReceiveMoney)
{
JavaScript.MessageBox("本次收款金额大于未确认收入!", this);
return;
}
Dictionary searchParam = new Dictionary();
SetParamValue(searchParam, 1, CurrentUser.MemberId);
SetParamValue(searchParam, 2, "");
SetParamValue(searchParam, 3, "");
SetParamValue(searchParam, 4, "");
SetParamValue(searchParam, 5, "");
SetParamValue(searchParam, 6, "");
SetParamValue(searchParam, 7, "");
SetParamValue(searchParam, 8, "");
SetParamValue(searchParam, 9, "");
SetParamValue(searchParam, 10, "");
SetParamValue(searchParam, 11, "");
SetParamValue(searchParam, 12, "");
SetParamValue(searchParam, 13, "");
SetParamValue(searchParam, 14, "");
SetParamValue(searchParam, 15, "");
SetParamValue(searchParam, 16, "");
SetParamValue(searchParam, 18, 0);
SetParamValue(searchParam, 19, CurrentUser.TrueMemberId);
SetParamValue(searchParam, 20, CurrentUser.StaffId);
SetParamValue(searchParam, 21, CurrentUser.TrueName);
SetParamValue(searchParam, 22, "");
SetParamValue(searchParam, 23, "");
SetParamValue(searchParam, 24, "");
SetParamValue(searchParam, 25, "");
SetParamValue(searchParam, 26, id.ToGuid2());
SearchParam = searchParam;
Infrastructure.Query.Pagination pagination = new Infrastructure.Query.Pagination()
{
PageSize = 1000,// UCPager1.AspNetPager.PageSize,
PageIndex = 1// UCPager1.AspNetPager.CurrentPageIndex
};
var _orderBasicmodes = _eC_OrderBasicBLL.SelectModelPage_Seller(pagination, SearchParam);
using (var scope = new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions
{
IsolationLevel = IsolationLevel.ReadCommitted,
Timeout = TransactionManager.MaximumTimeout
}
))
{
try
{
if (string.IsNullOrEmpty(id) )
{
JavaScript.MessageBox("传入参数错误!", this);
return;
}
if (null == _orderBasicmodes)
{
JavaScript.MessageBox("订单不存在或已删除!", this);
return;
}
//更新确认收入
decimal weiReceiveMoney = ReceiveMoney.Value;
foreach (var a_KaipiaoJineQueren in oA_KaipiaoJineQuerens)
{
if(a_KaipiaoJineQueren.WeiHexiaomoney <= weiReceiveMoney)
{
var a_KaipiaoJineQuerendetail = new OA_KaipiaoJineQuerendetail();
a_KaipiaoJineQuerendetail.KaipiaoJineQuerenId = a_KaipiaoJineQueren.Keyid;
a_KaipiaoJineQuerendetail.KaipiaoshenqingId = id.ToGuid2();
a_KaipiaoJineQuerendetail.Hexiaomoney = a_KaipiaoJineQueren.WeiHexiaomoney;
a_KaipiaoJineQuerendetail.Creater = CurrentUser.ShortName;
a_KaipiaoJineQuerendetail.CreateTime = DateTime.Now;
a_KaipiaoJineQuerendetail.Updater = CurrentUser.ShortName;
a_KaipiaoJineQuerendetail.LastUpdateTime = a_KaipiaoJineQuerendetail.CreateTime;
isWin = oA_KaipiaoJineQuerenBLL.InserModeldetail(a_KaipiaoJineQuerendetail);
weiReceiveMoney = ReceiveMoney.Value - a_KaipiaoJineQueren.WeiHexiaomoney.Value;
a_KaipiaoJineQueren.Hexiaomoney = a_KaipiaoJineQueren.Fukuanmoney;
a_KaipiaoJineQueren.Querenstatus = 1;
isWin = oA_KaipiaoJineQuerenBLL.UpdateModel(a_KaipiaoJineQueren);
}
else
{
var a_KaipiaoJineQuerendetail = new OA_KaipiaoJineQuerendetail();
a_KaipiaoJineQuerendetail.KaipiaoJineQuerenId = a_KaipiaoJineQueren.Keyid;
a_KaipiaoJineQuerendetail.KaipiaoshenqingId = id.ToGuid2();
a_KaipiaoJineQuerendetail.Hexiaomoney = weiReceiveMoney;
a_KaipiaoJineQuerendetail.Creater = CurrentUser.ShortName;
a_KaipiaoJineQuerendetail.CreateTime = DateTime.Now;
a_KaipiaoJineQuerendetail.Updater = CurrentUser.ShortName;
a_KaipiaoJineQuerendetail.LastUpdateTime = a_KaipiaoJineQuerendetail.CreateTime;
isWin = oA_KaipiaoJineQuerenBLL.InserModeldetail(a_KaipiaoJineQuerendetail);
a_KaipiaoJineQueren.Hexiaomoney = a_KaipiaoJineQueren.Hexiaomoney.Value + weiReceiveMoney;
isWin = oA_KaipiaoJineQuerenBLL.UpdateModel(a_KaipiaoJineQueren);
weiReceiveMoney = 0;
}
if (weiReceiveMoney <= 0)
{
break;
}
}
weiReceiveMoney = ReceiveMoney.Value;
foreach (var _orderBasic in _orderBasicmodes)
{
if (_orderBasic.UnPayedMoney <= 0)
{
continue;
}
decimal UnPayedMoney = _orderBasic.UnPayedMoney;
if (_orderBasic.UnPayedMoney > weiReceiveMoney)
{
UnPayedMoney = weiReceiveMoney;
weiReceiveMoney = 0;
}
else
{
weiReceiveMoney = weiReceiveMoney - _orderBasic.UnPayedMoney;
}
isWin = ToAccount(_orderBasic.Keyid.Value, _orderBasic.BuyerName, UnPayedMoney);
if (!isWin)
{
JavaScript.MessageBox(_orderBasic.SellerOrderId + "收款失败!", this);
return;
//break;
}
if (weiReceiveMoney<=0)
{
break;
}
}
scope.Complete();
}
catch (Exception ex)
{
// 回滚事务
}
finally
{
// 释放资源
scope.Dispose();
}
}
if (isWin)
{
JavaScript.MessageBox("操作成功", this);
JavaScript.RefreshDIVOpener(this);
}
else
{
JavaScript.MessageBox("操作失败", this);
}
//JavaScript.MessageBox(isWin ? "收款成功!" : "收款失败!", this, "top.frmright.ReLoad();top.Dialog.close();");
//Request.RequestContext.RouteData.DataTokens.Add("IsWin", isWin ? "1" : "");
//if (!isWin)
// InitPage();
//else
// ;
}
///
/// 加载页面数据
///
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 a_Kaipiaoshenqing = oA_KaipiaoshenqingBLL.GetModelByKeyid(id.ToGuid2());
if (a_Kaipiaoshenqing != null)
{
var corporateClients = bll_OA_CorporateClientsBLL.GetModel(a_Kaipiaoshenqing.BuyerId);
if (corporateClients!=null)
{
this.txtBuyerName.Value = corporateClients.CompanyName;
}
this.txtFapiaohao.Value = a_Kaipiaoshenqing.Fapiaohao;
}
Dictionary searchParam = new Dictionary();
SetParamValue(searchParam, 1, CurrentUser.MemberId);
SetParamValue(searchParam, 2, "");
SetParamValue(searchParam, 3, "");
SetParamValue(searchParam, 4, "");
SetParamValue(searchParam, 5, "");
SetParamValue(searchParam, 6, "");
SetParamValue(searchParam, 7, "");
SetParamValue(searchParam, 8, "");
SetParamValue(searchParam, 9, "");
SetParamValue(searchParam, 10, "");
SetParamValue(searchParam, 11, "");
SetParamValue(searchParam, 12, "");
SetParamValue(searchParam, 13, "");
SetParamValue(searchParam, 14, "");
SetParamValue(searchParam, 15, "");
SetParamValue(searchParam, 16, "");
SetParamValue(searchParam, 18, 0);
SetParamValue(searchParam, 19, CurrentUser.TrueMemberId);
SetParamValue(searchParam, 20, CurrentUser.StaffId);
SetParamValue(searchParam, 21, CurrentUser.TrueName);
SetParamValue(searchParam, 22, "");
SetParamValue(searchParam, 23, "");
SetParamValue(searchParam, 24, "");
SetParamValue(searchParam, 25, "");
SetParamValue(searchParam, 26, id.ToGuid2());
SearchParam = searchParam;
Infrastructure.Query.Pagination pagination = new Infrastructure.Query.Pagination()
{
PageSize = 1000,
PageIndex = 1
};
var _orderBasicmodes = _eC_OrderBasicBLL.SelectModelPage_Seller(pagination, SearchParam);
decimal shoukuanmoney = 0;
decimal sumMoney = 0;
if (id == null || id.Length==0)
{
return;
}
try
{
foreach (var _orderBasicmode in _orderBasicmodes)
{
sumMoney += (_orderBasicmode.SumPrice.HasValue? _orderBasicmode.SumPrice.Value:0);
shoukuanmoney += _orderBasicmode.UnPayedMoney;
}
this.txtReceiveMoney.Value = String.Format("{0:F}", shoukuanmoney);
this.txtSumMoney.Value = String.Format("{0:F}", sumMoney);
this.hidReceiveMoney.Value = String.Format("{0:F}", shoukuanmoney);
this.NoMoney.InnerText = "0";
var oA_KaipiaoJineQuerens = oA_KaipiaoJineQuerenBLL.GetModelBybuyerid(a_Kaipiaoshenqing.BuyerId).Where(x => x.Querenstatus == 0);
rptData.DataSource = oA_KaipiaoJineQuerens;
rptData.DataBind();
}
catch (Exception ex)
{
PAGEHandleException(ex);
JavaScript.MessageBox("订单不存在!", this);
}
}
///
/// 收款到账户
///
///
///
///
private bool ToAccount(int orderId, string buyerName,decimal UnPayedMoney)
{
OA_FirmAccountRecord oA_FirmAccountRecord = new Model.OA_FirmAccountRecord();
oA_FirmAccountRecord.Money = UnPayedMoney;
//oA_FirmAccountRecord.LastUpdateTime = MyConvert.ConvertToDateTime(txtReceiveDate.Value);
if (!oA_FirmAccountRecord.Money.HasValue || 0 > oA_FirmAccountRecord.Money.Value)
{
return false;
}
//if (!oA_FirmAccountRecord.LastUpdateTime.HasValue)
//{
// return false;
//}
oA_FirmAccountRecord.Operator = CurrentUser.ShortName;
// oA_FirmAccountRecord.Remark = txtRemark.Value;
oA_FirmAccountRecord.PaymentUnit = buyerName;
// oA_FirmAccountRecord.SubjectId = MyConvert.ConvertToInt32(selSubjects.Value);
// oA_FirmAccountRecord.AccountId = MyConvert.ConvertToInt32("0".Equals(Request["rdoReceiveWay"]) ? "0" : Request["selAccounts"]);
// if (!oA_FirmAccountRecord.AccountId.HasValue || 0 == oA_FirmAccountRecord.AccountId.Value)
// return false;
return _eC_OrderBasicBLL.ReceiveMoneyToQueren(orderId, oA_FirmAccountRecord);
}
///
/// 使用预付款(付款、收款)
///
///
private bool UsePrepare(EC_OrderBasic _orderBasic, decimal UnPayedMoney = 0)
{
decimal? money = _orderBasic.UnPayedMoney;
if(UnPayedMoney > 0)
{
money = UnPayedMoney;
}
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, money.Value, operatTypeId, subject, CurrentUser.ShortName);
}
///
/// 查询参数
///
private Dictionary SearchParam
{
get
{
return ViewState["SearchParam"] as Dictionary;
}
set
{
ViewState["SearchParam"] = value;
}
}
///
/// 设置查询参数方法
///
/// 设置目标
/// 键
/// 值
private static void SetParamValue(Dictionary target, int key, object value)
{
if (string.IsNullOrEmpty(string.Format("{0}", value)))
return;
else
{
}
if (target.ContainsKey(key))
{
target[key] = value;
}
else
{
target.Add(key, value);
}
}
}
}