static AB_JOB * get_available_empty_job(AB_ACCOUNT *ab_acc, GncABTransType trans_type) { AB_JOB *job; switch (trans_type) { case SINGLE_DEBITNOTE: job = AB_JobSingleDebitNote_new(ab_acc); break; case SINGLE_INTERNAL_TRANSFER: job = AB_JobInternalTransfer_new(ab_acc); break; case SINGLE_TRANSFER: default: job = AB_JobSingleTransfer_new(ab_acc); break; }; if (!job || AB_Job_CheckAvailability(job #ifndef AQBANKING_VERSION_5_PLUS , 0 #endif )) { if (job) AB_Job_free(job); return NULL; } return job; }
static PyObject *aqbanking_Account_available_jobs(aqbanking_Account* self, PyObject *args, PyObject *keywds) { // ##LUS TODO int rv; AB_ACCOUNT *a; const char *bank_code; const char *account_no; #if PY_VERSION_HEX >= 0x03030000 bank_code = PyUnicode_AsUTF8(self->bank_code); account_no = PyUnicode_AsUTF8(self->no); #else PyObject *s = _PyUnicode_AsDefaultEncodedString(self->bank_code, NULL); bank_code = PyBytes_AS_STRING(s); s = _PyUnicode_AsDefaultEncodedString(self->no, NULL); account_no = PyBytes_AS_STRING(s); #endif PyObject *featList = PyList_New(0); // Valid data set? if (self->no == NULL) { PyErr_SetString(PyExc_AttributeError, "no"); } if (self->bank_code == NULL) { PyErr_SetString(PyExc_AttributeError, "bank_code"); } // Initialize aqbanking. rv = AB_create(self); if (rv > 0) { Py_DECREF(featList); return NULL; } // Let us find the account! a = AB_Banking_GetAccountByCodeAndNumber(self->ab, bank_code, account_no); if (!a) { PyErr_SetString(AccountNotFound, "Could not find the given account! "); Py_DECREF(featList); return NULL; } // Check availableJobs // national transfer PyObject *feature; AB_JOB *abJob = AB_JobSingleTransfer_new(a); if (AB_Job_CheckAvailability(abJob) == 0) { feature = PyUnicode_FromString("nationalTransfer"); PyList_Append(featList, (PyObject *)feature); Py_DECREF(feature); } AB_Job_free(abJob); // sepa transfer abJob = AB_JobSepaTransfer_new(a); if (AB_Job_CheckAvailability(abJob) == 0) { feature = PyUnicode_FromString("sepaTransfer"); PyList_Append(featList, (PyObject *)feature); Py_DECREF(feature); } AB_Job_free(abJob); PyList_Append(featList, (PyObject *)feature); Py_DECREF(feature); // Exit aqbanking. rv = AB_free(self); if (rv > 0) { Py_DECREF(featList); return NULL; } return featList; }