Wholety 使用手册
官网

第8章 销售场景

销售是把货卖出去的全过程:建商户 → 开订单(冻结库存)→ 审批 → 出库 → 结算 →(可选)退货。

入口:左侧菜单 销售(销售看板 / 销售订单管理 / 销售结算 / 商户管理 / 商户类别 / 退货单查看)。


8.1 建立商户档案与商户类别

  1. 销售 → 商户类别 → 新增商户类别;行内:管理商户(弹窗勾选分配,支持搜索/全选/清空)/ 编辑 / 删除。
  2. 销售 → 商户管理 → 新增商户,填写名称、联系人和账单信息。
  3. 商户行内操作:
    • 编辑:改基础信息;可用联系人信息填充账单信息(一键复制,少敲一遍)。
    • 地址管理:维护该商户的多个收货地址及各地址的地区(税区),支持新增 / 编辑 / 删除;商户在门户下单时从这里选址。
    • SKU 映射:维护「我方 SKU ↔ 商户货号」对应关系,对账/发货单据对得上。

新计价的应税商品行采用订单所选**收货地址的地区(税区)**税率(见 2.11)。开单计价前应核对地址及其地区。

商户列表的「未收应收」和「超收余额」会即时查询当前页商户的完整销售订单与收款流水,不沿用联系人缓存。范围为未隐藏的已下单至已核算订单(状态 3–6);草稿及未确认订单不计入。每单正余额累加为未收应收,超收单独显示,不抵掉其他订单欠款。销售应收含已记录税额,收款计入已生效的正负流水,未来日期暂不抵扣。点击「刷新余额」可重新查询,页面注明多伦多业务计算时间。缺少财务事实或查询失败显示 —,无金额权限显示 *,真实零额显示 $0.00。信用额度是商户配置资料,不能据此认为系统已自动批准授信。

地址权限与完整 SKU 对照表

商户地址和货号映射遵循主账户隔离与子账户的商户可见范围。读取、添加、编辑和删除均先检查商户权限;已隐藏商户的地址不会继续出现在查询中。批量地址查询会为可见但没有地址的商户返回明确的空列表,未返回的商户及查询失败仍视为未知,导入预览重试时会重新查询。

SKU 映射窗口完整加载全部已保存映射,并显示已有的我方 SKU 编码;表格每页可显示 20、50 或 100 条。修改货号、移除行与新增行均先留在草稿中,点击保存才统一生效,保存包含所有分页。每个完整行必须填写商户货号及有效我方 SKU,同一商户的货号不能重复(不区分大小写)。历史映射的 SKU 缺失或已隐藏时,应改选有效 SKU 或移除该行。清空已有映射须确认。

多人编辑同一对照表时,保存会检查加载版本;版本冲突保留当前草稿并提示重新加载。先记录想保留的修改,再重载最新表并重新编辑保存。切换商户不会沿用上一个商户的行或请求结果。详见伙伴货号映射指南。


8.2 创建销售订单

  1. 销售 → 销售订单管理 → 创建订单(基础信息 / 选品 / 提审)。
  2. 选商户与收货地址(地址不够时可就地新增地址),添加 SKU,逐行填售价 / 折扣价。
  3. 系统按所选收货地址的地区税率及 SKU 的应税标记计算行税额。
  4. 保存为草稿(状态「申请 0」)。

新建销售订单

保存所选库存会形成占用:选择仓库库存批次后,商品保存成功会创建本单库存占用,减少可用量(见 2.6);审批与确认下单不会重复占用同一数量。实物库存到仓库出库时才减少。 售价/折扣支持按商户维度设置(不同商户可有不同价),在商品管理的价格/折扣抽屉里按商户维护(见 6.4)。开单取价规则:系统按商户的客户等级自动取价——商户可见自身等级及以下的全部价格档位,且专属价与通用价混合比较、取最低价成交(见 6.4「客户等级与取价规则」)。

订单列表页的常用操作:

订单表格按当前页查询,总条数表示全部匹配订单。修改筛选会清除上一范围的行;快速连续查询只接受最新结果,查询失败请调整条件或刷新重试。无效系统单号不会被忽略成全量查询;系统单号只接受正整数,可带 # 前缀。查看其他订单详情或进入出入库选单不会扩大当前分页范围。导出仍包含全部匹配订单。

系统单号筛选非空但无效时,导出会要求先纠正或清空,不会忽略单号后导出全部订单。导出覆盖全部匹配分页,保留系统单号、已保存的导入来源映射编号、客户、状态、业务时间、商品金额、折扣、已保存的应收总额、单独记录的税额与备注,并在 Export 表记录筛选范围。金额不重新计算,权限脱敏值仍为 *,零金额保留为数值;无导入映射的来源列留空,长编号按文本存储。商品明细、实际收款和附件另行核对。切换筛选或账户、离开页面、接口拒绝或响应不完整时,旧任务不会下载不完整文件;当前列表不会被导出的全部记录替换。


默认售价与优惠金额

选品和商户门户按当前商户的等级,比较本商户专属价与通用价的全部适用档位,默认取最低价;其他商户的专属价不参与。本商户没有可用报价时保持未知,不能默认为零价;免费商品必须明确配置或输入零价。可以在有金额编辑权限时选择适用报价或录入约定单价。优惠提交为两位小数的整行金额,不能超过数量乘单价;行税额按数量乘单价减去整行优惠后乘收货地址税率,最后按十进制半入法保留两位。

选择报价与库存批次

售价和折扣窗口会读取当前 SKU 的报价。读取失败时,先点击重试再选价;确认必须选中适用报价,缺少或清空选择不能将原约定单价改成零,明确配置的零价仍可使用。关闭窗口、切换订单或删除原商品行后,旧选择失效;订单审批或失去金额编辑权限后也不能确认。

库存选择绑定正在编辑的商品行。删除该行或清空库存选择后,尚未返回的结果不会再自动选回库存。选中批次本身不形成占用;商品保存成功才创建占用,保存时由服务端校验库存。

商品保存与草稿恢复

订单详情的“保存商品”一次提交完整商品清单、订单金额和库存占用。库存不足时全部不保存,当前草稿保留,可调整数量或选择其他库存后再保存;清空商品会同时释放该订单占用并移除草稿送货记录中的对应商品关联。提交审批也在同一次保存中完成,空清单不能提交审批。

多人编辑时,保存会核对加载的商品版本。发现冲突后保留草稿并停止重复保存;先复制需要保留的修改,再点击“重新加载并替换草稿”,核对最新订单后重新编辑。已审批的商品不重新加载主数据中的售价、税额或商品说明;数量修改使用快照记录的原有效税率。开始实际出库后,即使单据还处于“已下单”,也不能修改商品清单、数量或库存选择。

创建结果确认

新建销售单会先保留本次创建内容,再发送请求。若连接中断或结果无法确认,页面保留原内容并阻止直接新建;选择查找已创建订单,找到后点击订单号打开同一单据。刷新页面后再次打开新建页,仍可查询这笔未确认创建。保留信息按当前登录账户隔离。

暂未找到可访问的订单时,可明确选择使用原内容继续创建;系统仍使用同一次创建的原内容,避免重复订单和重复库存预留。查询失败或原订单已删除时不能据此重建。打开恢复的订单后,核对当前商品和状态再继续保存;恢复查询不会自动审批、出库或收款。先创建父单,再保存商品;商品保存失败时父单仍可在订单列表中找到。

原税率与历史订单

新计价商品行会同时记录有效税率与税额,明确的零税率也会保存。已审批行调整数量时使用记录的原税率,不受当前商品应税标记或地区配置变化影响。税额最后按十进制半入法保留两位,不能用已舍入税额反推准确原税率。

历史行没有原税率时保留记录税额,调整数量前须明确确认。尚未开始实际出库的已审批订单详情提供“确认历史税率”;需要销售订单写和金额写权限。核对原始单据后填写原税率与确认依据,税率必须能够复现原净额对应的记录税额。该操作不改写原金额。成功后先重新加载核对最新订单,再作后续调整。未知税额不能确认,已记录的税率不能重新指定。

订单版本变化或结果不确定时,先复制需要保留的依据,再重新加载核对,不能直接重复提交。参见税率快照示例。

8.3 提交审批与审批处理

  1. 草稿提交 → 状态 待审批(1)。
  2. 审批人通过或驳回。
  3. 通过后 审批确定(2),开单人「确认下单」→ 状态 已下单(3),已分配库存的占用在商品保存时形成。

提交、审批通过与确认下单都要求非空且有效的商品清单,并重新校验已选择的库存。已审批订单不能通过“修改状态”退回草稿。确认下单与标记已交货会先加载完整订单供核对;同事改变了该版本时,先重新加载并比较后再操作。


审批中心的销售“通过 / 驳回”先打开完整订单详情,核对商品与金额后再操作。审批和审批改单核对当前查看的商品版本;同事修改了商品、状态或地址后,旧版本不能通过。价格与整行优惠另需销售金额编辑权限;只有审批权限时可调整数量或删除商品,不提交隐藏金额。改单后只对变化的行按本单收货地址税区重算税额,未变行保留记录税额;订单金额、库存占用、草稿送货关联与日志一次提交。没有实际出库前才允许调整。

