X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=sql%2FPg-upgrade2%2Fwarehouse.pl;h=6eebb2f7bdba6a52251909a7cb30f99564ec444b;hb=b36fb0f412d2d2b43b8d98d787743cbe1fbf2540;hp=f9e59a4e5e19e0259bc2ab4dd2319adfcbecf4f4;hpb=4b4c9020f4ae9b4a79d11b8bc17e75405fcfef72;p=kivitendo-erp.git diff --git a/sql/Pg-upgrade2/warehouse.pl b/sql/Pg-upgrade2/warehouse.pl index f9e59a4e5..6eebb2f7b 100644 --- a/sql/Pg-upgrade2/warehouse.pl +++ b/sql/Pg-upgrade2/warehouse.pl @@ -1,89 +1,25 @@ # @tag: warehouse # @description: Diverse neue Tabellen und Spalten zur Mehrlagerfähigkeit inkl. Migration # @depends: release_2_4_3 +package SL::DBUpgrade2::warehouse; +use strict; +use utf8; -die("This script cannot be run from the command line.") unless ($main::form); +use parent qw(SL::DBUpgrade2::Base); -sub mydberror { - my ($msg) = @_; - die($dbup_locale->text("Database update error:") . - "
$msg
" . $DBI::errstr); -} - -sub do_query { - my ($query, $may_fail) = @_; - - if (!$dbh->do($query)) { - mydberror($query) unless ($may_fail); - $dbh->rollback(); - $dbh->begin_work(); - } -} - -$do_sql_migration = 0; +use SL::DBUtils; sub print_question { - print $main::form->parse_html_template("dbupgrade/warehouse_form"); + print $::form->parse_html_template("dbupgrade/warehouse_form"); } -sub do_update { - if (!$main::form->{do_migrate} - && (selectfirst_array_query($main::form, $dbh, $check_sql))[0]) { # check if update is needed - print_question(); - return 2; - } else { - if ($main::form->{do_migrate} eq 'Y') { - # if yes, both warehouse and bin must be given - if (!$main::form->{import_warehouse} || !$main::form->{bin_default}) { - print_question(); - return 2; - } - # flag for extra code - $do_sql_migration = 1; - } - } - my $warehouse = $main::form->{import_warehouse} ne '' ? $main::form->{import_warehouse} : "Transfer"; - my $bin = $main::form->{bin_default} ne '' ? $main::form->{bin_default} : "1"; - - $warehouse = $dbh->quote($warehouse); - $bin = $dbh->quote($bin); +sub run { + my ($self) = @_; - my $migration_code = < 0;|; + my $sqlcode = <{do_migrate} + && (selectfirst_array_query($::form, $self->dbh, $check_sql))[0]) { # check if update is needed + print_question(); + return 2; + } else { + if (defined $::form->{do_migrate} && $::form->{do_migrate} eq 'Y') { + # if yes, both warehouse and bin must be given + if (!$::form->{import_warehouse} || !$::form->{bin_default}) { + print_question(); + return 2; + } + # flag for extra code + $do_sql_migration = 1; + } + } + my $warehouse = defined $::form->{import_warehouse} && $::form->{import_warehouse} ne '' ? $::form->{import_warehouse} : "Transfer"; + my $bin = defined $::form->{bin_default} && $::form->{bin_default} ne '' ? $::form->{bin_default} : "1"; + + $warehouse = $self->dbh->quote($warehouse); + $bin = $self->dbh->quote($bin); + + my $migration_code = < 0; +-- Restore old onhand +INSERT INTO bin + (warehouse_id, description) + (SELECT DISTINCT warehouse.id, COALESCE(bin, $bin) + FROM warehouse, tmp_parts + WHERE warehouse.description=$warehouse); +INSERT INTO inventory + (warehouse_id, parts_id, bin_id, qty, employee_id, trans_id, trans_type_id, chargenumber) + (SELECT warehouse.id, tmp_parts.id, bin.id, onhand, (SELECT id FROM employee LIMIT 1), nextval('id'), transfer_type.id, '' + FROM transfer_type, warehouse, tmp_parts, bin + WHERE warehouse.description = $warehouse + AND COALESCE(bin, $bin) = bin.description + AND transfer_type.description = 'stock'); EOF ; -return do_update(); + # do standard code + my $query = $sqlcode; + $query .= $migration_code if $do_sql_migration; + + $self->db_query($query); + + return 1; +} + +1;