尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
合同问题记录
文章目录一、变更问题hcbm_contract_relationship表如何拿到框架协议变更后最新的合同内容?如何根据1003231100021-1的合同id拿到这个合同关联的最后一个变更单?变更后合同页面展示的问题如何根据变更编号拿到变更后最新合同行信息?关于relate_contract_number关于source_contract_number一、根据最原始合同编号查询出最新建的合同编号二、接口服务案例演示:案例演示接口平台带organizationId接口监控不记录客户端三、发票和接收问题查看发票和接收表已收发票金额问题三、付款管理付款管理不能编辑付款计划比例不让编辑的逻辑付款管理界面的付款金额不对付款管理的金额为什么点完刷新和编辑后 计划付款金额还是不对三、多系统同步问题附件传门户HSRM过来的订单啥时候是新建状态啥时候是已批准归档没有附件同步sap的几大场景同步sap的`areementSyncSap(String contractNumber)`和`syncSapPreCondition(String contractNumber, String syn)`这两个方法调用时机同步ERP的几大场景四、付款管理生成付款计划、付款计划生成付款阶段逻辑五、履约保证金阶段生成退款计划、退款计划生成履约保证金阶段逻辑六、合同各文件合同正文合同关联关系合同附件归档文件HOC同步门户用章信息文件丢失问题合同文件存到哪里去了?七、代理记录日志八、文本对比服务主数据相关接口1、“签订主体管理”的数据来自“组织信息同步接口”2、相对方管理—SAP供应商地点更改合同分类书面变更合同分类的赋值逻辑合同查询合同其它查询查不到某合同合同行编辑问题合同修改正文文中存在未填充的域变量用章推送其它问题HSRM 同IP报价预警SRM调用合同接口报没有权限HSRM调合同接口报token过期HSRM调合同接口报读取超时HSRM调合同报角色为空调接口调不通了电签报文电签那边显示合同的签署文件打不开啥时候能点击"撤销电签流程"按钮?啥时候能点击"发起电签"按钮?合同变更表的关联关系动态拓展字段规则合同动态表格规则维护“协议是否冻结”逻辑确认没有权限访问report调用fulfill服务超时问题有违约金的付款计划咋算的计划付款金额?文件如何传输没有vpn的外部系统如何调用我方系统的接口?一、变更问题hcbm_contract_relationship表①疑问:hcbm_contract_relationship表的contract_id和rel_contract_id分别代表什么含义?SELECTtype_code,hcr.contract_id,hc.contract_number,hcr.rel_contract_id,hc_rel.contract_numberFROM`hcbm_contract_relationship`hcrLEFTJOINhcbm_contract hconhc.id=hcr.contract_idLEFTJOINhcbm_contract hc_relonhc_rel.id=hcr.rel_contract_idwheretype_code='BS'可以看到,hcbm_contract_relationship表里面BS的数据,contract_id存放的就是变更后的合同id,rel_contract_id存放的就是变更前的合同id②疑问:hcbm_contract_relationship表的contract_id和rel_contract_id分别代表什么含义?SELECTtype_code,hcr.contract_id,hc.contract_number,hcr.rel_contract_id,hc_rel.contract_numberFROM`hcbm_contract_relationship`hcrLEFTJOINhcbm_contract hconhc.id=hcr.contract_idLEFTJOINhcbm_contract hc_relonhc_rel.id=hcr.rel_contract_idwheretype_code='BD'可以看到,hcbm_contract_relationship表里面BD的数据,contract_id存放的就是变更前的合同id,rel_contract_id存放的就是变更后的合同id③敲记BD 补充对象BS 补充生成BD是基于A合同看到A-1,因为BD是看终点(Destination)BS是基于A-1合同看到A,因为BS是看源头(Source)如何拿到框架协议变更后最新的合同内容?框架协议KJ2022198可能做了好几次书面和口头变更,如何拿到这个最新的合同数据?(最后一次变更后的合同数据)ps:此方法只适用于框架协议publicStringqueryLatestContractNumber(StringsourceNumber){StringcontractNumber=contractMapper.queryRelContractNumber(sourceNumber,"BD");returncontractNumber==null||Objects.equals(contractNumber,sourceNumber)?sourceNumber:queryLatestContractNumber(contractNumber);}SELECThcr.rel_contract_numberFROMhcbm_contract hcLEFTJOINhcbm_contract_relationship hcrONhc.id=hcr.contract_idWHEREhcr.type_code=#{typeCode}ANDhc.contract_number=#{contractNumber}如何根据1003231100021-1的合同id拿到这个合同关联的最后一个变更单?假如前端给了你1003231100021-1合同的合同id,然后让你拿到1003231100021-1这个合同最新的变更单,1003231100021-1到1003231100021-2合同至今肯定是做了一次书面变更,但你并不知道1003231100021-1这个合同做过几次口头变更,那如何根据1003231100021-1的合同id拿到这个合同最新的变更单?根据合同id查询hcbm_change_header表,会拿到ListChangeHeaderDO(根据一个合同id可能查到多个变更头): ①如果ListChangeHeaderDO不为空:从ListChangeHeaderDO拿到最后一条创建的数据就可以; ②如果ListChangeHeaderDO为空:变更单信息为空,则该合同做的是书面变更,根据当前合同的来源合同id查合同变更单信息。根据合同id查询hcbm_contract表拿到该合同的sourceContractId(来源合同id),然后根据sourceContractId查询hcbm_change_header表,会拿到ListChangeHeaderDO,取最后一条数据contract为变更前的合同id// 根据id查询合同ContractEcontractE=contractRepository.selectByContractId(contractId);ChangeHeaderDOchangeHeaderDO=hocToSapService.getChangeHeaderByContractId(contractE);publicChangeHeaderDOgetChangeHeaderByContractId(ContractEcontractE){// 合同idLongcontractId=contractE.getId();// 来源合同idLongsourceContractId=contractE.getSourceContractId();// 根据当前合同id查询合同变更单信息ListChangeHeaderDOchangeHeaderDOS=changeHeaderRepository.selectByContractId(contractId);if(CollectionUtils.isEmpty(changeHeaderDOS)){// 变更单信息为空,则该合同做的是书面变更,根据当前合同的来源合同id查合同变更单信息ListChangeHeaderDOsourceChangeHeaderDOS=changeHeaderRepository.selectByContractId(sourceContractId);// 取最新的一条变更信息ChangeHeaderDOchangeHeaderDO=sourceChangeHeaderDOS.stream().sorted(Comparator.comparing(ChangeHeaderDO::getCreateTime).reversed()).findFirst().get();returnchangeHeaderDO;}// 取最新的一条数据ChangeHeaderDOchangeHeaderDO=changeHeaderDOS.stream().sorted(Comparator.comparing(ChangeHeaderDO::getCreateTime).reversed()).findFirst().get();returnchangeHeaderDO;}变更后合同页面展示的问题①1106231100001口头变更了一些合同基本信息(批准时间之类的),当口头变更批准后,你查看1106231100001合同时你看到的是1106231100001口头变更后的最新内容②1106231100002这个合同,做了一次书面变更,是否参考模板由是改成否,当书面变更批准后会生成1106231100001-1合同。此时你查看1106231100001合同时你发现书面变更的内容并没有在1106231100001合同上面体现,但是你查看1106231100001-1合同时书面变更的内容会在1106231100001-1合同上面体现②1106231100002-1这个合同,做了一次书面变更(新增一个合同行,并且把已有一个合同行数量由10改成23),当书面变更批准后会生成1106231100001-2合同。此时你查看1106231100001-1合同时你发现书面变更的内容并没有在1106231100001-1合同上面体现(1106231100001-1合同还是只有一个合同行而且旧的合同行数量还是10),但是你查看1106231100001-2合同时书面变更的内容会在1106231100001-1合同上面体现(1106231100001-2合同有两个合同行而且有一个合同行数量由10改成23)如何根据变更编号拿到变更后最新合同行信息?①业务场景一个合同有两个合同行,你期间做了七八次变更(有书面变更有口头变更),而且变更的时候也做了新增、删除、修改合同行的操作。假如有个合同行第一次变更合同行由A变为B,第二次变更合同行由B变为C,第二次变更后推下游系统时你不能推C你要推A的合同行id,要不然下游系统会以为你新增了一个合同行。也就是说:推下游系统(推SAP和华韵)时对于新增的合同行需要推当前合同行的id,对于变更的合同行推下游系统时需要推原来最初的合同行id,如何根据变更编号拿到变更后最新合同行信息?②基础知识补充:你做一次变更,假如你做了口头变更,即时你没有变更合同行,但是原合同的合同行会被复制一份并且原先合同行表里面的合同行数据会被删掉,新生成的合同行的id都是新的id。你对一个合同做了变更,你根据变更单号查询查询变更头表(hcbm_change_header)拿到这个变更单对应的合同id,然后你根据这个合同id拿到的合同行数据,这些合同行数据可能是新合同行的数据,这些数据不能同步给下游系统。要不然下游系统看到你同步过来的合同行id和上次的不一样以为你新增了一个合同行。如果某次变更新增了合同行,已知变更单号,如何拿到新生成的合同行id呢?根据变更单号查询查询变更头表拿到变更id,然后根据变更id查询hcbm_change_ctr_line表,根据hcbm_change_ctr_line表的snowId找hcbm_contract_line表的snow_id然后拿到对应的合同行数据如果某次变更,只变更了合同基本信息,没有改变合同行,已知变更单号,如何拿到变更后合同行id呢?根据变更单号查询查询变更头表拿到变更id,然后根据变更id查询hcbm_change_ctr_line表,根据hcbm_change_ctr_line表的initial_id就能拿到这个行它对应的一开始的合同行id此次变更有改变合同行的数量,已知变更单号,如何拿到合同行id呢?根据变更单号查询查询变更头表拿到变更id,然后根据变更id查询hcbm_change_ctr_line表,根据hcbm_change_ctr_line表的initial_id就能拿到这个行它对应的一开始的合同行id③解决方案SELECT(SELECThc.relate_contract_numberFROMhcbm_contract hcWHEREhc.id=hccl.contract_id)最初的合同号,CASEWHENhccl.action_code='INCREASE'THEN(SELECTidFROMhcbm_contract_line hclWHEREhcl.snow_id=hccl.snow_id)ELSEhccl.initial_idENDas '最初的合同行id'FROMhcbm_change_ctr_line hcclWHEREhccl.change_id=#{changeId}关于relate_contract_numberhcbm_contract表中一个有合同编号的合同的relate_contract_number不可能为空,他要是没有合同编号,那么relate_contract_number也为空A合同书面变更后成为A-1,A-1合同书面变更后变成A-2,A-2合同书面变更后变成A-3,那么A还有A-1还有A-2合同的relate_contract_number都是A你可以根据A去查看hcbm_fulfill_receive_transaction还有hcbm_erpsync_invoice_line表来看它的接收信息# 验证的sqlselectrelate_contract_number,contract_numberfromhcbm_contractwherecreation_date='2023-01-01'andrelate_contract_number!=contract_number关于source_contract_numberA合同复制成B ,那么B的source_contract_id指的就是AA合同变更成A-1 ,那么A-1的source_contract_id指的就是A一个合同的source_contract_id不为空,它只有两种情况:①原合同是A,现在的合同是B,B合同是复制生成的合同(creation_method_code=COPY)②原合同是A,现在的合同是A-1,也就是A-1合同是A合同书面变更生成的合同# 验证一个合同的source_contract_id不为空,它只有两种情况:①原合同是A,现在的合同是B,B合同是复制生成的合同(creation_method_code=COPY)②原合同是A,现在的合同是A-1,也就是A-1合同是A合同书面变更生成的合同SELECThc.contract_numberFROMhcbm_contract hcWHEREhc.creation_date='2023-01-01'andhc.source_contract_idisnotnullandhc.creation_method_code!='COPY'SELECThc.contract_number,hc.creation_method_code,hc2.contract_numberassourceContractNumberFROMhcbm_contract hcLEFTJOINhcbm_contract hc2onhc2.id=hc.source_contract_idWHEREhc.creation_date='2023-01-01'andhc.contract_numberisnotnullandhc2.contract_numberisnotnullandhc.contract_number!=hc2.contract_number/** * 合同新建的时候走新建同步sap;合同有变更单,那么该合同走变更同步sap(默认该合同已经走过新建同步sap了) * 随便给你一个contractDO,我如何判断contractDO是走新建同步sap还是变更同步sap呢? */ContractDOcontractDO;// 业务操作.true=新建同步sap, false=变更同步sapBooleanoperation;if(Objects.isNull(contractDO.getSourceContractId())||CreationMethod.COPY.value().equals(contractDO.getCreationMethodCode())){// A合同的sourceContractId为空。那么我们需要看A合同是否做过变更单,如果A没有做过变更单就走新建同步sap,如果A做过变更单就走变更同步sap// A合同的sourceContractId不为空,但是A合同是复制生成的合同(B合同复制成A,那么A的source_contract_id指的就是B)如果A是复制B合同生成的合同,我们需要看A合同是否有做过变更单,如果A没有做过变更单就走新建同步sap,如果A做过变更单就走变更同步sapListChangeHeaderDOchangeHeaderDOS=changeHeaderRepository.selectByContractId(contractId);ChangeHeaderDOchangeHeaderDO=Optional.ofNullable(changeHeaderDOS.stream().filter(header-"APPROVED".equals(header.getStatusCode())).sorted(Comparator.comparing(ChangeHeaderDO::getCreateTime).reversed()).findFirst()).get().orElse(null);if(Objects.isNull(changeHeaderDO)){// true=新建同步sapoperation=Boolean.TRUE;}else{// false=变更同步sapoperation=Boolean.FALSE;}}else{// A合同变更成A-1 那么A-1的source_contract_id指的就是A,且A的creationMethodCode不是COPY。// 一个合同的sourceContractId不为空且它不是复制生成的合同,这种情况一定是书面变更产生的。这种情况一定是走变更同步sap(我们根据A合同查找它有没有已批准的变更单,这一定能找的)operation=Boolean.FALSE;}后面取变更单的时候就是先根据合同id去取看看能不能取到变更单,如果取不到就根据sourceContractId来取publicChangeHeaderDOgetChangeHeaderByContractId(ContractEcontractE){// 合同idLongcontractId=contractE.getId();// 来源合同idLongsourceContractId=contractE.getSourceContractId();// 根据当前合同id查询已经批准的合同变更单信息ListChangeHeaderDOchangeHeaderDOS=changeHeaderRepository.selectApprovedContractByContractId(contractId);if(CollectionUtils.isEmpty(changeHeaderDOS)
RELATED

