Skip to content

Invoice not generated when account does not have zip code and avatax plugin is configured #36

@reshmabidikar

Description

@reshmabidikar

Steps to reproduce:

  1. Ensure that the Avatax plugin is installed and configured
  2. Create a new account (without zip code)
  3. Create a subscription

Expected Behavior: Subscription should be created and invoice should be generated without the tax item (since zip code is not present)
Actual Behavior: Subscription is created but invoice is not generated. The following error is seen in the logs:

java.lang.RuntimeException: AvaTaxClientException{errors=AvaTaxErrors{error=AvaTaxError{code='MissingAddress', message='Transactions must have both an origin and destination address.', target='HttpRequestHeaders', details=[AvaTaxErrorDetail{code='MissingAddress', number=304, message='Transactions must have both an origin and destination address.', description='The line Lines["6bfcec10-1bd1-45d7-a518-62b166ef82ac"] must have both an origin and destination address.  You must either assign a 'SingleLocation' address or both a 'ShipFrom' and a 'ShipTo' address.', faultCode='Client', helpLink='https://developer.avalara.com/avatax/errors/MissingAddress', severity='Error'}]}}}
	at org.killbill.billing.plugin.avatax.api.AvaTaxInvoicePluginApi.getAdditionalInvoiceItems(AvaTaxInvoicePluginApi.java:94)
	at org.killbill.billing.plugin.avatax.api.AvalaraInvoicePluginApi.getAdditionalInvoiceItems(AvalaraInvoicePluginApi.java:87)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.killbill.billing.osgi.ContextClassLoaderHelper$ClassLoaderInvocationHandler$1.execute(ContextClassLoaderHelper.java:146)
	at org.killbill.commons.profiling.Profiling.executeWithProfiling(Profiling.java:35)
	at org.killbill.billing.osgi.ContextClassLoaderHelper$ClassLoaderInvocationHandler.handleInvocation(ContextClassLoaderHelper.java:143)
	at org.killbill.commons.utils.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:91)
	at com.sun.proxy.$Proxy203.getAdditionalInvoiceItems(Unknown Source)
	at org.killbill.billing.invoice.InvoicePluginDispatcher.updateOriginalInvoiceWithPluginInvoiceItems(InvoicePluginDispatcher.java:342)
	at org.killbill.billing.invoice.InvoiceDispatcher.processAccountWithLockAndInputTargetDate(InvoiceDispatcher.java:748)
	at org.killbill.billing.invoice.InvoiceDispatcher.processAccountInternal(InvoiceDispatcher.java:412)
	at org.killbill.billing.invoice.InvoiceDispatcher.processAccount(InvoiceDispatcher.java:330)
	at org.killbill.billing.invoice.InvoiceDispatcher.processAccountFromNotificationOrBusEvent(InvoiceDispatcher.java:302)
	at org.killbill.billing.invoice.InvoiceDispatcher.processSubscriptionInternal(InvoiceDispatcher.java:289)
	at org.killbill.billing.invoice.InvoiceDispatcher.processSubscriptionForInvoiceGeneration(InvoiceDispatcher.java:264)
	at org.killbill.billing.invoice.InvoiceDispatcher.processSubscriptionForInvoiceGeneration(InvoiceDispatcher.java:260)
	at org.killbill.billing.invoice.InvoiceListener$1.run(InvoiceListener.java:104)
	at org.killbill.billing.invoice.InvoiceListener$1.run(InvoiceListener.java:93)
	at org.killbill.queue.retry.RetryableSubscriber$SubscriberQueueHandler.handleReadyNotification(RetryableSubscriber.java:89)
	at org.killbill.queue.retry.RetryableHandler.handleReadyNotification(RetryableHandler.java:49)
	at org.killbill.queue.retry.RetryableSubscriber.handleEvent(RetryableSubscriber.java:49)
	at org.killbill.billing.invoice.InvoiceListener.handleEvent(InvoiceListener.java:230)
	at org.killbill.billing.invoice.InvoiceListener.handleSubscriptionTransition(InvoiceListener.java:238)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.killbill.commons.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:106)
	at org.killbill.commons.eventbus.Subscriber.lambda$dispatchEvent$0(Subscriber.java:92)
	at org.killbill.commons.utils.concurrent.DirectExecutor.execute(DirectExecutor.java:34)
	at org.killbill.commons.eventbus.Subscriber.dispatchEvent(Subscriber.java:89)
	at org.killbill.commons.eventbus.Dispatcher$ImmediateDispatcher.dispatch(Dispatcher.java:132)
	at org.killbill.commons.eventbus.EventBus.postWithException(EventBus.java:293)
	at org.killbill.bus.DefaultPersistentBus.dispatchBusEventWithMetrics(DefaultPersistentBus.java:430)
	at org.killbill.bus.dispatching.BusCallableCallback.dispatch(BusCallableCallback.java:42)
	at org.killbill.bus.dispatching.BusCallableCallback.dispatch(BusCallableCallback.java:31)
	at org.killbill.queue.dispatching.Dispatcher$CallableQueueHandler.call(Dispatcher.java:146)
	at org.killbill.queue.dispatching.Dispatcher$CallableQueueHandler.call(Dispatcher.java:114)
	at org.killbill.commons.concurrent.WrappedCallable.call(WrappedCallable.java:45)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.killbill.commons.concurrent.WrappedRunnable.run(WrappedRunnable.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.killbill.billing.plugin.avatax.client.AvaTaxClientException: org.killbill.billing.plugin.util.http.InvalidRequest: Invalid request
	at org.killbill.billing.plugin.avatax.client.AvaTaxClient.createTransaction(AvaTaxClient.java:110)
	at org.killbill.billing.plugin.avatax.api.AvaTaxTaxCalculator.buildInvoiceItems(AvaTaxTaxCalculator.java:119)
	at org.killbill.billing.plugin.avatax.api.AvaTaxTaxCalculatorBase.getTax(AvaTaxTaxCalculatorBase.java:153)
	at org.killbill.billing.plugin.avatax.api.AvaTaxTaxCalculatorBase.compute(AvaTaxTaxCalculatorBase.java:85)
	at org.killbill.billing.plugin.avatax.api.AvaTaxInvoicePluginApi.getAdditionalInvoiceItems(AvaTaxInvoicePluginApi.java:90)
	... 46 common frames omitted
Caused by: org.killbill.billing.plugin.util.http.InvalidRequest: Invalid request
	at org.killbill.billing.plugin.util.http.HttpClient.executeAndWait(HttpClient.java:198)
	at org.killbill.billing.plugin.util.http.HttpClient.doCall(HttpClient.java:183)
	at org.killbill.billing.plugin.avatax.client.AvaTaxClient.createTransaction(AvaTaxClient.java:94)
	... 50 common frames omitted

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions