-sub map_data_to_part {
- my ($self, $part_data) = @_;
-
- my %map_part_data = (
- #id => $part_data->{},
- partnumber => $part_data->{sku},
- description => $part_data->{name},
- #listprice => $part_data->{},
- #sellprice => $part_data->{},
- #lastcost => $part_data->{},
- #priceupdate => $part_data->{},
- #weight => $part_data->{},
- notes => $part_data->{description},
- #makemodel => $part_data->{},
- #rop => $part_data->{},
- shop => 1,
- obsolete => 0,
- #bom => $part_data->{},
- #image => $part_data->{},
- #drawing => $part_data->{},
- #microfiche => $part_data->{},
- #partsgroup_id => $part_data->{},
- #ve => $part_data->{},
- #gv => $part_data->{},
- #itime => $part_data->{},
- #mtime => $part_data->{},
- #unit => $part_data->{},
- unit => 'Stck',
- #formel => $part_data->{},
- #not_discountable => $part_data->{},
- #buchungsgruppen_id => $part_data->{},
- #payment_id => $part_data->{},
- #ean => $part_data->{},
- #price_factor_id => $part_data->{},
- #onhand => $part_data->{},
- #stockable => $part_data->{},
- #has_sernumber => $part_data->{},
- #warehouse_id => $part_data->{},
- #bin_id => $part_data->{},
- #df_status_aktuell => $part_data->{},
- #df_status_verlauf => $part_data->{},
- #active => $part_data->{},
- #classification_id => $part_data->{},
- part_type => 'part',
- );
- return SL::DB::Part->new(%map_part_data);
-}
-
-sub map_data_to_shop_part {
- my ($self, $part_data, $part) = @_;
-
- my @categories = ();
- foreach my $row_cat ( @{ $part_data->{categories} } ) {
- my @tmp;
- push( @tmp,$row_cat->{id} );
- push( @tmp,$row_cat->{name} );
- push( @categories,\@tmp );
- }
- my %map_shop_part_data = (
- #id => ,
- shop_id => $self->config->id,
- part_id => $part->id,
- shop_description => $part_data->{description},
- #itime => ,
- #mtime => ,
- #last_update => ,
- #show_date => ,
- sortorder => $part_data->{menu_order},
- #front_page => ,
- active => 1,
- shop_category => \@categories,
- #active_price_source => ,
- #metatag_keywords => ,
- #metatag_description => ,
- #metatag_title => ,
- #shop_versandhinweis => ,
- );
- return SL::DB::ShopPart->new(%map_shop_part_data);
-}
-sub get_shop_parts {
- my ($self, $partnumber) = @_;
-
- my $dbh = SL::DB::client;
- my @errors;
- my $number_of_parts = 0;
- my %fetched_parts;
- my $answer;
-
- if ($partnumber) {
- $partnumber = $::form->escape($partnumber);#don't accept / in partnumber
- $answer = $self->send_request("products/", undef , "get" , "&sku=$partnumber");
- } else {
- #TODO
- $answer = $self->send_request("products/", undef , "get");
- if ($answer->{total_pages} > 1) {
- my $current_page = 2;
- while ($current_page <= $answer->{total_pages}) {
- my $tmp_answer = $self->send_request("products/", undef , "get", "&page=$current_page");
- foreach my $part (@{$tmp_answer->{data}}) {
- push @{$answer->{data}} , $part;
- }
- $current_page++;
- }
- }
- }
-
- if($answer->{success} && scalar @{$answer->{data}}){
- $dbh->with_transaction( sub{
- foreach my $part_data (@{$answer->{data}}) {
- unless (!$part_data->{sku} || SL::DB::Manager::Part->get_all_count( query => [ partnumber => $part_data->{sku} ] )) {
- my $part = $self->map_data_to_part($part_data);
- #$main::lxdebug->dump(0, "TST: WooCommerce get_shop_parts part ", $part);
- $part->save;
- my $shop_part = $self->map_data_to_shop_part($part_data, $part);
- #$main::lxdebug->dump(0, "TST: WooCommerce get_shop_parts shop_part ", $shop_part);
- $shop_part->save;
- $number_of_parts++;
- }
- }
- return 1;
- })or do {
- push @errors,($::locale->text('Saving failed. Error message from the database: #1', $dbh->error));
- };
-
- if(@errors){
- flash_later('error', $::locale->text('Errors: #1', @errors));
- }
- %fetched_parts = (
- shop_id => $self->config->id,
- shop_description => $self->config->description,
- number_of_parts => $number_of_parts,
- );
- } else {
- my %error_msg = (
- shop_id => $self->config->id,
- shop_description => $self->config->description,
- message => $answer->{message},
- error => 1,
- );
- %fetched_parts = %error_msg;
- }
- return \%fetched_parts;
-}
-