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. WebSocket IO和后端建立长连接,即时接受后端消息

    https://github.com/TooTallNate/Java-WebSocket ant得到java_websocket.jar改名为WebSocket.jar放到 https://gith ...

  2. Vcenter server 5.5上传ISO镜像

    1.摘要 --- 浏览要上传的硬盘. 2.创建一个文件夹专业门存放ISO镜像. 3.选择上传文件. 4.选择文件上传即可.

  3. 查看IIS哪个应用程序池占用CPU过高

    1. 进入cmd 2. %systemroot%\system32\inetsrv\AppCmd.exe list wp       这样就能找到活动的应用程序池的PID了 3. 对照资源管理器的PI ...

  4. 使用Karma 来进行 JavaScript 测试

    最近接触了一些新的前端开发知识,主要是利用AngularJS做single page application.我也借这个机会,花了几天时间了解了如何对javascript进行测试. 这里将介绍一些使用 ...

  5. Echarts 地图(map)插件之 鼠标HOVER和tooltip自定义提示框

    [自行修改 "引号"] 一.鼠标HOVER时的事件: 参照官方文档解释, 可以看出这款插件有丰富的鼠标事件可供选择: 调用鼠标HOVER事件的方法很简单,只需把以下代码放到char ...

  6. 2Sigma OA prepare: Longest Chain

    DP use HashMap: 根据string的长度sort,然后维护每个string的longest chain,default为1,如果删除某个char生成的string能提供更长的chain, ...

  7. c/c++ 数据结构 链表插入数据代码(一)

    链表插入数据,有两种方法,链表头定义为指针. 1.指针传递 #include <stdio.h> #include <stdlib.h> typedef struct LNod ...

  8. 【Selenium】2.安装Selenium IDE和 FireBug

    本文供学习交流之用,没有商业用途,没有盈利. 完全是我自己为督促自己学习而翻译的.翻译的不好,见谅.来源于:http://www.guru99.com/install-selenuim-ide.htm ...

  9. org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 421. occured resuming VM.

    环境: 导入excel的时候,会根据路径,读取EXCEL的数据. 原因: 电脑上的防火墙关闭

  10. VS2013 密钥

    MXS&Vincene  ─╄OvЁ  &0000017─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...