Please enable JavaScript to view this site.

Made in EU
Estate Forums

The business layer consists of a series of ‘business views’ on the storage layer. Every view is based on a main table. Such a company view has as a name the name of the main table plus ‘_v’. The views are constructed in such way that all the tables' columns which are directly or indirectly linked to the main table through referential relations are included. Loading the data into the storage layer always happens via the business views. Triggers on the business views will check the data on consistency using the existing data. An example is an order which can only be linked to a cost category belonging to a master roll up of the type ‘costs’. On top of that these triggers assure that the audit tables are filled correctly, as well as fields as ‘id’, ‘date_created’ and the like.

An example of a business view is:

 

select odt.id                         odt_id

,      odt.datum_verlening            odt_datum_verlening

,      odt.toelichting                odt_toelichting

,      odt.bedrag_verlening           odt_bedrag_verlening

,      odt.volgnummer                 odt_volgnummer

,      kps.id                         kps_id

,      kps.bedrag_budget              kps_bedrag_budget

,      kps.overschot_compenseren_vlag kps_overschot_compenseren_vlag

,      kps.bedrag_deelbudget_som      kps_bedrag_deelbudget_som

,      kbg.id                         kbg_id

,      kbg.omschrijving               kbg_omschrijving

,      kbg.code                       kbg_code

,      kvg.id                         kvg_id

,      kvg.code                       kvg_code

,      kvg.omschrijving               kvg_omschrijving

,      khg.id                         khg_id

,      khg.code                       khg_code

,      khg.omschrijving               khg_omschrijving

,      khg.kosten_opbrengst_ind       khg_kosten_opbrengst_ind

,      pjt.id                         pjt_id

,      pjt.code                       pjt_code

,      pjt.naam                       pjt_naam

,      pjt.gemeente                   pjt_gemeente

,      pjt.datum_expose               pjt_datum_expose

,      pjt.overschot_comp_ind         pjt_overschot_comp_ind

,      pjt.projectvorm_ind            pjt_projectvorm_ind

,      pgp.id                         pgp_id

,      pgp.code                       pgp_code

,      pgp.omschrijving               pgp_omschrijving

,      gbr_por.id                     gbr_por_id

,      gbr_por.naam                   gbr_por_naam

,      gbr_por.aanmeld_code           gbr_por_aanmeld_code

,      gbr_por.initialen              gbr_por_initialen

,      gbr_amr.id                     gbr_amr_id

,      gbr_amr.naam                   gbr_amr_naam

,      gbr_amr.aanmeld_code           gbr_amr_aanmeld_code

,      gbr_amr.initialen              gbr_amr_initialen

,      lvr.id                         lvr_id

,      lvr.naam                       lvr_naam

,      lvr.nummer                     lvr_nummer

,      mat.id                         mat_id

,      pae.id                         pae_id

,      gbr_drr.id                     gbr_drr_id

,      gbr_drr.naam                   gbr_drr_naam

,      gbr_drr.aanmeld_code           gbr_drr_aanmeld_code

,      gbr_drr.initialen              gbr_drr_initialen

,      vsd.id                         vsd_id

,      vsd.vnr_bedrag_geconsumeerd    vsd_vnr_bedrag_geconsumeerd

,      vsd.frl_volgnummer             vsd_frl_volgnummer

,      cig.consolideren_vlag          cig_consolideren_vlag

,      cig.id                         cig_id

,      cig.datum_rapportage           cig_datum_rapportage

,      dsk.ref_tabel                  dsk_ref_tabel

,      dsk.ref_sleutel                dsk_ref_sleutel

,      dsk.aantal_documenten          dsk_aantal_documenten

,      dsk.som_bestand_omvang_c       dsk_som_bestand_omvang_c

,      dsk.eerste_document            dsk_eerste_document

,      dsk.eerste_document_url        dsk_eerste_document_url

,      dsk.eerste_document_param1     dsk_eerste_document_param1

,      dsk.meerdere_aanwezig          dsk_meerdere_aanwezig

,      dsk.laatste_document           dsk_laatste_document

,      dsk.laatste_document_url       dsk_laatste_document_url

,      dsk.laatste_document_param1    dsk_laatste_document_param1

