コード例 #1
0
ファイル: buscar.py プロジェクト: oscarvogel/abmpyafipws
def on_busqueda(evt):
    padron = PadronAFIP()
    ctrl = evt.target
    listado = panel['listado']
    listado.items.clear()
    criterios = panel['criterios']
    tipo_doc = criterios['tipo_doc'].value
    nro_doc = criterios['nro_doc'].value.replace('-', '').strip()
    nombre = criterios['nombre_cliente'].value

    if ctrl.name.startswith('nro_doc'):
        sql = "select * from padron where tipo_doc = ? and nro_doc like '%" + nro_doc + "%'"
        params = [
            tipo_doc,
        ]
        padron.cursor.execute(sql, params)
    else:
        sql = "select * from padron where lower(denominacion) like '%" + nombre + "%'"
        padron.cursor.execute(sql)

    datos = padron.cursor.fetchall()

    items = []
    for dato in datos:
        items.append([
            str(dato['tipo_doc']),
            str(dato['nro_doc']), dato['denominacion']
        ])

    listado.items = items
コード例 #2
0
 def refresh_from_padron(self, resource_type):
     """
     resource_type puede ser "impuestos", "conceptos", "actividades",
     "caracterizaciones", "categoriasMonotributo", "categoriasAutonomo".
     """
     self.ensure_one()
     if resource_type == 'impuestos':
         model = 'afip.tax'
     elif resource_type == 'actividades':
         model = 'afip.activity'
     elif resource_type == 'conceptos':
         model = 'afip.concept'
     else:
         raise UserError(
             _('Resource Type %s not implemented!') % (resource_type))
     padron = PadronAFIP()
     separator = ';'
     data = padron.ObtenerTablaParametros(resource_type, separator)
     codes = []
     for line in data:
         False, code, name, False = line.split(separator)
         vals = {
             'code': code,
             'name': name,
             'active': True,
         }
         record = self.env[model].search([('code', '=', code)], limit=1)
         codes.append(code)
         if record:
             record.write(vals)
         else:
             record.create(vals)
     # deactivate the ones that are not in afip
     self.env[model].search([('code', 'not in', codes)
                             ]).write({'active': False})
コード例 #3
0
    def update_constancia_from_padron_afip(self):
        self.ensure_one()
        cuit = self.main_id_number
        # cuit = self.cuit_required

        # descarga de constancia
        # basedir = os.path.join(os.getcwd(), 'cache')
        # tmpfilename = os.path.join(basedir, "constancia.pdf")
        tmpfilename = "/tmp/constancia.pdf"
        # sie queremos mejora esto podriamos no hardecodearlo con esto
        # https://bugs.launchpad.net/openobject-addons/+bug/1040901
        padron = PadronAFIP()
        padron.Consultar(cuit)
        padron.DescargarConstancia(cuit, tmpfilename)
        f = file(tmpfilename, 'r')
        constancia = base64.b64decode(base64.encodestring(f.read()))
        f.close()
        attachments = [
            ('Constancia %s %s.pdf' %
             (self.name, fields.Date.context_today(self)), constancia)
        ]
        self.message_post(
            subject="Constancia de inscripción actualizada",
            # subject="Actualizacion de datos desde Padron AFIP",
            # body="Datos utilizados:<br/>%s" % vals,
            attachments=attachments)
コード例 #4
0
 def DescargarConstancia(self, cuit='', filename='', *args, **kwargs):
     padron = PadronAFIP()
     if LeerIni(clave='h**o') == 'S':
         padron.Conectar()
     ok = padron.DescargarConstancia(cuit, filename)
     filename = LeerIni("iniciosistema") + filename
     AbrirArchivo(filename)
