void gncJobSetOwner (GncJob *job, GncOwner *owner) { if (!job) return; if (!owner) return; if (gncOwnerEqual (owner, &(job->owner))) return; switch (gncOwnerGetType (owner)) { case GNC_OWNER_CUSTOMER: case GNC_OWNER_VENDOR: break; default: PERR("Unsupported Owner type: %d", gncOwnerGetType(owner)); return; } gncJobBeginEdit (job); switch (gncOwnerGetType (&(job->owner))) { case GNC_OWNER_CUSTOMER: gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job); break; case GNC_OWNER_VENDOR: gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job); break; default: break; } gncOwnerCopy (owner, &(job->owner)); switch (gncOwnerGetType (&(job->owner))) { case GNC_OWNER_CUSTOMER: gncCustomerAddJob (gncOwnerGetCustomer(&job->owner), job); break; case GNC_OWNER_VENDOR: gncVendorAddJob (gncOwnerGetVendor(&job->owner), job); break; default: break; } mark_job (job); gncJobCommitEdit (job); }
static GncJob* dom_tree_to_job (xmlNodePtr node, QofBook *book) { struct job_pdata job_pdata; gboolean successful; job_pdata.job = gncJobCreate(book); job_pdata.book = book; gncJobBeginEdit (job_pdata.job); successful = dom_tree_generic_parse (node, job_handlers_v2, &job_pdata); if (successful) gncJobCommitEdit (job_pdata.job); else { PERR ("failed to parse job tree"); gncJobDestroy (job_pdata.job); job_pdata.job = NULL; } return job_pdata.job; }
void gncJobDestroy (GncJob *job) { if (!job) return; qof_instance_set_destroying(job, TRUE); gncJobCommitEdit (job); }