应收单或应付单列表“发票号码”字段无法排序,如何解决

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

应收单或应付单列表“发票号码”字段无法排序,如何解决

1、问题描述


应收单或应付单列表中,对“发票号码”字段进行“排序”操作,但未生效

————

类似问题:应收单或应付单列表“发票代码”字段无法排序

2、原因分析


因应收开票业务中,涉及一张应收单对应多张发票的情况,当对应的发票数量大时,发票代码/发票号码字段需要支持存储较大长度的数据。为存储需要,该字段由最初的varchar修改为clob类型,造成排序失效,clob大文本字段不支持排序。在确认客户开票业务不涉及一张应收单对应大量发票的情况下,可以在客户环境修改“发票代码”/“发票号码”的字段类型。

3、解决方案

本方案以应收单为例,如需要修改应付单发票代码/号码字段,步骤相同,表名需替换为应付单表。

3.1 确认历史数据不超过varchar类型最大长度限制(Oracle:4000,Sqlserver:8000)

————执行以下语句查询

select  max(length(FINVOICECODE )) from T_AR_OTHERBILL 

select  max(length(FInvoiceNo)) from T_AR_OTHERBILL


查看返回值,如果大于(Oracle:4000,Sqlserver:8000),则说明客户环境历史数据中,已存在数据大于限制,不可进行字段类型变更操作,该解决方案不适用。如果小于,可继续按本文档步骤继续操作。

3.2  数据备份

为避免执行过程存在异常,导致数据丢失,请在执行操作前,一定做好数据的备份

————执行以下语句备份

select  * into T_AR_OTHERBILL_bak from T_AR_OTHERBILL

3.3  执行字段类型修改语句

————执行以下语句修改“发票代码”字段类型,以Oracle为例

IF EXISTS(SELECT 1 FROM KSQL_USERCOLUMNS WHERE KSQL_COL_TABNAME = 'T_AR_OTHERBILL' AND KSQL_COL_NAME = 'FInvoiceCode')

alter table T_AR_OTHERBILL add FInvoiceCode_bak VARCHAR(4000);

if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')

update T_AR_OTHERBILL set FInvoiceCode_bak = FInvoiceCode;

if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')

alter table T_AR_OTHERBILL drop default for FInvoiceCode;

if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')

update T_AR_OTHERBILL set FInvoiceCode=null;

if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')

alter table T_AR_OTHERBILL drop column FInvoiceCode ;

IF EXISTS(SELECT 1 FROM KSQL_USERCOLUMNS WHERE KSQL_COL_TABNAME = 'T_AR_OTHERBILL' AND KSQL_COL_NAME = 'FInvoiceCode_bak')

alter table T_AR_OTHERBILL add FInvoiceCode VARCHAR(4000);

if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')

update T_AR_OTHERBILL set FInvoiceCode = FInvoiceCode_bak;

if exists (select * from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')

alter table T_AR_OTHERBILL drop column FInvoiceCode_bak;

————执行以下语句修改“发票号码”字段类型

IF EXISTS(SELECT 1 FROM KSQL_USERCOLUMNS WHERE KSQL_COL_TABNAME = 'T_AR_OTHERBILL' AND KSQL_COL_NAME = 'FInvoiceNo')

alter table T_AR_OTHERBILL add FInvoiceNo_bak VARCHAR(4000);

if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceNo_bak')

update T_AR_OTHERBILL set FInvoiceNo_bak = FInvoiceNo;

if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceNo_bak')

alter table T_AR_OTHERBILL drop default for FInvoiceNo;

if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceNo_bak')

update T_AR_OTHERBILL set FInvoiceNo=null;

if exists (select * from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceNo_bak')

alter table T_AR_OTHERBILL drop column FInvoiceNo;

IF EXISTS(SELECT 1 FROM KSQL_USERCOLUMNS WHERE KSQL_COL_TABNAME = 'T_AR_OTHERBILL' AND KSQL_COL_NAME = 'FInvoiceNo_bak')

alter table T_AR_OTHERBILL add FInvoiceNo VARCHAR(4000);

if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceNo_bak')

update T_AR_OTHERBILL set FInvoiceNo = FInvoiceNo_bak;

if exists (select * from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceNo_bak')

alter table T_AR_OTHERBILL drop column FInvoiceNo_bak;

3.4  修改字段“参与排序”的属性

路径:【企业建模】-【业务对象建模】-【动态扩展平台】-【动态扩展平台高级版】

step1:在应收单节点(如无需添加应收单扩展方案),找到发票代码(invoiceCode)、发票号码(invoiceNo)字段。

step2:新增扩展属性”是否在通用过滤中参与排序”,并将“值”修改为“true”,启用该扩展方案。

3.5 修改代码排序逻辑

为避免对不可排序的字段操作“排序”时报错,代码对该操作进行了限制,需放开对应代码针对该内容的限制。

修改点:增加二开序时簿, 在getNotOrderColumns()方法中,修改为“return null”——因涉及源代码信息,该步骤如有疑问请联系总部研发二开指导。

应收单或应付单列表“发票号码”字段无法排序,如何解决

1、问题描述应收单或应付单列表中,对“发票号码”字段进行“排序”操作,但未生效————类似问题:应收单或应付单列表“发票代码”字段...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息