采购价格管控v2
基于价目表,管控物料不可输入
思路
(项目🔶-任务🟥-工作🔺)
-
🔶价目表/调价表变动
-
🟥需要流程管控
- 表头:全为参考价格
- 明细:添加是否参考价列
-
🟥不需要流程管控
- 价格全为参考价格
-
终点管控
发票价格==价目表价格==采购单价格
字段锁定
this.View.GetControl("F_ZVMG_Text_3iy").Enabled=False;
执行
价目表
检查是否全参考价code
import clr
import sys
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.JSON import *
from Newtonsoft.Json import JsonConvert
from System import *
import System
import System.IO
from Kingdee.BOS.App.Data import *
pName = "保存和提交时检查价格是否相同"
def getDt():
""" 获取时间 """
current_date = System.DateTime.Now
date_string = current_date.ToString("MM-dd HH:mm:ss")
return date_string
def myLog(msg):
""" 写日志到文件 """
current_date = System.DateTime.Now
# 格式化输出(例如:2023-11-20)
date_string = current_date.ToString("yyyy-MM-dd")
logWriter = System.IO.StreamWriter("d:\jack\debug_output-{}.txt".format(date_string), True)
# 重定向到文件
original_out = System.Console.Out
System.Console.SetOut(logWriter)
# 4. 使用Console.WriteLine输出(会被重定向到文件)
System.Console.WriteLine(msg)
# 恢复并关闭
System.Console.SetOut(original_out)
logWriter.Close()
def showObj(obj,desc="obj"):
""" 显示对象内容 到log文件 """
myLog("{0} {1} dir( {2} ) {3} {1} \t".format(getDt(), '-'*10, desc ,type(obj).__name__))
for i in dir(obj):
try:
cobj = getattr(obj,i,None)
except Exception as e:
myLog("Error: {}".format(e))
myLog(" {0} , type == {1} value == {2} ".format(i , type(cobj).__name__, cobj ))
#-----------------
def AfterDoOperation(e):
""" 事后处理 如加载"""
tmp = "AfterDoOperation:str(e.Operation) {0} , type.__name__ = {1} value = {2} "
tmp = tmp.format(str(e.Operation) , type(e.Operation).__name__ , e.Operation )
myLog(tmp)
#showObj(e,"事后处理 AfterDoOperation ")
#myLog("刷新 AfterDoOperation {}".format(type(e.Operation).__name__) )
#showObj(e.Operation,"AfterDoOperation e.Operation 是个啥 ")
# 判断是否为提交操作
if e.Operation.Operation in [ "Save" ]:
myLog("刷新 AfterDoOperation ")
this.View.InvokeFormOperation("Refresh") #刷新
def BeforeDoOperation(e):
""" 事前处理可拦截 """
#showObj(e,"事前处理可拦截 BeforeDoOperation")
tmp = "事前处理可拦截 BeforeDoOperation :str(e.Operation) {0} , type.__name__ = {1} value = {2} "
tmp = tmp.format(str(e.Operation) , type(e.Operation).__name__ , e.Operation )
myLog(tmp)
#showObj(e.Operation,"BeforeDoOperation e.Operation 是个啥 ")
# 判断是否为提交操作
if type(e.Operation).__name__ in [ "Submit","Save"]:
if 检查是否全参考价(this.View.Model.DataObject) == True:
myLog("勾选全是参考价 ")
this.View.Model.DataObject.F_XJPT_CHECKBOX = 1
else:
myLog("取消全是参考价 ")
this.View.Model.DataObject.F_XJPT_CHECKBOX = 0
return
def 检查是否全参考价(dObj):
""" 返回True/False """
#showObj(dObj,"价目表表单数据")
# 输出保存数据
#msg = "价目表表单数据--》{}\n".format(JsonConvert.SerializeObject( this.View.Model.DataObject ))
#myLog(msg)
entrys = dObj.PriceListEntry
lens = len( entrys )
msg = "明细条目数量 : {}\n".format( lens )
myLog(msg)
aa=list()
for ent in entrys:
# 打印条目
#msg = "打印条目 :\n {}\n".format(JsonConvert.SerializeObject( ent ))
#myLog(msg)
aa.append(ent.F_XJPT_is_reference)
msg = "全是 参考价??? : {}\n".format( aa )
myLog(msg)
if all(aa):
# 全是 参考价
return True
else:
return False
- 反审核-UnAudit
- 提交-Submit
- 保存-Save
- 审核-Audit
调价表
审核通过更新价目表code
import clr
import sys
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.JSON import *
from Newtonsoft.Json import JsonConvert
from System import *
import System
import System.IO
from Kingdee.BOS.App.Data import *
pName = "保存和提交时检查价格是否相同"
def getDt():
""" 获取时间 """
current_date = System.DateTime.Now
date_string = current_date.ToString("MM-dd HH:mm:ss")
return date_string
def myLog(msg):
""" 写日志到文件 """
current_date = System.DateTime.Now
# 格式化输出(例如:2023-11-20)
date_string = current_date.ToString("yyyy-MM-dd")
logWriter = System.IO.StreamWriter("d:\jack\debug_output-{}.txt".format(date_string), True)
# 重定向到文件
original_out = System.Console.Out
System.Console.SetOut(logWriter)
# 4. 使用Console.WriteLine输出(会被重定向到文件)
System.Console.WriteLine(msg)
# 恢复并关闭
System.Console.SetOut(original_out)
logWriter.Close()
def showObj(obj,desc="obj"):
""" 显示对象内容 到log文件 """
myLog("{0} {1} dir( {2} ) {3} {1} \t".format(getDt(), '-'*10, desc ,type(obj).__name__))
for i in dir(obj):
try:
cobj = getattr(obj,i,None)
except Exception as e:
myLog("Error: {}".format(e))
myLog(" {0} , type == {1} value == {2} ".format(i , type(cobj).__name__, cobj ))
#-----------------
def AfterDoOperation(e):
""" 捕获所以操作事件 """
#showObj(e)
#tmp = "AfterDoOperation:str(e.Operation) {0} , type = {1} value = {2} "
#tmp = tmp.format(str(e.Operation) , type(e.Operation).__name__ , e.Operation )
#myLog(tmp)
# 判断是否为提交操作
if e.Operation.Operation in ["Audit"]:
审核操作(e )
def BeforeDoOperation(e):
""" 捕获所以操作事件 """
#showObj(e)
tmp = "BeforeDoOperation:str(e.Operation) {0} , type = {1} value = {2} "
tmp = tmp.format(str(e.Operation) , type(e.Operation).__name__ , e.Operation )
myLog(tmp)
# 判断是否为提交操作
if type(e.Operation).__name__ in [ "Submit","Save"]:
if 检查是否全参考价(this.View.Model.DataObject) == True:
myLog("勾选全是参考价 ")
this.View.Model.DataObject.F_XJPT_all_reference = 1
else:
myLog("取消全是参考价 ")
this.View.Model.DataObject.F_XJPT_all_reference = 0
#//更新界面显示
this.View.Model.DataObject.Description = getDt()
this.View.UpdateView()
def 审核操作(e):
""" 提交操作
带 暂估价格过去
执行存储过程
PUR_PATENTRY.PriceListId. Id = 242654 #采购价目表
.MaterialId.Id = 121823 #物料id
"""
err=""
#this.View.Model.DataObject
#showObj(this.View.Model.DataObject)
dObj = this.View.Model.DataObject
调价表内码 = dObj.Id
#//更新应付 含税价目
fsql="/*dialect*/ exec z_oq_审核后同步价目表 {0} ".format(调价表内码);
inf = DBUtils.Execute(this.Context,fsql);
myLog(fsql+" 影响 {} 行".format(inf) )
def 检查是否全参考价(dObj):
""" 返回True/False
调后含税单价 PUR_PATENTRY.UpPrice 调价表明细
全参考价 F_XJPT_all_reference
"""
#showObj(dObj,"价目表表单数据")
# 输出保存数据
#msg = "价目表表单数据--》{}\n".format(JsonConvert.SerializeObject( this.View.Model.DataObject ))
#myLog(msg)
#//---
entrys = dObj.PUR_PATENTRY
lens = len( entrys )
msg = "明细条目数量 : {}\n".format( lens )
myLog(msg)
aa=list()
for index, ent in enumerate(entrys):
# 打印条目
#msg = "打印条目 :\n {}\n".format(JsonConvert.SerializeObject( ent ))
#myLog(msg)
#tmp = " 物料 {0} ,调价后 = {1} 价目表 = {2} 价目表明细 {3} "
#tmp = tmp.format( ent.MaterialId.Id , ent.AfterPrice , ent .PriceListId. Id ,999 )
#myLog(tmp)
aa.append(ent.F_XJPT_is_reference)
msg = "全是 参考价??? : {}\n".format( aa )
myLog(msg)
if all(aa):
# 全是 参考价
return True
else:
return False
全参考价判断code
更新价目表值 sql
要更新的价目表
select 价目明细.FMaterialId 物料内码 ,价目明细.FENTRYID 价目明细内码
, 价目明细.FPRICEFROM as 价格来源
, 价目明细.FPrice as 单价
, 价目明细. FRECENTDATE as 最近调价日期
,*
from T_PUR_PRICELIST 价目表
join T_PUR_PRICELISTENTRY 价目明细 on 价目表.fid = 价目明细 .FID
where 价目表.fid = 242654
and 价目明细.FMaterialId = 121823
select 调价表.FBillNo 调价表单据编码
, 调价明细. FMaterialId 物料内码
,调价明细. FPriceListId as 价目表内码
, 调价明细.FAfterPrice as 调后单价
, 调价明细.F_XJPT_is_reference as 是否参考价
, 价目明细.F_XJPT_is_reference as 价目是否参考价
, 价目明细.FPrice as 单价
from T_PUR_PAT 调价表
join T_PUR_PATENTRY 调价明细 on 调价表.fid = 调价明细.fid
join T_PUR_PRICELIST 价目表 on 调价明细.FPriceListId = 价目表.fid
join T_PUR_PRICELISTENTRY 价目明细 on 价目表.fid = 价目明细 .FID and 调价明细. FMaterialId = 价目明细.FMaterialId
where 调价表.fid = 100095
应付单
读取价目表价格 sql
参考 z_fxfph存储过程
查询条件
-
物料
-
供应商
-
币别
-
单据状态 (A-暂存、B-创建、C-审核中、D-已审核、E-重新审核)
-
生效日期 (不需要了)
物料内码和供应商内部 作为条件去查询
SELECT * FROM (
SELECT
ROW_NUMBER() OVER(ORDER BY 价目表.FCreateDate desc ) AS 行号 ,
价目表.FNUMBER AS 价目表编码
,价目表.FSupplierID as 供应商内码
,价目表.FID as 价目表内码
,价目表.FCurrencyID as 币别
,价目表.FDocumentStatus as 单据状态
,价目明细.FMaterialId as 物料内码
,价目明细.FTaxPrice as 含税单价
,价目表.FCreateDate
from T_PUR_PRICELIST 价目表
left join T_PUR_PRICELISTENTRY 价目明细 ON 价目明细.FID = 价目表.FID
where 价目表.FDocumentStatus = 'C'
and 价目表.FSupplierID = 101827
and 价目明细.FMaterialId = 121791
and 价目表.FCurrencyID = 1
) TT
WHERE TT.行号 = 1
供应商内码=:101827 币别内码=: 1 物料内码=: 121791
读取单据中 【供应商内码,币别】【物料内码】
更新价目表含税价 update
ALTER PROCEDURE [dbo].[z_oq_获取应付明细价目表]-- exec z_oq_获取应付明细价目表 148622 , 121823 ,101827 , 1
@faid int --应付单id
,@fmid int --物料内码id
,@fsid int --供应商id
,@fcid int --币别id
AS
BEGIN
update 应付明细 set 应付明细.F_QINL_JMBDJ = 价目表明细.含税单价
,应付明细.F_XJPT_is_reference = 价目表明细.是否参考价
from T_AP_PAYABLE 应付单
join T_AP_PAYABLEENTRY 应付明细 on 应付明细.fid=应付单.fid
inner join (
SELECT * FROM (
SELECT
ROW_NUMBER() OVER(ORDER BY 价目表.FCreateDate desc ) AS 行号 ,
价目表.FNUMBER AS 价目表编码
,价目表.FSupplierID as 供应商内码
,价目表.FID as 价目表内码
,价目表.FCurrencyID as 币别
,价目表.FDocumentStatus as 单据状态
,价目明细.FMaterialId as 物料内码
,价目明细.FTaxPrice as 含税单价
,价目明细.F_XJPT_is_reference as 是否参考价
,价目表.FCreateDate
from T_PUR_PRICELIST 价目表
left join T_PUR_PRICELISTENTRY 价目明细 ON 价目明细.FID = 价目表.FID
where 价目表.FDocumentStatus = 'C' -- 已审核
and 价目表.FSupplierID = @fsid
and 价目明细.FMaterialId = @fmid
and 价目表.FCurrencyID = @fcid
) TT
WHERE TT.行号 = 1
) 价目表明细 on 应付明细.FMATERIALID = 价目表明细.物料内码
where 应付单.FSETACCOUNTTYPE=3 -- 财务应付
and 应付单.fid=@faid
end
执行
exec z_oq_jggk_yfjg 148620 , 121791 , 101827 , 1
DBUtils.Execute返回的是受影响的行数
DBUtils.ExecuteScalar返回的是首行首列
读取价目和采购含税价code
5.06.16.0169
3.99.01.0012
import clr
import sys
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.JSON import *
from Newtonsoft.Json import JsonConvert
from System import *
import System
import System.IO
from Kingdee.BOS.App.Data import *
def getDt():
""" 获取时间 """
current_date = System.DateTime.Now
date_string = current_date.ToString("MM-dd HH:mm:ss")
return date_string
def myLog(msg):
""" 写日志到文件 """
current_date = System.DateTime.Now
# 格式化输出(例如:2023-11-20)
date_string = current_date.ToString("yyyy-MM-dd")
logWriter = System.IO.StreamWriter("d:\jack\debug_output-{}.txt".format(date_string), True)
# 重定向到文件
original_out = System.Console.Out
System.Console.SetOut(logWriter)
# 4. 使用Console.WriteLine输出(会被重定向到文件)
System.Console.WriteLine(msg)
# 恢复并关闭
System.Console.SetOut(original_out)
logWriter.Close()
def showObj(obj,desc="obj"):
""" 显示对象内容 到log文件 """
myLog("{0} {1} dir( {2} ) {3} {1} \t".format(getDt(), '-'*10, desc ,type(obj).__name__))
for i in dir(obj):
try:
cobj = getattr(obj,i,None)
except Exception as e:
myLog("Error: {}".format(e))
myLog(" {0} , type == {1} value == {2} ".format(i , type(cobj).__name__, cobj ))
#-----------------
def AfterLoadData (e):
""" 再显示前修改数据 """
dObj = this.View.Model.DataObject
#showObj(e,"事前处理可拦截 AfterLoadData")
#msg = "AfterLoadData结果--》{}\n".format(JsonConvert.SerializeObject( dObj ))
#myLog(msg)
#tmp = "事前处理可拦截 AfterLoadData : BillNo = {} 备注 = {} "
#tmp = tmp.format( dObj.BillNo , dObj.REMARK )
#myLog(tmp)
#dObj.REMARK = getDt() #测试修改备注
for index, ent in enumerate(dObj.AP_PAYABLEENTRY):
#tmp = "明细循环 enumerate : index = {} len = {} "
#tmp = tmp.format( index , len(dObj.AP_PAYABLEENTRY) )
#myLog(tmp)
#--字段引用
ent.F_QINL_JGGK = ent.MATERIALID.F_QINL_JGGK # 字段引用
def BarItemClick(e):
#showObj(e,"按钮 BarItemClick 获取价目表价格 {} ".format( 0 ) )
key=e.BarItemKey;
if(key =="XJPT_tbButton_2" ):
获取价目表含税价(this.View.Model.DataObject)
return
def 获取价目表含税价(dObj):
msgAdd = ""
#msg = "存储过程执行结果--》{}\n".format(JsonConvert.SerializeObject( doc ))
#myLog(msg)
#myLog(doc)
#showObj(doc,"执行存储过程 对象{} ".format( 0 ) )
单据内码 =dObj.Id
if(单据内码 <= 0 ):
this.View.ShowMessage("未保存单据不能获取 {} ".format ( '' ));
return
if(str(dObj.FSetAccountType) != '3' ):
#this.View.ShowErrMessage("立账类型:必须财务应付 {} ".format ( '' ));
this.View.ShowWarnningMessage("立账类型:必须财务应付 {} ".format ( '' ));
return
#pass
#msg = "获取价目表含税价--》{}\n".format(JsonConvert.SerializeObject( dObj ))
#myLog(msg)
#myLog("应付表头 dObj 币别id =: {} 供应商id =: {}".format(dObj.CURRENCYID_Id, dObj.SUPPLIERID_Id) )
#showObj(dObj.SupplierID,"供应商对象 = {} ".format( 0 ) )
供应商内码 = dObj.SUPPLIERID_Id
币别内码 = dObj.CURRENCYID_Id
#//采购订单含税价
fsql="/*dialect*/ exec z_oq_获取应付单采购价格 {} ".format(单据内码) ;
myLog(fsql)
inf = DBUtils.Execute(this.Context,fsql);
#//价目表含税价 等
for index, ent in enumerate( dObj.AP_PAYABLEENTRY) :
物料内码 = ent.MATERIALID_Id
物料代码 = ent.MATERIALID.Number
#msg = "应付明细--》{}\n".format(JsonConvert.SerializeObject( dObj ))
#myLog(msg)
myLog("供应商内码=:{} 币别内码=: {} 物料内码=: {} 物料代码=: {}".format(
供应商内码,币别内码,物料内码,物料代码) )
# 先查询后更新 查询物料是否管控,是否有价目表
if ent.MATERIALID.F_QINL_JGGK :
#--查询是否有价目表 (不然会更新控制到 字段)
fsql="/*dialect*/ exec z_oq_查询价目表 {} ,{}, {}".format(
物料内码,供应商内码,币别内码);
myLog(fsql)
doc = DBUtils.ExecuteScalar(this.Context,fsql,None);
myLog("{}: {} 价目表价格 {}".format(index, 物料代码,doc))
if doc>0:
#//更新应付 含税价目
fsql="/*dialect*/ exec z_oq_获取应付明细价目表 {0}, {1} ,{2} ,{3} ".format(
单据内码,物料内码, 供应商内码,币别内码);
myLog(fsql)
DBUtils.Execute(this.Context,fsql);
else:
this.View.ShowErrMessage("管控物料{}没有取到价目表".format(物料代码) )
else:
tmp = " 物料 {} 无需管控 "
tmp = tmp.format( ent.MATERIALID.Number )
myLog(tmp)
msgAdd = tmp
this.View.ShowMessage("获取价目表价格 完成 {0} ".format ( msgAdd ));
this.View.InvokeFormOperation("Refresh")
#this.View.GetControl("F_XJPT_Price").Enabled=False;
#this.View.GetControl("F_QINL_JMBDJ").Enabled=False;
#myLog(" this.View.Model.DataObject.Id =={0} {1}".format(this.View.Model.DataObject.Id , __file__ ))
目标通过 对指定物料开启 价格管控来
保存检查code
import clr
import sys
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.JSON import *
from Newtonsoft.Json import JsonConvert
from System import *
import System
import System.IO
from Kingdee.BOS.App.Data import *
pName = "保存和提交时检查价格是否相同"
def getDt():
""" 获取时间 """
current_date = System.DateTime.Now
date_string = current_date.ToString("MM-dd HH:mm:ss")
return date_string
def myLog(msg):
""" 写日志到文件 """
current_date = System.DateTime.Now
# 格式化输出(例如:2023-11-20)
date_string = current_date.ToString("yyyy-MM-dd")
logWriter = System.IO.StreamWriter("d:\jack\debug_output-{}.txt".format(date_string), True)
# 重定向到文件
original_out = System.Console.Out
System.Console.SetOut(logWriter)
# 4. 使用Console.WriteLine输出(会被重定向到文件)
System.Console.WriteLine(msg)
# 恢复并关闭
System.Console.SetOut(original_out)
logWriter.Close()
def showObj(obj,desc="obj"):
""" 显示对象内容 到log文件 """
myLog("{0} {1} dir( {2} ) {3} {1} \t".format(getDt(), '-'*10, desc ,type(obj).__name__))
for i in dir(obj):
try:
cobj = getattr(obj,i,None)
except Exception as e:
myLog("Error: {}".format(e))
myLog(" {0} , type == {1} value == {2} ".format(i , type(cobj).__name__, cobj ))
#-----------------
def BeforeDoOperation(e):
""" 捕获所以操作事件 """
#showObj(e)
tmp = "myLog:str(e.Operation) {0} , type = {1} value = {2} "
tmp = tmp.format(str(e.Operation) , type(e.Operation).__name__ , e.Operation )
myLog(tmp)
# 判断是否为提交操作
if type(e.Operation).__name__ == "Submit":
提交操作(e )
return
def 提交操作(e):
""" 提交操作
检查是否符合 3价相同
是否价格管控 是否参考价
"""
err=""
#this.View.Model.DataObject
#showObj(this.View.Model.DataObject)
dObj = this.View.Model.DataObject
noteq = [] #//收集价格不符合的明细
暂估价格列表 = []
for index, ent in enumerate(dObj.AP_PAYABLEENTRY):
# 打印条目
#msg = "{}\n".format(JsonConvert.SerializeObject( ir ))
#myLog(msg)
#//不受管控物料
if not (ent.F_QINL_JGGK ):
continue
tmp = "myLog:F_XJPT_Price= {0} , FTaxPrice = {1} F_XJPT_Price1 = {2} FPrice = {3} 是否管控 {4} 是否暂估价 {5}"
tmp = tmp.format( ent["F_XJPT_Price"] , ent["TaxPrice"]
, ent["F_XJPT_Price1"] , ent["FPrice"]
,ent.F_QINL_JGGK, ent.F_XJPT_is_reference
)
myLog(tmp)
"""
是否采购价格管控 F_QINL_JGGK
是否参考价 F_XJPT_is_reference
含税单价 TaxPrice
采购订单含税单价 F_XJPT_Price
价目表单价 F_QINL_JMBDJ
"""
if not ( ent.TaxPrice==ent.F_XJPT_Price and ent.TaxPrice==ent.F_QINL_JMBDJ ):
# 含税单价==采购订单含税单价 and 含税单价==价目表单价
noteq .append(index+1)
if ent.F_XJPT_is_reference :
# 含税单价==采购订单含税单价 and 含税单价==价目表单价
暂估价格列表 .append(index+1)
#-----------
if len(noteq) >0:
err = err + "第{}条明细 发票与价目表/采购含税价不同,请上下查单据的价格!\n".format(
",".join( map(str,noteq) )
)
if len(暂估价格列表) >0:
err = err + "第{}条明细 价格为暂估请确定后调整价目表 \n".format(
",".join( map(str,暂估价格列表) )
)
# 禁止提交
if err:
e.Cancel=True # 取消当前操作
raise Exception(err)
#key=e.BarItemKey;
this.View.ShowMessage("完成操作 {0} ".format ( 123 ));
查采购订单价格sql
从财务应付
查暂估应付
,从暂估应付
到上游入库单
,从入库单
到采购单
select 应付单.fid as 应付单内码 ,应付单.FBILLNO as 应付单编码
, 应付明细.fentryid as 应付明细内码
, 应付明细关联.fsbillid as 暂估单据内码
, 暂估应付明细.fentryid as 暂估明细内码
, 入库单明细.fentryid as 入库单明细内码
, 入库单.fid as 入库单内码
, 入库单.FBILLNO as 入库单编码
, 采购订单明细财务信息.fentryid as 采购明细财务内码
, 采购订单.fid as 采购内码
, 采购订单.FBILLNO as 采购编码
from T_AP_PAYABLE 应付单
join T_AP_PAYABLEENTRY 应付明细 on 应付明细.fid=应付单.fid
join T_AP_PAYABLE_LK 应付明细关联 on 应付明细关联.fentryid=应付明细.fentryid
join T_AP_PAYABLEENTRY 暂估应付明细 on 暂估应付明细.fentryid=应付明细关联.fsid
join T_AP_PAYABLE_LK 暂估应付明细关联 on 暂估应付明细关联.fentryid=暂估应付明细.fentryid
join T_STK_INSTOCKENTRY 入库单明细 on 入库单明细.fentryid=暂估应付明细关联.fsid
join T_STK_INSTOCK 入库单 on 入库单.fid=暂估应付明细关联.fsbillid
join T_STK_INSTOCKENTRY_LK 入库单明细关联 on 入库单明细关联.fentryid=入库单明细.fentryid
join T_PUR_POORDERENTRY_F 采购订单明细财务信息 on 采购订单明细财务信息.fentryid=入库单明细关联.fsid
join T_PUR_POORDER 采购订单 on 采购订单.fid=入库单明细关联.fsbillid
where 应付单.FSETACCOUNTTYPE=3 and 应付单.fid= 148377