Exemplo n.º 1
0
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;
  }

}
Exemplo n.º 2
0
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;
  }
}