192 lines
11 KiB
C#
Raw Normal View History

2025-05-13 14:14:51 +08:00
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();
// }
// }
// }
//}
}
}
}
}
}