Source code for q2_sdk.hq.db.template

from lxml.etree import tostring
from lxml.objectify import E

from q2_sdk.core.dynamic_imports import (
    api_ExecuteStoredProcedure as ExecuteStoredProcedure,
)
from q2_sdk.hq.models.hq_params.stored_procedure import ParamsBuilder
from q2_sdk.hq.table_row import TableRow

from .db_object import DbObject

D_TYPES = ExecuteStoredProcedure.DataType


[docs] class TemplateRow(TableRow): TemplateID: int TransactionTypeID: int TransactionType: str TransactionTypeDescription: str BitFlags: int Name: str Description: str CustomerID: int CreateDate: str LastEditDate: str IsSinglePayment: bool RecipientCount: int ACHClassCodeID: int ACHClassCode: int DefaultAccountID: int DefaultSubsidiaryID: int LastPaymentProcessedDate: str LastPaymentProcessedAmount: str CompanyEntryDescription: str
[docs] class TemplateRecipientRow(TableRow): TemplateID: int RecipientID: int
[docs] class Template(DbObject): GET_BY_NAME_KEY = "Name" NAME = "Template" REPRESENTATION_ROW_CLASS = TemplateRow
[docs] async def get(self, user_id: int) -> list[TemplateRow]: assert isinstance(user_id, int), "Please supply a valid user id" response = await self.call_hq( "Q2_TemplateAccessData", ExecuteStoredProcedure.SqlParameters([ ExecuteStoredProcedure.SqlParam( ExecuteStoredProcedure.DataType.Int, "UserID", user_id ) ]), specific_table="Table1", ) return response
[docs] async def get_template_recipients( self, template_id: int ) -> list[TemplateRecipientRow]: assert isinstance(template_id, int), "Please supply a valid user id" response = await self.call_hq( "sdk_GetTemplateRecipients", ExecuteStoredProcedure.SqlParameters([ ExecuteStoredProcedure.SqlParam( ExecuteStoredProcedure.DataType.Int, "template_id", template_id ) ]), representation_class_override=TemplateRecipientRow, ) return response
[docs] async def get_by_subsidiary_ids( self, subsidiary_ids: list[int], ) -> list[TemplateRow]: """ Get templates for the specified subsidiary IDs. :param subsidiary_ids: list of Q2_Subsidiary.SubsidiaryID to query """ subsidiary_nodes = [E.subsidiary(id=str(sid)) for sid in subsidiary_ids] request_xml = E.root(*subsidiary_nodes) request = tostring(request_xml, encoding="utf-8") params = ( ParamsBuilder().add_param(D_TYPES.Xml, "request", request.decode()).build() ) return await self.call_hq( "sdk_GetTemplatesBySubsidiaryIds", ExecuteStoredProcedure.SqlParameters(params), )