SEBAS hace 9 meses
padre
commit
d75c494534

+ 2 - 1
__init__.py

@@ -24,8 +24,9 @@ import partner_data
 # import envio_lotes
 # import eventos_dte
 # import mje_resultado
+import talonario
 import account_move
-import ruc_documentos_timbrados
 import res_company
 
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

BIN
__init__.pyc


+ 4 - 5
__openerp__.py

@@ -16,7 +16,10 @@
 #
 #    You should have received a copy of the GNU Affero General Public License
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
+#       "consulta_dte_view.xml",
+        # "envio_lotes_view.xml",
+        # "eventos_dte_view.xml",
+        # "mje_resultado_view.xml",
 ##############################################################################
 
 
@@ -29,10 +32,6 @@
     'data': [
         "partner_data_view.xml",
         "res_company_view.xml",
-        # "consulta_dte_view.xml",
-        # "envio_lotes_view.xml",
-        # "eventos_dte_view.xml",
-        # "mje_resultado_view.xml",
         "ruc_documentos_timbrados_view.xml",
         "set_menu.xml",
         "account_move_view.xml",    ],

+ 142 - 28
account_move.py

@@ -20,44 +20,158 @@
 ##############################################################################
 
 from openerp import models, fields, tools, api, _
+import json
+import base64
+import requests
+import io
+
+try:
+    import qrcode
+except ImportError:
+    qrcode = None
 
 class account_invoice(models.Model):
     _name = 'account.invoice'
     _inherit = 'account.invoice'
     _description = 'Add extra data to SET in account invoice'
 
-    cdc = fields.Char('Código de Control (CDC)')
-    nro_factura = fields.Char(string='Factura Nº', related='number', store = True)
-    suc = fields.Char('SUC')
-    sec = fields.Char('Sec')
-    talonario = fields.Many2one('ruc.documentos.timbrados', string='Talonario')
-    timbrado = fields.Char(string='Timbrado', related="talonario.name")
-    fecha_final = fields.Date(string='Vencimiento de Timbrado', related="talonario.fecha_final")
-    nro_actual = fields.Integer('Nro Actual')
+    cdc = fields.Char(string='Código de Control (CDC)')
+    numero_factura = fields.Char(string='Factura Nº', related='number', store = True)
+    sucursal = fields.Char(string='Sucursal', compute='_compute_suc_sec', store=True)
+    sec = fields.Char('Sec', compute='_compute_suc_sec', store=True)
+    nro_actual = fields.Char('Nro Actual', compute='_compute_suc_sec', store=True)
+    talonario_id = fields.Many2one('talonario', string='Talonario')
+    timbrado_name = fields.Char(related='talonario_id.name', string='Número de timbrado', readonly=True)
+    talonario_tipo_documento = fields.Selection(related='talonario_id.tipo_documento', string='Tipo de documento', readonly=True)
+    fecha_final = fields.Date(related='talonario_id.fecha_final', string='Fecha de expiración de timbrado', readonly=True)
     no_mostrar_libro_iva = fields.Boolean(string='No visualizar en el libro IVA')
     importacion = fields.Boolean(string='Fact. de importación')
     importacion_gasto = fields.Boolean(string='Fact. de gastos de importación')
+    tipo_emision = fields.Selection([('1','Normal'),('2','Contingencia')],'Tipo de Emisión')
+    tipo_transaccion = fields.Selection([('1','Venta de mercadería'),('2','Prestación de servicios'),('3','Mixto (Venta de mercadería y servicios)'),('4','Venta de activo fijo'),('5','Venta de divisas'),('6','Compra de divisas'),('7','Promoción o entrega de muestras'),('8','Donación'),('9','Anticipo'),('10','Compra de productos'),('11','Compra de servicios'),('12','Venta de crédito fiscal'),('13','Muestras médicas (Art. 3 RG 24/2014)')],'Tipo de transacción')
+    tipo_impuesto = fields.Selection([('1','Normal'),('2','Contingencia')],'Tipo de impuesto')
+    indicador_presencia = fields.Selection([('1','Operación presencial'),('2','Operación electrónica'),('3','Operación telemarketing'),('4','Venta a domicilio'),('5','Operación bancaria'),('6','Operación cíclica'),('7','ver1'),('8','ver2'),('9','Otros')],'Indicador de Presencia')
+    descripcion_indi_presencia = fields.Char('Describir Otros')
+    # qr_code = fields.Binary('Código QR', compute='_compute_qr_code')
+    # texto_qr = fields.Char(invisible=True)
+    dEstRes = fields.Char('Estado de respuesta')
+    dProtAut = fields.Char('Código de operación')
+    dFecProc = fields.Datetime(string='Fecha de respuesta')
+    # mje_resultado_ids = fields.One2many('mje.resultado', 'invoice_id', string='Resultados de mensajes')
+    operacion_credito = fields.Selection([('1','Normal'),('2','Contingencia')],'Operación Crédito')
+
+    estado_de = fields.Selection([
+        ('noenviado', 'No enviado'),
+        ('enviado', 'Enviado'),
+        ('aprobado', 'Aprobado'),
+        ('rechazado', 'Rechazado'),
+        ('cancelado', 'Cancelado')],
+        string='Estado DE',
+        default='noenviado'
+    )
+
+
+    @api.onchange('talonario_id')
+    def _onchange_talonario_id(self):
+        if self.talonario_id:
+            self.timbrado_name = self.talonario_id.name
+            self.talonario_tipo_documento = self.talonario_id.tipo_documento
+            self.fecha_final = self.talonario_id.fecha_final
+        else:
+            self.timbrado_name = False
+            self.talonario_tipo_documento = False
+            self.fecha_final = False
+
+
+    @api.depends('number', 'journal_id', 'state')
+    def _compute_suc_sec(self):
+        for invoice in self:
+            if invoice.state == 'cancel' and invoice.type == 'out_invoice':
+                invoice.sucursal = ''
+                invoice.sec = ''
+                invoice.nro_actual = ''
+            elif invoice.journal_id.id == 2 and invoice.number and invoice.type == 'out_invoice':
+                parts = invoice.number.split('-')
+                invoice.sucursal = parts[0] if len(parts) > 0 else ''
+                invoice.sec = parts[1] if len(parts) > 1 else ''
+                invoice.nro_actual = parts[2] if len(parts) > 2 else ''
+            else:
+                invoice.sucursal = ''
+                invoice.sec = ''
+                invoice.nro_actual = ''
+
+
+
 
     @api.multi
     def action_invoice_open(self):
-        res = super(AccountInvoice, self).action_invoice_open()
         for invoice in self:
-            if invoice.type == 'out_invoice':
-                campo_original = invoice.nro_factura.replace("-", "")
-                campo1 = campo_original[:3]
-                campo2 = campo_original[4:7]
-                campo3 = campo_original[7:]
-                invoice.suc = campo1
-                invoice.sec = campo2
-                invoice.nro_actual = campo3
-        return res
-
-
-    # def separar_cadena (self):
-    #     if self.nro_factura:
-    #         longitud = len(self.nro_factura)
-    #         if longitud >= 3:
-    #             self.sec = self.nro_factura[3:6]
-    #         if longitud >= 6:
-    #             self.nro_actual = self.nro_factura[6:]
-    #         self.suc = self.nro_factura[:3]
+            cdc = self.calcular_cdc(invoice)
+            invoice.cdc = cdc
+
+        return super(AccountInvoice, self).action_invoice_open()
+
+    @staticmethod
+    def calcular_cdc(invoice):
+        journal_id = invoice.journal_id.code.zfill(2)
+        ruc = invoice.partner_id.ruc
+        fecha_factura = invoice.date_invoice.strftime("%Y%m%d")
+        cdc = journal_id + ruc + fecha_factura
+
+        return cdc
+
+
+
+
+    # class AccountInvoiceLine(models.Model):
+    #     _inherit = 'account.invoice.line'
+    #
+    #     product_id = fields.Many2one('product.product', 'Producto')
+    #     quantity = fields.Float('Cantidad')
+    #     price_unit = fields.Float('Precio de Venta')
+    #     subtotal = fields.Float('Subtotal', compute='_compute_subtotal')
+    #
+    #     @api.depends('quantity', 'price_unit')
+    #     def _compute_subtotal(self):
+    #         for line in self:
+    #             line.subtotal = line.quantity * line.price_unit
+
+    # class AccountInvoice(models.Model):
+    #     _inherit = 'account.invoice'
+    #
+    #     qr_code = fields.Binary('Código QR', compute='_compute_qr_code')
+    #
+    #     @api.depends('partner_id', 'number', 'amount_total', 'invoice_line_ids')
+    #     def _compute_qr_code(self):
+    #         for invoice in self:
+    #             if not qrcode:
+    #                 invoice.qr_code = False
+    #                 continue
+    #
+    #             qr_data = {
+    #                 'ruc_emisor': invoice.company_id.partner_id.vat,
+    #                 'ruc_receptor': invoice.partner_id.vat,
+    #                 'tipo_documento': 'FACT',
+    #                 'numero_documento': invoice.number,
+    #                 'monto_total': invoice.amount_total,
+    #                 'lineas_factura': [],
+    #             }
+    #
+    #             for line in invoice.invoice_line_ids:
+    #                 linea_factura = {
+    #                     'producto': line.product_id.name,
+    #                     'cantidad': line.quantity,
+    #                     'precio_venta': line.price_unit,
+    #                     'subtotal': line.subtotal,
+    #                 }
+    #                 qr_data['lineas_factura'].append(linea_factura)
+    #
+    #             qr_string = '|'.join(str(value) for value in qr_data.values())
+    #             qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_M, box_size=10, border=4)
+    #             qr.add_data(qr_string)
+    #             qr.make(fit=True)
+    #             qr_image = qr.make_image(fill_color="black", back_color="white")
+    #
+    #             qr_image_data = io.BytesIO()
+    #             qr_image.save(qr_image_data, format='PNG')
+    #             invoice.qr_code = base64.b64encode(qr_image_data.getvalue())

