Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision b72ad532

Von Jan Büren vor etwa 1 Jahr hinzugefügt

  • ID b72ad53285f1ff8fce22d943c5458fa3bd6b040c
  • Vorgänger 9cb9ed90
  • Nachfolger 2795aebc

Shopware6: Status Bezahlt benötigt die order_transaction als Aggr.

Unterschiede anzeigen:

SL/ShopConnector/Shopware6.pm
705 705
  $transition = 'complete' if $transition eq 'completed';
706 706

  
707 707
  croak "No shop order ID, should be in format [0-9a-f]{32}" unless $order_id   =~ m/^[0-9a-f]{32}$/;
708
  croak "NO valid transition value"                          unless $transition =~ m/(open|process|cancel|complete|paid)/;
708
  croak "NO valid transition value"                          unless $transition =~ m/(open|process|cancel|complete)/;
709 709
  my $ret;
710 710
  $ret = $self->connector->POST("/api/_action/order/$order_id/state/$transition");
711 711
  my $response_code = $ret->responseCode();
712 712
  die "Request failed, response code was: $response_code\n" . $ret->responseContent() unless $response_code eq '200';
713 713

  
714
}
715
sub set_order_transaction_status {
716
  my ($self, $ordnumber, $transition) = @_;
717

  
718
  croak t8("No Order Number")         unless $ordnumber;
719
  croak "NO valid transition value"   unless $transition =~ m/(paid)/;
720

  
721
  # first fetch order_transaction id
722
  my %fetched_order  = $self->get_fetched_order_structure;
723
  my $assoc          = $self->all_open_orders();
724

  
725
  # overwrite filter for exactly one ordnumber
726
  $assoc->{filter}->[0]->{value} = $ordnumber;
727
  $assoc->{filter}->[0]->{type}  = 'equals';
728
  $assoc->{filter}->[0]->{field} = 'orderNumber';
729

  
730
  # 1. fetch the order and import it as a kivi order
731
  # 2. return the number of processed order (1)
732
  my $one_order = $self->connector->POST('api/search/order', to_json($assoc));
733
  # 1. check for bad request or connection problems
734
  if ($one_order->responseCode() != 200) {
735
    $fetched_order{error}   = 1;
736
    $fetched_order{message} = $one_order->responseCode() . ' ' . $one_order->responseContent();
737
    die "Invalid response code:" . $fetched_order{message};
738
  }
739

  
740
  # 1.1 parse json or exit
741
  my $content;
742
  try {
743
    $content = from_json($one_order->responseContent());
744
  } catch {
745
    $fetched_order{error}   = 1;
746
    $fetched_order{message} = "Malformed JSON Data: $_ " . $one_order->responseContent();
747
    die "Invalid JSON Data:" . $fetched_order{message};
748
  };
749

  
750
  # 2. check if we found ONE order at all
751
  my $total = $content->{total};
752
  if ($total == 0) {
753
    $fetched_order{number_of_orders} = 0;
754
    die \%fetched_order;
755
  } elsif ($total != 1) {
756
    $fetched_order{error}   = 1;
757
    $fetched_order{message} = "More than one Order returned. Invalid State: $total";
758
    die "Invalid State:" . $fetched_order{message};
759
  }
760
  # we assume just one transaction at all
761
  die "Can only sync one single Transaction " unless scalar @{ $content->{data}->[0]->{transactions} } == 1;
762

  
763
  my $order_transaction_id = $content->{data}->[0]->{transactions}->[0]->{id};
764
  my $ret;
765
  $ret = $self->connector->POST("/api/_action/order_transaction/$order_transaction_id/state/$transition");
766

  
767
  my $response_code = $ret->responseCode();
768
  die "Request failed, response code was: $response_code\n" . $ret->responseContent() unless $response_code eq '200';
769

  
714 770
}
715 771

  
716 772
sub init_connector {

Auch abrufbar als: Unified diff