dord.transaction_description,
pr.projectnumber AS globalprojectnumber,
e.name AS employee,
- sm.name AS salesman,
- oe.id AS oe_id
+ sm.name AS salesman
FROM delivery_orders dord
LEFT JOIN $vc ct ON (dord.${vc}_id = ct.id)
LEFT JOIN employee e ON (dord.employee_id = e.id)
LEFT JOIN employee sm ON (dord.salesman_id = sm.id)
- LEFT JOIN project pr ON (dord.globalproject_id = pr.id)
- LEFT JOIN oe ON ((dord.ordnumber = oe.ordnumber) AND NOT COALESCE(oe.quotation, FALSE))|;
+ LEFT JOIN project pr ON (dord.globalproject_id = pr.id)|;
push @where, ($form->{type} eq 'sales_delivery_order' ? '' : 'NOT ') . qq|COALESCE(dord.is_sales, FALSE)|;
$form->{DO} = selectall_hashref_query($form, $dbh, $query, @values);
- $main::lxdebug->dump(0, "DO", $form->{DO});
+ if (scalar @{ $form->{DO} }) {
+ $query =
+ qq|SELECT id
+ FROM oe
+ WHERE NOT COALESCE(quotation, FALSE)
+ AND (ordnumber = ?)
+ AND (COALESCE(${vc}_id, 0) != 0)|;
+
+ my $sth = prepare_query($form, $dbh, $query);
+
+ foreach my $dord (@{ $form->{DO} }) {
+ next unless ($dord->{ordnumber});
+ do_statement($form, $sth, $query, $dord->{ordnumber});
+ ($dord->{oe_id}) = $sth->fetchrow_array();
+ }
+
+ $sth->finish();
+ }
$main::lxdebug->leave_sub();
}
my $dbh = $form->get_standard_dbh($myconfig);
- my $units = AM->retrieve_units($myconfig, $form, "dimension");
+ my $units = AM->retrieve_units($myconfig, $form);
my ($partunit) = selectrow_query($form, $dbh, qq|SELECT unit FROM parts WHERE id = ?|, conv_i($params{parts_id}));
my $unit_factor = $units->{$partunit}->{factor} || 1;
$main::lxdebug->leave_sub();
}
+sub get_shipped_qty {
+ $main::lxdebug->enter_sub();
+
+ my $self = shift;
+ my %params = @_;
+
+ Common::check_params(\%params, qw(type ordnumber));
+
+ my $myconfig = \%main::myconfig;
+ my $form = $main::form;
+
+ my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+ my $notsales = $params{type} eq 'sales' ? '' : 'NOT';
+
+ 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 ($notsales o.is_sales)
+ AND (o.ordnumber = ?)|;
+
+ my %ship = ();
+ my $entries = selectall_hashref_query($form, $dbh, $query, $params{ordnumber});
+ my $all_units = AM->retrieve_all_units();
+
+ foreach my $entry (@{ $entries }) {
+ $entry->{qty} *= $all_units->{$entry->{unit}}->{factor} / $all_units->{$entry->{partunit}}->{factor};
+
+ if (!$ship{$entry->{parts_id}}) {
+ $ship{$entry->{parts_id}} = $entry;
+ } else {
+ $ship{$entry->{parts_id}}->{qty} += $entry->{qty};
+ }
+ }
+
+ $main::lxdebug->leave_sub();
+
+ return %ship;
+}
+
1;