Compare commits

...

No commits in common. "main" and "3338863a22b5a82f8afa1fc873750e630afc9f8b" have entirely different histories.

32 changed files with 17 additions and 1758 deletions

View File

@ -1,14 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Config
{
internal class ContextConfig
{
public static string DefaultUserName = "ERP6";
public static int DefaultUserId = 131409;
}
}

View File

@ -1,4 +0,0 @@
copy $(TargetPath) "D:\Program Files (x86)\Kingdee\K3Cloud\WebSite\Bin\$(TargetFileName)"
copy $(TargetPath) "D:\kingdee\K3Cloud\WebSite\Bin\$(TargetFileName)"

View File

@ -132,10 +132,6 @@
<Reference Include="Kingdee.BOS.DataEntity">
<HintPath>..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.DataEntity.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.ServiceFacade.KDServiceFx, Version=9.0.78.3, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Library\Kingdee.BOS.ServiceFacade.KDServiceFx.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.ServiceHelper">
<HintPath>..\..\派诺-斌哥\git\6、程序\GZ_KD_Parino\dll\Kingdee.BOS.ServiceHelper.dll</HintPath>
</Reference>
@ -332,34 +328,14 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Config\ContextConfig.cs" />
<Compile Include="Models\K3Request\ReportDataParam.cs" />
<Compile Include="Models\K3Result\KingdeeResult.cs" />
<Compile Include="Models\K3Result\ListResult.cs" />
<Compile Include="Models\K3Result\Model\K3CloudResponseStatus.cs" />
<Compile Include="Models\K3Result\Model\K3CloudResult.cs" />
<Compile Include="Models\K3Result\Model\K3CloudResultInfo.cs" />
<Compile Include="Models\K3Result\Model\K3CloudSuccessEntity.cs" />
<Compile Include="Models\VO\SaleExecuteOut.cs" />
<Compile Include="PRD_PPBOMCHANGE\PLTH.cs" />
<Compile Include="PRD_PPBOMCHANGE\PLTHForm.cs" />
<Compile Include="PRD_PPBOMCHANGE\PLTHWL.cs" />
<Compile Include="PUR_POORDER\HQKC.cs" />
<Compile Include="SAL_DELIVERYNOTICE\PushCeLue.cs" />
<Compile Include="SAL_ORDERList\ListUpFJ.cs" />
<Compile Include="SAL_ORDER\ServicePlugIn\UnAudit.cs" />
<Compile Include="SAL_ORDER\ServicePlugIn\Audit.cs" />
<Compile Include="SAL_ORDER\DataChage.cs" />
<Compile Include="SAL_ORDER\SaveWL.cs" />
<Compile Include="ScheduleService\SaleOrderReceiveAmount.cs" />
<Compile Include="ScheduleService\SaleOrderSumSicsAmountRefresh.cs" />
<Compile Include="Services\OrgService.cs" />
<Compile Include="Services\SaleOrderService.cs" />
<Compile Include="Services\SaleSicsService.cs" />
<Compile Include="Services\TempTableService.cs" />
<Compile Include="T_IV_SALESIC\ServicePlugIn\Audit.cs" />
<Compile Include="T_IV_SALESIC\ServicePlugIn\Submit.cs" />
<Compile Include="T_IV_SALESIC\ServicePlugIn\UnAudit.cs" />
<Compile Include="T_PUR_RECEIVE\SaveDate.cs" />
<Compile Include="SAL_DELIVERYNOTICE\SaveYFH.cs" />
<Compile Include="T_IV_SALESIC\AuditS_Order.cs" />
@ -380,9 +356,6 @@
<Compile Include="SQL\SqlManage.cs" />
<Compile Include="SUB_PPBOM\AuditPOM.cs" />
<Compile Include="T_IV_SALESIC\UnAuditS_Order.cs" />
<Compile Include="Utils\ContextUtil.cs" />
<Compile Include="Utils\LogUtil.cs" />
<Compile Include="WebApiService\SaleOrderApiService.cs" />
<Compile Include="XMYSLRB\AfterSave.cs" />
<Compile Include="XMYSLRB\OnLoadLR.cs" />
<Compile Include="XMYSLRB\Save.cs" />
@ -394,14 +367,12 @@
<WCFMetadata Include="Connected Services\" />
</ItemGroup>
<ItemGroup>
<Content Include="Copy.txt" />
<Content Include="Library\Kingdee.BOS.App.Core.dll" />
<Content Include="Library\Kingdee.BOS.App.dll" />
<Content Include="Library\Kingdee.BOS.Contracts.dll" />
<Content Include="Library\Kingdee.BOS.Core.dll" />
<Content Include="Library\Kingdee.BOS.DataEntity.dll" />
<Content Include="Library\Kingdee.BOS.dll" />
<Content Include="Library\Kingdee.BOS.ServiceFacade.KDServiceFx.dll" />
<Content Include="Library\Kingdee.BOS.ServiceHelper.dll" />
<Content Include="Library\Kingdee.BOS.VerificationHelper.dll" />
<Content Include="Library\Kingdee.BOS.Web.dll" />
@ -434,7 +405,6 @@
<Content Include="Library\NPOI.OpenXml4Net.dll" />
<Content Include="Library\NPOI.OpenXmlFormats.dll" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="packages\SkiaSharp.NativeAssets.macOS.2.88.8\build\net462\SkiaSharp.NativeAssets.macOS.targets" Condition="Exists('packages\SkiaSharp.NativeAssets.macOS.2.88.8\build\net462\SkiaSharp.NativeAssets.macOS.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
@ -445,8 +415,4 @@
<Error Condition="!Exists('packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets'))" />
</Target>
<Import Project="packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets" Condition="Exists('packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets')" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

BIN
GZ_LTHPilot_ORDER.dll Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,44 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Models.K3Request
{
public class ReportDataParam
{
public bool ReturnJsonData { get; set; }
public string FieldKeys { get; set; }
public string SchemeId { get; set; }
public int StartRow { get; set; }
public int Limit { get; set; }
public bool IsVerifyBaseDataField { get; set; }
public object[] FilterString { get; set; }
public Model Model { get; set; }
}
public class Model
{
public string FSaleOrgList { get; set; }
public string FSoFromDate { get; set; }
public string FSoToDate { get; set; }
public string FSaleOFrom { get; set; }
public string FSaleOTo { get; set; }
public string FFormCloseStatus { get; set; }
public string FFormStatus { get; set; }
public string FPriceFrom { get; set; }
public string FBusCloseStatus { get; set; }
public bool FMergingSOHeader { get; set; }
public bool FIncludedUnfilledOrders { get; set; }
public bool FIsRecWithMat { get; set; }
public string FSuite { get; set; }
public string FSetAccountType { get; set; }
public bool FIsGroup { get; set; }
public bool FIncludedFree { get; set; }
}
}

View File

@ -1,15 +0,0 @@
using GZ_LTHPilot_ORDER.Models.K3Result.Model;
namespace GZ_LTHPilot_ORDER.Models.K3Result
{
/// <summary>
/// 金蝶云星空返回类
/// </summary>
public class KingdeeResult<T>
{
/// <summary>
/// 返回对象
/// </summary>
public K3CloudResult<T> Result { get; set; }
}
}

View File

@ -1,25 +0,0 @@
using System.Collections.Generic;
namespace GZ_LTHPilot_ORDER.Models.K3Result
{
/// <summary>
/// 列表查询输出类
/// </summary>
public class ListResult
{
/// <summary>
/// 列表
/// </summary>
public List<dynamic> List { get; set; }
/// <summary>
/// 构造函数
/// </summary>
/// <param name="list"></param>
public ListResult(List<dynamic> list)
{
List = list;
}
}
}

View File