,      hpt.id                         hpt_id

,      hpt.code                       hpt_code

,      hpt.naam                       hpt_naam

,      hpt.gemeente                   hpt_gemeente

,      hpt.datum_expose               hpt_datum_expose

,      hpt.overschot_comp_ind         hpt_overschot_comp_ind

,      hpt.projectvorm_ind            hpt_projectvorm_ind

, case

when vnr_bedrag_open_opdrachten <> 0

then 'Y'

else ‘N’

end odt_open_vlag

, coalesce(dsk.label, bubs#vertalingen.translate_keys('{res:bubs_none_click_here_to_add}')) dsk_label_nn

, coalesce(hpt.code, pjt.code) pjt_code_con

,      odt.orig_system_reference      odt_orig_system_reference

,      odt.datum_intrf_geladen        odt_datum_intrf_geladen

,      odt.datum_intrf_bijgewerkt     odt_datum_intrf_bijgewerkt

,      odt.datum_aangemaakt           odt_datum_aangemaakt

,      odt.aangemaakt_door            odt_aangemaakt_door

,      odt.aangemaakt_in              odt_aangemaakt_in

,      odt.datum_bijgewerkt           odt_datum_bijgewerkt

,      odt.bijgewerkt_door            odt_bijgewerkt_door

,      odt.bijgewerkt_in              odt_bijgewerkt_in

,      odt.transactie_aangemaakt      odt_transactie_aangemaakt

,      odt.transactie_bijgewerkt      odt_transactie_bijgewerkt

,      odt.kolom_soort                odt_kolom_soort

,      odt.kolom1                     odt_kolom1

,      odt.kolom2                     odt_kolom2

,      odt.kolom3                     odt_kolom3

,      odt.kolom4                     odt_kolom4

,      odt.kolom5                     odt_kolom5

,      odt.kolom6                     odt_kolom6

,      odt.kolom7                     odt_kolom7

,      odt.kolom8                     odt_kolom8

,      odt.kolom9                     odt_kolom9

,      odt.kolom10                    odt_kolom10

,      odt.orig_system_group          odt_orig_system_group

from   bubs_opdrachten                odt

join   bubs_kostenplaatsen            kps

on     kps.id = odt.kps_id

join   bubs_kps_beschrijvingen        kbg

on     kbg.id = kps.kbg_id

join   bubs_kps_verdichtingen         kvg

on     kvg.id = kbg.kvg_id

join   bubs_kps_hfdverdichtingen      khg

on     khg.id = kvg.khg_id

join   bubs_projecten                 pjt

on     pjt.id = kps.pjt_id

join   bubs_product_groepen           pgp

on     pgp.id = pjt.pgp_id

join   bubs_gebruikers                gbr_por

on     gbr_por.id = pjt.gbr_id_projectontwikkelaar

join   bubs_gebruikers                gbr_amr

on     gbr_amr.id = pjt.gbr_id_administrateur

join   bubs_leveranciers              lvr

on     lvr.id = odt.lvr_id

join   bubs_mijn_rechten_r            mat

on     mat.id = mat.id

left

outer

join   bubs_project_autorisaties      pae

on     pae.pjt_id = pjt.id

and    pae.gbr_id = mat.gbr_user_id

join   bubs_gebruikers                gbr_drr

on     gbr_drr.id = pjt.gbr_id_directeur

left

outer

join   bubs_volgnummer_standen        vsd

on     vsd.kps_id = kps.id

and    vsd.frl_volgnummer = odt.volgnummer

join   bubs_cig_1_r                   cig

on     cig.id                 = cig.id

and    pjt.gemeente           = coalesce(cig.gemeente, pjt.gemeente)

and    pjt.pss_id             = coalesce(cig.pss_id, pjt.pss_id)

and    pjt.juridische_eenheid = coalesce(cig.juridische_eenheid, pjt.juridische_eenheid)

and    pjt.rapportage_groep   = coalesce(cig.rapportage_groep , pjt.rapportage_groep)

and    pjt.afgesloten_vlag    = coalesce(cig.pjt_afgesloten_vlag, pjt.afgesloten_vlag)

and    gbr_por.id             = coalesce(cig.gbr_id_po , gbr_por.id)

and    gbr_drr.id             = coalesce(cig.gbr_id_drr , gbr_drr.id)

and    pjt.id                 = coalesce(cig.pjt_id , pjt.id)

and    pgp.id                 = coalesce(cig.pgp_id , pgp.id)

left

outer

join   bubs_dct_statistieken_r        dsk

on     dsk.ref_sleutel = odt.id

and    dsk.ref_tabel='ODT'

left

outer

join   bubs_projecten                 hpt

on     hpt.id = pjt.hpt_id

where  1=1

and    ( pae.id is not null or mat.rol_alle_pjt_zien_vlag='Y' )

 

In order to load or change data you first need to log on to the business layer. This comes on top of the possible logging on to the database. To login you use:

begin

 bubs_session.set_session_info

 ( 'xxsap#in_ftr'                       /* Module. Invullen indien bekend. */

 , 'interface'                          /* Actie. Invullen indien bekend. */

 , 'system'                             /* Aanmeldcode van de gebruiker. */

 , 'various'                            /* Momentele query. Invullen indien bekend. */

 , sys_Filter('userenv', 'ip_address') /* IP adres. Invullen indien bekend. */

 , sys_Filter('userenv', 'host')       /* Hostnaam. Invullen indien bekend. */

 , 'n/a'                                /* URL gekoppeld aan verwerking. Invullen indien bekend. */

 , to_char(sysdate,'yyyymmddhh24miss')  /* Sessie ID. Invullen  indien bekend. */

 );

end;

/

Next, with full use of transactions you can load and change data of which you have the rights to do so (for example, when you log on as another user you will see different projects).

Next to the business views there are also report views. Report views are data deducted from the already present data in order to simplify filling out the reports. Report views are easily recognized by their name which always ends with ‘_r’. Moreover, if necessary, own reports can be based on this. The link with the built in reports is then guaranteed. The level 1 reports uses, for example, the report view bubs_fpt_n1_r:

 

select /*+ all_rows */ pjt_id

,      pjt_code

,      coalesce(to_char(bedrag_budget_resultaat       / red_deler , red_weergave_masker), ' ') bedrag_budget_resultaat

,      coalesce(to_char(bedrag_verwachting_resultaat  / red_deler , red_weergave_masker), ' ') bedrag_verwachting_resultaat

,      coalesce(to_char(saldo_resultaat               / red_deler , red_weergave_masker), ' ') saldo_resultaat

,      case

      when saldo_resultaat < 0 then 'N'

      else 'Y'

      end

      saldo_resultaat_ok_vlag

,      coalesce(to_char(bedrag_budget_investering     / red_deler , red_weergave_masker), ' ') bedrag_budget_investering

,      coalesce(to_char(bedrag_verwachting_investering/ red_deler , red_weergave_masker), ' ') bedrag_verwachting_investering

,      coalesce(to_char(saldo_investering             / red_deler , red_weergave_masker), ' ') saldo_investering

,      /* Het teken is omgedraaid. Een hogere kostenpost dan gebudgetteerd is fout nieuws, een lagere kostenpost is beter. */

      case

      when saldo_investering > 0 then 'N'

      else 'Y'

      end

      saldo_investering_ok_vlag

,      coalesce(to_char(bedrag_budget_desinv          / red_deler , red_weergave_masker), ' ') bedrag_budget_desinv

,      coalesce(to_char(bedrag_verwachting_desinv     / red_deler , red_weergave_masker), ' ') bedrag_verwachting_desinv

,      coalesce(to_char(saldo_desinv                  / red_deler , red_weergave_masker), ' ') saldo_desinv

,      case

      when saldo_desinv < 0 then 'N'

      else 'Y'

      end

      saldo_desinv_ok_vlag

,      coalesce(to_char(bedrag_budget_inv_og          / red_deler , red_weergave_masker), ' ') bedrag_budget_inv_og

,      coalesce(to_char(bedrag_verwachting_inv_og     / red_deler , red_weergave_masker), ' ') bedrag_verwachting_inv_og

,      coalesce(to_char(saldo_inv_og                  / red_deler , red_weergave_masker), ' ') saldo_inv_og

,      case

      when saldo_inv_og < 0 then 'N'

      else 'Y'

      end

      saldo_inv_og_ok_vlag

,      coalesce(to_char(bedrag_budget_fee             / red_deler , red_weergave_masker), ' ') bedrag_budget_fee

,      coalesce(to_char(bedrag_verwachting_fee        / red_deler , red_weergave_masker), ' ') bedrag_verwachting_fee

,      coalesce(to_char(saldo_fee                     / red_deler , red_weergave_masker), ' ') saldo_fee

,      case

      when saldo_fee < 0 then 'N'

      else 'Y'

      end

      saldo_fee_ok_vlag

,      coalesce(to_char(bedrag_budget_rente           / red_deler , red_weergave_masker), ' ') bedrag_budget_rente

,      coalesce(to_char(bedrag_verwachting_rente      / red_deler , red_weergave_masker), ' ') bedrag_verwachting_rente

,      coalesce(to_char(saldo_rente                   / red_deler , red_weergave_masker), ' ') saldo_rente

,      coalesce(to_char(bedrag_genomen_resultaat      / red_deler , red_weergave_masker), ' ') bedrag_genomen_resultaat

,      coalesce(to_char(bedrag_te_nemen_resultaat     / red_deler , red_weergave_masker), ' ') bedrag_te_nemen_resultaat

,      case

      when saldo_rente < 0 then 'N'

      else 'Y'

      end

      saldo_rente_ok_vlag

,      coalesce(to_char(marge_resultaat_pct           , '99990D00'), ' ')             marge_resultaat_pct

,      coalesce(to_char(marge_verwachting_pct         , '99990D00'), ' ')             marge_verwachting_pct

,      coalesce(toelichting, ' ')                                                     toelichting

,      coalesce(hpt_code, ' ')                                                        hpt_code

,      coalesce(hpt_naam, ' ')                                                        hpt_naam

,      coalesce(pjt_projectvorm_ind, ' ')                                             pjt_projectvorm_ind

from   bubs_project_status_pjt_r

X

Important Safety and Usage Information

Intended Use and Limitations: This software, developed by Invantive, is designed to support a variety of business and information technology data processing functions, such as accounting, financial reporting an sales reporting. It is important to note that this software is not designed, tested, or approved for use in environments where malfunction or failure could lead to life-threatening situations or severe physical or environmental damage. This includes, but is not limited to:

  • Nuclear facilities: The software should not be used for operations or functions related to the control, maintenance, or operation of nuclear facilities.
  • Defense and Military Applications: This software is not suitable for use in defense-related applications, including but not limited to weaponry control, military strategy planning, or any other aspects of national defense.
  • Aviation: The software is not intended for use in the operation, navigation, or communication systems of any aircraft or air traffic control environments.
  • Healthcare and Medicine Production: This software should not be utilized for medical device operation, patient data analysis for critical health decisions, pharmaceutical production, or medical research where its failure or malfunction could impact patient health.
  • Chemical and Hazardous Material Handling: This software is not intended for the management, control, or operational aspects of chemical plants or hazardous material handling facilities. Any malfunction in software used in these settings could result in dangerous chemical spills, explosions, or environmental disasters.
  • Transportation and Traffic Control Systems: The software should not be used for the control, operation, or management of transportation systems, including railway signal controls, subway systems, or traffic light management. Malfunctions in such critical systems could lead to severe accidents and endanger public safety.
  • Energy Grid and Utility Control Systems: This software is not designed for the control or operation of energy grid systems, including electrical substations, renewable energy control systems, or water utility control systems. The failure of software in these areas could lead to significant power outages, water supply disruptions, or other public utility failures, potentially endangering communities and causing extensive damage.
  • Other High-Risk Environments: Any other critical infrastructure and environments where a failure of the software could result in significant harm to individuals or the environment.

User Responsibility: Users must ensure that they understand the intended use of the software and refrain from deploying it in any setting that falls outside of its designed purpose. It is the responsibility of the user to assess the suitability of the software for their intended application, especially in any scenarios that might pose a risk to life, health, or the environment.

Disclaimer of Liability: Invantive disclaims any responsibility for damage, injury, or legal consequences resulting from the use or misuse of this software in prohibited or unintended applications.

  
Disclaimer