Unelte utilizator

Unelte site


Bara de navigare

DOC. hMARFA - PDF
DOC. hMARFE - PDF

Reguli de licenţiere

hmarfa:15_hmarfe4

15.3. Adaptare şi dezvoltare

Fişierele aplicaţiei

Opţiuni Descriere
Opţiunea 2I
(baza)
vânzări(t1), fişe de clienţi(t4), top vânzări(e1), cumpărări(t6), fişe furnizori(t8) cu posibilităţi de adaptare. Mai sunt disponibile fişierele: e4, e6, e8
Opţiunea 3Permite implementarea unor sisteme de rapoarte suplimentare solicitate de utilizator: celelalte fişiere de la t0-t9 şi e1-e9, t_, n_, p_, tdoc. Există o procedură hMET2UP pentru crearea unui fişier de tip t..

Adăugarea unui nou fişier de tranzacţie, tip t

Pentru adăugarea unui nou fişier tranzacţie t.. folosiţi HMET2UP:

  • lansaţi:
    hMET2UP DBFE E
    unde DBFE reprezintă baza de date de tip hMARFE, iar E codul aplicaţiei,
  • executaţi: Faza 1: Adaugare/suprascriere fisier Tx
    Indicaţi numărul de ordine al noului fişier care se adaugă.

Adăugarea unui nou fişier de export, tip e

  • DBU3: creaţi fişierul ex.dbf în catalogul IMPEX cu câmpurile:
    NB_UPD, N, 3
    SEx00 , C, 2
  • hUTIL: adăugaţi fişierul ex la Catalogul fişierelor, fără index (câmp: SEx00)
  • hMARFE: adăugaţi în Perioade o înregistrare pentru acest fişier
    deschideţi fereastra articol 10 (ştergeţi <>)
    adăugaţi fereastră fişier, articol, listă şi
    Tip/nr. : INC./SF. / 01
    Denumire: Actiune inaintea prelucrarii
    Actiune : t_period(„<“)
    Tip/nr. : INC./SF. / 02
    Denumire: Actiune dupa prelucrare
    Actiune : t_period(„>“)
    Tip/nr. : OPERATIE / 02
    Denumire: Extragere …
    Explic. : Extrage datele din …
    Formule
    -fisier : ver_ExPerioada().AND.fis_Zstergere().AND.OpExport(…)
    adăugaţi câmpurile
    adăugaţi operaţie export la fişierul din care se extrage.

Funcţia de extragere

Extragerea propriu-zisă a datelor are loc prin intermediul funcţiei fis_extragere(). Funcţia este parametrizabilă şi poate să parcurgă şi să extragă date din fişierele:

  • tran - Receptii;
  • lotm - Loturi intrare/stoc;
  • fac - Facturi/iesiri;
  • facr - Loturi de iesire;
  • inc - Incasari si plati.

Prin conţinutul celui de-al doilea parametru se stabileşte, care dintre aceste fişiere vor fi parcurse în timpul extragerii.

Astfel se recunosc următoarele cuvinte-cheie:

MR - Receptii, MR-R Loturi intrare/stoc, 
MV - Facturi/iesiri, MV-R - Loturi de iesire, 
MI - Incasari si plati.

De exemplu:

fis_extragere (,"MR,MR-R,MV,MV-R") - se extrag date din fişierele 
Receptii, Loturi intrare/stoc, Facturi/iesiri, Loturi de iesire.

Extragerea se referă la o perioadă. Pentru fiecare fişier destinaţie în care se extrag date se poate stabili o perioadă activă, prin opţiunea Initializare/Perioade. Extragerea se va referi la perioada stabilită.

Extragerea poate fi de tip rulaj sau fişă:

  • extragere de tip rulaj - vor fi luate în considerare doar tranzacţiile care
    au avut loc în perioada stabilită;
  • extragere de tip fişă - pe baza tranzacţiilor înregistrate înainte de perioada stabilită
    se calculează soldul precedent, iar tranzacţiile
    din cadrul perioadei active vor fi extrase fiecare.

