+sub get_shipped_qty {
+ $main::lxdebug->enter_sub();
+
+ my $self = shift;
+ my %params = @_;
+
+ Common::check_params(\%params, qw(type oe_id));
+
+ my $myconfig = \%main::myconfig;
+ my $form = $main::form;
+
+ my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+ my @links = RecordLinks->get_links('dbh' => $dbh,
+ 'from_table' => 'oe',
+ 'from_id' => $params{oe_id},
+ 'to_table' => 'delivery_orders');
+ my @values = map { $_->{to_id} } @links;
+
+ if (!scalar @values) {
+ $main::lxdebug->leave_sub();
+ return ();
+ }
+
+ my $query =
+ qq|SELECT doi.parts_id, doi.qty, doi.unit, p.unit AS partunit
+ FROM delivery_order_items doi
+ LEFT JOIN delivery_orders o ON (doi.delivery_order_id = o.id)
+ LEFT JOIN parts p ON (doi.parts_id = p.id)
+ WHERE o.id IN (| . join(', ', ('?') x scalar @values) . qq|)|;
+
+ my %ship = ();
+ my $entries = selectall_hashref_query($form, $dbh, $query, @values);
+ my $all_units = AM->retrieve_all_units();
+
+ foreach my $entry (@{ $entries }) {
+ $entry->{qty} *= AM->convert_unit($entry->{unit}, $entry->{partunit}, $all_units);
+
+ if (!$ship{$entry->{parts_id}}) {
+ $ship{$entry->{parts_id}} = $entry;
+ } else {
+ $ship{$entry->{parts_id}}->{qty} += $entry->{qty};
+ }
+ }
+
+ $main::lxdebug->leave_sub();
+
+ return %ship;
+}
+
+sub is_marked_as_delivered {
+ $main::lxdebug->enter_sub();
+
+ my $self = shift;
+ my %params = @_;
+
+ Common::check_params(\%params, qw(id));
+
+ my $myconfig = \%main::myconfig;
+ my $form = $main::form;
+
+ my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+ my ($delivered) = selectfirst_array_query($form, $dbh, qq|SELECT delivered FROM delivery_orders WHERE id = ?|, conv_i($params{id}));
+
+ $main::lxdebug->leave_sub();
+
+ return $delivered ? 1 : 0;
+}
+