use SL::DB::DeliveryOrder;
use SL::DB::Status;
use SL::DBUtils;
+use SL::HTML::Restrict;
use SL::RecordLinks;
use SL::IC;
use SL::TransNumber;
sm.name AS salesman
FROM delivery_orders dord
LEFT JOIN $vc ct ON (dord.${vc}_id = ct.id)
+ LEFT JOIN contacts cp ON (dord.cp_id = cp.cp_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)
push @values, '%' . $form->{$vc} . '%';
}
+ if ($form->{"cp_name"}) {
+ push @where, "(cp.cp_name ILIKE ? OR cp.cp_givenname ILIKE ?)";
+ push @values, ('%' . $form->{"cp_name"} . '%')x2;
+ }
+
foreach my $item (qw(employee_id salesman_id)) {
next unless ($form->{$item});
push @where, "dord.$item = ?";
# connect to database, turn off autocommit
my $dbh = $form->get_standard_dbh($myconfig);
+ my $restricter = SL::HTML::Restrict->create;
my ($query, @values, $sth, $null);
$query = qq|SELECT nextval('id')|;
($form->{id}) = selectrow_query($form, $dbh, $query);
- $query = qq|INSERT INTO delivery_orders (id, donumber, employee_id, currency_id) VALUES (?, '', ?, (SELECT currency_id FROM defaults LIMIT 1))|;
- do_query($form, $dbh, $query, $form->{id}, conv_i($form->{employee_id}));
+ $query = qq|INSERT INTO delivery_orders (id, donumber, employee_id, currency_id, taxzone_id) VALUES (?, '', ?, (SELECT currency_id FROM defaults LIMIT 1), ?)|;
+ do_query($form, $dbh, $query, $form->{id}, conv_i($form->{employee_id}), $form->{taxzone_id});
}
my $project_id;
# save detail record in delivery_order_items table
@values = (conv_i($item_id), conv_i($form->{id}), conv_i($form->{"id_$i"}),
- $form->{"description_$i"}, $form->{"longdescription_$i"},
+ $form->{"description_$i"}, $restricter->process($form->{"longdescription_$i"}),
$form->{"qty_$i"}, $baseqty,
$form->{"sellprice_$i"}, $form->{"discount_$i"} / 100,
$form->{"unit_$i"}, conv_date($items_reqdate), conv_i($form->{"project_id_$i"}),
conv_i($form->{id}));
do_query($form, $dbh, $query, @values);
- # add shipto
$form->{name} = $form->{ $form->{vc} };
$form->{name} =~ s/--$form->{"$form->{vc}_id"}//;
+ # add shipto
if (!$form->{shipto_id}) {
$form->add_shipto($dbh, $form->{id}, "DO");
}
$form->{saved_donumber} = $form->{donumber};
$form->{saved_ordnumber} = $form->{ordnumber};
$form->{saved_cusordnumber} = $form->{cusordnumber};
-
+
Common::webdav_folder($form);
$main::lxdebug->leave_sub();
doi.reqdate, doi.project_id, doi.serialnumber, doi.lastcost,
doi.ordnumber, doi.transdate, doi.cusordnumber, doi.longdescription,
doi.price_factor_id, doi.price_factor, doi.marge_price_factor, doi.pricegroup_id,
- pr.projectnumber, dord.transdate AS dord_transdate,
+ pr.projectnumber, dord.transdate AS dord_transdate, dord.donumber,
pg.partsgroup
FROM delivery_order_items doi
JOIN parts p ON (doi.parts_id = p.id)
my $position = 0;
my $subtotal_header = 0;
my $subposition = 0;
+ my $si_position = 0;
my (@project_ids);
my @arrays =
qw(runningnumber number description longdescription qty unit
partnotes serialnumber reqdate projectnumber projectdescription
+ weight lineweight
si_runningnumber si_number si_description
- si_warehouse si_bin si_chargenumber si_bestbefore si_qty si_unit weight lineweight);
+ si_warehouse si_bin si_chargenumber si_bestbefore
+ si_qty si_qty_nofmt si_unit);
map { $form->{TEMPLATE_ARRAYS}->{$_} = [] } (@arrays);
$position++;
}
+ $si_position++;
+
my $price_factor = $price_factors{$form->{"price_factor_id_$i"}} || { 'factor' => 1 };
my $project = $projects_by_id{$form->{"project_id_$i"}} || SL::DB::Project->new;
push @{ $form->{TEMPLATE_ARRAYS}->{lineweight} }, $form->format_amount($myconfig, $lineweight, 3);
push @{ $form->{TEMPLATE_ARRAYS}->{lineweight_nofmt} }, $lineweight;
+ my $stock_info = DO->unpack_stock_information('packed' => $form->{"stock_${in_out}_$i"});
+
+ foreach my $si (@{ $stock_info }) {
+ $num_si++;
+
+ do_statement($form, $h_bin_wh, $q_bin_wh, conv_i($si->{bin_id}), conv_i($si->{warehouse_id}));
+ my $bin_wh = $h_bin_wh->fetchrow_hashref();
+
+ push @{ $form->{TEMPLATE_ARRAYS}{si_runningnumber}[$si_position-1] }, $num_si;
+ push @{ $form->{TEMPLATE_ARRAYS}{si_number}[$si_position-1] }, $form->{"partnumber_$i"};
+ push @{ $form->{TEMPLATE_ARRAYS}{si_description}[$si_position-1] }, $form->{"description_$i"};
+ push @{ $form->{TEMPLATE_ARRAYS}{si_warehouse}[$si_position-1] }, $bin_wh->{warehouse};
+ push @{ $form->{TEMPLATE_ARRAYS}{si_bin}[$si_position-1] }, $bin_wh->{bin};
+ push @{ $form->{TEMPLATE_ARRAYS}{si_chargenumber}[$si_position-1] }, $si->{chargenumber};
+ push @{ $form->{TEMPLATE_ARRAYS}{si_bestbefore}[$si_position-1] }, $si->{bestbefore};
+ push @{ $form->{TEMPLATE_ARRAYS}{si_qty}[$si_position-1] }, $form->format_amount($myconfig, $si->{qty} * 1);
+ push @{ $form->{TEMPLATE_ARRAYS}{si_qty_nofmt}[$si_position-1] }, $si->{qty} * 1;
+ push @{ $form->{TEMPLATE_ARRAYS}{si_unit}[$si_position-1] }, $si->{unit};
+ }
+
if ($form->{"assembly_$i"}) {
$sameitem = "";
while (my $ref = $h_pg->fetchrow_hashref("NAME_lc")) {
if ($form->{groupitems} && $ref->{partsgroup} ne $sameitem) {
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" && $_ !~ /^si_/} @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, []) } grep({ $_ =~ /^si_/} @arrays));
$sameitem = ($ref->{partsgroup}) ? $ref->{partsgroup} : "--";
push(@{ $form->{TEMPLATE_ARRAYS}->{description} }, $sameitem);
+ $si_position++;
}
- push(@{ $form->{TEMPLATE_ARRAYS}->{"description"} }, $form->format_amount($myconfig, $ref->{qty} * $form->{"qty_$i"}) . qq| -- $ref->{partnumber}, $ref->{description}|);
- map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" } @arrays));
- }
- }
-
- if ($form->{"inventory_accno_$i"} && !$form->{"assembly_$i"}) {
- my $stock_info = DO->unpack_stock_information('packed' => $form->{"stock_${in_out}_$i"});
-
- foreach my $si (@{ $stock_info }) {
- $num_si++;
-
- do_statement($form, $h_bin_wh, $q_bin_wh, conv_i($si->{bin_id}), conv_i($si->{warehouse_id}));
- my $bin_wh = $h_bin_wh->fetchrow_hashref();
-
- push @{ $form->{TEMPLATE_ARRAYS}{si_runningnumber}[$position-1] }, $num_si;
- push @{ $form->{TEMPLATE_ARRAYS}{si_number}[$position-1] }, $form->{"partnumber_$i"};
- push @{ $form->{TEMPLATE_ARRAYS}{si_description}[$position-1] }, $form->{"description_$i"};
- push @{ $form->{TEMPLATE_ARRAYS}{si_warehouse}[$position-1] }, $bin_wh->{warehouse};
- push @{ $form->{TEMPLATE_ARRAYS}{si_bin}[$position-1] }, $bin_wh->{bin};
- push @{ $form->{TEMPLATE_ARRAYS}{si_chargenumber}[$position-1] }, $si->{chargenumber};
- push @{ $form->{TEMPLATE_ARRAYS}{si_bestbefore}[$position-1] }, $si->{bestbefore};
- push @{ $form->{TEMPLATE_ARRAYS}{si_qty}[$position-1] }, $form->format_amount($myconfig, $si->{qty} * 1);
- push @{ $form->{TEMPLATE_ARRAYS}{si_qty_nofmt}[$position-1] }, $si->{qty} * 1;
- push @{ $form->{TEMPLATE_ARRAYS}{si_unit}[$position-1] }, $si->{unit};
+ push(@{ $form->{TEMPLATE_ARRAYS}->{"description"} }, $form->format_amount($myconfig, $ref->{qty} * $form->{"qty_$i"}) . qq| -- $ref->{partnumber}, $ref->{description}|);
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, "") } grep({ $_ ne "description" && $_ !~ /^si_/} @arrays));
+ map({ push(@{ $form->{TEMPLATE_ARRAYS}->{$_} }, []) } grep({ $_ =~ /^si_/} @arrays));
+ $si_position++;
}
}