Primul parametru al funcţiei fis_extragere() poate fi:

R - va iniţia o extragere de tip "rulaj", 
F - se va executa o extragere de tip "fişă".

Câmpurile fişierelor destinaţie în care se extrag datele pot fi câmpuri cu coduri dedicate şi câmpuri cu coduri liber alese.

Câmpurile cu codurile dedicate se încarcă automat, fără să fie necesară definirea unor formule de calcul, în timp ce câmpurile cu codurile liber alese se încarcă cu valorile returnate de formulele de calcul asociate. Astfel, formula ataşată unui câmp liber poate să adreseze direct câmpurile fişierului sursă din care se extrag datele. De exemplu, se extrag loturile de intrare, dar totodată se doreşte şi extragerea stocurilor curente. Pentru stocul curent nu există un câmp dedicat, prin urmare se extrage direct din fişierul de loturi.

Operaţia de extragere se lansează prin comanda:

fis_extragere("R","MR-R")

iar formula asociată câmpului în care se va extrage stocul curent al lotului va fi: lotm→STOCI - lotm→IESIRI

Evaluarea expresiei va fi făcută la executarea funcţiei fis_extragere(), adică în timpul operaţiei de extragere se va iniţia automat operaţia de calcul.

Dacă după operaţia de extragere se mai doreşte parcurgerea fişierului printr-o operaţie de calcul (ex. art_calcul()), va fi necesară ramificarea formulelor ataşate. Considerăm, că fişierul curent este T1, iar câmpul în care s-a calculat stocul este T1K1:

  • în câmpul condiţie se introduce: T1ZZZZ
  • pe ramura MR-R se introduce formula: lotm→STOCI - lotm→IESIRI
  • pe ramura ~~~~ se introduce o altă formulă, care poate fi T1K1 pentru păstrarea valorii extrase
    sau o altă formulă oarecare pentru recalcularea valorii extrase,
  • în momentul extragerii din lotul de intrare valoarea câmpului T1ZZZZ va fi încărcată automat cu „MR-R“.
    Pentru ca la pasul următor, când se execută art_calcul(), acesta să conţină o valoare diferită,
    astfel ca pentru câmpul T1K1 să se execute formula
    din ramura ~~~~, este necesară ştergerea valorii din câmpul T1ZZZZ,
    prin urmare câmpului T1ZZZZ trebuie să i se asocieze formula de calcul „“.

Tabele cu câmpurile dedicate, precum şi modul în care acestea sunt încărcate în cadrul operaţiei de extragere

Funcţii de gestionare a perioadei

cit_perioada()

Citeşte perioada (data_inc, data_sf, NumePerioada). Pentru o perioadă validă:

  • se şterge conţinutul fişierelor de export Ex pentru care fişierul curent furnizează date,
  • se şterge conţinutul fişierului curent,
  • perioda introdusă se înscrie în perioada corespunzătoare fişierului curent şi fişierelor export implicate,
  • se actualizează linia de informaţii generale de pe ecran.

Poate fi apelat numai pt. T1…T9 şi T_

ver_ExPerioada()

Parcurge perioadele definite pentru fişierele generice care furnizează date pentru fişierul de export curent şi verifică perioadele definite pentru aceste fişiere. Funcţia se termină cu succes, dacă perioadele implicate sunt identice.

Ex. fişierul curent este E2 şi există operaţie de export definită pentru E2 în T1 şi T2. Se verifică, dacă perioadele definite pentru T1 şi T2 sunt identice.

Poate fi apelat numai pentru E1…E9 .

t_period(„<“)

Afişare pe ecran şi activare Perioada corespunzătoare unui fişier. Se apelează în:

Tip/nr. : INC./SF. / 01
Denumire: Actiune inaintea prelucrarii
Actiune : t_period("<")

t_period(„>“)

Ştergere de pe ecran şi dezactivare Perioada corespunzătoare unui fişier. Se apelează în:

Tip/nr. : INC./SF. / 02
Denumire: Actiune dupa prelucrare
Actiune : t_period(">")

Adăugarea unui utilitar

