<?xml version="1.0" encoding="UTF-8"?>
<!--
    $Author: peter soong 
    $Date: 2014-08-27 16:57:02
    $Revision: 1.0  
    $Purpose: 
-->
<bm:model xmlns:s="leaf.plugin.script" xmlns:bm="http://www.leaf-framework.org/schema/bm" xmlns:f="leaf.database.features" alias="t1" baseTable="HLS_BP_MASTER_ALL_DATA_V" defaultOrderBy="t1.bp_code desc">
    <bm:fields>
        <bm:field name="bp_id" databaseType="NUMBER" datatype="java.lang.Long" physicalName="BP_ID"/>
        <bm:field name="bp_code" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="BP_CODE" prompt="HLS.BP_CODE"/>
        <bm:field name="bp_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="BP_NAME" prompt="HLS.BP_NAME"/>
        <bm:field name="extra_nam" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="EXTRA_NAM" prompt="HLS_BP_MASTER.EXTRA_NAM"/>
        <bm:field name="bp_class" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="BP_CLASS"/>
        <bm:field name="bp_class_desc" forInsert="false" forUpdate="false" prompt="HLS_BP_MASTER.BP_CLASS"/>
        <bm:field name="bp_category" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="BP_CATEGORY"/>
        <bm:field name="bp_category_desc" forInsert="false" forUpdate="false" prompt="HLS_BP_TYPE.BP_CATEGORY"/>
        <bm:field name="bp_type" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="BP_TYPE"/>
        <bm:field name="bp_type_desc" forInsert="false" forUpdate="false" prompt="HLS_BP_TYPE.BP_TYPE"/>
        <bm:field name="bp_title" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="BP_TITLE" prompt="HLS_BP_MASTER.BP_TITLE"/>
        <bm:field name="search_term_1" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="SEARCH_TERM_1" prompt="HLS_BP_MASTER.SEARCH_TERM_1"/>
        <bm:field name="search_term_2" databaseType="NUMBER" datatype="java.lang.Long" physicalName="SEARCH_TERM_2" prompt="HLS_BP_MASTER.SEARCH_TERM_2"/>
        <bm:field name="external_bp_code" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="EXTERNAL_BP_CODE" prompt="HLS_BP_MASTER.EXTERNAL_BP_CODE"/>
        <bm:field name="address_id" databaseType="NUMBER" datatype="java.lang.Long" physicalName="ADDRESS_ID"/>
        <bm:field name="enabled_flag" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ENABLED_FLAG" prompt="HLS.ENABLED_FLAG"/>
        <bm:field name="enabled_flag_desc" expression="(select v.code_value_name from sys_code_values_v v where v.code=&apos;ENABLED_STATUS&apos; and v.code_value=t1.enabled_flag)" prompt="HLS.ENABLED_FLAG"/>
        <bm:field name="first_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="FIRST_NAME" prompt="HLS_BP_MASTER.FIRST_NAME"/>
        <bm:field name="middle_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="MIDDLE_NAME" prompt="HLS_BP_MASTER.MIDDLE_NAME"/>
        <bm:field name="last_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="LAST_NAME" prompt="HLS_BP_MASTER.LAST_NAME"/>
        <bm:field name="gender" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="GENDER"/>
        <bm:field name="gender_desc" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="GENDER_DESC" prompt="HLS_BP_MASTER.GENDER"/>
        <bm:field name="nationality" databaseType="NUMBER" datatype="java.lang.Long" physicalName="NATIONALITY" prompt="HLS_BP_MASTER.GENDER.NATIONALITY"/>
        <bm:field name="date_of_birth" databaseType="DATE" datatype="java.util.Date" physicalName="DATE_OF_BIRTH" prompt="HLS_BP_MASTER.GENDER.DATE_OF_BIRTH"/>
        <bm:field name="place_of_birth" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="PLACE_OF_BIRTH" prompt="HLS_BP_MASTER.GENDER.PLACE_OF_BIRTH"/>
        <bm:field name="name_at_birth" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="NAME_AT_BIRTH" prompt="HLS_BP_MASTER.GENDER.NAME_AT_BIRTH"/>
        <bm:field name="marital_status" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="MARITAL_STATUS"/>
        <bm:field name="marital_status_desc" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="MARITAL_STATUS_DESC" prompt="HLS_BP_MASTER.MARITAL_STATUS"/>
        <bm:field name="number_of_children" databaseType="NUMBER" datatype="java.lang.Long" physicalName="NUMBER_OF_CHILDREN" prompt="HLS_BP_MASTER.NUMBER_OF_CHILDREN"/>
        <bm:field name="academic_background" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ACADEMIC_BACKGROUND"/>
        <bm:field name="academic_background_desc" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ACADEMIC_BACKGROUND_DESC" prompt="HLS_BP_MASTER.ACADEMIC_BACKGROUND"/>
        <bm:field name="age" databaseType="NUMBER" datatype="java.lang.Long" physicalName="AGE" prompt="HLS_BP_MASTER.AGE"/>
        <bm:field name="id_type" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ID_TYPE"/>
        <bm:field name="id_type_desc" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ID_TYPE_DESC" prompt="HLS_BP_MASTER.ID_TYPE"/>
        <bm:field name="id_card_no" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ID_CARD_NO" prompt="HLS_BP_MASTER.ID_CARD_NO"/>
        <bm:field name="annual_income" databaseType="NUMBER" datatype="java.lang.Long" physicalName="ANNUAL_INCOME" prompt="HLS_BP_MASTER.ANNUAL_INCOME"/>
        <bm:field name="currency" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="CURRENCY"/>
        <bm:field name="currency_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="CURRENCY_NAME" prompt="HLS.CURRENCY"/>
        <bm:field name="capital_of_family" databaseType="NUMBER" datatype="java.lang.Long" physicalName="CAPITAL_OF_FAMILY" prompt="HLS_BP_MASTER.CAPITAL_OF_FAMILY"/>
        <bm:field name="liability_of_family" databaseType="NUMBER" datatype="java.lang.Long" physicalName="LIABILITY_OF_FAMILY" prompt="HLS_BP_MASTER.LIABILITY_OF_FAMILY"/>
        <bm:field name="legal_form" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="LEGAL_FORM"/>
        <bm:field name="legal_form_desc" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="LEGAL_FORM_DESC" prompt="HLS_BP_MASTER.LEGAL_FORM"/>
        <bm:field name="industry" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="INDUSTRY" prompt="HLS_BP_MASTER.INDUSTRY"/>
        <bm:field name="industry_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="INDUSTRY_NAME" prompt="HLS_BP_MASTER.INDUSTRY_NAME"/>
        <bm:field name="business_license_num" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="BUSINESS_LICENSE_NUM" prompt="HLS_BP_MASTER.BUSINESS_LICENSE_NUM"/>
        <bm:field name="corporate_code" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="CORPORATE_CODE" prompt="HLS_BP_MASTER.CORPORATE_CODE"/>
        <bm:field name="organization_code" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ORGANIZATION_CODE" prompt="HLS_BP_MASTER.ORGANIZATION_CODE"/>
        <bm:field name="tax_registry_num" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="TAX_REGISTRY_NUM" prompt="HLS_BP_MASTER.TAX_REGISTRY_NUM"/>
        <bm:field name="registered_place" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="REGISTERED_PLACE" prompt="HLS_BP_MASTER.REGISTERED_PLACE"/>
        <bm:field name="founded_date" databaseType="DATE" datatype="java.util.Date" physicalName="FOUNDED_DATE" prompt="HLS_BP_MASTER.FOUNDED_DATE"/>
        <bm:field name="registered_capital" databaseType="NUMBER" datatype="java.lang.Long" physicalName="REGISTERED_CAPITAL" prompt="HLS_BP_MASTER.REGISTERED_CAPITAL"/>
        <bm:field name="balance_sheet_currency" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="BALANCE_SHEET_CURRENCY" prompt="HLS_BP_MASTER.BALANCE_SHEET_CURRENCY"/>
        <bm:field name="company_nature" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="COMPANY_NATURE" prompt="HLS_BP_MASTER.COMPANY_NATURE"/>
        <bm:field name="company_nature_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="COMPANY_NATURE_NAME" prompt="HLS_BP_MASTER.COMPANY_NATURE_NAME"/>
        <bm:field name="paid_up_capital" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="PAID_UP_CAPITAL" prompt="HLS_BP_MASTER.PAID_UP_CAPITAL"/>
        <bm:field name="main_products" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="MAIN_PRODUCTS" prompt="HLS_BP_MASTER.MAIN_PRODUCTS"/>
        <bm:field name="primary_business" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="PRIMARY_BUSINESS" prompt="HLS_BP_MASTER.PRIMARY_BUSINESS"/>
        <bm:field name="country_id" databaseType="NUMBER" datatype="java.lang.Long" physicalName="COUNTRY_ID" prompt="HLS_BP_MASTER_ADDRESS.COUNTRY"/>
        <bm:field name="country_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="COUNTRY_NAME" prompt="HLS_BP_MASTER_ADDRESS.COUNTRY_NAME"/>
        <bm:field name="province_id" databaseType="NUMBER" datatype="java.lang.Long" physicalName="PROVINCE_ID" prompt="HLS_BP_MASTER_ADDRESS.PROVINCE"/>
        <bm:field name="province_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="province_name" prompt="HLS_BP_MASTER_ADDRESS.PROVINCE_NAME"/>
        <bm:field name="city_id" databaseType="NUMBER" datatype="java.lang.Long" physicalName="CITY_ID" prompt="HLS_BP_MASTER_ADDRESS.CITY"/>
        <bm:field name="city_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="CITY_NAME" prompt="HLS_BP_MASTER_ADDRESS.CITY_NAME"/>
        <bm:field name="district_id" databaseType="NUMBER" datatype="java.lang.Long" physicalName="DISTRICT_ID" prompt="HLS_BP_MASTER_ADDRESS.DISTRICT"/>
        <bm:field name="district_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="DISTRICT_NAME" prompt="HLS_BP_MASTER_ADDRESS.DISTRICT_NAME"/>
        <bm:field name="street" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="STREET" prompt="HLS_BP_MASTER_ADDRESS.STREET"/>
        <bm:field name="address" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ADDRESS" prompt="HLS_BP_MASTER_ADDRESS.ADDRESS"/>
        <bm:field name="bp_name_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="BP_NAME_SP"/>
        <bm:field name="gender_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="GENDER_SP"/>
        <bm:field name="gender_name_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="GENDER_NAME_SP"/>
        <bm:field name="date_of_birth_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="DATE_OF_BIRTH_SP"/>
        <bm:field name="academic_background_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ACADEMIC_BACKGROUND_SP"/>
        <bm:field name="academic_background_name_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ACADEMIC_BACKGROUND_NAME_SP"/>
        <bm:field name="id_type_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ID_TYPE_SP"/>
        <bm:field name="id_type_name_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ID_TYPE_NAME_SP"/>
        <bm:field name="id_card_no_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ID_CARD_NO_SP"/>
        <bm:field name="country_sp" databaseType="NUMBER" datatype="java.lang.Long" physicalName="COUNTRY_SP"/>
        <bm:field name="country_name_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="COUNTRY_NAME_SP"/>
        <bm:field name="province_sp" databaseType="NUMBER" datatype="java.lang.Long" physicalName="PROVINCE_SP"/>
        <bm:field name="province_name_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="PROVINCE_NAME_SP"/>
        <bm:field name="city_sp" databaseType="NUMBER" datatype="java.lang.Long" physicalName="CITY_SP"/>
        <bm:field name="city_name_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="CITY_NAME_SP"/>
        <bm:field name="district_sp" databaseType="NUMBER" datatype="java.lang.Long" physicalName="DISTRICT_SP"/>
        <bm:field name="district_name_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="DISTRICT_NAME_SP"/>
        <bm:field name="address_sp" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ADDRESS_SP"/>
        <bm:field name="loan_card_num" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="LOAN_CARD_NUM"/>
        <bm:field name="taxpayer_type" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="TAXPAYER_TYPE"/>
        <bm:field name="taxpayer_type_desc" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="TAXPAYER_TYPE_DESC"/>
        <bm:field name="ref_v01" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="REF_V01"/>
        <bm:field name="id_card_desc" expression="(decode(t1.id_type,&apos;ID_CARD&apos;,t1.id_card_no,&apos;&apos;))" forInsert="false" forUpdate="false"/>
        <!-- <bm:field name="entry" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="ENTRY"/> -->
        <!-- <bm:field name="approval_status" expression="(select rsc_value_assess_pkg.get_assess_approval_status(t1.bp_id)from dual)" /> -->
    </bm:fields>
    <bm:query-fields>
        <bm:query-field field="bp_class" queryOperator="="/>
        <bm:query-field field="bp_type" queryOperator="="/>
        <bm:query-field name="bp_code_from" queryExpression="bp_code &gt;= ${@bp_code_from} "/>
        <bm:query-field name="bp_code_to" queryExpression="bp_code &lt;= ${@bp_code_to} "/>
        <bm:query-field field="enabled_flag" queryExpression="(t1.enabled_flag=${@enabled_flag} or ${@enabled_flag}=&apos;ALL&apos;)"/>
        <bm:query-field name="search_term_1_from" queryExpression="search_term_1 &gt;= ${@search_term_1_from} "/>
        <bm:query-field name="search_term_1_to" queryExpression="search_term_1 &lt;= ${@search_term_1_to} "/>
        <bm:query-field name="search_term_2_from" queryExpression="search_term_2 &gt;= ${@search_term_2_from} "/>
        <bm:query-field name="search_term_2_to" queryExpression="search_term_2 &lt;= ${@search_term_2_to} "/>
        <bm:query-field field="bp_id" queryOperator="="/>
        <bm:query-field field="bp_category" queryOperator="="/>
        <bm:query-field field="extra_nam" queryOperator="like"/>
        <bm:query-field field="bp_name" queryOperator="like"/>
        <bm:query-field name="bp_project_id" queryExpression="(t1.bp_id in (select ppb.bp_id from prj_project pp ,prj_project_bp ppb where pp.project_id=ppb.project_id and pp.project_id=${@bp_project_id}) or t1.bp_id in (select h.bp_id from prj_project_act_ctrler_hd h, prj_project pp where pp.project_id = h.project_id and pp.project_id = ${@bp_project_id}))"/>
        <bm:query-field name="bp_project_name" queryExpression="(t1.bp_id in (select ppb.bp_id from prj_project pp ,prj_project_bp ppb where pp.project_id=ppb.project_id and pp.project_name like ${@bp_project_name})  or t1.bp_id in (select h.bp_id from prj_project_act_ctrler_hd h, prj_project pp where pp.project_id = h.project_id and pp.project_name like ${@bp_project_name}))"/>
        <bm:query-field name="bp_contract_id" queryExpression="t1.bp_id in (select ccb.bp_id from con_contract cc ,con_contract_bp ccb where cc.contract_id=ccb.contract_id and cc.contract_id =${@bp_contract_id})"/>
        <bm:query-field name="bp_contract_name" queryExpression="t1.bp_id in (select ccb.bp_id from con_contract cc ,con_contract_bp ccb where cc.contract_id=ccb.contract_id and cc.contract_name like ${@bp_contract_name})"/>
        <!-- <bm:query-field field="entry" queryOperator="="/> -->
    </bm:query-fields>
    <bm:data-filters>
        <bm:data-filter enforceOperations="query" expression="exists (select 1           from con_contract t          where t.bp_id_tenant = t1.bp_id            and t.contract_status =&apos;INCEPT&apos;)"/>
        <bm:data-filter enforceOperations="query" expression="t1.bp_category in(&apos;TENANT&apos;,&apos;TENANT_SEC&apos;)"/>
        <bm:data-filter enforceOperations="query" expression="(&apos;N&apos; = rsc_value_assess_pkg.con_contract_id_exist_check(t1.bp_id) )"/>
        <bm:data-filter name="query" expression="t1.BP_ID not in (select r.bp_id_tenant from  rsc_value_assess_hd r where  r.approval_status = &apos;APPROVING&apos;)"/>
        <bm:data-filter name="query" expression="NOT EXISTS (SELECT 1 FROM rsc_value_assess_hd h  WHERE h.approval_status IN (&apos;NEW&apos;, &apos;APPROVING&apos;)  AND h.bp_id_tenant = t1.bp_id)"/>
    </bm:data-filters>
    <bm:features>
        <f:standard-who/>
        <s:bm-script><![CDATA[
            var cx = Packages.leaf.javascript.Context.getCurrentContext();
            Packages.leaf.plugin.script.engine.ScriptImportor.defineExternScript(cx, this, $ctx.getData(), "aut_authority_bm_validate.js");
        ]]></s:bm-script>
    </bm:features>
</bm:model>
