This commit is contained in:
李狗蛋 2025-05-13 14:14:51 +08:00
parent dff2f5f9fe
commit cacc803f1d
9 changed files with 382 additions and 41 deletions

View File

@ -238,6 +238,10 @@
<Compile Include="PRD_PPBOMCHANGE\PLTHForm.cs" />
<Compile Include="PRD_PPBOMCHANGE\PLTHWL.cs" />
<Compile Include="SAL_DELIVERYNOTICE\PushCeLue.cs" />
<Compile Include="SAL_ORDERList\ListUpFJ.cs" />
<Compile Include="SAL_ORDER\SaveWL.cs" />
<Compile Include="T_PUR_RECEIVE\SaveDate.cs" />
<Compile Include="SAL_DELIVERYNOTICE\SaveYFH.cs" />
<Compile Include="T_IV_SALESIC\AuditS_Order.cs" />
<Compile Include="Common\CommonHelper.cs" />
<Compile Include="PRD_PPBOM\AuditPOM.cs" />
@ -256,6 +260,9 @@
<Compile Include="SQL\SqlManage.cs" />
<Compile Include="SUB_PPBOM\AuditPOM.cs" />
<Compile Include="T_IV_SALESIC\UnAuditS_Order.cs" />
<Compile Include="XMYSLRB\AfterSave.cs" />
<Compile Include="XMYSLRB\OnLoadLR.cs" />
<Compile Include="XMYSLRB\Save.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />

View File

@ -16,7 +16,8 @@ namespace GZ_LTHPilot_ORDER.SAL_DELIVERYNOTICE
public override void OnParseFilter(ParseFilterEventArgs e)
{
base.OnParseFilter(e);
e.FilterPolicySQL = string.Format("And 1 = 1");
e.FilterPolicySQL += $"AND (SELECT CASE WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID <> C.F_SaleOrgId AND A.FENTRYID = t1.FENTRYID) > 0 THEN 1 WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID INNER JOIN T_BD_MATERIAL E ON D.FMATERIALID = E.FMATERIALID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID = C.F_SaleOrgId AND NOT(E.FNUMBER LIKE 'H.10%' OR E.FNUMBER LIKE 'H.20%' OR E.FNUMBER LIKE 'H.30%') AND A.FENTRYID = t1.FENTRYID) > 0 THEN 1 WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID WHERE C.FSaleOrgId <> 100302 AND A.FENTRYID = t1.FENTRYID) > 0 THEN 1 WHEN (SELECT COUNT(*) FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID INNER JOIN T_BD_MATERIAL E ON D.FMATERIALID = E.FMATERIALID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID = C.F_SaleOrgId AND (E.FNUMBER LIKE 'H.10%' OR E.FNUMBER LIKE 'H.20%' OR E.FNUMBER LIKE 'H.30%') AND A.FENTRYID = t1.FENTRYID AND D.F_Allocatedquantity <> 0) > 0 THEN 1 ELSE (SELECT COUNT(*) FROM T_PRD_MO A INNER JOIN T_PRD_MOENTRY B ON A.FID = B.FID INNER JOIN T_PRD_MOENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' WHERE A.FDocumentStatus = 'C' AND C.FSBILLID IN (SELECT C.FID FROM T_SAL_DELIVERYNOTICEENTRY A INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID INNER JOIN T_BD_MATERIAL E ON D.FMATERIALID = E.FMATERIALID WHERE C.FSaleOrgId = 100302 AND C.FSALEORGID = C.F_SaleOrgId AND (E.FNUMBER LIKE 'H.10%' OR E.FNUMBER LIKE 'H.20%' OR E.FNUMBER LIKE 'H.30%') AND A.FENTRYID = t1.FENTRYID)) END AS Result) > 0";
e.PlugFilterDesc = "当销售订单的销售组织为珠海派诺且销售组织=备货组织时,销售订单需下推生产订单或包装工单处于审核状态后,才可由发货通知单下推销售出库";
}
}
}

View File

