public override Task OnActivateAsync()
        {
            // Initialize grain state

            this._taxSvc        = new TaxSvc(_accountNumber, _licenseKey, _serviceUrl);
            this._getTaxRequest = new GetTaxRequest();
            this._getTaxResult  = new GetTaxResult();

            return(base.OnActivateAsync());
        }
            public async Task AvalaraCanCancelTax()
            {
                // Arrange

                if (!GrainClient.IsInitialized)
                {
                    GrainClient.Initialize();
                }

                // Act

                var testGrain = GrainFactory.GetGrain <IServiceGrainAvalara>("ServiceGrainAvalaraCanCancelTaxTest");

                AvaTax.GetTaxRequest testTaxRequest = taxRequest;
                testTaxRequest.DocType = AvaTax.DocType.SalesInvoice; // So we have a doc to cancel.

                AvaTax.GetTaxResult testGetTaxResult = await testGrain.GetTax(taxRequest);

                AvaTax.CancelTaxRequest testCancelTaxRequest = new AvaTax.CancelTaxRequest()
                {
                    // DocCode/CompanyCode recommended transaction ID method, DocId not recommended.
                    CancelCode  = AvaTax.CancelCode.DocDeleted,
                    CompanyCode = taxRequest.CompanyCode,   // Required unless using DocId.
                    DocCode     = testGetTaxResult.DocCode, // Required unless using DocId.
                    DocType     = taxRequest.DocType,       // Required: SalesInvoice, ReturnInvoice, or PurchaseInvoice.
                };

                AvaTax.CancelTaxResult testCancelTaxResult = await testGrain.CancelTax(testCancelTaxRequest);

                // Assert
                Assert.IsNotNull(testCancelTaxResult);
                Assert.AreEqual(testCancelTaxResult.ResultCode.ToString(), "Success");

                // Clean up
                await testGrain.ClearStateAsync();

                GrainClient.Uninitialize();
            }