X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=sql%2FPg-upgrade2%2Fwarehouse.pl;h=6eebb2f7bdba6a52251909a7cb30f99564ec444b;hb=741287a80da6d42dde2b87a471ef7b6c77c8cd1f;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;