// Jess Lilly: Removed all comments, blank lines, includes,
// try catch blocks, and sensitive information.
void UplEDI944WorkUnit::createEDI944File() {
SqlSelect workSQL(
"SELECT * "
"FROM uploads "
"where status = 'RDY' "
"and task in ('IMR','IMRS') " );
AsTransaction trans;
AsRow uploadRecord;
while ( true ) {
uploadRecord = workSQL.exec( NOTFOUND_OK );
if ( !uploadRecord.valid() ) {
break;
}
else {
trans.begin();
_filePtr = fopen( getOutputFile().c_str(), "ab");
_transactionSequence = 0;
_receiptNumber = genSeqNumber("IBO");
writeEDI944Header( uploadRecord );
loopRCVDUploads( uploadRecord );
fclose(_filePtr);
string system_cmd ("/bin/mv -f " + _tempFile + " " + _outputFile);
if (system(system_cmd.c_str()) != 0L) {
LOGERR << "Failed to rename file.\nSystem command: <" + system_cmd + ">.";
}
trans.commit();
}
}
}
void UplEDI944WorkUnit::loopRCVDUploads( const AsRow & headerUploadRecord ) {
SqlSelect loopRCVDSQL(
"SELECT group_code, order_num, order_type, line_num, part_num, hold_code, sum(quantity) qty, "
"lot_code, user_code, package_code, sum(weight) wgt, "
"FROM uploads "
"where status = 'RDY' "
"and task = 'RCVD' "
"and order_num = '" + (string)headerUploadRecord["order_num"] + "' "
"and order_type = '" + (string)headerUploadRecord["order_type"] + "' "
"group by "
"group_code, order_num, order_type, line_num, part_num, hold_code, "
"lot_code, user_code, package_code, "
"order by line_num, lot_code, user_code " );
for ( loopRCVDSQL.exec( NOTFOUND_OK ); loopRCVDSQL.valid();
loopRCVDSQL.fetch() ) {
AsRow detailuploadRecord = loopRCVDSQL.getCurrent();
writeEDI944Detail( detailuploadRecord );
}
}
void UplEDI944WorkUnit::writeEDI944Header( const AsRow & uploadRecord ) {
_transactionSequence++;
fprintf(_filePtr,"%-20s", ((string)uploadRecord["order_type"]).c_str());
fprintf(_filePtr,"%-14s",_currentDate.c_str());
fprintf(_filePtr,"%8d", _transactionSequence);
fprintf(_filePtr,"%-20s", string("RCPT 0004001003").c_str());
fprintf(_filePtr,"%-12s", _receiptNumber.c_str());
fprintf(_filePtr,"%-12s", string(" ").c_str());
fprintf(_filePtr,"%-4s", ((string)uploadRecord["group_code"]).substr(0,4).c_str());
fprintf(_filePtr,"%-30s", ((string)uploadRecord["order_num"]).c_str());
// ...
fprintf(_filePtr,"\n");
}
void UplEDI944WorkUnit::writeEDI944Detail( const AsRow & uploadRecord ) {
// ...
fprintf(_filePtr,"%-30s", ((string)uploadRecord["part_num"]).c_str());
// ...
fprintf(_filePtr,"%10d", (long)uploadRecord["qty"]);
// ...
fprintf(_filePtr,"\n");
}
|