背景:
用数据流组件实现凭证冲销
每月初,选择上月【凭证类型】=【暂估】&【冲销状态】=【未冲销】的凭证,生成借贷反向的冲销凭证,记录和原凭证的关联关系,更新原凭证的冲销状态,新凭证的【凭证类型】=【暂估冲销】
核心组件:数据流3.0(逻辑实现)、DeepModel(数据存储 )、UX(页面展示)
DEMO 地址:
用于存储凭证头行数据。

用于展示凭证清单、凭证明细。
在开始节点配置启动参数{"calendar":"202603"},用于指定当前期间,后续需要用此参数找上月需冲销凭证、生成本月凭证
无需定时触发,只要手动触发即可
根据启动参数的calendar得到上月:
当月是202601,上月是202512
当月是202612,上月是202611
可借助AI代码助手编写,或自行AI对应的python写法,参考代码如下:
import pandas as pd
from datetime import datetime
from dateutil.relativedelta import relativedelta
def get_previous_month(calendar_str: str) -> str:
"""
根据YYYYMM格式的年月获取上个月的YYYYMM格式
Args:
calendar_str: YYYYMM格式的年月字符串
Returns:
YYYYMM格式的上个月年月字符串
"""
# 解析字符串为日期对象(设置为该月的第一天)
current_date = datetime.strptime(calendar_str, "%Y%m")
# 计算上个月
previous_date = current_date - relativedelta(months=1)
# 格式化为YYYYMM
return previous_date.strftime("%Y%m")
def main():
# 从Pipeline.params获取calendar参数
calendar_str = Pipeline.params.get("calendar")
if not calendar_str:
raise ValueError("未找到calendar参数")
# 获取上个月
previous_month = get_previous_month(calendar_str)
return previous_month
# 调用主函数
result = main()
result

凭证头:

凭证行:同理,过滤条件可以点到头上的字段

以需冲销的凭证行为数据源。
用重命名实现借贷反向:

用左连接拼接头,得到大宽表:

记录和原凭证的关联关系:用列计算实现source_journal=journal_id
其他字段更新:用列计算实现journal_type='temp_reverse',journal_name='收入暂估冲销',calendar=Pipeline.params.calendar(在SQL中用预置变量需要先定义参数)

以上一步生成的凭证行为数据源,按journal_id去重,只保留凭证头需要的字段即可:



查找到新的头主键,丢弃旧的主键。

建议开启同一事务控制

按默认的同名匹配即可:

journal_entry一定要替换为新的!不然就插到旧的需冲销凭证里去了!


自定义一个执行后返回的响应内容,例如:

用于发起前序配置的数据流,同步执行后返回响应,再查询数据源以查看新生成的冲销凭证。

测试数据请自行点新增按钮,新造一条凭证。

回到顶部
咨询热线
