protected void HandleCrossReferences(InventoryItem product, ref List <KCAPIAttribute> attributes)
        {
            IEnumerable <INItemXRef> crossReferences = Graph.CrossReferences.Select(product.InventoryID).RowCast <INItemXRef>();
            List <string>            fieldReferencesAttributesToExport = new List <string>();

            foreach (INItemXRef crossRef in crossReferences)
            {
                KCINItemXRefExt crossRefKCExt = crossRef.GetExtension <KCINItemXRefExt>();

                foreach (KCCrossReferenceMapping mapping in Graph.CrossReferenceMapping.Select())
                {
                    KCAttribute cAAttribute = Graph.KCAttributes.Select().RowCast <KCAttribute>().FirstOrDefault(x => x.AttributeID == mapping.CAAttributeID);

                    if (!fieldReferencesAttributesToExport.Contains(cAAttribute.AttributeName))
                    {
                        if (cAAttribute.AttributeType.Equals(KCAttributeType.Custom))
                        {
                            if (KCGeneralDataHelper.CrossReferenceMatchTheRule(mapping, crossRef))
                            {
                                attributes.Add(new KCAPIAttribute {
                                    Name = cAAttribute.AttributeName, Value = crossRef.AlternateID
                                });
                                fieldReferencesAttributesToExport.Add(cAAttribute.AttributeName);
                            }
                        }
                    }
                }
            }
        }
        protected void HandleProductAttributes(InventoryItem product, ref List <KCAPIAttribute> attributes)
        {
            IEnumerable <CSAnswers>  attrs = Graph.Attributes.Select(product.InventoryID).RowCast <CSAnswers>().Where(x => x.RefNoteID == product.NoteID);
            KCAttributesMappingMaint attributesMappingGraph = PXGraph.CreateInstance <KCAttributesMappingMaint>();

            attributesMappingGraph.updateAttributes();

            foreach (CSAnswers attribute in attrs)
            {
                KCAttributesMapping mappedAttribute = attributesMappingGraph.MappedAttributeById.SelectSingle(attribute.AttributeID);
                if (mappedAttribute == null)
                {
                    continue;
                }

                KCAttribute cAAttribute = Graph.KCAttributes.Select().RowCast <KCAttribute>().FirstOrDefault(x => x.AttributeID == mappedAttribute.CAAttributeID);
                if (cAAttribute.AttributeType.Equals(KCAttributeType.Custom))
                {
                    attribute.AttributeID = cAAttribute.AttributeName;
                    attributes.Add(new KCAPIAttribute {
                        Name = attribute.AttributeID, Value = attribute.Value
                    });
                }
            }
        }