相关推荐

B端NPS实战:从量表设计到样本分析再到行动闭环

B端NPS实战:从量表设计到样本分析再到行动闭环

简介:《B端客户如何使用NPS衡量用户体验》是一份面向B端产品经理、用户研究、客户成功与体验管理从业者的PDF专题资料,核心目标是用NPS净推荐值体系评估客户体验并驱动持续营收。资料首先厘清NPS的定义,区分tNPS、战略NPS、触点NPS、关系NPS、…

📅 2026/9/18 13:15:20
VS Code Python 远程开发最佳实践:SSH、解释器与性能调优

VS Code Python 远程开发最佳实践:SSH、解释器与性能调优

在笔记本上跑一个中等规模的 Python 数据管道,风扇转到起飞、内存吃到 95%、跑到一半被系统杀掉进程——这是我决定把 vscode python 远程开发整套流程搬到一台常开开发机上的直接原因。两年多下来,我前后配过四五套远程环境:局域网里的物理机…

📅 2026/9/18 13:15:20
编译原理习题与实验通关指南:从词法分析到面试考点

编译原理习题与实验通关指南:从词法分析到面试考点

写这题的时候,很多人的第一反应是“编译原理这课真难”。从我个人的经历来说,这门课的习题做得好不好,往往比上课听没听懂更能决定考试分数。我当年在学校学完一遍,回头找工作面试又被问了一轮,再后来带新人做项目发现…

