How can I enclose values with double quotes in PDI? - export-to-csv

I want to create a csv file as output,but there are some NULL in the stream. I set the Text file output config like this:
content tab:
separator --> ,
enclosure: --> "
force the enclosure around fields? --> yes
fields tab:
Null --> ""
I use the Kettle 6.0 version, using the above config, the Null values are getting replaced by """""" string, if I don't set the default value "" for the Null in the fields tab, the Null values will not be enclosed by the double quotes in the output csv file. How can I generate a CSV file with the correct output?
Thanks in advance.

Here's your solution:
Don't force the enclosure in the Text file output
Remove "" from fields --> Null
Use my example. It will do what you want:
<?xml version="1.0" encoding="UTF-8"?>
<transformation-steps>
<steps>
<step>
<name>Data Grid</name>
<type>DataGrid</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<fields>
<field>
<name>Something</name>
<type>String</type>
<format/>
<currency/>
<decimal/>
<group/>
<length>-1</length>
<precision>-1</precision>
<set_empty_string>N</set_empty_string>
</field>
</fields>
<data>
<line> <item>asda</item> </line>
<line> <item/> </line>
<line> <item>sadasd</item> </line>
<line> <item/> </line>
<line> <item>asdads</item> </line>
</data>
<cluster_schema/>
<remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
<xloc>159</xloc>
<yloc>125</yloc>
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Text file output</name>
<type>TextFileOutput</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<separator>;</separator>
<enclosure/>
<enclosure_forced>N</enclosure_forced>
<enclosure_fix_disabled>N</enclosure_fix_disabled>
<header>Y</header>
<footer>N</footer>
<format>DOS</format>
<compression>None</compression>
<encoding/>
<endedLine/>
<fileNameInField>N</fileNameInField>
<fileNameField/>
<create_parent_folder>Y</create_parent_folder>
<file>
<name>${Internal.Transformation.Filename.Directory}\file.txt</name>
<is_command>N</is_command>
<servlet_output>N</servlet_output>
<do_not_open_new_file_init>N</do_not_open_new_file_init>
<extention>csv</extention>
<append>N</append>
<split>N</split>
<haspartno>N</haspartno>
<add_date>N</add_date>
<add_time>N</add_time>
<SpecifyFormat>N</SpecifyFormat>
<date_time_format/>
<add_to_result_filenames>Y</add_to_result_filenames>
<pad>N</pad>
<fast_dump>N</fast_dump>
<splitevery>0</splitevery>
</file>
<fields>
<field>
<name>quotes_bounded_something</name>
<type>String</type>
<format/>
<currency/>
<decimal/>
<group/>
<nullif/>
<trim_type>none</trim_type>
<length>-1</length>
<precision>-1</precision>
</field>
</fields>
<cluster_schema/>
<remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
<xloc>547</xloc>
<yloc>126</yloc>
<draw>Y</draw>
</GUI>
</step>
<step>
<name>Calculator</name>
<type>Calculator</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<calculation><field_name>quotes</field_name>
<calc_type>CONSTANT</calc_type>
<field_a>"</field_a>
<field_b/>
<field_c/>
<value_type>String</value_type>
<value_length>-1</value_length>
<value_precision>-1</value_precision>
<remove>N</remove>
<conversion_mask/>
<decimal_symbol/>
<grouping_symbol/>
<currency_symbol/>
</calculation>
<calculation><field_name>prefixed_field</field_name>
<calc_type>ADD</calc_type>
<field_a>quotes</field_a>
<field_b>Something</field_b>
<field_c/>
<value_type>String</value_type>
<value_length>-1</value_length>
<value_precision>-1</value_precision>
<remove>N</remove>
<conversion_mask/>
<decimal_symbol/>
<grouping_symbol/>
<currency_symbol/>
</calculation>
<calculation><field_name>quotes_bounded_something</field_name>
<calc_type>ADD</calc_type>
<field_a>prefixed_field</field_a>
<field_b>quotes</field_b>
<field_c/>
<value_type>String</value_type>
<value_length>-1</value_length>
<value_precision>-1</value_precision>
<remove>N</remove>
<conversion_mask/>
<decimal_symbol/>
<grouping_symbol/>
<currency_symbol/>
</calculation>
<cluster_schema/>
<remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
<xloc>279</xloc>
<yloc>125</yloc>
<draw>Y</draw>
</GUI>
</step>
<step>
<name>If field value is null</name>
<type>IfNull</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<replaceAllByValue/>
<replaceAllMask/>
<selectFields>Y</selectFields>
<selectValuesType>N</selectValuesType>
<setEmptyStringAll>N</setEmptyStringAll>
<valuetypes>
</valuetypes>
<fields>
<field>
<name>quotes_bounded_something</name>
<value>""</value>
<mask/>
<set_empty_string>N</set_empty_string>
</field>
</fields>
<cluster_schema/>
<remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
<xloc>399</xloc>
<yloc>125</yloc>
<draw>Y</draw>
</GUI>
</step>
</steps>
<order>
<hop> <from>Data Grid</from><to>Calculator</to><enabled>Y</enabled> </hop>
<hop> <from>Calculator</from><to>If field value is null</to><enabled>Y</enabled> </hop>
<hop> <from>If field value is null</from><to>Text file output</to><enabled>Y</enabled> </hop>
</order>
<notepads>
</notepads>
<step_error_handling>
</step_error_handling>
</transformation-steps>

