CREATE OR REPLACE PACKAGE mip_helper_special_cases IS

  -- Author  : HARDYA
  -- Created : 21/01/2008 11:40:25
  -- Purpose : helper package to support special cases not provided through mip_'tablename'_helper.

  PROCEDURE table_enquiries(p_rec              IN enquiries%ROWTYPE
                           ,p_mandatory_checks IN OUT mip_mandatory.t_mandatory_checks);

END mip_helper_special_cases;
/
CREATE OR REPLACE PACKAGE BODY mip_helper_special_cases IS

  PROCEDURE table_enquiries(p_rec              IN enquiries%ROWTYPE
                           ,p_mandatory_checks IN OUT mip_mandatory.t_mandatory_checks) IS
  BEGIN
    -- OM-1
    IF p_rec.install_building IS NULL
       AND p_rec.install_sub_building IS NULL THEN
      mip_mandatory.add_error(p_mandatory_checks => p_mandatory_checks
                             ,p_field_name       => 'INSTALL_BUILDING'
                             ,p_error_message    => 'At least one of Building or Sub-Building must be completed.');
      mip_mandatory.add_error(p_mandatory_checks => p_mandatory_checks
                             ,p_field_name       => 'INSTALL_SUB_BUILDING'
                             ,p_error_message    => 'At least one of Building or Sub-Building must be completed.');
    END IF;
  
    -- OM-2
    IF p_rec.enty_code IN ('STD INSTALL', 'STD EXCHANGE')
       AND (p_rec.required_mesc_code IS NULL AND p_rec.qmax IS NULL) THEN
      mip_mandatory.add_error(p_mandatory_checks => p_mandatory_checks
                             ,p_field_name       => 'QMAX'
                             ,p_error_message    => 'At least one of Qmax or Meter Size must be completed.');
      mip_mandatory.add_error(p_mandatory_checks => p_mandatory_checks
                             ,p_field_name       => 'REQUIRED_MESC_CODE'
                             ,p_error_message    => 'At least one of Qmax or Meter Size must be completed.');
    END IF;
  
    -- OM-3
    IF p_rec.enty_code IN
       ('INSTALL', 'OFMAT', 'REMOVE', 'ADVERSARIAL', 'ALTERATION',
        'CAPACITY CHANGE', 'ADDON', 'OTHER')
       AND p_rec.required_svcp_code = 'IP'
       AND
       (p_rec.required_ip_mbar IS NULL OR p_rec.required_ip_details IS NULL) THEN
      mip_mandatory.add_error(p_mandatory_checks => p_mandatory_checks
                             ,p_field_name       => 'REQUIRED_SVCP_CODE'
                             ,p_error_message    => 'Required IP Details must be completed when a Service Pressure of ''IP'' is requested.');
      mip_mandatory.add_error(p_mandatory_checks => p_mandatory_checks
                             ,p_field_name       => 'REQUIRED_IP_DETAILS'
                             ,p_error_message    => 'Required IP Details must be completed when a Service Pressure of ''IP'' is requested.');
    END IF;
  
    -- OM-4
    IF p_rec.enty_code IN
       ('INSTALL', 'STD INSTALL')
     AND
       (p_rec.mprn IS NULL AND p_rec.mprn_alt IS NULL) THEN
      mip_mandatory.add_error(p_mandatory_checks => p_mandatory_checks
                             ,p_field_name       => 'MPRN'
                             ,p_error_message    => 'Either MPRN or Additional Information must be completed.');
      mip_mandatory.add_error(p_mandatory_checks => p_mandatory_checks
                             ,p_field_name       => 'MPRN_ALT'
                             ,p_error_message    => 'Either MPRN or Additional Information must be completed.');
    END IF;
  
  -- OM-5
  -- Tripartite Agreement and AMR -- this is a specific example of the Tripartite and addons
  -- This is handled through the mip_tripartite.addon functionality
  
  END table_enquiries;

BEGIN
  -- Initialization
  NULL;
END mip_helper_special_cases;
/