BIN
account_move.pyc


+ 19 - 19
account_move_view.xml

@@ -7,8 +7,8 @@
             <field name="inherit_id" ref="account.invoice_form"/>
             <field name="arch" type="xml">
               <xpath expr="//field[@name='date_invoice']" position="after">
-                    <field name="nro_factura"/>
-                    <field name="suc"/>
+                    <field name="numero_factura"/>
+                    <field name="sucursal"/>
                     <field name="sec"/>
                     <field name="nro_actual"/>
                     <!-- <field name="despacho" options="{'no_quick_create': True, 'no_open': True}" attrs="{'invisible':[('importacion_gasto','!=',True)],'required':[('importacion_gasto','=',True)]}" domain="[('state','=','draft')]"/> -->
@@ -17,13 +17,13 @@
 
              <field name="fiscal_position" position="after">
 
-                    <field name="talonario" string="Talonario"/>
-                    <field name="timbrado" string="Timbrado"/>
+                    <field name="talonario_id" string="Talonario"/>
+                    <field name="timbrado_name" string="Timbrado"/>
                     <field name="fecha_final"/>
               </field>
 
 
-                <!-- <xpath expr="//form/sheet/notebook" position="inside">
+                <!--   <xpath expr="//form/sheet/notebook" position="inside">
                 <page string="Documento Electrónico">
                     <group>
                         <header>
@@ -33,24 +33,24 @@
                         </header>
                     </group>
                     <group>
-                        <group>
-                            <field name="cdc" string="Codigo de Control (CDC) " readonly="1"/>
-                            <field name="qr_code" widget="image" class="oe_avatar" attrs="{'invisible':[('qr_code', '=', False)]}"/>
-                            <field name="secuencia" invisible="1"/>
+                        <group>  -->
+                          <!--  <field name="cdc" string="Codigo de Control (CDC) " readonly="1"/>
+                             <field name="qr_code" widget="image" class="oe_avatar" attrs="{'invisible':[('qr_code', '=', False)]}"/> -->
+                            <!-- <field name="secuencia" invisible="1"/>
                             <field name="fecha_firma" invisible="1"/>
-                            <field name="tipo_emision"/>
-                            <field name="info_kude"/>
+                            <field name="tipo_emision"/> -->
+                            <!-- <field name="info_kude"/>
                             <field name="tipo_transaccion" string="Tipo de transacción"/>
-                            <field name="tipo_impuesto" string="Tipo de impuestos"/>
-                            <field name="indicador_presencia" string="Indicador de Presencia"/>
+                            <field name="tipo_impuesto" string="Tipo de impuestos"/> -->
+                          <!--     <field name="indicador_presencia" string="Indicador de Presencia"/>
                             <field name="descripcion_indi_presencia" string="Describir Otros" attrs="{'invisible':[('indicador_presencia', '!=', 9)],'required':[('indicador_presencia', '=', 9)]}"/>
 
                             <field name="operacion_credito" attrs="{'required':[('tipo_factura', '=', 2)]}"/>