Se pot adăuga proceduri (script hMET2) pentru executarea unor funcţii ca de exemplu liste speciale, programate cu generatorul de rapoarte hMET. Vezi exemplu în demo.

Codurile acestor proceduri trebuie să înceapă cu U, ca să poată fi lansate din meniu.

15.4. Procesul realizării listelor

Lista este o foaie/un document care conţine o enumerare de date etc. înşirate într-o anumită ordine. Dacă lista conţine şi totaluri, utilizăm şi noţiunea de raport sau situaţie.

15.4.1. Fazele realizării listelor

Crearea unei liste (unui raport) presupune aceleaşi faze ca şi crearea unui sistem informatic, doar cu conţinut specific:

1. definirea scopului
          care sunt cerinţele utilizatorului final (informaţiile de care are
          nevoie, cât de frecvent şi cât de rapid, în ce format)
2. analiza
          ce date şi cum să fie redate de listă pentru a satisface cerinţele
          de informare; 
          dacă este suficientă o listă; 
          dacă sistemul informatic conţine datele necesare creării listei; 
          posibilităţile tehnice de realizare a listei (ale listelor) având în 
          vedere şi cerinţele de performanţă (frecvenţa utilizării, volumul de 
          date care trebuie procesat, timpul disponibil pentru furnizarea 
          listei); 
          alegerea soluţiei
3. proiectarea
          în ce tabele se află datele primare, din care se obţine lista;
          paşii necesari procesării datelor având în vedere şi tehnologia 
          aleasă (de ex. hMET2, Microsoft Query);
          cum trebuie procesate datele (filtre, agregări etc.);
          ce titlu să aibă lista;
          planificarea în detaliu a tuturor componentelor de program necesare 
          de elaborat;
          dacă trebuie şi cum trebuie modificate componentele existente 
          pentru a integra noua listă;
4. elaborarea
          dezvoltarea/modificarea componentelor de program
5. testarea
          verificarea funcţionării în condiţii uzuale, extreme etc.
6. implementarea
          instalarea la client
7. documentarea
          are ca scop realizarea mai multor tipuri de documentaţii:
          - tehnică    - jurnalizează primele trei faze; prevede cum trebuie
                         făcută instalarea noii liste, prevede întreţinerea în 
                         timp (de ex. dacă trebuie acordată atenţie specială 
                         cu ocazia upgrade-urilor)
          - utilizator - descrie modul de operare
8. darea în folosinţă
          instruirea utilizatorilor, verificarea listelor de către utilizatori

Câteodată aceste faze se întrepătrund (materialele pentru documentare se adună încă de la faza 1) sau se schimbă ordinea lor (de ex. analiza şi proiectarea) sau sau ne dăm seama în mijlocul unei faze că este necesar să revenim la o fază anterioară (de ex. cu ocazia testării ne dăm seama că anumite cazuri particulare implică utilizarea unor criterii de filtrare suplimentare şi astfel trebuie să mai completăm proiectarea şi elaborarea).

Cu toate acestea, este important să avem în vizor aceste faze separat pentru că fiecare dintre ele are obiective bine definite.

15.4.2. Informaţiile minime necesare specificării unei liste