@ -1,35 +0,0 @@
using System.Collections.Generic;
namespace GZ_LTHPilot_ORDER.Models.K3Result.Model
{
/// <summary>
/// 响应对象
/// </summary>
public class K3CloudResponseStatus
{
/// <summary>
/// 错误代码
/// </summary>
public int ErrorCode { get; set; }
/// <summary>
/// 是否成功
/// </summary>
public bool IsSuccess { get; set; }
/// <summary>
/// 错误信息列表
/// </summary>
public List<K3CloudResultInfo> Errors { get; set; }
/// <summary>
/// 成功实体
/// </summary>
public List<K3CloudSuccessEntity> SuccessEntitys { get; set; }
/// <summary>
/// 成功消息
/// </summary>
public List<K3CloudResultInfo> SuccessMessages { get; set; }
/// <summary>
/// 消息代码
/// </summary>
public int MsgCode { get; set; }
}
}

View File

@ -1,53 +0,0 @@
using System.Collections.Generic;
namespace GZ_LTHPilot_ORDER.Models.K3Result.Model
{
/// <summary>
/// 返回类
/// </summary>
public class K3CloudResult<T>
{
/// <summary>
/// 响应对象
/// </summary>
public K3CloudResponseStatus ResponseStatus { get; set; }
/// <summary>
/// 转换响应对象
/// </summary>
public K3CloudResponseStatus ConvertResponseStatus { get; set; }
/// <summary>
/// 返回结果,用于查看单据
/// </summary>
public object Result { get; set; }
/// <summary>
/// 开始索引
/// </summary>
public long? StartIndex { get; set; }
/// <summary>
/// 是否最后
/// </summary>
public bool? IsLast { get; set; }
/// <summary>
/// 文件大小
/// </summary>
public long? FileSize { get; set; }
/// <summary>
/// 文件名称
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 文件内容Base64
/// </summary>
public string FilePart { get; set; }
/// <summary>
/// 返回数据行数
/// </summary>
public int? RowCount { get; set; }
public List<T> Rows { get; set; }
}
}

View File

@ -1,21 +0,0 @@
namespace GZ_LTHPilot_ORDER.Models.K3Result.Model
{
/// <summary>
/// 金蝶云星空查看错误信息类
/// </summary>
public class K3CloudResultInfo
{
/// <summary>
/// 字段名称
/// </summary>
public string FieldName { get; set; }
/// <summary>
/// 错误信息
/// </summary>
public string Message { get; set; }
/// <summary>
/// 序号
/// </summary>
public int DIndex { get; set; }
}
}

View File

@ -1,25 +0,0 @@
namespace GZ_LTHPilot_ORDER.Models.K3Result.Model
{
/// <summary>
/// 成功实体
/// </summary>
public class K3CloudSuccessEntity
{
/// <summary>
/// 单据Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 单据编号
/// </summary>
public string Number { get; set; }
/// <summary>
/// 实体索引
/// </summary>
public int DIndex { get; set; }
/// <summary>
/// 分录Id
/// </summary>
public object EntryIds { get; set; }
}
}

View File

@ -1,18 +0,0 @@

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Models.VO
{
public class SaleExecuteOut
{
public string FSALEORGNAME { get; set; }
public string FBILLNO { get; set; }
public string FDate { get; set; }
public string FALLMATCHAMOUNT { get; set; }
}
}

View File

@ -94,11 +94,9 @@ namespace GZ_LTHPilot_ORDER.PRD_PPBOMCHANGE
0*/
if (Convert.ToString(entityObj["ChangeType"]) == "3")
{
//this.View.ShowMessage("12345");
//变更类型为变更后分子赋值为0
this.View.Model.SetValue("FNumerator", 0, Convert.ToInt32(entityObj["Seq"]) - 1);
this.View.Model.SetValue("FIssueType", 7, Convert.ToInt32(entityObj["Seq"]) - 1);
}
}
/*变更类型为新增将物料编码替换为动态窗口选择的物料FID*/
if (Convert.ToString(entityObj["ChangeType"]) == "1")
{

View File

@ -37,19 +37,13 @@ namespace GZ_LTHPilot_ORDER.SAL_ORDER
var FSaleOrgId = this.View.Model.GetValue("FSaleOrgId");
this.View.Model.SetValue("F_SaleOrgId", FSaleOrgId);
}
else if (SqlDS[0]["FDATAVALUE"].ToString().Contains("BMS"))
{
this.View.Model.SetValue("F_SaleOrgId", "100302");
}
else
{
this.View.Model.SetValue("F_SaleOrgId", "100302");
}
}
this.View.UpdateView("F_SaleOrgId");
}
this.View.UpdateView("F_SaleOrgId");
}
}
}

View File

@ -1,62 +0,0 @@
using GZ_LTHPilot_ORDER.Service;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
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.ServicePlugIn
{
[Description("服务插件:销售订单审核,刷新销售订单整单可开票金额和退货金额金额字段"), HotUpdate]
public class Audit : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
{
base.OnPreparePropertys(e);
e.FieldKeys.Add("F_totalinvoiceAmount"); // 整单可开票金额
e.FieldKeys.Add("F_allreturnAmount"); // 云星空退货金额
e.FieldKeys.Add("F_sourorderno"); // 源单编号
e.FieldKeys.Add("FSALEORGID"); // 销售组织
e.FieldKeys.Add("FRETURNTYPE"); // 退补类型
e.FieldKeys.Add("F_sourpapercontract"); // 源头纸质合同号#
e.FieldKeys.Add("F_contractnumber"); // 纸质合同号
}
/// <summary>
/// 审核插件执行后插件、事务提交后事件
/// </summary>
/// <param name="e"></param>
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(e);
SaleOrderService saleOrderService = new SaleOrderService(this.Context);
foreach (var bill in e.DataEntitys)
{
var org = bill["SALEORGID"] as DynamicObject;
var orgId = org["Id"].ToString(); // 销售组织
var contractNo = bill["F_contractnumber"].ToString(); // 纸质合同号
var srcContractNo = bill["F_sourpapercontract"].ToString(); // 源头纸质合同号
var saleOrderAmont = saleOrderService.GetSaleOrderAmount(orgId, contractNo); // 本单累计可开票金额
var k3RetrunAmount = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo); // 本单云星空退货金额
var retrunAmount = saleOrderService.GetSaleOrderRetrunAmount(orgId, contractNo); // 本单k3退货金额
saleOrderService.UpdateSaleOrderOrderAmountAndRetrunAmount(orgId, contractNo, saleOrderAmont, retrunAmount, k3RetrunAmount);
if (srcContractNo.IsNullOrEmpty())
{
continue;
}
var srcSaleOrderAmont = saleOrderService.GetSaleOrderAmount(orgId, srcContractNo); // 源单累计可开票金额
var srcK3RetrunAmount = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, srcContractNo); // 源单云星空退货金额
var srcRetrunAmount = saleOrderService.GetSaleOrderRetrunAmount(orgId, srcContractNo); // 源单k3退货金额
saleOrderService.UpdateSaleOrderOrderAmountAndRetrunAmount(orgId, srcContractNo, srcSaleOrderAmont, srcRetrunAmount, srcK3RetrunAmount);
}
}
}
}

View File

