李狗蛋 569ca39775 1
2025-05-13 14:14:51 +08:00

192 lines
11 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
// }
// }
// }
//}
}
}
}
}
}