Cu ocazia analizei şi proiectării listelor trebuie avute în vedere informaţiile minime privind specificarea acestora:

  1. Ce anume se listează?
     Din răspuns se deduce dacă lista se hrăneşte dintr-un singur tabel
     (fişier) sau din mai multe.
     Se stabileşte titlul listei.
  2. Se includ toate datele din tabelele sursă sau trebuie filtrate?
     Dacă trebuie filtrate, cum anume? (ce se include şi ce se exclude?)
     Exemple:
     - documente de ieşire, dar numai cele interne
     - perioada pentru care se listează
     Criteriile de filtrare sunt aceleaşi tot timpul sau utilizatorul trebuie
     să aibă posibilitatea să le aleagă?
     Exemple:
     - criteriul de filtrare - numai documentele de ieşire validate să intre 
       în rezultat - se poate considera static, fiindcă acest criteriu trebuie 
       să fie adevărat ori de câte ori se generează lista;
     - criteriul de filtrare - perioada - trebuie să fie parametrizat, 
       adică utilizatorul să aibă posibilitatea să specifice valorile 
       de la ... până la ...
  3. Rândurile rezultate în ce ordine trebuie listate, după ce caracteristici?
     Exemple: cod, denumire, dată, grupă etc.
  4. Dacă sunt necesare subtotaluri? Cum se grupează datele?
     Sunt necesare mai multe nivele (grupe şi subgrupe)?
     Atenţie! Ordinea de listare şi gruparea pentru subtotaluri trebuie să
     fie în concordanţă.
     Exemple:
      - lista facturilor cu subtotaluri pe zile - ordinea trebuie să fie după 
        data facturii
      - lista documentelor cu subtotal pe tip document şi în cadrul tipului de
        document după dată - ordinea trebuie să fie tip document şi în cadrul 
        tipului de document data.
  5. De ce tip este lista?
     Listă simplă   - enumerează datele găsite, eventual la final afişează
                      încă un rând de total.
     Raport         - datele sunt grupate, subgrupate, cu totalizare la
                      sfârşitul grupelor.
     Centralizator  - listează doar rândurile de total ale grupelor,
                      subgrupelor.
     Extras         - nu prezintă datele în coloane, ci afişează fiecare rând
                      rezultat sub formă de fişă.
     Balanţă        - prezintă pe orizontală evoluţia elementelor urmărite.
     Exemple:
      - listă: lista documentelor de ieşire cu un total la sfârşit
      - raport: lista documentelor cu subtotal pe tip document şi în cadrul
                tipului de document pe zile
      - centralizator: totalul documentelor pe zile şi pe tip document
      - extras: "fluturaş" la salarii
  6. Dacă tipul listei este listă/raport/centralizator, cum să arate capul de tabel?
     Să fie format din mai multe rânduri?
     De ex. în primul rând cu denumirea coloanelor,
            în al doilea rând numărul coloanelor şi formula de calcul
            (col5=col2 x col4 / 100)

15.4.3. Complexitatea listelor

În general conţinutul listelor legate de domeniul lui hMARFA precum şi nivelul lor de agregare se bazează pe următoarele trei caracteristici: timp, articol şi partener.

Aceste caracteristici se pot organizeza la rândul lor în diferite grupe, astfel:

  • timp - zi, săptămână, lună, trimestru, semestru, an
  • articol - grupă, gestiune
  • partener - tip, localitate, judeţ, agent

Putem privi aceste caracteristici ca şi nişte dimensiuni:

La intersecţia oricăror 3 linii de coordonate se află valorile urmărite, cum sunt: cantitatea, preţul unitar, valoarea, etc.

În această privinţă, putem spune că utilizatorul doreşte să vadă prin intermediul unei liste o secţiune din volumul de date cuprins între cele 3 coordonate, secţiune care la rândul ei poate fi dintr-o singură bucată sau nu, adică continuă sau nu.

Acest lucru ne pune în faţa unei provocări, fiindcă o listă poate să redea doar una sau două dimensiuni.

Soluţia este următoarea: pentru a putea satisface nevoia de informare a utilizatorului referitor la toate cele 3 dimensiuni, în locul unei singure liste creăm un set de liste, care prin diferitele grupări, subgrupări, ordonări furnizează datele detaliat/agregat la toate nivelele necesare.

Pentru ca listele dintr-un asemenea set să funcţioneze optim (timpul în care sunt generate să fie cât mai mic), în practică s-a consacrat ca datele să fie procesate în două faze:

  1. se obţine volumul de date care poate face obiectul listelor la nivelul cel mai detaliat;
  2. se generează listele grupând, totalizând, ordonând şi eventual filtrând volumul de date obţinut în prima fază.

Astfel, prima fază trebuie executată doar o singură dată pentru întregul set de liste, şi numai faza a doua se execută pentru fiecare listă.

Să luăm o temă concretă, de exemplu Vânzările, şi să vedem un set de liste prin care putem simula cele trei dimensiuni. Apoi o să amintim două tehnologii pentru realizarea seturilor de liste.

