示例#1
0
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;
}
示例#2
0
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;

}