======================================== Planificare Resursa / Ore Suplimentare ======================================== Scop ==== Aceste doua actiuni permit rezolvarea **punctuala, persoana cu persoana**, a unui task ramas neacoperit — spre deosebire de :doc:`Acceptare diferente `, care trateaza deficitul intregului task dintr-un singur pas: - **Planificare resursa** — aloca orele unei singure persoane pe zilele perioadei, optional cu distribuirea unei cantitati de **suprasolicitare (overload)** doar pentru acea persoana; - **Ore suplimentare** — mareste efectiv **capacitatea** (programul de lucru) persoanei, adaugand ore suplimentare pe zilele perioadei taskului, inclusiv transformarea sambetei/duminicii in zi lucratoare. Ambele actiuni se apeleaza din panoul de detaliu al taskului: **Logistics > Fabricatie > Evaluare Capacitati > Planificare Capacitati**, selectati taskul, apasati **Detaliere**, selectati persoana dorita in fila **Resurse**, apoi deschideti meniul **Actiuni** al filei. Dupa fiecare aplicare, sistemul reface automat evaluarea taskului in mod *soft* (vezi sectiunea de la finalul paginii) — actiunile pot fi repetate pe rand, pe fiecare persoana, iar cand orele taskului ajung acoperite, taskul se **valideaza singur** (trece din **EROARE** in **VALIDATA**), fara alta interventie. Planificare resursa =================== Apelati **Actiuni > Planifica Resursa** dupa selectarea persoanei in fila **Resurse**. Comportamentul depinde de acoperirea persoanei selectate: - daca **Necesar <= Disponibil** (persoana isi acopera cota), se afiseaza doar o confirmare simpla si se aloca orele disponibile; - daca **Necesar > Disponibil** (persoana nu isi acopera cota), se deschide un dialog cu doua optiuni: .. list-table:: :header-rows: 1 :widths: 35 65 * - Optiune - Efect * - **Planificare cantitate disponibila** - Se aloca doar orele pe care persoana le are efectiv libere (comportamentul standard), fara suprasolicitare. Deficitul ramane vizibil pe task. * - **Planificare cantitate solicitata cu overload** - Pe langa orele disponibile, se distribuie si un numar de **ore de overload**, completat in campul afisat de dialog (precompletat cu diferenta *Necesar - Disponibil*, dar ajustabil — se poate acoperi si doar partial). Orele de overload se distribuie **doar pe zilele lucratoare ale persoanei selectate**, ca randuri distincte de planificare cu ``STARE = 3``, dupa aceleasi reguli de distributie descrise in :doc:`/LO/Evaluare_Capacitati/Specificatii_Tehnice/Algoritm_Suprasolicitare`. .. note:: Serverul **blocheaza** o valoare de ore de overload mai mare decat diferenta neacoperita a persoanei (*Necesar - Disponibil*, pe valorile din baza de date) — nu se poate distribui mai multa suprasolicitare decat deficitul real. Dupa aplicare, persoana este marcata **Alocat = Da** (chiar si la acoperire partiala — starea reala a taskului o decide reevaluarea automata), iar la varianta cu overload se inregistreaza si o actiune de audit de tip **PLANOVR** (*Planificare Resursa cu Overload*), vizibila in :doc:`Audit actiuni Task `. Ore suplimentare ================ Apelati **Actiuni > Ore Suplimentare** dupa selectarea persoanei in fila **Resurse**. Dialogul ofera cinci moduri de suplimentare a programului de lucru, aplicate pe perioada taskului: .. list-table:: :header-rows: 1 :widths: 40 60 * - Optiune - Efect asupra programului de lucru (``WLP_CALENDAR``) * - **Ore suplimentare in fiecare zi din perioada taskului** - Adauga numarul de ore completat (implicit 2) la capacitatea **fiecarei zile** din perioada, lucratoare sau nu. * - **Ore suplimentare in fiecare zi lucratoare din perioada taskului** - Adauga numarul de ore completat doar la zilele cu ``IS_WORKING_DAY = 1``. * - **Total ore distribuite automat pe zilele lucratoare din perioada** - Distribuie automat totalul de ore completat peste zilele lucratoare ale persoanei, folosind **aceeasi regula de distributie** ca la suprasolicitare (indice pe zi, prag de 2 ore/zi, corectie pe ultima zi — vezi :doc:`/LO/Evaluare_Capacitati/Specificatii_Tehnice/Algoritm_Suprasolicitare`). * - **Lucru sambata (cand sambata nu e zi lucratoare)** - Transforma sambetele **nelucratoare** din perioada in zile lucratoare cu regim de ore suplimentare: ziua primeste ``WORKS_ON_WEEKEND1 = 1``, ``IS_WORKING_DAY = 1`` si numarul de ore completat. Optional, cu selectorul de data **Doar ziua de**, efectul se limiteaza la o singura sambata; altfel se aplica tuturor sambetelor din perioada. * - **Lucru duminica (cand duminica nu e zi lucratoare)** - Analog cu lucru sambata, pentru duminici (``WORKS_ON_WEEKEND2``). Orele adaugate intra direct in capacitatea zilei (``Q_OVERTIME`` si ``Q_CAPACITATE`` pe ``WLP_CALENDAR``), iar agregatele persoanei (``Q_OVERTIME``, marcajele ``OVERTIME_WEEKEND1/2`` de pe ``WLP_CA_DETALIU``) se recalculeaza automat. Fiecare aplicare inregistreaza o actiune de audit de tip **ORESUPL** (*Alocare Ore Suplimentare*), cu tipul si parametrii folositi in observatii. .. note:: Optiunile de lucru sambata/duminica se aplica **doar zilelor de weekend care nu erau deja lucratoare** — repetarea actiunii nu aduna orele de mai multe ori pe aceeasi zi. .. important:: Spre deosebire de overload (care planifica ore **peste** capacitate, pastrandu-le evidentiate distinct cu ``STARE = 3``), **Ore suplimentare** mareste chiar **capacitatea** persoanei — orele devin disponibil normal si sunt tratate de evaluare ca orice alta capacitate. Decizia intre cele doua abordari este organizatorica: overload = incarcare acceptata peste program; ore suplimentare = program de lucru extins oficial. Ore suplimentare la nivel de task ================================== Aceeasi actiune **Ore Suplimentare** este disponibila si in meniul **Actiuni** al tabelului de taskuri (**Evaluare Capacitati**), fara a mai deschide detalierea. La acest nivel: - dialogul afiseaza **doar** optiunile **Lucru sambata** si **Lucru duminica** (variantele pe zile/total raman disponibile doar la nivel de persoana); - efectul se aplica programului de lucru al **tuturor persoanelor** din detalierea taskului (toate randurile din fila **Resurse**), dintr-un singur pas. Serverul valideaza restrictia si respinge alte tipuri de ore suplimentare la nivel de task. Reevaluarea automata "soft" a taskului ======================================= Dupa fiecare **Planificare resursa** sau **Ore suplimentare**, sistemul reface evaluarea taskului **fara sa stearga nimic din ce s-a alocat deja**: .. list-table:: :header-rows: 1 :widths: 10 90 * - Pas - Ce se intampla * - **1** - Se sterg doar mesajele de eroare/avertisment ale taskului din :doc:`Loguri evaluare Task ` — resursele (``WLP_CA_DETALIU``) si planificarile (``WLP_CA_PLANIFICARI``, inclusiv orele de overload) **raman neatinse**. * - **2** - Se recalculeaza capacitatea si disponibilul pentru **toate** persoanele taskului, peste alocarile existente. * - **3** - Se regenereaza mesajele de eroare pe situatia curenta; orele de overload deja distribuite (``STARE = 3``) conteaza ca acoperire. * - **4** - Starea taskului se seteaza automat: **VALIDATA** daca nu mai exista erori neaprobate, altfel ramane **EROARE**. Starea generala a obiectului (Proiect/Comanda) din coloana stanga se actualizeaza si ea. Acest mecanism permite fluxul iterativ: se rezolva persoanele una cate una (planificare cu overload la una, ore suplimentare la alta), iar la pasul la care acoperirea devine completa, taskul se valideaza **singur** — fara a fi nevoie de :doc:`Refacere evaluare ` (care ar sterge si regenera tot) sau de :doc:`Acceptare diferente `. Exemplu real, verificat ======================= Pe comanda de lucru ``MAI_01G``, cu doua taskuri ``TRAGERE`` ramase in **EROARE** (necesar 80 ore, disponibil 0): .. list-table:: :header-rows: 1 :widths: 30 35 35 * - Actiune aplicata - Efect asupra persoanei - Stare finala task * - **Ore suplimentare**, tip *Total distribuit*, 80 ore (persoana cu marca 66) - Capacitate 120 -> 200, Disponibil 0 -> 80, ``Q_OVERTIME`` = 80 - **EROARE -> VALIDATA** (acoperire completa, validare automata) * - **Ore suplimentare** la nivel de task, tip *Lucru sambata*, 2 ore/zi (persoana cu marca 81) - 3 sambete devin lucratoare cu 2 ore fiecare: Capacitate 120 -> 126, Disponibil 0 -> 6 - ramane **EROARE** (6 < 80 — acoperire partiala, corect semnalata)