@ -1,62 +0,0 @@
using GZ_LTHPilot_ORDER.Service;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
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.ServicePlugIn
{
[Description("服务插件:销售订单反审核,刷新销售订单和源单整单可开票金额和退货金额金额字段"), HotUpdate]
public class UnAudit : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
{
base.OnPreparePropertys(e);
e.FieldKeys.Add("F_totalinvoiceAmount"); // 整单可开票金额
e.FieldKeys.Add("F_allreturnAmount"); // 云星空退货金额
e.FieldKeys.Add("F_sourorderno"); // 源单编号
e.FieldKeys.Add("FSALEORGID"); // 销售组织
e.FieldKeys.Add("FRETURNTYPE"); // 退补类型
e.FieldKeys.Add("F_sourpapercontract"); // 源头纸质合同号#
e.FieldKeys.Add("F_contractnumber"); // 纸质合同号
}
/// <summary>
/// 审核插件执行后插件、事务提交后事件
/// </summary>
/// <param name="e"></param>
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(e);
SaleOrderService saleOrderService = new SaleOrderService(this.Context);
foreach (var bill in e.DataEntitys)
{
var org = bill["SALEORGID"] as DynamicObject;
var orgId = org["Id"].ToString(); // 销售组织
var contractNo = bill["F_contractnumber"].ToString(); // 纸质合同号
var srcContractNo = bill["F_sourpapercontract"].ToString(); // 源头纸质合同号
var saleOrderAmont = saleOrderService.GetSaleOrderAmount(orgId, contractNo); // 本单累计可开票金额
var k3RetrunAmount = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo); // 本单云星空退货金额
var retrunAmount = saleOrderService.GetSaleOrderRetrunAmount(orgId, contractNo); // 本单k3退货金额
saleOrderService.UpdateSaleOrderOrderAmountAndRetrunAmount(orgId, contractNo, saleOrderAmont, retrunAmount, k3RetrunAmount);
if (srcContractNo.IsNullOrEmpty())
{
continue;
}
var srcSaleOrderAmont = saleOrderService.GetSaleOrderAmount(orgId, srcContractNo); // 源单累计可开票金额
var srcK3RetrunAmount = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, srcContractNo); // 源单云星空退货金额
var srcRetrunAmount = saleOrderService.GetSaleOrderRetrunAmount(orgId, srcContractNo); // 源单k3退货金额
saleOrderService.UpdateSaleOrderOrderAmountAndRetrunAmount(orgId, srcContractNo, srcSaleOrderAmont, srcRetrunAmount, srcK3RetrunAmount);
}
}
}
}

View File

@ -1,172 +0,0 @@
using DocumentFormat.OpenXml.Bibliography;
using Gatedge.Enpower.BOS.PlugIn.Utils;
using GZ_LTHPilot_ORDER.Models.VO;
using GZ_LTHPilot_ORDER.Service;
using GZ_LTHPilot_ORDER.Services;
using GZ_LTHPilot_ORDER.Utils;
using Kingdee.BOS;
using Kingdee.BOS.App;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.WebApi.FormService;
using Kingdee.K3.FIN.App.Core.Match.Object;
using Newtonsoft.Json;
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
namespace GZ_LTHPilot_ORDER.ScheduleService
{
[Description("定时刷新销售订单累计核销金额#"), HotUpdate]
public class SaleOrderReceiveAmount : IScheduleService
{
/// <summary>
/// 查询周期单位:月
/// </summary>
int Cycle = 12;
public void Run(Context oldCtx, Schedule schedule)
{
ContextUtil contextUtil = new ContextUtil(oldCtx);
var ctx = contextUtil.GetDefaultContext();
TempTableService tempTableService = new TempTableService(ctx);
OrgService orgService = new OrgService(ctx);
SaleOrderService saleOrderService = new SaleOrderService(ctx);
var orgList = orgService.GetOrgList();
var tableName = tempTableService.CreateTempTable();
CreateTempTable(ctx, tableName);
var advanceAays = GetAdvanceAays(schedule);
var planStartDate = DateTime.Now;
Dictionary<string, string> orgDict = new Dictionary<string, string>();
var orgIdList = orgList
.Where(n => n["FORGID"].ToString() != "100302")
.Where(n => n["FORGID"].ToString() != "1485290")
.ToList();
orgIdList.ForEach(n => orgDict.Add(n["FNAME"].ToString(), n["FORGID"].ToString()));
var saleOrgIds = string.Join(",", orgDict.Values);
// 循环查询销售订单执行明细表,每次查询一个月的数据, 将数据插入自定义临时表中
var startDate = planStartDate.AddDays(-advanceAays);
var endDate = startDate.AddMonths(Cycle);
// 如果开始时间大于计划开始时间,说明结束了
while (startDate <= planStartDate.AddMonths(1))
{
var receiveAmountList = saleOrderService.GetSaleOrderReceiveAmountByDate(saleOrgIds, startDate, endDate);
if (receiveAmountList.Count > 0)
{
InsertDataToTempTable(ctx, tableName, orgDict, receiveAmountList);
}
startDate = startDate.AddMonths(Cycle);
endDate = startDate.AddMonths(Cycle);
}
UpdateSaleOrderReceiveAmount(ctx, tableName);
tempTableService.DropTempTable(tableName);
}
/// <summary>
/// 更新销售订单累计核销金额
/// </summary>
/// <param name="ctx"></param>
/// <param name="tableName"></param>
/// <returns></returns>
private int UpdateSaleOrderReceiveAmount(Context ctx, string tableName)
{
var sql = $@"/*dialect*/UPDATE t1
SET
t1.F_AMOUNT = FAMOUNT
FROM
T_SAL_ORDER t1
INNER JOIN {tableName} t2 ON t1.FSALEORGID = t2.FORGID
AND t1.FBILLNO = t2.FBILLNO
";
return DBServiceHelper.Execute(ctx, sql);
}
/// <summary>
/// 将查询的数据插入临时表
/// </summary>
/// <param name="ctx"></param>
/// <param name="tableName"></param>
/// <param name="orgId"></param>
/// <param name="saleExecuteOuts"></param>
/// <returns></returns>
private int InsertDataToTempTable(Context ctx, string tableName, Dictionary<string, string> orgDict, List<SaleExecuteOut> saleExecuteOuts)
{
var values = saleExecuteOuts.Select(n => $"({orgDict[n.FSALEORGNAME]},'{n.FSALEORGNAME}','{n.FBILLNO}',{n.FALLMATCHAMOUNT.ToString()},'{n.FDate}')").ToList();
var index = 0;
var line = 0;
var pageSize = 100;
while (values.Count > index)
{
var valuesString = string.Join(",", values.Where(n => values.IndexOf(n) >= index && values.IndexOf(n) < index + pageSize));
var sqlTemp = $@"/*dialect*/INSERT INTO
{tableName} (FORGID, FORGNAME, FBILLNO, FAMOUNT, FDATE)
VALUES
{valuesString}
";
line += DBServiceHelper.Execute(ctx, sqlTemp);
index += pageSize;
}
return line;
}
/// <summary>
/// 创建临时表
/// </summary>
/// <param name="ctx"></param>
/// <param name="tableName"></param>
private void CreateTempTable(Context ctx, string tableName)
{
var sql = $@"/*dialect*/CREATE TABLE
{tableName} (
FORGID int,
FORGNAME NVARCHAR (100),
FBILLNO NVARCHAR (100),
FAMOUNT DECIMAL(18, 10),
FDATE DATETIME,
);
";
DBServiceHelper.Execute(ctx, sql);
}
/// <summary>
/// 参数获取提前天
/// </summary>
/// <param name="schedule"></param>
/// <returns></returns>
private int GetAdvanceAays(Schedule schedule)
{
// 参数获取提前天
var advanceAaysStr = schedule.Parameters;
int advanceAays;
try
{
advanceAays = Convert.ToInt32(advanceAaysStr);
if (advanceAays < 0)
{
throw new Exception();
}
}
catch (Exception)
{
throw new Exception("获取参数提前天失败参数格式为整数且大于等于0");
}
return advanceAays;
}
}
}

View File

