my ($self, $myconfig, $form) = @_;
# connect to db
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = $form->get_standard_dbh;
my $sth;
}
# get translations
- $form->{language_values} = "";
$query = qq|SELECT language_id, translation, longdescription
FROM translation
WHERE parts_id = ?|;
- my $trq = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
- while (my $tr = $trq->fetchrow_hashref("NAME_lc")) {
- $form->{language_values} .= "---+++---" . join('--++--', @{$tr}{qw(language_id translation longdescription)});
- }
- $trq->finish;
+ $form->{translations} = selectall_hashref_query($form, $dbh, $query, conv_i($form->{id}));
# is it an orphan
my @referencing_tables = qw(invoice orderitems inventory);
$form->{"unit_changeable"} = $form->{orphaned};
- $dbh->disconnect;
+ Common::webdav_folder($form) if $::lx_office_conf{features}{webdav};
$main::lxdebug->leave_sub();
}
my ($self, $myconfig, $form) = @_;
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = $form->get_standard_dbh;
# get pricegroups
my $query = qq|SELECT id, pricegroup FROM pricegroup ORDER BY lower(pricegroup)|;
#correct rows
$form->{price_rows} = $i - 1;
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
return $pricegroups;
my ($query, $sth);
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = $form->get_standard_dbh;
# get buchungsgruppen
$query = qq|SELECT id, description FROM buchungsgruppen ORDER BY sortkey|;
$subq_expense = "NULL";
}
+ normalize_text_blocks();
+
$query =
qq|UPDATE parts SET
partnumber = ?,
notes = ?,
formel = ?,
rop = ?,
- bin = ?,
+ warehouse_id = ?,
+ bin_id = ?,
buchungsgruppen_id = ?,
payment_id = ?,
inventory_accno_id = $subq_inventory,
$form->{notes},
$form->{formel},
$form->{rop},
- $form->{bin},
+ conv_i($form->{warehouse_id}),
+ conv_i($form->{bin_id}),
conv_i($form->{buchungsgruppen_id}),
conv_i($form->{payment_id}),
conv_i($form->{buchungsgruppen_id}),
# delete translation records
do_query($form, $dbh, qq|DELETE FROM translation WHERE parts_id = ?|, conv_i($form->{id}));
- if ($form->{language_values} ne "") {
- foreach my $item (split(/---\+\+\+---/, $form->{language_values})) {
- my ($language_id, $translation, $longdescription) = split(/--\+\+--/, $item);
- if ($translation ne "") {
- $query = qq|INSERT into translation (parts_id, language_id, translation, longdescription)
- VALUES ( ?, ?, ?, ? )|;
- @values = (conv_i($form->{id}), conv_i($language_id), $translation, $longdescription);
- do_query($form, $dbh, $query, @values);
- }
+ my @translations = grep { $_->{language_id} && $_->{translation} } @{ $form->{translations} || [] };
+ if (@translations) {
+ $query = qq|INSERT into translation (parts_id, language_id, translation, longdescription)
+ VALUES ( ?, ?, ?, ? )|;
+ $sth = $dbh->prepare($query);
+
+ foreach my $translation (@translations) {
+ do_statement($form, $sth, $query, conv_i($form->{id}), conv_i($translation->{language_id}), $translation->{translation}, $translation->{longdescription});
}
+
+ $sth->finish();
}
# delete price records
# add assembly records
if ($form->{item} eq 'assembly') {
+ # check additional assembly row
+ my $i = $form->{assembly_rows};
+ # if last row is not empty add them
+ if ($form->{"partnumber_$i"} ne "") {
+ $query = qq|SELECT id FROM parts WHERE partnumber = ?|;
+ my ($partid) = selectrow_query($form, $dbh, $query,$form->{"partnumber_$i"} );
+ if ( $partid ) {
+ $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"});
+ $form->{"id_$i"} = $partid;
+ $form->{"bom_$i"} = 0;
+ $form->{assembly_rows}++;
+ }
+ else {
+ $::form->error($::locale->text("uncorrect partnumber ").$form->{"partnumber_$i"});
+ }
+ }
for my $i (1 .. $form->{assembly_rows}) {
$form->{"qty_$i"} = $form->parse_amount($myconfig, $form->{"qty_$i"});
do_query($form, $dbh, $query, @values);
}
}
-
my @a = localtime;
$a[5] += 1900;
$a[4]++;
my ($self, $myconfig, $form) = @_;
# connect to database
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = $form->get_standard_dbh;
my $where = qq|NOT p.obsolete|;
my @values;
# retrieve assembly items
my $query =
qq|SELECT p.id, p.partnumber, p.description,
- p.bin, p.onhand, p.rop,
+ p.onhand, p.rop,
(SELECT sum(p2.inventory_accno_id)
FROM parts p2, assembly a
WHERE (p2.id = a.parts_id) AND (a.id = p.id)) AS inventory
$form->{assembly_items} = selectall_hashref_query($form, $dbh, $query, @values);
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
my ($self, $myconfig, $form) = @_;
my @values = (conv_i($form->{id}));
# connect to database, turn off AutoCommit
- my $dbh = $form->dbconnect_noauto($myconfig);
+ my $dbh = $form->get_standard_dbh;
my %columns = ( "assembly" => "id", "parts" => "id" );
# commit
my $rc = $dbh->commit;
- $dbh->disconnect;
$main::lxdebug->leave_sub();
}
# connect to database
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = $form->get_standard_dbh;
my $query =
qq|SELECT p.id, p.partnumber, p.description, p.sellprice,
WHERE $where|;
$form->{item_list} = selectall_hashref_query($form, $dbh, $query, @values);
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
}
# partnumber ean description partsgroup microfiche drawing
#
# column flags:
-# l_partnumber l_description l_listprice l_sellprice l_lastcost l_priceupdate l_weight l_unit l_bin l_rop l_image l_drawing l_microfiche l_partsgroup
+# l_partnumber l_description l_listprice l_sellprice l_lastcost l_priceupdate l_weight l_unit l_rop l_image l_drawing l_microfiche l_partsgroup
#
# exclusives:
# itemstatus = active | onhand | short | obsolete | orphaned
my @apoe_filters = qw(transdate);
my @like_filters = (@simple_filters, @invoice_oi_filters);
my @all_columns = (@simple_filters, @makemodel_filters, @apoe_filters, @project_filters, qw(serialnumber));
- my @simple_l_switches = (@all_columns, qw(notes listprice sellprice lastcost priceupdate weight unit bin rop image));
+ my @simple_l_switches = (@all_columns, qw(notes listprice sellprice lastcost priceupdate weight unit rop image));
my @oe_flags = qw(bought sold onorder ordered rfq quoted);
my @qsooqr_flags = qw(invnumber ordnumber quonumber trans_id name module qty);
my @deliverydate_flags = qw(deliverydate);
my $token_builder = $make_token_builder->(\%joins_needed);
- my @sort_cols = (@simple_filters, qw(id bin priceupdate onhand invnumber ordnumber quonumber name serialnumber soldtotal deliverydate));
+ my @sort_cols = (@simple_filters, qw(id priceupdate onhand invnumber ordnumber quonumber name serialnumber soldtotal deliverydate));
$form->{sort} = 'id' unless grep { $form->{"l_$_"} } grep { $form->{sort} eq $_ } @sort_cols; # sort by id if unknown or invisible column
my $sort_order = ($form->{revers} ? ' DESC' : ' ASC');
my $order_clause = " ORDER BY " . $token_builder->($form->{sort}) . ($form->{revers} ? ' DESC' : ' ASC');
if ($form->{searchitems} eq 'assembly' && $form->{bom}) {
$query =
qq|SELECT p.id, p.partnumber, p.description, a.qty AS onhand,
- p.unit, p.bin, p.notes,
+ p.unit, p.notes,
p.sellprice, p.listprice, p.lastcost,
p.rop, p.weight, p.priceupdate,
p.image, p.drawing, p.microfiche,
my $num_updated = 0;
# connect to database
- my $dbh = $form->dbconnect_noauto($myconfig);
+ my $dbh = $form->get_standard_dbh;
for my $column (qw(sellprice listprice)) {
next if ($form->{$column} eq "");
$sth_multiply->finish();
my $rc= $dbh->commit;
- $dbh->disconnect;
$main::lxdebug->leave_sub();
my ($self, $module, $myconfig, $form) = @_;
# connect to database
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = $form->get_standard_dbh;
my @values = ('%' . $module . '%');
my $query;
($form->{priceupdate}) = selectrow_query($form, $dbh, qq|SELECT current_date|);
}
- $dbh->disconnect;
$main::lxdebug->leave_sub();
}
$main::lxdebug->enter_sub();
my ($self, $myconfig, $form, $sortorder) = @_;
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = $form->get_standard_dbh;
my $order = qq| p.partnumber|;
my $where = qq|1 = 1|;
my @values;
} #while
$form->{rows} = $j;
$sth->finish;
- $dbh->disconnect;
$main::lxdebug->leave_sub();
my ($self, $myconfig, $form) = @_;
# connect to database
- my $dbh = $form->dbconnect($myconfig);
+ my $dbh = $form->get_standard_dbh;
my @values;
my $where;
my $languages = selectall_hashref_query($form, $dbh, $query, @values);
- $dbh->disconnect;
-
$main::lxdebug->leave_sub();
return $languages;
$transdate = $form->{deliverydate};
}
} elsif ($form->{script} eq 'ir.pl') {
- # when a purchase invoice is opened from the report of purchase invoices
+ # when a purchase invoice is opened from the report of purchase invoices
# $form->{type} isn't set, but $form->{script} is, not sure why this is or
# whether this distinction matters in some other scenario. Otherwise one
# could probably take out this elsif and add a
$main::lxdebug->leave_sub();
}
+sub normalize_text_blocks {
+ $main::lxdebug->enter_sub();
+
+ my $self = shift;
+ my %params = @_;
+
+ my $form = $params{form} || $main::form;
+
+ # check if feature is enabled (select normalize_part_descriptions from defaults)
+ return unless ($::instance_conf->get_normalize_part_descriptions);
+
+ foreach (qw(description notes)) {
+ $form->{$_} =~ s/\s+$//s;
+ $form->{$_} =~ s/^\s+//s;
+ $form->{$_} =~ s/ {2,}/ /g;
+ }
+ $main::lxdebug->leave_sub();
+}
+
1;