Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 9a33b2d8

Von Werner Hahn vor mehr als 6 Jahren hinzugefügt

  • ID 9a33b2d8146e4a8d40db205ee7dc2fbfa36ead31
  • Vorgänger 495c89d1
  • Nachfolger 76fe46d5

Shopmodul: Fehlermeldung beim Übernehmen; Kunde nicht gefunden, Shopbestellung nicht gefunden, Artikel nicht gefunden, DB fehler beim Einfügen

Unterschiede anzeigen:

SL/DB/ShopOrder.pm
8 8
use SL::DB::MetaSetup::ShopOrder;
9 9
use SL::DB::Manager::ShopOrder;
10 10
use SL::DB::Helper::LinkedRecords;
11
use SL::Locale::String qw(t8);
11 12

  
12 13
__PACKAGE__->meta->add_relationships(
13 14
  shop_order_items => {
......
41 42
  require SL::DB::OrderItem;
42 43
  require SL::DB::Part;
43 44
  require SL::DB::Shipto;
45
  my @error_report;
44 46

  
45 47
  my @items = map{
48

  
46 49
  # TODO Flash and exit if part not found
47
    my $part = SL::DB::Part->new( partnumber => $_->partnumber )->load;
48
    my $shop_part = SL::DB::Manager::ShopPart->get_all( where => [ shop_id => $self->shop_id, part_id => $part->id] )->[0];
49

  
50
    my @cvars = map { ($_->config->name => { value => $_->value_as_text, is_valid => $_->is_valid }) } @{ $part->cvars_by_config } ;
51
    my $current_order_item =
52
      SL::DB::OrderItem->new(parts_id               => $part->id,
53
                             description            => $part->description,
54
                             qty                    => $_->quantity,
55
                             sellprice              => $_->price,
56
                             unit                   => $part->unit,
57
                             position               => $_->position,
58
                             active_price_source    => $shop_part->active_price_source,
59
                           );
50
    my $part = SL::DB::Manager::Part->get_first( query => [ partnumber => $_->partnumber, ], );
51

  
52
    unless($part){
53
      push @error_report, t8('Part with Partnumber: ') . $_->partnumber . t8(' not found');
54
    }else{
55
      my $shop_part = SL::DB::Manager::ShopPart->get_all( where => [ shop_id => $self->shop_id, part_id => $part->id] )->[0];
56

  
57
      my @cvars = map { ($_->config->name => { value => $_->value_as_text, is_valid => $_->is_valid }) } @{ $part->cvars_by_config } ;
58
      my $current_order_item =
59
        SL::DB::OrderItem->new(parts_id               => $part->id,
60
                               description            => $part->description,
61
                               qty                    => $_->quantity,
62
                               sellprice              => $_->price,
63
                               unit                   => $part->unit,
64
                               position               => $_->position,
65
                               active_price_source    => $shop_part->active_price_source,
66
                             );
67
    }
60 68
  }@{ $self->shop_order_items };
61 69

  
62
  my $shipto_id;
63
  if ($self->{billing_firstname} ne $self->{delivery_firstname} || $self->{billing_lastname} ne $self->{delivery_lastname} || $self->{billing_city} ne $self->{delivery_city} || $self->{billing_street} ne $self->{delivery_street}) {
64
    if(my $address = SL::DB::Manager::Shipto->find_by( shiptoname          => $self->{delivery_firstname} . " " . $self->{delivery_lastname},
65
                                                        shiptostreet        => $self->{delivery_street},
66
                                                        shiptocity          => $self->{delivery_city},
67
                                                      )) {
68
      $shipto_id = $address->{shipto_id};
69
    } else {
70
      my $gender = $self->{delivery_greeting} eq "Frau" ? 'f' : 'm';
71
      my $deliveryaddress = SL::DB::Shipto->new;
72
      $deliveryaddress->assign_attributes(
73
        shiptoname          => $self->{delivery_firstname} . " " . $self->{delivery_lastname},
74
        shiptodepartment_1  => $self->{delivery_company},
75
        shiptodepartment_2  => $self->{delivery_department},
76
        shiptocp_gender     => $gender,
77
        shiptostreet        => $self->{delivery_street},
78
        shiptozipcode       => $self->{delivery_zipcode},
79
        shiptocity          => $self->{delivery_city},
80
        shiptocountry       => $self->{delivery_country},
81
        trans_id            => $customer->id,
82
        module              => "CT",
83
      );
84
      $deliveryaddress->save;
85
      $shipto_id = $deliveryaddress->{shipto_id};
70
  if(!scalar(@error_report)){
71

  
72
    my $shipto_id;
73
    if ($self->{billing_firstname} ne $self->{delivery_firstname} || $self->{billing_lastname} ne $self->{delivery_lastname} || $self->{billing_city} ne $self->{delivery_city} || $self->{billing_street} ne $self->{delivery_street}) {
74
      if(my $address = SL::DB::Manager::Shipto->find_by( shiptoname          => $self->{delivery_firstname} . " " . $self->{delivery_lastname},
75
                                                          shiptostreet        => $self->{delivery_street},
76
                                                          shiptocity          => $self->{delivery_city},
77
                                                        )) {
78
        $shipto_id = $address->{shipto_id};
79
      } else {
80
        my $gender = $self->{delivery_greeting} eq "Frau" ? 'f' : 'm';
81
        my $deliveryaddress = SL::DB::Shipto->new;
82
        $deliveryaddress->assign_attributes(
83
          shiptoname          => $self->{delivery_firstname} . " " . $self->{delivery_lastname},
84
          shiptodepartment_1  => $self->{delivery_company},
85
          shiptodepartment_2  => $self->{delivery_department},
86
          shiptocp_gender     => $gender,
87
          shiptostreet        => $self->{delivery_street},
88
          shiptozipcode       => $self->{delivery_zipcode},
89
          shiptocity          => $self->{delivery_city},
90
          shiptocountry       => $self->{delivery_country},
91
          trans_id            => $customer->id,
92
          module              => "CT",
93
        );
94
        $deliveryaddress->save;
95
        $shipto_id = $deliveryaddress->{shipto_id};
96
      }
86 97
    }
87
  }
88

  
89
  my $order = SL::DB::Order->new(
90
                  amount                  => $self->amount,
91
                  cusordnumber            => $self->shop_ordernumber,
92
                  customer_id             => $customer->id,
93
                  shipto_id               => $shipto_id,
94
                  orderitems              => [ @items ],
95
                  employee_id             => $employee->id,
96
                  intnotes                => ($customer->notes ne "" ? "\n[Kundestammdaten]\n" . $customer->notes : ""),
97
                  salesman_id             => $employee->id,
98
                  taxincluded             => $self->tax_included,
99
                  payment_id              => $customer->payment_id,
100
                  taxzone_id              => $customer->taxzone_id,
101
                  currency_id             => $customer->currency_id,
102
                  transaction_description => 'Shop Import',
103
                  transdate               => DateTime->today_local
98

  
99
    my $order = SL::DB::Order->new(
100
                    amount                  => $self->amount,
101
                    cusordnumber            => $self->shop_ordernumber,
102
                    customer_id             => $customer->id,
103
                    shipto_id               => $shipto_id,
104
                    orderitems              => [ @items ],
105
                    employee_id             => $employee->id,
106
                    intnotes                => ($customer->notes ne "" ? "\n[Kundestammdaten]\n" . $customer->notes : ""),
107
                    salesman_id             => $employee->id,
108
                    taxincluded             => $self->tax_included,
109
                    payment_id              => $customer->payment_id,
110
                    taxzone_id              => $customer->taxzone_id,
111
                    currency_id             => $customer->currency_id,
112
                    transaction_description => 'Shop Import',
113
                    transdate               => DateTime->today_local
114
                  );
115
     return $order;
116
   }else{
117
     my %error_order = (error   => 1,
118
                        errors  => [ @error_report ],
104 119
                );
105
   return $order;
120
     return \%error_order;
121
   }
106 122
};
107 123

  
108 124
sub compare_to {

Auch abrufbar als: Unified diff