public void runUpdateInvoices() { error = 0; zeroCostError = 0; int invoice_days = Int32.Parse(settings.getDays(feature)); string day_limit = DateTime.Now.AddDays((invoice_days + 1) * -1).Date.ToString(MsSqlDBHandler.DATE_FORMAT); Queue <ZeroCostDocument> zeroCostInvoices = new Queue <ZeroCostDocument>(); string sql = "select distinct invc_sid as sid from Retailpro_Sales_Sync where date >= " + day_limit; HashSet <string> invoiceSIDs = null; try { invoiceSIDs = msSqlDBHandler.getExistingSIDs(sql, rproDBHandler, feature); } catch (Exception) { return; } string subsidiaryFilter = settings.getSubsidiaries(feature); rproDBHandler.getInvoiceDivisions(invoiceSIDs, invoice_days, subsidiaryFilter, zeroCostInvoices, this); //add invoice divisions to mysql table // select into invoice table using transactions int invoiceCount = 0; foreach (List <Invoice> inv_group in invoiceGroups.Values) { if (inv_group.Count < 1) { continue; } string inv_group_name = "INV" + inv_group[0].invc_sid; foreach (Invoice inv in inv_group) { invoiceCount += 1; msSqlDBHandler.insertSalesSync(inv, inv_group_name, rproDBHandler); } } //insert into sales table from sales_sync table msSqlDBHandler.insertSales(rproDBHandler); int zeroCostTotal = zeroCostInvoices.Count; rproDBHandler.insertZeroCostDocuments(zeroCostInvoices, feature); string msg = invoiceCount + " Invoices fetched and inserted into B1 with " + error + " error(s). "; msg += zeroCostTotal + " items with zero cost were inserted with " + zeroCostError + " errors."; rproDBHandler.addLog(MainController.LogType.REPORT, "", "", feature, msg, null); if (error > 0 || zeroCostTotal > 0) { string subject = "Errors/Zero cost in B1 Interface for " + MainController.Features.SALE.ToString(); string body = "There are " + error + " errors when processing " + MainController.Features.SALE.ToString() + " on " + DateTime.Now.ToString() + ". \n"; body += zeroCostTotal + " items with zero cost were inserted with " + zeroCostError + " errors.\n"; body += "Please check log for details."; new EmailController(settings).sendEmail(subject, body, rproDBHandler, feature); } }