Related

Create dataframe from xml file transform parent row tag to column

I have the following xml:
<?xml version="1.0" encoding="UTF-8"?>
<Tables>
<Table Name="T1">
<Field Order="1" ColumnName="c1" Length="1" Type="C" />
<Field Order="2" ColumnName="c2" Length="50" Type="C" />
<Field Order="3" ColumnName="c3" Length="2" Type="C" />
</Catalog>
<Table Name="T2">
<Field Order="1" ColumnName="c1" Length="9" Type="I" />
<Field Order="2" ColumnName="c2" Length="120" Type="C" />
</Table>
</Tables>
And I want to transform it in the following Dataframe using PySpark:
How can I accomplish this using PySpark?
I tried:
df= spark.read.format('com.databricks.spark.xml').option("rowTag", "Field").load(path))
But with a solution like this I lose the Table Name.

Powershell Make a Dymo LabelWriter 450 Label

I made a label and then opened it in notepad and got the following.
<?xml version="1.0" encoding="utf-8"?>
<DieCutLabel Version="8.0" Units="twips" MediaType="Default">
<PaperOrientation>Landscape</PaperOrientation>
<Id>Small30336</Id>
<IsOutlined>false</IsOutlined>
<PaperName>30336 1 in x 2-1/8 in</PaperName>
<DrawCommands>
<RoundRectangle X="0" Y="0" Width="1440" Height="3060" Rx="180" Ry="180" />
</DrawCommands>
<ObjectInfo>
<TextObject>
<Name>TEXT</Name>
<ForeColor Alpha="255" Red="0" Green="0" Blue="0" />
<BackColor Alpha="0" Red="255" Green="255" Blue="255" />
<LinkedObjectName />
<Rotation>Rotation0</Rotation>
<IsMirrored>False</IsMirrored>
<IsVariable>False</IsVariable>
<GroupID>-1</GroupID>
<IsOutlined>False</IsOutlined>
<HorizontalAlignment>Center</HorizontalAlignment>
<VerticalAlignment>Top</VerticalAlignment>
<TextFitMode>ShrinkToFit</TextFitMode>
<UseFullFontHeight>True</UseFullFontHeight>
<Verticalized>False</Verticalized>
<StyledText>
<Element>
<String xml:space="preserve">Hello
World</String>
<Attributes>
<Font Family="Arial" Size="12" Bold="False" Italic="False" Underline="False" Strikeout="False" />
<ForeColor Alpha="255" Red="0" Green="0" Blue="0" HueScale="100" />
</Attributes>
</Element>
</StyledText>
</TextObject>
<Bounds X="130" Y="147" Width="2798" Height="1188" />
</ObjectInfo>
so what I attempted to do is use powershell to make the same label and print it automatically per below
$Word = "Hello"
$Word1 = "World"
#"
<?xml version="1.0" encoding="utf-8"?>
<DieCutLabel Version="8.0" Units="twips" MediaType="Default">
<PaperOrientation>Landscape</PaperOrientation>
<Id>Small30336</Id>
<IsOutlined>false</IsOutlined>
<PaperName>30336 1 in x 2-1/8 in</PaperName>
<DrawCommands>
<RoundRectangle X="0" Y="0" Width="1440" Height="3060" Rx="180" Ry="180" />
</DrawCommands>
<ObjectInfo>
<TextObject>
<Name>TEXT</Name>
<ForeColor Alpha="255" Red="0" Green="0" Blue="0" />
<BackColor Alpha="0" Red="255" Green="255" Blue="255" />
<LinkedObjectName />
<Rotation>Rotation0</Rotation>
<IsMirrored>False</IsMirrored>
<IsVariable>False</IsVariable>
<GroupID>-1</GroupID>
<IsOutlined>False</IsOutlined>
<HorizontalAlignment>Center</HorizontalAlignment>
<VerticalAlignment>Top</VerticalAlignment>
<TextFitMode>ShrinkToFit</TextFitMode>
<UseFullFontHeight>True</UseFullFontHeight>
<Verticalized>False</Verticalized>
<StyledText>
<Element>
<String xml:space="preserve">$Word
$Word1 </String>
<Attributes>
<Font Family="Arial" Size="12" Bold="False" Italic="False" Underline="False" Strikeout="False" />
<ForeColor Alpha="255" Red="0" Green="0" Blue="0" HueScale="100" />
</Attributes>
</Element>
</StyledText>
</TextObject>
<Bounds X="130" Y="147" Width="2798" Height="1188" />
</ObjectInfo>
</DieCutLabel>
"#>Save.label
& ".\PrintLabel.exe" Save.label
is there a way to make this work or a better way to do this ?
it will print but a default label in the examples and not the one i want to say hello world (on two different lines)
i tried to add full links to each but it does the same thing.

