private void ProcessUnitPriceColumn(
            UPSEColumn unitPriceColumn,
            UPSEColumn pricingUnitPriceColumn,
            UPSEColumn disablePricingColumn,
            ref double price)
        {
            if (unitPriceColumn != null || pricingUnitPriceColumn != null)
            {
                UPSERowValue unitPriceRowValue        = null;
                UPSERowValue pricingUnitPriceRowValue = null;
                UPSERowValue readPrice = null;

                if (unitPriceColumn != null)
                {
                    readPrice         = RowValues[unitPriceColumn.Index];
                    unitPriceRowValue = readPrice;
                }

                if (unitPriceRowValue != null && disablePricingColumn != null)
                {
                    if (BoolValueFromColumn((UPSEDestinationColumn)disablePricingColumn))
                    {
                        unitPriceRowValue = null;
                    }
                }

                if (pricingUnitPriceColumn != null)
                {
                    pricingUnitPriceRowValue = RowValues[pricingUnitPriceColumn.Index];

                    if (readPrice == null)
                    {
                        readPrice = pricingUnitPriceRowValue;
                    }
                }

                if (price > 0.0000001 || price < -0.0000001)
                {
                    if (pricingUnitPriceRowValue != null)
                    {
                        pricingUnitPriceRowValue.Value = price;
                    }

                    if (unitPriceRowValue != null)
                    {
                        unitPriceRowValue.Value = price;
                    }
                    else if (readPrice != null && (readPrice.Value is float || readPrice.Value is string))
                    {
                        price = GetDouble(readPrice.Value);
                    }
                }
                else if (readPrice.Value is float || readPrice.Value is string)
                {
                    price = GetDouble(readPrice.Value);
                }
            }
        }
        private void ProcessSerialEntryColumns(UPCRMRecord rootRecord)
        {
            for (var columnIndex = 0; columnIndex < this.count; columnIndex++)
            {
                this.column            = this.SerialEntry.Columns[columnIndex];
                this.destinationColumn = this.column as UPSEDestinationColumnBase;
                if (this.destinationColumn != null)
                {
                    if (this.destinationColumn.DontCacheOffline && this.destinationColumn.DontSave)
                    {
                        continue;
                    }

                    this.rowValue = this.RowValues[columnIndex];
                    var originalVal  = this.destinationColumn.StringValueFromObject(this.rowValue.OriginalValue);
                    var stringValue  = this.destinationColumn.StringValueFromObject(this.rowValue.Value);
                    var changedValue = this.column.IsValueDifferentThan(stringValue, originalVal);
                    if (!changedValue && !this.rowValue.SaveUnchanged)
                    {
                        continue;
                    }

                    if (!changedValue)
                    {
                        originalVal = null;
                    }

                    if (this.column.ColumnFrom == UPSEColumnFrom.DestChild)
                    {
                        this.ProcessUpseColumnFromDestChild(rootRecord, changedValue, stringValue, originalVal);
                    }
                    else
                    {
                        if (this.destinationColumn.DontSave)
                        {
                            this.destinationRootRecord.NewValueFromValueFieldIdOnlyOffline(
                                stringValue,
                                originalVal,
                                this.column.FieldId,
                                true);
                        }
                        else
                        {
                            this.destinationRootRecord.NewValueFromValueFieldId(stringValue, originalVal, this.column.FieldId);
                        }

                        if (changedValue)
                        {
                            this.destinationRootRecord.HasValues = true;
                        }
                    }
                }
            }
        }