Difference between revisions of "ZH/Case-Study-01-Journal-08"

From ADempiere
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.
(讨论栏)
(2010-12-09)
Line 249: Line 249:
 
** 主要是关闭了不用的选项、设置Field Group、设置默认值。
 
** 主要是关闭了不用的选项、设置Field Group、设置默认值。
 
** 在Document Type里把不需要的Sales Order Type改为禁用。
 
** 在Document Type里把不需要的Sales Order Type改为禁用。
===销售合同的报表格式调整===
 
* 已经把销售合同的报表格式调整到位。
 
* 主要解决了以下问题:
 
** 页码问题。需要设置好Page_Number的有效范围。
 
** 文本框随内容自动调整高度问题;
 
** sub-report相对路径问题;
 
** 金额合计问题。需要新建变量,并设置好生效范围;
 
** ADempiere与JasperReports参数传递问题。
 
** 避免文本框跨页分断问题。将Band: Detail 1的属性Split Allowed设置为False。
 
** 文本框NULL值问题。将文本框属性Blank when Null设置为True。
 
 
===几点发现===
 
===几点发现===
 
* 发现用Import Product窗口不但可以导入产品信息,还可以导入产品价格表,非常方便。
 
* 发现用Import Product窗口不但可以导入产品信息,还可以导入产品价格表,非常方便。

Revision as of 17:32, 26 December 2010

<返回中文首页> <返回本案例研究首页>

实施日志-08-销售


2010-11-03

业务类型-截屏
销售订单-业务类型-截屏

业务类型

  • 由于公司有三种不同的业务类型,要在销售订单当中实现“业务类型”选项,需要进行简单的二次开发。分两步进行:
  1. 新建窗体:业务类型 - Business Type。
  2. 在窗体Sales Order中增加Business Type下拉选项
  • 提示:如果你在下列选项中没有找到你刚刚创建的数据时,可以点鼠标右键的ReQuery,界面刷新后即可看到。

新建窗体:业务类型

  • 创建数据库表:C_Business_Type
    • 注意ID要设置为 numeric(10,0) ,如果少于10位在保存记录时会报错,原因是Reference: ID默认设置为10位。
CREATE TABLE C_Business_Type
(
  C_Business_Type_id numeric(10,0) NOT NULL,
  ad_client_id numeric(10,0) NOT NULL,
  ad_org_id numeric(10,0) NOT NULL,
  "name" character varying(50) NOT NULL,
  description character varying(200),
  isactive character(1) NOT NULL DEFAULT 'Y'::bpchar,
  created timestamp without time zone NOT NULL DEFAULT now(),
  updated timestamp without time zone NOT NULL DEFAULT now(),
  createdby numeric(10,0) NOT NULL,
  updatedby numeric(10,0) NOT NULL
);

ALTER TABLE C_Business_Type ADD PRIMARY KEY (C_Business_Type_ID );
  • 在Application Dictionary中创建表:
  1. 以System角色登录系统。
  2. 打开窗口:Table and Column
  3. 新建表格:C_Business_Type。
    1. 设置DB Table Name: C_Business_Type。注意:必须与数据库表名称一致!
    2. 设置Data Access level: Client+Organization。
  4. 点击按钮:Create Columns from DB,从数据库中自动生成列。
  5. 为节省篇幅,以后不再复述以上步骤,简称:“新建AD表:C_Business_Type”。
  • 新建窗体:Business Type
  1. 打开窗口:Window, Tab & Field
    1. 新建窗体:Business Type
  2. 打开页签Tab,
    1. 新建页签:Business Type
    2. 设置Table: C_Business_Type
    3. 点击按钮:Create Fields,从AD表中自动生成列。
  3. 打开页签Field Sequence,调整列显示顺序。
  4. 打开页签Field,调整窗体外观。要注意Sequence, Same Line, Display Length等设置。
  • 将窗体加入菜单
  1. 打开窗口:Menu
  2. 新建条目:Business Type
    1. 设置Action: Window
    2. 设置Window: Business Type
    3. 并将其移动至合适的位置。
  • 添加记录
    • 接下来我们就可以用刚刚新建的窗体来添加记录了。
  1. 以TongjiAdmin角色登录系统
  2. 打开窗口:Business Type。依次新建:
    • 研发销售、Research & Sales
    • 来图加工、Processing with Supplied Drawings
    • 设备改造、Equipment Upgrading