📅 2026/9/18 13:15:20
MORE NEWS

更多资讯

📰

编译原理文法习题精讲:句型、二义性与Chomsky分类易错点解析

先交代一个背景:我当年跟哈工大陈鄞老师的MOOC《编译原理》时,前两章刷得最痛苦。词法分析还能靠正则应付,到了“程序设计语言及其文法”这一章,满屏的终结符、非终结符、推导、句型、二义性,概念又密又碎,…

📰

DataHub 集成 Microsoft Fabric OneLake:fabric-onelake 元数据摄取连接器实战指南

DataHub 集成 Microsoft Fabric OneLake:fabric-onelake 元数据摄取连接器实战指南 【免费下载链接】datahub The Context Platform for your Data and AI Stack 项目地址: https://gitcode.com/GitHub_Trending/da/datahub 导读:本文围绕 DataHub…

📰

react-native-vision-camera 测试实战:把相机功能跑在真机上

react-native-vision-camera 测试实战:把相机功能跑在真机上 【免费下载链接】react-native-vision-camera 📸 A powerful, high-performance React Native Camera library. 项目地址: https://gitcode.com/GitHub_Trending/re/react-native-vision-ca…

📰

GridUnnormal 算子深度解析:CANN ops-cv 中 GridSample 链路的坐标反归一化实现与 GE 图模式调用

GridUnnormal 算子深度解析:CANN ops-cv 中 GridSample 链路的坐标反归一化实现与 GE 图模式调用 【免费下载链接】ops-cv 本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-cv …

📰

BlendFaceBgPartTwo 算子深度解析:基于 CANN ops-cv 的 Alpha 人脸背景融合实现与图模式调用

BlendFaceBgPartTwo 算子深度解析:基于 CANN ops-cv 的 Alpha 人脸背景融合实现与图模式调用 【免费下载链接】ops-cv 本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-cv 本…

📰

tsParticles Curl Noise 路径插件实战:用旋度噪声为粒子生成流体般丝滑运动

tsParticles Curl Noise 路径插件实战:用旋度噪声为粒子生成流体般丝滑运动 【免费下载链接】tsparticles tsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animate…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