@ -1,25 +0,0 @@
using DocumentFormat.OpenXml.Bibliography;
using GZ_LTHPilot_ORDER.Service;
using Kingdee.BOS;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core;
using Kingdee.BOS.Util;
using Kingdee.K3.FIN.App.Core.Match.Object;
using Kingdee.K3.SCM.Common.BusinessEntity.Sales;
using System;
using System.ComponentModel;
namespace GZ_LTHPilot_ORDER.ScheduleService
{
[Description("刷新所有销售订单累计开票金额#"), HotUpdate]
public class SaleOrderSumSicsAmountRefresh : IScheduleService
{
public void Run(Context ctx, Schedule schedule)
{
// 销售发票服务
SaleSicsService saleSicsService = new SaleSicsService(ctx);
// 刷新所有销售订单累计开票金额#
saleSicsService.UpdateSaleOrderSumSicsamountAll();
}
}
}

View File

@ -1,33 +0,0 @@
using Kingdee.BOS;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Services
{
public class OrgService
{
public Context ctx;
public OrgService(Context ctx)
{
this.ctx = ctx;
}
public DynamicObjectCollection GetOrgList()
{
var sql = @"/*dialect*/SELECT
t0.FORGID,
t0l.FNAME,
*
FROM
T_ORG_ORGANIZATIONS t0
LEFT JOIN T_ORG_ORGANIZATIONS_L t0L ON t0.FORGID = t0L.FORGID
AND FLOCALEID = 2052
";
return DBServiceHelper.ExecuteDynamicObject(this.ctx, sql);
}
}
}

View File

