[rt-users] Trying to use a CSV file as a custom field values source: "Can't use string (...) as an ARRAY ref while "strict refs" in use."
oscoffrobvetaxem
oscoffrobvetaxem at tin-fan.com
Sat Sep 27 13:56:38 EDT 2014
I am trying to create a custom field values source with a CSV file as a
source.
The CSV file is in this format (for reference):
> "System ID","UPC","EAN","Custom SKU","Manufact.
SKU","Item","Qty.","Price","Tax","Category","Manufacturer","Season","Department","MSRP","Tax
Class","Default Cost","Vendor"
> "210000000002","","","","","LABOR - Do Something Important: Make
Moneys","-","$30.00","No","Service / Important
Stuff","","","","0.00","Labor","0.000000000",""
The CSV is a dump from my POS system and I would like to have Request
Tracker populate the values of an "Enter multiple values" type custom field
with specific elements from that CSV joined together (Columns 5 + 7).
The code I have hacked together to fill an array with the data I want is as
follows:
> package RT::CustomFieldValues::LaborItems;
>
> use strict;
> use warnings;
>
> use base qw(RT::CustomFieldValues::External);
> use Text::CSV;
>
> sub SourceDescription {
> return 'Labor items from the POS.';
> }
>
> sub ExternalValues {
> my @csvdata;
> my $file =
'/var/rt4/lib/RT/CustomFieldValues/item_listing_LABOR.csv';
>
> my $csv = Text::CSV -> new({ sep_char => ',' });
> open ( my $cvsfh, '<', $file ) or die "Could not open $file: $!";
>
> while( my $row = $csv -> getline( $cvsfh ) ) {
> push @csvdata, $row;
> }
> shift( @csvdata ); # Remove the
first entry (just contains the names of the columns).
> my @customvalues;
> my $i = 0;
> my $name;
> my $price;
> my $cvname;
> foreach ( @csvdata ){
> my $name = @{ $csvdata[$i][5] };
> my $price = @{ $csvdata[$i++][7] };
> my $cvname = join "", $name, " - ", $price;
# Stick the price on the end of the name.
> push( @customvalues, name => $cvname );
> }
> return @customvalues;
> }
>
> RT::Base->_ImportOverlays();
>
> 1;
I've tried searching through other threads with this error, but haven't been
able to translate anything I've learned into a working field values source
for RequestTracker. If I run the script sans RT specific code I can print
@customvalues and get an array of hashes, or dump @customvalues and see that
the information I want is making it that far at least.
The specific error I am getting is as follows:
> [2491] [Sat Sep 27 16:54:57 2014] [error]: Can't use string ("LABOR - Do
Something Important: "...) as an ARRAY ref while "strict refs" in use at
/var/rt4/sbin/../lib/RT/CustomFieldValues/LaborItems.pm line 30, <$cvsfh>
line 114.
> Stack:
> [/var/rt4/sbin/../lib/RT/CustomFieldValues/LaborItems.pm:30]
> [/var/rt4/sbin/../lib/RT/CustomFieldValues/External.pm:194]
> [/usr/local/share/perl5/DBIx/SearchBuilder.pm:507]
> [/var/rt4/share/html/Admin/CustomFields/Modify.html:257]
> [/var/rt4/share/html/Admin/autohandler:49]
> [/var/rt4/sbin/../lib/RT/Interface/Web.pm:682]
> [/var/rt4/sbin/../lib/RT/Interface/Web.pm:370]
> [/var/rt4/share/html/autohandler:53]
(/var/rt4/sbin/../lib/RT/Interface/Web/Handler.pm:209)
I have a feeling I've just been in Python-land for too long and I've made a
silly mistake somewhere, so if anybody wouldn't mind glancing over my code
I'd really be super stoked for the help!
Thanks for the assistance,
Aaron
--
View this message in context: http://requesttracker.8502.n7.nabble.com/Trying-to-use-a-CSV-file-as-a-custom-field-values-source-Can-t-use-string-as-an-ARRAY-ref-while-stri-tp58645.html
Sent from the Request Tracker - User mailing list archive at Nabble.com.
More information about the rt-users
mailing list