如何从销售订单打印POS收据?

时间:2018-08-01 12:57:47

标签: javascript xml odoo odoo-8 odoo-9

我需要从销售订单中打印具有相同产品数量等的POS收据。

在销售订单中,我创建了一个“打印POS收据”按钮。使用此按钮,我想触发一种打印带有销售订单行的收据的方法。

所以我需要找到创建POS收据并将销售订单行值传递给它的方法。

那么哪种方法在POS中打印收据,如何触发呢?是在models.js中吗?

1 个答案:

答案 0 :(得分:1)

在那些Odoo版本中,正在POS中打印的收据是JavaScript制作的屏幕截图(实际上只是收据div)。但是您不能在销售订单视图上使用这种方法。

但是,还有另一种方法可以通过普通的Qweb报告将票证打印为PDF。如果单击POS菜单,则会在左侧空白处找到“订单”菜单选项。您将在表单和列表视图的“打印”菜单下拥有打印选项。

print receipt

如果转到point_of_sale模块,则会发现使用Qweb语言编写的report_receipt.xml文件。您可以对其进行自定义,以使其与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>