@ -1,371 +0,0 @@
using Gatedge.Enpower.BOS.PlugIn.Utils;
using GZ_LTHPilot_ORDER.Models.K3Request;
using GZ_LTHPilot_ORDER.Models.K3Result;
using GZ_LTHPilot_ORDER.Models.VO;
using Kingdee.BOS;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.WebApi.FormService;
using Kingdee.K3.FIN.App.Core.Match.Object;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Service
{
/// <summary>
/// 销售订单服务类
/// </summary>
public class SaleOrderService
{
private Context ctx;
public SaleOrderService(Context ctx)
{
this.ctx = ctx;
}
/// <summary>
/// K3退货金额原币取数逻辑K3退货金额除以销售订单汇率=K3退货金额原币
/// </summary>
/// <param name="contractNo">纸质合同号</param>
/// <returns></returns>
public decimal GetK3SaleOrderRetrunAmount(string orgId, string contractNo)
{
var sqlTemp = @"/*dialect*/WITH
K3returnAmount AS (
SELECT
t2.F_CONTRACTNUMBER,
ROUND(ISNULL (SUM(退), 0) / t2fin.FEXCHANGERATE, 2) K3returnAmount
FROM
oldk3seorder0701 t1
Inner join T_SAL_ORDER t2 on t1. = t2.F_CONTRACTNUMBER
and t2.FSALEORGID = '100302'
inner join T_SAL_ORDERFIN t2fin on t2.fid = t2fin.fid
WHERE
1 = 1
AND t2.FSALEORGID = '{0}'
AND t2.F_CONTRACTNUMBER = '{1}'
GROUP BY
t2.FSALEORGID,
t2.F_CONTRACTNUMBER,
t2fin.FEXCHANGERATE
)
SELECT
*
FROM
K3returnAmount
";
var sql = string.Format(sqlTemp, orgId, contractNo);
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
if (result.Count == 0)
{
return 0;
}
return Convert.ToDecimal(result[0]["K3returnAmount"]);
}
/// <summary>
/// 云星空的退货金额取数逻辑:取已审核的退货通知单的表头字段 ”源头销售订单单号#“ =本销售订单编号的退货通知单原币价税合计金额
/// </summary>
/// <param name="orgId"></param>
/// <param name="contractNo"></param>
/// <returns></returns>
public decimal GetSaleOrderRetrunAmount(string orgId, string contractNo)
{
var sqlTemp = @"/*dialect*/WITH
returnAmount AS (
SELECT
t2.F_CONTRACTNUMBER,
t2.FSALEORGID,
ISNULL (SUM(t1e_f.FALLAMOUNT), 0) returnAmount
FROM
T_SAL_ORDER t1 --
INNER join T_SAL_ORDERENTRY t1e --
ON t1.FID = t1e.FID
INNER JOIN T_SAL_ORDERENTRY_F t1e_f ON t1e.FENTRYID = t1e_f.FENTRYID
Inner join T_SAL_ORDER t2 --
ON t1.F_SOURORDERNO = t2.FBILLNO
AND t1.FSALEORGID = t1.FSALEORGID
WHERE
1 = 1
AND t1.FBUSINESSTYPE = 'RETURNSO' -- 退
AND t2.FDOCUMENTSTATUS = 'C'
AND t1.FDOCUMENTSTATUS = 'C'
AND t1e.FRETURNTYPE = 'RETURN' -- 退
AND t2.FSALEORGID = '{0}'
AND t2.F_CONTRACTNUMBER = '{1}'
GROUP BY
t2.F_CONTRACTNUMBER,
t2.FSALEORGID
)
SELECT
*
FROM
returnAmount
";
var sql = string.Format(sqlTemp, orgId, contractNo);
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
if (result.Count == 0)
{
return 0;
}
return -Convert.ToDecimal(result[0]["returnAmount"]);
}
/// <summary>
/// 订单明细正数的物料原币价税合计(只取退补类型不等于“退回“的物料明细)
/// </summary>
/// <param name="orgId"></param>
/// <param name="contractNo"></param>
/// <returns></returns>
public decimal GetSaleOrderAmount(string orgId, string contractNo)
{
var sqlTemp = @"/*dialect*/WITH
SaleOrderAmount AS (
SELECT
t1.F_CONTRACTNUMBER,
t1.FSALEORGID,
ISNULL (SUM(t1e_f.FALLAMOUNT), 0) OrderAmount
FROM
T_SAL_ORDER t1
INNER JOIN T_SAL_ORDERENTRY t1e ON t1.FID = t1e.FID
INNER JOIN T_SAL_ORDERENTRY_F t1e_f ON t1e.FENTRYID = t1e_f.FENTRYID
WHERE
1 = 1
AND t1.FDOCUMENTSTATUS = 'C'
AND t1.FCANCELSTATUS = 'A'
AND t1e.FRETURNTYPE <> 'RETURN' -- 退退
AND t1.FSALEORGID = '{0}'
AND t1.F_CONTRACTNUMBER = '{1}'
GROUP BY
t1.F_CONTRACTNUMBER,
t1.FSALEORGID
)
SELECT
*
FROM
SaleOrderAmount
";
var sql = string.Format(sqlTemp, orgId, contractNo);
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
if (result.Count == 0)
{
return 0;
}
return Convert.ToDecimal(result[0]["OrderAmount"]);
}
/// <summary>
/// 根据纸质合同号、组织获取销售订单
/// </summary>
/// <returns></returns>
public DynamicObjectCollection GetSaleOrderByOrgIdAndContractNo(string orgId, string contractNo)
{
var sqlTemp = @"/*dialect*/SELECT
*
FROM
T_SAL_ORDER t1
LEFT JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
WHERE
1 = 1
AND t1.FDOCUMENTSTATUS = 'C'
AND t1.FCANCELSTATUS = 'A'
AND t1.FSALEORGID = '{0}'
AND t1.F_CONTRACTNUMBER = '{1}'
";
var sql = string.Format(sqlTemp, orgId, contractNo);
var resultData = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
return resultData;
}
/// <summary>
/// 获取销售订单收款金额
/// </summary>
/// <returns></returns>
public decimal GetSaleOrderReceiveAmount(string orgId, string billNo)
{
var saleOrder = this.GetSaleOrderByBillNoAndOrgId(orgId, billNo);
var date = Convert.ToDateTime(saleOrder["FDATE"]);
ReportDataParam param = new ReportDataParam()
{
ReturnJsonData = true,
FieldKeys = "FSALEORGNAME,FBILLNO,FDate,FALLMATCHAMOUNT",
IsVerifyBaseDataField = true,
Model = new Model()
{
FSaleOrgList = orgId,
FSoFromDate = date.AddDays(-30).ToString("yyyy-MM-dd HH:mm:ss"),
FSoToDate = date.AddDays(30).ToString("yyyy-MM-dd HH:mm:ss"),
FSaleOFrom = billNo,
FSaleOTo = billNo,
FFormCloseStatus = "ALL",
FFormStatus = "ALL",
FPriceFrom = "SALORDERBILL",
FBusCloseStatus = "ALL",
FMergingSOHeader = true,
FIncludedUnfilledOrders = true,
FIsRecWithMat = true,
FSuite = "All",
FSetAccountType = "ALL",
FIsGroup = false,
FIncludedFree = true
}
};
var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
var paramString = JsonConvert.SerializeObject(param, Formatting.Indented, jsonSetting);
var resultDict = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString);
var resultString = JsonConvert.SerializeObject(resultDict);
var result = JsonConvert.DeserializeObject<KingdeeResult<SaleExecuteOut>>(resultString);
var rows = result.Result.Rows;
var dataRow = rows.Where(n => n.FBILLNO == billNo).ToList();
if (dataRow.Count() == 0)
{
return 0m;
}
if (dataRow[0].FALLMATCHAMOUNT.IsNullOrEmptyOrWhiteSpace())
{
return 0m;
}
return Convert.ToDecimal(dataRow[0].FALLMATCHAMOUNT);
}
public DynamicObject GetSaleOrderByBillNoAndOrgId(string orgId, string billNo)
{
var sqlTemp = @"/*dialect*/SELECT
*
FROM
T_SAL_ORDER t1
WHERE
1 = 1
AND t1.FSALEORGID = '{0}'
AND t1.FBILLNO = '{1}'
";
var sql = string.Format(sqlTemp, orgId, billNo);
var result = DBServiceHelper.ExecuteDynamicObject(this.ctx, sql);
if (result.Count == 0)
{
throw new Exception($"组织:{orgId},没有找到编号为 {billNo} 的销售订单");
}
return result[0];
}
public List<SaleExecuteOut> GetSaleOrderReceiveAmountByDate(string orgId, DateTime startDate, DateTime endDate)
{
ReportDataParam param = new ReportDataParam()
{
ReturnJsonData = true,
FieldKeys = "FSALEORGNAME,FBILLNO,FDate,FALLMATCHAMOUNT",
IsVerifyBaseDataField = true,
Model = new Model()
{
FSaleOrgList = orgId,
FSoFromDate = startDate.ToString("yyyy-MM-dd HH:mm:ss"),
FSoToDate = endDate.ToString("yyyy-MM-dd HH:mm:ss"),
FFormCloseStatus = "ALL",
FFormStatus = "ALL",
FPriceFrom = "SALORDERBILL",
FBusCloseStatus = "ALL",
FMergingSOHeader = true,
FIncludedUnfilledOrders = true,
FIsRecWithMat = true,
FSuite = "All",
FSetAccountType = "ALL",
FIsGroup = false,
FIncludedFree = true
}
};
var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
var paramString = JsonConvert.SerializeObject(param, Formatting.Indented, jsonSetting);
//LogUtil.Log("paramString", paramString);
var resultDict = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString);
var resultString = JsonConvert.SerializeObject(resultDict);
//LogUtil.Log("resultString", resultString);
var result = JsonConvert.DeserializeObject<KingdeeResult<SaleExecuteOut>>(resultString);
if (result.Result.RowCount == 0)
{
return new List<SaleExecuteOut>();
}
var rows = result.Result.Rows;
var dataRow = rows.Where(n => n.FBILLNO.Trim() != string.Empty).Select(n => new SaleExecuteOut
{
FBILLNO = n.FBILLNO,
FDate = n.FDate,
FSALEORGNAME = n.FSALEORGNAME,
FALLMATCHAMOUNT = n.FALLMATCHAMOUNT.IsNullOrEmptyOrWhiteSpace() ? "0" : n.FALLMATCHAMOUNT.Replace(",", "").Trim(),
}).ToList();
return dataRow;
}
/// <summary>
/// 更新销售订单K3退货金额云星空退货金额累计可开票金额
/// </summary>
/// <param name="orgId">销售组织</param>
/// <param name="contractNo">纸质合同号</param>
/// <param name="orderAmount">订单金额</param>
/// <param name="retrunAmount">云星空退货金额</param>
/// <param name="k3retrunAmount">K3退货金额</param>
/// <returns></returns>
public int UpdateSaleOrderOrderAmountAndRetrunAmount(string orgId, string contractNo, decimal orderAmount, decimal retrunAmount, decimal k3retrunAmount)
{
var sqlTemp = @"/*dialect*/UPDATE t1
SET
t1.F_K3returnAmount = {2}, -- k3退货金额
t1.F_ALLRETURNAMOUNT = {3}, -- 退
t1.F_TOTALINVOICEAMOUNT = {4} - {2} - {3} -- -退-K3WISE退货金额
FROM
T_SAL_ORDER t1
WHERE
1 = 1
AND t1.FSALEORGID = '{0}'
AND t1.F_CONTRACTNUMBER = '{1}'
";
var sql = string.Format(sqlTemp, orgId, contractNo, k3retrunAmount, retrunAmount, orderAmount);
return DBServiceHelper.Execute(ctx, sql);
}
/// <summary>
/// 获取已提交发票金额
/// </summary>
/// <param name="orgId"></param>
/// <param name="contractNo"></param>
/// <param name="billIds"></param>
/// <returns></returns>
internal decimal GetSubmitedAmount(string orgId, string contractNo, List<string> billIds)
{
var billIdFilter = string.Empty;
if (billIds != null && billIds.Count > 0)
{
var billIdString = string.Join(",", billIds.Select(n => "'" + n + "'"));
billIdFilter = $@" AND t1.FID NOT IN ({billIdString}) ";
}
var sqlTemp = $@"/*dialect*/SELECT
ISNULL (SUM(t1e.FALLAMOUNTFOR), 0) AS SubmitAmount
FROM
T_IV_SALESIC t1
LEFT JOIN T_IV_SALESICENTRY t1e ON t1.FID = t1e.FID
LEFT JOIN T_IV_SALESICENTRY_O t1e_O ON t1e.FENTRYID = t1e_O.FENTRYID
WHERE
1 = 1
AND t1.FDOCUMENTSTATUS = 'B'
AND t1e.F_CONTRACTNO = '{contractNo}'
AND t1.FSALEORGID = '{orgId}'
{billIdFilter}
";
var sql = string.Format(sqlTemp, orgId, contractNo);
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
if (result.Count == 0)
{
return 0;
}
return Convert.ToDecimal(result[0]["SubmitAmount"]);
}
}
}

View File