コード例 #5
0
    def get_data_from_padron_afip(self):
        self.ensure_one()
        cuit = self.cuit_required()
        padron = PadronAFIP()
        padron.Consultar(cuit)

        # porque imp_iva activo puede ser S o AC
        imp_iva = padron.imp_iva
        if imp_iva == 'S':
            imp_iva = 'AC'
        elif imp_iva == 'N':
            # por ej. monotributista devuelve N
            imp_iva = 'NI'

        vals = {
            'name':
            padron.denominacion,
            # 'name': padron.tipo_persona,
            # 'name': padron.tipo_doc,
            # 'name': padron.dni,
            'estado_padron':
            padron.estado,
            'street':
            padron.direccion,
            'city':
            padron.localidad,
            'zip':
            padron.cod_postal,
            'actividades_padron':
            self.actividades_padron.search([('code', 'in', padron.actividades)
                                            ]).ids,
            'impuestos_padron':
            self.impuestos_padron.search([('code', 'in', padron.impuestos)
                                          ]).ids,
            'imp_iva_padron':
            imp_iva,
            # TODAVIA no esta funcionando
            # 'imp_ganancias_padron': padron.imp_ganancias,
            'monotributo_padron':
            padron.monotributo,
            'actividad_monotributo_padron':
            padron.actividad_monotributo,
            'empleador_padron':
            padron.empleador == 'S' and True,
            'integrante_soc_padron':
            padron.integrante_soc,
            'last_update_padron':
            fields.Date.today(),
        }
        ganancias_inscripto = [10, 11]
        ganancias_exento = [12]
        if set(ganancias_inscripto) & set(padron.impuestos):
            vals['imp_ganancias_padron'] = 'AC'
        elif set(ganancias_exento) & set(padron.impuestos):
            vals['imp_ganancias_padron'] = 'EX'
        elif padron.monotributo == 'S':
            vals['imp_ganancias_padron'] = 'NC'
        else:
            _logger.info(
                "We couldn't get impuesto a las ganancias from padron, you"
                "must set it manually")

        if padron.provincia:
            # if not localidad then it should be CABA.
            if not padron.localidad:
                state = self.env['res.country.state'].search(
                    [('code', '=', 'ABA'), ('country_id.code', '=', 'AR')],
                    limit=1)
            # If localidad cant be caba
            else:
                state = self.env['res.country.state'].search(
                    [('name', 'ilike', padron.provincia),
                     ('code', '!=', 'ABA'), ('country_id.code', '=', 'AR')],
                    limit=1)
            if state:
                vals['state_id'] = state.id

        if imp_iva == 'NI' and padron.monotributo == 'S':
            vals['afip_responsability_type_id'] = self.env.ref(
                'l10n_ar_account.res_RM').id
        elif imp_iva == 'AC':
            vals['afip_responsability_type_id'] = self.env.ref(
                'l10n_ar_account.res_IVARI').id
        elif imp_iva == 'EX':
            vals['afip_responsability_type_id'] = self.env.ref(
                'l10n_ar_account.res_IVAE').id
        else:
            _logger.info(
                "We couldn't infer the AFIP responsability from padron, you"
                "must set it manually.")

        return vals
コード例 #6
0
#!/usr/bin/python
# -*- coding: utf-8 -*-
"Aplicativo Factura Electronica Libre"

__author__ = "Jose Oscar Vogel ([email protected])"
__copyright__ = "Copyright (C) 2015- Jose Oscar Vogel"
__license__ = "GPL 3.0+"
__version__ = "0.1a"

import gui  # import gui2py package (shortcuts)
import locale

from pyafipws.padron import PadronAFIP
from utiles import Utiles

padron = PadronAFIP()
CONFIG_FILE = "rece.ini"
DB = None

utiles = Utiles()

locale.setlocale(locale.LC_ALL, '')


def ExisteProductos():
    try:
        padron.cursor.execute("select * from productos")
    except:
        padron.cursor.execute("CREATE TABLE productos ("
                              "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                              "detalle VARCHAR(150), "
コード例 #7
0
 def __init__(self):
     self.padron = PadronAFIP()