当前位置: 首页 > news >正文

金蝶云星空 调价表取历史价格

因系统自带的选单新增功能,选单列表中显示不明确,业务部门习惯使用批量填充价目表,和块粘贴物料编码进行调价操作,这样就无法带出调前价格,故做此开发

    [Description("调价单保存时获取供应商最近历史价格_逐行查询")][Kingdee.BOS.Util.HotUpdate]public class PUR_PATSaveGetLastSupplierPricebyline : AbstractBillPlugIn{private bool doSave = false;private Entity ListEntity = null;private DynamicObjectCollection EntityRows = null;public override void BeforeDoOperation(BeforeDoOperationEventArgs e){base.BeforeDoOperation(e);if (e.Operation.FormOperation.OperationId == 8){ListEntity = View.BillBusinessInfo.GetEntity("FPUR_PATENTRY");EntityRows = this.Model.GetEntityDataObject(ListEntity);//this.View.ShowMessage("插件触发了保存前事件:BeforeDoOperation"+JsonConvert.SerializeObject(EntityRows));List<string> Matestr = new List<string>();if (EntityRows == null || EntityRows.Count == 0){return;}SuppMateInfo suppMateInfo = new SuppMateInfo();string MateNos = string.Empty;string SuppNO = string.Empty;foreach (DynamicObject row in EntityRows){// sql前缀/*dialect*/MaterialItem Mateinfo = new MaterialItem();if (row["SupplierId"] == null) { return; }DynamicObject supplierid = row["SupplierId"] as DynamicObject;DynamicObject material = row["MaterialId"] as DynamicObject;SuppNO = supplierid["Number"].ToString();string MateNo = Mateinfo.MateNo = material["Number"].ToString();string FROMQTY = Mateinfo.FROMQTY = row["FROMQTY"].ToString();string TOQTY = Mateinfo.TOQTY = row["TOQTY"].ToString();if (MateNos.IsNullOrEmpty()){MateNos = material["Number"].ToString();}else{MateNos = MateNos + "," + material["Number"].ToString();}string sql = string.Format("/*dialect*/ DECLARE @SuppNO NVARCHAR(10) DECLARE @MateNOS NVARCHAR(30) DECLARE @TOQTY DECIMAL(23,10) " +"DECLARE @FROMQTY DECIMAL(23,10) " +"SET @SuppNO='{0}'SET @MateNOS='{1}' SET @FROMQTY={2} SET @TOQTY={3}" +" EXECUTE [Proc_BHR_GetLastSupplierPrice]  @SuppNO,@MateNOS,@FROMQTY,@TOQTY", SuppNO, MateNo, FROMQTY, TOQTY);//  Logger.Info("sql:", sql);DynamicObjectCollection SuppMateLastPriceInfo = DBUtils.ExecuteDynamicObject(this.Context, sql);if (SuppMateLastPriceInfo == null || SuppMateLastPriceInfo.Count == 0){row["F_BHR_PriceSource"] = "未找到"+SuppNO+ "的物料历史定价";//  Logger.Info("aaaaaaaaaaaaaaaa SuppMateLastPriceInfo ",View.Model.GetValue("F_BHR_PriceSource").ToString());continue; }// Logger.Info("aaaaaaaaaaaaaaaa SuppMateLastPriceInfo ", JsonConvert.SerializeObject(SuppMateLastPriceInfo));foreach (DynamicObject obj in SuppMateLastPriceInfo){row["BeforePrice"] = obj["FPRICE"];row["BeforeTaxPrice"] = obj["FTAXPRICE"];row["BeforeTaxRate"] = obj["FTAXRATE"];row["F_BHR_PriceSource"] =obj["FBILLNO"] +"-"+ obj["FSEQ"].ToString();}}this.View.UpdateView("FPUR_PATENTRY");}}}
-- =============================================
-- Author:		master
-- Create date: 2025-09-09
-- Description:	/*物料来源为多物料逗号分隔 分量计价取从数量在于等于历记录从数量最小的价格*/
-- =============================================
ALTER PROCEDURE [dbo].[Proc_BHR_GetLastSupplierPrice]@SuppNO NVARCHAR(10),@MateNOS NVARCHAR(4000),@FROMQTY DECIMAL(23,10),@TOQTY DECIMAL(23,10)
AS
BEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;WITH RateCTE AS
(SELECT TOP 1 FBEGDATE,FENDDATE, FCYFORID,FRATETYPEID,FEXCHANGERATE FROM T_BD_Rate
WHERE FCYFORID=7 AND FRATETYPEID=1 AND 	FCYTOID=1 /*FRATETYPEID=1:固定汇率 2023-05-15 修改*/ /*2024-10-07 添加  FCYFORID=7:原币美元;  目标币 人民币 AND 	FCYTOID=1*/
AND (CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(),120)) BETWEEN FBEGDATE AND FENDDATE   /* CONVERT(DATETIME, CONVERT(VARCHAR(10),DATEADD(MONTH,-1,GETDATE()),120))  财务有可能在月初没有录入当月汇率*/
OR CONVERT(DATETIME, CONVERT(VARCHAR(10),DATEADD(MONTH,-1,GETDATE()),120)) BETWEEN FBEGDATE AND FENDDATE)
ORDER BY FBEGDATE DESC/* CONVERT(DATETIME, CONVERT(VARCHAR(10),DATEADD(MONTH,-1,GETDATE()),120))  财务有可能在月初没有录入当月汇率*//* CONVERT(DATETIME, CONVERT(VARCHAR(10),DATEADD(MONTH,-1,GETDATE()),120))  财务有可能在月初没有录入当月汇率*/
),MateList AS(
SELECT ROW_NUMBER() OVER(PARTITION BY p.FSUPPLIERID,pe.FMATERIALID ORDER BY pe.FEFFECTIVEDATE DESC,pe.FEXPIRYDATE DESC,pe.FFROMQTY ASC) ROWID /* pe.FEFFECTIVEDATE DESC,pe.FEXPIRYDATE DESC,pe.FPRICE DESC*/
,p.FNUMBER AS FBILLNO,m.FNUMBER FMATERIALNO,p.FID,p.FSUPPLIERID,vs.FNUMBER FSUPPLIERNO
,pe.FTAXPRICE
,CASE p.FCURRENCYID WHEN 1 THEN 1 ELSE ISNULL(r.FEXCHANGERATE, 1) END AS FEXCHANGERATE /*汇率*/
,pe.FTAXPRICE * CASE p.FCURRENCYID WHEN 1 THEN 1 ELSE ISNULL(r.FEXCHANGERATE, 1) END AS FTAXRATEPRICE /*本位币含税*/
,pe.FTAXRATE
,pe.FEFFECTIVEDATE
,pe.FEXPIRYDATE
,pe.FPRICE
,pe.FPRICE * CASE p.FCURRENCYID WHEN 1 THEN 1 ELSE ISNULL(r.FEXCHANGERATE, 1) END AS FRATEPRICE /*本位币不含税*/
,CASE p.FCURRENCYID WHEN 1 THEN 0 ELSE r.FRATETYPEID END AS FRATETYPEID
,pe.FFROMQTY /*2025-08-28 添加分量计价从数量*/
,pe.FTOQTY/*分量计价到数量*/
,pe.FENTRYID
,pe.FSEQ
,pe.FMATERIALTYPEID
,pe.FMMASTERID
,pe.FPROCESSORGID
,p.FISINCLUDEDTAX/*是否含税*/
,p.FDEFPRICELISTID/*是否默认价目表*/
FROM T_PUR_PRICELIST  p /*(价目表)*/
JOIN dbo.T_PUR_PRICELISTENTRY pe ON pe.FID = p.FID --AND pe.FEXPIRYDATE>GETDATE() /* 失效日大于当天-- CONVERT(NVARCHAR(10),,112)>CONVERT(NVARCHAR(10),GETDATE(),112)*/ /*AND FTOQTY=0*/
LEFT JOIN RateCTE r ON r.FCYFORID=p.FCURRENCYID /*汇率*/
JOIN (SELECT s.FSUPPLIERID,s.FNUMBER,sl.FNAME,sl.FSHORTNAME FROM dbo.T_BD_SUPPLIER s JOIN dbo.T_BD_SUPPLIER_L sl ON s.FSUPPLIERID = sl.FSUPPLIERID AND sl.FLOCALEID=2052) vs /*供应商*/
ON vs.FSUPPLIERID = p.FSUPPLIERID
JOIN dbo.Vw_BD_MATERIAL_BASE m ON pe.FMATERIALID = m.FMATERIALID_ID  AND FERPCLSID=1
WHERE vs.FNUMBER=@SuppNO AND m.FNUMBER IN(SELECT FID FROM dbo.fn_StrSplit(@MateNOS,','))/*物料来源为多物料逗号分隔*/
--AND pe.FFROMQTY<=@FROMQTY -- pe.FTOQTY=@TOQTY 
)
SELECT * FROM MateList WHERE MateList.ROWID=1
http://www.dtcms.com/a/377765.html

相关文章:

  • TwinCAT3人机界面1
  • C#语言入门详解(18)传值、输出、引用、数组、具名、可选参数、扩展方法
  • 【C++世界之string模拟实现】
  • 打工人日报#20250910
  • LeetCode100-206反转链表
  • function-call怎么训练的,预料如何构建
  • OpenLayers数据源集成 -- 章节四:矢量格式图层详解
  • 220V供电遥测终端 220V供电测控终端 选型
  • 【LLM】Transformer注意力机制全解析:MHA到MLA
  • 三十六、案例-文件上传-阿里云OSS-集成
  • 网编.hw.9.10
  • 4215kg轻型载货汽车变速器设计cad+设计说明书
  • Python数据可视化科技图表绘制系列教程(七)
  • 【 VMware Workstation 提示“虚拟机已在使用”怎么办?一篇文章彻底解决!】
  • WebSocket网络编程深度实践:从协议原理到生产级应用
  • 数字健康新图景:AI健康小屋如何重塑我们的健康生活
  • ⚡ Linux sed 命令全面详解(包括参数、指令、模式空间、保持空间)
  • Codeforces Round 1049 (Div. 2) D题题解记录
  • 视频分类标注工具
  • 【学习】vue计算属性
  • Torch 安装
  • 如何使用 DeepSeek 帮助自己的工作?的技术文章大纲
  • Object.values(allImages).forEach(src => { }
  • git rebase 的使用场景
  • 嵌入式场景kvdb数据库的使用(二)——UnQLite数据库的移
  • 基于MQTT的实时消息推送系统设计与实现(Java后端+Vue前端)
  • 柔性数组与队列杂记
  • XCVP1902-2MSEVSVA6865 AMD 赛灵思 XilinxVersal Premium FPGA
  • iPaaS与ESB:企业集成方案的选择与实践!
  • [硬件电路-177]:如何用交流电流源(偏置电流+交变电流)模拟PD的暗电流 + 变化的光电流