public void runUpdateVoucherDiscrepancies() { error = 0; zeroCostError = 0; int vou_disc_days = Int32.Parse(settings.getDays(feature)); string day_limit = DateTime.Now.AddDays((vou_disc_days + 1) * -1).Date.ToString(MsSqlDBHandler.DATE_FORMAT); string sql = "SELECT SUBSTRING(VOU_SID, 4, len(VOU_SID)-4) AS sid FROM Retailpro_Discrepancy WHERE vou_date >= " + day_limit; HashSet <string> sids = null; try { sids = msSqlDBHandler.getExistingSIDs(sql, rproDBHandler, feature); } catch (Exception) { return; } string subsidiaryFilter = settings.getSubsidiaries(feature); if (!string.IsNullOrWhiteSpace(subsidiaryFilter)) { subsidiaryFilter = " and vou.sbs_no in (" + subsidiaryFilter + ") "; } Dictionary <String, List <VoucherDiscrepancyItem> > vou_discrepancies = rproDBHandler.getVoucherDiscrepancies(sids, vou_disc_days, subsidiaryFilter); Queue <ZeroCostDocument> zeroCostDocuments = filterZeroDocuments(vou_discrepancies); msSqlDBHandler.insertVoucherDiscrepancies(vou_discrepancies, rproDBHandler); int zeroCostTotal = zeroCostDocuments.Count; rproDBHandler.insertZeroCostDocuments(zeroCostDocuments, MainController.Features.VOU_DISCREPANCY); string msg = vou_discrepancies.Count + " vouchers with discrepancies fetched and inserted into B1 with " + error + " error(s). "; msg += zeroCostTotal + " items with zero cost were inserted with " + zeroCostError + " errors."; if (error + zeroCostTotal > 0) { string subject = "Errors/Zero cost in B1 Interface for " + feature.ToString(); string body = msg; body += "Please check log for details."; new EmailController(settings).sendEmail(subject, body, rproDBHandler, feature); } rproDBHandler.addLog(MainController.LogType.REPORT, "", "", feature, msg, null); }