Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 9854c20c

Von wernerh vor fast 2 Jahren hinzugefügt

  • ID 9854c20cf1ae30dc5b5dfb18a583e35e6d2306a2
  • Vorgänger 6a052cbb
  • Nachfolger 43819438

Einkaufshelfer/Dispositionsmanager bescheleunigt

Unterschiede anzeigen:

SL/Controller/DispositionManager.pm
use SL::PriceSource;
use SL::Locale::String qw(t8);
use SL::Helper::Flash qw(flash);
use SL::DBUtils;
use Data::Dumper;
sub action_list_parts {
my ( $self ) = @_;
my $parts = $self->_get_parts;
my $parts_tmp;
for my $part(@{ $parts }) {
my $openitems = SL::DB::Manager::OrderItem->get_all(where => [ parts_id => $part->id, 'order.closed' => 0 ],
with_objects => ['order'],);
my ($not_delivered, $ordered) = 0;
for my $openitem (@{ $openitems }) {
if($openitem->order->type eq 'sales_order') {
$not_delivered += $openitem->qty - $openitem->shipped_qty;
} elsif ( $openitem->order->type eq 'purchase_order' ) {
$ordered += $openitem->qty - $openitem->delivered_qty;
}
}
$part->assign_attributes( gv => $ordered );
push @{ $parts_tmp }, $part;
}
$self->_setup_list_action_bar;
$self->render('disposition_manager/list_parts', title => t8('Parts short onhand'), PARTS => $parts_tmp);
$self->render('disposition_manager/list_parts', title => t8('Parts short onhand'), PARTS => $parts);
}
sub action_add_to_purchase_basket{
SL/DB/Manager/Part.pm
my $class = shift;
my $part_id = shift;
return () unless $part_id;
my $openitems = SL::DB::Manager::OrderItem->get_all(where => [ parts_id => $part_id, 'order.closed' => 0 ],
with_objects => ['order'],);
return () unless $openitems;
my %ordered;
my %delivered;
my $open = 0;
my $ordered_qty = 0;
my $delivered_qty = 0;
for my $openitem (@{ $openitems }) {
if($openitem->order->type eq 'purchase_order') {
$ordered_qty += $openitem->qty;
$delivered_qty += $openitem->delivered_qty;
}
}
if( $ordered_qty - $delivered_qty > 0 ) {
$open = $ordered_qty - $delivered_qty;
%ordered = ($part_id => $open);
} else {
$open = $ordered_qty - $delivered_qty;
%ordered = ($part_id => $open);
}
return %ordered;
my $query = <<SQL;
SELECT
sum(oi.qty) as sum
FROM
orderitems oi
LEFT OUTER JOIN oe o ON (oi.trans_id = o.id)
WHERE
( o.closed = 'F' OR
o.closed IS NULL) AND
oi.parts_id = ? AND
o.vendor_id IS NOT NULL
GROUP BY oi.parts_id
SQL
my ($ordered_qty) = selectrow_query($::form, $class->object_class->init_db->dbh, $query, $part_id);
return $ordered_qty;
}
sub _sort_spec {
SL/DB/Part.pm
__PACKAGE__->meta->initialize;
use Rose::Object::MakeMethods::Generic (
'scalar --get_set_init' => [ qw(onhandqty stockqty get_open_ordered_qty) ],
);
__PACKAGE__->attr_html('notes');
__PACKAGE__->attr_sorted({ unsorted => 'makemodels', position => 'sortorder' });
__PACKAGE__->attr_sorted({ unsorted => 'customerprices', position => 'sortorder' });
......
__PACKAGE__->before_save('_before_save_set_partnumber');
__PACKAGE__->before_save('_before_save_set_assembly_weight');
sub onhandqty_as_number {
my ($self, $string) = @_;
$self->onhandqty($::form->parse_amount(\%::myconfig, $string)) if @_ > 1;
return $::form->format_amount(\%::myconfig, $self->onhandqty, 2);
}
sub init_onhandqty{
my ($self) = @_;
my $qty = SL::Helper::Inventory::get_onhand(part => $self->id);
return $qty;
}
sub stockqty_as_number {
my ($self, $string) = @_;
$self->stockqty($::form->parse_amount(\%::myconfig, $string)) if @_ > 1;
return $::form->format_amount(\%::myconfig, $self->stockqty, 2);
}
sub init_stockqty{
my ($self) = @_;
my $qty = SL::Helper::Inventory::get_stock(part => $self->id);
return $qty;
}
sub get_open_ordered_qty_as_number {
my ($self, $string) = @_;
$self->get_open_ordered_qty($::form->parse_amount(\%::myconfig, $string)) if @_ > 1;
return $::form->format_amount(\%::myconfig, $self->get_open_ordered_qty, 2);
}
sub init_get_open_ordered_qty {
my $self = shift;
my $result = SL::DB::Manager::Part->get_open_ordered_qty($self->id);
return $result;
}
#sub reservedqty_as_number {
# my ($self, $string) = @_;
# $self->reservedqty($::form->parse_amount(\%::myconfig, $string)) if @_ > 1;
# return $::form->format_amount(\%::myconfig, $self->reservedqty, $self->places);
#}
#sub init_onhandqty{
# my ($self) = @_;
# my $qty = get_onhand(part => $self->id);
# return $qty;
#}
>>>>>>> cf3ff322d1 (Einkaufshelfer/Dispositionsmanager bescheleunigt)
sub _before_save_set_partnumber {
my ($self) = @_;
......
return $result{ $self->id };
}
sub get_open_ordered_qty {
my $self = shift;
my %result = SL::DB::Manager::Part->get_open_ordered_qty($self->id);
sub is_parts_first_order {
return $result{ $self->id };
my ($self, %params) = @_;
require SL::DB::OrderItem;
my $orders_count = SL::DB::Manager::OrderItem->get_all_count( where => [ %params ], with_objects => 'order' );
return $orders_count == 1 ? 1 : 0;
}
sub available_units {
templates/webpages/disposition_manager/list_parts.html
</tr>
</thead>
[% FOREACH part = PARTS %]
[% IF !part.gv %]
[% IF !part.get_open_ordered_qty %]
<tr class="listrow">
<td>[% IF part.makemodels.size %][% L.checkbox_tag('ids[+]', "data-checkall"=1, checked = '1', value=part.id) %][% ELSE %][% 'No Vendor' | $T8 %][% END %]</td>
<td>[% HTML.escape(part.partnumber) %]</td>
......
</tr>
</thead>
[% FOREACH part = PARTS %]
[% IF part.gv %]
[% IF part.get_open_ordered_qty %]
<tr class="listrow">
<td>[% HTML.escape(part.partnumber) %]</td>
<td>[% HTML.escape(part.description) %] </td>
<td class="numeric">[% part.onhand_as_number %] </td>
<td class="numeric">[% part.rop_as_number %] </td>
<td class="numeric">[% part.gv %] </td>
<td class="numeric">[% part.get_open_ordered_qty_as_number %] </td>
</tr>
[% END %]
[% END %]

Auch abrufbar als: Unified diff