-                        </group>
-                        <group>
+                        </group>  -->
+                      <!--   <group>
 
-                            <field name="texto_qr" invisible="1"/>
-                            <field name="dEstRes" attrs="{'invisible':[('estado_de', 'not in', ('aprobado','rechazado'))]}"/>
+                            <field name="texto_qr" invisible="1"/> -->
+                            <!-- <field name="dEstRes" attrs="{'invisible':[('estado_de', 'not in', ('aprobado','rechazado'))]}"/>
                             <field name="dProtAut" attrs="{'invisible':[('estado_de', 'not in', ('aprobado','rechazado'))]}"/>
                             <field name="dFecProc" attrs="{'invisible':[('estado_de', 'not in', ('aprobado','rechazado'))]}"/>
                             <field name="mje_resultado_ids" readonly="1">
@@ -64,8 +64,8 @@
                                 </tree>
                             </field>
                         </group>
-                    </group>
-                    <group>
+                    </group> -->
+                    <!-- <group>
                         <field name="respuesta" readonly="1" groups="factura_electronica.responsable_factu_elect_group"/>
                         <field name="respuesta_lote" readonly="1" groups="factura_electronica.responsable_factu_elect_group"/>
                     </group>

+ 1 - 1
eventos_dte.py

@@ -56,5 +56,5 @@ class eventos_dte(models.Model):
     mOtEve = fields.Char('Motivo del evento')
     respuesta = fields.Char('Respuesta')
     state = fields.Selection([('femenino','Femenino'),('masculino','Masculino')],'Estado')
-    timbrado_id = fields.Many2one('Documento electrónico')
+    # timbrado_id = fields.Many2one('Documento electrónico')
     tipo = fields.Selection([('femenino','Femenino'),('masculino','Masculino')],'Tipo')

BIN
eventos_dte.pyc


+ 1 - 1
eventos_dte_view.xml

@@ -22,7 +22,7 @@
 
                                             <!-- <field name="invoice_id" attrs="{'invisible':[('tipo', '!=', 'cancelacion')],'required':[('tipo', '=', 'cancelacion')]}" domain="[('estado_de','=','aprobado'),('state','=','cancel')]"/> -->
                                             <field name="cdc" attrs="{'invisible':[('tipo', '!=', 'cancelacion')]}" readonly="1" force_save="1"/>
-                                            <field name="timbrado_id" attrs="{'invisible':[('tipo', '!=', 'inutilizacion')],'required':[('tipo', '=', 'inutilizacion')]}"/>
+                                            <!-- <field name="timbrado_id" attrs="{'invisible':[('tipo', '!=', 'inutilizacion')],'required':[('tipo', '=', 'inutilizacion')]}"/> -->
                                             <field name="dNumIn" attrs="{'invisible':[('tipo', '!=', 'inutilizacion')],'required':[('tipo', '=', 'inutilizacion')]}"/>
                                             <field name="dNumFin" attrs="{'invisible':[('tipo', '!=', 'inutilizacion')],'required':[('tipo', '=', 'inutilizacion')]}"/>
                                             <field name="mOtEve" attrs="{'invisible':[('tipo', 'not in', ('inutilizacion','cancelacion'))],'required':[('tipo', 'in', ('inutilizacion','cancelacion'))]}"/>

+ 1 - 1
mje_resultado.py

@@ -29,7 +29,7 @@ class mje_resultado(models.Model):
     display_name = fields.Char('Display Name')
     name = fields.Char('Descripción')
     dFecProc = fields.Datetime(string='Fecha de respuesta')
-  # invoice_id = fields.Many2one('Documento electrónico')
+    # invoice_id = fields.Many2one('Documento electrónico')
     tipo = fields.Selection([('1','Factura electrónica'),('2','Factura electrónica de exportación'),('3','Factura electrónica de importación'),('4','Autofactura electrónica'),('5','Nota de crédito electrónica'),('6','Nota de débito electrónica'),('7','Nota de remisión electrónica'),('7','Comprobante de retención electrónico')],'Tipo documento')
   # picking_id = fields.Many2one('Picking')
     # xContenDE = fields.Binary(

BIN
mje_resultado.pyc


+ 57 - 25
partner_data.py

@@ -26,15 +26,41 @@ import re
 import sys
 import logging
 
