NC6在删除单据时 自动编码退号

355 篇文章 103 订阅

NC6在删除单据时 自动编码退号,此处是已供应商为例。以下方法位于 供应商基本信息后台服务实现类 “nc.impl.bd.supplier.baseinfo.SupplierBaseInfoImpl” 中

private IBillcodeManage getBillcodeManage() {
	if (this.billcodeManage == null) {
		this.billcodeManage = NCLocator.getInstance().lookup(IBillcodeManage.class);
	}
	return this.billcodeManage;
}

@Override
public void deleteSupplierVO(SupplierVO supplierVO) throws BusinessException {
		CustbankVO[] svos = supplierVO.getSupbankacc();
		Set<String> pk_bankaccbasSet = new HashSet<String>();
		if (!ArrayUtils.isEmpty(svos)) {
			for (CustbankVO svo : svos) {
				pk_bankaccbasSet.add(svo.getPk_bankaccbas());
			}
		}
		this.deleteVO(supplierVO);
		// 删除客商银行账户中对应的银行账户的数据
		if (!pk_bankaccbasSet.isEmpty()) {
			getBankaccBaseService().deleteCustSupBankAccbasVOs(pk_bankaccbasSet.toArray(new String[0]));
	}
	// 自动编码退号
	BillCodeContext billCodeContext = this.getBillcodeManage().getBillCodeContext(ISupplierConst.SUPPLIER_NBCRCODE,
			supplierVO.getPk_group(), supplierVO.getPk_org());
	// 存在编码规则时,退号
	if (billCodeContext != null && !BDDistTransResourceSaveUtil.isBDDistData()) {
		this.getBillcodeManage().returnBillCodeOnDelete(ISupplierConst.SUPPLIER_NBCRCODE, supplierVO.getPk_group(),
				supplierVO.getPk_org(), supplierVO.getCode(), supplierVO);
	}
}

NC6 单据编号相关类:

nc.pub.billcode.impl.BillCode
nc.pub.billcode.impl.BillCodeManageImpl
nc.pub.billcode.impl.BillCodeMemoryManager:单据号申请请求级内存管理类
nc.pub.billcode.impl.BillCodeRegion:新申请单据号存放的内存区域类
nc.pub.billcode.impl.BillcodeRuleImpl:编码规则服务实现类
nc.pub.billcode.impl.BillCodeRuleOperationConst:编码规则业务操作的元数据id
nc.pub.billcode.impl.BillcodeRuleQryImpl
nc.pub.billcode.impl.BillCodeServiceComponent
nc.pub.billcode.impl.InnerBillcodeMangeImpl:获取编码的内部事务类,因为原事务,在解锁后存在未提交数据库情况,这时多线程访问取号,可能存在重号。
nc.pub.billcode.impl.LeveledBillCodeManageImp:按单据类型定制规则取编码号的类,其中各个取号的方法都调用nc.pub.billcode.itf.IBillcodeManage中的方法和事务,本类不直接操作BillCodeMemoryManager
nc.pub.billcode.impl.NBCRServiceImpl

NC6 批量操作的后台服务的基类

//NC分层后批处理服务
nc.bs.bd.baseservice.md.BDBatchBaseService<T extends SuperVO> extends nc.bs.bd.baseservice.md.BatchBaseService<T extends SuperVO>

NC6 单个操作的后台服务的基类

//NC分层后单个处理服务
nc.bs.bd.baseservice.md.BDSingleBaseService<T extends SuperVO> extends nc.bs.bd.baseservice.md.SingleBaseService<T extends SuperVO>

以下的是转发,原文链接:https://blog.csdn.net/u010890857/article/details/51276371

nc 调用后台接口 生成单据编码可以使用下列方法:

1.

IBillcodeManage iBillcodeManage = (IBillcodeManage) NCLocator.getInstance().lookup(IBillcodeManage.class.getName());

String standardCode = null;
standardCode = iBillcodeManage.getBillCode_RequiresNew("bx","000199100000000002DC", "000188100000000R1Z6Q",new  BXHeaderVO());

2.
new HYPubBO().getBillNo(单据类型, 组织, null, null);

3.
new BillcodeGenerater ().getBillCode (单据类型, 组织,null,null);

4.

IUifService service = ((IUifService) NCLocator.getInstance().lookup(IUifService.class.getName()));
standardCode = service.getBillNo("HZ03", "000188100000000R1Z6Q","000199100000000002DC", null);

个人觉得,第一种方法比较靠谱,报销单单据编号配置在集团下,调用的单据类型是bx,见下截图:
在这里插入图片描述

第一种方法最后一个参数随便传一个带有单据编号的SurperVO即可。

例如:通过编码规则生成物料编码。

需求:客户在维护物料分类、物料名称、规则型号等 后不维护物料编码,而是通过NC编码规则生成物料编码 用来区别物料编码的不重复及唯一性。

思路分析:通过编码规则定义-全局 了解到物料编码的生成规则基于流水号的形式
比如规则定义:物料分类编码+流水号 (5+7)
( 物料分类为5位 已后补位0的形式在展现 那样编码就会做到唯一性)
举例来说:
1 钢材类 那么 物料编码为10000 0000001;
2 五金类 那么 物料编码为 20000 0000001;

内容如下:

单据基于元数据模型:
IBillcodeManage.getBatchBillCodes_RequiresNew (String billTypeCode, String pk_group,String pk_org, billvo vo,int                            num)              
参数说明:billTypeCode 单据类型
pk_group 集团主键
pk_org 组织主键
billvo 编码实体数据需编码的单据是基于元数据的,billvo为单据vo,
num 批取编码的数量

代码实现:

IBillcodeManage codemanage = (IBillcodeManage) NCLocator.getInstance().lookup(IBillcodeManage.class);//调用接口
MaterialVO vo = new MaterialVO();//物料vo
vo.setPk_marbasclass(wlfl);//物料分类主键 用来取得物料分类下的物料编码
String[] wlbms= codemanage.getBatchBillCodes_RequiresNew("material",pk_group,pk_group,vo,1);
String wlbm= wlbms[0];//物料编码
//vo.setPk_group("001");//集团
//vo.setPk_org("001");//公司				
//vo.setCode(code);//物料编号
//vo.setName(wlname);//物料名称
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值