package gw.contactmapper.ab900 uses gw.internal.xml.xsd.typeprovider.XmlSchemaTypeToGosuTypeMappings uses gw.lang.reflect.IType uses gw.webservice.contactapi.abcontactapihelpers.core.BeanPopulator uses gw.webservice.contactapi.abcontactapihelpers.core.XmlPopulator uses gw.webservice.contactapi.beanmodel.anonymous.elements.XmlBackedInstance_Field uses gw.webservice.contactapi.beanmodel.XmlBackedInstance uses gw.webservice.contactapi.mapping.FieldMappingImpl /** * Class for handling mapping of Contacts TaxID and Social Security Number while setting and getting information * from the XML payload * * If the Contact is a Company the TaxID field is used * If the Contact is a Person the Social Security Number is used */ @Deprecated(:value="900 inter-app integration packages will be removed in PC11.", :version="PC 10.0.0") class PCTaxIDFieldMapping extends FieldMappingImpl { protected static final var LINK_ID : String = "LinkID" protected static final var EXTERNAL_PUBLIC_ID : String = "External_PublicID" construct() { super(Contact#TaxID, BOTH, Contact#TaxID.PropertyInfo.Name) } override function populateXml(xp : XmlPopulator) { var theContact = xp.Bean var abContactXML = xp.XmlBackedInstance if (theContact typeis Company) { var fein = theContact.OfficialIDs.firstWhere(\ o -> o.OfficialIDType == TC_FEIN) var colType = OfficialID.Type.TypeInfo.getProperty("OfficialIDValue").FeatureType var feinOriginalValue = fein != null ? fein.getOriginalValue("OfficialIDValue") : theContact.getOriginalValue("TaxID") populateFieldXMLWithValue(abContactXML, "TaxID", theContact.getOfficialID(TC_FEIN), feinOriginalValue, colType, theContact.New) } if (theContact typeis Person) { var ssn = theContact.OfficialIDs.firstWhere(\ o -> o.OfficialIDType == TC_SSN) var colType = OfficialID.Type.TypeInfo.getProperty("OfficialIDValue").FeatureType var ssnOriginalValue = ssn != null ? ssn.getOriginalValue("OfficialIDValue") : theContact.getOriginalValue("TaxID") populateFieldXMLWithValue(abContactXML, "TaxID", theContact.getOfficialID(TC_SSN), ssnOriginalValue, colType, theContact.New) } } override function populateBean(bp : BeanPopulator) { var theContact = bp.Bean var abContactXML = bp.XmlBackedInstance if (theContact typeis Person) { theContact.setOfficialID(TC_SSN, abContactXML.fieldValue("TaxID")) } else { theContact.setOfficialID(TC_FEIN, abContactXML.fieldValue("TaxID")) } } private function populateFieldXMLWithValue(instanceXML : XmlBackedInstance, ab_fieldName : String, value : Object, originalValue : Object, columnType : IType, beanIsNew : boolean) { var fieldXML = new XmlBackedInstance_Field() instanceXML.Field.add(fieldXML) fieldXML.Name = ab_fieldName var pair = XmlSchemaTypeToGosuTypeMappings.gosuToSchema(columnType) fieldXML.Type = pair.First fieldXML.setAttributeSimpleValue(XmlBackedInstance_Field.$ATTRIBUTE_QNAME_Value, pair.Second.gosuValueToStorageValue(value)) if (beanIsNew or ab_fieldName == LINK_ID or ab_fieldName == EXTERNAL_PUBLIC_ID) return; fieldXML.setAttributeSimpleValue(XmlBackedInstance_Field.$ATTRIBUTE_QNAME_OrigValue, pair.Second.gosuValueToStorageValue(originalValue)) } }