Odoo19的Pack-in-pack介绍从一组容器开始:它们可以在现实中组合,也可以只在数据库层面作逻辑归组,并在被视为一个单位时仍保留内部结构。[1] 数据库中的归组关系本身,也没有说明现实容器采用了何种固定方式。
官方用四种饮料举例:苹果汁罐、橙汁罐、气泡水罐与汽水罐各二十个,每一种产品分别装在自己的一只箱子里。随后,这些箱子共同归入一个托盘。例子因而有三层可辨认对象:饮料产品、各自的内箱,以及把内箱归成一组的托盘。二十描述每一种饮料的产品数量,四只箱子来自四条产品记录,外层托盘又是另一层。
例子继续说,各产品行的Packages字段显示外层托盘名称PAL0000001。这个共同名称让读者看到它们归在同一个外层单位下,而该页末尾又说明,包裹表单会列出内部产品,包括它们分别所在的子包裹。把这两处文字联系起来,外层名称和内层所属关系可以同时存在;显示共同托盘,不意味着苹果汁与橙汁的内箱记录已经合并成同一只箱。
Packages页的Container字段专门说明父容器关系。[2] 当一份package被包含在另一份package内时,Container表达包含它的那份包裹。相邻的Package Reference则是本包裹的必填名称,Location表达它的当前位置。于是,读一张表单时可以区分本记录叫什么、处在什么位置,以及属于哪个更外层容器;三项字段分别描述名称、地点和层级。
同一表单还列出Company与Pack Date,分别联系使用该包裹的公司和包裹创建日期。定义字段下方是Content内容区。
该表还有Package Type字段,但Cluster packages的注释明确说,在cluster pickings中它并非必需;Package Reference则在表中明确标为必填。前者说明所用的包裹类型,后者给当前包裹记录命名。类型可选的这项限定,不能转成包裹本身没有名称,两个字段的填写要求在同一表中已有不同表达。
列表本身也有范围。Pack-in-pack文档说,某次业务的Packages列表默认按Main Packages筛选,也就是分配给该业务的最大包裹。按四箱饮料的例子理解,这个范围着眼外层托盘;全层包裹列表则还包含内箱。顶层列表较短,是视图选择了较外层对象,不能据列表行数便断言内部箱子不存在。
主包裹清单还有自己的显示形式。Packages页的View packages将库存包裹主清单描述为默认列表视图;这与某次业务只显示Main Packages的筛选范围不同。单个包裹表单又往下展示产品及其所在子包裹。因此,列表视图回答记录怎样排列,业务顶层筛选回答这一页先列哪一层,表单内容回答某一容器内部有什么。三种查看对象相接,才形成从主清单、业务外层到容器内部的资料层次。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。