Esempio n. 1
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)
Esempio n. 2
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