import logging
from lxml import etree
from lxml.builder import E
from q2_sdk.models.cores.queries.base_query import BaseQuery
from q2_cores.JXchange.queries import mock_responses
[docs]
class DemographicInfoQuery(BaseQuery):
def __init__(self, logger: logging.Logger, cust_id: str, change_tag=False):
self.cust_id = cust_id
self.change_tag = change_tag
super().__init__(logger)
[docs]
def build(self) -> str:
xtend_elems_names = ["x_TaxDetail", "x_IdVerify", "x_CustRec"]
xtend_elems = []
for node_name in xtend_elems_names:
xtend_elems.append(E.IncXtendElemInfo(E.XtendElem(node_name), E.Ver_1))
msg_rq_hqr_element = E.SrchMsgRqHdr() if not self.change_tag else E.MsgRqHdr
root = E.passthru(
E.CustInq(
msg_rq_hqr_element,
E.CustId(self.cust_id),
E.IncXtendElemArray(*xtend_elems),
xmlns="http://jackhenry.com/jxchange/TPG/2008",
),
servicename="Customer",
)
xml_as_bytes = etree.tostring(root)
return xml_as_bytes.decode()
[docs]
def mock_response(self):
return mock_responses.mock_demographic_info_response(self.cust_id)