Din Vânzări, caracteristicile care ne interesează pentru crearea raportărilor periodice sunt:

  • cui s-a vândut?
    • când?
    • ce anume?
    • cât?
    • la ce preţ?
    • care este valoarea?
    • cu ce document?

Exemple de liste pe care le putem genera din aceste de date (conţinut şi modul de procesare a datelor):

  • Lista vânzărilor:
    • redă datele fără nici o grupare, însumare
    • datele nu sunt procesate, sunt afişate ca atare
  • Lista parteneri/articole
    • arată pentru fiecare partener articolele vândute la nivel de lot de ieşire.
    • datele nu se centralizează pe nicio dimensiune, doar sunt grupate după partener:

  • Centralizator parteneri/articole
    • arată pentru fiecare partener articolele vândute la nivel de articol.
    • centralizează datele după partener şi articol, indiferent de timp, şi ordonează datele după partener.

  • Centralizator parteneri/luni
    • arată pentru fiecare partener nivelul vânzărilor pentru fiecare lună
    • centralizează datele după partener şi timp, indiferent de articol, şi ordonează datele după partener.

  • Centralizator parteneri
    • arată pentru fiecare partener nivelul vânzărilor
    • centralizează datele indiferent de articol şi de timp.

  • Lista articole/parteneri
    • arată pentru fiecare articol către cine a fost vândut la nivel de lot de ieşire
    • datele nu se centralizează pe nici o dimensiune, doar sunt grupate după articol.
  • Centralizator articole/parteneri
    • arată pentru fiecare articol către cine a fost vândut la nivel de client
    • centralizează datele la nivel de partener şi articol indiferent de timp, şi ordonează datele după articol.
  • Centralizator articole/luni
    • arată pentru fiecare articol nivelul vânzărilor pentru fiecare lună din perioada analizată
    • centralizează datele pe articol şi timp (lună) indiferent de partener, respectiv ordonează datele după articol.
  • Centralizator articole
    • arată pentru fiecare articol nivelul vânzărilor.
    • centralizează datele indiferent de partener şi de timp.
  • Centralizator pe luni
    • arată pentru fiecare lună nivelul vânzărilor.
    • centralizează datele doar după timp, indiferent de partener şi articol.

Două tehnologii cu care putem crea seturi de liste:

a) Microsoft Excel, în care putem importa datele din programele HAMOR Soft cu una dintre posibilităţile prezentate în capitolul 15.2, urmând ca aceste date să fie centralizate, filtrate cu ajutorul lui PivotTabel. În acest caz nu putem vorbi de un set de liste propriu-zis, fiindcă utilizatorul este cel care instruieşte Excelul cum să execute faza 2 manipulând tabelul pivot. Dezavantajul este că listele nu sunt predefinite şi este responsabilitatea utilizatorului să se asigure că a obţinut ce a vrut. În schimb, avantajul acestei tehnologii este că utilizatorul nu este limitat la un număr de liste, ci poate obţine practic orice rezultat.

b) realizarea setului de liste cu instrumente dedicate HAMOR Soft, ca fişierele de export ale aplicaţiilor hMET2, sau programul hMARFE. În acest caz utilizatorul beneficiază doar de listele predefinite, avantajul lor fiind că au fost testate în prealabil şi că utilizatorul nu trebuie să gândească cum să proceseze datele pentru a obţine ceea ce vrea.

Observaţie

Pentru a ilustra problema dimensiunilor şi pentru ca ea să fie înţeleasă cât mai uşor, ne-am bazat pe un exemplu cu 3 dimensiuni (grafic doar trei dimensiuni putem reprezenta). Dar teoretic pot fi oricâte dimensiuni. De ex. în situaţia noastră de vânzări am putea lua ca a patra dimensiune furnizorul articolelor vândute, ca a cincea dimensiune data achiziţionării, caz în care am avea două dimensiuni de timp.

hmarfa/15_hmarfe4.txt · Ultima modificare: 2024/11/11 09:00 (editare externă)