@ -0,0 +1,191 @@
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();
// }
// }
// }
//}
}
}
}
}
}

41
SAL_ORDER/SaveWL.cs Normal file
View File

@ -0,0 +1,41 @@
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.SAL_ORDER
{
[Description("服务插件:销售订单根据物料编码做判断"), HotUpdate]
public class SaveWL : AbstractOperationServicePlugIn
{
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
{
base.BeforeExecuteOperationTransaction(e);
foreach (var Row in e.SelectedRows)
{
//获取单据信息
var Billobj = Row.DataEntity;
//根据订单FID
var sqls = SqlManage.SqlManage.SaveOrder_GZTH(this.Context, Convert.ToString(Billobj["Id"]));
if (sqls != null)
{
foreach (var sql in sqls)
{
if (Convert.ToInt32(sql["SUMWL"]) == 0)
{
e.Cancel = true;
throw new Exception(
string.Format(@"物料编码J.06.00开头,且订单日期大于2025/05/10则明细物联网卡使用年份字段必填")
);
}
}
}
}
}
}
}

View File

@ -58,17 +58,17 @@ namespace GZ_LTHPilot_ORDER.SqlManage
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
//生产用料清单明细为半成品仓,更改是否关键件字段
public static void UpdatePRD_PPBOMFIsKeyComponent(Context ctx,string FENTRYID)
public static void UpdatePRD_PPBOMFIsKeyComponent(Context ctx, string FENTRYID)
{
string sql = string.Format(@"/*dialect*/
update T_PRD_PPBOMENTRY_C
SET FIsKeyComponent = '1'
WHERE FENTRYID = '{0}'
",FENTRYID);
", FENTRYID);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
//生产用料清单明细为包材仓,更改发料方式
public static void UpdatePRD_PPBOMFIssueType(Context ctx, string FENTRYID)
public static void UpdatePRD_PPBOMFIssueType(Context ctx, string FENTRYID)
{
string sql = string.Format(@"/*dialect*/
update T_PRD_PPBOMENTRY_C
@ -84,7 +84,7 @@ namespace GZ_LTHPilot_ORDER.SqlManage
update T_PRD_PPBOMENTRY_C
SET FIssueType = '4',FBackFlushType = '3',FSrcTransOrgId = '{1}'
WHERE FENTRYID = '{0}'
", FENTRYID,ZZID);
", FENTRYID, ZZID);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
//生产用料清单明细为包装结构件仓和装配结构件仓,更改拔出仓库为仓库
@ -159,7 +159,7 @@ namespace GZ_LTHPilot_ORDER.SqlManage
}
//查询收款单源单明细的源单类型为应收单查询销售订单编号的SQL语句
public static DynamicObjectCollection GetRECEIVEBILLFSRCBILLNOAndFREALRECAMOUNTFOR(Context ctx,string FID)
public static DynamicObjectCollection GetRECEIVEBILLFSRCBILLNOAndFREALRECAMOUNTFOR(Context ctx, string FID)
{
string sql = string.Format(@"/*dialect*/
SELECT
@ -178,13 +178,13 @@ namespace GZ_LTHPilot_ORDER.SqlManage
}
//更新销售订单表头的累计核销金额
public static void UpdateOrderF_AMOUNTNew(Context ctx,string Fbillno,string FREALRECAMOUNTFOR)
public static void UpdateOrderF_AMOUNTNew(Context ctx, string Fbillno, string FREALRECAMOUNTFOR)
{
string sql = string.Format(@"/*dialect*/
update T_SAL_ORDER
SET F_AMOUNT = F_AMOUNT+{1}
WHERE FBILLNO = '{0}'
", Fbillno,FREALRECAMOUNTFOR);
", Fbillno, FREALRECAMOUNTFOR);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
@ -200,7 +200,7 @@ namespace GZ_LTHPilot_ORDER.SqlManage
}
//获取预收款单的销售订单源单编号
public static DynamicObjectCollection GetRECEIVEBILLFSRCBILLNOS(Context ctx,string FID)
public static DynamicObjectCollection GetRECEIVEBILLFSRCBILLNOS(Context ctx, string FID)
{
string sql = string.Format(@"
SELECT
@ -229,7 +229,7 @@ namespace GZ_LTHPilot_ORDER.SqlManage
INNER JOIN T_AR_RECEIVABLEENTRY_LK F On E.FENTRYID = F.FENTRYID AND F.FALLAMOUNTFOR_D <> 0
INNER JOIN T_SAL_RETURNSTOCKENTRY G ON G.FID = F.FSBILLID AND F.FSID = G.FENTRYID
WHERE A.FID = '{0}' AND B.FSOURCETYPE = 'AR_receivable' AND A.FSALEORGID <> '100302'
",FID);
", FID);
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
@ -257,56 +257,56 @@ namespace GZ_LTHPilot_ORDER.SqlManage
}
//根据销售出库单的FID获取销售订单的FENTRYID
public static DynamicObjectCollection GetSal_ORderFEntryIdAndFid(Context ctx,string FID)
public static DynamicObjectCollection GetSal_ORderFEntryIdAndFid(Context ctx, string FID)
{
string sql = string.Format(@"/*dialect*/
EXEC GETSAL_ORDERFidAndFENTRYID_GZTH '{0}'
",FID);
", FID);
//执行SQL
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection;
}
//根据销售出库单的FID反写销售订单新旧系统未出库数量
public static void UpdateSal_OrderF_notoutQty(Context ctx,string FENTRYID)
public static void UpdateSal_OrderF_notoutQty(Context ctx, string FENTRYID)
{
string sql = string.Format(@"/*dialect*/
EXEC UpdateSAL_ORDERF_notoutQty '{0}'
",FENTRYID);
", FENTRYID);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
//根据销售退货单的FID获取销售订单的FENTRYID
public static DynamicObjectCollection GETRETURNSTOCKSal_ORDERFidAndFentryid(Context ctx,string FID)
public static DynamicObjectCollection GETRETURNSTOCKSal_ORDERFidAndFentryid(Context ctx, string FID)
{
string sql = string.Format(@"/*dialect*/
EXEC GETRETURNSTOCKSal_ORDERFidAndFentryid_GZTH '{0}'
",FID);
", FID);
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection;
}
/*M开头
: 68*/
public static void UpdatePRD_PPBOMLIkeM(Context ctx,string FID)
public static void UpdatePRD_PPBOMLIkeM(Context ctx, string FID)
{
string sql = string.Format(@"/*dialect*/
EXEC UpdatePRD_PPBOMLIkeM_GZTH '{0}'
",FID);
", FID);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
//根据销售订单的纸质合同号,修改销售订单的销售类型字段
public static void UpdateSal_OrderF_VRYF_Combo_lsn(Context ctx,string FID)
public static void UpdateSal_OrderF_VRYF_Combo_lsn(Context ctx, string FID)
{
string sql = string.Format(@"/*dialect*/
EXEC GZTH_UpdateSal_OrderF_VRYF_Combo_lsn '{0}'
",FID);
", FID);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
//根据红字发票FID获取查询出是否由蓝字发票进行下推获取蓝字发票的FIDFENTRYID
public static DynamicObjectCollection GetBuleFpFID(Context ctx,string FID)
//根据红字发票FID获取查询出是否由蓝字发票进行下推获取蓝字发票的FIDFENTRYID
public static DynamicObjectCollection GetBuleFpFID(Context ctx, string FID)
{
string sql = string.Format(@"/*dialect*/
EXEC GetLPFid_GZTH '{0}'
",FID);
", FID);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
string LpFidSql = string.Format(@"/*dialect*/
SELECT * FROM GZ_AuditTHHZFP
@ -315,7 +315,7 @@ namespace GZ_LTHPilot_ORDER.SqlManage
}
//根据红字发票查询蓝字发票的FID查询销售订单的FID和FENTRYID开票数量和开票金额
public static DynamicObjectCollection GetHZFPSal_ORDERFidAndFentryid(Context ctx,string FID)
public static DynamicObjectCollection GetHZFPSal_ORDERFidAndFentryid(Context ctx, string FID)
{
string sql = string.Format(@"/*dialect*/
EXEC GetIV_SALESICSal_OrderFID_GZTH '{0}'
@ -338,33 +338,33 @@ namespace GZ_LTHPilot_ORDER.SqlManage
return DBServiceHelper.ExecuteDynamicObject(ctx, getSql.ToString(), null, null, CommandType.Text, null);
}
//根据获取的销售订单FID和FentryId更新开票数量和开票金额
public static void UpSal_OrderKPJEAndKPSL(Context ctx,string FID,string FENTRYID,string F_INVOICEQTY,string F_F_INVOICEAMOUNT)
public static void UpSal_OrderKPJEAndKPSL(Context ctx, string FID, string FENTRYID, string KPZZ,string F_INVOICEQTY, string F_F_INVOICEAMOUNT)
{
string sql = string.Format(@"/*dialect*/
EXEC TrueUpdateSal_OrderF_INVOICEQTYAndF_F_INVOICEAMOUNTAndF_invoiceAmount_TH '{0}','{1}','{2}','{3}'
",FID,FENTRYID,F_INVOICEQTY,F_F_INVOICEAMOUNT);
EXEC TrueUpdateSal_OrderF_INVOICEQTYAndF_F_INVOICEAMOUNTAndF_invoiceAmount_TH '{0}','{1}','{2}','{3}','{4}'
", FID, FENTRYID, KPZZ, F_INVOICEQTY, F_F_INVOICEAMOUNT);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
//根据获取的销售订单FID和FentryId更新开票数量和开票金额(当销售订单的累计核销金额>价税合计本位币后)
public static void FalseUpSal_OrderKPJEAndKPSL(Context ctx, string FID, string FENTRYID, string F_INVOICEQTY, string F_F_INVOICEAMOUNT)
public static void FalseUpSal_OrderKPJEAndKPSL(Context ctx, string FID, string FENTRYID, string KPZZ,string F_INVOICEQTY, string F_F_INVOICEAMOUNT)
{
string sql = string.Format(@"/*dialect*/
EXEC FalseUpdateSal_OrderF_INVOICEQTYAndF_F_INVOICEAMOUNTAndF_invoiceAmount_TH '{0}','{1}','{2}','{3}'
", FID, FENTRYID, F_INVOICEQTY, F_F_INVOICEAMOUNT);
EXEC FalseUpdateSal_OrderF_INVOICEQTYAndF_F_INVOICEAMOUNTAndF_invoiceAmount_TH '{0}','{1}','{2}','{3}','{4}'
", FID, FENTRYID, KPZZ,F_INVOICEQTY, F_F_INVOICEAMOUNT);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
//根据查询销售订单FID查询销售订单累计核销金额和价税合计本位币
public static DynamicObjectCollection GetSal_Order(Context ctx,string FID)
public static DynamicObjectCollection GetSal_Order(Context ctx, string FID)
{
string sql = string.Format(@"
SELECT
A.FBILLNO AS '',
B.FBILLALLAMOUNT_LC AS '',
B.FBillAllAmount AS '',
A.F_INVOICEAMOUNT AS ''
FROM T_SAL_ORDER A
INNER JOIN T_SAL_ORDERFIN B ON A.FID = B.FID
WHERE A.FID = '{0}'
AND ABS(A.F_invoiceAmount) > ABS(B.FBILLALLAMOUNT_LC)
AND ABS(A.F_invoiceAmount) > ABS(B.FBillAllAmount)
", FID);
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
@ -382,5 +382,34 @@ namespace GZ_LTHPilot_ORDER.SqlManage
");
return DBServiceHelper.ExecuteDynamicObject(ctx, getSql.ToString(), null, null, CommandType.Text, null);
}
//根据销售出库的FID反写发货通知单的检验周期字段
public static DynamicObjectCollection UpdateFHTZDJYZQ(Context ctx,string FID)
{
//查询表并且返回表的数据
string getSql = string.Format(@"/*dialect*/
EXEC SaveCGRK_GZTH '{0}'
", FID);
return DBServiceHelper.ExecuteDynamicObject(ctx, getSql.ToString(), null, null, CommandType.Text, null);
}
//根据销售订单的FID查询物料编码J开头的物联网卡使用年份必填
public static DynamicObjectCollection SaveOrder_GZTH(Context ctx, string FID)
{
//查询表并且返回表的数据
string getSql = string.Format(@"/*dialect*/
EXEC SaveOrder_GZTH '{0}'
", FID);
return DBServiceHelper.ExecuteDynamicObject(ctx, getSql.ToString(), null, null, CommandType.Text, null);
}
//根据项目预算利润表FID更新财务信息字段
public static void GZTH_XMYSBSave(Context ctx,string FID)
{
string sql = string.Format(@"/*dialect*/
EXEC GZTH_XMYSBSave '{0}'
", FID);
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
}
}

View File

@ -11,7 +11,7 @@ using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.IV_SALESIC
{
[Description("服务插件:发票审核时,反写销售订单累计开票金额字段"), HotUpdate]
[Description("服务插件:发票审核时,反写销售订单累计开票金额字段非本位币"), HotUpdate]
public class AuditS_Order : AbstractOperationServicePlugIn
{
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
@ -33,7 +33,7 @@ namespace GZ_LTHPilot_ORDER.IV_SALESIC
{
//根据销售订单FID和销售订单FENTRYID更新源销售订单的开票数量和开票金额(明细)
SqlManage.SqlManage.UpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(Ordersql["销售订单FID"]),
Convert.ToString(Ordersql["销售订单FENTRYID"]), Convert.ToString(Ordersql["开票数量"]),
Convert.ToString(Ordersql["销售订单FENTRYID"]), Convert.ToString(Ordersql["开票组织"]), Convert.ToString(Ordersql["开票数量"]),
Convert.ToString(Ordersql["开票金额"]));
//判断更新后的累计核销金额是否大于销售订单的价税合计本位币
var dynamics = SqlManage.SqlManage.GetSal_Order(this.Context, Convert.ToString(Ordersql["销售订单FID"]));
@ -41,7 +41,7 @@ namespace GZ_LTHPilot_ORDER.IV_SALESIC
{
//当累计开票金额>订单的价税合计时,溯源更新订单的开票数量和开票金额
SqlManage.SqlManage.FalseUpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(Ordersql["销售订单FID"]),
Convert.ToString(Ordersql["销售订单FENTRYID"]), Convert.ToString(Ordersql["开票数量"]),
Convert.ToString(Ordersql["销售订单FENTRYID"]), Convert.ToString(Ordersql["开票组织"]), Convert.ToString(Ordersql["开票数量"]),
Convert.ToString(Ordersql["开票金额"]));
foreach (var dynamic in dynamics)
{
@ -70,7 +70,7 @@ namespace GZ_LTHPilot_ORDER.IV_SALESIC
{
//根据销售订单FID和销售订单的FENTRYID更新源销售订单的开票数量和开票金额(明细)
SqlManage.SqlManage.UpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(LZOrder["销售订单FID"]),
Convert.ToString(LZOrder["销售订单FENTRYID"]), Convert.ToString(LZOrder["开票数量"]),
Convert.ToString(LZOrder["销售订单FENTRYID"]), Convert.ToString(LZOrder["开票组织"]), Convert.ToString(LZOrder["开票数量"]),
Convert.ToString(LZOrder["开票金额"]));
//判断更新后的累计核销金额是否大于销售订单的价税合计本位币
var dynamics = SqlManage.SqlManage.GetSal_Order(this.Context, Convert.ToString(LZOrder["销售订单FID"]));
@ -78,7 +78,7 @@ namespace GZ_LTHPilot_ORDER.IV_SALESIC
{
//当累计开票金额>订单的价税合计时,溯源更新订单的开票数量和开票金额
SqlManage.SqlManage.FalseUpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(LZOrder["销售订单FID"]),
Convert.ToString(LZOrder["销售订单FENTRYID"]), Convert.ToString(LZOrder["开票数量"]),
Convert.ToString(LZOrder["销售订单FENTRYID"]), Convert.ToString(LZOrder["开票组织"]), Convert.ToString(LZOrder["开票数量"]),
Convert.ToString(LZOrder["开票金额"]));
foreach (var dynamic in dynamics)
{
@ -93,8 +93,8 @@ namespace GZ_LTHPilot_ORDER.IV_SALESIC
}
}
}
//break;
}
break;
}
}
}

View File

@ -33,7 +33,7 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC
{
//反审核,溯源审核的操作
SqlManage.SqlManage.FalseUpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(Ordersql["销售订单FID"]),
Convert.ToString(Ordersql["销售订单FENTRYID"]), Convert.ToString(Ordersql["开票数量"]),
Convert.ToString(Ordersql["销售订单FENTRYID"]), Convert.ToString(Ordersql["开票组织"]), Convert.ToString(Ordersql["开票数量"]),
Convert.ToString(Ordersql["开票金额"]));
}
@ -51,7 +51,7 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC
{
//反审核,溯源审核的操作
SqlManage.SqlManage.FalseUpSal_OrderKPJEAndKPSL(this.Context, Convert.ToString(LZOrder["销售订单FID"]),
Convert.ToString(LZOrder["销售订单FENTRYID"]), Convert.ToString(LZOrder["开票数量"]),
Convert.ToString(LZOrder["销售订单FENTRYID"]), Convert.ToString(LZOrder["开票组织"]), Convert.ToString(LZOrder["开票数量"]),
Convert.ToString(LZOrder["开票金额"]));
}
}

28
T_PUR_RECEIVE/SaveDate.cs Normal file
View File

@ -0,0 +1,28 @@
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.SAL_DELIVERYNOTICE
{
[Description("服务插件:采购入库单保存触发检验周期字段更新"), HotUpdate]
public class SaveDate : AbstractOperationServicePlugIn
{
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(e);
foreach (var Row in e.SelectedRows)
{
//获取单据信息
var Billobj = Row.DataEntity;
//以采购入库单的FID获取采购入库单日期字段减去收料通知单的日期的天数并对检验周期字段赋值
SqlManage.SqlManage.UpdateFHTZDJYZQ(this.Context, Convert.ToString(Billobj["Id"]));
}
}
}
}

View File

@ -0,0 +1,44 @@
SELECT
CASE
WHEN
(
SELECT COUNT(*)
FROM T_SAL_DELIVERYNOTICEENTRY A
INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY'
INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID
INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID
WHERE C.FSaleOrgId = 100302
AND C.FSALEORGID <> C.F_SaleOrgId
AND A.FENTRYID = t1.FENTRYID
) > 0
THEN 1
WHEN(
SELECT COUNT(*)
FROM T_SAL_DELIVERYNOTICEENTRY A
INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY'
INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID
INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID
WHERE C.FSaleOrgId <> 100302
AND A.FENTRYID = t1.FENTRYID
) > 0
THEN 1
ELSE
(
SELECT COUNT(*)
FROM T_PRD_MO A
INNER JOIN T_PRD_MOENTRY B ON A.FID = B.FID
INNER JOIN T_PRD_MOENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY'
WHERE A.FDocumentStatus = 'C'
AND C.FSBILLID IN
(
SELECT C.FID
FROM T_SAL_DELIVERYNOTICEENTRY A
INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK B ON A.FENTRYID = B.FENTRYID AND B.FSTABLENAME = 'T_SAL_ORDERENTRY'
INNER JOIN T_SAL_ORDER C ON C.FID = B.FSBILLID
INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID
WHERE C.FSaleOrgId = 100302
AND C.FSALEORGID = C.F_SaleOrgId
AND A.FENTRYID = t1.FENTRYID
)
)
END AS Result