-# logger = logging.getlogger(__name__)
+
+def calculate_dv_of_ruc(input_str):
+    # assure that we have a string
+    if not isinstance(input_str, str):
+        input_str = str(input_str)
+
+    int(input_str)
+
+    base = 11
+    k = 2
+    the_sum = 0
+    for i, c in enumerate(reversed(input_str)):
+        if k > base:
+            k = 2
+        the_sum += k * int(c)
+        k += 1
+
+    _, rem = divmod(the_sum, base)
+    if rem > 1:
+        dv = base - rem
+    else:
+        dv = 0
+
+    return dv
 
 class res_partner(models.Model):
     _name = 'res.partner'
     _inherit = 'res.partner'
     _description = 'Add extra data to SET'
 
+
+    ruc_ci = fields.Char(string='Ruc/CI', required=True)
+
     digitointer = fields.Char('RUC Internacional', size=13)
-    dv= fields.Char('Digito Verificador', size=1)
+    dv = fields.Integer('Dígito Verificador', compute='_compute_dv', store=True)
     esinternacional = fields.Boolean(string='Es internacional' ,default = False)
     retencion = fields.Boolean(string='Retiene IVA' ,default = False)
     retentor_renta = fields.Boolean(string='Retentor renta' ,default = False)
@@ -44,12 +70,12 @@ class res_partner(models.Model):
     retiene_iva_cliente = fields.Boolean(string='Es agente retentor' ,default = False)
     concepto_iva = fields.Selection([('femenino','Femenino'),('masculino','Masculino')],'Concepto IVA')
     concepto_renta = fields.Char('Concepto renta')
-    rucdv = fields.Char('R.U.C.', size=12)
+    rucdv = fields.Char('RUC completo', compute='_compute_ruc_2', store=True)
     naturaleza_receptor = fields.Selection([('1','Contribuyente'),('2','No contribuyente')],'Naturaleza receptor')
     naturaleza_vendedor = fields.Selection([('1','No contribuyente'),('2','Extranjero')],'Naturaleza vendedor')
     nivel = fields.Integer('Nivel', size=2)
     nombre_fantasia = fields.Char('Nombre de fantasia')
-    ci = fields.Char('CI', size=13)
+    ci = fields.Char('CI', compute='_compute_ci', store=True)
     nro_casa = fields.Integer('Nro. Casa')
     nro_documento = fields.Char('Nro. Documento')
     timbrado = fields.Char('Timbrado')
@@ -69,30 +95,36 @@ class res_partner(models.Model):
     tipo_identificacion = fields.Selection([('1','Cédula paraguaya'),('2','RUC'),('3','Cédula extranjera'),('4','Carnet de residencia'),('5','Innominado')],'Tipo de Identificación')
 
 
+    @api.depends('ruc_ci')
+    def _compute_dv(self):
+        for record in self:
+            if isinstance(record.ruc_ci, str):
+                ruc_parts = record.ruc_ci.split('-')
+                ruc_without_verification = ruc_parts[0] if len(ruc_parts) > 1 else record.ruc_ci
+                if record.tipo_identificacion == '1':
+                    record.dv = calculate_dv_of_ruc(ruc_without_verification)
+                else:
+                    if record.tipo_identificacion == '2':
+                        record.dv = calculate_dv_of_ruc(ruc_without_verification)
+                    else:
+                        record.dv = 0
+            else:
+                record.dv = False
 
+    @api.depends('ruc_ci')
+    def _compute_ci(self):
+        for record in self:
+            if isinstance(record.ruc_ci, str):
+                ruc_parts = record.ruc_ci.split('-')
+                record.ci = ruc_parts[0] if len(ruc_parts) > 1 else record.ruc_ci
 
 
-    # @api.constrains("ruc")
-    # def constrains_py_doc_number(self):
-    #     for partner in self:
-    #         if not partner.tipo_identificacion and not partner.ruc:
-    #             continue
-    #         elif not partner.tipo_identificacion and partner.ruc and not partner.parent_id:
-    #             raise ValidationError(_("Seleccione un tipo de documento"))
-    #         elif partner.tipo_identificacion and not partner.ruc:
-    #             raise ValidationError(_("El campo RUC no puede estar vacio"))
-    #         vat = partner.ruc
-    #         if partner.tipo_identificacion == '2':
-    #             check = self._validate_ruc(vat)
-    #             if not check:
-    #                 raise ValidationError(_('El número de RUC [%s] no es válido' % vat))
-    #         elif partner.tipo_identificacion == '1':
-    #             check = self._validate_ci(vat)
-    #             if not check:
-    #                 raise ValidationError(_('El número de identificación [%s] no es válido' % vat))
-    #         else:
-    #             continue
-    #
+    @api.depends('ruc_ci', 'dv')
+    def _compute_ruc_2(self):
+        for record in self:
+            ruc_without_verification = record.ci if record.ci else record.ruc_ci
+            record.rucdv = "{}-{}".format(ruc_without_verification, record.dv)
+
     # @staticmethod
     # def _validate_ruc(vat):
     #     factor = '43298765432'