发生版本冲突时保留修改内容,先复制草稿,再重新加载最新订单逐项核对;不要盲目重复保存。保存超时或提示结果不确定时,也先读订单确认结果。未分配仓库批次的行目前可先审批为预订单,不能据此承诺已保留库存;实际出库仍须分配并校验库存。

8.4 出库与发货、配送状态维护

  1. 仓库 → 入库与出库 → 销售出库,选这张销售订单,从指定货架/批次出货。
  2. 出库完成 → 销售订单状态 已出库(4),实物库存减少、占用释放。
  3. 送达商户后维护配送状态到 已交货(5)。

详细出库操作见第 10 章。出库必须基于已确认的订单,且受可用库存约束。

销售订单的完整 7 态状态机如下:

st=>start: 0 申请
s1=>operation: 1 待审批
ap=>condition: 审批通过?
s2=>operation: 2 审批确定
s3=>inputoutput: 3 已下单(确认订单)
s4=>operation: 4 已出库
s5=>operation: 5 已交货
e=>end: 6 已结算
st->s1->ap
ap(yes)->s2->s3->s4->s5->e
ap(no)->st

多次送货、地址校验与商品分配

在销售单详情的“送货信息”页签新增多个送货记录,分别维护单号、日期、地址、联系人、电话、公司和商品。选用的地址必须属于本单商户且未删除;新建单据、门户结算、历史导入及商品快照生成都采用相同校验。子账户还需在可见商户范围内。旧无效地址引用保留历史,但接口不会嵌入其他商户或已删除地址的详情。

编辑时重新读取当前订单及商户地址,保留已保存的地址选择;订单或地址加载失败时须重试成功才能保存,不将未知当无地址。旧地址失效或不属于商户时,提示重新选择或明确清空。关闭或切换订单后,旧请求不能覆盖新详情。

“分配商品”选择本销售单的完整计划行或实际出库快照行。保存目标送货清单时,后端在同一事务中从其他送货记录移除这些行,再分配到目标;失败时所有分配保持不变,选择窗口保留。此操作不拆分一行的数量,也不执行实物出库。部分出库需使用仓库流程,并核对实际出库快照;关联行数不代表已发数量。

API 修改中,可空字段省略表示保留,显式 null 表示清空;商品列表 [] 清空本条关联。修改送货地址或联系人不会重算冻结订单税额与价格。粘贴保存失败恢复原行。默认 read API Key 可经 HTTP / MCP 查询送货,写入需 write scope 与用户已授权的任务。参见多次送货指南。

8.5 销售结算

  1. 销售 → 销售结算 → 选这张销售订单。
  2. 系统校验:订单须 已出库(≥4),且其关联的供应链订单已结算(9)。
  3. 确认后登记收款,订单状态变 已结算(6),并生成销售分析记录(利润、周转率、年化收益)。

⚠️ 为什么要求供应链订单先结算? 销售利润 = 销售收入 − 采购成本(含分摊运费)。如果上游供应链订单还没结算,成本不确定,利润和周转率就无从算准。所以系统强制:先供应链结算,再销售结算(详见 11.7 结算全景)。


8.6 销售退货

  1. 仓库 → 退货 → 新建退货单:选商家,添加商品并录入数量、效期与货架位。有关联历史销售时,在入库前选择该商品的实际出库来源;一张退货单可以涉及该商家的多个销售订单。也支持没有关联历史订单的人工退货。可添加图片留证,先保存草稿,核对后确认退货入库。
  2. 关联销售的可退数量为该订单和 SKU 的实际已出库数量减去此前已退数量,多个退货单共用余额。全部商品实际入库后,状态 退货中 0 → 已入库 1;部分收货仍为退货中。已收货商品及其来源不能重建或改绑。
  3. 销售 → 销售退货:搜索/筛选退货单,行内查看详情;核对已入库来源并录入退款单价和确认数量。可先保存价格草稿,保存成功后再确认退货价格,状态推进为 已确认价格 2。
  4. 财务 → 退货财务操作 → 创建打款记录并确认打款(状态 已打款 3,见 11.4)。

退货是 4 态流程(见 2.8),下图即退货单状态机:

st=>start: 0 退货中
s1=>operation: 1 已入库(仓库退库)
s2=>operation: 2 已确认价格(销售确认退价)
e=>end: 3 已打款(财务退款)
st->s1->s2->e

8.7 销售看板

  1. 销售 → 销售看板。
  2. 查看销售额、已出库、已结算、退货额、Top 商户等指标。

看板只读汇总;要操作回订单/退货/结算里做。


本章小结

下一章讲 商家采购门户(面向下游商户)。