void printCheck::sCreateACH() { XSqlQuery releasenum; releasenum.prepare("SELECT releaseNumber('ACHBatch', :batch);"); QString batch; q.prepare("SELECT * FROM formatACHChecks(:bankaccnt_id, :checkhead_id, :key);"); q.bindValue(":bankaccnt_id", _bankaccnt->id()); q.bindValue(":checkhead_id", _check->id()); q.bindValue(":key", omfgThis->_key); q.exec(); if (q.first()) { batch = q.value("achline_batch").toString(); releasenum.bindValue(":batch", batch); if (achFileDir.isEmpty()) { achFileDir = xtsettingsValue("ACHOutputDirectory").toString(); } QString suffixes = "*.ach *.dat *.txt"; if (! suffixes.contains(_metrics->value("ACHDefaultSuffix"))) suffixes = "*" + _metrics->value("ACHDefaultSuffix") + " " + suffixes; QString filename = QFileDialog::getSaveFileName(this, tr("ACH Output File"), printCheck::achFileDir + QDir::separator() + "ach" + batch + _metrics->value("ACHDefaultSuffix"), "(" + suffixes + ")"); if (filename.isEmpty()) { releasenum.exec(); return; } QFileInfo fileinfo(filename); achFileDir = fileinfo.absolutePath(); QFile achfile(filename); if (! achfile.open(QIODevice::WriteOnly)) { releasenum.exec(); QMessageBox::critical(this, tr("Could Not Open File"), tr("Could not open %1 for writing ACH data.") .arg(filename)); return; } do { achfile.write(q.value("achline_value").toString().toAscii()); achfile.write("\n"); } while (q.next()); achfile.close(); if (q.lastError().type() != QSqlError::NoError) { releasenum.exec(); achfile.remove(); systemError(this, q.lastError().databaseText(), __FILE__, __LINE__); return; } if (confirmAchOK::askOK(this, achfile)) markCheckAsPrinted(_check->id()); else { releasenum.exec(); XSqlQuery clearq; clearq.prepare("UPDATE checkhead " "SET checkhead_printed=false," " checkhead_ach_batch=NULL " "WHERE (checkhead_id=:checkhead_id);"); clearq.bindValue(":checkhead_id", _check->id()); clearq.exec(); if (clearq.lastError().type() != QSqlError::NoError) { systemError(this, clearq.lastError().databaseText(), __FILE__, __LINE__); return; } } } else if (q.lastError().type() != QSqlError::NoError) { systemError(this, q.lastError().databaseText(), __FILE__, __LINE__); return; } }
void printChecks::sCreateACH() { if (_somerecips_ach_enabled && !_allrecips_ach_enabled && QMessageBox::question(this, tr("Print Anyway?"), tr("<p>Some but not all of the checks in this run " "are for Vendors configured to receive ACH " "transactions. Do you want to create the ACH " "file anyway?<p>If you answer 'Yes' then an " "ACH file will be created but you will have to " "click Print to get the remainder of the " "checks in this run. If you say 'No' then you " "will get a warning when you click Print " "asking whether you want to print checks for " "ACH recipients."), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No) == QMessageBox::No) return; XSqlQuery releasenum; releasenum.prepare("SELECT releaseNumber('ACHBatch', :batch);"); QString batch; q.prepare("SELECT * FROM formatACHChecks(:bankaccnt_id, NULL, :key);"); q.bindValue(":bankaccnt_id", _bankaccnt->id()); q.bindValue(":key", omfgThis->_key); q.exec(); if (q.first()) { batch = q.value("achline_batch").toString(); releasenum.bindValue(":batch", batch); if (printCheck::achFileDir.isEmpty()) { printCheck::achFileDir = xtsettingsValue("ACHOutputDirectory").toString(); } QString suffixes = "*.ach *.dat *.txt"; if (! suffixes.contains(_metrics->value("ACHDefaultSuffix"))) suffixes = "*" + _metrics->value("ACHDefaultSuffix") + " " + suffixes; QString filename = QFileDialog::getSaveFileName(this, tr("ACH Output File"), printCheck::achFileDir + QDir::separator() + "ach" + batch + _metrics->value("ACHDefaultSuffix"), "(" + suffixes + ")"); if (filename.isEmpty()) { releasenum.exec(); return; } QFileInfo fileinfo(filename); printCheck::achFileDir = fileinfo.absolutePath(); QFile achfile(filename); if (! achfile.open(QIODevice::WriteOnly)) { releasenum.exec(); QMessageBox::critical(this, tr("Could Not Open File"), tr("Could not open %1 for writing ACH data.") .arg(filename)); return; } do { achfile.write(q.value("achline_value").toString().toAscii()); achfile.write("\n"); } while (q.next()); achfile.close(); if (q.lastError().type() != QSqlError::NoError) { releasenum.exec(); achfile.remove(); systemError(this, q.lastError().databaseText(), __FILE__, __LINE__); return; } if (confirmAchOK::askOK(this, achfile)) markChecksAsPrinted(batch); else { releasenum.exec(); XSqlQuery clearq; clearq.prepare("UPDATE checkhead " "SET checkhead_printed=false," " checkhead_ach_batch=NULL " "WHERE (checkhead_ach_batch=:checkhead_ach_batch);"); clearq.bindValue(":checkhead_ach_batch", batch); clearq.exec(); if (clearq.lastError().type() != QSqlError::NoError) { systemError(this, clearq.lastError().databaseText(), __FILE__, __LINE__); return; } } sHandleBankAccount(_bankaccnt->id()); } else if (q.lastError().type() != QSqlError::NoError) { systemError(this, q.lastError().databaseText(), __FILE__, __LINE__); return; } }