@ -1,167 +0,0 @@
using Kingdee.BOS;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.FIN.App.Core.Match.Object;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Service
{
/// <summary>
/// 销售发票服务类
/// </summary>
public class SaleSicsService
{
private Context ctx;
public SaleSicsService(Context ctx)
{
this.ctx = ctx;
}
/// <summary>
/// 刷新销售订单累计开票金额
/// </summary>
/// <param name="saleOrderId"></param>
/// <returns></returns>
public int UpdateSaleOrderSumSicsamountBySaleOrder(DynamicObject saleOrder)
{
// 销售订单ID
var saleOrderId = saleOrder["FID"].ToString();
// 纸质合同号
var contractNo = saleOrder["F_CONTRACTNUMBER"].ToString();
// 销售组织Id
var saleOrgId = saleOrder["FSALEORGID"].ToString();
var sqlTemp = @"/*dialect*/UPDATE t1
SET
t1.F_INVOICEAMOUNT = ISNULL (TEMP1.FAFTERTOTALTAXFOR, 0)
FROM
T_SAL_ORDER t1
INNER JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
LEFT JOIN (
SELECT
FSALEORGID,
F_PaperNumber,
SUM(FAFTERTOTALTAX) FAFTERTOTALTAX, --
SUM(FAFTERTOTALTAXFOR) FAFTERTOTALTAXFOR --
FROM
(
SELECT
v1.FSALEORGID, --
v1e.F_CONTRACTNO F_PaperNumber, --
ISNULL (v1e_o.FALLAMOUNT, 0) FAFTERTOTALTAX, --
ISNULL (v1e.FALLAMOUNTFOR, 0) FAFTERTOTALTAXFOR --
FROM
T_IV_SALESIC v1
INNER JOIN T_IV_SALESICENTRY v1e ON v1.FID = v1e.FID
LEFT JOIN T_IV_SALESICENTRY_O v1e_o ON v1e_o.FENTRYID = v1e.FENTRYID
WHERE
1 = 1
AND v1.FDOCUMENTSTATUS = 'C'
AND v1.FCANCELSTATUS = 'A'
AND v1.F_SFQC = 0
AND v1.FSALEORGID = '{0}'
AND v1e.F_CONTRACTNO = '{1}'
UNION ALL
SELECT
'100302' FSALEORGID, --
F_PaperNumber, --
SUM(ISNULL (, 0)) FAFTERTOTALTAX, --
SUM(ISNULL (, 0)) FAFTERTOTALTAXFOR --
FROM
oldk3ICSale0802
WHERE
1 = 1
AND = '{1}'
GROUP BY
) temp02
GROUP BY
FSALEORGID,
F_PaperNumber
) TEMP1 ON t1.F_CONTRACTNUMBER = TEMP1.F_PaperNumber
AND t1.FSALEORGID = TEMP1.FSALEORGID
WHERE
t1.FID = '{2}'
";
var sql = string.Format(sqlTemp, saleOrgId, contractNo, saleOrderId);
return DBServiceHelper.Execute(ctx, sql);
}
public int UpdateSaleOrderSumSicsamountAll()
{
var sql = @"/*dialect*/UPDATE t1
SET
t1.F_INVOICEAMOUNT = ISNULL (TEMP1.FAFTERTOTALTAXFOR, 0)
FROM
T_SAL_ORDER t1
INNER JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
LEFT JOIN (
SELECT
FSALEORGID,
F_PaperNumber,
SUM(FAFTERTOTALTAX) FAFTERTOTALTAX, --
SUM(FAFTERTOTALTAXFOR) FAFTERTOTALTAXFOR --
FROM
(
SELECT
v1.FSALEORGID, --
v1e.F_CONTRACTNO F_PaperNumber, --
ISNULL (v1e_o.FALLAMOUNT, 0) FAFTERTOTALTAX, --
ISNULL (v1e.FALLAMOUNTFOR, 0) FAFTERTOTALTAXFOR --
FROM
T_IV_SALESIC v1
INNER JOIN T_IV_SALESICENTRY v1e ON v1.FID = v1e.FID
LEFT JOIN T_IV_SALESICENTRY_O v1e_o ON v1e_o.FENTRYID = v1e.FENTRYID
WHERE
1 = 1
AND v1.FDOCUMENTSTATUS = 'C'
AND v1.FCANCELSTATUS = 'A'
AND v1.F_SFQC = 0
UNION ALL
SELECT
'100302' FSALEORGID, --
F_PaperNumber, --
SUM(ISNULL (, 0)) FAFTERTOTALTAX, --
SUM(ISNULL (, 0)) FAFTERTOTALTAXFOR --
FROM
oldk3ICSale0802
WHERE
1 = 1
GROUP BY
) temp02
GROUP BY
FSALEORGID,
F_PaperNumber
) TEMP1 ON t1.F_CONTRACTNUMBER = TEMP1.F_PaperNumber
AND t1.FSALEORGID = TEMP1.FSALEORGID
";
return DBServiceHelper.Execute(ctx, sql);
}
/// <summary>
///
/// </summary>
/// <param name="approvedDate"></param>
/// <returns></returns>
public DynamicObjectCollection GetSaleSiceListByApprovedDate(DateTime approvedDate)
{
var sqlTemp = @"/*dialect*/SELECT DISTINCT
t1.FSALEORGID,
ISNULL(t1.F_PaperNumber, '') contractNo
FROM
T_IV_SALESIC t1
WHERE
1 = 1
AND t1.FAPPROVEDATE > '{0}'
";
var sql = string.Format(sqlTemp, approvedDate.ToString("yyyy-MM-dd HH:mm:dd"));
return DBServiceHelper.ExecuteDynamicObject(ctx, sql);
}
}
}

View File

@ -1,47 +0,0 @@
using Kingdee.BOS;
using Kingdee.BOS.App;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Services
{
internal class TempTableService
{
private Context ctx;
public TempTableService(Context ctx)
{
this.ctx = ctx;
}
/// <summary>
/// 删除临时表
/// </summary>
/// <param name="ctx"></param>
/// <param name="tempTable"></param>
public void DropTempTable(string tableName)
{
if (!tableName.IsNullOrEmptyOrWhiteSpace())
{
IDBService dbservice = ServiceHelper.GetService<IDBService>();
dbservice.DeleteTemporaryTableName(ctx, new string[] { tableName });
}
}
/// <summary>
/// 创建临时表
/// </summary>
/// <param name="ctx"></param>
/// <returns></returns>
public string CreateTempTable()
{
IDBService dbservice = ServiceHelper.GetService<IDBService>();
string[] temptables = dbservice.CreateTemporaryTableName(ctx, 1);
return temptables[0];
}
}
}

View File

@ -1,69 +0,0 @@
using GZ_LTHPilot_ORDER.Service;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
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.T_IV_SALESIC.ServicePlugIn
{
[Description("服务插件:发票审核,刷新销售订单累计开票金额字段"), HotUpdate]
public class Audit : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
{
base.OnPreparePropertys(e);
e.FieldKeys.Add("F_PaperNumber");
e.FieldKeys.Add("F_contractno");
e.FieldKeys.Add("FALLAMOUNTFOR");
e.FieldKeys.Add("FSALEORGID");
}
/// <summary>
/// 审核插件执行后插件、事务提交后事件
/// </summary>
/// <param name="e"></param>
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(e);
foreach (var bill in e.DataEntitys)
{
var org = bill["SALEORGID"] as DynamicObject;
var orgId = org["Id"].ToString(); // 销售组织
var entryList = bill["SALESICENTRY"] as DynamicObjectCollection;
// 根据合同号分组
var grouped = entryList.GroupBy(n => n["F_contractno"].ToString());
// 销售订单服务
var saleOrderService = new SaleOrderService(this.Context);
// 发票服务
SaleSicsService saleSicsService = new SaleSicsService(this.Context);
foreach (var group in grouped)
{
// 纸质合同号
var contractNo = group.Key;
// TODO 根据组织和纸质合同号查找销售订单
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
if (saleOrderList.Count == 0)
{
continue;
}
foreach (var saleOrder in saleOrderList)
{
// TODO 刷新销售订单单头的累计开票金额
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
}
}
}
}
}
}

View File

