1.     理论基础

注:我采用libreoffice5.2设计讲解

1.1.     定义模板指令

模板指令的语法和Genshi 模板语言相兼容,可以用Libreoffice( Write, Calc)来设计

1.1.1.      文本占位字段

我们可以在odt 文件中,通过“插入”->“字段”->“更多字段”->“功能”

类型选择“占位符”,格式选择“文字”,占位符写点位字符串,引用写指令,

最后点“插入”,这时在光标处就完成文本点位字段的定义

1.1.2.      超链接

通过“插入”->“超链接”

在URL 写上模板指令 要以“python://” 开头

文本,写上显示的文字

1.1.3.      输入字段

这个是我们用的最多,通过“插入”->“字段”->“更多字段”->“功能”

类型选择“输入字段”,然后在参照写上模板指令,点“插入”,再写上标识的名称

完成输入字段的定义

1.1.4.      框架

我们有时要在文档中放入图片,比如产品图,这时就要用到框

通过“插入”->框架->框架, 然后选择“选择”标签,在“名称” 框那里输入模板指令

必须以 image: 开头 如: image: asimage(user.company_id.logo)

1.2.     取回数据

前面一节讲了如何在模板中定义容器,这时就要把真实的数据填入其中

当我胶用默认的解析器,创建任何一个模型的报表时,有些预定义的变量

l  objects :当创建报表时,它是对象的一个列表,当你想得到你所选的所有数据,你就要对这个变量做循环处理

l  o: 如查你只选择了一个对象,你就可以直接用这个变量,没必要创建循环

l  data: 来自向导的数据

l  user: 请求生成报表时的用户

l  time: 基于python库操作时间

以合作伙伴对象为例来说明

你想得到你选择第一个客户的名称

<objects[0].name>

你可以得到 erp系统中”设置”->“技术”->”数据结构”->模型  里面所有模型的数据

得到当前用户公司的币种

<user.company_id.currency_id.code>

这个获取方法和系统代码获取数据一样的方式,通过面向对象的“.”

1.3.     条件部分

在现实生活也有很多的判断,这个报表也有。

通过<if> </if> 一对一对出现

如:

<if test="objects[0].customer">

This text is being printed when partner is a customer.

</if>

如果合作伙伴是客户,就打印中间那段话

因为要成对出现,可以看出,至少要定义两个独立的容器

当多重判断时,我们用choose 来定义

<choose>
<when test="objects[0].customer">
This text is being printed when partner is a customer.
</when>
<when test="objects[0].supplier">
This text is being printed when partner is a supplier.
</when>
<otherwise>
This text is being printed in all the other occasions.
</otherwise>
</choose>

如果是客户,就打印客户那段话,若是供应商,就打印供应商那段话,那两个都不是,就打印 otherwise 中间那段话

1.4.     循环部分

这个在系统中还是用的很,当你选择了多个对象时。或你在一个订单里面加入多个产品时,

这些数据要呈现出来都要用到循环。

通过成对的<for> </for>来实现

 <for each="one_partner in objects">
<if test="one_partner.customer">
<one_partner.name>
</if>
</for>

上面用了for来循环,同时中间还有一个条件语句

上面功能是把你所选的合作伙伴,只会是客户类型的,才会打印出来

one_partner 这个面对不同的对象,自己可以取一个对应的名字,用来在内部循环用

1.5.     附加方法

为了方便操作,定义一系列的方法

1.5.1.      语言相关的方法

l  getLang:  为模板设定默认语言

l  gettext:  为给定的文件获得译文

l  _: 功能和gettext一样

l  getLang: 得到当前影响 模板的语言

l  currency_to_text: 转换货币浮点格式

1.5.2.      数学相关的方法

l  sum_field:得到列表中对象的命名字段的和

l  sumif: 得到所选择的列表中对象指定条件的命名字段的和

1.5.3.      统计方法

l  average: 得到所有列表对象字段的平均数

l  count:得到列表中对象的总数

l  count_blank: 得到字段命名为空的列表中对象的数目

l  countif: 得到指定条件的列表中对象的数目

l  larger:得到列表对象最大值 k-th

l  max_field: 得到列表对象最大值

l  min_field: 得到列表对象最小值

l  small: 得到列表对象最小值 k-th

1.5.4.      时间相关方法

l  dec_to_time: 把时间转换为 hh:min 格式

l  time: 得到操作时间

1.5.5.      条形码相关方法

l  barcode: 转换数字为条形码

1.5.6.      帮助方法

l  asarray: 得到所有对象的命名字段为一个列表

l  asimages: 转换二进制数据为图片

l  bool_as_icon: 翻译布尔值 为 文本

l  browse: 得到对象列表

l  chunks: 把对象列表拆分成组

l  debugit: 帮助调试模板

l  erp2_gw: 插入EPL v2’gw’ 命令

l  field_accuracy: 得到对象字段的精度

l  field_size: 得到对象字段的最大范围

l  get_attachments:得到对象的附件

l  get_label:得到字段名称的译文

l  get_name: 得到对象的表术文

