Uploaded image for project: 'AdMaxLocal'
  1. AdMaxLocal
  2. AML-1200

Currency sent to Google must be internationalized

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 2.0.0
    • Fix Version/s: 2.1.0
    • Labels:
    • Environment:

      all

    • Sprint:
      Sprint 2 - Cumberland, Sprint 3 - Cumberland, Sprint 4 - Cumberland, Sprint 5 - Cumberland

      Description

      USD/AUD/GBP all use 2 decimal places. JPY does not use decimal places but we're still sending them to Google and Google is responding with the following errors.

      To reproduce, do a deploy with these values in contenteditor.properties

      #
      # JPY
      #
      ce.orderID = 9081442538
      ce.acct.currencycode = JPY
      ce.acct.language = ja
      
      # Japan DEV
      ce.parentClientCustomerID = 1189748134
      

      Exceptions and errors from Google:

      2013-02-20 02:37:14.163 (2) [P2T1]: 6 Errors found
      2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[0].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
      2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[1].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
      2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[2].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
      2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[3].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
      2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[4].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
      2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[5].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
      2013-02-20 02:37:14.164 (3) [P2T1]: Not retrying Google error. message1=[BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[0].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[1].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[2].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[3].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[4].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[5].operand.budget.amount]
      2013-02-20 02:37:14.164 (3) [P2T1]: Caught other/unrecoverable API Error: "com.google.api.ads.adwords.axis.v201209.cm.ApiException"

      2013-02-20 02:37:15.048 (4) [P2T1]: Exception [handling exception thrown by google...]:com.thesearchagency.searchengines.SearchEngineCommandException: [BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[0].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[1].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[2].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[3].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[4].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[5].operand.budget.amount]
      at com.thesearchagency.searchengines.google.GoogleAdWordsAPI.addCampaignList(GoogleAdWordsAPI.java:3376)
      at com.thesearchagency.searchengines.google.contenteditor.changerequest.CampaignChangeRequest.sendRequest(CampaignChangeRequest.java:72)
      at com.thesearchagency.searchengines.google.contenteditor.changerequest.CampaignChangeRequest.sendRequest(CampaignChangeRequest.java:45)
      at com.thesearchagency.searchengines.google.contenteditor.changerequest.BaseChangeRequest.makeRequest(BaseChangeRequest.java:112)
      at com.thesearchagency.searchengines.google.contenteditor.GoogleContentEditor$SearchEngineUserWorker.handleCampaigns(GoogleContentEditor.java:1059)
      at com.thesearchagency.searchengines.google.contenteditor.GoogleContentEditor$SearchEngineUserWorker.run(GoogleContentEditor.java:884)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
      Caused by: [BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[0].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[1].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[2].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[3].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[4].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[5].operand.budget.amount]
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at java.lang.Class.newInstance0(Class.java:355)
      at java.lang.Class.newInstance(Class.java:308)
      at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104)
      at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90)
      at com.google.api.ads.adwords.axis.v201209.cm.ApiException.getDeserializer(ApiException.java:143)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)
      at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)
      at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464)
      at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547)
      at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157)
      at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
      at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
      at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
      at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
      at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
      at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
      at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
      at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
      at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
      at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
      at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
      at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
      at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
      at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
      at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
      at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
      at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
      at org.apache.axis.client.Call.invoke(Call.java:2767)
      at org.apache.axis.client.Call.invoke(Call.java:2443)
      at org.apache.axis.client.Call.invoke(Call.java:2366)
      at org.apache.axis.client.Call.invoke(Call.java:1812)
      at com.google.api.ads.adwords.axis.v201209.cm.CampaignServiceSoapBindingStub.mutate(CampaignServiceSoapBindingStub.java:1199)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at com.google.api.ads.common.lib.soap.SoapClientHandler.invoke(SoapClientHandler.java:109)
      at com.google.api.ads.common.lib.soap.axis.AxisHandler.invokeSoapCall(AxisHandler.java:175)
      at com.google.api.ads.common.lib.soap.SoapServiceClient.callSoapClient(SoapServiceClient.java:64)
      at com.google.api.ads.common.lib.soap.SoapServiceClient.invoke(SoapServiceClient.java:93)
      at $Proxy20.mutate(Unknown Source)
      at com.thesearchagency.searchengines.google.GoogleAdWordsAPI.addCampaignList(GoogleAdWordsAPI.java:3343)
      ... 11 more

      2013-02-20 02:37:16.747 (2) [P2T1]: Google Request Errors for accountID 135(CampaignChangeRequest)

      id=564, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[0].operand.budget.amount

      id=565, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[1].operand.budget.amount

      id=566, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[2].operand.budget.amount

      id=567, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[3].operand.budget.amount

      id=568, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[4].operand.budget.amount

      id=569, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[5].operand.budget.amount

        Attachments

          Activity

            People

            • Assignee:
              therouxj Jeff Theroux
              Reporter:
              therouxj Jeff Theroux
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: