javascript - 如何从销售订单打印 POS 收据?
问题描述
我需要从销售订单中打印具有相同产品数量等的 POS 收据。
在销售订单中,我创建了一个按钮“打印 POS 收据”。使用此按钮,我想触发一个打印出带有销售订单行的收据的方法。
所以我需要找到创建 POS 收据并将销售订单行值传递给它的方法。
那么哪种方法在 POS 中打印收据,我该如何触发呢?在models.js
吗?
解决方案
在那些 Odoo 版本中,POS 中打印的收据是由 JavaScript 制作的屏幕截图(实际上只有收据 div)。但是您不能在销售订单视图上使用这种方法。
但是,还有另一种使用普通 Qweb 报告将票证打印成 PDF 的方法。如果您单击 POS 菜单,您将在左边距找到“订单”菜单选项。您将在表单和列表视图的“打印”菜单下拥有打印选项。
如果您转到该point_of_sale
模块,您会发现report_receipt.xml
使用 Qweb 语言编写的文件。您可以对其进行自定义以使其与sale.order
模型一起使用。但是考虑到 paperformat 应该是point_of_sale.paperformat_posreceipt
,你会在这些代码的底部找到 paperformat 分配:
<template id="report_receipt">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<div class="page">
<div class="row">
<div class="col-xs-12 text-center">
<h2 t-esc="o.user_id.company_id.name"/>
<div t-field="o.partner_id"
t-field-options='{"widget": "contact", "fields": ["address", "name", "phone", "fax"], "no_marker": true}'/>
User: <span t-field="o.user_id"/><br/>
Date: <span t-field="o.date_order"/><br/>
</div>
</div>
<div class="row">
</div>
<table class="table table-condensed">
<thead>
<tr>
<th>Description</th>
<th class="text-right">Quantity</th>
<th class="text-right">Price</th>
</tr>
</thead>
<tbody>
<tr t-foreach="o.lines" t-as="line">
<td><span t-field="line.product_id"/></td>
<td class="text-right">
<t t-if="o.state != 'cancel' and o.statement_ids">
<span t-field="line.qty"/>
</t>
</td>
<td class="text-right">
<t t-if="o.state != 'cancel' and o.statement_ids">
<span t-esc="formatLang(net(line.id), currency_obj=res_company.currency_id)"/>
</t>
<t t-if="line.discount != 0.0">
<span t-esc="line.discount"/>%
</t>
</td>
</tr>
</tbody>
</table>
<div class="row">
<div class="col-xs-12 pull-right">
<table class="table table-condensed">
<tr class="border-black">
<td><strong>Taxes</strong></td>
<td class="text-right">
<strong t-esc="formatLang(o.amount_tax, currency_obj=res_company.currency_id)"/>
</td>
</tr>
<tr>
<td><strong>Total</strong></td>
<td class="text-right">
<strong t-esc="formatLang(o.amount_total, currency_obj=res_company.currency_id)"/>
</td>
</tr>
</table>
</div>
</div>
<table class="table table-condensed">
<thead>
<tr>
<th>Payment Mode</th>
<th>Amount</th>
</tr>
</thead>
<tbody>
<tr t-foreach="get_journal_amt(o)" t-as="d">
<td>
<span t-esc="d['name']"/>
</td>
<td>
<span t-esc="formatLang(d['amt'], currency_obj=res_company.currency_id)"/>
</td>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</template>
<report
id="action_report_pos_receipt"
string="Receipt"
model="pos.order"
report_type="qweb-pdf"
name="point_of_sale.report_receipt"
file="point_of_sale.report_receipt"
/>
<record id="action_report_pos_receipt" model="ir.actions.report.xml">
<field name="paperformat_id" ref="point_of_sale.paperformat_posreceipt"/>
</record>
推荐阅读
- git - Visual Studio 2018 的 Git 扩展中的“Cherry-Pick”菜单项有什么作用?
- php - 无法分配内存错误和网页崩溃
- python - Numpy:将数组的每个元素与所有其他元素进行比较(±常数)
- python - 如何计算等高线内的面积?
- python - 熊猫:我想在时间序列中创建一个列,其中值取决于前一行的值
- python - 我试图找到快乐的数字,但我的程序进入了无限循环
- raspberry-pi - 使用 bash 脚本打开/关闭本地 wifi 设备
- python - __init__ 中的多索引 DataArray
- java - 在 Webpshere Liberty 服务器中配置两个 context-root 相同的 war 文件
- c++ - 鼠标可调整大小,可拖动的小部件