l  get_selection_item: 得到下接人工设定的字符

html_embed_image:得到html文档中插入的图片

l  html_escape: 过滤html文档中不安全的字符

l  html_builduri: 从字典中组合成uri字符串

l  html_prettyuri: 转换成安全的uri字符串

l  insert-subreport: 插入字报表

l  itemize:

l  safe:得到安全的表达式

l  search:在对象列表中做搜索

l  search_ids:  只在列表对象的id中做搜索

(41) Aeroo 模板设计基础教程的更多相关文章

  1. iOS10 UI设计基础教程

    iOS10 UI设计基础教程 介绍:本教程针对iOS初级开发人员,基于iOS 10系统,使用Swift 3.0语言讲解如何进行UI设计.本教程内容涵盖UI基础构成.UI元素.自动布局.自适应UI.UI ...

  2. 《开源网店系统iWebShop2.0模板开发教程》的说明

    <开源网店系统iWebShop2.0模板开发教程>是网上广为流传的一个文档,有点问题. 其中的第4章: ========================================== ...

  3. GIS案例学习笔记-CAD数据分层导入现有模板实例教程

    GIS案例学习笔记-CAD数据分层导入现有模板实例教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 1. 原始数据: CAD数据 目标模板 2. 任务:分5个图层 ...

  4. phpcms v9模板制作教程

    phpcms v9模板制作教程(转载) 第一节 1.首先下载phpcms v9的集成安装包并安装,这里就不详细说明了. 2.本地调试建议大家使用APMserver,或者wampserver等,可以到P ...

  5. phpcms新建模板页教程

    phpcms新建模板页教程1 直接去template文件夹里的复制的模板页 比方说list1.html2 去后台 界面模板风格 default 默认模板 点击详情列表 找到list1.htm 设置中文 ...

  6. (42) Aeroo 模板实战

    用writer设计一个采购单的模板 我用的是libreoffice 5.2.x 对于这个表格是通过工具栏上的插入指定的表格行和列完成,然后排版 对于单号po00001 这这样插入的 这样就完成一个订单 ...

  7. phpwind9.0模板制作教程——制作论坛风格

    由于论坛模板机制和门户等模板机制不同,所以今天我就先重点讲讲论坛模板制作的大概过程. 一.先来熟悉下phpwind9.0的论坛模板机制. 其实phpwind9.0的模板机制和discuzx2.5差不多 ...

  8. phpcms v9模板制作教程(转载)

    第一节 1.首先下载phpcms v9的集成安装包并安装,这里就不详细说明了. 2.本地调试建议大家使用APMserver,或者wampserver等,可以到PHPCMS吧官方网站首页链接下载.安装好 ...

  9. ASP.NET CMS模板培训教程

    注意:此文档中出现所有的类,都是公司内部的,也就是说,只是给公司内部人员培训的一篇文章而已,如果其他的人看到了, 看不懂里面的类,那是因为这都是我公司内部的框架. 首先是进入我们的系统的后台,然后选择 ...

随机推荐

  1. select2插件的使用

    <select id="prd_tech_for_load" class="selectable" style="width:180px;&qu ...

  2. throttle在程序中的作用

    throttle http://www.iciba.com/throttle N-COUNT (汽车.飞机的)节流阀,油门杆,油门踏板 The throttle of a motor vehicle ...

  3. [Android Tips] 8. Install apk on multiple connected devices

    $ adb devices | | | xargs -I X adb -s X install pathto/myapp-release.apk

  4. copy file to docker from realhost

    http://blog.e3rp4y.me/blog/2014/05/23/copy-file-from-host-to-docker.html --------------------------- ...

  5. Struts(八):动态方法调用

    动态方法调用:通过url动态调用action中的方法. 默认情况下,Struts的动态方法调用处于禁用状态. 测试定义一个action类: package com.dx.actions; public ...

  6. AJAX-----11iframe模拟ajax文件上传效果原理3

    如果直接给用户提示上传成功,那么如果用户上传的文件比较大点,那么等上半天都没反映,那么用户很有可能会刷新或者关了从来等... 那么会给我们服务器带来一定的影响,所以我们可以对这方面的用户体验度进行提升 ...

  7. linux命令-sftp(模拟ftp服务)和scp(文件异地直接复制)

    1)sftp sftp是模拟ftp的服务,使用22端口 针对远方服务器主机 (Server) 之行为 变换目录到 /etc/test 或其他目录 cd /etc/testcd PATH 列出目前所在目 ...

  8. delphi TIdHTTP Post乱码问题

    这里主要说的是中文乱码的问题 1. 发过去的是乱码如下处理, 服务器采用的是UFT-8编码的情况下 uses  HTTPApp;      sPost := HTTPEncode(UTF8Encode ...

  9. C++开源大全

    程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列 ...

  10. Annotation

    Annotation是给类,方法或域上加的一种特殊的标记,可以通过反射取到注解的类型和值,从而完成某种特定的操作. 定义注解需要使用元注解,元注解有@Retention和@Target p.p1 { ...