* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。
在Sage X3中,在采购屏幕上的管理页签中有一个【供应商号】字段可用。这是一个必填字段,这意味着在创建记录时,我们不能跳过这个字段。我们必须在这个字段中录入数据,然后我们才能进一步进行操作。
我们有一个客户要求,在当前会计年度中在供应商号字段中录入的数据不应该重复,而且我们必须用大小写字母条件来处理。而会计年度将在“供应商日期”的基础上来计算。
例如,假设用户为供应商A创建了第一条记录并录入“TEST1”作为供应商号。之后,用户为同一供应商创建第二条记录,并试图录入“test1”作为供应商号,那么系统不应该允许用户创建记录,因为号是一样的,不管它是小写还是大写。
BPRVCR(供应商号)
采购——第一条记录
对于第一条记录,供应商是SD0014,用户在供应商号中录入“sd08”,会计年度是2021-2022。
对于第二条记录,供应商是SD0014,用户在供应商号中录入“SD08”,会计年度是2021-2022。
采购——第2条记录
那么系统将不允许创建这条记录。并会产生 “该供应商号SD08已录入”的弹出消息,如下面的截图所示。
弹出消息
为此,我们对采购屏幕进行了定制。请参考以下代码:
####################################################################
IF [MIH1]BPRVCR<>””
Local Char REQUEST1(255)(8)
REQUEST1(0) = ” SELECT NUM_0 FROM “+nomap+”.PINVOICE P “
REQUEST1(1) = ” WHERE P.BPR_0='”+[PIH0]BPR+”‘ AND UPPER(P.BPRVCR_0)=UPPER(‘”+[PIH1]BPRVCR+”‘) and “
REQUEST1(2) = ” P.BPRDAT_0 BETWEEN DateFromParts((CASE WHEN MONTH(‘”+[MIH1]BPRDAT+”‘) IN(1,2,3) THEN (YEAR(‘”+[MIH1]BPRDAT+”‘)-1) ELSE YEAR(‘”+[M:PIH1]BPRDAT+”‘) END),04,01) “
REQUEST1(3) = ” and DateFromParts((CASE WHEN MONTH(‘”+[M:PIH1]BPRDAT+”‘) NOT IN(1,2,3) THEN (YEAR(‘”+[M:PIH1]BPRDAT+”‘)+1) ELSE YEAR(‘”+[M:PIH1]BPRDAT+”‘) END),03,31)”
FOR (Char DTEXTE_0) FROM “5” Sql REQUEST1 As [YCHD]
IF [M:PIH0]NUM =[YCHD]DTEXTE_0
ELSE
INFBOX “This Supplier Document number ” +num$([M:PIH1]BPRVCR)+” already enteredon invoice “+[YCHD]DTEXTE_0
OK =0
GOK = 0
GPE = 1
ENDIF
NEXT
ENDIF
####################################################################
并在SPEPIH脚本的VERIF_CRE和VERIF_MOD上添加了上述代码。审核了该脚本。
现在,如果用户试图为同一个供应商和同一个会计年度创建另一条新记录,但不同的供应商号,那么系统只会允许创建此类记录。 |