简介:这份SAGE-ERP采购模块操作手册面向企业采购、财务及ERP实施人员,系统梳理了从基础数据维护到采购退货的完整业务链路,帮助使用者快速掌握系统操作要点、规范日常采购流程。内容覆盖产品浓度管理设置、供应商信息建档、供应商报价审核、折百与不折百两类采购订单的新建、采购收货及供应商退货等关键环节,尤其对折百订单中含量录入、收货成本因子与浓度换算等易错点做了细致说明,便于读者对照实际业务场景理解系统逻辑。资源包内含1个doc文档,约220KB,结构紧凑、查阅方便,适合作为岗位培训或日常操作的速查参考。目前已有209人学习下载,可供采购与ERP相关人员借鉴使用。
1. 浓度管理下的采购逻辑:为什么你的订单数量总对不上
很多刚接触 SAGE-ERP 采购模块的人,第一次做折百订单时都会愣住:明明请购单上写的是 100KG,怎么到了收货环节数量变成了 250KG?这不是系统算错了,而是浓度管理在起作用。SAGE-ERP 的采购模块把产品分成了两类——需要浓度管理的和不需要的,前者走“折百”逻辑,后者走“不折百”逻辑。折百的意思是,订单上填的数量是净含量(折百后),但供应商实际发来的货是毛数量(折百前),两者之间靠浓度换算。如果你没搞清这个底层逻辑,后面供应商报价、采购订单、收货、退货四个环节会连环翻车。这份操作手册覆盖的就是从基础数据维护到退货的完整链路,适合正在用 SAGE-ERP 做采购执行的人,尤其是涉及化工、食品、医药这类有浓度或含量概念的行业。下面我按实际操作的顺序,把每个环节的参数含义和容易踩的坑拆开讲。
2. 基础数据与供应商建档:浓度管理和供应商类型的参数怎么设
2.1 产品控制页签里的浓度管理开关
采购模块能不能跑通,第一步不在采购本身,而在基础数据。进入基础数据 > 产品,找到控制页签,这里有两个关键设置。第一个是“存货管理”下拉框,选择“浓度管理”。注意,不是所有有浓度的产品都要开这个开关。手册里写得很清楚:只有 BOM 和计划面向净含量的产品才需要设为“浓度管理”。什么意思?如果你的产品在 BOM 里是按净含量来领料的,或者计划部门是按净含量来排产的,那这个开关必须开。反过来,如果只是采购时记录一下浓度、但后续生产不按净含量算,开了反而会让库存和成本核算变复杂。
第二个设置在同页签的“其他”区域,填“浓度百分比”。这个值是标准浓度,后续采购订单和收货时的默认浓度都从这里带出来。常见做法是填理论值或合同约定的标准值,比如 40%。实际收货时如果浓度有偏差,在收货单上改就行,不会影响这里的基础设置。
提示:浓度管理开关一旦开了,后续该产品的采购订单就必须录入含量,否则系统不让保存。如果只是临时采购一批有浓度的物料、但不想走折百逻辑,建议不要开这个开关,直接当普通产品处理。
2.2 供应商建档的字段填写顺序
供应商建档在基础数据 > 商业伙伴 > 供应商。右键选择“新建”,然后按页签逐个填。我把每个页签的必填项和容易漏的地方列一下:
| 页签 | 关键字段 | 说明 |
|---|---|---|
| 标识 | 简称、供应商名称 | 简称用于后续单据快速检索,建议用字母缩写 |
| 客户地址 | 地址、电话、传真 | 地址影响收货地点默认值 |
| 分类 | 到期日基础 | 决定报价有效期的计算基准 |
| 报表控制 | 供应商类型、信用控制、省份、采购类型 | 类型选“正常”或“潜在”,信用控制一般选“不检查” |
| 财务 | 付款条件、税则 | 付款条件影响后续发票和付款计划 |
| 追踪 | 提前期 | 影响订单预计到货日 |
| 银行 | 开户行、账号 | 付款时用 |
| 联系人 | 名称 | 必填,其他可选 |
填完点“新建”,系统生成供应商编码。后期修改点“保存”即可。这里有个血泪经验:供应商类型如果选了“潜在”,后续做采购订单时可能选不到这个供应商。所以如果已经确定要合作,直接选“正常”。
2.3 供应商报价的有效时间段和数量区间
报价在采购 > 价格 > 供应商报价。操作步骤不复杂,但有几个参数直接影响后续订单能不能带出价格。
第一步,确认有效时间段。格式是 yy-mm-dd——yy-mm-dd。这个时间段必须覆盖你后续做订单的日期,否则订单上带不出报价。
第二步,双击产品栏空格,右键选择产品。这里有个细节:手册里特别提到“需要报价栏能跟请购单相连接”。意思是,如果你的请购单转采购订单时想自动带出报价,报价单里的产品必须和请购单里的产品一致,而且报价在有效期内。
第三步,右击供应商空格选供应商。第四步,填最小数量和最大数量。这两个字段最好填,因为后续订单数量如果不在这个区间内,系统可能不认这个报价。第五步填单价。第六步点“新建”,第七步“审核”。审核后的报价才能被订单引用。
-- 查询某供应商在有效期内的报价,用于排查订单为何带不出价格 SELECT q.supplier_id, q.product_id, q.min_qty, q.max_qty, q.unit_price, q.valid_from, q.valid_to FROM supplier_quotation q WHERE q.supplier_id = 'SUP001' AND q.product_id = 'P1001' AND q.status = 'APPROVED' AND GETDATE() BETWEEN q.valid_from AND q.valid_to;上面这段 SQL 是排查报价问题的常用手段。如果查出来有记录但订单还是带不出价格,检查报价单是否已审核、产品是否和订单一致、数量是否在最小和最大之间。参数说明:status = 'APPROVED'表示已审核,GETDATE()是当前日期,BETWEEN确保在有效期内。
3. 采购订单的折百与不折百:数量、含量、价格三者的换算关系
3.1 折百订单的字段逻辑
新建采购订单在采购 > 订单 > 订单。点“新建”后,先选供应商,再选产品。这里最关键的是“折百标志”这个字段。选“是”就是折百订单,选“否”就是不折百订单。两种订单的字段填写逻辑完全不同,我分开说。
折百订单:产品数量填净数量(折百后数量),含量必须录入,折百标志选“是”。这时候“供应商数量”自动等于“订单数量”,价格填净数量价格。举个例子,你要采购 100KG 净含量的某产品,浓度 40%,折百标志选“是”,订单数量填 100,含量填 40,供应商数量也是 100,单价填净数量单价。供应商实际发来的货是 250KG 毛数量,但订单上体现的是 100KG 净数量。
3.2 不折百订单的字段逻辑
不折百订单:产品数量同样填净数量(折百后数量),含量必须录入,折百标志选“否”。这时候“供应商数量”会根据“订单数量”和含量自动转换成毛数量。价格填毛数量价格。还是上面的例子,订单数量填 100,含量填 40,折百标志选“否”,系统算出供应商数量是 250,单价填毛数量单价。
这里有个容易搞混的地方:两种订单的“产品数量”都是净数量,区别在于“供应商数量”和“价格”的基准不同。折百订单的供应商数量等于订单数量,价格是净数量价格;不折百订单的供应商数量是毛数量,价格是毛数量价格。如果你把不折百订单的单价填成了净数量价格,成本会算错。
# 折百与不折百的数量换算逻辑 def calculate_supplier_qty(order_qty, concentration, is_discounted): """ order_qty: 订单数量(净数量) concentration: 含量百分比,如 40 表示 40% is_discounted: 折百标志,True 为折百,False 为不折百 """ if is_discounted: # 折百订单:供应商数量 = 订单数量 supplier_qty = order_qty price_basis = "净数量价格" else: # 不折百订单:供应商数量 = 订单数量 / (含量/100) supplier_qty = order_qty / (concentration / 100) price_basis = "毛数量价格" return supplier_qty, price_basis # 示例:订单 100KG,浓度 40% qty, basis = calculate_supplier_qty(100, 40, False) print(f"供应商数量: {qty}KG, 价格基准: {basis}") # 输出: 供应商数量: 250.0KG, 价格基准: 毛数量价格这段代码把两种订单的换算逻辑写清楚了。参数说明:order_qty是订单上填的产品数量,concentration是含量,is_discounted控制走哪个分支。实际业务中,折百订单的供应商数量就是订单数量,不折百订单的供应商数量是订单数量除以浓度百分比。填完订单后点“新建”,然后走两个审核:审核和终审。两个审核都过了,订单才能进入收货环节。
注意:订单上的含量字段必须录入,不管是折百还是不折百。如果含量为空,系统不会让你保存。含量值一般从产品基础数据的浓度百分比带出来,但可以手动改。
4. 收货与退货的浓度换算:成本因子和库存选择的实操细节
4.1 折百订单收货的成本因子录入
收货在采购 > 收货 > 收货。输入收货地点和供应商,点左边的订单选择,选中要收货的订单。折百订单收货时,采购收货单上的数量填毛数量(折百前数量),收货成本因子必须录入,而且收货成本因子要和浓度一致。
手册里的例子:收货折百前数量 50KG,浓度 40%。录入结束时,系统会要求录入浓度,默认值根据收货成本因子计算得出。这里逻辑是这样的:收货成本因子填 40,系统知道这批货的浓度是 40%,然后根据毛数量 50KG 算出净数量 20KG。如果你成本因子填错了,比如填了 1,系统会认为浓度是 1%,净数量变成 0.5KG,库存和成本全乱。
4.2 非折百订单收货的默认值
非折百订单收货时,采购收货单上的数量同样是毛数量(折百前数量),但收货成本因子固定为“1”,收货浓度默认为订单上的标准浓度。你可以根据实际收货浓度修改。比如订单标准浓度是 40%,实际到货检测出来是 38%,就把收货浓度改成 38。系统会根据毛数量和实际浓度重新算净数量。
-- 查询收货单的浓度和成本因子,用于核对库存差异 SELECT r.receipt_id, r.order_id, r.product_id, r.gross_qty, -- 毛数量 r.concentration, -- 收货浓度 r.cost_factor, -- 收货成本因子 r.gross_qty * r.concentration / 100 AS net_qty -- 净数量 FROM purchase_receipt r WHERE r.order_id = 'PO20250101';这段 SQL 用来核对收货单上的毛数量、浓度、成本因子和净数量之间的关系。参数说明:gross_qty是毛数量,concentration是收货浓度,cost_factor是成本因子,net_qty是算出来的净数量。如果发现库存数量和这个对不上,先查这张表。
4.3 退货时的库存选择和数量逻辑
退货在采购 > 退货 > 供应商退货。输入退货地点、采购员、产品及数量。做退货时,数量填毛数量(折百前数量),浓度根据选择的库存决定。注意退货时不选择收货单,做无收货来源退货。
手册里的例子:退货 20KG,浓度 40%。下图为库存选择界面。这里的关键是库存选择——你要退的货是从哪个批次来的,就选哪个批次。如果选错了批次,浓度可能不对,退货成本也会错。常见做法是先在库存查询里找到对应批次的库存,记下批次号和浓度,再回到退货单里选。
提示:退货时不关联收货单,意味着退货成本不追溯原收货单的成本。如果财务要求退货成本必须和原收货成本一致,需要在退货单上手动调整浓度和数量,确保算出来的净数量和原收货净数量匹配。
5. 采购模块的避坑与排查:五个真实翻车场景
5.1 订单保存时报“含量不能为空”
现象:新建采购订单,填完产品和数量后点保存,系统提示含量不能为空。 原因:产品在基础数据里开了“浓度管理”,但订单上的含量字段没有自动带出来。常见于产品控制页签的“浓度百分比”没填,或者填了但订单模板没有映射这个字段。 解决:先检查基础数据 > 产品 > 控制页签的“浓度百分比”是否已填。如果已填但订单还是不带,手动在订单上录入含量。如果手动也录不进去,检查订单模板的字段权限。
5.2 收货后库存数量比预期少很多
现象:折百订单收货,毛数量 50KG,浓度 40%,但收货后库存显示只有 0.5KG。 原因:收货成本因子填成了 1,而不是 40。系统按 1% 的浓度算净数量,50KG 毛数量只算出 0.5KG 净数量。 解决:冲销这张收货单,重新收货,成本因子填 40。如果已经做了后续单据,需要先冲销后续单据再冲收货。
5.3 供应商报价带不进采购订单
现象:明明录了供应商报价,也审核了,但做采购订单时价格栏是空的。 原因:报价的有效时间段没覆盖订单日期,或者报价单里的产品/供应商和订单不一致,或者报价单没审核。 解决:按第 2 章里的 SQL 查一下报价单的状态和有效期。如果有效期过了,重新做一张报价单;如果产品不一致,检查报价单里的产品编码和订单里的产品编码是否完全一致。
5.4 退货时选不到库存批次
现象:做供应商退货,点库存选择,界面里没有可选的批次。 原因:退货地点选错了,或者该产品在该地点没有库存,或者库存已经被其他单据锁定了。 解决:先确认退货地点和库存地点一致。然后在库存查询里看该产品在该地点有没有可用库存。如果有库存但退货单里选不到,检查库存是否被其他未审核单据占用。
5.5 折百订单和不折百订单的单价填反
现象:财务对账时发现采购成本比合同价高了一倍多。 原因:不折百订单的单价填成了净数量价格,但系统按毛数量价格去算,导致总价翻倍。或者折百订单的单价填成了毛数量价格,导致总价偏低。 解决:核对订单上的折百标志和单价基准。折百订单的单价是净数量价格,不折百订单的单价是毛数量价格。如果已经收货,需要调整收货成本或做贷项通知单。
6. 浓度换算的验证技巧:用一张对账表把采购全链路串起来
采购模块跑了一段时间后,最容易出问题的不是单个环节,而是环节之间的数据对不上。我一般会做一张对账表,把请购单、采购订单、收货单、退货单和库存流水串起来,按产品+批次+浓度维度核对净数量。具体做法是:先从采购订单里取出订单数量(净数量)和含量,再从收货单里取出毛数量和收货浓度,算出收货净数量,然后和库存流水里的净数量变动对比。如果三者不一致,就按下面的顺序排查。
| 核对项 | 数据来源 | 常见偏差原因 |
|---|---|---|
| 订单净数量 | 采购订单 | 含量录入错误 |
| 收货净数量 | 收货单毛数量 × 收货浓度 | 成本因子填错 |
| 库存净数量 | 库存流水 | 退货未关联原收货单 |
| 退货净数量 | 退货单毛数量 × 退货浓度 | 库存批次选错 |
# 采购全链路净数量对账脚本 def reconcile_purchase(order_qty, order_conc, receipt_gross, receipt_conc, return_gross, return_conc): """ 对账逻辑:订单净数量 vs 收货净数量 vs 退货净数量 """ order_net = order_qty # 订单数量本身就是净数量 receipt_net = receipt_gross * receipt_conc / 100 return_net = return_gross * return_conc / 100 final_net = receipt_net - return_net print(f"订单净数量: {order_net}KG") print(f"收货净数量: {receipt_net}KG") print(f"退货净数量: {return_net}KG") print(f"最终库存净数量: {final_net}KG") if abs(order_net - final_net) > 0.01: print("警告:订单净数量和最终库存净数量不一致,请检查浓度和成本因子") else: print("对账通过") # 示例:订单 100KG 净数量,收货 250KG 毛数量浓度 40%,退货 50KG 毛数量浓度 40% reconcile_purchase(100, 40, 250, 40, 50, 40)这段脚本的输出会告诉你每个环节的净数量,以及最终库存净数量和订单净数量是否一致。参数说明:order_qty是订单上的产品数量,order_conc是订单含量,receipt_gross是收货毛数量,receipt_conc是收货浓度,return_gross是退货毛数量,return_conc是退货浓度。如果对账不通过,按表格里的核对项逐个查。
从那以后我每次做完收货和退货,都会强制走一遍这个对账脚本,确认订单净数量、收货净数量、退货净数量和库存净数量四者一致,才继续做后续的发票和付款。这个习惯帮我拦住了好几次成本因子填错和退货批次选错的问题。希望帮到你。
本文还有配套的精品资源,点击获取