Beispiel #1
0
        public void Expand()
        {
            int pos = 0;

            DocumentParser.RaiseScanStartEvent(new ScanStartEventArgs(tableName, DocumentParser.DataManager));
            foreach (DataRow row in this.Table.Rows)
            {
                #region BeforeScanRecord event

                bool isMatch = MatchesCondition();
                BeforeScanRecordEventArgs beforeScanEvArgs = new BeforeScanRecordEventArgs(row, pos, DocumentParser.DataManager, isMatch);
                DocumentParser.RaiseBeforeScanRecordEvent(beforeScanEvArgs);

                if (beforeScanEvArgs.Cancel)
                {
                    break;
                }

                if (beforeScanEvArgs.Skip)
                {
                    pos++;
                    DocumentParser.DataManager.IncrementCurrentRecord(this.TableName);
                    continue;
                }

                #endregion

                if (isMatch)
                {
                    foreach (IControlBlock cb in Children)
                    {
                        cb.Expand();
                    }
                }

                #region AfterScanRecord event

                AfterScanRecordEventArgs afterScanEvArgs = new AfterScanRecordEventArgs(row, pos, DocumentParser.DataManager, isMatch);
                DocumentParser.RaiseAfterScanRecordEvent(afterScanEvArgs);
                if (afterScanEvArgs.Cancel)
                {
                    break;
                }

                #endregion

                pos++;
                DocumentParser.DataManager.IncrementCurrentRecord(TableName);
            }

            DocumentParser.DataManager.ResetCurrentRecord(tableName);
            DocumentParser.RaiseScanEndedEvent(new ScanEndedEventArgs(tableName, DocumentParser.DataManager));
        }
Beispiel #2
0
        void Dc_BeforeScanRecord(object sender, BeforeScanRecordEventArgs e)
        {
            if (e.TableName == "L" &&   //The invoice lines are being scanned
                e.MatchesScanCondition) //and the current record matches the scan condition
            {
                DataRow row           = ((DataRow)e.Record);
                double  extendedPrice = Convert.ToDouble(row["units"]) * Convert.ToDouble(row["unitPrice"]);

                //First time adds the variable. Following times, automatically updates it.
                e.DataManager.AddDouble(_extprice, extendedPrice);
                double subTotal = e.DataManager.GetDouble(_subtotal);
                subTotal += extendedPrice;
                e.DataManager.AddDouble(_subtotal, subTotal);
            }
        }
        void Dc_BeforeScanRecord(object sender, BeforeScanRecordEventArgs e)
        {
            //Decide if must show group header
            if (e.Record[1].ToString() != currentVendor)
            {
                e.DataManager.AddInt32("showVendor", 1);
                currentVendor = e.Record[1].ToString();
            }
            else
            {
                e.DataManager.AddInt32("showVendor", 0);
            }

            int avail   = e.DataManager.GetInt32("avail");
            int unavail = e.DataManager.GetInt32("unavail");

            if (e.Record[3].ToString() == "Yes")
            {
                avail++;
            }
            else
            {
                unavail++;
            }
            e.DataManager.AddInt32("avail", avail);
            e.DataManager.AddInt32("unavail", unavail);
            e.DataManager.AddInt32("tot", avail + unavail);

            //Decide if must shows totals per group
            DataRow row = e.DataManager.GetNextRecord(e.TableName);

            if (row != null)
            {
                if (e.Record[1].ToString() != row[1].ToString())
                {
                    e.DataManager.AddBoolean("groupEnd", true);
                }
                else
                {
                    e.DataManager.AddBoolean("groupEnd", false);
                }
            }
            else
            {
                e.DataManager.AddBoolean("groupEnd", true);
            }
        }
Beispiel #4
0
 internal void RaiseBeforeScanRecordEvent(BeforeScanRecordEventArgs e)
 {
     BeforeScanRecord?.Invoke(this, e);
 }
Beispiel #5
0
 internal void RaiseBeforeScanRecordEvent(BeforeScanRecordEventArgs e)
 {
     Creator.RaiseBeforeScanRecordEvent(e);
 }