IPP QBO UK v3 - Trouble adding Journal Entry with TaxCodeRef

Trying to get a journal entry to save in QBO UK using TaxCodeRef but keep getting the same error message back. I have set the TaxApplicableOn correctly. I did a query of a manually entered journal entry and it shows the element TaxAmount however I don't know this value at runtime. How can I get a journal entry to save when setting a TaxCodeRef?
Here's my XML request and response.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<outgoing><?xml version="1.0" encoding="UTF-8"?>
<JournalEntry xmlns:ns2="http://www.intuit.com/sb/cdm/qbo" xmlns="http://schema.intuit.com/finance/v3">
<TxnDate>2014-03-05</TxnDate>
<PrivateNote>Invoice</PrivateNote>
<DocNumber>102</DocNumber>
<Adjustment>false</Adjustment>
<Line>
<Desc>Credit Sales</Desc>
<Amount>150</Amount>
<DetailType>JournalEntryLineDetail</DetailType>
<JournalEntryLineDetail>
<PostingType>Credit</PostingType>
<AccountRef>1</AccountRef>
<ClassRef></ClassRef>
<DepartmentRef></DepartmentRef>
<BillableStatus></BillableStatus>
<TaxCodeRef>3</TaxCodeRef>
<TaxApplicableOn>Credit</TaxApplicableOn>
</JournalEntryLineDetail>
</Line>
<Line>
<Desc>Debit Accounts Receivable</Desc>
<Amount>150.00</Amount>
<DetailType>JournalEntryLineDetail</DetailType>
<JournalEntryLineDetail>
<PostingType>Debit</PostingType>
<Entity>
<Type>Customer</Type>
<EntityRef>21</EntityRef>
</Entity>
<AccountRef>52</AccountRef>
<ClassRef></ClassRef>
<DepartmentRef></DepartmentRef>
<BillableStatus></BillableStatus>
<TaxCodeRef>3</TaxCodeRef>
<TaxApplicableOn>Debit</TaxApplicableOn>
</JournalEntryLineDetail>
</Line>
</JournalEntry>
</outgoing>
<returns><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2014-03-17T07:21:39.545-07:00">
<Fault type="ValidationFault">
<Error code="2270" element="TaxApplicableOn">
<Message>TaxApplicableon missing or invalid</Message>
<Detail>TaxApplicableOn null is required and valid values are Credit or Debit</Detail>
</Error>
<Error code="2270" element="TaxApplicableOn">
<Message>TaxApplicableon missing or invalid</Message>
<Detail>TaxApplicableOn null is required and valid values are Credit or Debit</Detail>
</Error>
</Fault>
</IntuitResponse>
</returns>
I created a Journal Entry from QBO UI and selected Sales Check box on the line item.
Here is the response.
Looks like the error message is wrong. Valid value is Sales or Purchase(if Sales box is not selected). Let me get some more details around this.
<JournalEntry domain="QBO" sparse="false">
<Id>29</Id>
<SyncToken>0</SyncToken>
<MetaData>
<CreateTime>2014-03-17T22:29:18-07:00</CreateTime>
<LastUpdatedTime>2014-03-17T22:29:18-07:00</LastUpdatedTime>
</MetaData>
<DocNumber>DocNu2</DocNumber>
<TxnDate>2014-03-18</TxnDate>
<CurrencyRef name="British Pound Sterling">GBP</CurrencyRef>
<ExchangeRate>1</ExchangeRate>
<Line>
<Id>0</Id>
<Description>ff</Description>
<Amount>24.00</Amount>
<DetailType>JournalEntryLineDetail</DetailType>
<JournalEntryLineDetail>
<PostingType>Debit</PostingType>
<Entity>
<Type>Customer</Type>
<EntityRef name="toto">1</EntityRef>
</Entity>
<AccountRef name="Debtors">50</AccountRef>
<TaxCodeRef>3</TaxCodeRef>
<TaxApplicableOn>Sales</TaxApplicableOn>
<TaxAmount>4.80</TaxAmount>
</JournalEntryLineDetail>
</Line>
<Line>
<Id>1</Id>
<Description>ff</Description>
<Amount>28.80</Amount>
<DetailType>JournalEntryLineDetail</DetailType>
<JournalEntryLineDetail>
<PostingType>Credit</PostingType>
<Entity>
<Type>Customer</Type>
<EntityRef name="toto">1</EntityRef>
</Entity>
<AccountRef name="Savings">59</AccountRef>
<TaxCodeRef>9</TaxCodeRef>
<TaxApplicableOn>Sales</TaxApplicableOn>
<TaxAmount>0.00</TaxAmount>
</JournalEntryLineDetail>
</Line>
<TxnTaxDetail>
<TaxLine>
<Amount>4.80</Amount>
<DetailType>TaxLineDetail</DetailType>
<TaxLineDetail>
<TaxRateRef>4</TaxRateRef>
<PercentBased>true</PercentBased>
<TaxPercent>20</TaxPercent>
<NetAmountTaxable>24.00</NetAmountTaxable>
</TaxLineDetail>
</TaxLine>
<TaxLine>
<Amount>0</Amount>
<DetailType>TaxLineDetail</DetailType>
<TaxLineDetail>
<TaxRateRef>15</TaxRateRef>
<PercentBased>true</PercentBased>
<TaxPercent>0</TaxPercent>
<NetAmountTaxable>-28.80</NetAmountTaxable>
</TaxLineDetail>
</TaxLine>
</TxnTaxDetail>
<Adjustment>false</Adjustment>
</JournalEntry>
I see that the docs here-
https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/030_entity_services_reference/journalentry
mention that it is a type of TaxApplicableOnEnum which has valid values as sales or purchase.

