192 lines
11 KiB
C#
192 lines
11 KiB
C#
using System;
|
||
using Kingdee.BOS.Core.Bill.PlugIn;
|
||
using Kingdee.BOS.App.Data;
|
||
using System.ComponentModel;
|
||
using Kingdee.BOS.Core.Bill.PlugIn.Args;
|
||
using Kingdee.BOS.Util;
|
||
using Kingdee.BOS.WebApi.Client;
|
||
using Newtonsoft.Json.Linq;
|
||
using System.Net.Http;
|
||
using System.Text;
|
||
using Kingdee.BOS.WebApi.FormService;
|
||
using Newtonsoft.Json;
|
||
|
||
namespace GZ_LthFHTZSava
|
||
{
|
||
[Description("保存前触发,以收款条件和发货金额做判断01"), HotUpdate]
|
||
public class SaveYFH : AbstractBillPlugIn
|
||
{
|
||
private double F_Amount;
|
||
|
||
//获取当前时间
|
||
private DateTime now = DateTime.Now;
|
||
|
||
public override void BeforeSave(BeforeSaveEventArgs e)
|
||
{
|
||
base.BeforeSave(e);
|
||
|
||
//获取发货通知单的销售范围#字段
|
||
var F_SalesRange = this.View.Model.GetValue("F_SalesRange");
|
||
|
||
//判断销售范围字段等于购销
|
||
if (F_SalesRange.ToString() == "GX")
|
||
{
|
||
//获取发货通知单的源单编号字段
|
||
var FSrcBillNo = this.View.Model.GetValue("FSrcBillNo", 0);
|
||
|
||
//SQL查询获取销售订单的累计核销金额字段
|
||
var F_AmountSql = string.Format(@"SELECT F_AMOUNT FROM T_SAL_ORDER WHERE FBILLNO = '{0}'", FSrcBillNo.ToString());
|
||
var F_AmountDS = DBUtils.ExecuteDynamicObject(this.Context, F_AmountSql);
|
||
if (F_AmountDS.Count != 0)
|
||
{
|
||
F_Amount = Convert.ToDouble(F_AmountDS[0]["F_AMOUNT"]);
|
||
}
|
||
|
||
//SQL以销售订单编号做查询,查询收款条件名称
|
||
var SKTJFNameSql = string.Format(@"SELECT ISNULL(t3.FNAME,'') AS FNAME FROM T_SAL_ORDER t1 LEFT JOIN T_SAL_ORDERPLAN t2 on t1.FID = t2.FID LEFT JOIN T_BD_RECCONDITION_L t3 on t3.FID = t2.F_RecConditionId Where t1.FBILLNO = '{0}'", FSrcBillNo.ToString());
|
||
var SKTJFNameDS = DBUtils.ExecuteDynamicObject(this.Context, SKTJFNameSql);
|
||
foreach (var SKTJFNameRow in SKTJFNameDS)
|
||
{
|
||
if (SKTJFNameRow["FNAME"].ToString() == "")
|
||
{
|
||
continue;
|
||
}
|
||
//判定收款条件是否为预付款
|
||
string IFYFK = "预付";
|
||
if (SKTJFNameRow["FNAME"].ToString().Contains(IFYFK))
|
||
{
|
||
//SQL查询获取销售订单预付款的应收金额
|
||
string FRecAdvanceAmountSql = string.Format(@"SELECT SUM(t1.FRecAdvanceAmount) AS FRecAdvanceAmount FROM T_SAL_ORDERPLAN t1 LEFT JOIN T_SAL_ORDER t2 on t1.FID = t2.FID LEFT JOIN T_BD_RECCONDITION_L t3 on t3.FID = t1.F_RECCONDITIONID WHERE t2.FBILLNO = '{0}' AND t3.FNAME like '%预付%'", FSrcBillNo);
|
||
var FRecAdvanceAmountDS = DBUtils.ExecuteDynamicObject(this.Context, FRecAdvanceAmountSql);
|
||
if (FRecAdvanceAmountDS.Count != 0)
|
||
{
|
||
double FRecAdvanceAmount = Convert.ToDouble(FRecAdvanceAmountDS[0]["FRecAdvanceAmount"]);
|
||
//判定收款条件为预付款时,是否为预发货
|
||
if (F_Amount < FRecAdvanceAmount)
|
||
{
|
||
this.View.Model.SetValue("F_SFYFH", "是");
|
||
this.View.Model.SetValue("F_VRYF_Date_83g", now);
|
||
this.View.UpdateView();
|
||
}
|
||
else
|
||
{
|
||
this.View.Model.SetValue("F_SFYFH", "否");
|
||
this.View.Model.SetValue("F_VRYF_Date_83g", now);
|
||
this.View.UpdateView();
|
||
}
|
||
}
|
||
}
|
||
//判定条件是否为款到发货
|
||
string IFKDFH = "款到发货";
|
||
if (SKTJFNameRow["FNAME"].ToString().Contains(IFKDFH))
|
||
{
|
||
//获取当前单据的发货金额
|
||
double FBillAllAmount1 = Convert.ToDouble(this.View.Model.GetValue("FBillAllAmount"));
|
||
|
||
string FBillAllAmountSql;
|
||
|
||
//SQL查询累计发货金额
|
||
if (this.View.Model.GetValue("FBillNo").IsNullOrEmpty())
|
||
{
|
||
FBillAllAmountSql = string.Format(@"SELECT SUM(t1.FBillAllAmount) FBillAllAmount FROM T_SAL_DELIVERYNOTICEFIN t1 LEFT JOIN T_SAL_DELIVERYNOTICEENTRY t2 on t1.FID = t2.FID WHERE t2.FSRCBILLNO = '{0}'And t2.FID != 0", FSrcBillNo);
|
||
}
|
||
else
|
||
{
|
||
//获取发货通知单的FID
|
||
string FormTitle = this.View.Model.DataObject["Id"].ToString();
|
||
|
||
FBillAllAmountSql = string.Format(@"SELECT SUM(t1.FBillAllAmount) FBillAllAmount FROM T_SAL_DELIVERYNOTICEFIN t1 LEFT JOIN T_SAL_DELIVERYNOTICEENTRY t2 on t1.FID = t2.FID WHERE t2.FSRCBILLNO = '{0}' And t1.FID != '{1}'", FSrcBillNo, FormTitle);
|
||
}
|
||
|
||
var FBillAllAmountDS = DBUtils.ExecuteDynamicObject(this.Context, FBillAllAmountSql);
|
||
if (FBillAllAmountDS.Count != 0)
|
||
{
|
||
double FBillAllAmount = Convert.ToDouble(FBillAllAmountDS[0]["FBillAllAmount"]);
|
||
if (F_Amount < FBillAllAmount + FBillAllAmount1)
|
||
{
|
||
this.View.Model.SetValue("F_SFYFH", "是");
|
||
this.View.UpdateView();
|
||
this.View.Model.SetValue("F_VRYF_Date_83g", now);
|
||
this.View.UpdateView();
|
||
}
|
||
else
|
||
{
|
||
this.View.Model.SetValue("F_SFYFH", "否");
|
||
this.View.UpdateView();
|
||
this.View.Model.SetValue("F_VRYF_Date_83g", now);
|
||
this.View.UpdateView();
|
||
}
|
||
}
|
||
}
|
||
////判定条件是否为协议付款
|
||
//string IFXYFK = "协议付款";
|
||
//if (SKTJFNameRow["FNAME"].ToString().Contains(IFXYFK))
|
||
//{
|
||
// //SQL查询销售组织和客户编码
|
||
// string FSaleOrgIdAndFCustIdSql = string.Format(@"SELECT t1.FSaleOrgId AS FSaleOrgId,t2.FNUMBER AS FNUMBER FROM T_SAL_ORDER t1 LEFT JOIN T_BD_CUSTOMER t2 on t1.FCUSTID = t2.FCUSTID WHERE FBILLNO = '{0}'", FSrcBillNo);
|
||
// var FSaleOrgIdAndFCustIdDS = DBUtils.ExecuteDynamicObject(this.Context, FSaleOrgIdAndFCustIdSql);
|
||
// if (FSaleOrgIdAndFCustIdDS.Count != 0)
|
||
// {
|
||
// //获取销售组织
|
||
// string FSaleOrgId = FSaleOrgIdAndFCustIdDS[0]["FSaleOrgId"].ToString();
|
||
// //获取客户编码
|
||
// string FCustId = FSaleOrgIdAndFCustIdDS[0]["FNUMBER"].ToString();
|
||
// //通过API获取客户剩余信用额度
|
||
// var Json = "{\"FieldKeys\":\"FLIMITBALANCE\",\"SchemeId\":\"\",\"StartRow\":0,\"Limit\":2000,\"IsVerifyBaseDataField\":\"true\",\"FilterString\":[],\"Model\":{\"FSaleOrgList\":\"" + FSaleOrgId + "\",\"FObjectType\":\"BD_Customer\",\"FStartCustId\":{\"FNumber\":\"" + FCustId + "\"},\"FEndCustId\":{\"FNumber\":\"" + FCustId + "\"},\"FCreditStatus\":\"ALL\",\"FIsExceeds\":\"-1\",\"FMultiSelect\":false}}";
|
||
|
||
// var result = WebApiServiceCall.GetSysReportData(this.Context, "CRE_Rpt_CreditInfo", Json);
|
||
|
||
// var resultJo = JsonConvert.DeserializeObject<JToken>(JsonConvert.SerializeObject(result));
|
||
// var IsSuccess = resultJo["Result"]["IsSuccess"].Value<string>();
|
||
// if (IsSuccess == "True")
|
||
// {
|
||
// var RowCount = resultJo["Result"]["RowCount"].Value<int>();
|
||
// if (RowCount != 0)
|
||
// {
|
||
// JArray FLIMITBALANCEJArray = resultJo["Result"]["Rows"].Value<JArray>();
|
||
|
||
// double FLIMITBALANCE = Convert.ToDouble(FLIMITBALANCEJArray[0][0]);
|
||
|
||
// //查询当前发货通知单的发货金额
|
||
// double FBillAllAmount = Convert.ToDouble(this.View.Model.GetValue("FBillAllAmount").ToString());
|
||
// //发货金额大于剩余额度百分之九十,则判定为预发货
|
||
// if (FBillAllAmount > FLIMITBALANCE * 0.9)
|
||
// {
|
||
// this.View.Model.SetValue("F_SFYFH", "是");
|
||
// this.View.UpdateView();
|
||
// this.View.Model.SetValue("F_VRYF_Date_83g", now);
|
||
// this.View.UpdateView();
|
||
// }
|
||
// else
|
||
// {
|
||
// this.View.Model.SetValue("F_SFYFH", "否");
|
||
// this.View.UpdateView();
|
||
// this.View.Model.SetValue("F_VRYF_Date_83g", now);
|
||
// this.View.UpdateView();
|
||
// }
|
||
// }
|
||
// else if (RowCount == 0)
|
||
// {
|
||
// this.View.Model.SetValue("F_SFYFH", "是");
|
||
// this.View.UpdateView();
|
||
// this.View.ShowErrMessage("客户编码: " + FCustId + ",未启用信用管理");
|
||
// this.View.Model.SetValue("F_VRYF_Date_83g", now);
|
||
// this.View.UpdateView();
|
||
// }
|
||
// else
|
||
// {
|
||
// this.View.Model.SetValue("F_SFYFH", "否");
|
||
// this.View.UpdateView();
|
||
// this.View.Model.SetValue("F_VRYF_Date_83g", now);
|
||
// this.View.UpdateView();
|
||
// }
|
||
// }
|
||
// }
|
||
//}
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|