"""General Payment Details Document.""" from payee.connectors.secure_data.document import SecureDocument from payee.connectors.secure_data.fields.text_field import TextField class KnrDetailsDocument(SecureDocument): """Knr Details Document.""" _document_type = 'knr_details' _fields = { 'w_form_type': TextField('w_form_type', encrypt=True, required=False), 'w_form_expiry': TextField('w_form_expiry', encrypt=True, required=False), 'sap_vendor_id': TextField('sap_vendor_id', encrypt=True, required=False), 'modified_at': TextField('modified_at', encrypt=True, required=False), 'modified_by_profile_type': TextField( 'modified_by_profile_type', encrypt=True, required=True ), 'modified_by_profile_id': TextField( 'modified_by_profile_id', encrypt=True, required=True ), 'modified_by_identity': TextField( 'modified_by_identity', encrypt=True, required=True ), 'revision': TextField('revision', encrypt=False, required=False), } @staticmethod def build_response( payee_id, secure_document_item: SecureDocument, obscure_pii=False ) -> dict | None: """Format the response given the raw data.""" # Added to prevent failure when DynamoDB is not in sync with prod data if secure_document_item is None: return None revision = ( secure_document_item.get_value('revision') if secure_document_item.field_exists('revision') else None ) message = { 'account_payee_id': payee_id, 'w_form': { 'w_form_type': secure_document_item.get_value('w_form_type'), 'w_form_expiry': secure_document_item.get_value('w_form_expiry'), }, 'sap_vendor_id': secure_document_item.get_value('sap_vendor_id'), 'modified_by': secure_document_item.get_value('modified_by') if secure_document_item.field_exists('modified_by') else None, 'modified_by_profile_type': secure_document_item.get_value( 'modified_by_profile_type' ) if secure_document_item.field_exists('modified_by_profile_type') else None, 'modified_by_profile_id': secure_document_item.get_value( 'modified_by_profile_id' ) if secure_document_item.field_exists('modified_by_profile_id') else None, 'modified_by_identity': secure_document_item.get_value( 'modified_by_identity' ) if secure_document_item.field_exists('modified_by_identity') else None, 'modified_at': secure_document_item.get_value('modified_at'), 'revision': secure_document_item.get_value('revision').split('#')[1] if revision else '0', } return message