Exemple #1
0
        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);
        }