diff --git a/Modules/mip_parties.pck b/Modules/mip_parties.pck index 40d2de3..ed73e7f 100644 --- a/Modules/mip_parties.pck +++ b/Modules/mip_parties.pck @@ -102,6 +102,14 @@ CREATE OR REPLACE PACKAGE mip_parties AS PROCEDURE add_address(p_address addresses%ROWTYPE); -- + /** + Update an existing address in the system. + + %param p_address - the new address details. + */ + PROCEDURE update_address(p_address addresses%ROWTYPE); + -- + /** allows an address in the system to be associated with a party @@ -715,8 +723,8 @@ CREATE OR REPLACE PACKAGE BODY mip_parties AS p_address.postcode AS postcode FROM dual) l_addr ON (addr.code = l_addr.code AND - addr.sub_building = l_addr.sub_building AND - addr.building = l_addr.building AND + (addr.sub_building = l_addr.sub_building OR (addr.sub_building IS NULL AND l_addr.sub_building IS NULL)) AND + (addr.building = l_addr.building OR (addr.building IS NULL AND l_addr.building IS NULL) ) AND addr.street = l_addr.street AND addr.city = l_addr.city AND addr.postcode = p_address.postcode) @@ -739,6 +747,25 @@ CREATE OR REPLACE PACKAGE BODY mip_parties AS RAISE; END add_address; -- + + /** + Update an existing address in the system. + + %param p_address - the new address details. + */ + PROCEDURE update_address(p_address addresses%ROWTYPE) AS + BEGIN + UPDATE addresses addr + SET addr.sub_building = p_address.sub_building, + addr.building = p_address.building, + addr.street = p_address.street, + addr.city = p_address.city, + addr.postcode = p_address.postcode + WHERE addr.code = p_address.code; + + END update_address; + -- + /** associate an address with a party @@ -949,7 +976,12 @@ CREATE OR REPLACE PACKAGE BODY mip_parties AS AND paddr.addr_code IN (SELECT paddr_roles.paddr_addr_code FROM party_address_roles paddr_roles WHERE paddr_roles.rt_code = p_paddr_type); - + + UPDATE party_address_roles paddro + SET paddro.end_date = SYSDATE + WHERE paddro.paddr_prty_id = p_prty_id + AND paddro.rt_code = p_paddr_type; + END expire_old_addresses; --