Esempio n. 1
0
        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);
            }
        }