Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision fed28e9e

Von Werner Hahn vor mehr als 6 Jahren hinzugefügt

  • ID fed28e9ef87169617a60a3f4f9b22c93511b537c
  • Vorgänger a6be73a1
  • Nachfolger 6a9e4065

Shopmodul: sql-Updatesfiles für das Shopmodul.
Beinhaltet auch ein hinzufügen der Spalte Auftragssperre in der Tabelle customer sowie das webtemplate billing beim Kunden wo die Auftragssperre eingegeben werden kann

Unterschiede anzeigen:

SL/BackgroundJob/ShopOrderMassTransfer.pm
42 42
  foreach my $shop_order_id (@{ $job_obj->data_as_hash->{shop_order_record_ids} }) {
43 43
    my $data = $job_obj->data_as_hash;
44 44
    my $shop_order = SL::DB::ShopOrder->new(id => $shop_order_id)->load;
45
    # die "can't find shoporder with id $shop_order_id" unless $shop_order;
46
    #TODO Kundenabfrage so ändern, dass es nicht abricht
47 45
    unless($shop_order){
48 46
      push @{ $error_report{$shop_order_id} }, 'Shoporder not found';
49 47
    }
......
52 50
    my $employee = SL::DB::Manager::Employee->current;
53 51
    my $items = SL::DB::Manager::ShopOrderItem->get_all( where => [shop_order_id => $shop_order_id],
54 52
                                                          sort_by => 'partnumber::int' );
55
    # check inventory onhand > 0 and active = 1
56
    my $transferable = 0;
57
    foreach my $item (@$items) {
58
      my $part = SL::DB::Manager::Part->find_by(partnumber => $item->{partnumber});
59
      # TODO: qty direkt aus dem Lager holen und nicht von onhand
60
      $transferable = $part->{onhand} >= $item->{quantity} ? 1 : 0;
61
      $transferable = $part->{active} = 1 ? 1 : 0;
62

  
63
      last if $transferable == 0;
64
    }
65
    if ($transferable == 1 && $customer->{order_lock} == 0) {
53
    if ($customer->{order_lock} == 0) {
66 54
      $shop_order->{shop_order_items} = $items;
67 55

  
68 56
      my $order = $shop_order->convert_to_sales_order(customer => $customer, employee => $employee);
......
85 73
      push @{ $data->{shop_orders_ids} }, $shop_order->id;
86 74

  
87 75
      $job_obj->update_attributes(data_as_hash => $data);
88
      my $delivery_order = $order->convert_to_delivery_order(customer => $customer, employee => $employee);
89
      $delivery_order->save;
90
      my $snumbers = "deliveryordernumber_" . $delivery_order->donumber;
91
      SL::DB::History->new(
92
                        trans_id    => $delivery_order->id,
93
                        snumbers    => $snumbers,
94
                        employee_id => SL::DB::Manager::Employee->current->id,
95
                        addition    => 'SAVED',
96
                        what_done   => 'Shopimport->Order->Deliveryorder(MassTransfer)',
97
                      )->save();
98
      $order->link_to_record($delivery_order);
99
      my $delivery_order_items = $delivery_order->{orderitems};
100
      # Lagerentnahme
101
      # entsprechende defaults holen, falls standardlagerplatz verwendet werden soll
102
      my $test = $::instance_conf->get_transfer_default_use_master_default_bin;
103
      require SL::DB::Inventory;
104
      my $rose_db = SL::DB::Inventory->new->db;
105
      my $dbh = $db->dbh;
106
      my $default_warehouse_id;
107
      my $default_bin_id;
108
      my @parts_ids;
109
      my @transfers;
110
      my @errors;
111
      my $qty;
112
      my $stock_out;
113
      require SL::WH;
114
      require SL::IS;
115
      require SL::DB::DeliveryOrderItemsStock;
116
      foreach my $item (@{$delivery_order_items}) {
117
        my ($err, $wh_id, $bin_id) = IS->_determine_wh_and_bin($dbh, $::instance_conf,
118
                                                           $item->{parts_id},
119
                                                           $item->{qty},
120
                                                           $item->{unit}
121
                                                           );
122
        if (!@{ $err } && $wh_id && $bin_id) {
123
          my $delivery_order_items_stock = SL::DB::DeliveryOrderItemsStock->new;
124
          $delivery_order_items_stock->assign_attributes (
125
            'delivery_order_item_id'  => $item->{id},
126
            'qty'                     => $item->{qty},
127
            'unit'                    => $item->{unit},
128
            'warehouse_id'            => $wh_id,
129
            'bin_id'                  => $bin_id,
130
          );
131
          $delivery_order_items_stock->save;
132

  
133
          my ($trans_id) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT nextval('id')|);
134
          my $wh_transfer = SL::DB::Inventory->new;
135
          $wh_transfer->assign_attributes (
136
            'trans_id'                      => $trans_id,
137
            'employee'                      => $employee->{id},
138
            'bestbefore'                    => undef,
139
            'chargenumber'                  => '',
140
            'shippingdate'                  => DateTime->today,
141
            'delivery_order_items_stock_id' => $delivery_order_items_stock->id,
142
            'project_id'                    => '',
143
            'parts_id'                      => $item->{parts_id},
144
            'qty'                           => $item->{qty} * -1,
145
            'trans_type_id'              => 889,#hardcodiert
146
            'warehouse_id'                  => $wh_id,
147
            'bin_id'                        => $bin_id,
148
            'comment'                       => $main::locale->text("Default transfer delivery order"),
149
            'oe_id'                         => $delivery_order->{id},
150
          );
151
          $wh_transfer->save;
152
        }
153
        push @errors, @{ $err };
154
      }
155
      if (!@errors) {
156
          $delivery_order->delivered(1);
157
          $delivery_order->save;
158
      }
159 76
    }
160 77
  }
161 78
}

Auch abrufbar als: Unified diff