@ -1,197 +0,0 @@
using GZ_LTHPilot_ORDER.Service;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
{
[Description("服务插件:发票提交,校验销售订单累计开票金额加开票金额不能大于销售订单价税合计本币"), HotUpdate]
public class Submit : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
{
base.OnPreparePropertys(e);
e.FieldKeys.Add("F_contractno");
e.FieldKeys.Add("FALLAMOUNTFOR");
e.FieldKeys.Add("FSALEORGID");
}
private class SALESIC
{
/// <summary>
/// 组织Id
/// </summary>
public string OrgId { get; set; }
/// <summary>
/// 纸质合同号
/// </summary>
public string ContractNo { get; set; }
/// <summary>
/// 价税合计原币
/// </summary>
public decimal AllAmountFor { get; set; }
/// <summary>
/// 单据Id
/// </summary>
public string BillId { get; set; }
}
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
{
base.BeforeExecuteOperationTransaction(e);
var entryListUnion = new List<SALESIC>();
foreach (var bill in e.SelectedRows)
{
var billId = bill["Id"].ToString();
var org = bill["SALEORGID"] as DynamicObject;
var orgId = org["Id"].ToString(); // 销售组织
var entryList = bill["SALESICENTRY"] as DynamicObjectCollection;
// 添加所有分录到集合
foreach (var item in entryList)
{
entryListUnion.Add(new SALESIC()
{
BillId = billId,
OrgId = orgId,
ContractNo = item["F_contractno"].ToString(),
AllAmountFor = Convert.ToDecimal(item["ALLAMOUNTFOR"])
});
}
}
var entryGrouped = entryListUnion.GroupBy(n => new
{
n.ContractNo,
n.OrgId
});
foreach (var item in entryGrouped)
{
// 纸质合同号
var contractNo = item.Key.ContractNo;
var orgId = item.Key.OrgId;
// 校验原单是否超额
var srcVerifResult = SrcExcessVerification(orgId, contractNo);
if (srcVerifResult != null)
{
//有错误信息
e.Cancel = true;
IOperationResult operationResult = new OperationResult();
operationResult.OperateResult.Add(srcVerifResult);
this.OperationResult.MergeResult(operationResult);
}
// 发票单体价税合计原币
var SumALLAMOUNTFOR = item.Sum(n => n.AllAmountFor);
var billIds = item.Select(n => n.BillId).ToList();
// TODO 校验是否超额
var verifResult = ExcessVerification(orgId, contractNo, SumALLAMOUNTFOR, billIds);
if (verifResult != null)
{
//有错误信息
e.Cancel = true;
IOperationResult operationResult = new OperationResult();
operationResult.OperateResult.Add(verifResult);
this.OperationResult.MergeResult(operationResult);
}
}
}
/// <summary>
/// 校验源头单据是否超额
/// </summary>
/// <param name="orgId"></param>
/// <param name="contractNo"></param>
/// <param name="amount"></param>
/// <returns></returns>
private OperateResult SrcExcessVerification(string orgId, string contractNo)
{
// 销售订单服务
var saleOrderService = new SaleOrderService(this.Context);
// TODO 根据组织和纸质合同号查找销售订单
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
if (saleOrderList.Count == 0)
{
return null;
}
var saleOrder = saleOrderList[0];
// 源纸质合同号
var srcContractNo = saleOrder["F_SOURPAPERCONTRACT"]?.ToString();
// 如果原纸质合同号为空,则认为是源头单, 加上源单合同号 = 纸质合同号 是防止纸质合同号变更出错导致死递归
if (srcContractNo.IsNullOrEmptyOrWhiteSpace() || srcContractNo.Trim() == contractNo.Trim())
{
return null;
}
// 校验源单是否超额
var srcVerifResult = ExcessVerification(orgId, srcContractNo, 0, null);
if (srcVerifResult != null)
{
return srcVerifResult;
}
// 递归校验
return SrcExcessVerification(orgId, srcContractNo);
}
/// <summary>
/// 超额校验,如果校验不通过会返回OperateResult实例通过返回null
/// </summary>
/// <param name="orgId">销售组织</param>
/// <param name="contractNo">合同号</param>
/// <param name="amount">开票金额</param>
/// <param name="billIds">本次操作单据ID</param>
/// <returns></returns>
private OperateResult ExcessVerification(string orgId, string contractNo, decimal amount, List<string> billIds)
{
// 销售订单服务
var saleOrderService = new SaleOrderService(this.Context);
// TODO 根据组织和纸质合同号查找销售订单
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
if (saleOrderList.Count == 0)
{
return null;
}
var saleOrderNoList = saleOrderList.Select(n => n["FBILLNO"].ToString()).ToList();
var saleOrderNoString = string.Join(",\n\r", saleOrderNoList);
var saleOrder = saleOrderList[0];
// 已提交发票金额(原币)
var submitedAmount = saleOrderService.GetSubmitedAmount(orgId, contractNo, billIds);
// 销售订单价税合计(原币)
var saleOrderAmount = saleOrderService.GetSaleOrderAmount(orgId, contractNo);
// 销售订单累计开票金额(原币)
var saleOrderINVOICEAMOUNT = Convert.ToDecimal(saleOrder["F_INVOICEAMOUNT"]);
// 销售订单退货金额(原币)
var saleOrderReturnAmountK3Cloud = saleOrderService.GetSaleOrderRetrunAmount(orgId, contractNo);
var saleOrderReturnAmountK3 = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo);
// 销售订单退货金额(原币)
var saleOrderReturnAmount = saleOrderReturnAmountK3 + saleOrderReturnAmountK3Cloud;
// 校验销售订单累计开票金额 + 本次开票金额 + 已提交发票金额 <= 销售订单价税合计
if ((saleOrderAmount - saleOrderReturnAmount < saleOrderINVOICEAMOUNT + amount + submitedAmount) && amount >= 0)
{
return new OperateResult()
{
PKValue = "1",
Name = "检查开票金额是否超额",
MessageType = MessageType.FatalError,
Message = string.Format($@" 销售纸质合同号:'{contractNo}'
'{saleOrderNoString}' ,
>= + +
{(saleOrderAmount - saleOrderReturnAmountK3Cloud - saleOrderReturnAmountK3).ToString("0.00")}
{saleOrderINVOICEAMOUNT.ToString("0.00")}
{amount.ToString("0.00")}
{submitedAmount.ToString("0.00")}"),
SuccessStatus = false
};
}
return null;
}
}
}

View File

@ -1,69 +0,0 @@
using GZ_LTHPilot_ORDER.Service;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
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.T_IV_SALESIC.ServicePlugIn
{
[Description("服务插件:发票反审核,刷新销售订单累计开票金额字段"), HotUpdate]
public class UnAudit : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
{
base.OnPreparePropertys(e);
e.FieldKeys.Add("F_PaperNumber");
e.FieldKeys.Add("F_contractno");
e.FieldKeys.Add("FALLAMOUNTFOR");
e.FieldKeys.Add("FSALEORGID");
}
/// <summary>
/// 审核插件执行后插件、事务提交后事件
/// </summary>
/// <param name="e"></param>
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(e);
foreach (var bill in e.DataEntitys)
{
var org = bill["SALEORGID"] as DynamicObject;
var orgId = org["Id"].ToString(); // 销售组织
var entryList = bill["SALESICENTRY"] as DynamicObjectCollection;
// 根据合同号分组
var grouped = entryList.GroupBy(n => n["F_contractno"].ToString());
// 销售订单服务
var saleOrderService = new SaleOrderService(this.Context);
// 发票服务
SaleSicsService saleSicsService = new SaleSicsService(this.Context);
foreach (var group in grouped)
{
// 纸质合同号
var contractNo = group.Key;
// TODO 根据组织和纸质合同号查找销售订单
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
if (saleOrderList.Count == 0)
{
continue;
}
foreach (var saleOrder in saleOrderList)
{
// TODO 刷新销售订单单头的累计开票金额
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
}
}
}
}
}
}

View File

