X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=sql%2FPg-upgrade2%2Fwarehouse.pl;h=6eebb2f7bdba6a52251909a7cb30f99564ec444b;hb=a9d9ca02abd3a0ff1e43f23888142266174bec55;hp=725758f19a130fc72fde12b1a5bde30476bd9e86;hpb=76c486e3bf157e844b0cf11828d55dae2cb7e439;p=kivitendo-erp.git diff --git a/sql/Pg-upgrade2/warehouse.pl b/sql/Pg-upgrade2/warehouse.pl index 725758f19..6eebb2f7b 100644 --- a/sql/Pg-upgrade2/warehouse.pl +++ b/sql/Pg-upgrade2/warehouse.pl @@ -1,94 +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); - -# import vars from caller -our ($dbup_locale, $dbup_myconfig, $dbh, $iconv); -my $do_sql_migration = 0; -my ($check_sql, $sqlcode); - -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(); - } -} +use parent qw(SL::DBUpgrade2::Base); +use SL::DBUtils; sub print_question { - print $main::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); - - my $migration_code = <parse_html_template("dbupgrade/warehouse_form"); } +sub run { + my ($self) = @_; - -$sqlcode = < 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; +UPDATE tmp_parts SET bin = NULL WHERE bin = ''; + +-- 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;