用writer设计一个采购单的模板

我用的是libreoffice 5.2.x

对于这个表格是通过工具栏上的插入指定的表格行和列完成,然后排版

对于单号po00001 这这样插入的

这样就完成一个订单号的插入

这里针对一个订单,就直接用o  ,若是针对多个选中的订单就要用 objects 做循环

下面看一下不同单元插入的输入字段

<for each="line in o.order_line">

对于内循环的就不是用o了。就用line,主要根据<for> 里面自己定义的,我是用line

这样就完成一个循环要定义的字段

这时可能有些同学会问,这些字段是哪里来的。下面就告诉大家

当鼠标放上对,就可以显示对应的字段,你就可以拿这些字段名用在报表模板中

对于订单明细,那要单击进去查

是不是很简单,就这样把模板设计完了。

然后新建报表

测试一下效果

我只有一个采购单,那就写1那个序号

这就看到效果,

测试的可以,就把这个报表通过按扭添加到采购订单那里

这里可以到采购订单列表那里看

可以看到添加按钮成功,这样就可以通过点这个按钮进行打印

对于图片,在odt模板是采用插入框架来实现字段定义

用于实际的报表,你们可以结合前一节的教程和这节的实操去完成。

image: asimage(product.product_image)  这个放图片

<for each="o in objects"></for>  对所选项做循环

下面用calc来设计销售订单的模版

分析一下:

针对图片,是插入一个图做为占位符,然后设定它的name属性的值

若是用calc 来设计模板是插入超链接

不用<> 而是用python:// 开头

红色箭头那里是设定对应内容的超链接

后面我用了格式化日期,从而在开头设了 setLang

下面是产品明细:

上面的index,主要用于下面的NO. 对应的编号

在第一次选择对应的内容设置超链接时会相对简单,当要再次修改对应文字的超链接要有一定的小技巧

如:

要再次改变红框字对应的超链接的值

跟我来一起操作

第一步

对着它右击:

第二步:

移到内容上单击:

这时弹出框会消失

第三步:

对着内容双击:

这样就选中了

第四步:

接着单点工具栏的超级链接按钮

修改红框的值,然后保存就可以了

配合上章的函数,可以格式报表的数据,小心操作,就可以设计出自己要用的模板

${(object.name or '').replace('/','_')}_${object.state == 'draft' and 'draft' or ''}.pdf  自定义输出报表文件名

结合report_custom_filename 模块

(42) Aeroo 模板实战的更多相关文章

  1. (41) Aeroo 模板设计基础教程

    1.     理论基础 注:我采用libreoffice5.2设计讲解 1.1.     定义模板指令 模板指令的语法和Genshi 模板语言相兼容,可以用Libreoffice( Write, Ca ...

  2. velocity模板实战

    场景:json配置报文转换遇到的问题:1.json报文转换成map,多节点如何处理?数组如何处理? 2.velocity模板处理数组 3.应用之间rabbitmq通讯map反序列化,数组报错?知识点: ...

  3. C++模板实战6:迭代器

    1 迭代器的类型: 输入迭代器 .前向迭代器.双向迭代器.跳转迭代器以及输出迭代器.这五种迭代器的限制条件从左至右越来越强. 2 输入迭代器需满足的条件: X u(a); X可复制构造 u=a; 可赋 ...

  4. Android学习系列(42)--Android Studio实战技巧

    使用android studio开发项目的一些问题,功能和技巧. 1. 环境 Mac OSX 10.9.5 + Android Studio 0.8.9 2. gradle项目加载超慢 这是因为gra ...

  5. [js高手之路]Node.js模板引擎教程-jade速学与实战1

    环境准备: 全局安装jade: npm install jade -g 初始化项目package.json: npm init --yes 安装完成之后,可以使用 jade --help 查看jade ...

  6. [js高手之路]Node.js模板引擎教程-jade速学与实战1-基本用法

    环境准备: 全局安装jade: npm install jade -g 初始化项目package.json: npm init --yes 安装完成之后,可以使用 jade --help 查看jade ...

  7. [转]C++ template —— 模板基础(一)

    <C++ Template>对Template各个方面进行了较为深度详细的解析,故而本系列博客按书本的各章顺序编排,并只作为简单的读书笔记,详细讲解请购买原版书籍(绝对物超所值).---- ...

  8. Python Flask打造一个视频网站实战视频教程

    下载链接:https://www.yinxiangit.com/607.html 目录: 本套课程从零基础讲解flask开发网站.涉及到的知识点包括:Python和pycharm的安装.urls和视图 ...

  9. C++ template —— 模板基础(一)

    <C++ Template>对Template各个方面进行了较为深度详细的解析,故而本系列博客按书本的各章顺序编排,并只作为简单的读书笔记,详细讲解请购买原版书籍(绝对物超所值).---- ...

随机推荐

  1. UITableViewCell内放置复杂结构的subview,但subview中的Button不响应点击事件

    原因可能是subview的frame没设置或者不对,这种情况下subview的内容依然正常显示,但是无法接收点击响应的消息. 具体来说就是缺少了下面这句代码: // subview - (id)ini ...

  2. js函数的传参是按值传对递

    根据js高级程序设计第三版编写,对于函数的参数只能按值传递是这样解释的: ECMAScript 中所有函数的参数都是按值传递的.也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另 ...

  3. The Same Game-POJ1027模拟

    The Same Game Time Limit: 1000MS Memory Limit: 10000K Description The game named "Same" is ...

  4. window 常用快捷键

    1.新建文件夹  ctrl+shift+n 2.删除文件夹  ctrl+d 3.打开命令行  窗口+r 4.关闭命令行  命令行内输入exit然后回车 5.快捷键操作浏览器 1)ctrl+w关闭当前标 ...

  5. 佛洛依德 c++ 最短路径算法

    //20142880 唐炳辉 石家庄铁道大学 #include<iostream> #include<string> using namespace std; #define ...

  6. mysql 存储过程和事件调度

    存储过程(procedure): 建立一个存储过程需要知道的基础知识 1.确定输入/输出的参数和类型: IN tname varchar(20) 其中 IN 表示输入参数,tname  是参数名 va ...

  7. 公共交通3D指纹验证系统解决方案

    为了响应国家关于老年人的优待政策,华本研发了退休老人乘公交车指纹认证系统.指纹认证系统不仅方便老人乘坐公交,还能为公共部门减压,杜绝伪造优待证乘坐公交的不法行为. 目前,优待证都是人工检查,缺乏有效的 ...

  8. Redis3.20阅读-SDS实现

    声明:这是本人参考黄建宏的<redis设计与实现>(源码版本是redis3.0)来学习redis3.20源码的笔记,如果有什么不对的地方,欢迎大家指正,大家一起学习.一起进步,QQ:499 ...

  9. MVC开发模式之Servlet+jsp+javaBean

    Servlet+jsp+JavaBean组合开发是一种MVC开发模式,控制器Controller采用Servlet.模型Model采用JavaBean.视图View采用JSP. 1.Web开发的请求- ...

  10. git本地提交到远程仓库命令

    创建好远程仓库,然后要从本地上传代码到远程仓库: 1.git init 初始化git本地仓库 2. git add 添加到暂存区 3. git commit -am "提交备注" ...