BIN
partner_data.pyc


+ 2 - 2
partner_data_view.xml

@@ -9,12 +9,12 @@
               <xpath expr="//field[@name='name']" position="after">
                 <br/>
                     <field name="nombre_fantasia" placeholder="Nombre Fantasia"/>
-
-
                 </xpath>
 
                 <field name="website" position="before">
                     <field name="tipo_identificacion"/>
+                    <field name="ruc_ci"/>
+                    <field name="rucdv"/>
                   <!--   <field name="sexo" attrs="{'invisible':[('is_company','=',True)]}"/>
                     <field name="fecha_nac" attrs="{'invisible':[('is_company','=',True)]}" options="{'datepicker':{'yearRange': 'c-60:c+0'}}"/>
                     <field name="ubicacion" widget="url"/> -->

+ 3 - 0
res_company.py

@@ -40,3 +40,6 @@ class res_company(models.Model):
     representante_legal = fields.Char('Representante legal')
     actividad = fields.Char('Actividad Comercial')
     regimen = fields.Selection([('1','B2B'),('2','B2C'),('3','B2G'),('4','B2F')],'Tipo Régimen')
+    server_prueba = fields.Char('Servidor de Prueba')
+    idcsc = fields.Char('IDCSC')
+    cdc = fields.Char('CDC')

BIN
res_company.pyc


+ 9 - 3
res_company_view.xml

@@ -19,9 +19,15 @@
                     <field name="imputa_irp_isp"/>
                     <field name="imputa_iva"/>
                 </field>
-
-
-
+                <xpath expr="//notebook" position="inside">
+                    <page string="SIFEN" name="sifen_tab">
+                        <group>
+                            <field name="server_prueba"/>
+                            <field name="idcsc"/>
+                            <field name="cdc"/>
+                        </group>
+                    </page>
+                </xpath>
             </field>
         </record>
         <!-- <record id="res_partner_extra_data_search" model="ir.ui.view">

+ 0 - 47
ruc_documentos_timbrados.py

@@ -1,47 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-##############################################################################
-
-from openerp import models, fields, tools, api, _
-
-class ruc_documentos_timbrados(models.Model):
-    _name = 'ruc.documentos.timbrados'
-    _description = 'Agrega datos sobre timbrado'
-
-    name = fields.Char('Número de timbrado')
-    nombre_documento = fields.Char('Descripción del documento')
-    tipo_documento = fields.Selection([('1','Factura'),('2','Factura electrónica de exportación'),('3','Factura electrónica de importación')],'Tipo documento')
-    timbrado_electronico = fields.Selection([('1','Factura electrónica'),('2','Factura electrónica de exportación'),('3','Factura electrónica de importación'),('4','Autofactura electrónica'),('5','Nota de crédito electrónica'),('6','Nota de débito electrónica'),('7','Nota de remisión electrónica'),('8','Comprobante de retención electrónico')],'Tipo de documento electrónico')
-    actividad_economica = fields.Char('Actividad económica')
-    codigo_actividad = fields.Char('Código de actividad económica')
-    fecha_inicio = fields.Date(string='Fecha inicio de validez')
-    fecha_final = fields.Date(string='Fecha de expiración de timbrado')
-    activo = fields.Boolean(string='Activo' ,default = True)
-    suc = fields.Char('Suc')
-    sec = fields.Char('Sec')
-    nro_ini = fields.Integer('Nº inicial')
-    nro_fin = fields.Integer('Nº final')
-    ultimo_nro_utilizado = fields.Integer('Nro actual')
-    id = fields.Integer('ID')
-    company_id = fields.Many2one('res.company', string='Compañia')
-    company_name =  fields.Char(string='Compañia', related='company_id.name', readonly=True)
-    invoice_ids = fields.One2many('account.invoice', 'partner_id', string='Facturas',
-        readonly=True, copy=False)
-    user_ids = fields.Many2many('res.users', string='Usuarios')

