From: Bernd Bleßmann Date: Wed, 17 Jun 2020 09:40:03 +0000 (+0200) Subject: Wechselkurs pro Angebot/Auftrag: DB-Upgrade-Skript + Rose X-Git-Tag: release-3.5.6.1~95 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=9fda7972d8dd37f1a760a7b430b638c202aac2b7;p=kivitendo-erp.git Wechselkurs pro Angebot/Auftrag: DB-Upgrade-Skript + Rose exchangerate direkt in Tabelle oe ablegen. Die Implementierung, um bei Angeboten/Aufträgen den Wechselkurs pro Beleg zu speichern folgt in weiteren commits und wird erstmal nur für den neuen Auftrags-Controller umgesetzt. Bezieht sich auch auf #135 Refs #135 --- diff --git a/SL/DB/MetaSetup/Order.pm b/SL/DB/MetaSetup/Order.pm index b359c07b2..d6922bd53 100644 --- a/SL/DB/MetaSetup/Order.pm +++ b/SL/DB/MetaSetup/Order.pm @@ -21,6 +21,7 @@ __PACKAGE__->meta->columns( delivery_vendor_id => { type => 'integer' }, department_id => { type => 'integer' }, employee_id => { type => 'integer' }, + exchangerate => { type => 'numeric', precision => 15, scale => 5 }, expected_billing_date => { type => 'date' }, globalproject_id => { type => 'integer' }, id => { type => 'integer', not_null => 1, sequence => 'id' }, diff --git a/sql/Pg-upgrade2/exchangerate_in_oe.sql b/sql/Pg-upgrade2/exchangerate_in_oe.sql new file mode 100644 index 000000000..ca3defd0d --- /dev/null +++ b/sql/Pg-upgrade2/exchangerate_in_oe.sql @@ -0,0 +1,12 @@ +-- @tag: exchangerate_in_oe +-- @description: Wechselkurs pro Angebot/Auftrag in Belegtabelle speichern +-- @depends: release_3_5_5 + +ALTER TABLE oe ADD COLUMN exchangerate NUMERIC(15,5); + +WITH table_ex AS + (SELECT oe.id, COALESCE(CASE WHEN customer_id IS NOT NULL THEN buy ELSE sell END, 1.0) AS exchangerate FROM oe + LEFT JOIN exchangerate ON (oe.transdate = exchangerate.transdate AND oe.currency_id = exchangerate.currency_id) + WHERE oe.currency_id != (SELECT currency_id FROM defaults)) + UPDATE oe SET exchangerate = (SELECT exchangerate FROM table_ex WHERE table_ex.id = oe.id) + WHERE EXISTS (SELECT table_ex.exchangerate FROM table_ex WHERE table_ex.id = oe.id);