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
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})
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)
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)
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
#!/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), "
def __init__(self): self.padron = PadronAFIP()