ERP5 手册/ERP5 特定的 Zope 工具
关于 ERP5 特定的 Zope 工具的通用描述应该在这里。
portal_activities(又名 CMF Activity Tool)的理念在以下部分描述
维基上很好地描述了它的使用方法
http://wiki.erp5.org/HowToUseTheCmfActivityTool
因此这里没什么好补充的。
用于索引对象、对象之间的关系、安全信息和其他一些经常使用的数据,以允许快速访问、搜索和排序。
当您对对象调用 .reindexObject 时,该对象就会被记录在目录中。此方法会在每次编辑时自动调用(从技术上讲,每个 setter - 一个 setThisProperty 方法 - 会触发重新索引;如果您编写了一个要设置许多属性的脚本,最好使用 _setThisProperty,它不会重新索引,然后调用 reindexObject;或者更简洁地调用 edit(property1 = value, property2 = value2),它会在设置完所有给定的属性后重新索引一次)。
portal_catalog 的基本用法在此处描述
http://wiki.erp5.org/HowToSearchPortalCatalog
TODO: advanced usage (I do not know enough...)
在实现 ERP5 时,几乎不需要调整目录;这里解释了一些技巧
http://wiki.erp5.org/HowToCreateRelatedKeys
http://wiki.erp5.org/HowToAddTableToCatalog
TODO: check if related keys are not deprecated
类别理念和使用在以下位置描述
可以添加基本类别而没有任何限制(虽然始终建议您思考一下,也许现有的类别可以完成任务)。类别在 MySQL 中索引;重要的是,类别成员资格和对象之间的关系也被索引,因此数据模型可以扩展而不会带来太多开销。
可以通过属性表或简单地在 portal_types 工具中通过 ZMI 将基本类别分配给门户类型。如果一个对象具有给定的基本类别,它就拥有所有自动生成的访问器(setXXX、getXXX、setXXXList、getXXXlist)。
类别拥有丰富的 API;最常用的方法是
.getCategoryChildLogicalPathItemList
递归地返回所有子类别作为对,适合填充下拉菜单或 ListField;
.getCategoryChildTranslatedLogicalPathItemList
相同,但已翻译;
.getCategoryMemberValueList
返回所有分类到该类别或其任何直接或间接子类别中的对象(这包括子类别本身,但您可以为其提供 portal_type 参数)。
从另一端来看,每个 ERP5 对象(例如一个人)都有一个方法
.isMemberOf
如果对象属于给定类别或其任何直接或间接子类别,则返回 True。例如,如果一个人具有以下职能:“销售/零售/专家”,那么
.isMemberOf("function/sales") == True.
基本类别有一个丰富的用户界面,其中包含许多神秘的选项,其中大多数与可编程获取相关,这里对此进行了解释:http://wiki.erp5.org/HowToUseProgrammableAcquisition
这是一个多功能工具,可以吞噬(或者如果你愿意的话,可以吸收)你扔进它的任何东西,猜测它是什么,找到合适的地方放它,分析它并设置它的各种属性。
更具体地说:您调用 portal_contributions.newContent 方法,为其提供一些数据(例如上传的文件)或 url,以及其他可选的许多内容(请参阅该方法的文档字符串,它非常好)。然后,该工具会
- 使用 WebDAV 机制找出内容的门户类型(它使用 content_type_registry,因此这是设置它的位置)
- 调用 ZMI 脚本
- [Type]_getPropertyDictFromFilename
- [Type]_getPropertyDictFromContent
找出对象的属性,如果它得到任何属性,则将其设置在对象上;这些脚本基于类型,因此例如,如果对象被识别为电子表格,该工具会查找名为 “Spreadsheet_getPropertyDictFromFilename” 的脚本,如果找不到,则会调用一个通用脚本 “Document_getPropertyDictFromFilename”。
这些脚本应返回从文件名和内容派生的属性字典;它们也可以返回门户类型,并且最终将应用此门户类型,因此您可以在文件名中编码内容类型。
- 找出放置内容的正确模块
- 将内容放置在正确的模块中
贡献工具主要由 DMS 模块用于吸收通过 Web 界面上传、通过电子邮件发送或通过 WebDAV 拖放的文档。在不久的将来,它也可以用于接收和吸收电子邮件。
关于 portal_rules 的通用描述应该在这里。
此规则由构建器在确认销售发票交易后使用,以创建会计交易行。您需要创建一个规则矩阵,该矩阵将用于生成预定义的会计交易行。
如果您需要定义会计系统,那么此规则正是您需要的。它的定义将根据谓词创建正确的会计变动。
在 portal_rules 工具中开始创建新的发票交易规则,为其提供一个Id,然后按照以下步骤进行示例解释。
添加谓词后,将显示谓词屏幕。设置描述性标题,它将用作矩阵列或行标题。设置成员资格条件后,您将能够设置一些成员资格值。
谓词按一个共同的维度进行分组,因此请谨慎设置它。
请记住,可以为某种类型的对象构造谓词。在会计方面,您可能希望为销售和购买创建单独的谓词。要实现这一点,请使用Movement_explanationPortalTypeIsPurchase 填充测试方法 ID 字段,用于购买补丁,使用Movement_explanationPortalTypeIsSale 填充测试方法 ID 字段,用于销售补丁。
当您的矩阵准备就绪后,您可以开始编辑会计交易行的模板。要测试它,请确认处于计划状态的销售发票交易,并观察会计交易行对象是如何创建和填充的。
不要忘记使用正确的帐户填充源和目标视图。在此之前,系统将无法生成正确的模拟。
此示例取自现实世界情况 - 波兰的贸易商。要求是定义区域类别,至少 3 个不同的区域 - 波兰、欧盟和世界其他地区。示例区域树是
- region/africa
- region/asia
- region/europe
- region/europe/eu
- region/europe/eu/bg
- region/europe/eu/de
- region/europe/eu/fr
- region/europe/eu/ie
- region/europe/eu/pl (是的,这是波兰)
- region/europe/eu/uk
- region/europe/non-eu/ua
- region/north_america
- region/south_america
在您的发票交易规则中创建谓词
- 用于从波兰购买
- 标题:从波兰购买
- 维度:region
- 测试方法 ID:Movement_explanationPortalTypeIsPurchase
- 成员资格条件:source_region
- 成员资格值:仅 source_region/europe/eu/pl
- 用于从欧盟购买
- 标题:从欧盟进口
- 维度:region
- 测试方法 ID:Movement_explanationPortalTypeIsPurchase
- 成员资格条件:source_region
- 成员资格值:source_region/europe/eu 中的所有内容,不包括 source_region/europe/eu/pl 和 source_region/europe/eu
- 用于从世界其他地区购买
- 标题:从欧盟以外进口
- 维度:region
- 测试方法 ID:Movement_explanationPortalTypeIsPurchase
- 成员资格条件:source_region
- 成员值:source_region 中的所有内容,但不包括 source_region/europe/eu 及其以下内容
- 销往波兰
- 标题:销往波兰
- 维度:region
- 测试方法 ID:Movement_explanationPortalTypeIsSale
- 成员标准:destination_region
- 成员值:destination_region/europe/eu/poland
- 销往欧盟
- 标题:出口到欧盟
- 维度:region
- 测试方法 ID:Movement_explanationPortalTypeIsSale
- 成员标准:destination_region
- 成员值:destination_region/europe/eu 中的所有内容,但不包括 destination_region/europe/eu/pl 和 destination_region/europe/eu
- 销往世界其他地区
- 标题:出口到欧盟以外地区
- 维度:region
- 测试方法 ID:Movement_explanationPortalTypeIsSale
- 成员标准:destination_region
- 成员值:destination_region 中的所有内容,但不包括 destination_region/europe/eu 及其以下内容
现在使用创建的会计规则单元格进行操作,然后创建一些订单 - 销售和采购,通过订购或计划扩展它们,并检查模拟(例如,通过使用 Base_viewSimulationTree)。当然,您也可以进一步创建一些发票。
注意:以上配置仅用于示例目的。