File Fuzzing with Peach

I am a beginner in file fuzzing.I want to fuzz Adrenalin Player 2.2.5.3 with peach 3 and during compile got a problem. when I enter this command c:\peach\peach.exe wav.xml receive this error: unable to locate test named "Default".
and here is my code in xml :
<!-- Defines the common wave chunk -->
<DataModel name="Chunk">
<String name="ID" length="4" padCharacter=" " />
<Number name="Size" size="32" >
<Relation type="size" of="Data" />
</Number>
<Blob name="Data" />
<Padding alignment="16" />
</DataModel>
<DataModel name="ChunkData" ref="Chunk">
<String name="ID" value="data" token="true"/>
</DataModel>
<DataModel name="ChunkFact" ref="Chunk">
<String name="ID" value="fact" token="true"/>
<Block name="Data">
<Number size="32" />
<Blob/>
</Block>
</DataModel>
<DataModel name="ChunkSint" ref="Chunk">
<String name="ID" value="sInt" token="true"/>
<Block name="Data">
<Number size="32" />
</Block>
</DataModel>
<DataModel name="ChunkWavl" ref="Chunk">
<String name="ID" value="wavl" token="true"/>
<Block name="Data">
<Block name="ArrayOfChunks" maxOccurs="3000">
<Block ref="ChunkSint"/>
<Block ref="ChunkData" />
</Block>
</Block>
</DataModel>
<DataModel name="ChunkCue" ref="Chunk">
<String name="ID" value="cue " token="true"/>
<Block name="Data">
<Block name="ArrayOfCues" maxOccurs="3000">
<String length="4" />
<Number size="32" />
<String length="4" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
</Block>
</Block>
</DataModel>
<DataModel name="ChunkFmt" ref="Chunk">
<String name="ID" value="fmt " token="true"/>
<Block name="Data">
<Number name="CompressionCode" size="16" />
<Number name="NumberOfChannels" size="16" />
<Number name="SampleRate" size="32" />
<Number name="AverageBytesPerSecond" size="32" />
<Number name="BlockAlign" size="16" />
<Number name="SignificantBitsPerSample" size="16" />
<Number name="ExtraFormatBytes" size="16" />
<Blob name="ExtraData" />
</Block>
</DataModel>
<DataModel name="ChunkPlst" ref="Chunk">
<String name="ID" value="plst" token="true"/>
<Block name="Data">
<Number name="NumberOfSegments" size="32" >
<Relation type="count" of="ArrayOfSegments"/>
</Number>
<Block name="ArrayOfSegments" maxOccurs="3000">
<String length="4" />
<Number size="32" />
<Number size="32" />
</Block>
</Block>
</DataModel>
<DataModel name="ChunkLtxt" ref="Chunk">
<String name="ID" value="ltxt" token="true"/>
<Block name="Data">
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="16" />
<Number size="16" />
<Number size="16" />
<Number size="16" />
<String nullTerminated="true" />
</Block>
</DataModel>
<DataModel name="ChunkSmpl" ref="Chunk">
<String name="ID" value="smpl" token="true"/>
<Block name="Data">
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Block maxOccurs="3000">
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
<Number size="32" />
</Block>
</Block>
</DataModel>
<DataModel name="ChunkInst" ref="Chunk">
<String name="ID" value="inst" token="true"/>
<Block name="Data">
<Number size="8"/>
<Number size="8"/>
<Number size="8"/>
<Number size="8"/>
<Number size="8"/>
<Number size="8"/>
<Number size="8"/>
</Block>
</DataModel>
<!-- Defines the format of a WAV file -->
<DataModel name="Wav">
<!-- wave header -->
<String value="RIFF" token="true" />
<Number size="32" />
<String value="WAVE" token="true"/>
<Choice maxOccurs="30000">
<Block ref="ChunkFmt"/>
<Block ref="ChunkData"/>
<Block ref="ChunkFact"/>
<Block ref="ChunkSint"/>
<Block ref="ChunkWavl"/>
<Block ref="ChunkCue"/>
<Block ref="ChunkPlst"/>
<Block ref="ChunkLtxt"/>
<Block ref="ChunkSmpl"/>
<Block ref="ChunkInst"/>
<Block ref="Chunk"/>
</Choice>
</DataModel>
<!-- This is our simple wave state model -->
<StateModel name="TheState" initialState="Initial">
<State name="Initial">
<!-- Write out our wave file -->
<Action type="output">
<DataModel ref="Wav"/>
<!-- This is our sample file to read in -->
<Data fileName="sample.wav"/>
</Action>
<Action type="close"/>
<!-- Launch the target process -->
<Action type="call" method="StartMPlayer" publisher="Peach.Agent" />
</State>
</StateModel>
<Agent name="WinAgent">
<Monitor class="WindowsDebugger">
<!-- The command line to run. Notice the filename provided matched up
to what is provided below in the Publisher configuration -->
<Param name="CommandLine" value="c:\\Program Files (x86)\\adrenalin\\play.exe fuzzed.wav" />
<!-- This parameter will cause the debugger to wait for an action-call in
the state model with a method="StartMPlayer" before running
program.
-->
<Param name="StartOnCall" value="StartMPlayer" />
<!-- This parameter will cause the monitor to terminate the process
once the CPU usage reaches zero.
-->
<Param name="CpuKill" value="true"/>
</Monitor>
<!-- Enable heap debugging on our process as well. -->
<Monitor class="PageHeap">
<Param name="Executable" value="c:\\Program Files (x86)\\adrenalin\\play.exe"/>
</Monitor>
</Agent>
<Agent name="LinAgent">
<!-- Register for core file notifications. -->
<Monitor class="LinuxCrashMonitor"/>
<Monitor class="Process">
<!-- The executable to run. -->
<Param name="Executable" value="mplayer"/>
<!-- This parameter will cause the monitor to wait for an action-call in
the state model with a method="StartMPlayer" before running
program.
-->
<Param name="StartOnCall" value="StartMPlayer"/>
<!-- The program arguments. Notice the filename provided matched up
to what is provided below in the Publisher configuration -->
<Param name="Arguments" value="fuzzed.wav"/>
<!-- This parameter will cause the monitor to terminate the process
once the CPU usage reaches zero.
-->
<Param name="CpuKill" value="true"/>
</Monitor>
</Agent>
<Agent name="OsxAgent">
<Monitor class="CrashWrangler">
<!-- The executable to run. -->
<Param name="Command" value="mplayer" />
<!-- The program arguments. Notice the filename provided matched up
to what is provided below in the Publisher configuration -->
<Param name="Arguments" value="fuzzed.wav" />
<!-- Do not use debug malloc. -->
<Param name="UseDebugMalloc" value="false" />
<!-- Treat read access violations as exploitable. -->
<Param name="ExploitableReads" value="true" />
<!-- Path to Crash Wrangler Execution Handler program. -->
<Param name="ExecHandler" value="/usr/local/bin/exc_handler" />
<!-- This parameter will cause the monitor to wait for an action-call in
the state model with a method="StartMPlayer" before running
program.
-->
<Param name="StartOnCall" value="StartMPlayer" />
</Monitor>
</Agent>
<Test name="Default">
<Agent ref="WinAgent" platform="windows"/>
<Agent ref="LinAgent" platform="linux"/>
<Agent ref="OsxAgent" platform="osx"/>
<StateModel ref="TheState"/>
<Publisher class="File">
<Param name="FileName" value="fuzzed.wav"/>
</Publisher>
<Logger class="Filesystem">
<Param name="Path" value="logs" />
</Logger>
</Test>
When you use the Peach Framework, your pit files(the xml file you have included) must be completed encapsulated by a <Peach>.........</Peach> tag. Try this and see what happens!

