Difference between revisions of "ZH/Case-Study-01-Journal-23"
From ADempiere
This Wiki is read-only for reference purposes to avoid broken links.
(→Referece下拉列表与Dynamic Validation) |
(→2010-12-29) |
||
Line 38: | Line 38: | ||
## '''Validation code''': EXISTS (SELECT * FROM C_BPartner bp WHERE AD_User.C_BPartner_ID=bp.C_BPartner_ID AND (bp.IsEmployee='Y' OR bp.IsSalesRep='Y')) | ## '''Validation code''': EXISTS (SELECT * FROM C_BPartner bp WHERE AD_User.C_BPartner_ID=bp.C_BPartner_ID AND (bp.IsEmployee='Y' OR bp.IsSalesRep='Y')) | ||
* 相关链接:[[Reference Table with Dynamic Validation]] | * 相关链接:[[Reference Table with Dynamic Validation]] | ||
+ | |||
+ | ===记录锁定与Processed=== | ||
+ | * 在 RfQ(采购申请)窗口中,按下 '''Close RfQ''' 按钮后,字段 ''Processe''d 就由 'N' 变为 'Y',该记录就变为锁定了。 | ||
+ | * 我很好奇 Processed='Y' 与记录锁定是怎么关联起来的? | ||
+ | * 接下来我在新建了 C_Department 表及 Department 窗口, | ||
+ | * SQL语句如下: | ||
+ | <pre> | ||
+ | -- Create Department Table | ||
+ | CREATE TABLE c_department | ||
+ | ( | ||
+ | ad_client_id numeric(10,0) NOT NULL, | ||
+ | ad_org_id numeric(10,0) NOT NULL, | ||
+ | isactive character(1) NOT NULL DEFAULT 'Y'::bpchar, | ||
+ | created timestamp without time zone NOT NULL DEFAULT now(), | ||
+ | createdby numeric(10,0) NOT NULL, | ||
+ | updated timestamp without time zone NOT NULL DEFAULT now(), | ||
+ | updatedby numeric(10,0) NOT NULL, | ||
+ | c_department_id numeric(10,0) NOT NULL PRIMARY KEY, | ||
+ | "name" character varying(60) NOT NULL, | ||
+ | description character varying(255), | ||
+ | c_upperdepartment_id numeric(10,0), | ||
+ | processed character(1) NOT NULL DEFAULT 'N'::bpchar, | ||
+ | ); | ||
+ | </pre> | ||
+ | * 接着在 '''Window, Tab & Field''' 窗口进行测试: | ||
+ | *# 与 ''WindowType'' 无直接关系,选为 ''Transaction'' 或 ''Maintain'' 均可。 | ||
+ | *# 与 ''Sales Transaction'' 无直接关系,是否勾选均可。 | ||
+ | ** 备注:每一步都先执行过 Cache Reset 。 | ||
+ | * 于是可以得出结论,''Processed'' 字段是 ADempiere 系统内置的记录锁定标记。如果某些表需要对记录进行锁定,只要在相应的表增加 ''Processed'' 字段即可。 | ||
=链接= | =链接= |
Revision as of 07:04, 29 December 2010
Contents
实施日志-23-基于数据字典的二次开发
- 本文属于机械装备制造业进销存实施案例——ADempiere ERP案例研究之一。
- 本文记录ADempiere ERP项目实施的过程
2010-11-13
关于Boolean数据类型
我有个疑问,ADempiere数据表为什么不用Boolean数据类型,而是用character(1)?
例如C_Order数据表当中的字段isactive:
isactive character(1) NOT NULL DEFAULT 'Y'::bpchar
2010-12-09
Address的Country默认值设置
- 在Business Partner窗口的Location页签有个Address字段,点击右侧小图标会弹出一个"Add New Location/Address"或"Update Location/Address"窗口,这窗口找不到设置的地方。
- 我的目的是把Location/Address的Country默认值设置为China。
- 我尝试过通过"Window, Tab & Field"窗口、"Table & Column"窗口,设置Country字段的Default Logic,均告无效。
- 后来发现这是系统内建的,这样处理很不方便。
This window is made manual. This is the class for it: VLocationDialog
2010-12-29
Referece下拉列表与Dynamic Validation
- 今天把 Dynamic Validation 略为弄懂了一些,之前一直是糊里糊涂的。
- 通过Referece实现下拉列表,我的总结是 Dynamic Validation 要通过 Reference Key 才起作用。不知道我这样理解是否正确?
- ADempiere里有一个例子,是采购申请单( Requistion )中的 AD_User_ID 的字段。
- 打开 Table and Column 窗口,找到 Requistion 表。在 Column 页签中找到 AD_User_ID 字段:
- Reference: Table
- Reference Key: AD_User
- Dynamic Validation: AD_User - Internal
- 打开 Validation窗口 ( 也可以在Dynamic Validation直接Zoom过去):
- Name: AD_User - Internal
- Type: SQL
- Validation code: EXISTS (SELECT * FROM C_BPartner bp WHERE AD_User.C_BPartner_ID=bp.C_BPartner_ID AND (bp.IsEmployee='Y' OR bp.IsSalesRep='Y'))
记录锁定与Processed
- 在 RfQ(采购申请)窗口中,按下 Close RfQ 按钮后,字段 Processed 就由 'N' 变为 'Y',该记录就变为锁定了。
- 我很好奇 Processed='Y' 与记录锁定是怎么关联起来的?
- 接下来我在新建了 C_Department 表及 Department 窗口,
- SQL语句如下:
-- Create Department Table CREATE TABLE c_department ( ad_client_id numeric(10,0) NOT NULL, ad_org_id numeric(10,0) NOT NULL, isactive character(1) NOT NULL DEFAULT 'Y'::bpchar, created timestamp without time zone NOT NULL DEFAULT now(), createdby numeric(10,0) NOT NULL, updated timestamp without time zone NOT NULL DEFAULT now(), updatedby numeric(10,0) NOT NULL, c_department_id numeric(10,0) NOT NULL PRIMARY KEY, "name" character varying(60) NOT NULL, description character varying(255), c_upperdepartment_id numeric(10,0), processed character(1) NOT NULL DEFAULT 'N'::bpchar, );
- 接着在 Window, Tab & Field 窗口进行测试:
- 与 WindowType 无直接关系,选为 Transaction 或 Maintain 均可。
- 与 Sales Transaction 无直接关系,是否勾选均可。
- 备注:每一步都先执行过 Cache Reset 。
- 于是可以得出结论,Processed 字段是 ADempiere 系统内置的记录锁定标记。如果某些表需要对记录进行锁定,只要在相应的表增加 Processed 字段即可。