2 <%= header('Map tables') %>
4 var gSafeOnload = new Array();
5 var gSafeOnsubmit = new Array();
6 window.onload = SafeOnload;
7 function SafeAddOnLoad(f) {
8 gSafeOnload[gSafeOnload.length] = f;
10 function SafeOnload() {
11 for (var i=0;i<gSafeOnload.length;i++)
14 function SafeAddOnSubmit(f) {
15 gSafeOnsubmit[gSafeOnsubmit.length] = f;
17 function SafeOnsubmit() {
18 for (var i=0;i<gSafeOnsubmit.length;i++)
24 unless ( $cgi->param('magic') ) {
27 #my $fh = $cgi->upload('csvfile');
32 #$tar = Archive::Tar->new();
33 #$tar->create_archive($fh); #or die $tar->error;
37 authserv credtype dunprev invoice pmtdet product taxplan
38 ccdet customer genlog ledger pops pubvars
39 cchist discplan glacct origco prodcat recur users
40 credcode dundet invline payment prodclas repforms webserv
44 <FORM NAME="OneTrueForm" METHOD="POST" ACTION="meta-import.cgi">
45 <INPUT TYPE="hidden" NAME="magic" VALUE="process">
46 <%= hashmaker('schema', \@files, [ grep { ! /^h_/ } dbdef->tables ] ) %>
47 <br><INPUT TYPE="submit" VALUE="done">
53 } elsif ( $cgi->param('magic') eq 'process' ) {
56 <FORM NAME="OneTrueForm" METHOD="POST" ACTION="meta-import.cgi">
57 <INPUT TYPE="hidden" NAME="magic" VALUE="process2">
60 my $schema_string = $cgi->param('schema');
61 my %schema = map { /^\s*(\w+)\s*=>\s*(\w+)\s*$/
62 or die "guru meditation #420: $_";
65 split( /\n/, $schema_string );
67 #*** should be in global.asa/handler.pl like the rest
68 eval 'use Text::CSV_XS;';
70 foreach my $table ( keys %schema ) {
72 my $csv = Text::CSV_XS->new({ 'binary'=>1 });
73 open(FILE,"</home/ivan/intergate/legacy/csvdir/$table")
74 or die "can't /home/ivan/intergate/legacy/csvdir/$table: $!";
75 my $header = lc(<FILE>);
77 $csv->parse($header) or die;
78 my @from_columns = $csv->fields;
80 my @fs_columns = dbdef->table($schema{$table})->columns;
83 <%= hashmaker($table, \@from_columns, \@fs_columns, $table, $schema{$table} ) %>
90 <br><INPUT TYPE="submit" VALUE="done">
96 } elsif ( $cgi->param('magic') eq 'process' ) {
105 my($name, $from, $to, $labelfrom, $labelto) = @_;
106 $fromsize = scalar(@$from);
107 $tosize = scalar(@$to);
108 "<TABLE><TR><TH>$labelfrom</TH><TH>$labelto</TH></TR><TR><TD>".
109 qq!<SELECT NAME="${name}_from" SIZE=$fromsize>\n!.
110 join("\n", map { qq!<OPTION VALUE="$_">$_</OPTION>! } sort { $a cmp $b } @$from ).
113 qq!<SELECT NAME="${name}_to" SIZE=$tosize>\n!.
114 join("\n", map { qq!<OPTION VALUE="$_">$_</OPTION>! } sort { $a cmp $b } @$to ).
117 '<TR><TD COLSPAN=2>'.
118 qq!<INPUT TYPE="button" VALUE="map" onClick="toke_$name(this.form)">!.
119 '</TD></TR><TR><TD COLSPAN=2>'.
120 qq!<TEXTAREA NAME="$name" COLS=80 ROWS=8></TEXTAREA>!.
121 '</TD></TR></TABLE>'.
123 function toke_$name() {
124 fromObject = document.OneTrueForm.${name}_from;
125 for (var i=fromObject.options.length-1;i>-1;i--) {
126 if (fromObject.options[i].selected)
127 fromname = deleteOption_$name(fromObject,i);
129 toObject = document.OneTrueForm.${name}_to;
130 for (var i=toObject.options.length-1;i>-1;i--) {
131 if (toObject.options[i].selected)
132 toname = deleteOption_$name(toObject,i);
134 document.OneTrueForm.$name.value = document.OneTrueForm.$name.value + fromname + ' => ' + toname + '\\n';
136 function deleteOption_$name(object,index) {
137 value = object.options[index].value;
138 object.options[index] = null;