public void request_generation()
        {
            using (new TimeProviderTestScope(() => DateTime.Parse("2019-08-26T14:51:35")))
            {
                var request = new PointIssueRequest(
                    TimeProvider.Now,
                    new MessageId(new TerminalId(0), new SequenceNumber(42), new CheckNumber(13)),
                    new AccountNumber("123"));
                var requestXml = request.BuildRequestDocument();

                const string expected = @"
                    <SVCMessage version=""1"" 
                                posIntfcName=""posInterfaceName"" 
                                posIntfcVersion=""1.00"" 
                                language=""en-US"" 
                                currency=""DKK"" 
                                sequence=""42"" 
                                retransmit=""n"">
                        <RequestCode>POINT_ISSUE</RequestCode>
                        <TraceID>190826145135N420013</TraceID>
                        <TerminalID>0</TerminalID>
                        <TerminalType>Service</TerminalType>
                        <LocalDate>20190826</LocalDate>
                        <LocalTime>145135</LocalTime>
                        <Amount>0.00</Amount>
                        <LocalCurrency>DKK</LocalCurrency>
                        <BusinessDate>20190826</BusinessDate>
                        <TransactionEmployee>0</TransactionEmployee>
                        <RevenueCenter>0</RevenueCenter>
                        <CheckNumber>0013</CheckNumber>
                        <SVAN>123</SVAN>
                    </SVCMessage>";

                Assert.Equal(XE.Parse(expected).ToString(), requestXml.ToString());
            }
        }
        public async Task <PointIssueResponse> PointIssueAsync(AccountNumber accountNumber, CancellationToken cancellationToken = default)
        {
            try
            {
                var messageId = _messageSequencingStrategy.Next();
                var request   =
                    new PointIssueRequest(
                        TimeProvider.Now,
                        messageId,
                        accountNumber);
                var requestXml  = request.BuildRequestDocument();
                var responseXml = await _executor.ExecuteAsync(requestXml, cancellationToken);

                return(new PointIssueResponse(requestXml, responseXml));
            }
            catch (OracleHospitalityClientException)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new OracleHospitalityClientException($"{TransactionKind.POINT_ISSUE} operation failed", e);
            }
        }