zoukankan      html  css  js  c++  java
  • (41) Aeroo 模板设计基础教程

    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: 得到下接人工设定的字符

    l  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中做搜索

  • 相关阅读:
    nohup 后台启动程序,并输出到指定日志
    linux-Centos7安装python3并与python2共存
    Notepad++中Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
    使用pip出现 cannot import name "main"
    Notepad++ 快捷键
    Notepad++ ssh NppFTP链接linux
    git 密钥
    查看oracle数据库锁
    Linux利用PROMPT_COMMAND实现操作记录的功能
    openstack-queens
  • 原文地址:https://www.cnblogs.com/toby2chen/p/5857793.html
Copyright © 2011-2022 走看看