my $dbh = $::form->get_standard_dbh;
$dbh->begin_work;
- my $query = 'INSERT INTO csv_import_report_rows (csv_import_report_id, col, row, value) VALUES (?, ?, ?, ?)';
+ my $query = 'INSERT INTO csv_import_report_rows (csv_import_report_id, col, row, value) VALUES (?, ?, ?, ?)';
+ my $query2 = 'INSERT INTO csv_import_report_status (csv_import_report_id, row, type, value) VALUES (?, ?, ?, ?)';
my $sth = $dbh->prepare($query);
+ my $sth2 = $dbh->prepare($query2);
# save headers
my @headers = (
$sth->execute($report->id, $_, $row + 1, $data_row->{info_data}{ $info_methods[$_] }) for 0 .. $#info_methods;
$sth->execute($report->id, $o1 + $_, $row + 1, $data_row->{object}->${ \ $methods[$_] }) for 0 .. $#methods;
$sth->execute($report->id, $o2 + $_, $row + 1, $data_row->{raw_data}{ $raw_methods[$_] }) for 0 .. $#raw_methods;
+
+ $sth2->execute($report->id, $row + 1, 'information', $_) for @{ $data_row->{information} || [] };
+ $sth2->execute($report->id, $row + 1, 'errors', $_) for @{ $data_row->{errors} || [] };
}
$dbh->commit;
class => 'SL::DB::CsvImportReportRow',
column_map => { id => 'csv_import_report_id' },
},
+ status => {
+ type => 'one to many',
+ class => 'SL::DB::CsvImportReportStatus',
+ column_map => { id => 'csv_import_report_id' },
+ },
);
__PACKAGE__->meta->make_manager_class;
return $self->{folded_rows};
}
+sub folded_status {
+ my ($self) = @_;
+
+ $self->_fold_status unless $self->{folded_status};
+
+ return $self->{folded_status};
+}
+
sub _fold_rows {
my ($self) = @_;
$self->{folded_rows} = [];
for my $row_obj (@{ $self->rows }) {
- $::lxdebug->dump(0, "adding", $row_obj->row . ' ' . $row_obj->col . ' ' . $row_obj->value);
$self->{folded_rows}->[ $row_obj->row ] ||= [];
$self->{folded_rows}->[ $row_obj->row ][ $row_obj->col ] = $row_obj->value;
- $::lxdebug->dump(0, "now", $self->{folded_rows});
+ }
+}
+
+sub _fold_status {
+ my ($self) = @_;
+
+ $self->{folded_status} = [];
+
+ for my $status_obj (@{ $self->status }) {
+ $self->{folded_status}->[ $status_obj->row ] ||= {};
+ $self->{folded_status}->[ $status_obj->row ]{information} ||= [];
+ $self->{folded_status}->[ $status_obj->row ]{errors} ||= [];
+ push @{ $self->{folded_status}->[ $status_obj->row ]{ $status_obj->type } }, $status_obj->value;
}
}
+++ /dev/null
-# This file has been auto-generated only because it didn't exist.
-# Feel free to modify it at will; it will not be overwritten automatically.
-
-package SL::DB::CsvImportReportRowStatus;
-
-use strict;
-
-use SL::DB::MetaSetup::CsvImportReportRowStatus;
-
-# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
-__PACKAGE__->meta->make_manager_class;
-
-1;
--- /dev/null
+# This file has been auto-generated only because it didn't exist.
+# Feel free to modify it at will; it will not be overwritten automatically.
+
+package SL::DB::CsvImportReportStatus;
+
+use strict;
+
+use SL::DB::MetaSetup::CsvImportReportStatus;
+
+# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
+__PACKAGE__->meta->make_manager_class;
+
+1;
csv_import_profile_settings => 'csv_import_profile_setting',
csv_import_reports => 'csv_import_report',
csv_import_report_rows => 'csv_import_report_row',
- csv_import_report_row_status => 'csv_import_report_row_status',
+ csv_import_report_status => 'csv_import_report_status',
custom_variable_configs => 'custom_variable_config',
custom_variables => 'custom_variable',
custom_variables_validity => 'custom_variable_validity',
+++ /dev/null
-# This file has been auto-generated. Do not modify it; it will be overwritten
-# by rose_auto_create_model.pl automatically.
-package SL::DB::CsvImportReportRowStatus;
-
-use strict;
-
-use base qw(SL::DB::Object);
-
-__PACKAGE__->meta->setup(
- table => 'csv_import_report_row_status',
-
- columns => [
- id => { type => 'serial', not_null => 1 },
- csv_import_report_row_id => { type => 'integer', not_null => 1 },
- type => { type => 'text', not_null => 1 },
- value => { type => 'text' },
- ],
-
- primary_key_columns => [ 'id' ],
-
- foreign_keys => [
- csv_import_report_row => {
- class => 'SL::DB::CsvImportReportRow',
- key_columns => { csv_import_report_row_id => 'id' },
- },
- ],
-);
-
-1;
-;
--- /dev/null
+# This file has been auto-generated. Do not modify it; it will be overwritten
+# by rose_auto_create_model.pl automatically.
+package SL::DB::CsvImportReportStatus;
+
+use strict;
+
+use base qw(SL::DB::Object);
+
+__PACKAGE__->meta->setup(
+ table => 'csv_import_report_status',
+
+ columns => [
+ id => { type => 'serial', not_null => 1 },
+ csv_import_report_id => { type => 'integer', not_null => 1 },
+ row => { type => 'integer', not_null => 1 },
+ type => { type => 'text', not_null => 1 },
+ value => { type => 'text' },
+ ],
+
+ primary_key_columns => [ 'id' ],
+);
+
+1;
+;
value TEXT
);
-CREATE TABLE csv_import_report_row_status (
+CREATE TABLE csv_import_report_status (
id SERIAL PRIMARY KEY,
- csv_import_report_row_id INTEGER NOT NULL REFERENCES csv_import_report_rows(id),
+ csv_import_report_id INTEGER NOT NULL REFERENCES csv_import_reports(id),
+ row INTEGER NOT NULL,
type TEXT NOT NULL,
value TEXT
);
<th>[%- LxERP.t8('Notes') %]</th>
</tr>
[%- ELSE %]
- <tr class="[% IF row.errors.size %]redrow[% ELSE %]listrow[% END %][% loop.count % 2 %]">
+ [% csv_import_report_errors = SELF.report.folded_status.${loop.index}.errors %]
+ <tr class="[% IF csv_import_report_errors.size %]redrow[% ELSE %]listrow[% END %][% loop.count % 2 %]">
[%- FOREACH value = row %]
<td>[%- value | html %]</td>
[%- END %]
<td>
- [%- FOREACH error = row.errors %][%- HTML.escape(error) %][% UNLESS loop.last %]<br>[%- END %][%- END %]
- [%- FOREACH info = row.information %][% IF !loop.first || row.errors.size %]<br>[%- END %][%- HTML.escape(info) %][%- END %]
+ [%- FOREACH error = csv_import_report_errors %][%- error | html %][% UNLESS loop.last %]<br>[%- END %][%- END %]
+ [%- FOREACH info = SELF.report.folded_status.${loop.index}.information %][% IF !loop.first || csv_import_report_errors.size %]<br>[%- END %][%- info | html %][%- END %]
</td>
</tr>
[%- END %]