use BSE::TB::Products;
use BSE::TB::OtherParents;
-our $VERSION = "1.012";
+our $VERSION = "1.013";
=head1 NAME
$leaf = $self->find_leaf($leaf_id, $importer);
}
if ($leaf) {
+ # make sure id, articleId etc aren't overwritten
+ delete @$entry{$self->primary_key_fields};
@{$leaf}{keys %$entry} = values %$entry;
$leaf->mark_modified(actor => $importer->actor);
$leaf->save;
}
}
+=item primary_key_fields
+
+Fields we can't modify (or initialize) since the database generates
+them.
+
+=cut
+
+sub primary_key_fields {
+ qw(id);
+}
+
1;
=back
use BSE::TB::ProductOptionValues;
use BSE::TB::PriceTiers;
-our $VERSION = "1.009";
+our $VERSION = "1.010";
=head1 NAME
}
}
+=item primary_key_fields
+
+Fields we can't modify (or initialize) since the database (or database
+interface) generates them.
+
+=cut
+
+sub primary_key_fields {
+ my ($class) = @_;
+
+ return ( $class->SUPER::primary_key_fields(), "articleId" );
+}
+
1;
=back
or plan skip_all => "Text::CSV not available";
}
-plan tests => 11;
-
BEGIN {
unshift @INC, File::Spec->catdir(BSE::Test::base_dir(), "cgi-bin", "modules");
}
source=CSV
target=Product
+[import profile avoidcorrupt$when]
+map_id=1
+map_articleId=2
+map_title=3
+map_product_code=4
+source=CSV
+target=Product
+sep_char=\\t
+codes=1
+code_field=product_code
+update_only=1
CFG
{
$testa->remove($cfg) if $testa;
}
}
+
+{
+ my $code = "D$when";
+ my $testa = bse_make_product
+ (
+ cfg => $cfg,
+ title => "test updates",
+ linkAlias => "P$when",
+ retailPrice => 500,
+ product_code => $code,
+ );
+ diag "Product id ".$testa->id;
+ {
+ my $fh = File::Temp->new;
+ my $filename = $fh->filename;
+
+ print $fh <<EOS;
+id\tarticleId\ttitle\tproduct_code
+1\t2\tTesting\t$code
+EOS
+ close $fh;
+ my $imp = BSE::Importer->new(cfg => $cfg, profile => "avoidcorrupt$when",
+ callback => sub { note @_ });
+ $imp->process($filename);
+ my $testb = BSE::TB::Products->getByPkey($testa->id);
+ ok($testb, "managed to fully load the product");
+ is($testb->title, "Testing", "check the title is updated");
+ my $top = BSE::TB::Articles->getByPkey(1);
+ isnt($top->generator, "BSE::Generate::Product",
+ "make sure we didn't scribble over article 1");
+ }
+
+ END {
+ $testa->remove($cfg) if $testa;
+ }
+}
+
+done_testing();