void mmTransDialog::OnOk(wxCommandEvent& event) { m_trx_data.STATUS = ""; m_trx_data.NOTES = textNotes_->GetValue(); m_trx_data.TRANSACTIONNUMBER = textNumber_->GetValue(); m_trx_data.TRANSDATE = dpc_->GetValue().FormatISODate(); wxStringClientData* status_obj = (wxStringClientData*) choiceStatus_->GetClientObject(choiceStatus_->GetSelection()); if (status_obj) m_trx_data.STATUS = Model_Checking::toShortStatus(status_obj->GetData()); if (!validateData()) return; Model_Checking::Data *r = Model_Checking::instance().get(m_trx_data.TRANSID); if (m_new_trx || m_duplicate) r = Model_Checking::instance().create(); Model_Checking::putDataToTransaction(r, m_trx_data); m_trx_data.TRANSID = Model_Checking::instance().save(r); Model_Splittransaction::Data_Set splt; for (const auto& entry : local_splits) { Model_Splittransaction::Data *s = Model_Splittransaction::instance().create(); s->CATEGID = entry.CATEGID; s->SUBCATEGID = entry.SUBCATEGID; s->SPLITTRANSAMOUNT = entry.SPLITTRANSAMOUNT; splt.push_back(*s); } Model_Splittransaction::instance().update(splt, m_trx_data.TRANSID); if (CustomFieldDialog_) CustomFieldDialog_->OnSave(true); if (m_new_trx || m_duplicate) { const wxString& RefType = Model_Attachment::reftype_desc(Model_Attachment::TRANSACTION); mmAttachmentManage::RelocateAllAttachments(RefType, -1, m_trx_data.TRANSID); Model_CustomFieldData::instance().RelocateAllData(RefType, -1, m_trx_data.TRANSID); } const Model_Checking::Data& tran(*r); Model_Checking::Full_Data trx(tran); wxLogDebug("%s", trx.to_json()); EndModal(wxID_OK); }