后端企业应用【免费下载链接】erpnextFree and Open Source Enterprise Resource Planning (ERP)项目地址https://gitcode.com/GitHub_Trending/er/erpnext点击查看免费下载导读本文基于 ERPNext 13.7.0 官方发布说明erpnext/change_log/v13/v13_7_0.md展开系统梳理该版本的 5 项功能增强与 60 余项修复并结合当前仓库源码如 quality_inspection_service.py、production_plan.py、stock_controller.py逐项解读底层实现原理。读完本文你将理解 13.7.0 中质量检验可配置化、印度 GST 引导设置、委外采购流程打通等核心能力的实际用法并能对照发布说明快速定位相关代码、完成版本评估与升级验证。一、版本概览13.7.0 发布的核心主题ERPNext 13.7.0 是 Frappe/ERPNext 13 版本线中的一个功能迭代版本核心主题集中在三方面质量检验流程的灵活化允许在特定条件下对被拒绝的质量检验仍执行单据提交把此前强制的拒绝即阻断改为可配置策略区域化印度能力的引导化新增 Bootstrapped GST Setup简化印度企业的税务初始化制造与估值链路的效率化打通生产计划 → 委外采购订单的自动化创建并对库存价值重估Repost Item Valuation代码做了优化。发布说明正文包含 5 项 Features Enhancements 与 65 项 Fixes覆盖会计、税务、库存、制造、人力资源、门户、电子发票等多个模块下文将逐组展开。二、功能增强Features Enhancements源码级解析2.1 允许被拒绝的质量检验在提交时放行Optionally allow rejected quality inspection on submission此前 ERPNext 的默认行为是若行项目关联的质量检验Quality Inspection状态为Rejected则在单据提交Submit时直接抛错阻断。13.7.0 将该行为改为可由管理员配置的策略。源码实现位于 erpnext/stock/services/quality_inspection_service.pydef validate_qi_rejection(self, row): Check if QI is rejected on row level, during submission action frappe.get_single_value(Stock Settings, action_if_quality_inspection_is_rejected) qa_status frappe.db.get_value(Quality Inspection, row.quality_inspection, status) if qa_status Rejected: link frappe.utils.get_link_to_form(Quality Inspection, row.quality_inspection) msg _(Row #{0}: Quality Inspection {1} was rejected for item {2}).format( row.idx, link, row.item_code ) if action Stop: frappe.throw(msg, title_(Inspection Rejected), excQualityInspectionRejectedError) else: frappe.msgprint(msg, alertTrue, indicatororange)关键机制说明配置项Stock Settings库存设置中的action_if_quality_inspection_is_rejected字段取值类型定义在 erpnext/stock/doctype/stock_settings/stock_settings.pyDF.Literal[Stop, Warn]即只有Stop阻止提交与Warn仅警告两种模式执行时机仅在单据docstatus 1提交中且行项目存在质量检验引用时触发见 quality_inspection_service.py行为差异Stop时抛出QualityInspectionRejectedError并阻断提交Warn时仅以橙色提示气泡indicatororange告知用户检验被拒绝提交照常进行。配套的测试用例覆盖了两种策略见 erpnext/stock/doctype/quality_inspection/test_quality_inspection.py通过frappe.db.set_single_value(Stock Settings, action_if_quality_inspection_is_rejected, Stop/Warn)切换行为并断言提交结果。此外job_card.py 中工单Job Card也同时引用未提交检验与检验被拒绝两项设置说明该策略同样作用于制造环节。2.2 Bootstrapped GST Setup for India印度 GST 引导式设置Bootstrapped GST Setup for India13.7.0 针对印度本地化场景新增了引导式 GST 设置用于在创建公司后一键完成 GST 相关基础配置包括 GST 税种、GST 账户、州代码等。在 v13 时代GST 相关配置集中在GST SettingsGST 设置DocType 中——这一点可从 v14 清理印度本地化的补丁脚本得到旁证remove_india_localisation.py 中明确引用了待移除的GST Settings清单。该功能的实践价值在于印度企业启用 ERPNext 后无需手工逐一创建 GST 税率与科目只需在初始化向导中确认即可得到一套可用的 GST 配置骨架后续再结合 GSTR-1 相关报表 完成申报流程。同一版本还配套修复了GSTR-1 JSON 无法下载的问题见下文修复清单说明 13.7.0 对印度税务申报链路做了整体打磨。2.3 从供应商组 / 客户组获取详情Fetching details from supplier/customer groups此前采购订单、销售订单等单据主要从供应商主数据 / 客户主数据直接读取默认设置13.7.0 增加了对Supplier Group / Customer Group供应商组 / 客户组层级的详情回填支持。这使分组化的默认值管理成为可能企业可为同一供应商组统一维护默认付款条款、默认价目表等减少逐条维护成本。相关实现可在 erpnext/buying、erpnext/selling 模块的对应控制器中结合supplier_group/customer_group字段联动查阅。2.4 从生产计划一键生成委外采购订单Provision to make subcontracted purchase order from the production plan这是 13.7.0 制造模块的重要增强在生产计划Production Plan中对于需要委外加工的物料可以直接生成委外采购订单Subcontracted Purchase Order无需再手工跳转到采购模块重复录入。源码支撑位于 erpnext/manufacturing/doctype/production_plan/production_plan.pydef make_subcontracted_purchase_order(self, subcontracted_po, purchase_orders): return WorkOrderCreationService(self).make_subcontracted_purchase_order( subcontracted_po, purchase_orders )相关配套方法还包括make_work_order_for_subassembly_items为子装配件生成工单并联动委外 POproduction_plan.pyvalidate_mr_subcontracted校验物料需求单的委外属性production_plan.pyset_default_supplier_for_subcontracting_order自动为委外订单设置默认供应商production_plan.py。同时include_subcontracted_items字段production_plan.py控制生产计划是否纳入委外物料。整套能力依托 ERPNext 的Subcontracting 模块见 erpnext/subcontracting其中 Job Card 也已通过is_subcontracted字段区分委外与自制流程job_card.py。2.5 库存价值重估Repost Item Valuation代码优化Optimized code for reposting item valuation库存价值重估是 ERPNext 处理历史单据导致库存估值漂移的核心机制。13.7.0 对该流程做了代码级优化降低重估排队与执行的资源消耗。仓库中的关键入口erpnext/controllers/stock_controller.py 的create_repost_item_valuation_entry(args)由凭证voucher创建重估记录覆盖所有 item-warehouse 组合见同文件 L921 注释 Using a voucher create repost item valuation records for all item-warehouse pairs.erpnext/hooks.py 中注册了repost_item_valuation的调度任务repost_entries、run_parallel_reposting支持并行重估与后台队列执行erpnext/stock/doctype/repost_item_valuation 是核心 DocType维护重估队列状态。13.7.0 的优化与此前 v13 的多个补丁如 enable_scheduler_job_for_item_reposting.py、item_reposting_for_incorrect_sl_and_gl.py一脉相承共同保证历史库存/总账修正任务可被调度器稳定执行。该版本还同步修复了重估未来 SLE 时未包含库存盘点逻辑的问题Include Stock Reco logic in update_qty_in_future_sle使重估结果与库存盘点口径一致。三、修复清单分组解读Fixes13.7.0 的修复覆盖财务、库存、制造、HR、门户与集成六大方向以下按业务域分组梳理帮助读者快速判断升级收益。3.1 会计与税务Accounts Taxation多公司场景下自动处理递延会计Auto process deferred accounting for multi-company setup——修复多公司环境执行递延会计Deferred Accounting时的进程冲突保证各公司互不干扰电子发票e-Invoicing修复Omit item discount amount for e-invoicing电子发票输出中省略行项目折扣金额符合印度 GST 电子发票规范fix(e-invoicing): allow export invoice even if no taxes applied无税额的出口发票也可生成电子发票避免出口业务被阻断Unable to download GSTR-1 json修复 GSTR-1 JSON 申报文件下载失败TDS 计算汇总TDS computation summary shows cancelled invoices——TDS 汇总不再计入已取消发票付款分录Payment EntryUnallocated amount in Payment Entry after taxes——修复计税后未分配金额计算错误预算差异图Budget Variance Graph从全黑配色恢复为系统默认配色合并财务报表Remove cancelled entries in consolidated financial statements——合并报表剔除已取消凭证科目表COAError popup for COA errors——科目表错误以友好弹窗呈现而非生硬报错同时修复并行创建印度公司时的并发错误税则Tax RuleTo fetch the correct field in Tax Rule——修正税则字段取值多币种Multi-currency issue——修复多币种场景下的汇率/余额错误银行对账单导入Bank statement import——修复对账单导入链路问题应收/应付仪表盘Do not consider cancelled entries in party dashboard——往来单位仪表盘排除已取消分录。3.2 库存与重估Stock Valuation库存盘点Stock ReconciliationValidation check for batch for stock reconciliation type in stock entry库存盘点类型单据中新增批次校验Incorrect valuation rate in stock reconciliation修复盘点估值率错误Fetch batch items in stock reconciliation盘点时正确回填批次物料Include Stock Reco logic in update_qty_in_future_sle重估未来库存台账时纳入盘点逻辑估值与台账Removed values out of sync validation from stock transactions——移除库存事务中数值不同步的过度校验Optimized code for reposting item valuation亦在此域库存设置Putaway RuleStock entry with putaway rule not working——修复上架规则Putaway Rule在入库单中不生效批次变更跟踪Track changes on batch——批次字段变更可被跟踪审计内部调拨Precision rate for packed items in internal transfers——修复内部调拨打包物料精度。3.3 制造与 BOMManufacturing BOM多级 BOM 工单操作顺序Order and time of operations in multilevel BOM work order——修复多级 BOM 中工序顺序与时间草稿 BOM 更新成本Update cost not working in the draft BOM——修复草稿 BOM 更新成本无效变体 BOM 与 BOM 报表Incorrect bom no added for non-variant items on variant boms、BOM stock report not working工单 / 作业卡WIP needs to be set before submit on skip_transfer——skip_transfer场景下提交前正确设置在制品Allow to make job card without employee——允许无员工创建作业卡完工入库FG item not fetched in manufacture entry——修复生产入库单未回填成品物料。3.4 人力资源与工资HR Payroll工资单Payroll Entry员工获取Fetching employee in payroll entry与Employee selection not working in payroll entry——修复工资单中员工列表/取值问题Payroll-entry minor fix为配套小修员工在职状态影响Employee Inactive status implications——修复员工停用状态对相关单据的联动影响预约Appointment权限与提示Added permission for employee to book appointment、Added a message to enable appointment booking if disabled——员工预约权限与未启用时的提示引导。3.5 门户与界面Portal UI物料组门户翻页Paging buttons not working on item group portal page与Item group portal issues (backport)——修复门户翻页按钮失效并回移植入项目门户增强Project Portal Enhancements——项目门户多项体验优化LMS 进度LMS progress issue——修复学习管理系统进度记录利润分析报表宽度Changed profitability analysis report widthPOS销售点fix(pos): taxes amount in pos item cart、Value fetching for custom field in POS、POS item cart dom updates——修复购物车税额、自定义字段取值与 DOM 更新问题商品门户排序Order Items by weightage in the web items query——门户商品按权重排序。3.6 其他修复潜在客户手机号丢失When lead is created with mobile_no, mobile_no value gets lost——创建潜在客户时手机号字段丢失折扣摊销Incorrect discount amount on amended document——修正单折扣金额错误还款计划Blanket Order允许提交后修改 To Date培训事件Training EventQuery for Training Event与Set query for training events——修复培训事件查询与下拉过滤Dunning催收dunning calculation of grand total when rate of interest is 0%——利率为 0% 时催收总额计算贷款担保Loan Security Pledge取消修复质押品取消流程库存单据附加成本相关补丁 fix_additional_cost_in_mfg_stock_entry.py 佐证制造入库附加成本与重估的联动缩写重命名任务队列Move the rename abbreviation job to long queue——将耗时重命名任务转入长队列避免阻塞主队列质量检验未提交阻断for_qty校验补强Add validation for for_qty else throws errors仅当存在科目时迭代Iteration through accounts only when accounts exist——避免空科目迭代报错。四、版本升级与验证建议对于计划从 13.x 早期版本升级到 13.7.0 的团队建议按以下顺序验证质量检验策略升级后在Stock Settings中确认action_if_quality_inspection_is_rejected取值Stop/Warn并参照 test_quality_inspection.py 在测试环境跑一遍被拒检验 提交单据的正反用例印度 GST印度公司重建/刷新 GST 设置向导确认 GST 税种与账户自动生成并验证 GSTR-1 JSON 下载委外流程在 Production Plan 中对含委外物料的需求执行生成委外采购订单观察默认供应商回填与子装配工单联动入口见 production_plan.py库存重估创建一张历史单据修正场景确认repost_item_valuation调度任务正常入队调度注册见 hooks.py并核对重估后的 SLE/GL 与盘点口径一致回归重点电子发票、TDS 汇总、合并财务报表、POS 税额、批次/盘点相关用例。由于 ERPNext 各版本之间存在数据迁移补丁升级前请务必备份数据库与站点文件并严格遵循官方升级流程执行bench migrate。五、总结ERPNext 13.7.0 是一份流程灵活化 区域化引导 稳定性修复并重的版本质量检验从一刀切阻断演进为可配置策略印度 GST 初始化走向引导式委外采购在制造链路中实现端到端打通同时以 60 余项修复覆盖了从税务申报、合并报表到库存重估、门户体验的方方面面。结合 v13 系列变更日志 与本仓库源码开发者可以精确评估升级影响面并在 erpnext/accounts、erpnext/stock、erpnext/manufacturing、erpnext/regional 等模块中持续跟进后续演进。赞分享后端企业应用【免费下载链接】erpnextFree and Open Source Enterprise Resource Planning (ERP)项目地址https://gitcode.com/GitHub_Trending/er/erpnext点击查看免费下载相关推荐ERPNext v13.4.0 版本发布说明功能增强与关键修复全解析ERPNext v13.4.0 版本发布说明功能增强与关键修复全解析 导读 ERPNext 是一个免费开源的企业资源计划ERP系统v13.4.0 是 F后端企业应用Vitess v20.0.1 发布说明深度解读21 个补丁的修复全景与源码印证Vitess v20.0.1 发布说明深度解读21 个补丁的修复全景与源码印证 Vitess v20.0.1 是 20.0 主线上的首个补丁版本patch数据库分布式数据库云原生后端数据存储OpenProject 12.3.1 发布说明详解20 项 Bug 修复逐条解读与源码印证OpenProject 12.3.1 发布说明详解20 项 Bug 修复逐条解读与源码印证 本文解析 OpenProject 12.3.1 补丁版本2022后端前端项目管理企业应用协同办公上一篇Rampart开发者指南如何自定义脱敏策略和扩展检测标签下一篇KeyDB中的数据持久化rdb.cpp实现分析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考