@ -1,38 +0,0 @@
using GZ_LTHPilot_ORDER.Config;
using Kingdee.BOS;
using Kingdee.BOS.ServiceHelper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Utils
{
public class ContextUtil
{
Context ctx { get; set; }
public ContextUtil(Context ctx)
{
this.ctx = ctx;
}
public Context GetDefaultContext()
{
var userName = ContextConfig.DefaultUserName;
var userId = ContextConfig.DefaultUserId;
return GetNewContext(userId, userName);
}
public Context GetNewContext(long userId, string userName)
{
Context newCtx = DataCenterService.GetDataCenterContextByID(ctx.DBId);
newCtx.UserId = userId;
newCtx.UserName = userName;
newCtx.ServiceType = WebType.WebSite;
newCtx.CurrentOrganizationInfo.ID = 1;
return newCtx;
}
}
}

View File

@ -1,65 +0,0 @@
using Kingdee.BOS.Log;
using System;
using System.IO;
namespace Gatedge.Enpower.BOS.PlugIn.Utils
{
internal class LogUtil
{
//private const string LogPath = "GzLog\\";
private const string LogPath = "C:\\Kingdee_Gatedge_Log\\";
public static void Log(string logName, string logInfo)
{
var log = logInfo + "\r\n--------------------------------------------------------\r\n";
var path = LogPath + logName;
var fileName = GetFileName();
var fullPath = path + fileName;
WriteLog(fullPath, log);
}
public static void Log(string[] logNames, string logInfo)
{
var log = logInfo + "\r\n--------------------------------------------------------\r\n";
var pathName = string.Join("\\", logNames);
var path = LogPath + pathName;
var fileName = GetFileName();
var fullPath = path + fileName;
WriteLog(fullPath, log);
}
private static string GetFileName()
{
var dateTime = DateTime.Now;
var fileName = "\\KD_Gatedge_" + dateTime.ToString("yyyy-MM-dd_HH-mm-ss") + ".log";
//return "\\" + string.Empty;
return fileName;
}
private static void WriteLog(string path, string logInfo)
{
if (!Directory.Exists(Path.GetDirectoryName(path)))
{
Directory.CreateDirectory(Path.GetDirectoryName(path));
}
FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate);
StreamWriter streamWriter = new StreamWriter(fileStream);
fileStream.Position = fileStream.Length;
streamWriter.Write(logInfo);
streamWriter.Flush();
streamWriter.Close();
fileStream.Close();
Logger.Info(path, logInfo);
}
/// <summary>
/// 删除早于该时间前的日志
/// </summary>
/// <param name="dateTime"></param>
private static void RemoveLog(DateTime dateTime)
{
}
}
}

View File

@ -1,45 +0,0 @@

using GZ_LTHPilot_ORDER.Models.VO;
using GZ_LTHPilot_ORDER.Service;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.ServiceFacade.KDServiceFx;
using Kingdee.BOS.Util;
using Kingdee.BOS;
using Kingdee.BOS.WebApi.Client;
using Kingdee.BOS.WebApi.ServicesStub;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.WebApiService
{
[Description("商品类型"), HotUpdate]
public class SaleOrderApiService : AbstractWebApiBusinessService
{
public SaleOrderApiService(KDServiceContext context) : base(context)
{
}
public SaleExecuteOut GetSaleOrderReceiveAmount(string orgId, string billNo)
{
SaleOrderService saleOrderService = new SaleOrderService(this.KDContext.Session.AppContext);
var amount = saleOrderService.GetSaleOrderReceiveAmount(orgId, billNo);
var result = new SaleExecuteOut()
{
FBILLNO = billNo,
FALLMATCHAMOUNT = amount.ToString()
};
return result;
}
public List<SaleExecuteOut> GetSaleOrderReceiveAmountByDate(string orgId, DateTime startDate, DateTime endDate)
{
SaleOrderService saleOrderService = new SaleOrderService(this.KDContext.Session.AppContext);
return saleOrderService.GetSaleOrderReceiveAmountByDate(orgId, startDate, endDate);
}
}
}

View File

@ -1,7 +1,6 @@
using FarPoint.Excel;
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.ServiceHelper.ManagementCenter;
using Kingdee.BOS.Util;
@ -11,13 +10,11 @@ using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static IronPython.Modules._ast;
using static Kingdee.K3.SCM.App.Core.Validation.InvAccountValidation.InvAccountConsumeSumBillValidator;
namespace GZ_LTHPilot_ORDER.XMYSLRB
{
[Description("表单插件:当项目预算利润表完成加载后,自动新增成本明细行"), HotUpdate]
public class OnLoadLR : AbstractBillPlugIn
public class OnLoadLR : AbstractDynamicFormPlugIn
{
public override void OnLoad(EventArgs e)
{
@ -28,14 +25,10 @@ namespace GZ_LTHPilot_ORDER.XMYSLRB
{
return;
}
string sql = string.Format(@"/*dialect*/SELECT
COUNT(B.FDATAVALUE) AS 'HJ'
FROM
T_BAS_ASSISTANTDATAENTRY A
INNER JOIN T_BAS_ASSISTANTDATAENTRY_L B ON A.FENTRYID = B.FENTRYID
WHERE
A.FID = '682c386fbcca09'
AND A.FDocumentStatus = 'C'");
string sql = string.Format(@"SELECT COUNT(B.FDATAVALUE) AS 'HJ' FROM T_BAS_ASSISTANTDATAENTRY A
INNER JOIN T_BAS_ASSISTANTDATAENTRY_L B ON A.FENTRYID = B.FENTRYID
WHERE FID = '682c386fbcca09'
AND FDocumentStatus = 'C'");
var sqlDS = DBUtils.ExecuteDynamicObject(this.Context, sql);
var Count = 0;
if (sqlDS.Count != 0)
@ -50,36 +43,20 @@ WHERE
INNER JOIN T_BAS_ASSISTANTDATAENTRY_L B ON A.FENTRYID = B.FENTRYID
WHERE FID = '682c386fbcca09'AND FDocumentStatus = 'C'");
sqlDS = DBUtils.ExecuteDynamicObject(this.Context, sql);
if (sqlDS.Count == 0)
if (sqlDS.Count != 0)
{
return;
}
var SGCB_STR = this.View.Model.GetValue("F_SGCB")?.ToString();
decimal SGCB;
var SGCB_STRIsNumber = decimal.TryParse(SGCB_STR, out SGCB);
for (int i = 0; i < Count; i++)
{
this.View.Model.SetItemValueByID("F_VRYF_Assistant_qtr", Convert.ToString(sqlDS[i]["FENTRYID"]), i);
// 实施安装费,将税率设置为6将单头上的施工成本带出
if (Convert.ToString(sqlDS[i]["FENTRYID"]) == "682e83afbd70b6")
for (int i = 0; i < Count; i++)
{
this.View.Model.SetValue("F_VRYF_Decimal_qtr", 6, i);
if (SGCB_STRIsNumber)
this.View.Model.SetItemValueByID("F_VRYF_Assistant_qtr", Convert.ToString(sqlDS[i]["FENTRYID"]), i);
if (Convert.ToString(sqlDS[i]["FENTRYID"]) == "682e83afbd70b6")
{
this.View.Model.SetValue("F_VRYF_Amount_xk9", SGCB, i);
this.View.Model.SetItemValueByID("F_VRYF_Decimal_qtr", 6, i);
}
else if (Convert.ToString(sqlDS[i]["FENTRYID"]) == "682e83e4bd70cb")
{
this.View.Model.SetItemValueByID("F_VRYF_Decimal_qtr", 6, i);
}
}
// 外包费将税率设置为6
else if (Convert.ToString(sqlDS[i]["FENTRYID"]) == "682e83e4bd70cb")
{
this.View.Model.SetValue("F_VRYF_Decimal_qtr", 6, i);
}
}
}
public override void AfterBindData(EventArgs e)
@ -97,7 +74,7 @@ WHERE
{
this.View.GetFieldEditor("F_VRYF_Decimal_qtr", i).Enabled = false;
}
}
for (int i = 0; i < sqlDS.Count; i++)
{