增加Business Type下拉选项

  • 设置引用(Reference)
  1. 打开窗口:Reference
    1. 新建:Business Type
    2. 设置Entity Type: User maintained
    3. 设置Validation Type: Table Validation
  2. 打开页签:Table Validation
    1. Table: C_Business_Type
    2. 设置Key Column: C_Business_Type_ID
    3. 设置Display column: Name
  • 在数据库表C_Order中增加列:C_Business_Type_ID
ALTER TABLE  c_order  ADD C_Business_Type_id numeric(10,0) NOT NULL DEFAULT 1000001;
  • 在AD表Order中增加列:C_Business_Type_ID
  • 在窗体Sales Order中增加列:C_Business_Type_ID
  • OK,一切完毕!以TongjiAdmin角色登录系统,打开窗口:Sales Order,就可以看到自己的杰作了 :-)

讨论栏

一楼 為何不是在單據類別設定

  • 為何不是在單據類別(C_DocType_ID)設定:
    1. 研发销售、Research & Sales 訂單
    2. 来图加工、Processing with Supplied Drawings 訂單
    3. 设备改造、Equipment Upgrading 訂單
  • Business Type : 會改變客戶訂單是否必須核對價格清單 ?
  • Business Type : 是要來判斷或改變哪些管理流程 ?
  • 在訂單 C_Order 加欄位,也必須在 MOrder 物件加 Method,
    • I_C_Order.java 加 get/setC_BusinessType_ID Method !
    • X_C_Order.java 加 get/setC_BusinessType_ID Method !
    • MOrder.java ,Constructure, beforeSave 必須檢查驗證 !
  • C_BusinessType 必需產生物件給系統引用
    • I_C_BusinessType.java
    • X_C_BusinessType.java
    • MBusinessType.java
      • 列如 MBusinessType businessType = MBusinessType.get();
      • 列如 MBusinessType[] businessTypes = MBusinessType.getAll();
  • -- Albertachen

二楼

  • 呵呵,我没有想到单据类别(C_DocType_ID)可以这样用。谢谢Albertachen的提醒!

> Business Type : 會改變客戶訂單是否必須核對價格清單 ?

回复Albertachen:对于这家公司,这三种业务类型可以共用一个价格表。

> Business Type : 是要來判斷或改變哪些管理流程 ?

回复Albertachen :在这家公司,不同的业务类型与不同的业务流程关联。比如“来图加工”就不需要技术部进行设计,但是需要技术部进行造价核算和图纸转化。
  • -- Peanut

2010-11-05

销售基础设置

  • 业务伙伴分组
    • 窗口:Business Partner Group
  1. 大客户组, VIP Customer Group
  2. 国内客户组, Domestic Customer Group
  3. 国外客户组, Foreign Customer Group
  4. 采购供应商组,Purchasing Supplier Group
  5. 外协供应商组, Outside Processing Supplier Group
  • 支付方式:
    • 窗口:Payment Term:
  1. 立即支付, Immediate
  2. Net 30,收货后30天支付.
  3. 50:50,立即支付50%, 余款30天内付清。50% Immediate - 50% in 30 days
  • 问候:
    • 窗口:Greeting:
    • 测试报表时发现{0}不能被自动替代,因此去掉{0}
  1. Dear, Dear {0}
  2. Mr, Mr {0}
  3. Ms, Ms {0}
  4. 尊敬的, 尊敬的 {0}


  • 销售区域
    • 窗口:Sales Region
  1. 国内
    1. 中国南方区
    2. 中国北方区
  2. 国外
    1. 亚洲
    2. 非洲
    3. 欧洲
    4. 北美洲
    5. 拉丁洲
    6. 大洋洲

讨论栏

2010-11-07

销售模块实施分析

  • 昨天主要在对销售合同案例进行分析。

前期准备工作

  • 需整理数据清单
  1. 客户信息
  2. 产品信息
  • 需整理标准文档格式
  1. 销售合同-国内
  2. 销售合同-国外
  3. 生产通知
  • 需提供典型销售订单案例
  1. 大客户2个
  2. 国内客户2~3个
  3. 国外客户2~3个

几点感受

  1. 该公司销售合同格式尚未标准化,各种销售合同格式相似处大概只占65%。这给ERP界面定制、报表定制带来许多额外的分析整理工作。由此可见ERP实施与文档标准化息息相关。
  2. 要想贴近客户实际需求,需要对ADempiere ERP原有销售订单窗体进行比较大的改动,主要是增加窗体中的填写项目,相应地进行报表定制。


2010-11-09

销售数据整理模板

今天与市场部的职员举行了一次会议,将客户信息、销售订单需要增加或变更的字段、字段值的选项都确定下来了。

