浏览代码

Módulo para ticket de ferreteria en factura de ventas

SEBAS 1 周之前
当前提交
acc46e56b4
共有 9 个文件被更改,包括 150 次插入0 次删除
  1. 1 0
      __init__.py
  2. 二进制
      __init__.pyc
  3. 15 0
      __openerp__.py
  4. 13 0
      account_invoice_patch.py
  5. 二进制
      account_invoice_patch.pyc
  6. 14 0
      report/report_ticket_action.xml
  7. 34 0
      report/report_ticket_ferreteria.py
  8. 54 0
      report/report_ticket_template.xml
  9. 19 0
      views/invoice_view.xml

+ 1 - 0
__init__.py

@@ -0,0 +1 @@
+import account_invoice_patch

二进制
__init__.pyc


+ 15 - 0
__openerp__.py

@@ -0,0 +1,15 @@
+
+{
+    'name': 'Ticket Venta Ferretería',
+    'version': '1.0',
+    'category': 'Accounting',
+    'summary': 'Ticket de venta estilo POS',
+    'description': 'Impresión de ticket de venta estilo punto de venta para facturas.',
+    'author': 'Adaptado por Sebastian Penayo',
+    'depends': ['account'],
+    'data': [
+        'report/report_ticket_template.xml',
+        'report/report_ticket_action.xml',
+    ],
+    'installable': True,
+}

+ 13 - 0
account_invoice_patch.py

@@ -0,0 +1,13 @@
+
+from openerp.osv import osv
+
+class account_invoice(osv.osv):
+    _inherit = 'account.invoice'
+
+    def print_ticket_ferreteria(self, cr, uid, ids, context=None):
+        return {
+            'type': 'ir.actions.report.xml',
+            'report_name': 'ticket_venta.report_ticket_ferreteria',
+            'datas': {'ids': ids},
+            'nodestroy': True
+        }

二进制
account_invoice_patch.pyc


+ 14 - 0
report/report_ticket_action.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+  <data>
+    <report
+        id="report_ticket_venta"
+        model="account.invoice"
+        string="Ticket Venta Ferretería"
+        report_type="qweb-pdf"
+        name="ticket_venta.report_ticket_ferreteria"
+        file="ticket_venta.report_ticket_ferreteria"
+        attachment_use="False"
+    />
+  </data>
+</openerp>

+ 34 - 0
report/report_ticket_ferreteria.py

@@ -0,0 +1,34 @@
+
+from openerp import api, models
+
+# class report_ticket_ferreteria(models.AbstractModel):
+#     _name = 'report.ticket_venta.report_ticket_ferreteria'
+#
+#     @api.multi
+#     def render_html(self, data=None):
+#         report_obj = self.env['report']
+#         report = report_obj._get_report_from_name('ticket_venta.report_ticket_ferreteria')
+#         docargs = {
+#             'doc_ids': self._ids,
+#             'doc_model': report.model,
+#             'docs': self.env[report.model].browse(self._ids),
+#         }
+#         return report_obj.render('ticket_venta.report_ticket_ferreteria', docargs)
+#
+#
+
+
+class report_ticket_ferreteria(models.AbstractModel):
+    _name = 'report.ticket_venta.report_ticket_ferreteria'
+
+    @api.model
+    def render_qweb_pdf(self, docids, data=None):
+        docs = self.env['account.invoice'].browse(docids)
+        return self.env['report'].render(
+            'ticket_venta.report_ticket_ferreteria',
+            {
+                'doc_ids': docids,
+                'doc_model': 'account.invoice',
+                'docs': docs,
+            }
+        )

+ 54 - 0
report/report_ticket_template.xml

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+  <data>
+    <template id="report_ticket_ferreteria">
+      <t t-call="report.external_layout">
+        <div class="page" style="width: 78mm; font-size: 12px; font-family: monospace; margin-top: 5px;">
+          <t t-foreach="docs" t-as="doc">
+            <div style="text-align: center;">
+              <strong><t t-esc="doc.company_id.name"/></strong><br/>
+              <t t-esc="doc.company_id.actividad or ''"/><br/>
+              <t t-esc="doc.company_id.street or ''"/><br/>
+              <t t-esc="doc.company_id.street2 or ''"/><br/>
+              Tel: <t t-esc="doc.company_id.phone or ''"/><br/>
+              -------------------------------<br/>
+            </div>
+
+            <div>
+              <strong>Factura:</strong> <t t-esc="doc.number or doc.name"/><br/>
+              <strong>Cliente:</strong> <t t-esc="doc.partner_id.name or ''"/><br/>
+              -------------------------------<br/>
+            </div>
+
+            <table style="width:100%; font-size:11px;">
+              <thead>
+                <tr>
+                  <th style="text-align:left;">Cant</th>
+                  <th style="text-align:left;">Descripción</th>
+                  <th style="text-align:right;">Total</th>
+                </tr>
+              </thead>
+              <tbody>
+                <tr t-foreach="doc.invoice_line" t-as="line">
+
+                  <td><t t-esc="'{0:,.0f}'.format(line.quantity)"/></td>
+                  <td><t t-esc="line.name"/></td>
+                  <td style="text-align:right;"><t t-esc="'{0:,.0f}'.format((line.quantity * line.price_unit))"/></td>
+                </tr>
+              </tbody>
+            </table>
+
+            <div style="border-top: 1px dashed #000; margin-top: 5px;"></div>
+            <div style="text-align:right;">
+              <strong>Total: </strong><t t-esc="'{0:,.0f}'.format(doc.amount_total)"/>
+            </div>
+            <br/>
+            <div style="text-align: center;">
+              Gracias por su compra
+            </div>
+          </t>
+        </div>
+      </t>
+    </template>
+  </data>
+</openerp>

+ 19 - 0
views/invoice_view.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<openerp>
+  <data>
+    <record id="view_invoice_form_ticket" model="ir.ui.view">
+      <field name="name">account.invoice.ticket.button</field>
+      <field name="model">account.invoice</field>
+      <field name="inherit_id" ref="account.invoice_form"/>
+      <field name="arch" type="xml">
+        <xpath expr="//header" position="inside">
+          <button name="print_ticket_ferreteria"
+                  type="object"
+                  string="Imprimir Ticket"
+                  class="oe_highlight"
+                  attrs="{'invisible': [('state','=','draft')]}"/>
+        </xpath>
+      </field>
+    </record>
+  </data>
+</openerp>