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 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