这是数据整理模板(电子表格下载)。

以后会陆续增加采购、仓库等模块的模板。

讨论栏

2010-11-13

销售订单下拉表

这两天对销售订单、客户信息的定制进行了梳理。

  1. 销售订单需要新增字段30个,其中下拉选项表17个。
  2. 客户信息需要新增字段6个,其中下拉选项表2个。

去除重复项,共需下拉选项表18个。

起初想到的办法是为每个下拉选项表建一个表格,这样要建18个表格,比较繁琐。后来发现可以利用Reference的List,这样就简单多了。

从这个角度来看,之前增加的业务类型(Business Type)也可以通过Reference来设定,不需要创建数据表C_Business_Type了。

Sales Order当中的Invoice Rule就是这样处理的:

DB Table:

 invoicerule character(1) NOT NULL

Referece:

 Name= C_Order InvoiceRule
 Validation Type=List Validation

AD Table:

 Name = InvoiceRule
 Reference = List
 Reference Key =C_Order InvoiceRule
  • 遇到的问题及解决方法:
  1. 设置Payment Term,要以“Role=TongjiAdmin,Client=Tongji, Orangization=*”登录。
  2. Payment Rule, Invoice Rule, Delivery Rule。起初发现这些下拉选表没有找到相应的窗体来修改,后来发现是在Reference窗体里更改的。

讨论栏

2010-11-29

实施栏

  • 今天主要工作:
  1. 对新增的销售字段进行排版。
  2. 导入客户资料
  3. 导入价格表
  4. 对帐户密码进行设置
  5. 对角色进行设置。主要通过菜单树(Menu)来控制。

2010-12-09

销售订单窗口优化调整

  • 对销售订单窗口进行了优化:
    • 主要是关闭了不用的选项、设置Field Group、设置默认值。
    • 在Document Type里把不需要的Sales Order Type改为禁用。

几点发现

  • 发现用Import Product窗口不但可以导入产品信息,还可以导入产品价格表,非常方便。
  • Sales Order当中Sales Representative的设置: 要同时设置User和Business Partner,并关联起来。

2010-12-13

销售订单实施小结

  • 这段时间主要进行销售订单窗口和销售合同报表的制作。前后大约花费了15天左右的时间,主要用在:
    • 销售订单窗口字段的增减和设置;
    • JasperReports的探索;
    • 对销售合同进行分析,并进行报表制作。

困难:销售合同没有标准化

  • 实施当中最为困难的是该企业的销售合同没有标准化。主要表现在以下几个方面:
  1. 销售合同格式没有标准化
    1. 语言不统一。存在纯中文、纯英文、中文+英文三种形式。
    2. 合同条款数目不固定,增减无常。
    3. 同一条款在不同合同中写法各不相同,某些内容(即字段)的显示和隐藏没有固定规律。
    4. 产品型号栏目格式不统一,存在以下三种形式:产品型号+中文名称,产品型号+英文名称, 产品型号+中文名称+英文名称。同时还存在是否添加产品图片的区别,这样一来就有六种形式。
  2. 销售合同条款内容(或选项)没有标准化
    1. 许多字段内容变化太多,以下拉列表显示的选项总是存在许多的例外。
    2. 例如付款条件(Payment Term),除了3:7、3:6:1等方式外,还存在许多其它特殊的付款条件,这样同时还带来财务上的许多麻烦(无论财务模块使用的是ADempiere的还是其它财务软件的)。当然付款条件多变的背后,反映了合同评审缺乏公司财务部门的严格把关。
  • 文档标准化是ERP成功实施的基本前提
    • 对于变化无常的合同格式,如果花费太多的精力去提供相应的报表格式,是毫无价值的工作。
    • 因此该项目实施只提供最基本格式的中文模板。用户如需进行格式或内容上的更改,就导出为*.ODT格式自行修改。
    • 对于销售合同的最佳解决方案是:标准的销售订单 + 灵活可变的合同附加条款。当然该企业要采纳这样的方案还需要一段过程。

2010-12-24

销售代表的设置

  • 在Sales Order销售代表选项中,Sales Representative (销售代表)要在Business Partner和User两处都要做好设置。
  • 原因在于Table: C_Order当中Sales Representative字段的Reference(引用)设置:AD_User - SalesRep。
  • 打开Reference: AD_User - SalesRep,找到Table Validation页签中,可以看到Sql Where设置为:EXISTS (SELECT * FROM C_BPartner bp WHERE AD_User.C_BPartner_ID=bp.C_BPartner_ID AND bp.IsSalesRep='Y')

链接