BIN
ruc_documentos_timbrados.pyc


+ 5 - 5
ruc_documentos_timbrados_view.xml

@@ -3,7 +3,7 @@
     <data>
         <record model="ir.ui.view" id="ruc_documentos_timbrados_form">
             <field name="name">ruc.documentos.timbrados.form</field>
-            <field name="model">ruc.documentos.timbrados</field>
+            <field name="model">talonario</field>
             <field name="inherit_id"/>
             <field name="arch" type="xml">
               <form string="Talonario">
@@ -22,7 +22,7 @@
                                              <field name="tipo_documento"/>
                                              <field name="fecha_inicio"/>
                                              <field name="fecha_final"/>
-                                             <!-- <field name="nro_autorizacion_autoimpresor"/> -->
+                                             <!-- <field name="nro_autorizacion_autoimpresor"/>  -->
                                              <field name="activo"/>
 
                                          </group>
@@ -43,9 +43,9 @@
                                     </sheet>
 
                                   <notebook>
-                                     <page string="Facturas">
+                                     <!-- <page string="Facturas">
                                          <field name="invoice_ids"/>
-                                     </page>
+                                     </page> -->
                                  </notebook>
 
             </form>
@@ -56,7 +56,7 @@
 
         <record id="ruc_documentos_timbrados_tree_view" model="ir.ui.view">
             <field name="name">ruc.documentos.timbrados.tree</field>
-            <field name="model">ruc.documentos.timbrados</field>
+            <field name="model">talonario</field>
             <field name="arch" type="xml">
                 <tree string="Talonario">
                   <field name="name"/>

+ 1 - 1
set_menu.xml

@@ -54,7 +54,7 @@
             <record id="set_timbrado_view" model="ir.actions.act_window">
                 <field name="name">Timbrado</field>
                 <field name="type">ir.actions.act_window</field>
-                <field name="res_model">ruc.documentos.timbrados</field>
+                <field name="res_model">talonario</field>
                 <field name="view_type">form</field>
                 <field name="view_mode">tree,form</field>
                 <field name="view_id" ref="set_paraguay.ruc_documentos_timbrados_tree_view"/>

BIN
static/description/icon.png


+ 58 - 0
talonario.py

@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp import models, fields, tools, api, _
+
+class Talonario(models.Model):
+    _name = 'talonario'
+    _description = 'Talonario'
+
+    name = fields.Char(string='Número de timbrado')
+    nombre_documento = fields.Char(string='Descripción del documento')
+    tipo_documento = fields.Selection([
+        ('1', 'Factura'),
+        ('2', 'Factura electrónica de exportación'),
+        ('3', 'Factura electrónica de importación')
+    ], 'Tipo documento')
+    timbrado_electronico = fields.Selection([
+        ('1', 'Factura electrónica'),
+        ('2', 'Factura electrónica de exportación'),
+        ('3', 'Factura electrónica de importación'),
+        ('4', 'Autofactura electrónica'),
+        ('5', 'Nota de crédito electrónica'),
+        ('6', 'Nota de débito electrónica'),
+        ('7', 'Nota de remisión electrónica'),
+        ('8', 'Comprobante de retención electrónico')
+    ], 'Tipo de documento electrónico')
+    actividad_economica = fields.Char(string='Actividad económica')
+    codigo_actividad = fields.Char(string='Código de actividad económica')
+    fecha_inicio = fields.Date(string='Fecha inicio de validez')
+    fecha_final = fields.Date(string='Fecha de expiración de timbrado')
+    activo = fields.Boolean(string='Activo', default=True)
+    suc = fields.Char(string='Suc')
+    sec = fields.Char(string='Sec')
+    nro_ini = fields.Integer(string='Nº inicial')
+    nro_fin = fields.Integer(string='Nº final')
+    ultimo_nro_utilizado = fields.Integer(string='Nro actual')
+    company_id = fields.Many2one('res.company', 'Compañia')
+    company_name = fields.Char(string='Compañia', related='company_id.name', readonly=True)
+    invoice_ids = fields.One2many('account.invoice', 'talonario_id', 'Facturas', readonly=True, copy=False)
+    user_ids = fields.Many2many('res.users', 'talonario_res_users_rel', 'talonario_id', 'user_id', 'Usuarios')

BIN
talonario.pyc