IPP Taxable Line

Using the C# API for QuickBooks Desktop, how do I mark lines as taxable? Here is my code:
InvoiceLine qboInvoiceLine = new InvoiceLine();
qboInvoiceLine.Amount = order.ShippingExclTax;
qboInvoiceLine.AmountSpecified = true;
qboInvoiceLine.Taxable = false;
qboInvoiceLine.TaxableSpecified = false;
My XML fails to specify the taxable element:
<?xml version="1.0" encoding="utf-8"?>
<Add xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" RequestId="8313fa49e42f432cacfcade7b0787a7a" FullResponse="true" xmlns="http://www.intuit.com/sb/cdm/v2"><ExternalRealmId>310582310</ExternalRealmId>
<Object xsi:type="Invoice">
<Header>
<DocNumber>1</DocNumber>
<TxnDate>2013-05-18T17:54:52.668263-04:00</TxnDate>
<CustomerName>Web Store</CustomerName>
<ShipAddr>
<Line1>John Smith</Line1>
<Line2>21 West 52nd Street</Line2>
<Line3 />
<City>New York</City>
<Country>United States</Country>
<CountrySubDivisionCode>New York</CountrySubDivisionCode>
<PostalCode>10021</PostalCode>
</ShipAddr>
<DiscountAmt>0</DiscountAmt>
</Header>
<Line>
<Amount>1.0000</Amount>
<ItemName>TestShoe123</ItemName>
<UnitPrice>1.0000</UnitPrice>
<Qty>1</Qty>
</Line>
<Line>
<Amount>0.0000</Amount>
<ItemName>In-Store Pickup</ItemName>
<UnitPrice>0.0000</UnitPrice>
<Qty>1</Qty>
</Line>
I needed to assign SalesTaxCodeName to "Tax" or "Non", instead of Taxable as true or false.