============= Baza de Date ============= Modelul de date al functiei **Evaluare Capacitati (WLP)** este construit **pornind de la task** (nu pornind de la resursa), pentru a evita generarea unor volume uriase de date pre-calculate: se evalueaza "de la caz la caz", per Proiect/Comanda de lucru, si se pastreaza o granularitate zilnica doar acolo unde este necesara — la nivelul calendarului de disponibilitate al fiecarei persoane implicate. Toate tabelele sunt in schema ``TOTAL`` si folosesc conventia EMSYS de cheie compusa ``(ID_FIRMA, ID)``. WLP — procedura master de evaluare ==================================== Cate o inregistrare per sesiune de evaluare, pentru un Proiect sau o Comanda de lucru. .. list-table:: :header-rows: 1 :widths: 25 15 60 * - Coloana - Tip - Descriere * - ``ID_FIRMA``, ``ID`` - NUMBER - Cheie primara. * - ``SURSA`` - NUMBER(1) - ``1`` = evaluare pornita dintr-un **Proiect**, ``2`` = evaluare pornita dintr-o **Comanda de lucru**. * - ``ID_PROIECT`` - NUMBER - Completat cand ``SURSA = 1`` — FK catre ``PROIECTE``. * - ``NRCMD`` - VARCHAR2 - Completat cand ``SURSA = 2`` — FK catre ``CMDLUCRU``. * - ``COD``, ``DENUMIRE`` - VARCHAR2 - Codul si denumirea evaluarii (preluate de la sursa: proiect sau comanda). * - ``STARE`` - NUMBER(1) - Starea generala a evaluarii: ``0`` = EVALUARE (planificare in curs), ``1`` = OFERTA, ``2`` = PLANIFICATA. * - ``ID_USER``, ``DATAACT`` - NUMBER, DATE - Audit standard. WLP_CA — task de manopera =========================== Cate o inregistrare per task de manopera din Proiect/Comanda de lucru, la nivel generic (meserie/formatie) sau deja detaliat pe o persoana anume. .. list-table:: :header-rows: 1 :widths: 25 15 60 * - Coloana - Tip - Descriere * - ``ID_FIRMA``, ``ID`` - NUMBER - Cheie primara. * - ``ID_WLP`` - NUMBER - FK catre ``WLP`` (procedura master). * - ``ID_DICMES`` - NUMBER - Specificatie generica pe **meserie** (daca task-ul nu cere o persoana anume). * - ``ID_FORMATIE`` - NUMBER - Specificatie generica pe **formatie de lucru**. * - ``ID_MARCA`` - NUMBER - Specificatie detaliata, pe o **persoana** anume. * - ``DATAINC``, ``DATASF`` - DATE - Perioada taskului. * - ``NR_MUNCITORI`` - NUMBER(5) - Numarul de persoane necesare pentru acoperirea taskului. * - ``ID_UM`` - NUMBER - Unitatea de masura a necesarului (implicit ORA). * - ``Q_NECESAR`` - NUMBER(18,2) - Ore necesare pentru task. * - ``Q_CAPACITATE`` - NUMBER(18,2) - Capacitatea totala disponibila din sursa de resurse, in perioada taskului. * - ``Q_ALOCAT`` - NUMBER(18,2) - Ore efectiv alocate (rezultat al agregarii din ``WLP_CA_DETALIU``). * - ``Q_OFERTE`` / ``Q_EVALUARI`` - NUMBER(18,2) - Ore consumate de acelasi tip de resursa in alte evaluari WLP aflate in starea OFERTA, respectiv EVALUARE (informativ). * - ``Q_DISPONIBIL`` - NUMBER(18,2) - Cantitatea efectiv acoperita din necesar; ``Q_DISPONIBIL < Q_NECESAR`` marcheaza un task neacoperit. * - ``STARE`` - NUMBER(1) - Stare evaluare task: ``1`` = **VALIDATA** (acoperit sau acceptat explicit), ``9`` = **EROARE** (neacoperit). Alte valori sunt folosite intern pe parcursul etapelor algoritmului. * - ``COD_TASK``, ``DENUMIRE_TASK`` - VARCHAR2 - Identificarea taskului sursa (operatie tehnologica din Proiect/Comanda de lucru). * - ``ID_USER``, ``DATAACT`` - NUMBER, DATE - Audit standard. WLP_CA_DETALIU — expandare pe persoana ========================================= Expandeaza un ``WLP_CA`` generic (meserie/formatie) la cate o inregistrare per persoana individuala eligibila; pentru taskurile deja specificate pe o persoana, expandarea este 1-la-1. .. list-table:: :header-rows: 1 :widths: 25 15 60 * - Coloana - Tip - Descriere * - ``ID_FIRMA``, ``ID`` - NUMBER - Cheie primara. * - ``ID_WLP``, ``ID_WLP_CA`` - NUMBER - FK catre procedura master, respectiv taskul parinte. * - ``ID_MARCA`` - NUMBER - Persoana individuala. * - ``DATAINC``, ``DATASF`` - DATE - Perioada (mostenita din ``WLP_CA``). * - ``Q_NECESAR`` - NUMBER(18,2) - Cota individuala de ore necesare (``Q_NECESAR`` de pe task / ``NR_MUNCITORI``). * - ``Q_CAPACITATE`` / ``Q_ALOCAT`` / ``Q_OFERTE`` / ``Q_EVALUARI`` / ``Q_DISPONIBIL`` - NUMBER(18,2) - Aceleasi semnificatii ca pe ``WLP_CA``, calculate la nivel de persoana. * - ``ALOCAT`` - NUMBER(1) - ``1`` daca persoana a primit efectiv cel putin o ora alocata (``Q_ALOCAT > 0``) sau a fost planificata explicit prin :doc:`Planificare resursa `. * - ``Q_OVERTIME`` - NUMBER(20,2) - Suma orelor suplimentare din calendarul persoanei pe perioada taskului (agregat recalculat automat dupa actiunea **Ore suplimentare**). * - ``OVERTIME_WEEKEND1`` / ``OVERTIME_WEEKEND2`` / ``OVERTIME_HOLIDAY`` - NUMBER(1) - Marcaje (0/1) cu decizia de a lucra sambata / duminica / de sarbatoare pentru persoana curenta, pe perioada taskului. * - ``ID_USER``, ``DATAACT`` - NUMBER, DATE - Audit standard. WLP_CALENDAR — disponibilitate zilnica per persoana ====================================================== Cate o inregistrare per zi per persoana, independenta de task, reprezentand disponibilitatea reala conform programului de lucru si eventualelor absente. .. list-table:: :header-rows: 1 :widths: 25 15 60 * - Coloana - Tip - Descriere * - ``ID_FIRMA``, ``ID`` - NUMBER - Cheie primara. * - ``ID_MARCA`` - NUMBER - Persoana. * - ``DATA`` - DATE - Ziua calendaristica. * - ``IS_WORKING_DAY`` - NUMBER(1) - Decizia finala daca ziua este lucratoare pentru persoana (dupa aplicarea tuturor regulilor: weekend, sarbatori, concedii, ore suplimentare). * - ``Q_CAPACITATE`` - NUMBER(20,2) - Ore disponibile in ziua respectiva, dupa aplicarea tuturor regulilor. Formula: ore din programul de lucru (daca ziua e lucratoare) + ``Q_OVERTIME``. * - ``Q_OVERTIME`` - NUMBER(20,2) - Ore suplimentare adaugate zilei — singura componenta care se aduna la capacitate peste programul normal. Alimentata de actiunea :doc:`Ore suplimentare `. * - ``IS_WEEKEND1`` / ``IS_WEEKEND2`` - NUMBER(1) - Marcaje ca ziua este sambata, respectiv duminica. * - ``WORKS_ON_WEEKEND1`` / ``WORKS_ON_WEEKEND2`` - NUMBER(1) - Forteaza sambata/duminica drept zi lucratoare (din programul de lucru sau setate de optiunile *Lucru sambata/duminica* ale actiunii **Ore suplimentare**). * - ``OVERTIME_WEEKEND1`` / ``OVERTIME_WEEKEND2`` - NUMBER(1) - Orele suplimentare stabilite pentru sambata/duminica respectiva (informativ, pentru raportare; in capacitate intra prin ``Q_OVERTIME``). * - ``ID_USER``, ``DATAACT`` - NUMBER, DATE - Audit standard. WLP_CA_PLANIFICARI — alocarea finala pe zi si persoana ========================================================= Singura legatura dintre detalierea taskului (``WLP_CA_DETALIU``) si calendarul de disponibilitate (``WLP_CALENDAR``): cate o inregistrare per zi alocata efectiv unei persoane, pe un task. .. list-table:: :header-rows: 1 :widths: 25 15 60 * - Coloana - Tip - Descriere * - ``ID_FIRMA``, ``ID`` - NUMBER - Cheie primara. * - ``ID_WLP``, ``ID_WLP_CA`` - NUMBER - FK catre procedura master, respectiv taskul evaluat. * - ``ID_WLP_CA_DETALIU`` - NUMBER - FK catre expandarea pe persoana a taskului. * - ``ID_MARCA`` - NUMBER - Persoana alocata. * - ``ID_WLP_CALENDAR`` - NUMBER - FK catre ziua din calendarul persoanei. * - ``Q_ALOCAT`` - NUMBER(20,2) - Ore alocate in ziua respectiva. * - ``ALOCAT`` - NUMBER(1) - ``1`` daca randul reprezinta o alocare efectiva (``Q_ALOCAT > 0``). * - ``STARE`` - NUMBER(1) - ``0`` = alocare normala rezultata din evaluare; ``3`` = **ora de suprasolicitare (overload)**, generata de :doc:`Acceptare diferente ` (pe tot taskul) sau de :doc:`Planificare resursa cu overload ` (pe o singura persoana) — vezi :doc:`Algoritm_Suprasolicitare`. * - ``ID_USER``, ``DATAACT`` - NUMBER, DATE - Audit standard. .. important:: Orele normale si orele de suprasolicitare pentru **aceeasi zi si aceeasi persoana** sunt intotdeauna randuri **separate** in ``WLP_CA_PLANIFICARI`` (diferentiate prin ``STARE``), niciodata insumate intr-un singur rand. Aceasta permite raportarea distincta a incarcarii normale fata de suprasolicitare. WLP_CA_LOG — jurnal de evaluare ================================== Jurnalul erorilor si avertismentelor generate de motorul de evaluare pentru un task, si al aprobarilor acordate ulterior (de exemplu prin :doc:`Acceptare diferente `). .. list-table:: :header-rows: 1 :widths: 25 15 60 * - Coloana - Tip - Descriere * - ``ID_FIRMA``, ``ID`` - NUMBER - Cheie primara. * - ``ID_WLP_CA`` - NUMBER - Taskul la care se refera evenimentul. * - ``TIP_LOG`` - VARCHAR2 - Categoria evenimentului (eroare de disponibilitate, avertisment resurse concurente, informativ). * - ``APROBAT`` - NUMBER(1) - ``0`` = neaprobat, ``1`` = aprobat. * - ``ID_USER_APR``, ``DATAAPR`` - NUMBER, DATE - Utilizatorul si data aprobarii (completate la **Acceptare diferente**). * - ``ID_USER``, ``DATAACT`` - NUMBER, DATE - Audit standard (creare eveniment). WLP_CA_ALTERN — resurse alternative ====================================== Persoanele adaugate ca resurse alternative pentru un task, prin actiunea :doc:`Resurse alternative `. .. list-table:: :header-rows: 1 :widths: 25 15 60 * - Coloana - Tip - Descriere * - ``ID_FIRMA``, ``ID`` - NUMBER - Cheie primara. * - ``ID_WLP``, ``ID_WLP_CA`` - NUMBER - FK catre procedura master, respectiv taskul pentru care se adauga resursa alternativa. * - ``ID_MARCA`` - NUMBER - Persoana adaugata ca resursa alternativa. * - ``ID_USER``, ``DATAACT`` - NUMBER, DATE - Audit standard. .. note:: Ecranul :doc:`Resurse alternative ` afiseaza in antet, alaturi de aceasta lista, si campurile ``STARE``, ``Q_NECESAR`` si ``Q_DISPONIBIL`` preluate direct din ``WLP_CA``, printr-o alaturare (join) intre cele doua tabele — nu sunt coloane proprii ale ``WLP_CA_ALTERN``. Relatii intre tabele (rezumat) ================================= .. list-table:: :header-rows: 1 :widths: 40 60 * - Relatie - Sens * - ``WLP`` → ``WLP_CA`` (1:N) - O evaluare are mai multe taskuri. * - ``WLP_CA`` → ``WLP_CA_DETALIU`` (1:N) - Un task se expandeaza pe una sau mai multe persoane. * - ``WLP_CA`` → ``WLP_CA_ALTERN`` (1:N) - Un task poate avea mai multe resurse alternative adaugate manual. * - ``WLP_CA`` → ``WLP_CA_LOG`` (1:N) - Un task poate avea mai multe evenimente de log. * - ``WLP_CA_DETALIU`` → ``WLP_CA_PLANIFICARI`` (1:N) - O persoana din detalierea taskului poate avea mai multe zile alocate. * - ``WLP_CALENDAR`` → ``WLP_CA_PLANIFICARI`` (1:N) - O zi din calendarul unei persoane poate fi folosita de o singura alocare pe un task.