Aplicatie Informatica Pentru Urmarirea Activitatii Depozitelor

INTRODUCERE

Instrumentul de bază folosit în informatică este calculatorul electronic. Acesta poate avea diverse utilizări, în funcție de domeniul informaticii pe care îl servește:

informatica de utilizare – presupune folosirea calculatorului pentru memorarea și organizarea informațiilor, editări de texte, comunicări prin intermediul sistemelor de calcul

informatica de gestiune – presupune folosirea unor sisteme de gestiune a bazelor de date pentru organizarea și prelucrarea unui volum mare de informații conținut în baze de date. Acest domeniu se suprapune cu teoria bazelor de date din informatică dar este mai mult axat spre utilizarea sistemelor de gestiune a bazelor de date existente în rezolvarea de probleme decât spre scrierea de noi aplicatii profesionale.

programarea – este cel mai complex domeniu al informaticii și presupune scrierea de programe care transcriu anumiți algoritmi (rețete de calcul) pentru rezolvarea unor probleme. Un algoritm se poate defini ca o listă finită de reguli de calcul care descriu succesiunea de operații necesare rezolvării unor probleme. Problemele rezolvate astfel pot aparține nu numai informaticii profesionale, ci pot fi aplicații în orice alt domeniu, aducând precizie, viteză de calcul și ușurarea evidentă a muncii prin automatizarea activității. Dintre domeniile informaticii profesionale amintim: teoria bazelor de date, teoria limbajelor formale, teoria grafurilor, inteligența artificială, informatica distribuită (dedicată rețelelor de calculatoare). Anumite produse informatice ușurează însăsi activitatea de folosire a calculatorului de către utilizatori profesioniști sau neprofesioniști, contribuind astfel la dezvoltarea părții de programe care face posibil lucrul cu calculatorul (software sau, pe scurt, soft, cum se mai numeste, printr-un împrumut din limba engleză).

Pentru a putea fi executați pe calculator, algoritmii se transcriu în limbaje speciale, care pot fi folosite pentru comunicarea cu calculatorul, numite limbaje de programare; astfel, vor rezulta programele. Se poate spune că un program descrie o succesiune de operații efectuate cu ajutorul unor instrucțiuni scrise într-un limbaj de programare. Înțelegerea conceptelor de limbaj de programare și de program nu este prea complicată dacă se face o analogie cu limbajul uman (numit în informatică – limbaj natural) și frazele prin care comunică oamenii; de altfel, această analogie este propusă chiar de teoria limbajelor formale din informatică. Așa cum limbajele naturale sunt generate de gramatici specifice (gramatica limbii române, gramatica limbii engleze etc.), limbajele de programare vor fi generate de gramatici mult mai restrictive, care să nu permită apariția unor ambiguități ce nu ar putea fi rezolvate de calculator. În timp ce în limbajul natural, ambiguitățile semantice sunt frecvente fiindcă interlocutorul poate deduce usor anumite aspecte subînțelese, calculatorului nu i se poate cere același lucru. De fapt, gramaticile limbajelor naturale conțin câte un vocabular vast de cuvinte (lexicul) și stabilesc niște reguli sintactice care definesc frazele corect construite în limbajul respectiv. Situația este asemănătoare și în cazul limbajelor de programare, cu diferențele că lexicul este mult restrâns iar cuvintele respective, chiar dacă sunt împrumutate din limba engleză, dobândesc semnificații algoritmice speciale și că regulile de construcție sintactică sunt și ele mult mai restrictive, pentru a nu apărea forme ambigue. Frazelor din limbajele naturale le vor corespunde instrucțiuni în limbajele de programare, capabile să descrie diverse tipuri de operații algoritmice efectuate asupra unor seturi de date. Dintre limbajele de programare cele mai răspândite amintim: Fortran, Pascal, C, C++, Basic. Aceste limbaje se numesc limbaje de nivel înalt fiindcă sunt apropiate de limbajul uman. Ultimele evoluții ale limbajelor de programare sunt caracterizate de apariția unor versiuni vizuale (C++, Basic), care asigură o interfața foarte accesibilă cu utilizatorul, bazată pe obiecte de dialog de tipul celor folosite de majoritatea produselor soft de tip Windows.

Textele scrise în limbaje de programare nu pot fi direct executate pe calculator fiindcă forma lor este mult prea complexă și diferită de cea accesibilă circuitelor electronice care constituie baza fizică a calculatorului (semnale electronice binare). De aceea, pentru a fi executate de calculator, programele scrise în diverse limbaje trebuie traduse în limbajul specific masinii respective, ale cărui instructiuni apar ca succesiuni de cifre binare. Deci un program scris într-un limbaj de programare (Pascal, C etc.) nu este direct executabil de către un calculator, ci numai după ce a fost transformat în cod masină. Această operație se numeste compilare și este executată automat de către un program numit compilator, adecvat limbajului și în mod evident dependent de acesta (orice compilator trebuie să transforme o sintaxă specifică unui anumit limbaj). O instrucțiune dintr-un limbaj de nivel înalt va fi tradusă prin mai multe instrucțiuni masină. Există și limbaje mai apropiate de masină, ale căror instrucțiuni descriu operații elementare și sunt dependente de tipul de calculator. Acestea se numesc limbaje de asamblare.  Spre deosebire de ele, limbajele de nivel înalt nu depind de tipul de calculator, deci le putem folosi pe orice calculator care dispune de un compilator corespunzător.

Pentru a simplifica activitatea de programare desfăsurată de informaticieni, s-au construit produse soft care încorporează mai multe facilități ce asigură scrierea și verificarea programelor: editarea, compilarea, executia și corectarea lor. Produsele soft care integrează aceste facilități se numesc medii de programare. Procesul de corectare a erorilor de execuție se numește depanare și este realizat de către programator, care foloseste în acest sens facilitățile oferite de mediul de programare: utilizatorul este asistat în urmărirea execuției programului, în vederea depistării eventualelor erori de concepție. De exemplu, Turbo Pascal, Borlandc C sunt medii de programare în limbajele Pascal, respectiv C realizate de firma Borland. Un ansamblu de medii de programare dezvoltat mai recent pentru mai multe limbaje cu versiuni vizuale este Developer Studio.

Aspectele sintactic și semantic ale informației au un rol foarte important în cazul programelor scrise în limbaje de programare. Se spune că un program este corect sintactic dacă forma și structura sa respectă regulile limbajului de programare în care a fost scris; în caz că există, erorile sintactice se semnalează în procesul de compilare. Se spune că un program este semantic corect dacă urmărește specificațiile problemei pe care trebuie s-o rezolve, descriind o metodă corectă de rezolvare a problemei. Dacă un program are erori semantice, deci nu va furniza rezultate corecte, calculatorul nu le va putea depista singur; programatorul va folosi facilitățile de depanare oferite de mediu pentru corectarea erorilor.

Conceperea programelor pentru diverse aplicații este un proces complex, care necesită pregătire de specialitate. Utilizatorii neprofesionisti nu trebuie însă să aibe cunostințe de programare, ci doar să cunoască principiile generale de funcționare a calculatoarelor și de utilizare a produselor soft de care au nevoie. Acestea constituie o interfată creată de informaticieni între calculator și cei care îl utilizează ca instrument de lucru.

ELEMENTE DE TEORIA BAZELOR DE DATE

1.1. Obiectivele organizării datelor

Organizarea datelor ocupă un loc important in proiectarea sistemelor informatice. De modul în care sunt organizate datele depinde eficiența sistemului informatic. Organizarea datelor presupune:

Definirea, structurarea, ordonarea și gruparea datelor in colecții de date omogene;

Stabilirea legăturilor între date, între elementele unei colecții, între colecțiile de date;

Reprezentarea lor pe suport informațional, prelucrabil într-un sistem de calcul.

Scopul organizarii datelor îl constituie regăsirea automată a datelor după diverse criterii și forme. Obiectivele urmărite în organizarea datelor sunt:

Timpul de acces la datele organizate pe diferite suporturi de date sa fie minim

Spațiul de memorie internă și externă ocupat de date să fie cât mai redus

Datele să apară o singură dată in sistem

În sistemul de organizare a datelor să sa reflecte, pe cât posibil, toate legăturile dintre obiectele, fenomenele, procesele economice pe care datele le reprezintă

Să permită schimbarea structurii datelor și a relațiilor dintre ele fără a modifica programele ce le gestionează

1.2. Concepte utilizate în organizarea datelor

Conceptele de bază utilizate in organizarea datelor sunt: entitate, atribut, valoare. Entitatea definește un obiect concret sau abstract reprezentat prin proprietățile sale. O entitate are mai multe atribute iar atributelor li se asociază o mulțime de valori. Fiecare atribut este caracterizat de natura valorilor pe care le poate lua. În general, un atribut are valori elementare, dar pot exista și situații de atribute compuse, formate prin concatenarea mai multor atribute. Pot exista atribute ce identifică în mod unic o entitate, ele numidu-se atribute cheie sau pot exista atribute ce nu identifică unic o entitate și se numesc atribute non-cheie.

Un alt concept utilizat este cel de dată. Data este un model de reprezentare a informației, accesibil unui anumit procesor (om, program, calculator). Cu acest model se operează pentru a obține noi informații despre fenomenele și procesele lumii reale. O dată care este indivizibilă în raport cu informația care o reprezintă, dar și în raport cu modul de prelucrare se numește dată elementară. Mai multe date elementare formează o dată compusă. Între date există divesre legături, relații. Între datele ce aparțin unor tipuri de entități pot exista două categorii de legături:

Prima se definește prin însăși apartenența datelor la entitate

Legăturile dintre entitățile de același tip sau de tipuri diferite

1.3. Modele de date

Pentru cunoașterea realității înconjurătoare și prelucrarea datelor cu ajutorul calculatorului este necesară modelarea acestei realități.

Definirea unui model de date presupune precizarea, identificarea urmatoarelor trei elemente:

Structura modelului

Operatorii care acționează asupra structurilor de date

Restricții pentru menținerea corectitudinii datelor, numite și reguli de integritate

Descrierea structurii modelului presupune definirea obiectelor și a caracteristicilor asociate.Aceasta se realizează utilizând următoarele elemente generice: câmpul – ca fiind cel mai mic element al structurii care poate fi identificat în scopul prelucrării -, grupul simplu sau compus – set format din mai multe câmpuri – și înregistrarea ca ansamblu de câmpuri și grupuri.

Relația între înregistrări aparținând unui singur obiect independent sau la două sau mai multe obiecte independente se materializează într-o legatură între o realizare a înregistrării părinte și una sau mai multe realizări ale înregistrării fiu. Realizările înregistrării de tip fiu formează o clasă de echivalență.

Formalizarea relațiilor între îinregistrări în cadrul unui model de date are ca scop reducerea redundanței datelor. Relația între înregistrări poate pune în evidență legături orizontale care permit localizarea claselor de echivalență sau legături verticale care permit localizarea înregistrării părinte. Legătura dintre obiecte poartă denumirea de asociere. Legăturile dintre două entități pot fi:unu la unu, unu la mulți, mulți la mulți.

Operatorii care acționeză asupra structurilor de date pot fi de citire, memorare, modificare, joncțiune.

Regulile de integritate sunt restricții menite să asigure menținerea corectitudinii datelor.

În funcție de modul în care se definesc elementele amintite, modelele de date pot fi: ierarhice sau arborescente, orientate obiect sau relaționale.

Modelul relațional are la bază teoria matematica l are la bază teoria matematica a relațiilor. Are o singură structură de date: relația, o submulțime a produsului cartezian al unor domenii. Un astfel de model poate fi privit ca o mulțime obținută prin metoda normalizării. Normalizarea pleacă de la o mulțime de atribute și o mulțime de dependențe funcționale dintre atribute și conduce la o schema conceptuală a modelului relațional într-o formă normalizată în care se vor elimina anomaliile de actualizări.

1.4. Baze de date

Evoluția metodelor și tehnicilor de organizare a datelor a fost determinată de necesitatea de a avea un acces cât mai rapid și ușor la un volum din ce în ce mai mare de informații precum și de perfecționarea echipamentelor de culegere, memorare, transmitere și prelucrare a adatelor.

Conceptul de bază de date poate fi definit ca fiind una sau mai multe colecții de date aflate în interdependență, împreună cu descrierea datelor și a relațiilor dintre ele. Baza de date astfel definită trebuie să indeplinescă următoarele condiții:

Să asigure o independență sporită față de programe și invers

Structura bazei de date trebuie astfel concepută încât să asigure informațiile necesare și suficiente pentru cerințele de informare și decizie

Să asigure o redundanță minimă și controlată a datelor

Să permită accesul rapid la informațiile stocate în bază

Bazele de date sunt extrem de variate în funcție de criteriile luate în considerare:

După orientare: generalizate, specializate

După modelul de date: ierarhice, relaționale, orientate obiect

După amploarea geografică: locale, distribuite

După limbajele utilizate: autonome (limbaje proprii), cu limbaj gazdă

Arhitectura bazelor de date evidențiază componentele acestora și a fost standardizată internațional. O astfel de arhitectură cuprinde:

Baza de date propriu-zisă în care se memorează colecția de date

Sistemul de gestiune al bazei de date care este un ansamblu de programe care realizeză gestiune și prelucrarea complexă a datelor

Un set de proceduri manuale și automate, precum și reglementările administrative, destinate bunei funcționări a întregului sistem

Un dicționar al bazei de date ce conține informații despre date, structura acestora, elemente de descriere a semanticii, statistici, documentație

Mijloacele hard utilizate

Personalul implicat reprezentat prin specialiști și utilizatori finali

Arhitectura bazei de date dă o imagine despre modul general de organizare și funcționare a ei. Componentele bazei de date pot fi structurate pe trei nivele, în funcție de clasa utilizatorilor implicați:

Nivelul logic dat de viziunea programatorului de aplicații, care realizează programele de aplicații pentru manipularea datelor și structura logică corespunzătoare descrierii datelor aplicației

Nivelul conceptual dat de viziunea administratorului bazei de date, care realizează structura conceptuală corespunzătoare descrierii bazei de date și administreză componentele bazei de date pentru manipularea datelor

Nivelul fizic dat de viziunea inginerului de sistem care realizeză structura fizică corespunzătoare descrierii datelor pe suportul fizic

SISTEME DE GESTIUNE A BAZELOR DE DATE

2.1. Obiectivele unui sistem de gestiune a bazelor de date

O baza de date apare ca o colecție de date stocate pe memorii externe adresabile, folosite de o multitudine de utilizatori. Insă o baza de date care nu are asociat un sistem de gestiune al acesteia, nu are sens, ea nu iși atinge obiectivele pentru care a fost creată.

Sistemul de gestiune al bazei de date reprezintă software-ul propriu-zis al acesteia care asigură realizarea urmatoarelor activitați:

definirea structurii bazei de date;

incărcarea datelor in baza de date;

accesul la date prin interogare, actualizare;

intreținerea bazei de date prin colectarea și refolosirea spațiilor goale, refacerea bazei de date in cazul unui incident;

reorganizarea bazei de date, restructurarea și modificarea strategiei de acces;

securitatea datelor.

Așadar, sistemul de gestiune al bazei de date apare ca un sistem complex de programe care asigură interfața intre o bază de date și utilizatorii acestuia.

In sens larg, sistemul de gestiune a bazelor de date este o componentă activă a băncilor de date, ce interacționează cu toate celelalte componente, cu toate categoriile de personal implicat in funcționarea băncii de date.

După cum este cunoscut, obiectivul informaticii il constituie culegerea, verificarea, transmiterea, stocarea și prelucrarea automată a datelor cu ajutorul mijloacelor electronice de calcul, in scopul satisfacerii diferitelor nivele de conducere cu informații necesare luării deciziilor, in condiții de eficiență economică sporită.

In aceste condiții, necesitatea acută de informare trebuie satisfacută ținând seama de o serie de cerințe prin care să se asigure: minimizarea costului procesului de preluare a datelor; creșterea vitezei de răspuns la întrebările solicitate de utilizatori; adaptarea facilă a sistemului informatic la evoluția in timp a sistemului informațional din care face parte; posibilitatea răspunsului la anumite intrebări neanticipate de către proiectanții de sistem; posibilitatea folosirii sistemului de informare dispunând de un mimin de cunoștinte despre modul de organizare a lui in general și informatică in special; integritatea și securitatea datelor.

O aplicație, in general, este dependentă de date in sensul ca modificarea structurii de memorare a datelor sau a strategiei de acces la date afectează și aplicația. Independența datelor fața de aplicație este totusi necesară cel puțin din următoarele considerente: diferite aplicații au nevoie de viziuni diferite ale acelorasi date; administratorul bazei de date trebuie sa aibă libertatea de a schimba structura de memorare sau strategia de acces, ca răspuns la cerințe, fără a modifica aplicațiile existente; baza de date existentă, precum și programele de exploatare a ei, care au fost folosite o perioada de timp, reprezintă o investiție majoră la care nu trebuie să se renunțe prea usor.

De aceea, se impune ca atunci cand apar noi cerințe in cadrul sistemului informațional, sistemele informatice sa poată funcțona cu programele și procedurile existente, iar datele existente sa poata fi convertite. Deci, modificările care se fac la nivel de structură de date nu trebuie sa modifice programele de aplicație.

Independența datelor trebuie privită din două puncte de vedere: independența fizică; independența logică a datelor.

Independența fizică a datelor face ca memorarea datelor și tehnicile fizice de memorare sa poată fi modificate fără a determina rescrierea programelor de aplicație.

Independența logica a datelor se referă la posibilitatea adăugirii de noi articole de date sau extinderea structurii conceptuale (globale), fără ca aceasta sa impună rescrierea programelor existente.

Spre deosebire de sistemele clasice de preluare automată a datelor, stocarea datelor in cazul bazelor de date se face astfel incât fiecare dată să apara o singură dată. Totusi, nu sunt excluse nici cazurile in care, pentru a realiza performanțe sporite, referitoare la timpul de acces la date și raspuns la solicitarile utilizatorilor, sa se accepte o anumită redundanță a datelor, insă în acest caz se va institui un control automat asupra ei in vederea asigurării coerenței datelor in bază.

Asigurarea unor facilitati sporite de utilizare a datelor. Aceasta presupune:

folosirea datelor de catre mai multi utilizatori in diferite aplicații;

accesul cât mai simplu al utilizatorilor la date, fără ca aceștia să fie nevoiți să cunoască structura intregii baze de date, acest lucru rămânând in sarcina administratorului bazei de date;

existenta unor limbaje performante de regăsire a datelor, care permit exprimarea sub forma unei conversații, a unor criterii de selecție a datelor și indicarea unor reguli cât mai generale pentru editarea informațiilor solicitate;

spre deosebire de sistemul clasic de prelucrare pe fisiere, unde exista un singur criteriu de adresare in cazul bazelor de date, sistemul de gestiune trebuie sa ofere posibilitatea unui acces multicriterial, fără sortări suplimentare, în timp ce modiicarea criteriului la fișierele clasice implică reorganizarea lor;

utilizarea unui limbaj cât mai apropiat de limbajul natural, cu posibilitatea exploatării bazei de date in regim conversațional. Aceasta ar oferi posibilitatea exploatării in mod facil a bazei de date și de către utilizatorii neinformaticieni.

Sporirea gradului de securitate a datelor impotriva accesului neautorizat la ele. În condițiile bazelor de date administratorul bazei de date poate prevedea ca accesul la baza de date sa se facă numai prin canale corespunzătoare, și poate, totodată, defini verificări de autorizare realizate oricând se incearcă accesul la anumite date.

Asigurarea integrității datelor impotriva unor stergeri intentionate sau neintenționate, prin intermediul unor proceduri de validare, a unor protocoale de control curent și a unor proceduri de refacere a bazei de date dupa incidente.

Asigurarea partajabilității datelor. Partajabilitatea datelor trebuie inteleasă nu numai sub aspectul asigurării accesului mai multor utilizatori la aceleasi date, ci și acela al posibilității dezvoltării unor aplicații fără a se modifica structura bazei de date.

2.2. Funcțiile unui sistem de gestiune a bazelor de date

Pentru realizarea obiectivelor enumerate mai sus, sistemele de gestiune a bazelor de date dispun de o serie de componente ce permit efectuarea numeroaselor operații. In funcțe de natura lor și scopul urmărit, operațiile pot fi grupate pe activități. Activitățile acceptă și ele o grupare pe funcții.

Ținând seama de multitudinea sarcinilor ce revin unui sistem de gestiune a bazelor de date și grupând aceste sarcini pe activități și apoi pe funcții, se deduc, in final, funcțiile sistemului de gestiune. Ținând seama de complexitatea sistemului de gestiune, de facilitățile propuse a fi oferite de acesta, de limbajele utilizate pe funcții are un oarecare caracter relativ. În situația sistemelor de gestiune ce utilizează limbaje gazdă de nivel inalt, identificarea și delimitarea funcțiilor nu este atât de evidentă. În ciuda acestor particularități, totuși, se pot deduce câteva funcții cu caracter de generalitate pentru toate sistemele de gestiune a bazelor de date.

Funcția de descriere a datelor permite definirea structurii bazei de date cu ajutorul limbajului de definire. Definirea datelor poate fi realizată la nivel logic, conceptual și fizic. La nivelul acestei funcții se descriu multitudinea atributelor din cadrul structurii bazei de date, legăturile dintre entitățile bazei de date dau dintre atributele aceleasi entități, se definesc eventualele criterii de validare a datelor, metodele de acces la date, aspectele referitoare la asigurare integrității și confidențialității datelor. Rezultatul acestei funcții se va concretiza în schema bazei de date, memorate in cod intern.

Funcția de manipulare a datelor este cea mai complexă funcție și realizează următoarele activități:

crearea bazei de date

adăugarea de noi inregistrări

suprimarea unor inregistrări

modificarea valorilor corespunzătoare unor câmpuri

căutarea, sortarea și editarea parțială sau totală a unei înregistrări virtuale

Funcția de utilizare asigură mulțimea interfețelor necesare pentru comunicarea tuturor utilizatorilor cu baza de date. În cadrul realizării acestei funții, apar mai multe categorii de utilizatori:

utilizatori conversaționali care reprezintă categoria beneficiarilor de informații și apar ca utilizatori neinformaticieni

utilizatori programatori care utilizează limbajele de manipulare, realizând proceduri complexe de exploatare a bazei de date

administratorul bazei de date apare ca un utilizator special și are rolul hotărâtor în ceea ce privește funcționarea optimă a întregului ansamblu.

Funcția de administrare a bazei de date apare ca o funcție complexă și este de competența administratorului bazei de date.

2.3. Etapele de realizare a bazelor de date

Realizarea unei baze de date presupune parcurgerea mai multor etape:

Analiza domeniului economic pentru care se realizează baza de date și a cerințelor informaționale asociate

Proiectarea structurii bazei de date care constă in schemele internă, externă și conceptuală

Încărcarea datelor în baza de date

Exploatarea și întreținerea bazei de date

Conținutul acestor etape, respectv activitățile implicate și modul lor de desfășurare depind, în general, de tipul bazei de date precum și de domeniul pentru care aceasta se construiește. Există însă și o serie de aspecte cu caracter general care nu sunt influențate de specificul unui anumit domeniu economico-social.

Realizarea bazei de date presupune utilizarea unor metode și tehnici de analiză, cum ar fi normalizarea relatiilor, de programare și a unor limbaje de descriere a datelor. Activitatea de analiză presupune:

Analiza componentelor sistemului și a legăturilor dintre acestea în urma căreia se oține modelul structural al sistemului

Analiza stărilor sistemului și a tranzițiilor posibile între aceste stări, în raport de anumire evenimente prin care se va obține modelul dinamic al sistemului

Analiza cerințelor informaționale, respectiv a transformărilor de date din cadrul sistemului, prin care sunt satisfăcute cerintele informaționale asociate domeniului economic. In urma acestei activități se obține modelul funcțional al sistemului economic.

Integrarea modelelor sistemului economic în scopul corelării și completării lor.

O caracteristică esențială a acestor modele este faptul că sunt independente de instrumentul, respectiv SGBD care le face operaționale. Este extrem de important ca în etapa de analiză a sistemului economic și a cerințelor informaționale asociate, activitatea de modelare a datelor să se realizeze independent de un SGBD. Orientarea pe conceptele proprii unui SGBD prezintă numeroase dezavantaje cum ar fi:

Schimbarea SGBD impune reproiectarea bazei de date.

Conceptele tehnice ale SGBD pot influența negativ activitatea de analiză, prin restricțiile impuse de acestea, care pot încuraja sau descuraja anumite reprezentări.

Fixând ca punct de plecare facilitățile unui SGBD utilizatorul neinformatician care nu stăpânește acest SGBD nu își poate exprima cerințele în deplină cunoștiță de cauză.

2.4. Protecția bazelor de date

Protecția bazelor de date constă într-un set de măsuri umane și facilități oferite de SGBD prin care se urmărește asigurarea integrității datelor, definită simplu prin corectitudinea datelor introduse și manipulate, și a secrității datelor, ce vizeză interzicerea accesului la date pentru persoanele ce nu au competențe în folosirea lor. Aceasta capătă o importanță deosebită în contextul extinderii folosirii configurațiilor cu număr mare de utilizatori și cu un volum mare de date de prelucrat. În ceea ce privește sfera de acțiune a metodelor utilizate pentru protecția datelor, pot fi puse în evidență două tendințe: protecția împotriva unor defecte sau erori accidentale și protecția completă care realizeză în plus protecția contra unor acțiuni voite. Teoretic, toate sistemele ar trebui să asigure protecția completă a datelor. În practică însă, costul protecției, care crește pe măsură ce sunt reduse posibilitățile de apariție a unor erori și de violare a confidențialității datelor, este cel care dicteză complexitatea metodelor de protecție care vor fi utilizate.

Corespunzător situațiilor care pot genera apariția unor date incorecte în baza de date, se disting trei aspecte ale asigurării integrității datelor.

2.4.1. Integritatea semantică a datelor

Introducerea unor date incorecte sau prelucrările ce furnizeză rezultate greșite trebuie prevenite prin includerea în programele de aplicație a unor secvențe de testare a datelor și prin utilizarea unor facilități de asigurare a integrității semantice a datelor oferite de SGBD. Orice operație asupra datelor trebuie constrânsă să respecte anumite reguli care reprezintă restricții de integritate.

Restricțiile implicite de integritate decurg din caracteristicile modelului utilizat pentru reprezentarea datelor și din elementele furnizate la descrierea structurii bazei de date. Astfel la introducereea datelor nu vor fi acceptate valorile care nu aparțin tipului de dată specificat pentru câmpurile respective din înregistrare. Dacă există conceptul de cheie unică la inserare se va verifica unicitatea cheii.

Restricțiile explicite de integritate pot fi incluse în programele de aplicație și verificate în timpul execuției acestora sau pot fi memorate în dicționarul datelor și verificate automat de SGBD la fiecare operație vizată asupra anumitor date.

Un SGBD cu faciltăți sărace în asigurarea integrității datelor impune includerea acestor restricții în programele de aplicație, soluție care prezintă însă următoarele dezavantaje:

Efortul de programare va fi mai mare și dimensiunea programelor va crește prin includerea părților de cod pentru testarea restricțiilor de integritate.

Restricțiile de integritate asociate anumitor date trebuie testate de fiecare program care lucrează cu datele respective prin repetarea aceleiași părți de cod în fiecare program

Programele de aplicație nu pot controla operațiile efectuate de utilizatori în limajele de interogare de nivel înalt, existând în continuare pericolul afectării integrității datelor

Dacă restricțiile se schimbă, efortul pentru modificarea tuturor programelor va fi foarte mare

Toate aceste dezavantaje dispar în cazul specficării restricțiilor de integritate la nivelul SGBD: acestea pot fi exprimate cu ajutorul limbajului de definire a datelor sau al limbajului de manipulare a datelor, în funcție de particularitățile fiecărui SGBD.

2.4.2. Controlul accesului concurent la baza de date

Sistemele monoutilizator răspund unui număr redus de probleme practice care implică utilizarea bazelor de date. Cea mai mare parte a aplicațiilor trebuie concepute pentru a putea funcționa în regim de lucru multiutilizator și implementate pe sisteme care prezintă această caracateristică. În sistemele multiutilizator, sistemul asigură accesul concurent al programelor în execuție la resurse după o anumită disciplină internă. În cazul aplicațiilor care utilizeză aceeași bază de date, întreruperea executării unui proces pentru începerea sau continuarea altora poate conduce la alterarea datelor. Asigurarea integrității datelor în acest context presupune existența unor facilitități speciale pentru controlul accesului concurent la date la nivelul SGBD. Unul dintre cele mai performante SGBD este Oracle ajuns in prezent la versiunea 9, care folosește în manipularea datelor cu conceptul de tranzacție.

Tranzacția este o secvență de operații care din punct de veder al SGBD Oracle constituie o unitate d prelucrare, aceasta însemnând că se va accepta fie executarea ei completă fie, în situația în care acest lucru nu este posibil, nu va trebui reținută nici o modificare facută de ea asupra bazei de date, Oracle efectând (automat sau la comandă) derularea înapoi a tranzacției.

Tranzacțiile pot fi:

implicite atunci când punctele de început și de sfârșit sunt automat definite și dacă are loc o cădere a sistemului înaintea terminării execuției comenzii, baza de date nu va fi lăsată în starea în care doar unele dintre valorile coloanelor există, sau în care un index nu este actualizat

explicite care presupun folosirea unor comenzi speciale pentru stabilirea punctelor de inceput și sfârșit ale tranzacției

2.4.3. Salvarea și restaurarea bazei de date

Salvarea și restaurarea bazei de date au ca scop readucerea datelor la o formă consistentă în urma unor evenimente care au alterat corectitudinea lor cum ar fi o defecțiune a suportului fizic pe care este memorată baza de date. Salvarea, în contextul asigurării integrității bazei de date, este procesul de stocare de date în vederea folosirii lor pentru restaurarea bazei de date. Copiile bazei de date pot fi realizate automat de către sistem la anumite intervale de timp sau la comanda administratorului bazei de date.

Jurnalul tranzacțiilor este un fișier special întreținut de SGBD, în care sunt memorate informații despre tranzacțiile efectuate asupra bazei de date, cum ar fi : identificatorul sau codul tranzacției, momentul începerii tranzacției, numarul terminalului sau identificatorul utilizatorului care a inșiat tranzacția, datele introduse, inregistrările modificate și tipul modificării. Pe baza acestui jurnal va putea fi stabilită ulterior succesiunea corectă și natura prelucrăriloe efectuate în intervalul de timp pentru care trebuia să se asigure restaurarea bazei de date.

Jurnalul imaginilor de deosebește de jurnalul tranzacțiilor prin aceea că el nu conține descrierea operțiilor efectuate asupra bazei de date ci efectul acestora. Jurnalul imaginilor poate conține imaginea înregistrărilor după modificare sau imaginea înregistrărilor înaintea unei modificări în forma inițială anterioară efectuării modificării. A doua formă este specifică Oracle 9.

Restaurarea automată este determinată de SGBD după oprirea și restartarea sistemului în urna unei căderi. Prin acest proces bza de date este adusă la o stare consistentă, prin derularea înapoi a tranzacțiilor active în momentul defecțiunii și continuarea tranzacțiilor înregistrare ca finalizate în fișirul jurnal, dar care nu sunt reflectate încă în baza de date.

2.5. Securitatea bazei de date

Asigurarea securității bazei de date presupune interzicerea accesului neautorizat la date. Aceasta se realizează cu ajutorul unui set de măsuri de protecție umane, software și hardware. Un nivel de protecție poate fi constituit prin stabilirea de parole pe baza cărora să fie permis accesul la resursele sistemului de calcul. În contextul lucrului efectiv cu baza de date se va verifica dacă utilizatorul are dreptul de a exercita un tip de operație asupra anumitor date. SGBD Oracle ține un jurnal pentru urmărirea accesului la baza de date, pe baza căruia pot fi depistate încercările de acces neautorizat la baza de date. Pentru cererile de intrare/ieșire transmise sistemului de operare de către SGBD sunt posibile verificări suplimentare referitoare la utilizarea corectă a fișierelor sau a funcțiilor sistemului de operare.

Autorizarea și controlul accesului la date presupune identificarea utilizatorilor, restricționarea accesului acestora la date precum și restricționarea operațiilor ce pot fi executate asupra datelor accesate.

Cea mai mare parte a SGBD actuale folosesc pentru identificarea utilizatorilir parole. Fiecare parolă va fi asociată cu anumite drepturi de acces la date, ea nefiind decât un prim obstacol pentru cei care încearcă să violeze securitatea bazei de date. Astfel pentru fiecare utilizator identificat prin parolă, SGBD menține o listă a privilegiilor acestuia. De asemenea utilizatorii pot fi asociați unor grupuri de utilizatori, la drepturile fiecăruia adăugându-se drepturile stabilite pentru grupul respectiv. Privilegiile unui utilizator depind de clasa de utilizatori căreia îi aparține. Astfel, administratorul bazei de date este utilizatorul care are implicit toate drepturile asupra bazei de date și de asemenea dreptul de a stabili sau revoca privilegii pentru ceilalți utilzatori. O altă clasă de utilizatori, o constituie proprietarii de obiecte (tabele, viziuni, proceduri), un obiect fiind întotdeuna în propritatea celui care-l crează. Implicit proprietarul unui obiect are toate privilegiile asupra acestuia, putând să le transmită sau revoce celorlalți utilizatori. Utilizatorii obișnuiți sunt cei care nu au în propritate obiecte și nu au alte privilegii decât cele moștenite ca membrii ai unui grup sau menționate explicit de administratorul bazei de date sau proprietarii de obiecte.

Unele SGBD oferă facilitatea definirii unor proceduri ce vor fi păstrate la nivelul sistemului într-o formă precompilată. În cadrul acestor proceduri vor fi specificate explicit operațiile ce trebuie efectuate asupra datelor. Utilizatorului i se va acorda dreptul de execuție a acestor proceduri și i se va interzice accesul direct la obiectele bazei de date gestionate de procedură.

Un alt procedeu prin care se asigură securitatea datelor este criptarea care constă în operația de codificare a datelor pe timpul stocării sau al transportului, astfel încât descifrarea lor să poată fi făcută numai de posesorii de cod. Problema securității datelor se rezumă la asigurarea securității cheii de criptare. Aceasta trebuie păstrată în condiții de siguranță, iar în cazul transmiterii pentru a fi utilizată la decriptare trebuie utilizate linii speciale.

Noțiuni de contabilitate folosite în aplicație

Aplicația generează articole contabile pentru anumite operațiuni, ușurând astfel munca compartimentului contabilitate unde se vor compara cu jurnalele editate. Articolele contabile sunt scrise în fișierul notafpr.dbf care se exportă către sediul societății unde are loc concatenarea fișierelor sosite de la fiecare depozit. Acest fișier este prelucrat ulterior de aplicația pentru obținerea balanței de verificare. Conform operațiilor inregistrate se generează urmatoarele articole contabile:

3.1. Prezentarea înregistrărilor contabile generate de aplicație

Tabel 3.1.- Avize expeditie către depozite și stații proprii ; numar nota = luna+185

Tabel 3.2.- Vânzare butelii aragaz gpl goale cu factura sau bon fiscal; numar nota = luna+185

Tabel 3.3.- Vânzare factura sau bon fiscal ; numar nota = luna+623

Tabel 3.4.- Vânzare motorina cu factura și decontarea taxei de drum cu bonuri valorice ; numar nota = luna+623

Tabel 3.5.- Vânzare produse petroliere la care se aplica taxa de încărcare numar nota = luna+623

Tabel 3.6.- Avize emise catre sucursale SNP ; numar nota = luna+623

Tabel 3.7.- Incasare facturi emise cu excepția taxei de drum decontata cu bonuri valorice; numar nota = luna+624

Tabel 3.8.- Incasare facturi emise in baza unui contract de sponsorizare ; numar nota = luna+624

Tabel 3.9.- Incasare avize emise catre sucursale SNP ; numar nota = luna+624

3.2. Descrierea simbolurilor contabile utilizate pentru înregistrarea operatiunilor

Contul 303 "Obiecte de inventar"

CONT DE ACTIV

Cu ajutorul acestui cont se tine evidența existenței și mișcării stocurilor de obiecte de inventar.

DEBIT:

valoarea la preț de inregistrare a obiectelor de inventar achziționate de la furnizori sau din avansuri de trezorerie (401, 408, 542);

valoarea la preț de inregistrare a obiectelor de inventar aduse de la terți (352, 401);

valoarea la preț de inregistrare a obiectelor de inventar reprezentând aport in natura, precum și a celor primite cu titlu gratuit (108, 456, 771);

valoarea la preț de inregistrare a obiectelor de inventar constatate ca plus de inventar (603);

valoarea la preț de inregistrare a obiectelor de inventar primite de la grup, unitate sau subunități (451, 481, 482).

CREDIT:

valoarea la preț de inregistrare a obiectelor de inventar scoase din folosință, constatate lipsa la inventar, cât și pierderile din deprecieri (322);

valoarea la preț de inregistrare a obiectelor de inventar vândute ca atare (371);

valoarea la preț de inregistrare a obiectelor de inventar trimise la terți (352);

valoarea la preț de inregistrare a obiectelor de inventar donate, cat și pierderile din calamitati (671);

valoarea la preț de inregistrare a obiectelor de inventar retrase din aport de intreprinzator (108).

SOLDUL CONTULUI: Reprezintă valoarea la preț de inregistrare a obiectelor de inventar existente in stoc.

Contul 371 "Mărfuri"

CONT DE ACTIV

Cu ajutorul acestui cont se tine evidența existenței și mișcării stocurilor de mărfuri.

DEBIT:

valoarea la preț de inregistrare a mărfurilor achziționate de la furnizori sau din avansuri de trezorerie (401, 408, 542);

valoarea la preț de inregistrare a mărfurilor reprezentand aportul in natura al intreprinzatorului individual sau al actionarilor și asociatilor (456);

valoarea mărfurilor aduse de la terți (357, 401);

valoarea la preț de inregistrare a materiilor prime, materialelor auxiliare, obiectelor de inventar, animalelor și păsărilor, a altor valori de natura stocurilor vândute ca atare (300,301, 321, 361);

valoarea la preț de inregistrare a produselor finite livrate prin magazinele proprii de desfacere (345);

valoarea la preț de inregistrare a mărfurilor constatate in plus la inventar, cat și cele primite cu titlu gratuit (607, 771);

valoarea adaosului comercial și taxa pe valoarea adaugata neexigibila, in situatia in care inregistrarea mărfurilor se tine la preț cu amanuntul (378, 4428).

CREDIT:

valoarea la preț de inregistrare a mărfurilor iesite din gestiune prin vânzare, precum și lipsurile de inventar (607);

valoarea la preț de inregistrare a mărfurilor trimise in custodie sau in consignatie la terți (357);

valoarea la preț de inregistrare a mărfurilor retrase din aport de catre intreprinzatorul individual (108);

valoarea adaosului comercial și a taxei pe valoarea adaugata neexigibila aferenta mărfurilor vandute, in situatia in care evidența mărfurilor se tine la preț cu amanuntul (378, 4428);

valoarea donatulor și a pierderilor din calamitati constatate la mărfuri (671).

SOLDUL CONTULUI: Reprezintă valoarea la preț de inregistrare a mărfurilor existente.

Contul 411 "Clienți"

CONT DE ACTIV

Cu ajutorul acestui cont se tine evidența decontarilor cu clienții interni și externi pentru produse, semifabricate, materiale, etc. vandute, lucrari executate și servicii prestate, pe baza de facturi.

DEBIT:

valoarea la preț de vânzare a mărfurilor, produselor, semifabricatelor etc. livrate, lucrarilor efectuate și serviculor prestate, precum și taxa pe valoarea adaugata colectata aferenta (701 la 708, 4427, 4428);

valoarea bunurilor livrate sau serviculor prestate evidentiate anterior in contul "Clienți-facturi de intocmit" (418);

diferențele favorabile de curs valutar aferente creanțelor exprimate in devize, ia inchiderea exercițiului financiar (477);

reluarea diferențelor de curs valutar nefavorabile aferente clienților, exprimate in devize, la inchiderea exercițiului (476);

valoarea creanțelor reactivate (754);

valoarea ambalajelor care circula in sistem de restituire, facturate clienților (419).

CREDIT:

sumele incasate de la clienți in conturile de disponibilitati bancare sau in numerar (512,531);

diferențele nefavorabile de curs valutar aferente creanțelor in devize la inchiderea exercițiului (476);

diferențele nefavorabile de curs valutar aferente creanțelor exprimate in devize(665);

valoarea cecurilor și efectelor comerciale acceptate (511, 413);

valoarea sconturilor acordate clienților (667);

sumele datorate de clienții incerti, dubiosi, rău platnici sau aflati in litigiu (416);

reluarea diferențelor favorabile de curs valutar aferente creanțelor in devize existente la inchiderea exercițiului (477);

valoarea ambalajelor care circula in sistem de restituire, primite de la clienți (419);

decontarea avansurilor incasate de la clienți (419).

SOLDUL CONTULUI: Reprezintă sumele datorate de clienți.

Contul 446 "Alte impozite,taxe și vărsăminte asimilate"

CONT DE PASIV

Cu ajutorul acestui cont se tine evidența decontarilor cu bugetul statului sau cu bugetele locale privind impozitele, taxele și vărsămintele asimilate cum Sunt: accizele, impozitul pe titeiul din productia interna și pe gaze naturale, impozitul pe dividende, impozitul pe cladiri și impozitul pe terenuri, taxa pentru folosirea terenurilor proprietate de stat.

CREDIT:

valoarea altor impozite, taxe și vărsăminte asimilate, datorate bugetului statului (129,635);

impozitul pe dividende datorat (457);

sumele restituite de la buget, reprezentand vărsăminte efectuate in plus din impozite, taxe și alte vărsăminte asimilate (512).

DEBIT:

plățile efectuate bugetului statului sau bugetelor locale privind alte impozite, taxe și vărsăminte asimilate (512).

SOLDUL CONTULUI: Reprezintă sumele datorate bugetului statului sau bugetelor locale.

Contul 447 "Fonduri speciale-taxe și vărsăminte asimilate"

CONT DE PASIV

Cu ajutorul acestui cont se tine evidența datoriilor și a vărsămintelor efectuate catre alte organisme publice, cum sunt: contributia unitatii pentru constituirea fondului de cercetare-dezvoltare, pentru constituirea fondului special pentru agricultura, a fondului special pentru sanatate, a fondului pentru risc și accidente, precum și alte vărsăminte asimilate.

CREDIT:

datoriile și varsainintele de efectuat, conform prevederilor legale, catre alte organisme publice (431, 635).

DEBIT:

plățile efectuate catre organismele publice privind taxele și vărsămintele asimilate datorate acestora (512, 542).

SOLDUL CONTULUI: Reprezintă sumele datorate de unitate organismelor publice.

Contul 482 "Decontari intre subunități"

CONT BIFUNCTIONAL

Cu ajutorul acestui cont se tine evidența deconturilor intre subunitățile fara personalitate juridica și contabilitate proprie din cadrul aceleiasi unitati.

DEBIT:

valoarea materiilor prime, materialelor, obiectelor de inventar, semifabricatelor, mărfurilor, ambalajelor, precum și sumele virate intre subunități (300, 301, 308, 321, 328, 341, 348, 371, 378, 381, 388, 512, 531).

CREDIT:

valoarea materiilor prime, materialelor, obiectelor de inventar, semifabricatelor, mărfurilor, ambalajelor, precum și sumele primite (300, 301, 308, 321, 328, 341, 348, 371, 378, 381, 388, 512, 531).

SOLDUL CONTULUI: Soldul debitor reprezintă Sumele cuvenite de la alta subunitate, iar soldul creditor, sumele datorate acesteia.

Contul 581 "Viramente interne"

CONT DE ACTIV

Cu ajutorul acestui cont se tine evidența viramentelor de disponibilitati intre conturile de trezorerie.

DEBIT:

sumele virate dintr-un cont de trezorerie in alt cont de trezorerie (512, 531, 541, 542).

CREDIT:

sumele intrate intr-un cont de trezorerie din alt cont de trezorerie (512, 531, 541, 542).

SOLDUL CONTULUI: Contul nu prezinta sold.

Contul 607 "Cheltuieli privind marfa"

Cu ajutorul acestui cont se tine evidența cheltuielilor privind mărfurile.

DEBIT:

valoarea mărfurilor vandute, constatate lipsa la inventariere (371).

Contul 704 "Venituri din lucrari executate și servicii prestate"

Cu ajutorul acestui cont se tine evidența veniturilor din lucrari executate și servicii prestate.

CREDIT:

tarifele lucrarilor executate și serviculor prestate (exclusiv taxa pe valoarea adaugata), pentru care au fost emise facturi catre clienți (411);

tarifele lucrarilor executate și serviculor prestate (exclusiv taxa pe valoarea adaugata), pentru care nu s-au intocmit facturi (418);

tarifele lucrarilor executate și serviculor prestate (exclusiv taxa pe valoarea adaugata), incasate in numerar (531).

Contul 624 "Cheltuieli cu transportul de bunuri și de personal"

Cu ajutorul acestui cont se tine evidența cheltuielilor privind transportul de bunuri și personal executate de terți.

DEBIT:

valoarea facturilor datorate sau achitate pentru transportul de bunuri, precum și pentru transportul colectiv de personal (401, 408, 471, 512, 532, 542).

Contul 658 "Alte cheltuieli de exploatare"

Cu ajutorul acestui cont se tine evidența altor cheltuieli de exploatare, in situatia cand acestea reprezintă operatii curente ale unitatii.

DEBIT:

diferențele din lichidarea datoriilor și creanțelor (167, 401 la 409, 411 la 419, 421 la 428, 431 la 438, 441 la 448, 451 la 457, 461, 462).

valoarea reparatiilor capitale efectuate cu forte proprii, repartizate in perioadele urmatoare conform scadentarului (471).

Contul 707 "Venituri din vânzarea mărfurilor"

Cu ajutorul acestui cont se tine evidența veniturilor din vânzarea mărfurilor.

CREDIT:

prețul de vânzare al mărfurilor (exclusiv taxa pe valoarea adaugata), livrate clienților (411);

prețul de vânzare al mărfuri1or (exclusiv taxa pe valoarea adaugata) pentru care nu s-au intocmit facturi (418);

sumele incasate in numerar din vânzarea mărfurilor( exclusiv taxa pe valoarea adaugata) (531).

4.1.1. Scurt istoric al sucursalei

Sucursala Peco Prahova își are rădăcinile in primul deceniu al secolului XX, mai exact la data de 29.04.1908 cand s-a înființat societatea anonimă “DISTRIBUȚIA” al cărei obiect de activitate era distribuirea produselor petroliere cu ridicata.

În anul 1948, in urma naționalizării,societatea “DISTRIBUȚIA” a fost transformată in Societatea de Stat COMPETROL care a funcționat pînă în 1953, cind s-a inregistrat marca PECO și a fost inființată Intreprinderea pentru Transportul și Livrarea produselor Petroliere (I.T.L.P.P.) Peco Ploiești care avea ca obiectiv de activitate preluarea întregii producții de produse petroliere din toate rafinăriile din țara, transportul prin conducte magistrale și cazane C.F.R. și livrarea acestora la consumul intern și export.

S.C. Peco Prahova S.A. a luat ființă la data de 01.04.1981 prin divizarea I.T.L.P.P. in Petrotrans S.A. Ploiești și Peco Prahova S.A. Ploiești. S.C. Peco Prahova și-a desfasurat activitatea de livrare a produselor petroliere in județul Prahova prin rețeaua proprie de depozite și stații PECO.

La data de 15.09.1997 S.C. Peco Prahova S.A. a fost absorbită de Societatea Nationala a Petrolului “PETROM” S.A. București, devenind Sucursala Peco Prahova.

La ora actuală Sucursala Peco Prahova se află in plin proces de modernizare a stațiilor PECO și a depozitelor, tinzând sa devină cea mai modernă organizație de profil din țară.

4.1.2. Mediul de afaceri

Din punct de vedere demografic, urmărind principala forță și anume populația, deoarece oamenii sunt cei care formează piețele, am constatat deplasari geografice ale populației care se datoreaza in principal mediului economic. Alaturi de populație, piețele au nevoie de puterea de cumpărare a cesteia. Astfel in zonele care se află in recesiune economică este evidentă migrarea populației catre zone mai solide din punct de vedere economic.

Problema mediului natural este una din problemele majore cu care se confruntă toate firmele. Din acest punct de vedere sucursala face eforturi insemnate care se concretizează in folosirea echipamentelor ce respectă standardele internaționale din punct de vedere al protecției mediului. Rezervoarele subterane cu pereți dubli in care se depozitează produsele petroliere, pompe de distribuție care sunt prevăzute cu recuperatori de vapori fac parte din dotarea standard a stațiilor modernizate.

Prin procesul de modernizare care-l parcurge sucursala, se ține pasul cu evoluția mediului tehnologic care și in domeniul petrolier isi spune cuvântul. Sistemul de gestiune automată a rezervoarelor alături de pompele noi cu debit mărit și cu comanda digitală precum și alte dotari, situază sucursala printre cele mai inzestrate societați de profil.

4.1.3. Strategia de dezvoltare

Organizațiile recunosc din ce în ce mai mult necesitatea și avantajele creării cu regularitate a unor produse și servicii noi. Produsele existente, ajunse la faza de maturitate și declin , trebuie inlocuite cu altele mai noi.

Produsele noi , insă pot esua. Riscurile inovarii sunt la fel de mari ca și posibilitatile de succes. Cheia reușitei unui produs nou o constituie crearea unor structuri organizatorice mai bune pentru transmiterea ideilor de produse noi și crearea unor proceduri de cercetare și decizie corespunzatoare , in fiecare etapă a procesului de inovare.

Procesul de creare a unui produs nou este compus din opt etape :

Generarea ideii

Selectarea ideii

Crearea și testarea conceptului

Elaborarea strategiei de marketing

Analiza activității

Crearea produsului

Testarea de piață

Comercializarea

La sfârșitul fiecarei etape se stabilește dacă ideea trebuie sa meargă mai departe sau să fie respinsă. Firma urmarește sa minimizeze șansele ca ideile necorespunzătoare să treacă in fazele superioare ale procesului de creare a produsului și ca ideile bune să fie respinse.

In ceea ce privește produsele noi , reacțiile consumatorului diferă , in funcție de caracteristicile lor și ale produselor.

Producătorii încearca să aducă noile lor produse in atenția potențialilor acceptanți timpurii , in special a celor care au caracteristicile unor lideri de opinie.

Majoritatea firmelor își concep in așa fel produsele incât acestea să se vândă , în primul rand pe piata internă.

Apoi , dacă produsul are succes , firmele analizeaza și posibilitațile de export în țările vecine sau pe piața mondială , reproiectând produsul dacă este necesar.

Ei au ajuns la concluzia ca firmele ar avea mai mult succes dacă ar adopta o viziune internatională in proiectarea și crearea noilor produse . Ele ar trebui să acorde o atenție mai mare denumirii produsului , materialelor componente , caracteristicile acestuia s.a.m.d și astfel modificările ulterioare vor fi mai puțin costisitoare.

In ceea ce privește adoptarea unor produse noi s-a observat ca persoanele care le acceptă parcurg anumite etape :

Constatarea – consumatorul află de noul produs dar nu dispune de informații despre el;

Interesul – consumatorul este stimulat să caute informații despre inovație;

Evaluarea – consumatorul cumpănește dacă să incerce sau nu inovația ;

Incercarea – consumatorul incearcă inovația pentru a-si imbunatați aprecierile referitoare la aceasta ;

Adoptarea – consumatorul se decide să utilizeze regulat noul produs.

S.N.P Petrom S.A a hotarat să lanseze prin cateva stații de distribuție reprezentative noile sortimente de benzina tip EN – 228 cu denumirea EURO PREMIUM și motorina tip EN – 590 cu denumirea EURO DIESEL incepand cu 1 iulie 2001.

In acest sens s-a dispus intreprinderea urmatoarelor acțiuni :

promovarea produselor prin mass media la nivel national;

pompele , spreaderele corespunzatoare și pe totemurile statiilor de distribuție trebuie să se afiseze existenta acestor produse;

crearea de spații de depozitare corespunzătoare.

Utilizarea carburanților cu caracteristici mult imbunătățite in perioada urmatoare , constituie una din condițiile aderarii Romaniei la Comunitatea Europeana.

In acest context , rafinăriile din cadrul S.N.P PETROM au elaborat strategii proprii privind obtinerea de benzina și motorina , care să corespundă normelor europene , pentru inceput in cantități mai mici , iar pe masura ce noile tehnologii se vor implementa să conducă la incadrarea intregii cantitați de carburanți in standardele europene.

Pentru benzină condițiile impuse se referă la : cifra octanică ridicata ( COR și COM ) , conținutul de benzen scăzut , conținutul de olefine mai mic , continutul total de hidrocarburi aromatice mai mic, presiune de vapori mai mică , conținut de sulf mai mic, eliminarea treptată a plumbului până in 2005.

Toate aceste condiții determină introducerea de noi procese tehnologice în rafinării , care implicit conduc la costuri suplimentare de producție și deci prețuri mai mari de livrare.

Pentru motorină , condițiile impuse se referă la : cifra octanică mai mare , stabilitate la oxidare , filtrabilitate bună la temperaturi negative , conținut de sulf mic , lubricitate marită .

Aceste caracteristici imbunătățite nu se pot obține decât prin investiții suplimentare in rafinării și utilizarea de aditivi , cu implicații directe asupra prețului de livrare.

Amplasarea punctelor de desfacere, în județ, este oglindită în figurile 1 și 2.

Figura 4.1.- Amplasarea statiilor de distribuție in județul Prahova

Figura 4.2. – Amplasarea depozitelor in județul Prahova

Figura 4.3. – Organigrama sucursalei

4.2. Structura tabele folosite de aplicație

Tabel 4.1. – structura tabelei APRO.DBF – date privitoare la expeditie

Tabel 4.2. – structura tabelei CLIENȚI.DBF – conține o inregistrare cu datele de identificare a depozitului emitent

Tabel 4.3. – structura tabelei FPRO.dbf – conține sold facturi la inceput luna și facturile emise in luna de lucru

Tabel 3 – structura tabelei IPRO.dbf – conține incasari aferente facturilor emise

Tabel 4.4. – structura tabelei MPRO.dbf – conține toate mișcările din depozit

Tabel 4.5. – structura tabelei PREȚ.dbf – conține nomenclatorul de prețuri

Tabel 4.6. – structura tabelei REGISTRU.dbf – conține date de identificare a clienților și furnizorilor

Tabel 4.7. – structura tabelei LOCURI.dbf – conține date privind locurile de munca din societate ; foloseste la avize catre statii pentru completarea coloanei dep_dest ; tabela se actualizeaza prin aplicația Rapges iar in lipsa acesteia, manual.

Tabel 4.8. – structura tabelei NOMEN.dbf – conține denumirile și codurile pentru produsele comercializate ; se obtine din preț.dbf prin programul Tabindex.exe

Tabel 4.9. – structura tabelei NOTAFPR.dbf – tabela note contabile ; face legatura cu aplicația de Balanța contabila

Tabel 4.10. – structura tabelei RAPOMAR.dbf – conține toate rapoartele

TMPPRO.dbf – identic cu mpro ; conține datele pentru factura sau avizul in curs de întocmire

NFPRO.mem – conține număr factura și aviz SNP care urmează a fi tiparit

4.3. Cerințe soft și hard

Aplicația este proiectată cu ajutorul SGBD FoxPro 2.6 și poate fi exploatată pe calculatoare cu platformă Windows 9x, NT4, 2000, XP beneficiind de facilitățile de multitasking ale acestor sisteme de operare. Aplicația poate rula pe un terminal independent sau intr-o arhitectură rețea de tip client-server. În cazul in care se dorește exploatarea aplicației de la mai multe terminale, se face instalarea pe server iar pe stația de lucru trebuie cartografiată adresa folder-ului din server unde s-a făcut instalarea. Este necesar ca pe fiecare stație de lucru să existe bibliotecile FoxPro (ESO și ESL) cât și fișierul de configurare config.fp care să indice calea pentru fișierele de manevră pe calculatorul local. În acest mod va fi redus traficul de date intre stație și server.

Conținut CONFIG.FP

RESOURCE=C:\PROGRA~1\FOX26\FOXUSER.DBF

OVERLAY=C:\PROGRA~1\FOX26\ OVERWRITE

EDITWORK=C:\WINDOWS\TEMP\

SORTWORK=C:\WINDOWS\TEMP\

PROGWORK=C:\WINDOWS\TEMP\

MVCOUNT=2000

DATE=FRENCH

DELETED=ON

CENTURY=ON

CATMAN=OFF

EXCLUSIV=ON

Din punct de vedere hard, calculatorul gazdă trebuie sa fie echipat cu:

HDD min. 1,5 Gb

Placă de rețea (în cazul lucrului concomitent de la mai multe posturi)

Placă fax-modem

4.4. Automatizarea colectării și arhivării datelor

Cu ajutorul plăcii fax-modem se face comunicarea cu sediul central pentru primirea upgrade-urilor la program, a prețurilor și trimiterea bazelor de date către sediu. Pentru a ușura munca utilizatorilor exportul și importul se fac cu ajutorul unor fișiere de comenzi (BAT).

4.4.1. Fișiere de comenzi pentru import, export

Import programe (impoprg.bat)

@echo off

echo 'Import aplicatii de lucru'

if exist c:\transmit\recv\balmar.arj del c:\programe\balmar.exe

if exist c:\transmit\recv\bonval.arj del c:\programe\bonval.exe

if exist c:\transmit\recv\actpreț.arj del c:\programe\actpreț.exe

if exist c:\transmit\recv\rapges.arj del c:\programe\rapges.exe

if exist c:\transmit\recv\reg_ini.arj del c:\programe\reg_ini.exe

if exist c:\transmit\recv\avansc.arj del c:\programe\avansc.exe

if exist c:\transmit\recv\cupoane.arj del c:\programe\cupoane.exe

if exist c:\transmit\recv\balmar.arj arj e c:\transmit\recv\balmar.arj c:\programe

if exist c:\transmit\recv\bonval.arj arj e c:\transmit\recv\bonval.arj c:\programe

if exist c:\transmit\recv\actpreț.arj arj e c:\transmit\recv\actpreț.arj c:\programe

if exist c:\transmit\recv\rapges.arj arj e c:\transmit\recv\rapges.arj c:\programe

if exist c:\transmit\recv\reg_ini.arj arj e c:\transmit\recv\reg_ini.arj c:\programe

if exist c:\transmit\recv\avansc.arj arj e c:\transmit\recv\avansc.arj c:\programe

if exist c:\transmit\recv\cupoane.arj arj e c:\transmit\recv\cupoane.arj c:\programe

echo 'Import fisiere cu rapoarte'

if exist c:\transmit\recv\rapomar.arj del c:\programe\rapomar.dbf

if exist c:\transmit\recv\rapomar.arj del c:\programe\rapomar.fpt

if exist c:\transmit\recv\rapobon.arj del c:\programe\rapobon.dbf

if exist c:\transmit\recv\rapobon.arj del c:\programe\rapobon.fpt

if exist c:\transmit\recv\rapo419.arj del c:\programe\rapo419.dbf

if exist c:\transmit\recv\rapo419.arj del c:\programe\rapo419.fpt

if exist c:\transmit\recv\rapocup.arj del c:\programe\rapocup.dbf

if exist c:\transmit\recv\rapocup.arj del c:\programe\rapocup.fpt

if exist c:\transmit\recv\rapoges.arj del c:\programe\rapoges.dbf

if exist c:\transmit\recv\rapoges.arj del c:\programe\rapoges.fpt

if exist c:\transmit\recv\rapost.arj del c:\programe\rapost.dbf

if exist c:\transmit\recv\rapost.arj del c:\programe\rapost.fpt

if exist c:\transmit\recv\rapomar.arj arj e c:\transmit\recv\rapomar.arj c:\programe

if exist c:\transmit\recv\rapobon.arj arj e c:\transmit\recv\rapobon.arj c:\programe

if exist c:\transmit\recv\rapo419.arj arj e c:\transmit\recv\rapo419.arj c:\programe

if exist c:\transmit\recv\rapocup.arj arj e c:\transmit\recv\rapocup.arj c:\programe

if exist c:\transmit\recv\rapoges.arj arj e c:\transmit\recv\rapoges.arj c:\programe

if exist c:\transmit\recv\rapost.arj arj e c:\transmit\recv\rapost.arj c:\programe

Export date (expdate.bat)

@echo off

echo 'Compactare fisiere Rapges'

if exist c:\transmit\send\rap_lun.arj del c:\transmit\send\rap_lun.arj

arj a c:\transmit\send\rap_lun.arj central.dbf iesiri.dbf intrari.dbf numerar.dbf serpomp.dbf

echo 'Compactare fisiere Balmar'

if exist c:\transmit\send\pro_lun.arj del c:\transmit\send\pro_lun.arj

arj a c:\transmit\send\pro_lun.arj fpro.dbf ipro.dbf mpro.dbf apro.dbf

echo 'Compactare fisiere Bonval'

if exist c:\transmit\send\bon_lun.arj del c:\transmit\send\bon_lun.arj

arj a c:\transmit\send\bon_lun.arj fbon.dbf ibon.dbf mbon.dbf abon.dbf

echo 'Compactare fisiere Avansc'

if exist c:\transmit\send\ava_lun.arj del c:\transmit\send\ava_lun.arj

arj a c:\transmit\send\ava_lun.arj avansc.dbf

echo 'Compactare fisiere note contabile'

if exist c:\transmit\send\not_lun.arj del c:\transmit\send\not_lun.arj

arj a c:\transmit\send\not_lun.arj notafpr.dbf notafbv.dbf notaavc.dbf

echo 'Compactare Registru clienți'

if exist c:\transmit\send\registru.arj del c:\transmit\send\registru.arj

arj a c:\transmit\send\registru.arj registru.dbf

Import nomenclator prețuri(impopreț.bat)

@echo off

echo 'Import nomenclator prețuri'

if exist c:\transmit\recv\preț_arj.arj del c:\programe\preț.dbf

if exist c:\transmit\recv\preț_arj.arj del c:\programe\preț.cdx

if exist c:\transmit\recv\preț_arj.arj del c:\programe\nomen.dbf

if exist c:\transmit\recv\preț_arj.arj arj e c:\transmit\recv\preț_arj.arj c:\programe

Datele primite la sediul central se unesc prin intermediul unui program FoxPro pentru a fi posibila extragerea de rapoarte la nivelul intregii organizatii. Acelasi program exporta datele in fisiere cu extensie ‘dat’ pentru a fi incarcate in serverul Oracle. Incarcare se face cu ajutorul unui fisier de comenzi care se lanseaza automat in cursul nopții prin Task Manager.

4.4.2. Lansare Loader Oracle

@echo off

echo ––– Lansare script sql –––-

echo

E:\Oracle\iSuites\Bin\SQLPLUS.EXE gestiune/gesdba@peco @f:\aplica~1\programe\sterg.sql

echo

echo ––– Lansare loader ––––-

echo

E:\Oracle\iSuites\BIN\SQLLDR.EXE userid=gestiune/gesdba@peco,Control=f:\aplica~1\programe\instatii.ctl,Log=f:\aplica~1\programe\instatii.log,Bad=f:\aplica~1\programe\instatii.bad,Data=f:\aplica~1\programe\instatii.dat,Discard=f:\aplica~1\programe\instatii.dsc,errors=0

E:\Oracle\iSuites\BIN\SQLLDR.EXE userid=gestiune/gesdba@peco,Control=f:\aplica~1\programe\exstatii.ctl,Log=f:\aplica~1\programe\exstatii.log,Bad=f:\aplica~1\programe\exstatii.bad,Data=f:\aplica~1\programe\exstatii.dat,Discard=f:\aplica~1\programe\exstatii.dsc,errors=0

E:\Oracle\iSuites\BIN\SQLLDR.EXE userid=gestiune/gesdba@peco,Control=f:\aplica~1\programe\apro.ctl,Log=f:\aplica~1\programe\apro.log,Bad=f:\aplica~1\programe\apro.bad,Data=f:\aplica~1\programe\apro.dat,Discard=f:\aplica~1\programe\apro.dsc,errors=0

E:\Oracle\iSuites\BIN\SQLLDR.EXE userid=gestiune/gesdba@peco,Control=f:\aplica~1\programe\fpro.ctl,Log=f:\aplica~1\programe\fpro.log,Bad=f:\aplica~1\programe\fpro.bad,Data=f:\aplica~1\programe\fpro.dat,Discard=f:\aplica~1\programe\fpro.dsc,errors=0

E:\Oracle\iSuites\BIN\SQLLDR.EXE userid=gestiune/gesdba@peco,Control=f:\aplica~1\programe\ipro.ctl,Log=f:\aplica~1\programe\ipro.log,Bad=f:\aplica~1\programe\ipro.bad,Data=f:\aplica~1\programe\ipro.dat,Discard=f:\aplica~1\programe\ipro.dsc,errors=0

E:\Oracle\iSuites\BIN\SQLLDR.EXE userid=gestiune/gesdba@peco,Control=f:\aplica~1\programe\mpro.ctl,Log=f:\aplica~1\programe\mpro.log,Bad=f:\aplica~1\programe\mpro.bad,Data=f:\aplica~1\programe\mpro.dat,Discard=f:\aplica~1\programe\mpro.dsc,errors=0

E:\Oracle\iSuites\BIN\SQLLDR.EXE userid=gestiune/gesdba@peco,Control=f:\aplica~1\programe\mbon.ctl,Log=f:\aplica~1\programe\mbon.log,Bad=f:\aplica~1\programe\mbon.bad,Data=f:\aplica~1\programe\mbon.dat,Discard=f:\aplica~1\programe\mbon.dsc,errors=0

E:\Oracle\iSuites\BIN\SQLLDR.EXE userid=gestiune/gesdba@peco,Control=f:\aplica~1\programe\fbon.ctl,Log=f:\aplica~1\programe\fbon.log,Bad=f:\aplica~1\programe\fbon.bad,Data=f:\aplica~1\programe\fbon.dat,Discard=f:\aplica~1\programe\fbon.dsc,errors=0

4.5. Videoformate – descriere

Fiecare videoformat de culegere date are in partea de jos niste butoane de comanda care pot fi actionate prin apasarea literei de culoare galbena sau printr-un click cu mouse-ul pe buton.

4.5.1. Butoane de comandă

Figura 4.6. – Exemplu de videoformat culegere date cu butoane

Butoanele au următoarea seminificatie:

+ Trece la inregistrarea următoare din tabela curenta și o afișează pe ecran; daca aceasta este ultima din tabela in coltul drepta-sus al ecranului apare informatia ‘Sfirsit fisier’.

– Trece la inregistrarea anterioara din tabela curenta și o afișează pe ecran; daca aceasta este prima din tabela in coltul drepta-sus al ecranului apare informatia ‘Inceput fisier’.

Browse afișează toate coloanele tabelei curente ; deplasarea de la o coloană la alta se face folosind taste Tab sau Enter ; pentru a parcurge tabela in sens ascendent se folosesc tastele sau ; se poate mari fereastra de afișare prin folosirea combinatiei de taste Ctrl+F10 ; revenirea la videoformat se face cu tasta Esc. Modul Browse se poate folosi pentru cautarea unei anumite secvente in tabela prin folosirea combinatiei Ctrl+F care va afișa fereastra de cautare :

Figura 4.7. – Exemplu de căutare a unui sir de caractere în tabelă

Se introduce sirul de cautare dorit (numar factura, nume client, etc – in intregime sau partial) și se da click pe <<Find >>. Daca sirul de caractere introdus este gasit va fi afișat iar in caz contrar in coltul dreapta-sus al ecranului se afișează Not found. Revenirea la videoformat din mod Browse se face cu tasta Esc. Inregistrarea pe care a fost pozitionat modul Browse este inregistrare curenta pentru videoformat.

Adaug are ca efect inceperea secventei de adaugare a unei noi inregistrari in tabela ; toate butoanele de comanda devin inactive pina la introducerea ultimei valori din videoformat cu exceptia butoanelor Salvare și Anulare ; operatia de adaugare ia sfirsit in momentul in care butonul Salvarea primeste focalizarea și se apasa Enter ; se poate renunta la valorile introduse daca inainte de a se actiona butonul Salvare se da click pe Anulare ; acelasi lucru se poate face daca se apasa Esc.

Modific da posibilitatea editarii unor valori introduse anterior (daca programul permite acest lucru) ; in mod similar cu actiunea de adaugare toate butoanele de comanda devin inactive pina la introducerea ultimei valori din videoformat cu exceptia butoanelor Salvare și Anulare ; operatia de modifcare ia sfirsit in momentul in care butonul Salvarea primeste focalizarea și se apasa Enter ; se poate renunta la valorile editate daca inainte de a se actiona butonul Salvare se da click pe Anulare ; acelasi lucru se poate face daca se apasa Esc.

Sterg are ca efect stergerea inregistrarii curente care este afișata pe ecran ; pentru a preveni stergerile accidentale inainte de a se lanasa comanda de stergere se mai cere o confirmare a actiunii, moment in care se poate raspunde cu NU daca actiunea a fost lansata din greseala ; pot exista situații cind prin program stergerea nu este permisa (ex. un client care are facturi). Dupa ce s-a executat stergerea inregistrarii afișata pe ecran, se va afișa următoarea inregistrare sau daca inregistrarea stearsa a fost ultima din tabela, va fi afișata inregistrarea anterioara; in acelasi timp in coltul dreapta-sus apare informatia ‘Sfirsit fisier’

Primul afișează prima inregistrare din tabela și in coltul dreapta-sus informatia ‘Inceput fisier’.

Utimul afișează prima inregistrare din tabela și in coltul dreapta-sus informatia ‘Sfirsit fisier’.

Tiparire apare la videoformatele care au ca scop culegerea de date pentru editarea de documente (facturi, avize).

4.5.2 Validări

In general toate cimpurile de editare ale unui videoformat au asociat un mesaj explicativ privitor la valorile pe care le accepta și care este afișat pe ultima linie a ecranului. Pentru a preveni erorile de introducere, cimpurile au asociate validari. In cazul cind valoarea introdusa nu este in conformitate cu validarea asociata in coltul dreapta-sus se afișează un mesaj de eroare. Din acest motiv nu este posibila revenirea la un cimp anterior cimpului care are asociata o validare și primeste focalizarea, numai daca se introduce o valoare și in loc de Enter se tasteaza .

Pentru a asigura integritatea datelor au fost implementate următoarele validari la nivelul aplicației:

Dacă s-a emis un document de iesire (factura sau aviz) pe luna curenta nu se mai poate face aceiasi operație pe luna anterioară.

Nu este posibilă efectuarea de 2 ori a operației de inchidere a jurnaluli de facturi sau calcul a stocului final.

Nu se mai pot opera incasari dupa închidera jurnalului de facturi pentru luna de prelucrare.

Pentru încasarea facturilor emise in luna anterioara este necesară inchiderea jurnalului de facturi operatie ce constă în reportarea soldului facturilor in luna de prelucrare.

4.6. Meniul pentru culegerea / vizualizarea datelor

Utilizatorii au posibilitatea de a selecta videoformatul care corespunde documentului primar ce trebuie introdus.

4.6.1. Culegerea datelor privind intrările în depozit

Tabel 4.11. – Documente de intrare

Figura 4.8. – Exemplu de videoformat pentru culegerea datelor de intrare

Furnizor – numele introdus se cauta in registrul de clienți furnizori iar daca denumirea nu exista se afișează lista ordonata alfabetic ; se alege un nume corespunzator din lista iar daca acesta nu se afla in lista afișata se forteaza iesirea din lista prin alegerea oricarui nume dupa care se tasteaza Esc sau click pe Anulare și se paraseste videoformatul de culegere pentru a se face actualizarea registrului de clienți-furnizori ; daca se introduc mai multe pozitii pentru acelasi furnizor se poate duplica denumirea cu ajutorul tastei +

Numar document – se introduce numarul notei de greutate, de pompare, inventar etc ; nu se accepta valoare zero.

Denumire produs – se introduce denumirea scurta a sortimentului care este cautata in nomenclatorul de prețuri ; daca sortimentul nu exista in lista afișata se forteaza iesirea din culegere, conform explicatiei de la furnizor și se ia legatura cu Oficiul de calcul care raspunde de actualizarea prețurilor ; daca se introduc mai multe pozitii pentru acelasi produs se poate duplica denumirea cu ajutorul tastei +

Data valorificare – se introduce data documentului ; in functie de acesta data se face valorificarea sortimentului prin consultarea nomenclatorului.

Preț rafinarie – nu se introduce decit in cazul sortimentului AMBALAJ ; pentru restul sortimentelor se afișează prețul dupa ce sa salvat inregistrarea.

Bucăți – se culege numai în cazul produselor amabalate, pentru cele vrac este ignorat prin program.

Kilograme – conform documetului de intrare .

Fel transport – permite introducerea valorilor A=auto, C=cfr, P=pompare.

Fel livrare – permite introducerea valorilor P=Petrotrans, R=rafinarie, T=transfer.

Documentele introduse prin acest videoformat se regasesc in rapoartele:

Intrari prin Petrotrans

Intrari prin rafinarii

Intrari prin transfer

Lista documente primare (Selectie pentru documentul respectiv)

Balanța mărfuri depozit (sintetica)

Balanța depozit+tranzit (detaliu)

Stocuri zilnice

4.6.2. Culegerea datelor privind iesirile din depozit

Tabel 4.12. – Documente de ieșire

Figura 4.9. – Exemplu videoformat pentru emitere avize expediție către stațiile proprii

Numar document – se introduce numarul dispozitiei de livrare, intocmita de serviciul desfacere ; in cazul facturilor in regim tranzit se introduce numarul notei de greutate ; cimpul trebuie completata obligatoriu

Denumire produs – se introduce denumirea produsului conform nomenclatorului de prețuri ; daca se introduc mai multe pozitii pentru acelasi produs se poate duplica denumirea cu ajutorul tastei +

Data valorificare – se introduce data livrarii ; in functie de acesta data se face valorificarea sortimentului prin consultarea nomenclatorului ; este completat implicit cu data curenta.

Preț rafinarie – nu se introduce decit in cazul sortimentului AMBALAJ ; pentru restul sortimentelor se afișează prețul dupa ce sa salvat inregistrarea.

Client – numele introdus se cauta in registrul de clienți furnizori iar daca denumirea nu exista se afișează lista ordonata alfabetic ; se alege un nume corespunzator din lista iar daca acesta nu se afla in lista afișata se forteaza iesirea din lista prin alegerea oricarui nume dupa care se tasteaza Esc sau click pe Anulare și se paraseste videoformatul de culegere pentru a se face actualizarea registrului de clienți-furnizori ; daca se introduc mai multe pozitii pentru acelasi client se poate duplica denumirea cu ajutorul tastei +

Litri livrati – se introduc litri conform dispozitie de livrare ; pentru produsele ambalate in bidoane cu capacitate mai mare de 1 litru sau butelii cu Aragaz-gpl se introduc litrii (NU numar bucati); programul face conversia la listarea stocului in bidoane,butelii,etc; nu poate fi zero

Densitate – se introduce densitatea conform dispozitiei de livrare ; pentru uleiuri, produse solide sau Ambalaj densitatea este 1

Kilograme – rezulta din formula litri * densitate

Butoaie/cisterna – se solicita introducerea acestui cimp numai pentru benzine

Pe ultimul rind al videoformatului se afișează valorile cumulate pentru factura curenta.

In cazul produsului Ambalaj, se introduce numar bucati, kilograme, etc in cimpul litri livrati, densitate = 1 iar la preț rafinarie se introduce preț unitar fara TVA.

Dupa ce s-au introdus toate inregistrarile pentru un document de iesire se actioneza butonul Tiparire pentru listarea documentului. Pentru listare se solicita următoarele informatii:

Figura 4.10. – Informații solicitate pentru emiterea unei facturi

Statut client – se alege din lista predefinita codul care corespunde apartenentei clientului ; codul va fi completat de serviciul desfacere pe dispozitia de livrare. Acest cod este necesar pentru raportarile care se fac la SNP, pe ministere.

Denumire auxiliara client – se introduce filiala sau sucursala clientului, daca exista sau se lasa necompletat. Exemplu: PECO Arges doreste sa se intocmeasca documentul pe numele unei statii proprii ; in acest caz aici se va introduce numele statiei respective.

Dupa ce s-a tastat Enter pe butonul <<De acord>> pe ecran apare intrebarea “Imprimanta este pregatita pentru listare ?” . Daca pina in acest moment se sesizeaza ca s-a introdus o informatie eronata se raspunde NU și prin actionarea butonului Modific se corecteaza datele introduse eronat, dupa care se reia procedura de Tiparire. Daca se raspunde DA la intrebarea privind starea imprimantei, se initiaza procedura de tiparire și pe ecran apar datele privitoare la documentul listat, insotite de de intrebarea “S-a tiparit corect documentul ?”

Figura 4.10. – Confirmarea tipăririi corecte de către utilizator

Culegerea datelor pentru un document de iesire se face intr-o tabela temporara. Dupa ce s-a tiparit factura s-au avizul și s-a raspuns afirmativ la intrebarea ‘S-a tiparit corect ?’ inregistrarile aferente se transfera in tabela permanenta. Se poate verifica acest lucru daca se actioneaza Browse dupa listare. Daca se raspunde negativ datele ramin in tabela temporara și se incrementeaza numarul de factura sau aviz. Deci atunci cind se intrerupe curentul in timpul tiparirii, imprimanta nu este setata corect, hirtia se agata in imprimanta sau din orice alte motive se produce o tiparire de proasta calitate, se va raspunde NU și se executa din nou comanda de tiparire.

Discount acordat pentru Facturi in regim franciza

Benzine = 0.02 (2%)

Motorine = 0.025 (2,5%)

In cazul facturilor in regim tranzit se solicita in plus informatiile:

Furnizor – numele introdus se cauta in registrul de clienți furnizori iar daca denumirea nu exista se afișează lista ordonata alfabetic ; se alege un nume corespunzator din lista iar daca acesta nu se afla in lista afișata se forteaza iesirea din lista prin alegerea oricarui nume dupa care se tasteaza Esc sau click pe Anulare și se paraseste videoformatul de culegere pentru a se face actualizarea registrului de clienți-furnizori ; daca se introduc mai multe pozitii pentru acelasi furnizor se poate duplica denumirea cu ajutorul tastei + .

Kilograme – se introduc kilogramele conform notei de greutate.

Fel transport – se introduce modalitatea de transport: auto, CFR, pompare.

Fel livrare – se introduce modalitatea de livrare catre client: prin Petrotrans sau prin rafinarie.

In cazul avizelor intocmite pentru sucursalele SNP, Nu se calculeza taxa drum, acciza, tva iar adaos-ul reprezintă 50% din taxa transport Petrotrans. Dupa listarea avizului se solicita pregatirea imprimantei pentru listarea notei de debitare. Se pune in imprimanta o coala format A4 și se executa tiparirea.

Documentele introduse prin videoformatele pentru documente iesire se regasesc in rapoartele:

Balanța mărfuri depozit (sintetica)

Balanța depozit+tranzit (detaliu)

Stocuri zilnice

Analiza creanțe

Jurnal facturi A3

Jurnal facturi A4

Rezumat jurnal facturi

Facturi emise pe o zi

Sold initial facturi

Facturi neincasate

Jurnal vinzari-decont TVA

Taxe la vinzare

Scutiri taxa drum

Detalii mișcări

Iesiri produse pe clienți

Avize transfer catre statii PECO(1)

Avize transfer catre statii PECO(1)

Lista documente primare (Selecție pentru documentul respectiv)

Livrari in regim franciza

Vinzari

Nota contabila

4.6.3. Operarea incasarilor pentru facturile emise

Figura 4.11. – Exemplu de videoformat pentru incasarea facturilor emise

In partea de sus a ecranului sunt afișate facturile asupra carora s-a facut o incasare iar în partea inferioară sunt afișate incasările in ordinea in care au fost introduse. La intrarea în program este afișată ultima incasare operată. Efectuarea unei incasări se face prin acționarea butonului Adaug.

Factura: Se introduce numărul facturii pentru care se face incasarea iar dacă aceasta există vor fi afișate valorile rest de încasat. În cazul in care factura nu există se emite mesajul respectiv de eroare. Dacă factura a fost achitată în întregime utilizatorul este intrebat dacă dorește sa anuleze valorile incasate și pentru răspuns afirmativ programul va efectua anularea automat prin adăugarea valorilor incasate, așa cum au fost introduse, cu semn negativ. În acest mod se anulează toate incasările pentru factura respectivă, chiar dacă aceasta a fost incasată in tranșe și in același timp se anulează și incasarea din avans, dacă există pentru factura respectivă. Dacă s-a operat o incasare parțială la o factură și se dorește anularea acesteia se vor adăuga valorile respective cu semn negativ. Nu se pot anula incasările pentru facturile anulate prin program (mesaj: aceasta este o factură de anulare).

Document incasare: Acceptă următoarele valori : OPL EFI CON CEC NUM OPT DJR 419 481. Un caz particular îl reprezintă încasarea prin avansurile primite de la client(419). Programul verifică dacă există disponibil in contul clientului respectiv (Aplicația Avansuri clienți) și in caz contrar se emite un mesaj de eroare. Dacă clientul are disponibil in contul de avans se vor face înregistrări in tabelele Ipro și Avansc. Atenție : dacă s-a operat o încasare cu documente 419 sau CON și reveniți asupra incasării prin modificare, Nu modificați tipul documentului pentru ca astfel situația din aplicația Avans clienți nu mai corespunde cu total incasări prin 419 și CON.

Comentariu: Se introduc serie, număr documet de plată.

Data documentului: Nu poate fi mai mică de data emiterii facturii.

Rafinarie, Adaos, Acciza, Taxa drum, Fond special, Ambalaj, TVA: Aceste valori nu pot fi mai mari de valorile facturii emise iar valoarea totala trebuie sa fie egală cu suma elementelor.

Prin modificare accesul este permis numai la câmpurile Document incasare, Comentariu, Data document.

Stergerea nu este permisă. Daca se dorește anularea unei incasări, aceasta se va face cu valorile negative.

Documentele introduse prin videoformatul incasări se regăsesc in rapoartele:

Analiza creanțe

Analiza incasari

Centralizator documete incasare

4.6.4. Clienți

Figura 4.12. – Videoformat pentru actualizarea registrului de clienți

Pentru a putea inregistra datele pentru o factură este necesar ca clientul respectiv să fie în registrul de analitice. Gestionarea codurilor atribuite furnizorilor și clienților se face printr-o aplicație la sediu. Daca clientul nu există in registru se va cere la sediu un cod pentru clientul respectiv.

Cod intern: Este unic in baza de date și nu poate fi modificat. Pe baza acestor coduri se obtine nota contabilă la sfârșitul lunii.

Nume: Este unic in baza de date și nu poate fi modificat. Dacă in cursul anului un client își modifică numele societății și are facturi inregistrate pe numele vechi, se va crea un cod nou pentru numele nou. Se va înștiința serviciul contabilitate de acestă modificare pentru a storna rulajele precedente ale clientului la noul cod analitic.

Cod fiscal: Se poate modifica dar este unic in baza de date. Acest cod apare in jurnal de TVA. Dacă totuși nu dispuneți de această informație, ca soluție temporară, se poate introduce o valoare de forma Rxxxx, unde xxxx=cod intern.

Are scutire de taxa drum: se completează cu valoarea ‘NU’ ; conform legii 118/2001 nu se mai acordă scutiri de taxă drum la livrare, clientul urmând să intocmescă o documentație specială pentru restituirea cotei unice de către Ministerul Transporturilor..

In partea stânga sunt afișate datoriile clientului față de sociatate, in luna curentă și cele provenind din lunile anterioare. Un client care are facturi neachitate Nu poate fi șters din registru.

O lista completă a registrului de clienți se poate obtine la imprimantă prin actionarea butonului Tiparire.

4.6.5. Consulatare mișcări

Acest videoformat este destinat numai pentru vizualizarea mișcărilor care stau la baza documentelor de ieșire. Este de natură informativă și este pus la dispoziție deoarece datele pentru emiterea unei facturi sau aviz se culeg in tabele temporare și vor fi copiate in tabelele de bază după ce s-a raspuns afirmativ la “S-a tiparit corect”.

Figura 4.13. – Videoformat pentru vizualizarea conținutului tabelei mpro.dbf

4.7. Meniul pentru prelucrarea datelor

4.7.1. Inchidere jurnal facturi

Operația se referă la luna anterioară și se execută după ce s-au operat toate incasările pentru luna trecută. Operația este ireversibilă. Are ca efect reportarea facturilor care au sold (cu soldul de la sfirșitul lunii) in luna curentă și constituire astfel a soldului inițial. După execuția inchiderii nu se mai pot opera incasări in contul lunii trecute pentru că acestea ar denatura soldul inregistrat in contbilitate.

4.7.2.Calcul stoc produse

La fel ca inchidere jurnal facturi operația se referă la luna anterioară și se execută după ce s-au operat toate documentele (intrare-iesire) pentru luna trecută. Operația este ireversibilă. Are ca efect obtinerea stocului initial pentru luna curenta.

4.7.3. Generare articole contabile

Se foloseste la sfirsitul lunii curente pentru a obtine notele destinate balantei contabile. Data pentru obtinerea notelor contabile este ultima zi a lunii de lucru. Daca exista nume de clienți sau stații care nu au corespondent in registrul de clienți se refuza intocmirea notei și pe ecran sunt afișate denumirile fara corespondenta.

Observatie: daca in Balanța contabila se intervine cu alte note decât cele generate de aplicație, la rulajul 4113, nu va mai fi concordanta intre solduri și jurnalele de facturi. Reglajele se vor face prin aplicație (anulare facturi, avize, incasare in functie de situație)

4.8. Meniul rapoarte

Prin acest meniu se obtin situații in urma prelucrarii datelor culese. Meniurile care au in dreptul lor o sageata contin un submeniu accesibil prin Enter. Fiecare raport se poate obtine pe ecran, la imprimanta sau intr-un fisier cu extensie .TXT. De asemenea listarea unui raport poate incepe de la o anumita pagina și continua pina la pagina indicata. Daca doriti sa listati numai pagina 2 tastati numarul 2 pentru prima pagina și ultima pagina.

Pentru a stabili unde se listeaza raportul marcati cu “Enter” una din cele 3 posibiltati apoi deplasati cu sageata pe cuvintul “OK” și apasati din nou “Enter”.

Exemplu:

Doriti sa listati Jurnalul de vinzari de la inceput pina la sfirsit pe ecran.

apasati “Enter” pentru Prima pagina care are valoarea implicita 1

apasati “Enter” pentru Ultima pagina care are valoarea implicita 32767

apasati sageata dreapta pentru pozitionare pe Ecran

apasati “Enter”

apasati sageata dreapta

apasati “Enter” pe cuvintul “OK”

Daca ati gresit ceva pina la acest punct deplasati cu sageata dreapta pe cuvintul Cancel apasati “Enter” și apoi reluati operatiile de mai sus.

In cazul ca nu va functioneaza imprimanta și doriti sa listati in alta parte alegeti listare in Fisier și apoi salvati cu Norton pe o discheta fisierele. Listele cu extensie txt se obtin pe calculatorul local in Windows\Temp.

Tabel 4.12. – Rapoarte disponibile în aplicație

Balanța mărfuri depozit(sintetica) cuprinde stoc initial, total intrari. procese verbale de inventar, iesiri, stoc final pentru produsele derulate prin depozite exprimate atit cantitativ cit și valoric. Valoare este la preț de rafinarie iar stocul final se valorifica cu prețul introdus de utilizator. Lista este insotita de un alt raport privind livrarile de benzine in cistrena și butoaie.

Balanța depozit+tranzit(detaliu) cuprinde mișcările in depozit defalcate pe tipuri de document – iesiri avize catre statii, catre sucursale, facturi din depozit, facturi in tranzit, intrari – exprimate cantitativ și valoric la preț de rafinarie. Produsele sunt valorificate la data introdusa de utilizator,.

Stocuri zilnice extrage situația la zi a stocurilor in depozit. Lista conține stocul initial la inceput luna, total intrari și iesiri pina la ziua de referinta și situația in detaliu pe ziua curenta care cuprinde felul documentului kilograme, densitate, litri, destinatia iesirii sau sursa intrarii.

Analiza creanțe sub acest meniu sunt grupate mai multe rapoarte privind creanțele societatii și posibilitatea urmaririi acestora in functie de vechime. Continutul acestor rapoarte se poate extrage in mod selectiv in functie de nivelul de analiza solicitat.

Figura 4.13. – Modalitate de introducerea unui criteriu pentru raportare

Dati click cu mouse-ul in dreptul optiunii alese și apoi click pe OK. Clienți externi=facturi emise catre clienți in afara SNP, Sucursale=avize catre sucursale SNP, Total client=primele doua categorii unite, Client=raport pentru un singur client. Daca se doreste extragerea listei pentru un client anume se alege optiunea Client și apoi din lista clienților (care devine activa numai in acest moment) alegeti clientul pentru care se doreste situația, tastati Enter și apoi click pe OK.

Ecranul urmator solicita sa alegeti perioada de raportare: pentru Total luna se listeza toate facturile, pentru Perioada (se da click cu mouse-ul) introduceti intervalul pentru care doriti listarea.

Jurnal facturi A3 cuprinde o lista a tuturor facturilor emise pina la data listarii, ordonata alfabetic dupa denumirea clientului. Lista cuprinde atit facturile emise in luna curenta cit și cele emise in lunile anterioare care nu s-au incasat. In partea dreapta a raportului sunt tiparite valorile constitutive emise (rafinarie, adaos, etc), iar in partea stinga valorile incasate. Dupa fiecare client se face o totalizare privind valorile emise și incasate din lunile anterioare și luna curenta cit și restul de incasat.

Jurnal facturi A4 este o forma restrinsa a celui de mai sus care cuprinde numai valorile totale emise și incasate.

Rezumat jurnal facturi extrage numai totalul general al facturilor emise și incasate.

Facturi emise pe o zi extrage lista facturilor sau avizelor catre sucursale emise pe o zi aleasa de utilizator.

Sold initial facturi furnizeaza lista facturlor care au avut sold la inceputul lunii curente.

Facturi neincasate cuprinde lista facturilor neincasate la data listarii. Se calculeaza vechimea facturii in zile, in functie de data introdusa de utilizator. Lista poate fi ordonata alfabetic (se raspunde A) sau in functie de vechime (se raspunde V), caz in care la sirsitul raportului exista o recapitulatie pe intervale de vechime intre 30, 45, 60 zile și peste..

Analiza incasari este o situație utila pentru punctaje cu clienții privind valorile emise și incasate pe fiecare factura. Situația se poate obtine pentru un anumit document de incasare sau toate documentele. Utilizatorul este intrebat ce fel de documnt incasare doreste sa listeze. Se apasa succesiv tasta Blank (spatiu) pina la alegerea potrivita. ALL insemna toate tipurile de incasari. Lista este ordonata alfabetic pe nume client.

Jurnal incasari este o lista in detaliu a incasarilor, in care sunt extrase toate elementele care constituie valoarea totala incasata (rafinarie, acciza, etc). Este ordonata alfabetic și are totaluri pe tip document incasare și client.

Centralizator documente incasare este o situație de sinteza a incasarilor cu totaluri pe tip document incasare, incasari din creanțele anterioare și incasari din creanțele lunii curente.

Jurnal vinzari – decont TVA cuprinde toate facturile emise in luna curenta, ordonate pe client și numar factura. Daca factura cuprinde și produse scutite de TVA (nu mai este cazul) acestea sunt evidentiate intr-o coloană separata. Jurnalul cuprinde coloanele: Taxa drum care nu intra in calculul TVA, Valoare totala fara TVA alcatuita din valoare totala-taxa drum-tva, Mărfuri alcatuita din valoare rafinarie, Ambalaje , Alte elemente alcatuita din valoare acciza+adaos, TVA colectat. Este necesara completarea codului fiscal in registrul de clienți deoarece acesta este obligatoriu in jurnalul de vinzari.

Taxe la vinzare cuprinde jurnalele cu acciza și taxa de drum datorate la vinzarea produselor din depozit. Listele cuprind factura, data emiterii, produsul livrat, kilograme, valoare rafinarie, valoare acciza și acciza unitara rezultata din valoare acciza / kilograme și similar pentr taxa drum. Se face total pe fiecare produs. Se poate extrage in varianta detaliu sau rezumat care conține numai totalurlie pe produs. Raportul Anexa 4 este in conformitate cu Normele metodologice privind constituirea și utilizarea Fondului special al drumurilor publice, emise in 6 august 2001. Raportul cuprinde toate livrarile pe baza de factura fiscala pentru benzine și motorine, produse purtatoare de taxa drum, la care se adauga vinzarile din statii cumulate pe produs și perioada de valabilitate a prețului. Este deci necesar ca aplicația pentru rapoarte de gestiune statii sa fie instalata in aceiasi locatie.

Scutiri taxa de drum cuprinde facturile care au avut scutire de taxa de drum la motorina pentru agricultura sau s-a livrat pe baza de cupoane agricole.

Detalii mișcări

Intrari prin Petrotrans cuprinde lista aprovizionarilor prin Petrotrans ordonate pe produs

Intrari prin rafinarii, similar cu prima

Intrari prin transfer cuprinde uleiurile transferate de la Rampa de imbidonare

Iesiri produse pe clienți este un jurnal util serviciului comercial in care sumt listate iesirile cu factura și aviz catre sucursale, kilograme, numar document. Se face total pe produs și client. Se poate extrage pe toata luna sau pe o zi.

Avize transfer catre statii PECO cuprinde lista avizelor catre statii sau depozite in detaliu. Se listeaza in felul urmator: pe ecran apare o lista a produselor care s-au transferat in luna curenta; se pozitioneaza pe produsul respectiv și se apasa tasta Esc; daca in cursul lunii au exista modificari de preț la produsul respectiv, programul extrage cite o lista pentru fiecare perioda de valabilitate a prețului ; se repeta procedura pina cind se listeaza toate produsele din lista afișata.

Lista documente primare este un raport de control util pentru regasirea unui documet in baza de date. Se listeaza pentru toate documentele sau pentru un document anume caz in care se selecteaza documentul respectiv din lista afișata pe ecran.

Livrari in regim franciza conține 2 rapoarte: vinzari și incasari in care se pot urmari creanțele și incasarile pe tip de produs și factura vindute prin contract de franciza.

Livrari pe ministere este o recapitulatie a produselor livrate pe baza de factura, insumate pe codul ministerului care se introduce la listarea facturii.

Fisier teletransmisie listeaza tabela Disbanc din aplicația Casa-Banca, care se transmite la depozite in vederea operarii incasarilor care se fac prin contul sediului. Listarea se face pe fiecare zi.

Nota contabila se listeaza de catre fiecare depozit și se trimite la sediu, la serviciul contabilitate.

4.9. Meniul Utilitare

Tabel 4.12. – Instrumente utile pentru configurarea aplicației

Stocuri mișcări este un videoformat de culegere a stocurilor in depozit folosit o singura data la instalarea aplicației.

Setare imprimanta permite redirectarea listei catre imprimanta locala sau o imprimanta de retea. In mod implicit listele se tiparesc pe imprimanta legata la calculatorul pe care se lucreaza, deci nu este nevoie de o setare pentru alegerea portului de tiparire. In cazul in care calculatorul este legat in retea și exista mai multe imprimante disponibile, numele de sharing al acestora va fi completat in tabela Clienți.dbf pe coloanele Lpt1, Lpt2, Lpt3 conform indicatiilor administratorului de sistem. Selectia imprimantei de retea se face cu ajutorul tastei Blank astfel incit sa apara optiunea IMPO RETERA. Dupa ce s-a listat un raport pe o imprimanta de retea și doriti sa listati pe imprimanta asignata la portul local, se executa din nou Setare imprimanta și se alege IMPO LOCALA. Setarile pentru dimensiunea caracterelor sunt valabile numai pentru imprimantele legate la portul local de tip Panasonic KX-P1695, pentru alte tipuri de imprimanta se va face setarea dimensiunii caracterelor (pitch control) din panoul de comanda al imprimantei.

Listare dispozitii tipareste dispozitiile de livrare care se vor completa la serviciul comercial pentru fiecare client. Aceasta este documentul primar pe baza careia se intocmeste factura sau avizul. Daca listarea se face pe o imprimanta de retea nu uitati sa faceti Setare imprimanta inainte de listare.

Info permite modificarea datelor despre societatea emitenta care apar in antetul facturii.

Setare banca și cont se foloseste in mod similar pentru modificarea celor doua elemente. Este util daca societate lucreaza cu cont la o banca comerciala și un cont la trezorerie. Nu uitati sa schimbati aceste conturi daca emiteti facturi alternativ pentru operatiuni prin banca și trezorerie.

Parametrii initiali se foloseste pentru modificarea numerelor de aviz, factura care urmeaza la tiparire. Nu folositi aceasta optiune decit atunci cind schimbati topul de documente preimprimate. Se introduce totdeauna numarul ultimului document tiparit.

Anulare facturi se foloseste numai pentru facturi și avize SNP emise in luna curenta. Pregatiti un formular de factura, aviz in imprimanta inainte de executie. Pe acesta se va tipari factura de anulare. Folosind aceasta metoda de anulare, cele doua documente vor avea completate partea de valori incasate iar coloană stare_fac va primi valoare ‘false’. Astfel atunci cind se fac interogari pe bazele de date cu Excel, Access, etc aceste inregistrari pot fi excluse. Anularea avizelor catre statii se face prin videoformatul de culegere avize, prin inregistrarea cantitati in rosu (minus).

Listare facturi din arhiva va da posibilitatea de a lista o factura veche la solicitarea clientului. Listarea se face pe hirtie alba iar pe antet factura poarta specificatia “Nu reprezintă document fiscal’.

Duplicat Nota de debitare se foloseste cind doriti sa mai tipariti o nota de debitare, care insoteste avizele SNP, din luna curenta.

Arhivare fisiere se executa dupa ce s-au listat toate rapoartele aferente lunii respective. Daca calculatorul pe care ruleaza aplicația are performante slabe nu lasati datele nearhivate pentru ca acest lucru scade viteza de executie. De asemenea daca folositi transmisia datelor prin fax modem, datele nearhivate ingreuneaza considerabil durata transmisiei. Prin ahivare datele lunii respective sunt copiate in subdirector Arhiva, in tabelele cu acelasi nume. Se arhiveaza tabelele Apro, Fpro, Ipro, Mpro.

CONCLUZII

Aplicația prezentată în această lucrare face parte dintr-un sistem informațional, proiectat pentru conducerea și analiza activității sucursalelor PECO, care cuprinde: Gestiunea bonurilor valorice pentru carburanți auto și evidența vinzării lor (Bonval) ; Evidența avansurilor încasate de la clienți (Avansc) ; Evidența desfacerii prin stații de livrare (Rapges) ; Programarea aprovizionării stațiilor de livrare (Procom). Toate aceste aplicații rulează pe calculatorul gazdă partajând accesul la baze de date comune, fiind astfel asigurată o unicitate a dicționarelor de date și un nivel de redundanță scăzut.

Aplicațiile parte integrantă a acestui sistem informațional au fost dezvoltate în SGBD FoxPro, varianta sub sistem de operare MSDOS, această orientare fiind impusă de costurile scăzute ale echipamentului hard necesar exploatării în punctele de lucru (depozite și stații).

Pentru a spori ușurința în lucrul cu aplicația s-a căutat realizarea unui interfețe cu utilizatorul cât mai prietenoasă și explicită. Aplicația este instalată pe calculatorul gazdă împreună cu fișierul de ajutor atașat care poate fi în format Word sau HTML. Fiecare câmp al unui videoformat are o afișată o scurtă descriere în linia de mesaje a ecranului. De asemenea avertismentele la întălnirea unor erori de culegere indică ce greșelă s-a făcut și cum poate fi corectată. Jurnalele pot fi afișate pe ecran sporind astfel viteza de acces la informații fiind în acealși timp un factor de economie pentru necesarul de hârtie.

În scopul unei informării rapide a factorilor de decizie și a utilizatorilor aplicația are incluse faciltăți pentru extragerea obligațiilor sucursalei față de buget privind taxele pe carburanți. În acest sens se asigură interogarea bazelor de date proprii și a celor privind desfacerea prin stații pentru a stabili cuantumul datorat de sucursală pentru acciză și taxa drum, în formatul impus de normele în vigoare. Datoriile clienților față de sucursală pot fi ușor vizualizate prin simpla poziționare pe numele clientului prin videoformatul Clienți.

Exploatarea aplicației, a dezvăluit în timp puncte slabe în prevenirea erorilor de culegere a datelor. Din aceste motive, programele care asigură incărcarea datelor au fost suplimentate cu validări care să asigure corectitudinea și securitatea acestora. Pentru a asigura corectitudinea datelor culese nu sunt permise:

Emiterea de facturi după inchiderea jurnalului de facturi

Efectuarea de încasări după inchiderea jurnalului de facturi

Modificarea datelor aferente unui document emis

Data de valorificare a unui produs diferită de luna de calcul

Denumirea produsului sau a partenerului de afaceri diferită de cele aflate în dicționare

Valoarea incasată mai mare decât soldul facturii

Pentru a asigura corectitudinea modului de valorificare a produselor vândute, nomenclatorul de prețuri se gestionează la sediul sucursalei, printr-o aplicație Oracle care conține istoricul prețurilor începând cu 1994. La fiecare schimbare de preț aplicația exportă modificările în format dbf pentru a fi transmise pe linie telefonică la punctele de lucru.

Securitatea datelor este asigurată printr-un nivel de parole de acces în aplicație care se transmit în plic sigilat utilizatorilor din fiecare punct de lucru. Pentru a preveni accesul persoanelor neautorizate, pe calculatoarele unde se află în exploatare aplicația nu este instalat mediul de dezvoltare FoxPro.

Datele colectate din punctele de lucru se arhiveză periodic în serverul Oracle care pune la dispoziție o securitate sporită în ce privește accesul neautorizat cât și faciltățile de interogare pe criterii multiple pentru obținerea de situații de sinteză privind performanțele economice ale sucursalei. Interogările pot fi realizate cu unelte native Oracle sau prin Open DataBase Connectivity cu orice alt SGBD, în funcție de specializarea și pregătirea beneficiarilor de informații.

Anexa A – Cod sursă programe

A.1. “Facturi.spr” – videoformat pentru emitere facturi

18 PARAMETERS document

19

27 #REGION 1

28

29 #REGION 0

30 REGIONAL m.currarea, m.talkstat, m.compstat

31

32 ┌─IF SET("TALK") = "ON"

33 │ SET TALK OFF

34 │ m.talkstat = "ON"

35 ├─ELSE

36 │ m.talkstat = "OFF"

37 └─ENDIF

38 m.compstat = SET("COMPATIBLE")

39 SET COMPATIBLE FOXPLUS

40

48 ┌─IF NOT WEXIST("wfact") ;

49 │ OR UPPER(WTITLE("WFACT")) == "WFACT.PJX" ;

50 │ OR UPPER(WTITLE("WFACT")) == "WFACT.SCX" ;

51 │ OR UPPER(WTITLE("WFACT")) == "WFACT.MNX" ;

52 │ OR UPPER(WTITLE("WFACT")) == "WFACT.PRG" ;

53 │ OR UPPER(WTITLE("WFACT")) == "WFACT.FRX" ;

54 │ OR UPPER(WTITLE("WFACT")) == "WFACT.QPR"

55 │ DEFINE WINDOW wfact ;

56 │ FROM INT((SROW()-20)/2),INT((SCOL()-70)/2) ;

57 │ TO INT((SROW()-20)/2)+19,INT((SCOL()-70)/2)+69 ;

58 │ FLOAT ;

59 │ NOCLOSE ;

60 │ SHADOW ;

61 │ MINIMIZE ;

62 │ COLOR SCHEME 5

63 └─ENDIF

64

73 #REGION 1

74

75 #DEFINE C_DBFEMPTY 'Baza de date este vida, Adaugati ?'

76 #DEFINE C_EDITS 'Terminati operatiunea de editare'

77 #DEFINE C_TOPFILE 'Inceput fisier'

78 #DEFINE C_ENDFILE 'Sfirsit fisier'

79 #DEFINE C_BRTITLE 'Cauta articol'

80 #DEFINE C_NOLOCK 'Articolul nu poate fi blocat, Incercati mai tirziu'

81 #DEFINE C_ECANCEL 'Editare anulata'

82 #DEFINE C_DELREC 'Stergeti acest articol ?'

83 #DEFINE C_NODELE 'Nu este permisa stergerea !'

84 #DEFINE C_NOEDIT 'Nu este permisa modificarea !'

85 #DEFINE C_NOFEAT 'Feature not available yet.'

86 #DEFINE C_NOWIZ 'Wizard application is not available.'

87 #DEFINE C_MAKEREPO 'Creating report with Report Wizard.'

88 #DEFINE C_NOREPO 'Could not create report.'

89 #DEFINE C_DELNOTE 'Se sterg articolele…'

90 #DEFINE C_READONLY 'Fisierul este read-only. Nu poate fi editat'

91 #DEFINE C_NOTABLE 'Fisierul nu este dechis'

92 #DEFINE C_BADEXPR 'Invalid expression.'

93 #DEFINE C_LOCWIZ 'Locate WIZARD.APP:'

94 #DEFINE C_MULTITABLE 'You have multiple related tables. Adding records in not allowed.'

95

96 HIDE POPUP deppop

97 HIDE POPUP actpop

98 MOVE WINDOW 'wfact' CENTER

99 PRIVATE isediting,isadding,wztblarr

100 PRIVATE wzolddelete,wzolderror,wzoldesc,wzoldexcl

101 PRIVATE wzalias, tempcurs,wzlastrec

102 PRIVATE isreadonly,find_drop,is2table

103

104 m.wzolddelete=SET('DELETE')

105 m.wzolderror=ON('error')

106 m.wzoldexcl=SET('EXCLUSIV')

107 wzoldesc=ON('KEY','ESCAPE')

108 USE mpro IN 0 ALIAS mpro

109 USE registru IN 0 ALIAS registru

110 USE apro IN 0 ALIAS apro

111 USE NOMEN IN 0 ALIAS NOMEN

112 USE preț IN 0 ALIAS preț

113 USE tmppro IN 0 ALIAS tmppro EXCLUSIV

114 SELECT preț

115 SET ORDER TO prețind

116 SELECT registru

117 SET ORDER TO TAG partener

118 SELECT apro

119 SET ORDER TO TAG nr_fac

120 SELECT mpro

121 ┌─IF RECCOUNT()#0

122 │ ╒═DO CASE

123 │ ╞═CASE m.luprel < 12

124 │ │ m.lunaurm = m.luprel + 1

125 │ ╞═CASE m.luprel = 12

126 │ │ m.lunaurm = 1

127 │ ╘═ENDCASE

128 │ LOCATE FOR luna = m.lunaurm

129 │ ┌─IF FOUND()

130 │ │ SET PROCEDURE TO biblio

131 │ │ DO alarm WITH 'Nu se mai pot culege date pentru luna '+STR(m.luprel,2)+' !'

132 │ │ SET DELETED &wzolddelete

133 │ │ SET EXCLUSIV &wzoldexcl

134 │ │ ON ERROR &wzolderror

135 │ │ ON KEY LABEL ESCAPE &wzoldesc

136 │ │ ╒═DO CASE

137 │ │ ╞═CASE _DOS AND SET('DISPLAY')='VGA25'

138 │ │ │ @24,0 CLEAR TO 24,79

139 │ │ ╞═CASE _DOS AND SET('DISPLAY')='VGA50'

140 │ │ │ @49,0 CLEAR TO 49,79

141 │ │ ╞═CASE _DOS

142 │ │ │ @24,0 CLEAR TO 24,79

143 │ │ ╘═ENDCASE

144 │ │ CLOSE DATA

145 │ │ SET PROCEDURE TO biblio

146 │ │ SET MESSAGE TO 0

147 │ │ SHOW POPUP actpop

148 │ │ DO ecran WITH 'Facturi Produse Depozit'

149 <═════════RETURN

150 │ └─ENDIF

151 └─ENDIF

152 SELECT tmppro

153 PACK

154

155 m.wztblarr= ''

156 m.wzalias=SELECT()

157 m.isediting=.F.

158 m.isadding=.F.

159 m.is2table = .F.

160 m.tempcurs=SYS(2015) &&used if General field

161 ON ERROR DO wizerrorhandler

162 ON KEY LABEL ESCAPE

163 m.find_drop = IIF(_DOS,0,2)

164

165 m.isreadonly=IIF(isread(),.T.,.F.)

166 ┌─IF m.isreadonly

167 │ WAIT WINDOW C_READONLY TIMEOUT 1

168 └─ENDIF

169

170 GOTO BOTTOM

171 SCATTER MEMVAR MEMO

172 m.luna=m.luprel

173 m.anul=m.anprel

174 m.tip_doc='FACT'

175 ╒═DO CASE

176 ╞═CASE document='NORMAL'

177 │ m.cupon=.F.

178 │ m.franciza=.F.

179 ╞═CASE document='FRANCIZA'

180 │ m.cupon=.F.

181 │ m.franciza=.T.

182 ╘═ENDCASE

183 m.stare_fac=.T.

184 m.emitent=m.emitator

185 m.ind_int = 'E'

186 m.activit = 'D'

187 m.snp=.F.

188 PUBLIC m.dup_ben,m.dup_den_s,m.com1,m.biser,m.binr,m.com2,m.com3,m.nrf

189 PUBLIC m.ok_list,m.den_aux,m.discount,m.co_client,m.termen,m.fel_form

190 m.dup_ben=SPACE(30)

191 m.den_aux=SPACE(20)

192 m.dup_den_s=SPACE(15)

193 m.data_f=DATE()

194 m.co_client=' '

195 m.cod_calc=0

204

205 #REGION 1

206 ┌─IF WVISIBLE("wfact")

207 │ ACTIVATE WINDOW wfact SAME

208 ├─ELSE

209 │ ACTIVATE WINDOW wfact NOSHOW

210 └─ENDIF

211 @ 3,31 SAY "Denumire produs:" ;

212 SIZE 1,16, 0

213 @ 7,2 SAY "Client:" ;

214 SIZE 1,7, 0

215 @ 3,5 SAY "Numar document:" ;

216 SIZE 1,15, 0

217 @ 5,2 SAY "Data valorificare:" ;

218 SIZE 1,18, 0

219 @ 9,2 SAY "Litri livrati:" ;

220 SIZE 1,14, 0

221 @ 9,34 SAY "Densitate:" ;

222 SIZE 1,10, 0

223 @ 5,32 SAY "Preț rafinarie:" ;

224 SIZE 1,15, 0

225 @ 11,24 SAY "Butoaie/Cisterna:" ;

226 SIZE 1,17, 0

227 @ 13,1 SAY "Valoarea totala factura:" ;

228 SIZE 1,24, 0

229 @ 13,41 SAY "Din care TVA:" ;

230 SIZE 1,13, 0

231 @ 15,0 TO 15,67

232 @ 1,0 TO 1,67

233 @ 9,30 SAY "x" ;

234 SIZE 1,1, 0

235 @ 9,50 SAY "=" ;

236 SIZE 1,1, 0

237 @ 9,63 SAY "Kg." ;

238 SIZE 1,3, 0

239 @ 7,49 SAY "Bucati:" ;

240 SIZE 1,7, 0

241 @ 3,21 GET m.nr_doc ;

242 SIZE 1,7 ;

243 DEFAULT 0 ;

244 PICTURE "@K 9999999" ;

245 WHEN isediting ;

246 VALID m.nr_doc<>0 ;

247 MESSAGE 'Numar dispozitie livrare' ;

248 ERROR 'Nu poate fi zero !'

249 @ 3,48 GET m.den_s ;

250 SIZE 1,15 ;

251 DEFAULT " " ;

252 PICTURE "@!K XXXXXXXXXXXXXXX" ;

253 WHEN isediting ;

254 VALID _0oj0w7bha()

255 @ 5,21 GET m.data_rec ;

256 SIZE 1,10 ;

257 DEFAULT { / / } ;

258 PICTURE "@K" ;

259 WHEN isediting ;

260 VALID _0oj0w7bhn() ;

261 MESSAGE 'Se calculeaza valoarea la data introdusa'

262 @ 7,10 GET m.den_ben ;

263 SIZE 1,30 ;

264 DEFAULT " " ;

265 PICTURE "@!K XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ;

266 WHEN isediting ;

267 VALID _0oj0w7bhx()

268 @ 7,57 GET m.nrbuc ;

269 SIZE 1,5 ;

270 DEFAULT 0 ;

271 PICTURE "@K 99999" ;

272 WHEN isediting AND IIF(caut_vrac(m.den_s,m.data_rec)='V',.F.,.T.) ;

273 VALID _0oj0w7bi4() ;

274 MESSAGE 'Numar bidoane,butelii pentru produsele ambalate.'

275 @ 9,17 GET m.litri ;

276 SIZE 1,10 ;

277 DEFAULT 0 ;

278 PICTURE "@K 99999999.9" ;

279 WHEN isediting ;

280 VALID m.litri<>0 ;

281 MESSAGE 'Se introduc litri și pentru produsele imbuteliate.' ;

282 ERROR 'Nu poate fi zero !'

283 @ 9,44 GET m.densit ;

284 SIZE 1,5 ;

285 DEFAULT 0 ;

286 PICTURE "@K 9.999" ;

287 WHEN isediting

288 @ 9,52 SAY m.cant ;

289 SIZE 1,10 ;

290 PICTURE "99999999.9"

291 @ 11,42 GET m.butcis ;

292 SIZE 1,1 ;

293 DEFAULT " " ;

294 PICTURE "@M B,C" ;

295 WHEN isediting AND INLIST(preț.fam,'02','03')

296 @ 5,48 GET m.p_rafrec ;

297 SIZE 1,9 ;

298 DEFAULT 0 ;

299 PICTURE "@K 999999999" ;

300 WHEN isediting AND m.den_s='AMBALAJ'

301 @ 16,1 GET m.next_btn ;

302 PICTURE "@*HN \<+" ;

303 SIZE 1,5,1 ;

304 DEFAULT 1 ;

305 VALID btn_val('NEXT') ;

306 MESSAGE 'Afiseaza urmatorul articol'

307 @ 16,9 GET m.prev_btn ;

308 PICTURE "@*HN \<-" ;

309 SIZE 1,5,1 ;

310 DEFAULT 1 ;

311 VALID btn_val('PREV') ;

312 MESSAGE 'Afiseaza articolul anterior'

313 @ 16,17 GET m.loc_btn ;

314 PICTURE "@*HN \<Browse" ;

315 SIZE 1,8,1 ;

316 DEFAULT 1 ;

317 VALID btn_val('LOCATE') ;

318 MESSAGE 'Continut fisier in forma tabelara'

319 @ 16,27 GET m.add_btn ;

320 PICTURE "@*HN \<Adaug" ;

321 SIZE 1,7,1 ;

322 DEFAULT 1 ;

323 VALID btn_val('ADD') ;

324 MESSAGE 'Adauga un articol nou'

325 @ 16,37 GET m.edit_btn ;

326 PICTURE "@*HN \<Modific" ;

327 SIZE 1,9,1 ;

328 DEFAULT 1 ;

329 VALID btn_val('EDIT') ;

330 MESSAGE 'Modifica articolul afisat'

331 @ 16,48 GET m.del_btn ;

332 PICTURE "@*HN \<Sterg" ;

333 SIZE 1,9,1 ;

334 DEFAULT 1 ;

335 VALID btn_val('DELETE') ;

336 MESSAGE 'Sterge articolul afisat'

337 @ 16,60 GET m.exit_btn ;

338 PICTURE "@*HN \<Exit" ;

339 SIZE 1,6,1 ;

340 DEFAULT 1 ;

341 VALID btn_val('EXIT') ;

342 MESSAGE 'Terminare culegere'

343 @ 17,14 GET m.top_btn ;

344 PICTURE "@*HN \<Primul" ;

345 SIZE 1,8,1 ;

346 DEFAULT 1 ;

347 VALID btn_val('TOP') ;

348 MESSAGE 'Afiseaza primul articol din fisier'

349 @ 17,27 GET m.end_btn ;

350 PICTURE "@*HN \<Ultimul" ;

351 SIZE 1,9,1 ;

352 DEFAULT 1 ;

353 VALID btn_val('END') ;

354 MESSAGE 'Afiseaza ultimul articol din fisier'

355 @ 17,37 GET m.prt_btn ;

356 PICTURE "@*HN \<Tiparire" ;

357 SIZE 1,10,1 ;

358 DEFAULT 1 ;

359 VALID btn_val('PRINT') ;

360 MESSAGE 'Print report.'

361

362 ┌─IF NOT WVISIBLE("wfact")

363 │ ACTIVATE WINDOW wfact

364 └─ENDIF

365

374 READ CYCLE ;

375 ACTIVATE readact() ;

376 DEACTIVATE readdeac() ;

377 SHOW _0oj0w7bit() ;

378 NOLOCK

379

380 RELEASE WINDOW wfact

381

382 #REGION 0

383 ┌─IF m.talkstat = "ON"

384 │ SET TALK ON

385 └─ENDIF

386 ┌─IF m.compstat = "ON"

387 │ SET COMPATIBLE ON

388 └─ENDIF

389

398 #REGION 1

399 SET DELETED &wzolddelete

400 SET EXCLUSIV &wzoldexcl

401 ON ERROR &wzolderror

402 ON KEY LABEL ESCAPE &wzoldesc

403 ╒═DO CASE

404 ╞═CASE _DOS AND SET('DISPLAY')='VGA25'

405 │ @24,0 CLEAR TO 24,79

406 ╞═CASE _DOS AND SET('DISPLAY')='VGA50'

407 │ @49,0 CLEAR TO 49,79

408 ╞═CASE _DOS

409 │ @24,0 CLEAR TO 24,79

410 ╘═ENDCASE

411 CLOSE DATA

412 SET PROCEDURE TO biblio

413 SET MESSAGE TO 0

414 SHOW POPUP actpop

415 DO ecran WITH 'Facturi Produse Depozit'

416

417 ****Procedures****

418

427 #REGION 1

428 PROCEDURE readdeac

429 ┌─IF isediting

430 │ ACTIVATE WINDOW 'wfact'

431 │ WAIT WINDOW C_EDITS NOWAIT

432 └─ENDIF

433 ┌─IF !WVISIBLE(WOUTPUT())

434 │ CLEAR READ

435 <══════RETURN .T.

436 └─ENDIF

437 RETURN .F.

438

439 PROCEDURE readact

440 ┌─IF !isediting

441 │ SELECT (m.wzalias)

442 │ SHOW GETS

443 └─ENDIF

444 DO REFRESH WITH ' '

445 RETURN

446

447 PROCEDURE wizerrorhandler

448 WAIT WINDOW MESSAGE()

449 RETURN

450

451 PROCEDURE btn_val

452 PARAMETER m.btnname

453 ╒═DO CASE

454 ╞═CASE m.btnname='TOP'

455 │ GO TOP

456 │ WAIT WINDOW C_TOPFILE NOWAIT

457 │ _CUROBJ=OBJNUM(top_btn)

458 ╞═CASE m.btnname='PREV'

459 │ ┌─IF !BOF()

460 │ │ SKIP -1

461 │ └─ENDIF

462 │ ┌─IF BOF()

463 │ │ WAIT WINDOW C_TOPFILE NOWAIT

464 │ │ GO TOP

465 │ └─ENDIF

466 │ _CUROBJ=OBJNUM(prev_btn)

467 ╞═CASE m.btnname='NEXT'

468 │ ┌─IF !EOF()

469 │ │ SKIP 1

470 │ └─ENDIF

471 │ ┌─IF EOF()

472 │ │ WAIT WINDOW C_ENDFILE NOWAIT

473 │ │ GO BOTTOM

474 │ └─ENDIF

475 │ _CUROBJ=OBJNUM(next_btn)

476 ╞═CASE m.btnname='END'

477 │ GO BOTTOM

478 │ WAIT WINDOW C_ENDFILE NOWAIT

479 │ _CUROBJ=OBJNUM(end_btn)

480 ╞═CASE m.btnname='LOCATE'

481 │ DO loc_dlog

482 │ _CUROBJ=OBJNUM(loc_btn)

483 ╞═CASE m.btnname='ADD' AND !isediting &&add record

484 │ isediting=.T.

485 │ isadding=.T.

486 │ ┌─IF RECCOUNT() = 10

487 │ │ SET PROCEDURE TO biblio

488 │ │ DO alarm WITH 'Rindurile rezervate pentru factura curenta s-au epuizat; Listati!'

489 │ │ isediting=.F.

490 │ │ isadding=.F.

491 <═════════RETURN

492 │ └─ENDIF

493 │ =edithand('ADD')

494 │ _CUROBJ=1

495 │ DO REFRESH WITH 'ADD'

496 │ SHOW GETS

497 <══════RETURN

498 ╞═CASE m.btnname='EDIT' AND !isediting &&edit record

499 │ ┌─IF EOF() OR BOF()

500 │ │ WAIT WINDOW C_ENDFILE NOWAIT

501 <═════════RETURN

502 │ └─ENDIF

503 │ ┌─IF !EMPTY(m.nr_fac)

504 │ │ WAIT WINDOW C_NOEDIT

505 <═════════RETURN

506 │ └─ENDIF

507 │ ┌─IF RLOCK()

508 │ │ isediting=.T.

509 │ │ _CUROBJ=1

510 │ │ DO REFRESH WITH 'EDI'

511 <═════════RETURN

512 │ ├─ELSE

513 │ │ WAIT WINDOW C_NOLOCK

514 │ └─ENDIF

515 ╞═CASE m.btnname='EDIT' AND isediting &&save record

516 │ ┌─IF isadding

517 │ │ =edithand('SAVE')

518 │ │ ori_but='ADD'

519 │ ├─ELSE

520 │ │ SET PROCEDURE TO biblio

521 │ │ DO cit_preț WITH m.den_s,m.data_rec

522 │ │ ┌─IF m.den_s = "AMBALAJ"

523 │ │ │ m.cant = m.litri

524 │ │ │ m.cod_pro = 999999

525 │ │ │ m.fam = "00"

526 │ │ │ m.gest = 0

527 │ │ ├─ELSE

528 │ │ │ m.p_litr = preț.p_litr

529 │ │ │ m.cod_pro = preț.cod_pro

530 │ │ │ m.fam = preț.fam

531 │ │ │ ┌─IF INLIST(m.fam,'01','09')

532 │ │ │ │ m.cant = m.litri * m.densit

533 │ │ │ ├─ELSE

534 │ │ │ │ m.cant = ROUND(m.litri * m.densit,0)

535 │ │ │ └─ENDIF

536 │ │ │ m.p_rafrec = preț.p_raf

537 │ │ └─ENDIF

538 │ │ DO ini_norm

539 │ │ DO c_norm

540 │ │ GATHER MEMVAR MEMO

541 │ │ ori_but='EDI'

542 │ └─ENDIF

543 │ UNLOCK

544 │ isediting=.F.

545 │ isadding=.F.

546 │ DO REFRESH WITH ori_but

547 ╞═CASE m.btnname='DELETE' AND isediting &&cancel record

548 │ ┌─IF isadding

549 │ │ =edithand('CANCEL')

550 │ │ ori_but='ADD'

551 │ ├─ELSE

552 │ │ ori_but='EDI'

553 │ └─ENDIF

554 │ isediting=.F.

555 │ isadding=.F.

556 │ UNLOCK

557 │ WAIT WINDOW C_ECANCEL NOWAIT

558 │ DO REFRESH WITH ori_but

559 ╞═CASE m.btnname='DELETE'

560 │ ┌─IF EOF() OR BOF()

561 │ │ WAIT WINDOW C_ENDFILE NOWAIT

562 <═════════RETURN

563 │ └─ENDIF

564 │ ┌─IF !EMPTY(m.nr_fac)

565 │ │ WAIT WINDOW C_NODELE

566 <═════════RETURN

567 │ └─ENDIF

568 │ ┌─IF yesno(C_DELREC)

569 │ │ DELETE

570 │ │ PACK

571 │ │ ┌─IF !EOF() AND DELETED()

572 │ │ │ SKIP 1

573 │ │ └─ENDIF

574 │ │ ┌─IF EOF()

575 │ │ │ WAIT WINDOW C_ENDFILE NOWAIT

576 │ │ │ GO BOTTOM

577 │ │ └─ENDIF

578 │ └─ENDIF

579 │ _CUROBJ=OBJNUM(del_btn)

580 ╞═CASE m.btnname='PRINT'

581 │ DO prindif

582 <══════RETURN

583 ╞═CASE m.btnname='EXIT'

584 │ m.bailout=.T. &&this is needed if used with FoxApp

585 │ CLEAR READ

586 <══════RETURN

587 ╘═ENDCASE

588 SCATTER MEMVAR MEMO

589 m.anul=m.anprel

590 m.luna=m.luprel

591 m.emitent=m.emitator

592 m.tip_doc='FACT'

593 ╒═DO CASE

594 ╞═CASE document='NORMAL'

595 │ m.cupon=.F.

596 │ m.franciza=.F.

597 ╞═CASE document='FRANCIZA'

598 │ m.cupon=.T.

599 │ m.franciza=.F.

600 ╘═ENDCASE

601 m.ind_int = 'E'

602 m.activit = 'D'

603 m.snp=.F.

604 m.stare_fac=.T.

605 SHOW GETS

606 RETURN

607

608 PROCEDURE REFRESH

609 PARAMETERS buton

610 ╒═DO CASE

611 ╞═CASE m.isreadonly AND RECCOUNT()=0

612 │ SHOW GETS DISABLE

613 │ SHOW GET exit_btn ENABLE

614 ╞═CASE m.isreadonly

615 │ SHOW GET add_btn DISABLE

616 │ SHOW GET del_btn DISABLE

617 │ SHOW GET edit_btn DISABLE

618 ╞═CASE m.isediting

619 │ SHOW GET find_drop DISABLE

620 │ SHOW GET top_btn DISABLE

621 │ SHOW GET prev_btn DISABLE

622 │ SHOW GET loc_btn DISABLE

623 │ SHOW GET next_btn DISABLE

624 │ SHOW GET end_btn DISABLE

625 │ SHOW GET add_btn DISABLE

626 │ SHOW GET prt_btn DISABLE

627 │ SHOW GET exit_btn DISABLE

628 │ SHOW GET edit_btn,1 PROMPT "Sal\<vare"

629 │ SHOW GET del_btn,1 PROMPT "An\<ulare "

630 │ ON KEY LABEL ESCAPE DO btn_val WITH 'DELETE'

631 <══════RETURN

632 ╞═OTHERWISE

633 │ SHOW GET del_btn,1 PROMPT "\<Sterg"

634 │ SHOW GET edit_btn,1 PROMPT "\<Modific"

635 │ SHOW GETS ENABLE

636 ╘═ENDCASE

637 ┌─IF m.is2table

638 │ SHOW GET add_btn DISABLE

639 └─ENDIF

640 ON KEY LABEL ESCAPE

641 ╒═DO CASE

642 ╞═CASE buton='ADD'

643 │ _CUROBJ=OBJNUM(add_btn)

644 ╞═CASE buton='EDI'

645 │ _CUROBJ=OBJNUM(edit_btn)

646 ╘═ENDCASE

647 RETURN

648

649 PROCEDURE edithand

650 PARAMETER m.paction

652 ╒═DO CASE

653 ╞═CASE m.paction = 'ADD'

654 │ SCATTER MEMVAR MEMO BLANK

655 │ m.anul=m.anprel

656 │ m.luna=m.luprel

657 │ m.emitent=m.emitator

658 │ m.tip_doc='FACT'

659 │ m.data_rec=DATE()

660 │ ╒═DO CASE

661 │ ╞═CASE document='NORMAL'

662 │ │ m.cupon=.F.

663 │ │ m.franciza=.F.

664 │ ╞═CASE document='FRANCIZA'

665 │ │ m.cupon=.T.

666 │ │ m.franciza=.F.

667 │ ╘═ENDCASE

668 │ m.ind_int = 'E'

669 │ m.activit = 'D'

670 │ m.snp=.F.

671 │ m.stare_fac=.T.

672 ╞═CASE m.paction = 'SAVE'

673 │ SET PROCEDURE TO biblio

674 │ DO cit_preț WITH m.den_s,m.data_rec

675 │ ┌─IF m.den_s = "AMBALAJ"

676 │ │ m.cant = m.litri

677 │ │ m.cod_pro = 999999

678 │ │ m.fam = "00"

679 │ │ m.gest = 0

680 │ ├─ELSE

681 │ │ m.p_litr = preț.p_litr

682 │ │ m.cod_pro = preț.cod_pro

683 │ │ m.fam = preț.fam

684 │ │ ┌─IF INLIST(m.fam,'01','09')

685 │ │ │ m.cant = m.litri * m.densit

686 │ │ ├─ELSE

687 │ │ │ m.cant = ROUND(m.litri * m.densit,0)

688 │ │ └─ENDIF

689 │ │ m.p_rafrec = preț.p_raf

690 │ └─ENDIF

691 │ DO ini_norm

692 │ DO c_norm

693 │ INSERT INTO (ALIAS()) FROM MEMVAR

694 ╞═CASE m.paction = 'CANCEL'

695 │ * nothing here

696 ╘═ENDCASE

697 RETURN

698

699 PROCEDURE prindif

700 SELECT tmppro

701 USE

702 USE tmppro IN 0 ALIAS tmppro EXCLUSIV

703 SELECT tmppro

704 PACK

705 ┌─IF RECCOUNT()#0

706 │ RESTORE FROM nrfpro ADDITIVE

707 │ DO anexaf.spr WITH document

708 │ DO formular.spr

709 │ SET PROCEDURE TO biblio

710 │ ┌─IF yesno('Imprimanta este pregatita pentru listare ?')

711 │ │ ┌─IF .NOT. ready2pr()

712 <════════════RETURN

713 │ │ └─ENDIF

714 │ │ SELECT tmppro

715 │ │ GO TOP

716 │ │ m.den_ben=den_ben

717 │ │ SET RELATION TO den_ben INTO registru

718 │ │ SET RELATION TO den_s INTO preț ADDITIVE

719 │ │ ┌─IF m.fel_form = 1

720 │ │ │ m.mem_fac=m.mem_fac+1

721 │ │ │ m.nrf=m.mem_fac

722 │ │ ├─ELSE

723 │ │ │ m.mem_facul=m.mem_facul+1

724 │ │ │ m.nrf=m.mem_facul

725 │ │ └─ENDIF

726 │ │ SAVE TO nrfpro ALL LIKE mem_*

727 │ │ ┌─IF m.fel_form = 1

728 │ │ │ DO lis_fac WITH document

729 │ │ ├─ELSE

730 │ │ │ DO lis_facu WITH document

731 │ │ └─ENDIF

732 │ │ DO ok_lista.spr WITH document

733 │ │ GO BOTTOM

734 │ │ ┌─IF m.ok_list='DA'

735 │ │ │ REPLACE ALL nr_fac WITH m.nrf

736 │ │ │ REPLACE ALL data_f WITH m.data_f

737 │ │ │ SUM ALL v_rafrec TO m.v_rafrec

738 │ │ │ SUM ALL v_adaos TO m.v_adaos

739 │ │ │ SUM ALL v_acciza TO m.v_acciza

740 │ │ │ SUM ALL v_mttc TO m.v_mttc

741 │ │ │ SUM ALL v_fspp TO m.v_fspp

742 │ │ │ SUM ALL v_amb TO m.v_amb

743 │ │ │ SUM ALL v_tva TO m.v_tva

744 │ │ │ SUM ALL v_tot TO m.v_tot

745 │ │ │ GO TOP

746 │ │ │ INSERT INTO fpro;

747 │ │ │ (luna,serie,nr_fac,den_ben,data_f,data_inc,emitent,;

748 │ │ │ activit,v_rafrec,v_adaos,v_acciza,v_mttc,v_fspp,v_amb,v_tva,;

749 │ │ │ v_tot,iv_rafrec,iv_adaos,iv_acciza,iv_mttc,iv_fspp,iv_amb,;

750 │ │ │ iv_tva,iv_tot,tipf,cupon,snp,franciza,stare_fac,st_client,anul);

751 │ │ │ VALUES(m.luprel,SPACE(4),m.nrf,m.den_ben,m.data_f,;

752 │ │ │ { / / },m.emitator,'D',m.v_rafrec,m.v_adaos,m.v_acciza,;

753 │ │ │ m.v_mttc,m.v_fspp,m.v_amb,m.v_tva,m.v_tot,0,0,0,0,0,0,0,0,2,;

754 │ │ │ m.cupon,m.snp,m.franciza,m.stare_fac,m.co_client,m.anprel)

755 │ │ │ INSERT INTO apro;

756 │ │ │ (anul,luna,nr_fac,com1,com2,com3,com4);

757 │ │ │ VALUES(m.anprel,m.luprel,m.nrf,m.com1,m.com2,m.com3,;

758 │ │ │ LEFT(TIME(),5))

759 │ │ │ SELECT mpro

760 │ │ │ APPEND FROM tmppro

761 │ │ │ SELECT tmppro

762 │ │ │ ZAP

763 │ │ │ USE

764 │ │ │ USE tmppro IN 0 ALIAS tmppro EXCLUSIV

765 │ │ └─ENDIF

766 │ │ SELECT tmppro

767 │ │ SET RELATION TO

768 <═════════RETURN

769 │ ├─ELSE

770 │ │ SELECT tmppro

771 │ │ SET RELATION TO

772 <═════════RETURN

773 │ └─ENDIF

774 └─ENDIF

775

776 PROCEDURE loc_dlog

777 PRIVATE gfields,i

778 DEFINE WINDOW wzlocate FROM 1,1 TO 15,40;

779 SYSTEM GROW CLOSE ZOOM FLOAT;

780 SHADOW COLOR SCHEME 10

781 ON KEY LABEL leftarrow WAIT 'Folositi Tastele TAB sau ENTER pentru salt intre coloane' WINDOW

782 ON KEY LABEL rightarrow WAIT 'Folositi Tastele TAB sau ENTER pentru salt intre coloane' WINDOW

783 MOVE WINDOW wzlocate CENTER

784 m.gfields=SET('FIELDS',2)

785 ┌─IF !EMPTY(RELATION(1))

786 │ SET FIELDS ON

787 │ ┌─IF m.gfields # 'GLOBAL'

788 │ │ SET FIELDS global

789 │ └─ENDIF

790 │ ┌─IF EMPTY(fldlist())

791 │ │ m.i=1

792 │ │ ╔═DO WHILE !EMPTY(objvar(m.i))

793 │ │ ║ ┌─IF ATC('M.',objvar(m.i))=0

794 │ │ ║ │ SET FIELDS TO (objvar(m.i))

795 │ │ ║ └─ENDIF

796 │ │ ║ m.i = m.i + 1

797 │ │ ╚═ENDDO

798 │ └─ENDIF

799 └─ENDIF

800 BROWSE WINDOW wzlocate NOEDIT NODELETE ;

801 NOMENU TITLE C_BRTITLE

802 SET FIELDS &gfields

803 SET FIELDS OFF

804 ON KEY LABEL leftarrow

805 ON KEY LABEL rightarrow

806 RELEASE WINDOW wzlocate

807 RETURN

808

809 PROCEDURE ini_norm

810 ******************************************************************

811 * AMBALAJE

812 ******************************************************************

813 ┌─IF m.den_s = "AMBALAJ"

814 │ m.cod_calc = 1

815 <══════RETURN

816 └─ENDIF

817

818 *******************************************************************

819 * PRODUSE LA BIDON CU TVA DE CATALOG

820 *******************************************************************

821 ┌─IF INLIST(preț.fam,"01","09","15") AND preț.vrac="B"

822 │ m.cod_calc = 2

823 <══════RETURN

824 └─ENDIF

825

826 *******************************************************************

827 * SCUTIT DE TAXA DRUMURI

828 *******************************************************************

829 ┌─IF ((preț.cod_pro >= 180101 .AND. preț.cod_pro <= 180111) ;

830 │ .OR. (preț.cod_pro >= 180113 .AND. preț.cod_pro <= 180120)) ;

831 │ .AND. registru.fara_mtr="DA"

832 │ m.cod_calc = 13

833 <══════RETURN

834 └─ENDIF

835

836 *******************************************************************

837 * FACTURARE NORMALA DEPOZIT

838 *******************************************************************

839 m.cod_calc = 3

840 RETURN

841

842 PROCEDURE c_norm

843 ╒═DO CASE

844 │ ****************************************************************

845 │ * AMBALAJE

846 │ ****************************************************************

847 ╞═CASE m.cod_calc = 1

848 │ m.v_amb = m.p_rafrec * m.cant

849 │ m.v_tva = ROUND(m.v_amb * m.protva/100, 0)

850 │

851 │ 852 │ * PRODUSE LA BIDON CU TVA DE CATALOG

853 │ 854 ╞═CASE m.cod_calc = 2

855 │ m.v_rafrec = ROUND(preț.p_raf * m.cant / 1000,0)

856 │ m.v_acciza = ROUND(preț.acciza * m.cant / 1000 ,0)

857 │ m.v_adaos = ROUND(preț.adaos * m.cant / 1000,0)

858 │ m.v_tva = ROUND(preț.p_tva * m.cant / 1000,0)

859 │ * Se lucreaza cu TVA din tabela Preț pentru ca valoarea totala

860 │ * sa fie egala cu multiplu de preț/litru

861 │ ***************************************************************

862 │ * FACTURARE NORMALA DEPOZIT

863 │ ***************************************************************

864 ╞═CASE m.cod_calc = 3

865 │ m.v_rafrec = ROUND(preț.p_raf * m.cant / 1000 ,0)

866 │ m.v_acciza = ROUND(preț.acciza * m.cant / 1000 ,0)

867 │ ╒═DO CASE

868 │ ╞═CASE document = 'NORMAL'

869 │ │ m.v_adaos = ROUND(preț.adaos * m.cant / 1000 ,0)

870 │ ╞═CASE document = 'FRANCIZA'

871 │ │ m.v_adaos = ROUND((preț.adaos – (preț.p_raf + preț.adaos) * m.discount) * m.cant / 1000, 0)

872 │ ╘═ENDCASE

873 │ m.v_mttc = ROUND(preț.mtr_kg * m.cant / 1000, 0)

874 │ m.v_fspp = ROUND(preț.fspp * preț.densit / 1000 * m.litri, 0)

875 │ m.v_tva = ROUND((m.v_rafrec+m.v_adaos+m.v_acciza) * ;

876 │ m.protva/100, 0)

877 │

*******************************************************************

879 │ * SCUTIT DE TAXA DRUMURI

880 │ ***********************************************************************

881 ╞═CASE m.cod_calc = 13

882 │ m.v_rafrec = ROUND(preț.p_raf * m.cant / 1000,0)

883 │ m.v_mttc = 0

884 │ m.v_acciza = ROUND(preț.acciza * m.cant / 1000,0)

885 │ ╒═DO CASE

886 │ ╞═CASE document = 'NORMAL'

887 │ │ m.v_adaos = ROUND(preț.adaos * m.cant / 1000,0)

888 │ ╞═CASE document = 'FRANCIZA'

889 │ │ m.v_adaos = ROUND((preț.adaos – (preț.p_raf + preț.adaos) * m.discount) * m.cant / 1000, 0)

890 │ ╘═ENDCASE

891 │ m.v_fspp = ROUND(preț.fspp * preț.densit / 1000 * m.litri, 0)

892 │ m.v_tva = ROUND((m.v_rafrec+m.v_acciza+m.v_adaos) * m.protva/100, 0)

893 ╘═ENDCASE

894 m.v_tot=m.v_rafrec+m.v_adaos+m.v_acciza+m.v_mttc+m.v_fspp+m.v_amb+m.v_tva

895 RETURN

896

897

912 *

913 FUNCTION _0oj0w7bha && m.den_s VALID

914 #REGION 1

915 SET PROCEDURE TO biblio

916 =fpro(m.den_s)

917 =caut_fam(m.den_s)

918 m.butcis=' '

919 ┌─IF document='FRANCIZA'

920 │ ╒═DO CASE

921 │ ╞═CASE preț.fam='02'

922 │ │ m.discount=0.02

923 │ ╞═CASE preț.fam='07'

924 │ │ m.discount=0.025

925 │ ╞═OTHERWISE

926 │ │ m.discount=0

927 │ ╘═ENDCASE

928 │ WAIT 'Se acorda discount='+STR(m.discount,5,3) WINDOW

929 └─ENDIF

930 SHOW GETS

947 *

948 FUNCTION _0oj0w7bhn && m.data_rec VALID

949 #REGION 1

950 ┌─IF MONTH(m.data_rec)<>m.luprel

951 │ WAIT "Atentie – Luna valorificare diferita de luna prelucrare !" WINDOW

952 └─ENDIF

953 ┌─IF YEAR(m.data_rec)<>m.anprel

954 │ WAIT "Atentie – Anul valorificare diferit de anul prelucrare !" WINDOW

955 └─ENDIF

956

957

972 *

973 FUNCTION _0oj0w7bhx && m.den_ben VALID

974 #REGION 1

975 SET PROCEDURE TO biblio

976 =fben(m.den_ben)

977

978

993 *

994 FUNCTION _0oj0w7bi4 && m.nrbuc VALID

995 #REGION 1

996 ┌─IF preț.vrac='B'

997 │ m.litri=m.nrbuc*preț.k

998 └─ENDIF

999

1013 *

1014 FUNCTION _0oj0w7bit && Read Level Show

1015 PRIVATE currwind

1016 STORE WOUTPUT() TO currwind

1017 *

1018 * Show Code from screen: FACTURI

1019 *

1020 #REGION 1

1021 ╒═DO CASE

1022 ╞═CASE document='NORMAL'

1023 │ @ 00,02 SAY 'Facturi standard din depozit'

1024 ╞═CASE document='FRANCIZA'

1025 │ @ 00,02 SAY 'Facturi in regim franciza'

1026 ╘═ENDCASE

1027 SELECT tmppro

1028 ┌─IF RECCOUNT() # 0

1029 │ m.nrart=RECNO()

1030 │ m.total = 0

1031 │ m.ttva = 0

1032 │ SUM ALL v_tot FOR luna=m.luprel AND anul=m.anprel TO m.total

1033 │ SUM ALL v_tva FOR luna=m.luprel AND anul=m.anprel TO m.ttva

1034 │ GO m.nrart

1035 │ @ 13,25 SAY m.total PICT "99,999,999,999"

1036 │ @ 13,54 SAY m.ttva PICT "999,999,999"

1037 └─ENDIF

1038

1039 ┌─IF SYS(2016) = "WFACT" OR SYS(2016) = "*"

1040 │ ACTIVATE WINDOW wfact SAME

1041 │ @ 9,52 SAY m.cant ;

1042 │ SIZE 1,10, 0 ;

1043 │ PICTURE "99999999.9"

1044 └─ENDIF

1045 ┌─IF NOT EMPTY(currwind)

1046 │ ACTIVATE WINDOW (currwind) SAME

└─ENDIF

* EOF:FACTURI

A.2. “Avize.spr” – videoformat pentru emitere avize

18 PARAMETERS document

19

20 * ╓──────────────────────────────────────────────────────╖

21 * ║ ║

22 * ║ AVIZE/MS-DOS Setup Code – SECTION 1 ║

23 * ║ ║

24 * ╙──────────────────────────────────────────────────────╜

25 *

26

27 #REGION 1

28

29 #REGION 0

30 REGIONAL m.currarea, m.talkstat, m.compstat

31

32 ┌─IF SET("TALK") = "ON"

33 │ SET TALK OFF

34 │ m.talkstat = "ON"

35 ├─ELSE

36 │ m.talkstat = "OFF"

37 └─ENDIF

38 m.compstat = SET("COMPATIBLE")

39 SET COMPATIBLE FOXPLUS

40

41 *

48 ┌─IF NOT WEXIST("wculeg") ;

49 │ OR UPPER(WTITLE("WCULEG")) == "WCULEG.PJX" ;

50 │ OR UPPER(WTITLE("WCULEG")) == "WCULEG.SCX" ;

51 │ OR UPPER(WTITLE("WCULEG")) == "WCULEG.MNX" ;

52 │ OR UPPER(WTITLE("WCULEG")) == "WCULEG.PRG" ;

53 │ OR UPPER(WTITLE("WCULEG")) == "WCULEG.FRX" ;

54 │ OR UPPER(WTITLE("WCULEG")) == "WCULEG.QPR"

55 │ DEFINE WINDOW wculeg ;

56 │ FROM INT((SROW()-20)/2),INT((SCOL()-67)/2) ;

57 │ TO INT((SROW()-20)/2)+19,INT((SCOL()-67)/2)+66 ;

58 │ FLOAT ;

59 │ NOCLOSE ;

60 │ SHADOW ;

61 │ MINIMIZE ;

62 │ COLOR SCHEME 5

63 └─ENDIF

64

66 *

73 #REGION 1

74

75 #DEFINE C_DBFEMPTY 'Baza de date este vida, Adaugati ?'

76 #DEFINE C_EDITS 'Terminati operatiunea de editare'

77 #DEFINE C_TOPFILE 'Inceput fisier'

78 #DEFINE C_ENDFILE 'Sfirsit fisier'

79 #DEFINE C_BRTITLE 'Cauta articol'

80 #DEFINE C_NOLOCK 'Articolul nu poate fi blocat, Incercati mai tirziu'

81 #DEFINE C_ECANCEL 'Editare anulata'

82 #DEFINE C_DELREC 'Stergeti acest articol ?'

83 #DEFINE C_NODELE 'Nu este permisa stergerea !'

84 #DEFINE C_NOEDIT 'Nu este permisa modificarea !'

85 #DEFINE C_NOFEAT 'Feature not available yet.'

86 #DEFINE C_NOWIZ 'Wizard application is not available.'

87 #DEFINE C_MAKEREPO 'Creating report with Report Wizard.'

88 #DEFINE C_NOREPO 'Could not create report.'

89 #DEFINE C_DELNOTE 'Se sterg articolele…'

90 #DEFINE C_READONLY 'Fisierul este read-only. Nu poate fi editat'

91 #DEFINE C_NOTABLE 'Fisierul nu este dechis'

92 #DEFINE C_BADEXPR 'Invalid expression.'

93 #DEFINE C_LOCWIZ 'Locate WIZARD.APP:'

94 #DEFINE C_MULTITABLE 'You have multiple related tables. Adding records in not allowed.'

95

96 HIDE POPUP deppop

97 HIDE POPUP actpop

98 MOVE WINDOW 'wculeg' CENTER

99 PRIVATE isediting,isadding,wztblarr

100 PRIVATE wzolddelete,wzolderror,wzoldesc,wzoldexcl

101 PRIVATE wzalias, tempcurs,wzlastrec

102 PRIVATE isreadonly,find_drop,is2table

103

104 m.wzolddelete=SET('DELETE')

105 m.wzolderror=ON('error')

106 m.wzoldexcl=SET('EXCLUSIV')

107 m.wzoldesc=ON('KEY','ESCAPE')

108 USE mpro IN 0 ALIAS mpro

109 USE registru IN 0 ALIAS registru

110 USE locuri IN 0 ALIAS locuri

111 USE apro IN 0 ALIAS apro

112 USE NOMEN IN 0 ALIAS NOMEN

113 USE preț IN 0 ALIAS preț

114 USE tmppro IN 0 ALIAS tmppro EXCLUSIV

115 SELECT preț

116 SET ORDER TO prețind

117 SELECT registru

118 SET ORDER TO TAG partener

119 SELECT apro

120 SET ORDER TO TAG nr_fac

121 SELECT mpro

122 ┌─IF RECCOUNT()#0

123 │ ╒═DO CASE

124 │ ╞═CASE m.luprel < 12

125 │ │ m.lunaurm = m.luprel + 1

126 │ ╞═CASE m.luprel = 12

127 │ │ m.lunaurm = 1

128 │ ╘═ENDCASE

129 │ LOCATE FOR luna = m.lunaurm

130 │ ┌─IF FOUND()

131 │ │ SET PROCEDURE TO biblio

132 │ │ DO alarm WITH 'Nu se mai pot culege date pentru luna '+STR(m.luprel,2)+' !'

133 │ │ SET DELETED &wzolddelete

134 │ │ SET EXCLUSIV &wzoldexcl

135 │ │ ON ERROR &wzolderror

136 │ │ ON KEY LABEL ESCAPE &wzoldesc

137 │ │ ╒═DO CASE

138 │ │ ╞═CASE _DOS AND SET('DISPLAY')='VGA25'

139 │ │ │ @24,0 CLEAR TO 24,79

140 │ │ ╞═CASE _DOS AND SET('DISPLAY')='VGA50'

141 │ │ │ @49,0 CLEAR TO 49,79

142 │ │ ╞═CASE _DOS

143 │ │ │ @24,0 CLEAR TO 24,79

144 │ │ ╘═ENDCASE

145 │ │ CLOSE DATA

146 │ │ SET PROCEDURE TO biblio

147 │ │ SET MESSAGE TO 0

148 │ │ SHOW POPUP actpop

149 │ │ DO ecran WITH 'Facturi Produse Depozit'

150 <═════════RETURN

151 │ └─ENDIF

152 └─ENDIF

153 SELECT tmppro

154 PACK

155

156 m.wztblarr= ''

157 m.wzalias=SELECT()

158 m.isediting=.F.

159 m.isadding=.F.

160 m.is2table = .F.

161 m.tempcurs=SYS(2015) &&used if General field

162 ON ERROR DO wizerrorhandler

163 ON KEY LABEL ESCAPE

164 m.find_drop = IIF(_DOS,0,2)

165

166 m.isreadonly=IIF(isread(),.T.,.F.)

167 ┌─IF m.isreadonly

168 │ WAIT WINDOW C_READONLY TIMEOUT 1

169 └─ENDIF

170

171 GOTO BOTTOM

172 SCATTER MEMVAR MEMO

173 m.luna=m.luprel

174 m.anul=m.anprel

175 m.tip_doc=document

176 ┌─IF document='AVIZEX'

177 │ m.snp=.F.

178 ├─ELSE

179 │ m.snp=.T.

180 └─ENDIF

181 m.stare_fac=.T.

182 m.emitent=m.emitator

183 m.ind_int = 'E'

184 m.activit = 'D'

185 PUBLIC m.dup_ben,m.dup_den_s,m.com1,m.biser,m.binr,m.com2,m.com3

186 PUBLIC m.ok_list,m.den_aux,m.parinte,m.termen,m.fel_form,m.nrf

187 m.dup_ben=SPACE(30)

188 m.den_aux=SPACE(20)

189 m.data_f=DATE()

190

192 *

198

199 #REGION 1

200 ┌─IF WVISIBLE("wculeg")

201 │ ACTIVATE WINDOW wculeg SAME

202 ├─ELSE

203 │ ACTIVATE WINDOW wculeg NOSHOW

204 └─ENDIF

205 @ 3,31 SAY "Denumire produs:" ;

206 SIZE 1,16, 0

207 @ 7,2 SAY "Client:" ;

208 SIZE 1,7, 0

209 @ 15,0 TO 15,64

210 @ 1,0 TO 1,64

211 @ 3,21 GET m.nr_doc ;

212 SIZE 1,7 ;

213 DEFAULT 0 ;

214 PICTURE "@K 9999999" ;

215 WHEN isediting ;

216 VALID m.nr_doc<>0 ;

217 MESSAGE 'Numar dispozitie livrare' ;

218 ERROR 'Nu poate fi zero !'

219 @ 3,48 GET m.den_s ;

220 SIZE 1,15 ;

221 DEFAULT " " ;

222 PICTURE "@!K XXXXXXXXXXXXXXX" ;

223 WHEN isediting ;

224 VALID _0oj0w7bvn()

225 @ 5,21 GET m.data_rec ;

226 SIZE 1,10 ;

227 DEFAULT { / / } ;

228 PICTURE "@K" ;

229 WHEN isediting ;

230 VALID _0oj0w7bvw() ;

231 MESSAGE 'Se calculeaza valoarea la data introdusa'

232 @ 7,10 GET m.den_ben ;

233 SIZE 1,30 ;

234 DEFAULT " " ;

235 PICTURE "@!K XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ;

236 WHEN isediting ;

237 VALID _0oj0w7bw7()

238 @ 3,5 SAY "Numar document:" ;

239 SIZE 1,15, 0

240 @ 5,2 SAY "Data valorificare:" ;

241 SIZE 1,18, 0

242 @ 9,2 SAY "Litri livrati:" ;

243 SIZE 1,14, 0

244 @ 9,39 SAY "Densitate:" ;

245 SIZE 1,10, 0

246 @ 11,4 SAY "Temperatura:" ;

247 SIZE 1,12, 0

248 @ 5,48 GET m.p_rafrec ;

249 SIZE 1,9 ;

250 DEFAULT 0 ;

251 PICTURE "@K 999999999" ;

252 WHEN isediting AND m.den_s='AMBALAJ'

253 @ 5,32 SAY "Preț rafinarie:" ;

254 SIZE 1,15, 0

255 @ 13,15 SAY "Valoare totala aviz :" ;

256 SIZE 1,21, 0

257 @ 11,37 SAY "Preț statie:" ;

258 SIZE 1,12, 0

259 @ 11,57 SAY "/litru" ;

260 SIZE 1,6, 0

261 @ 7,42 SAY "Bucati:" ;

262 SIZE 1,7, 0

263 @ 7,50 GET m.nrbuc ;

264 SIZE 1,5 ;

265 DEFAULT 0 ;

266 PICTURE "@K 99999" ;

267 WHEN isediting AND IIF(caut_vrac(m.den_s,m.data_rec)='V',.F.,.T.) ;

268 VALID _0oj0w7bwm() ;

269 MESSAGE 'Numar bidoane,butelii pentru produsele ambalate.'

270 @ 9,17 GET m.litri ;

271 SIZE 1,10 ;

272 DEFAULT 0 ;

273 PICTURE "@K 99999999.9" ;

274 WHEN isediting ;

275 VALID m.litri<>0 ;

276 MESSAGE 'Se introduc litri și pentru produsele imbuteliate.' ;

277 ERROR 'Nu poate fi zero !'

278 @ 9,50 GET m.densit ;

279 SIZE 1,5 ;

280 DEFAULT 0 ;

281 PICTURE "@K 9.999" ;

282 WHEN isediting

283 @ 11,17 GET m.temp ;

284 SIZE 1,3 ;

285 DEFAULT 0 ;

286 PICTURE "@K 999" ;

287 WHEN isediting

288 @ 11,50 SAY m.p_litr ;

289 SIZE 1,7 ;

290 PICTURE "9999999"

291 @ 16,1 GET m.next_btn ;

292 PICTURE "@*HN \<+" ;

293 SIZE 1,5,1 ;

294 DEFAULT 1 ;

295 VALID btn_val('NEXT') ;

296 MESSAGE 'Afiseaza urmatorul articol'

297 @ 16,8 GET m.prev_btn ;

298 PICTURE "@*HN \<-" ;

299 SIZE 1,5,1 ;

300 DEFAULT 1 ;

301 VALID btn_val('PREV') ;

302 MESSAGE 'Afiseaza articolul anterior'

303 @ 16,16 GET m.loc_btn ;

304 PICTURE "@*HN \<Browse" ;

305 SIZE 1,8,1 ;

306 DEFAULT 1 ;

307 VALID btn_val('LOCATE') ;

308 MESSAGE 'Continut fisier in forma tabelara'

309 @ 16,26 GET m.add_btn ;

310 PICTURE "@*HN \<Adaug" ;

311 SIZE 1,7,1 ;

312 DEFAULT 1 ;

313 VALID btn_val('ADD') ;

314 MESSAGE 'Adauga un articol nou'

315 @ 16,35 GET m.edit_btn ;

316 PICTURE "@*HN \<Modific" ;

317 SIZE 1,9,1 ;

318 DEFAULT 1 ;

319 VALID btn_val('EDIT') ;

320 MESSAGE 'Modifica articolul afisat'

321 @ 16,46 GET m.del_btn ;

322 PICTURE "@*HN \<Sterg" ;

323 SIZE 1,9,1 ;

324 DEFAULT 1 ;

325 VALID btn_val('DELETE') ;

326 MESSAGE 'Sterge articolul afisat'

327 @ 16,57 GET m.exit_btn ;

328 PICTURE "@*HN \<Exit" ;

329 SIZE 1,6,1 ;

330 DEFAULT 1 ;

331 VALID btn_val('EXIT') ;

332 MESSAGE 'Terminare culegere'

333 @ 17,14 GET m.top_btn ;

334 PICTURE "@*HN \<Primul" ;

335 SIZE 1,8,1 ;

336 DEFAULT 1 ;

337 VALID btn_val('TOP') ;

338 MESSAGE 'Afiseaza primul articol din fisier'

339 @ 17,24 GET m.end_btn ;

340 PICTURE "@*HN \<Ultimul" ;

341 SIZE 1,9,1 ;

342 DEFAULT 1 ;

343 VALID btn_val('END') ;

344 MESSAGE 'Afiseaza ultimul articol din fisier'

345 @ 17,35 GET m.prt_btn ;

346 PICTURE "@*HN \<Tiparire" ;

347 SIZE 1,10,1 ;

348 DEFAULT 1 ;

349 VALID btn_val('PRINT') ;

350 MESSAGE 'Print report.'

351

352 ┌─IF NOT WVISIBLE("wculeg")

353 │ ACTIVATE WINDOW wculeg

354 └─ENDIF

363

364 READ CYCLE ;

365 ACTIVATE readact() ;

366 DEACTIVATE readdeac() ;

367 SHOW _0oj0w7bxe() ;

368 NOLOCK

369

370 RELEASE WINDOW wculeg

371

372 #REGION 0

373 ┌─IF m.talkstat = "ON"

374 │ SET TALK ON

375 └─ENDIF

376 ┌─IF m.compstat = "ON"

377 │ SET COMPATIBLE ON

378 └─ENDIF

379

388 #REGION 1

389 SET DELETED &wzolddelete

390 SET EXCLUSIV &wzoldexcl

391 ON ERROR &wzolderror

392 ON KEY LABEL ESCAPE &wzoldesc

393 ╒═DO CASE

394 ╞═CASE _DOS AND SET('DISPLAY')='VGA25'

395 │ @24,0 CLEAR TO 24,79

396 ╞═CASE _DOS AND SET('DISPLAY')='VGA50'

397 │ @49,0 CLEAR TO 49,79

398 ╞═CASE _DOS

399 │ @24,0 CLEAR TO 24,79

400 ╘═ENDCASE

401 CLOSE DATA

402 SET PROCEDURE TO biblio

403 SET MESSAGE TO 0

404 SHOW POPUP actpop

405 DO ecran WITH 'Facturi Produse Depozit'

406

407 ****Procedures****

417 #REGION 1

418 PROCEDURE readdeac

419 ┌─IF isediting

420 │ ACTIVATE WINDOW 'wculeg'

421 │ WAIT WINDOW C_EDITS NOWAIT

422 └─ENDIF

423 ┌─IF !WVISIBLE(WOUTPUT())

424 │ CLEAR READ

425 <══════RETURN .T.

426 └─ENDIF

427 RETURN .F.

428

429 PROCEDURE readact

430 ┌─IF !isediting

431 │ SELECT (m.wzalias)

432 │ SHOW GETS

433 └─ENDIF

434 DO REFRESH WITH ' '

435 RETURN

436

437 PROCEDURE wizerrorhandler

438 WAIT WINDOW MESSAGE()

439 RETURN

440

441 PROCEDURE btn_val

442 PARAMETER m.btnname

443 ╒═DO CASE

444 ╞═CASE m.btnname='TOP'

445 │ GO TOP

446 │ WAIT WINDOW C_TOPFILE NOWAIT

447 │ _CUROBJ=OBJNUM(top_btn)

448 ╞═CASE m.btnname='PREV'

449 │ ┌─IF !BOF()

450 │ │ SKIP -1

451 │ └─ENDIF

452 │ ┌─IF BOF()

453 │ │ WAIT WINDOW C_TOPFILE NOWAIT

454 │ │ GO TOP

455 │ └─ENDIF

456 │ _CUROBJ=OBJNUM(prev_btn)

457 ╞═CASE m.btnname='NEXT'

458 │ ┌─IF !EOF()

459 │ │ SKIP 1

460 │ └─ENDIF

461 │ ┌─IF EOF()

462 │ │ WAIT WINDOW C_ENDFILE NOWAIT

463 │ │ GO BOTTOM

464 │ └─ENDIF

465 │ _CUROBJ=OBJNUM(next_btn)

466 ╞═CASE m.btnname='END'

467 │ GO BOTTOM

468 │ WAIT WINDOW C_ENDFILE NOWAIT

469 │ _CUROBJ=OBJNUM(end_btn)

470 ╞═CASE m.btnname='LOCATE'

471 │ DO loc_dlog

472 │ _CUROBJ=OBJNUM(loc_btn)

473 ╞═CASE m.btnname='ADD' AND !isediting &&add record

474 │ isediting=.T.

475 │ isadding=.T.

476 │ =edithand('ADD')

477 │ _CUROBJ=1

478 │ DO REFRESH WITH 'ADD'

479 │ SHOW GETS

480 <══════RETURN

481 ╞═CASE m.btnname='EDIT' AND !isediting &&edit record

482 │ ┌─IF EOF() OR BOF()

483 │ │ WAIT WINDOW C_ENDFILE NOWAIT

484 <═════════RETURN

485 │ └─ENDIF

486 │ ┌─IF !EMPTY(m.nr_fac)

487 │ │ WAIT WINDOW C_NOEDIT

488 <═════════RETURN

489 │ └─ENDIF

490 │ ┌─IF RLOCK()

491 │ │ isediting=.T.

492 │ │ _CUROBJ=1

493 │ │ DO REFRESH WITH 'EDI'

494 <═════════RETURN

495 │ ├─ELSE

496 │ │ WAIT WINDOW C_NOLOCK

497 │ └─ENDIF

498 ╞═CASE m.btnname='EDIT' AND isediting &&save record

499 │ ┌─IF isadding

500 │ │ =edithand('SAVE')

501 │ │ ori_but='ADD'

502 │ ├─ELSE

503 │ │ SET PROCEDURE TO biblio

504 │ │ DO cit_preț WITH m.den_s,m.data_rec

505 │ │ ┌─IF m.den_s = "AMBALAJ"

506 │ │ │ m.cant = m.litri

507 │ │ │ m.cod_pro = 999999

508 │ │ │ m.fam = "00"

509 │ │ │ m.gest = 0

510 │ │ │ m.v_amb = ROUND(m.p_rafrec * m.cant ,0)

511 │ │ │ m.v_tot = m.v_amb

512 │ │ ├─ELSE

513 │ │ │ m.p_litr = preț.p_litr

514 │ │ │ m.cod_pro = preț.cod_pro

515 │ │ │ m.fam = preț.fam

516 │ │ │ ┌─IF INLIST(m.fam,'01','09')

517 │ │ │ │ m.cant = m.litri * m.densit

518 │ │ │ ├─ELSE

519 │ │ │ │ m.cant = ROUND(m.litri * m.densit,0)

520 │ │ │ └─ENDIF

521 │ │ │ m.p_rafrec = preț.p_raf

522 │ │ │ * Produsele la bidon cu capacit.>1 litru se culeg total litri ambalaj

523 │ │ │ m.v_rafrec = ROUND(m.p_rafrec * m.cant / 1000,0)

524 │ │ │ ┌─IF document='AVISNP'

525 │ │ │ │ m.v_adaos = ROUND(preț.taxa_t * 0.50 * m.cant / 1000,0)

526 │ │ │ └─ENDIF

527 │ │ │ ┌─IF document='AVIZEX'

528 │ │ │ │ SET PROCEDURE TO biblio

529 │ │ │ │ =caut_prt(registru.cod_anal)

530 │ │ │ │ m.dep_dest=m.parinte

531 │ │ │ └─ENDIF

532 │ │ │ m.v_tot = m.v_rafrec + m.v_adaos

533 │ │ │ ┌─IF INLIST(preț.fam,"02","03")

534 │ │ │ │ m.butcis = 'C'

535 │ │ │ ├─ELSE

536 │ │ │ │ m.butcis = ' '

537 │ │ │ └─ENDIF

538 │ │ └─ENDIF

539 │ │ GATHER MEMVAR MEMO

540 │ │ ori_but='EDI'

541 │ └─ENDIF

542 │ UNLOCK

543 │ isediting=.F.

544 │ isadding=.F.

545 │ DO REFRESH WITH ori_but

546 ╞═CASE m.btnname='DELETE' AND isediting &&cancel record

547 │ ┌─IF isadding

548 │ │ =edithand('CANCEL')

549 │ │ ori_but='ADD'

550 │ ├─ELSE

551 │ │ ori_but='EDI'

552 │ └─ENDIF

553 │ isediting=.F.

554 │ isadding=.F.

555 │ UNLOCK

556 │ WAIT WINDOW C_ECANCEL NOWAIT

557 │ DO REFRESH WITH ori_but

558 ╞═CASE m.btnname='DELETE'

559 │ ┌─IF EOF() OR BOF()

560 │ │ WAIT WINDOW C_ENDFILE NOWAIT

561 <═════════RETURN

562 │ └─ENDIF

563 │ ┌─IF !EMPTY(m.nr_fac)

564 │ │ WAIT WINDOW C_NODELE

565 <═════════RETURN

566 │ └─ENDIF

567 │ ┌─IF yesno(C_DELREC)

568 │ │ DELETE

569 │ │ PACK

570 │ │ ┌─IF !EOF() AND DELETED()

571 │ │ │ SKIP 1

572 │ │ └─ENDIF

573 │ │ ┌─IF EOF()

574 │ │ │ WAIT WINDOW C_ENDFILE NOWAIT

575 │ │ │ GO BOTTOM

576 │ │ └─ENDIF

577 │ └─ENDIF

578 │ _CUROBJ=OBJNUM(del_btn)

579 ╞═CASE m.btnname='PRINT'

580 │ DO prindif

581 <══════RETURN

582 ╞═CASE m.btnname='EXIT'

583 │ m.bailout=.T. &&this is needed if used with FoxApp

584 │ CLEAR READ

585 <══════RETURN

586 ╘═ENDCASE

587 SCATTER MEMVAR MEMO

588 m.anul=m.anprel

589 m.luna=m.luprel

590 m.emitent=m.emitator

591 m.tip_doc=document

592 ┌─IF document='AVIZEX'

593 │ m.snp=.F.

594 ├─ELSE

595 │ m.snp=.T.

596 └─ENDIF

597 m.ind_int = 'E'

598 m.activit = 'D'

599 m.stare_fac=.T.

600 SHOW GETS

601 RETURN

602

603 PROCEDURE REFRESH

604 PARAMETERS buton

605 ╒═DO CASE

606 ╞═CASE m.isreadonly AND RECCOUNT()=0

607 │ SHOW GETS DISABLE

608 │ SHOW GET exit_btn ENABLE

609 ╞═CASE m.isreadonly

610 │ SHOW GET add_btn DISABLE

611 │ SHOW GET del_btn DISABLE

612 │ SHOW GET edit_btn DISABLE

613 ╞═CASE m.isediting

614 │ SHOW GET find_drop DISABLE

615 │ SHOW GET top_btn DISABLE

616 │ SHOW GET prev_btn DISABLE

617 │ SHOW GET loc_btn DISABLE

618 │ SHOW GET next_btn DISABLE

619 │ SHOW GET end_btn DISABLE

620 │ SHOW GET add_btn DISABLE

621 │ SHOW GET prt_btn DISABLE

622 │ SHOW GET exit_btn DISABLE

623 │ SHOW GET edit_btn,1 PROMPT "Sal\<vare"

624 │ SHOW GET del_btn,1 PROMPT "An\<ulare "

625 │ ON KEY LABEL ESCAPE DO btn_val WITH 'DELETE'

626 <══════RETURN

627 ╞═OTHERWISE

628 │ SHOW GET del_btn,1 PROMPT "\<Sterg"

629 │ SHOW GET edit_btn,1 PROMPT "\<Modific"

630 │ SHOW GETS ENABLE

631 ╘═ENDCASE

632 ┌─IF m.is2table

633 │ SHOW GET add_btn DISABLE

634 └─ENDIF

635 ON KEY LABEL ESCAPE

636 ╒═DO CASE

637 ╞═CASE buton='ADD'

638 │ _CUROBJ=OBJNUM(add_btn)

639 ╞═CASE buton='EDI'

640 │ _CUROBJ=OBJNUM(edit_btn)

641 ╘═ENDCASE

642 RETURN

643

644 PROCEDURE edithand

645 PARAMETER m.paction

646 * procedure handles edits

647 ╒═DO CASE

648 ╞═CASE m.paction = 'ADD'

649 │ SCATTER MEMVAR MEMO BLANK

650 │ m.anul=m.anprel

651 │ m.luna=m.luprel

652 │ m.emitent=m.emitator

653 │ m.tip_doc=document

654 │ ┌─IF document='AVIZEX'

655 │ │ m.snp=.F.

656 │ ├─ELSE

657 │ │ m.snp=.T.

658 │ └─ENDIF

659 │ m.ind_int = 'E'

660 │ m.activit = 'D'

661 │ m.data_rec=DATE()

662 │ m.stare_fac=.T.

663 ╞═CASE m.paction = 'SAVE'

664 │ SET PROCEDURE TO biblio

665 │ DO cit_preț WITH m.den_s,m.data_rec

666 │ ┌─IF m.den_s = "AMBALAJ"

667 │ │ m.cant = m.litri

668 │ │ m.cod_pro = 999999

669 │ │ m.fam = "00"

670 │ │ m.gest = 0

671 │ │ m.v_amb = ROUND(m.p_rafrec * m.cant ,0)

672 │ │ m.v_tot = m.v_amb

673 │ ├─ELSE

674 │ │ m.p_litr = preț.p_litr

675 │ │ m.cod_pro = preț.cod_pro

676 │ │ m.fam = preț.fam

677 │ │ ┌─IF INLIST(m.fam,'01','09')

678 │ │ │ m.cant = m.litri * m.densit

679 │ │ ├─ELSE

680 │ │ │ m.cant = ROUND(m.litri * m.densit,0)

681 │ │ └─ENDIF

682 │ │ m.p_rafrec = preț.p_raf

683 │ │ * Produsele la bidon cu capacit.>1 litru se culeg total litri ambalaj

684 │ │ m.v_rafrec = ROUND(m.p_rafrec * m.cant / 1000,0)

685 │ │ ┌─IF document='AVISNP'

686 │ │ │ m.v_adaos = ROUND(preț.taxa_t * 0.50 * m.cant / 1000,0)

687 │ │ └─ENDIF

688 │ │ ┌─IF document='AVIZEX'

689 │ │ │ SET PROCEDURE TO biblio

690 │ │ │ =caut_prt(registru.cod_anal)

691 │ │ │ m.dep_dest=m.parinte

692 │ │ └─ENDIF

693 │ │ m.v_tot = m.v_rafrec + m.v_adaos

694 │ │ ┌─IF INLIST(preț.fam,"02","03")

695 │ │ │ m.butcis = 'C'

696 │ │ ├─ELSE

697 │ │ │ m.butcis = ' '

698 │ │ └─ENDIF

699 │ └─ENDIF

700 │ INSERT INTO (ALIAS()) FROM MEMVAR

701 ╞═CASE m.paction = 'CANCEL'

702 │ * nothing here

703 ╘═ENDCASE

704 RETURN

705

706 PROCEDURE prindif

707 SELECT tmppro

708 USE

709 USE tmppro IN 0 ALIAS tmppro EXCLUSIV

710 SELECT tmppro

711 PACK

712 ┌─IF RECCOUNT()#0

713 │ RESTORE FROM nrfpro ADDITIVE

714 │ DO anexaf.spr WITH document

715 │ DO formular.spr

716 │ SET PROCEDURE TO biblio

717 │ ┌─IF yesno('Imprimanta este pregatita pentru listare ?')

718 │ │ ┌─IF .NOT. ready2pr()

719 <════════════RETURN

720 │ │ └─ENDIF

721 │ │ SELECT tmppro

722 │ │ GO TOP

723 │ │ m.den_ben=den_ben

724 │ │ SET RELATION TO den_ben INTO registru

725 │ │ SET RELATION TO den_s INTO preț ADDITIVE

726 │ │ ┌─IF m.fel_form = 1

727 │ │ │ m.mem_av=m.mem_av+1

728 │ │ │ m.nrf=m.mem_av

729 │ │ ├─ELSE

730 │ │ │ m.mem_avul=m.mem_avul+1

731 │ │ │ m.nrf=m.mem_avul

732 │ │ └─ENDIF

733 │ │ SAVE TO nrfpro ALL LIKE mem_*

734 │ │ ┌─IF m.fel_form = 1

735 │ │ │ DO lis_aviz

736 │ │ ├─ELSE

737 │ │ │ DO lis_avu

738 │ │ └─ENDIF

739 │ │ DO ok_lista.spr WITH document

740 │ │ GO BOTTOM

741 │ │ ┌─IF m.ok_list='DA'

742 │ │ │ REPLACE ALL nr_fac WITH m.nrf

743 │ │ │ REPLACE ALL data_f WITH m.data_f

744 │ │ │ SUM ALL v_rafrec TO m.v_rafrec

745 │ │ │ SUM ALL v_adaos TO m.v_adaos

746 │ │ │ SUM ALL v_amb TO m.v_amb

747 │ │ │ SUM ALL v_tot TO m.v_tot

748 │ │ │ GO TOP

749 │ │ │ ┌─IF document='AVISNP'

750 │ │ │ │ INSERT INTO fpro;

751 │ │ │ │ (luna,serie,nr_fac,den_ben,data_f,data_inc,emitent,;

752 │ │ │ │ activit,v_rafrec,v_adaos,v_acciza,v_mttc,v_amb,v_tva,;

753 │ │ │ │ v_tot,iv_rafrec,iv_adaos,iv_acciza,iv_mttc,iv_amb,;

754 │ │ │ │ iv_tva,iv_tot,tipf,cupon,stare_fac,snp,franciza,anul);

755 │ │ │ │ VALUES(m.luprel,SPACE(4),m.nrf,m.den_ben,m.data_f,;

756 │ │ │ │ { / / },m.emitator,'D',m.v_rafrec,m.v_adaos,m.v_acciza,;

757 │ │ │ │ m.v_mttc,m.v_amb,m.v_tva,m.v_tot,0,0,0,0,0,0,0,2,.F., ;

758 │ │ │ │ m.stare_fac,m.snp,m.franciza,m.anprel)

759 │ │ │ └─ENDIF

760 │ │ │ INSERT INTO apro;

761 │ │ │ (anul,luna,nr_fac,com1,com2,com3,com4);

762 │ │ │ VALUES(m.anprel,m.luprel,m.nrf,m.com1,m.com2,m.com3,;

763 │ │ │ LEFT(TIME(),5))

764 │ │ │ SELECT mpro

765 │ │ │ APPEND FROM tmppro

766 │ │ │ ┌─IF document='AVISNP'

767 │ │ │ │ SELECT * FROM tmppro INTO CURSOR QUERY

768 │ │ │ └─ENDIF

769 │ │ │ SELECT tmppro

770 │ │ │ ZAP

771 │ │ │ ┌─IF document='AVISNP'

772 │ │ │ │ SELECT QUERY

773 │ │ │ │ SET PROCEDURE TO biblio

774 │ │ │ │ DO standby WITH " Pregatiti imprimanta pentru Nota de debitare !"

775 │ │ │ │ DO lis_nota WITH ' '

776 │ │ │ │ SELECT tmppro

777 │ │ │ └─ENDIF

778 │ │ │ USE

779 │ │ │ USE tmppro IN 0 ALIAS tmppro EXCLUSIV

780 │ │ └─ENDIF

781 │ │ SELECT tmppro

782 │ │ SET RELATION TO

783 <═════════RETURN

784 │ ├─ELSE

785 │ │ SELECT tmppro

786 │ │ SET RELATION TO

787 <═════════RETURN

788 │ └─ENDIF

789 └─ENDIF

790

791 PROCEDURE loc_dlog

792 PRIVATE gfields,i

793 DEFINE WINDOW wzlocate FROM 1,1 TO 15,40;

794 SYSTEM GROW CLOSE ZOOM FLOAT;

795 SHADOW COLOR SCHEME 10

796 ON KEY LABEL leftarrow WAIT 'Folositi Tastele TAB sau ENTER pentru salt intre coloane' WINDOW

797 ON KEY LABEL rightarrow WAIT 'Folositi Tastele TAB sau ENTER pentru salt intre coloane' WINDOW

798 MOVE WINDOW wzlocate CENTER

799 m.gfields=SET('FIELDS',2)

800 ┌─IF !EMPTY(RELATION(1))

801 │ SET FIELDS ON

802 │ ┌─IF m.gfields # 'GLOBAL'

803 │ │ SET FIELDS global

804 │ └─ENDIF

805 │ ┌─IF EMPTY(fldlist())

806 │ │ m.i=1

807 │ │ ╔═DO WHILE !EMPTY(objvar(m.i))

808 │ │ ║ ┌─IF ATC('M.',objvar(m.i))=0

809 │ │ ║ │ SET FIELDS TO (objvar(m.i))

810 │ │ ║ └─ENDIF

811 │ │ ║ m.i = m.i + 1

812 │ │ ╚═ENDDO

813 │ └─ENDIF

814 └─ENDIF

815 BROWSE WINDOW wzlocate NOEDIT NODELETE ;

816 NOMENU TITLE C_BRTITLE

817 SET FIELDS &gfields

818 SET FIELDS OFF

819 ON KEY LABEL leftarrow

820 ON KEY LABEL rightarrow

821 RELEASE WINDOW wzlocate

822 RETURN

840 *

841 FUNCTION _0oj0w7bvn && m.den_s VALID

842 #REGION 1

843 SET PROCEDURE TO biblio

844 =fpro(m.den_s)

845

860 *

861 FUNCTION _0oj0w7bvw && m.data_rec VALID

862 #REGION 1

863 ┌─IF MONTH(m.data_rec)<>m.luprel

864 │ WAIT "Atentie – Luna valorificare diferita de luna prelucrare !" WINDOW

865 └─ENDIF

866 ┌─IF YEAR(m.data_rec)<>m.anprel

867 │ WAIT "Atentie – Anul valorificare diferit de anul prelucrare !" WINDOW

868 └─ENDIF

885 *

886 FUNCTION _0oj0w7bw7 && m.den_ben VALID

887 #REGION 1

888 SET PROCEDURE TO biblio

889 =fben(m.den_ben)

890

906 FUNCTION _0oj0w7bwm && m.nrbuc VALID

907 #REGION 1

908 ┌─IF preț.vrac = 'B'

909 │ m.litri=m.nrbuc*preț.k

910 └─ENDIF

911

926 FUNCTION _0oj0w7bxe && Read Level Show

927 PRIVATE currwind

928 STORE WOUTPUT() TO currwind

929 *

930 * Show Code from screen: AVIZE

931 *

932 #REGION 1

933 ┌─IF document='AVIZEX'

934 │ @ 00,02 SAY 'Avize Expeditie Catre Statii Proprii'

935 ├─ELSE

936 │ @ 00,02 SAY 'Avize Expeditie Catre Sucursale SNP'

937 └─ENDIF

938 SELECT tmppro

939 ┌─IF RECCOUNT() # 0

940 │ m.nrart=RECNO()

941 │ m.total = 0

942 │ SUM ALL v_tot FOR luna=m.luprel AND anul=m.anprel TO m.total

943 │ GO m.nrart

944 │ @ 13,36 SAY m.total PICT "99,999,999,999"

945 └─ENDIF

946 ┌─IF SYS(2016) = "WCULEG" OR SYS(2016) = "*"

947 │ ACTIVATE WINDOW wculeg SAME

948 │ @ 11,50 SAY m.p_litr ;

949 │ SIZE 1,7, 0 ;

950 │ PICTURE "9999999"

951 └─ENDIF

952 ┌─IF NOT EMPTY(currwind)

953 │ ACTIVATE WINDOW (currwind) SAME

954 └─ENDIF

955 * EOF: AVIZE

A.3. “Crecont.prg” – program generare articole contabile

CLEAR

HIDE POPUP prlpop

PUBLIC negasit

m.negasit = .F.

CREATE DBF c:\WINDOWS\temp\cod_zero (emitent N (3), client C (30))

inreg = { / / }

@ 08, 02 SAY 'Introduceti data de inregistrare a notelor contabile !' ;

GET inreg VALID inreg<>CTOD(' / / ')

READ

CLEAR

m.zi = DAY(inreg)

m.ln = MONTH(inreg)

m.an = VAL(SUBSTR(DTOC(inreg), 7, 4))

m.g_thermwid = 0

m.step = 0

DO defterm WITH ' Obtinere documente contabile'

USE notafpr IN 1 ALIAS notafpr exclusiv

ZAP

USE registru IN 1 ALIAS registru

SELECT registru

SET ORDER TO TAG partener

* Avize expeditie

m.step=m.step+10

DO acterm WITH m.step

m.poz=0

m.nrnota=VAL(STR(m.ln,2)+"185")

SELECT emitent,cod_pro,den_s,fam, ;

SUM(v_rafrec) AS val_raf;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc="AVIZEX" ;

AND fam#'17';

ORDER BY 1,2;

GROUP BY 1,2;

INTO CURSOR QUERY

SCAN ALL WHILE !EOF()

m.expl="Iesire "+den_s+" dep "+TRANSFORM(emitent, "@L 999")

m.contd="371*.01."+TRANSFORM(emitent, "@L 999")+ ;

".0"+fam

m.contc="482*.42"

m.val=-val_raf

DO scrie_cont

ENDSCAN

m.step=m.step+10

DO acterm WITH m.step

SELECT den_ben,cod_pro,den_s,fam, ;

SUM(v_rafrec) AS val_raf,emitent,dep_dest;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc="AVIZEX" ;

AND fam#'17';

ORDER BY 1,2;

GROUP BY 1,2;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE !EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl="Intrare "+den_s+ ;

IIF(INLIST(registru.cod_anal,80,120,160,180)," d. "," st ") ;

+TRANSFORM(registru.cod_anal, "@L 999")

IF dep_dest=0

m.contd="371*.31."++TRANSFORM(emitent, "@L 999")+".0"+fam

ELSE

m.contd="371*."+IIF(INLIST(registru.cod_anal,80,120,160,180),"01","02")+ ;

"."+TRANSFORM(registru.cod_anal, "@L 999")+ ;

".0"+fam

ENDIF

m.contc="482*.42"

m.val=val_raf

DO scrie_cont

ENDSCAN

* Descarcare gestiune ambalaj butelii

m.step=m.step+10

DO acterm WITH m.step

SELECT emitent, SUM(v_rafrec) AS val_raf ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel ;

AND INLIST(tip_doc,"BONF","FACT") AND fam='17' ;

GROUP BY 1 ;

ORDER BY 1 ;

INTO CURSOR QUERY

SCAN ALL WHILE !EOF()

m.expl='Descarcare gestiune butelii '

m.contd = '371*.12.'+TRANSFORM(emitent, '@L 999')

m.contc = '303*.04.'+TRANSFORM(emitent, '@L 999')

m.val = val_raf

DO scrie_cont

m.contd = '607*.12.'+TRANSFORM(emitent, '@L 999')

m.contc = '371*.12.'+TRANSFORM(emitent, '@L 999')

m.val = val_raf

DO scrie_cont

ENDSCAN

* Repartizare cheltuieli transport pe statii

m.step=m.step+10

DO acterm WITH m.step

SELECT DISTINCT taxa_t ;

FROM preț ;

WHERE (YEAR(per)=anprel AND MONTH(per)=luprel) AND INLIST(fam,'02','07') ;

INTO CURSOR taxe

COUNT TO myart

DO CASE

CASE myart > 1

SELECT DISTINCT taxa_t,per ;

FROM preț WHERE (YEAR(per)=anprel AND MONTH(per)=luprel) AND INLIST(fam,'02','07') ;

INTO CURSOR taxe

COUNT TO myart

COPY TO ARRAY ataxe

FOR i=1 TO ALEN(ataxe)/2

IF i=ALEN(ataxe)/2

m.limita=i

ELSE

m.limita=i+1

ENDIF

SELECT emitent,;

SUM(cant) AS kilo;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc="AVIZEX" ;

AND BETWEEN(data_rec,ataxe(i,2),ataxe(m.limita,2)) ;

AND INLIST(fam,"02","03","05","07") ;

ORDER BY 1;

GROUP BY 1;

INTO CURSOR QUERY

SCAN ALL WHILE !EOF()

m.expl="Chelt tr. dep "+TRANSFORM(emitent, "@L 999")+" ("+ALLTRIM(STR(ataxe(i,1)/1000))+")"

m.contd="624*.01."+TRANSFORM(emitent, "@L 999")

m.contc="482*.42"

m.val=-(kilo * (ataxe(i,1)/1000))

DO scrie_cont

ENDSCAN

ENDFOR

CASE myart=1

SELECT taxe

GO TOP

SELECT emitent,;

SUM(cant) AS kilo;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc="AVIZEX" ;

AND INLIST(fam,"02","03","05","07") ;

ORDER BY 1;

GROUP BY 1;

INTO CURSOR QUERY

SCAN ALL WHILE !EOF()

m.expl="Chelt tr. dep "+TRANSFORM(emitent, "@L 999")

m.contd="624*.01."+TRANSFORM(emitent, "@L 999")

m.contc="482*.42"

m.val=-(kilo * (taxe.taxa_t/1000))

DO scrie_cont

ENDSCAN

CASE myart=0

DO finterm

@ 15,10 SAY "Introduceti valoarea taxei Petrotrans (lei/kg):" ;

GET m.taxa_t pict "999999" DEFAULT 0

READ

CLEAR

DO defterm WITH ' Obtinere documente contabile'

m.step=30

DO acterm WITH m.step

SELECT emitent,;

SUM(cant) AS kilo;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc="AVIZEX" ;

AND INLIST(fam,"02","03","05","07") ;

ORDER BY 1;

GROUP BY 1;

INTO CURSOR QUERY

SCAN ALL WHILE !EOF()

m.expl="Chelt tr. dep "+TRANSFORM(emitent, "@L 999")

m.contd="624*.01."+TRANSFORM(emitent, "@L 999")

m.contc="482*.42"

m.val=-(kilo * m.taxa_t)

DO scrie_cont

ENDSCAN

ENDCASE

m.step=m.step+10

DO acterm WITH m.step

SELECT DISTINCT taxa_t ;

FROM preț ;

WHERE (YEAR(per)=anprel AND MONTH(per)=luprel) AND INLIST(fam,'02','07') ;

INTO CURSOR taxe

COUNT TO myart

DO CASE

CASE myart > 1

SELECT DISTINCT taxa_t,per ;

FROM preț WHERE (YEAR(per)=anprel AND MONTH(per)=luprel) AND INLIST(fam,'02','07') ;

INTO CURSOR taxe

COUNT TO myart

COPY TO ARRAY ataxe

FOR i=1 TO ALEN(ataxe)/2

IF i=ALEN(ataxe)/2

m.limita=i

ELSE

m.limita=i+1

ENDIF

SELECT den_ben,;

SUM(cant) AS kilo ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc="AVIZEX" ;

AND BETWEEN(data_rec,ataxe(i,2),ataxe(m.limita,2)) ;

AND INLIST(fam,"02","03","05","07") ;

ORDER BY 1;

GROUP BY 1;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE !EOF()

m.expl="Chelt tr."+ ;

IIF(INLIST(registru.cod_anal,80,120,160,180)," dep "," st ") ;

+TRANSFORM(registru.cod_anal, "@L 999")+" ("+ALLTRIM(STR(ataxe(i,1)/1000))+")"

m.contd="624*.01."+TRANSFORM(registru.cod_anal, "@L 999")

m.contc="482*.42"

m.val=kilo * (ataxe(i,1)/1000)

DO scrie_cont

ENDSCAN

ENDFOR

CASE myart=1

SELECT taxe

GO TOP

SELECT den_ben,;

SUM(cant) AS kilo ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc="AVIZEX" ;

AND INLIST(fam,"02","03","05","07") ;

ORDER BY 1;

GROUP BY 1;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE !EOF()

m.expl="Chelt tr."+ ;

IIF(INLIST(registru.cod_anal,80,120,160,180)," dep "," st ") ;

+TRANSFORM(registru.cod_anal, "@L 999")

m.contd="624*.01."+TRANSFORM(registru.cod_anal, "@L 999")

m.contc="482*.42"

m.val=kilo * (taxe.taxa_t/1000)

DO scrie_cont

ENDSCAN

CASE myart=0

SELECT den_ben,;

SUM(cant) AS kilo ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc="AVIZEX" ;

AND INLIST(fam,"02","03","05","07") ;

ORDER BY 1;

GROUP BY 1;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE !EOF()

m.expl="Chelt tr."+ ;

IIF(INLIST(registru.cod_anal,80,120,160,180)," dep "," st ") ;

+TRANSFORM(registru.cod_anal, "@L 999")

m.contd="624*.01."+TRANSFORM(registru.cod_anal, "@L 999")

m.contc="482*.42"

m.val=kilo * m.taxa_t

DO scrie_cont

ENDSCAN

ENDCASE

CLOSE data

USE notafpr

SUM ALL VAL FOR nrnota=VAL(STR(m.ln,2)+"185") TO m.totnota

REPLACE ALL totnota WITH m.totnota FOR nrnota=VAL(STR(m.ln,2)+"185")

CLOSE data

* Facturi emise produse petroliere

USE IN 1 registru ALIAS registru

SELECT registru

SET ORDER TO partener

m.step = m.step+10

m.poz = 0

m.nrnota = VAL(STR(m.ln, 2)+'623')

SELECT emitent, den_ben, cupon,SUM(v_rafrec) AS v_rafrec, ;

SUM(v_adaos) AS v_adaos, SUM(v_mttc) AS v_mttc, ;

SUM(v_acciza) AS v_acciza, SUM(v_fspp) AS v_fspp, ;

SUM(v_tva) AS v_tva ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc='FACT' AND fam # '18';

GROUP BY 1, 2, 3 ;

ORDER BY 1, 2, 3 ;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE .NOT. EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl = den_ben

m.contd = '4113.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

IF emitent = 1

m.contc = '7072.03.300'

ELSE

m.contc = '7072.01.'+TRANSFORM(emitent, '@L 999')

ENDIF

m.val = v_rafrec+v_adaos

DO scrie_cont

m.expl = 'TVA '+den_ben

IF emitent = 1

m.contc = '4427.02.003'

ELSE

m.contc = '4427.02.001'

ENDIF

m.val = v_tva

DO scrie_cont

* Taxa drum

m.expl = 'Taxa drum '+den_ben

m.contc = '447*.06.001'

m.val = v_mttc

DO scrie_cont

IF cupon

m.expl = 'B.V.Taxa drum '+den_ben

m.contd = '5329.00.'+TRANSFORM(emitent, '@L 999')

m.contc = '4113.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.val = v_mttc

DO scrie_cont

ENDIF

* Acciza

m.expl = 'Acciza '+den_ben

m.contd = '4113.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.contc = '446*.02'

m.val = v_acciza

DO scrie_cont

* FSPP

m.expl = 'FSPP '+den_ben

m.contc = '447*.09'

m.val = v_fspp

DO scrie_cont

ENDSCAN

* Bonuri fiscale

SELECT emitent, den_ben, SUM(v_rafrec) AS v_rafrec, ;

SUM(v_adaos) AS v_adaos, SUM(v_mttc) AS v_mttc, ;

SUM(v_acciza) AS v_acciza, SUM(v_fspp) AS v_fspp, ;

SUM(v_tva) AS v_tva ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc='BONF' AND fam # '18';

GROUP BY 1, 2 ;

ORDER BY 1, 2 ;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE .NOT. EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl = den_ben

m.contd = '4113.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.contc = '7072.01.'+TRANSFORM(emitent, '@L 999')

m.val = v_rafrec+v_adaos

DO scrie_cont

m.expl = 'TVA '+den_ben

m.contc = '4427.02.001'

m.val = v_tva

DO scrie_cont

* Taxa drum

m.expl = 'Taxa drum '+den_ben

m.contc = '447*.06.001'

m.val = v_mttc

DO scrie_cont

* Acciza

m.expl = 'Acciza '+den_ben

m.contc = '446*.02'

m.val = v_acciza

DO scrie_cont

* FSPP

m.expl = 'FSPP '+den_ben

m.contc = '447*.09'

m.val = v_fspp

DO scrie_cont

ENDSCAN

* Ambalaje

SELECT emitent, den_ben, SUM(v_amb) AS v_amb ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc='FACT' AND fam = '00';

GROUP BY 1, 2 ;

ORDER BY 1, 2 ;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE .NOT. EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl = den_ben

m.contd = '4113.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.contc = '7072.01.'+TRANSFORM(emitent, '@L 999')

m.val = v_amb

DO scrie_cont

ENDSCAN

* Facturi emise taxa incarcare

m.step = m.step+10

SELECT emitent, den_ben, SUM(v_rafrec) AS v_rafrec, ;

SUM(v_tva) AS v_tva ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel ;

AND INLIST(tip_doc,'BONF','FACT') AND fam = '18';

GROUP BY 1, 2 ;

ORDER BY 1, 2 ;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE .NOT. EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl = den_ben

m.contd = '4113.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.contc = '7045.01.'+TRANSFORM(emitent, '@L 999')

m.val = v_rafrec

DO scrie_cont

m.expl = 'TVA '+den_ben

IF emitent = 1

m.contc = '4427.02.003'

ELSE

m.contc = '4427.02.001'

ENDIF

m.val = v_tva

DO scrie_cont

ENDSCAN

* Avize SNP

m.step = m.step+10

DO acterm WITH m.step

m.nrnota = VAL(STR(m.ln, 2)+'623')

SELECT emitent, den_ben, ;

SUM(v_adaos) AS v_adaos, SUM(v_amb) AS v_amb ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc='AVISNP' ;

GROUP BY 1, 2 ;

ORDER BY 1, 2 ;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE .NOT. EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl = den_ben

m.contd = '4827.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.contc = '7045.01.'+TRANSFORM(emitent, '@L 999')

m.val = v_adaos

DO scrie_cont

m.expl = den_ben

m.contd = '4827.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.contc = '381*.01'

m.val = v_amb

DO scrie_cont

ENDSCAN

* Val.rafinarie pe familie

SELECT emitent, den_ben, fam, SUM(v_rafrec) AS v_rafrec ;

FROM mpro ;

WHERE luna=m.luprel AND anul=m.anprel AND tip_doc='AVISNP' ;

GROUP BY 1, 2, 3 ;

ORDER BY 1, 2, 3 ;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE .NOT. EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl = den_ben

m.contd = '4827.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.contc = '371*.01.'+TRANSFORM(emitent, '@L 999')+'.0'+TRANSFORM(fam, '@L 99')

m.val = v_rafrec

DO scrie_cont

ENDSCAN

m.step = m.step+10

DO acterm WITH m.step

m.poz = 0

m.nrnota = VAL(STR(m.ln, 2)+'624')

* Incasare facturi

* Incasare cu SPO vezi mai jos

* Incasare cu EFI Nu se conteaza ; contine numai valoarea taxei

SELECT emitent, den_ben, SUM(iv_tot) AS iv_tot ;

FROM ipro ;

WHERE luna=m.luprel AND anul=m.anprel AND !INLIST(tipdoc,'SPO','EFI') ;

AND snp=.F. ;

GROUP BY 1, 2 ;

ORDER BY 1, 2 ;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE .NOT. EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl = den_ben

m.contd = '482*.42'

m.contc = '581*.20.'+TRANSFORM(emitent, '@L 999')

m.val = -iv_tot

DO scrie_cont

m.contd = '482*.42'

m.contc = '4113.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.val = iv_tot

DO scrie_cont

ENDSCAN

* Incasare facturi sponsorizare

SELECT emitent, den_ben, SUM(iv_tot) AS iv_tot, tipdoc ;

FROM ipro ;

WHERE luna=m.luprel AND anul=m.anprel AND tipdoc='SPO';

GROUP BY 1, 2 ;

ORDER BY 1, 2 ;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE .NOT. EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl = den_ben

m.contd = '6582.00.'+TRANSFORM(emitent, '@L 999')

m.contc = '4113.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.val = iv_tot

DO scrie_cont

ENDSCAN

* Incasare avize catre sucursale Petrom

SELECT emitent, den_ben, SUM(iv_tot) AS iv_tot ;

FROM ipro ;

WHERE luna=m.luprel AND anul=m.anprel AND snp=.T. ;

GROUP BY 1, 2 ;

ORDER BY 1, 2 ;

INTO CURSOR QUERY

SET RELATION TO den_ben INTO registru

SCAN ALL WHILE .NOT. EOF()

IF registru.cod_anal=0

INSERT INTO c:\WINDOWS\temp\cod_zero.dbf (emitent, client) VALUE (query.emitent, query.den_ben)

m.negasit = .T.

ENDIF

m.expl = den_ben

m.contd = '482*.42'

m.contc = '581*.20.'+TRANSFORM(emitent, '@L 999')

m.val = -iv_tot

DO scrie_cont

m.contd = '482*.42'

m.contc = '4827.01.'+TRANSFORM(emitent, '@L 999')+'.'+TRANSFORM(registru.cod_anal, '@L 9999')

m.val = iv_tot

DO scrie_cont

ENDSCAN

CLOSE DATABASES

USE notafpr

SUM ALL FOR nrnota=VAL(STR(m.ln, 2)+'623') VAL TO m.totnota

REPLACE totnota WITH m.totnota ALL FOR nrnota=VAL(STR(m.ln, 2)+'623')

SUM ALL FOR nrnota=VAL(STR(m.ln, 2)+'624') VAL TO m.totnota

REPLACE totnota WITH m.totnota ALL FOR nrnota=VAL(STR(m.ln, 2)+'624')

REPLACE cod WITH VAL(SUBSTR(contd, 9, 3)) ALL FOR INLIST(contd, '411', '4827')

REPLACE cod WITH VAL(SUBSTR(contc, 9, 3)) ALL FOR INLIST(contc, '411', '4827')

RELEASE ALL

CLOSE DATABASES

m.step = 100

DO finterm

IF m.negasit=.T.

DO alarm WITH 'Completati codurile interne pentru clienții afisati si reluati !'

USE c:\WINDOWS\temp\cod_zero.dbf

BROWSE NOAPPEND NOEDIT NODELETE

ENDIF

USE

DELETE FILE c:\WINDOWS\temp\cod_zero.dbf

CLEAR

RELEASE ALL

SHOW POPUP prlpop

DO ecran WITH 'Facturi Produse Depozit'

RETURN

*

*!*****************************************************************

*!

*! Procedure: SCRIE_CONT

*!

*!*****************************************************************

PROCEDURE scrie_cont

IF m.val<>0

m.poz = m.poz+1

INSERT INTO notafpr (nrnota, tipdoc, zi, ln, an, poz, contd, contc, VAL, TEXT, cod, marcaj) VALUE (m.nrnota, 'NC', m.zi, m.ln, m.an, m.poz, m.contd, m.contc, m.val, m.expl, 0, 'FPR')

ENDIF

RETURN

* EOF:CRECONT.PRG

Anexa B – Rapoarte

B1 Baza calcul taxa drum Luna 7 2002

Curs Euro valabil in luna 33296

–––––––––––––––––––––––––––

| Sortiment Kilograme MTR constituit MTR datorat Diferenta |

–––––––––––––––––––––––––––

| 1 2 3 4 5=3-4 |

–––––––––––––––––––––––––––

| Total BZ PREMIUM 2 270074.0 1124047988 1124047988 0 |

| Total BZ FARA PB 42783.0 178062846 178062846 0 |

| Total BZ SUPER 1905.0 7928610 7928610 0 |

| Total MOT LD 1415342.5 5183776192 5183776826 -634 |

=================================================================================

| Total depozite 6493815636 6493816270 -634 |

=================================================================================

Raport editat la data:20/08/2002 ora:12:11:15

B2 Baza calcul acciza Luna 7 2002

Curs Euro valabil in trimestru 33296

–––––––––––––––––––––––––––

| Sortiment Kilograme Acciza constituita Calculat Diferenta |

–––––––––––––––––––––––––––

| 1 2 3 4 5=3-4 |

–––––––––––––––––––––––––––

| Total BZ PREMIUM 2 270074.0 2873966002 2873965895.7 106.28 |

| Total BZ FARA PB 42783.0 374074444 374074426.88 17.12 |

| Total BZ SUPER 1905.0 20271871 20271870.05 0.95 |

| Total PETROL 807.0 3090035 3090035.28 -0.28 |

| Total CLU 3 16880.0 64634194 64634195.20 -1.20 |

| Total MOT LD 1415342.5 5419402390 5419403046.2 -656.20 |

| Total RO3 M20W40 1/1 445.5 741669 741668.40 0.60 |

| Total RO3 M20W40 4/1 1018.8 1696099 1696098.24 0.76 |

| Total RO3 15W40 S31/1 324.0 539395 539395.20 -0.20 |

=================================================================================

| Total depozite 8758416099 8758416631.2 -532.17 |

=================================================================================

Raport editat la data:20/08/2002 ora:12:11:08

B3 Facturi neincasate pe luna 7 2002 (Produse livrate din depozit)

UM 0443 BOLDESTI

PECO PRAHOVA

–––––––––––––––––––––––––––-

|Emitent Client Factura Data Sold factura Vechime |

–––––––––––––––––––––––––––-

| 80 UM 0443 BOLDESTI 189753 21/05/2002 118134287 71 |

| 80 UM 0443 BOLDESTI 189769 24/05/2002 131041815 68 |

| 80 UM 0443 BOLDESTI 4480281 24/05/2002 17768529 68 |

| 80 UM 0443 BOLDESTI 189781 28/05/2002 67783784 64 |

| 80 UM 0443 BOLDESTI 189782 28/05/2002 27068391 64 |

| 80 UM 0443 BOLDESTI 189880 18/06/2002 2322999 43 |

| 80 UM 0443 BOLDESTI 4480895 18/06/2002 3259088 43 |

| 80 UM 0443 BOLDESTI 190146 23/07/2002 77336225 8 |

| 80 UM 0443 BOLDESTI 190153 23/07/2002 56605984 8 |

| 80 UM 0443 BOLDESTI 190166 24/07/2002 39696731 7 |

| 80 UM 0443 BOLDESTI 190167 24/07/2002 9211374 7 |

| 80 UM 0443 BOLDESTI 190170 24/07/2002 1298618 7 |

| Total UM 0443 BOLDESTI 9011 551527825 |

==================================================================================

| Total general 551527825 |

==================================================================================

Raport editat la data:20/08/2002 ora:12:13:20

B4 Facturi neincasate pe luna 7 2002 (Produse livrate din depozit)

UM 0443 BOLDESTI

PECO PRAHOVA

–––––––––––––––––––––––––––-

|Emitent Client Factura Data Sold factura Vechime |

–––––––––––––––––––––––––––-

| 80 UM 0443 BOLDESTI 190166 24/07/2002 39696731 7 |

| 80 UM 0443 BOLDESTI 190167 24/07/2002 9211374 7 |

| 80 UM 0443 BOLDESTI 190170 24/07/2002 1298618 7 |

| 80 UM 0443 BOLDESTI 190146 23/07/2002 77336225 8 |

| 80 UM 0443 BOLDESTI 190153 23/07/2002 56605984 8 |

| 80 UM 0443 BOLDESTI 4480895 18/06/2002 3259088 43 |

| 80 UM 0443 BOLDESTI 189880 18/06/2002 2322999 43 |

| 80 UM 0443 BOLDESTI 189781 28/05/2002 67783784 64 |

| 80 UM 0443 BOLDESTI 189782 28/05/2002 27068391 64 |

| 80 UM 0443 BOLDESTI 4480281 24/05/2002 17768529 68 |

| 80 UM 0443 BOLDESTI 189769 24/05/2002 131041815 68 |

| 80 UM 0443 BOLDESTI 189753 21/05/2002 118134287 71 |

==================================================================================

| Total general 551527825 din care |

| Total pina in 30 zile 184148932 |

| Total 31 – 60 zile 5582087 |

| Total 61 – 90 zile 361796806 |

| Total 91 – 180 zile 0

| Total peste 181 zile 0 |

==================================================================================

Raport editat la data:20/08/2002 ora:12:12:26

B5

BALANTA PE LUNA 7 2002 PECO PRAHOVA

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐

│ │ Initial Intrari Procese de inventar Iesiri Preț rafinarie Final │

│ Sortiment │─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│

│ │Kilograme Valoare Kilograme Valoare Kilograme Valoare Kilograme Valoare 31/07/2002 Kilograme Valoare │

└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

ARAGAZ-GPL 47700.0 422431200 77662.5 687779100 -500.0 -4428000 105137.5 931097700 8856000 19725.0 174684600

ARAGAZ-VOIAJ 27.5 280000 55.0 560000 0 0 44.0 448000 10181818 38.5 392000

BIT H 82/92 1814.6 10887600 0 0 0 0 0 0 6000000 1814.6 10887600

BUTELIE GPL 6292.0 3114540000 5603.0 2773485000 -35.0 -17325000 6142.0 3040290000 495000000 5718.0 2830410000

BUTELIE PET 2268.0 1122660000 3088.0 1528560000 -5.0 -2475000 3753.0 1857735000 495000000 1598.0 791010000

BUTELIE VOIAJ 12.0 6600600 17.0 9350850 0 0 17.0 9350850 550050000 12.0 6600600

BZ EXT 70/100 725.0 9932500 0 0 0 0 0 0 13700000 725.0 9932500

BZ FARA PB 74670.0 565908996 413950.0 3137244260 -339.0 -2569213 415175.0 3146528287 7578800 73106.0 554055753

BZ PREMIUM 2 148389.0 1137001035 1501315.0 11503525928 -802.0 -6145165 1478165.0 11326143700 7662300 170737.0 1308238115

BZ SP FP 44828.0 342970062 21020.0 160819816 -329.0 -2517113 59923.0 458458888 7650800 5596.0 42813877

BZ SUPER 53939.0 421225833 82705.0 645868157 -49.0 -382656 110437.0 862435665 7809300 26158.0 204275669

CLU 3 5658.0 25958904 16880.0 77445440 0 0 16880.0 77445440 4588000 5658.0 25958904

COMB TM 508.0 2651760 0 0 0 0 0 0 5220000 508.0 2651760

GARNITURA ARAG 6994.0 2098200 0 0 0 0 0 0 300000 6994.0 2098200

H46 A 5902.1 104821296 4580.0 81340800 0 0 1897.3 39915313 22022400 8584.8 189057900

L150(M40) 1/1 N 5.0 105760 0 0 0 0 0 0 21152000 5.0 105760

LR 11000 1/1 132.0 699600 0 0 0 0 0 0 5300000 132.0 699600

M30 SUP2 16839.8 346920088 3052.0 62874862 0 0 5219.3 119681048 24704800 14672.5 362481178

M40 SUP2 3100.0 64328720 0 0 0 0 2026.0 42041932 20751200 1074.0 22286789

MOT EURO 26289.0 198219060 2080.0 15683200 0 0 16648.0 125525920 7540000 11721.0 88376340

MOT LD 200371.6 1294600908 1985400.0 12827669400 -231.0 -1492491 1862252.5 12032012285 6461000 323288.1 2088764414

PETROL 40617.0 228470625 0 0 2.0 11250 17316.0 97402500 5625000 23303.0 131079375

RO3 15W40 S31/1 798.3 35178065 2095.2 92327548 0 0 1875.6 82650607 44066222 1017.9 44855007

RO3 15W40 S34/1 1112.4 44580894 1706.4 68386226 0 0 1404.0 56267147 40076316 1414.8 56699972

RO3 M20W40 1/1 1860.3 77868850 4536.0 189868895 0 0 5017.5 210023630 41858222 1378.8 57714116

RO3 M20W40 4/1 1774.8 66890751 2764.8 104203036 0 0 2887.2 108816192 37689177 1652.4 62277596

T90 EP2 SP 7766.5 151446750 716.0 13962000 0 0 3056.4 59600190 19500000 5426.1 105808950

U90 CA3 1783.0 48515430 4800.0 130608000 0 0 1149.0 31264290 29935000 5434.0 162666790

ULEI UZAT 31061.9 36543393 12200.0 14352934 0 0 18350.4 21588680 1176470 24911.5 29307632

WHITESPIRIT 1372.0 15983800 0 0 0 0 0 0 11650000 1372.0 15983800

B6 MECCA PLAST SERVICE PL PECO PRAHOVA JURNAL INCASARI

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

Client Fact. Data fact. Doc.incasare Data doc. Val.rafinarie Adaos Acciza MTR FSPP Ambalaj TVA Val.totala

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

MECCA PLAST SERVICE 189964 28/06/2002 419 01/07/20 7841129 0 0 0 0 0 7841129

189978 28/06/2002 419 04/07/20 68593473 6294127 76634965 34394537 0 0 185917102

189995 02/07/2002 419 04/07/20 5000000 0 0 0 0 0 5000000

190021 08/07/2002 419 12/07/20 66725433 5416741 57232422 36735977 3978069 0 8561009 178649651

190041 10/07/2002 419 10/07/20 30000000 0 0 0 0 0 30000000

190065 15/07/2002 419 18/07/20 0 0 0 4822163 3978069 0 31316211 40116443

190073 15/07/2002 419 19/07/20 57253768 0 0 0 0 0 57253768

190073 15/07/2002 419 18/07/20 9725120 6668942 69039245 36536200 3978070 0 34052423 160000000

190088 17/07/2002 419 19/07/20 44345799 4030932 25880481 24755243 2693557 0 18812367 120518379

190143 22/07/2002 419 22/07/20 46713521 2942321 64039957 25046916 2693558 0 26361116 167797389

190145 23/07/2002 419 23/07/20 20000000 0 0 0 0 0 20000000

Total document 356198243 25353063 292827070 162291036 17321323 0 119103126 973093861

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

189952 26/06/2002 OPL 478 02/07/20 2061590 1756786 1194115 0 0 0 952374 5964865

189953 26/06/2002 OPL 478 02/07/20 46512793 5451261 48674986 34732796 3983779 0 29520649 168876264

189964 28/06/2002 OPL 478 02/07/20 35158871 0 0 0 0 0 35158871

189964 28/06/2002 OPL 480 03/07/20 22485877 6767085 61156701 34856453 3983780 0 32350562 161600458

189964 28/06/2002 OPL 505 10/07/20 2000000 0 0 0 0 0 2000000

189978 28/06/2002 OPL 03/07/20 0 0 0 581488 3983780 0 35434732 40000000

189995 02/07/2002 OPL 486 08/07/20 61781064 5448446 56513203 36788085 3978069 0 31450851 195959718

190000 03/07/2002 OPL 499 09/07/20 66131062 5370513 56665539 36410342 3978069 0 31269717 199825242

190002 04/07/2002 OPL 499 09/07/20 0 0 0 0 0 0 20459894 20459894

190002 04/07/2002 OPL 505 10/07/20 66047886 7260033 51097941 36503237 3978069 0 10112834 175000000

190021 08/07/2002 OPL 505 10/07/20 23000000 0 0 0 0 0 23000000

190021 08/07/2002 OPL 10/07/20 43725433 5416741 57232422 36735977 3978069 0 31561009 178649651

190021 08/07/2002 OPL 505 10/07/20 -23000000 0 0 0 0 0 -23000000

190021 08/07/2002 OPL 10/07/20 -43725433 -5416741 -57232422 -36735977 -3978069 0 -31561009 -178649651

190021 08/07/2002 OPL 505 10/07/20 0 0 0 0 0 0 23000000 23000000

190030 09/07/2002 OPL 511 11/07/20 67472719 6699314 69736903 36800404 3978070 0 34334775 219022185

190041 10/07/2002 OPL 518 15/07/20 36485078 5379077 57538273 36589307 3978068 0 31538430 171508233

190058 11/07/2002 OPL 518 15/07/20 67531299 4872523 75119867 36698019 3978070 0 35002125 223201903

190059 12/07/2002 OPL 418 15/07/20 16000000 0 0 0 0 0 16000000

190059 12/07/2002 OPL 523 17/07/20 49739519 7232002 50917976 36331097 3978069 0 30441912 178640575

190065 15/07/2002 OPL 523 17/07/20 66250916 5382275 56711040 31655769 0 0 160000000

190089 17/07/2002 OPL 534 22/07/20 67289966 6684049 69478186 36702680 3978070 0 34229427 218362378

190093 18/07/2002 OPL 534 22/07/20 67560059 6713240 55726701 0 0 0 130000000

190093 18/07/2002 OPL 535 23/07/20 0 0 14087874 36848350 3978070 0 34377882 89292176

190135 19/07/2002 OPL 535 23/07/20 45474723 3475566 45099274 24865619 2693557 0 22593885 144202624

190140 22/07/2002 OPL 535 23/07/20 27000000 0 0 0 0 0 27000000

190140 22/07/2002 OPL 537 24/07/20 39636578 7320370 51509699 36829871 3978069 0 30836338 170110925

190145 23/07/2002 OPL 545 26/07/20 2628889 3348738 13206359 12632169 1366530 0 9845069 43027754

190152 23/07/2002 OPL 545 26/07/20 66414941 10279034 56806766 36569497 3978069 0 32313346 206361653

190175 24/07/2002 OPL 545 26/07/20 45484334 7195656 7320010 0 0 0 60000000

190175 24/07/2002 OPL 551 29/07/20 0 0 37833762 24869615 2693557 0 23313641 88710575

190182 25/07/2002 OPL 551 29/07/20 67740153 10952254 69925318 36948571 3978070 0 35257596 224801962

190187 26/07/2002 OPL 551 29/07/20 67825538 10970614 21203848 0 0 0 100000000

190187 26/07/2002 OPL 556 30/07/20 0 0 48927872 36991690 3978070 0 35324717 125222349

190189 26/07/2002 OPL 556 30/07/20 22418937 3317668 13083830 12514968 1366530 0 9753727 62455660

190206 29/07/2002 OPL 556 30/07/20 25000000 0 0 0 0 0 25000000

Total document 1150132792 131876504 1089536043 653720027 71786415 0 613714483 3710766264

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

Total client 1506331035 157229567 1382363113 816011063 89107738 0 732817609 4683860125

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

Total incasari 1506331035 157229567 1382363113 816011063 89107738 0 732817609 4683860125

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

B7 Centralizator documente incasare pe luna 07 2002

––––––––––––––––––––––––––––––––––––––––––––––––––

Clienți externi PECO PRAHOVA

Fel document Rafinarie Adaos Acciza MTR FSPP TVA Total

––––––––––––––––––––––––––––––––––––––––––––––––––

<< Neincasata initial >>

Subtotal for 419: 388,904,661 34,985,397 233,428,380 187,502,282 19,057,630 122,428,562 986,306,912

Subtotal for CON: 618,410,269 74,363,808 322,261,539 187,936,370 22,955,103 193,210,056 1,420,996,545

Subtotal for NUM: 560 0 0 0 0 106 666

Subtotal for OPL: 953,523,525 95,084,037 602,787,575 437,928,321 62,898,538 431,346,155 2,583,568,151

Subtotal for OPT: 136,446,385 13,683,054 115,242,122 22,539,581 2,564,665 54,703,117 345,178,924

––––––––––––––––––––––––––––––––––––––––––––––––––

Total << NI >>: 2,097,285,400 218,116,296 1,273,719,616 835,906,554 107,475,936 801,687,996 5,336,051,198

<< Emisa in cursul lunii

Subtotal for 419: 1,721,818,325 166,390,370 1,079,020,316 659,600,943 92,172,278 695,980,685 4,419,401,617

Subtotal for CEC: 238,659,635 25,161,841 117,601,308 111,517,624 12,072,127 93,658,676 598,671,211

Subtotal for EFI: 0 0 0 683,640,000 0 0 683,640,000

Subtotal for NUM: 506,796,930 108,744,874 0 0 0 116,950,583 732,492,387

Subtotal for OPL: 3,757,525,563 384,017,755 2,755,877,712 1,529,494,398 218,733,050 1,699,335,696 10,345,716,174

Subtotal for OPT: 117,729,655 9,025,296 124,220,284 59,727,031 6,433,604 59,033,432 376,169,302

Subtotal for SPO: 204,610,237 19,295,774 234,209,973 106,640,595 11,508,380 0 576,264,959

––––––––––––––––––––––––––––––––––––––––––––––––––

Total << EL >>: 6,547,140,345 712,635,910 4,310,929,593 3,150,620,591 340,919,439 2,664,959,072 17,732,355,650

Total CEC 238,659,635 25,161,841 117,601,308 111,517,624 12,072,127 93,658,676 598,671,211

Total EFI 0 0 0 683,640,000 0 0 683,640,000

Total OPL 4,711,049,088 479,101,792 3,358,665,287 1,967,422,719 281,631,588 2,130,681,851 12,929,284,325

Total OPT 254,176,040 22,708,350 239,462,406 82,266,612 8,998,269 113,736,549 721,348,226

Total 419 2,110,722,986 201,375,767 1,312,448,696 847,103,225 111,229,908 818,409,247 5,405,708,529

Total CON 618,410,269 74,363,808 322,261,539 187,936,370 22,955,103 193,210,056 1,420,996,545

Total NUM 506,797,490 108,744,874 0 0 0 116,950,689 732,493,053

Total SPO 204,610,237 19,295,774 234,209,973 106,640,595 11,508,380 0 576,264,959

======================================================================================================================================================

Grand Total: 8,644,425,745 930,752,206 5,584,649,209 3,986,527,145 448,395,375 3,466,647,068 23,068,406,848

======================================================================================================================================================

Raport editat la data:20/08/2002 ora:12:16:43

B8

PETROM SERVICE BAICOI

PECO PRAHOVA Sold facturi la inceput luna 7 2002

––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

| Client Data Factura Rafinarie Adaos Acciza Taxa drum Fd.special Ambalaj TVA Total |

––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

| PETROM SERVICE BAICOI D 04/06/2002 193974 65891259 6016878 33280181 34875151 3960648 26612059 170636176 |

| PETROM SERVICE BAICOI D 04/06/2002 193975 23653106 1495606 28043095 12016134 1346030 12389509 78943480 |

| PETROM SERVICE BAICOI D 05/06/2002 193979 45893337 4190762 23179684 24290582 2774867 18535329 118864561 |

| PETROM SERVICE BAICOI D 10/06/2002 193985 32290085 2041730 38283087 16403850 1842200 16913563 107774515 |

| PETROM SERVICE BAICOI D 10/06/2002 193986 15735231 994952 18655671 7993734 897800 8242122 52519510 |

| PETROM SERVICE BAICOI D 10/06/2002 193988 132716451 12119038 67032070 70244617 7996056 53601313 343709545 |

| PETROM SERVICE BAICOI D 13/06/2002 193999 5538288 505730 2797264 2931324 335250 2236795 14344651 |

| PETROM SERVICE BAICOI D 13/06/2002 194000 16469799 1041400 19526575 8366906 939707 8626889 54971276 |

| PETROM SERVICE BAICOI D 17/06/2002 194004 32251423 2039285 38237250 16384209 1842200 16893311 107647678 |

| PETROM SERVICE BAICOI D 19/06/2002 194018 45031245 4112040 22744261 23834291 2774867 18187150 116683854 |

| PETROM SERVICE BAICOI D 19/06/2002 194019 129757908 11848878 65537777 68678709 7996056 52406421 336225749 |

| PETROM SERVICE BAICOI D 20/06/2002 194027 29076012 2655084 14685634 15389451 1800294 11743175 75349650 |

| PETROM SERVICE BAICOI D 20/06/2002 194028 16446602 1039933 19499073 8355122 939707 8614739 54895176 |

| PETROM SERVICE BAICOI D 24/06/2002 194037 16771359 1060467 19884104 8520103 960492 8784847 55981372 |

| PETROM SERVICE BAICOI D 27/06/2002 194047 45246768 4131721 22853116 23948364 2774867 18274194 117229030 |

| PETROM SERVICE BAICOI D 27/06/2002 194052 22593781 1428624 26787160 11477981 1294066 11834634 75416246 |

| PETROM SERVICE BAICOI D 27/06/2002 194053 38376156 3504329 19382926 20311863 2353458 15499302 99428034 |

| PETROM SERVICE BAICOI D 28/06/2002 194061 55340071 3499200 65611125 28113591 3177838 28987157 184728982 |

| PETROM SERVICE BAICOI D 28/06/2002 194062 52326372 4778197 26428864 27695481 3209016 21133494 135571424 |

––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

| Total client 821405253 68503854 572448917 429831463 49215419 359516003 2300920909 |

––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

| Total general 821405253 68503854 572448917 429831463 49215419 359516003 2300920909 |

––––––––––––––––––––––––––––––––––––––––––––––––––––––––-

Raport editat la data:20/08/2002 ora:12:17:25

B11

JURNAL FACTURI PE LUNA 7 2002

MECCA PLAST SERVICE PL

PECO PRAHOVA

==========================================================

Data facturii Factura Val.tot emisa Val.tot incasata

–––––––––––––––––––-

<< MECCA PLAST SERVICE PL >>

26/06/2002 189952 5964865 5964865

26/06/2002 189953 168876264 168876264

28/06/2002 189964 206600458 206600458

28/06/2002 189978 225917102 225917102

02/07/2002 189995 200959718 200959718

03/07/2002 190000 199825242 199825242

04/07/2002 190002 195459894 195459894

08/07/2002 190021 201649651 201649651

09/07/2002 190030 219022185 219022185

10/07/2002 190041 201508233 201508233

11/07/2002 190058 223201903 223201903

12/07/2002 190059 194640575 194640575

15/07/2002 190065 200116443 200116443

15/07/2002 190073 217253768 217253768

17/07/2002 190088 120518379 120518379

17/07/2002 190089 218362378 218362378

18/07/2002 190093 219292176 219292176

19/07/2002 190135 144202624 144202624

22/07/2002 190140 197110925 197110925

22/07/2002 190143 167797389 167797389

23/07/2002 190145 63027754 63027754

23/07/2002 190152 206361653 206361653

24/07/2002 190175 148710575 148710575

25/07/2002 190182 224801962 224801962

26/07/2002 190187 225222349 225222349

26/07/2002 190189 62455660 62455660

29/07/2002 190200 207997660 0

29/07/2002 190206 206074861 25000000

30/07/2002 190209 207884053 0

–––––––––––––––––––-

NEINCASATA INITIAL 607358689 607358689

–––––––––––––––––––-

EMISA LUNAR 4673458010 4076501436

–––––––––––––––––––-

TOTAL INCASAT 4683860125

–––––––––––––––––––-

TOTAL NEINCASAT 596956574

–––––––––––––––––––-

TOTAL GENERAL

NEINCASATA INITIAL 607358689 607358689

EMISA LUNAR 4673458010 4076501436

TOTAL INCASAT 4683860125

TOTAL NEINCASAT 596956574

Raport editat la data:23/08/2002 ora:12:07:29

B12

JURNAL PENTRU VINZARI Luna: 7/2002 PECO PRAHOVA

VIZIMUR CATUNU Cod fiscal:R7169300

===============================================================================================================================

Numarul | Data | Totalul | Facturi | FSPP |___________Baza de impozitare T.V.A.________________| T.V.A.

Facturii| emiterii | facturii | scutite | |Valoare totala| Mărfuri | | Alte elemente| colectat

| |(inclusiv TVA) | de TVA | | fara TVA | (Val.raf.) | Ambalaje | (Ad+Acc+Mtr) | (brut)

===============================================================================================================================

4481247 01/07/2002 3200000 0 0 2689076 2214000 0 475076 510924

4481562 10/07/2002 4640000 0 0 3899160 3210300 0 688860 740840

4481781 18/07/2002 4000000 0 0 3361345 2767500 0 593845 638655

4482000 26/07/2002 3200000 0 0 2689076 2214000 0 475076 510924

––––––––––––––––––––––––––––––––––––––––––-

Total client 15040000 0 0 12638657 10405800 0 2232857 2401343

––––––––––––––––––––––––––––––––––––––––––-

ZOOPROD MIZIL Cod fiscal:14263503

===============================================================================================================================

Numarul | Data | Totalul | Facturi | FSPP |___________Baza de impozitare T.V.A.________________| T.V.A.

Facturii| emiterii | facturii | scutite | |Valoare totala| Mărfuri | | Alte elemente| colectat

| |(inclusiv TVA) | de TVA | | fara TVA | (Val.raf.) | Ambalaje | (Ad+Acc+Mtr) | (brut)

===============================================================================================================================

195676 08/07/2002 4047516 0 90388 3325318 1489347 0 1835971 631810

196000 16/07/2002 4047516 0 90388 3325318 1489347 0 1835971 631810

345240 29/07/2002 3381079 0 73649 2779353 1213785 0 1565568 528077

––––––––––––––––––––––––––––––––––––––––––-

Total client 11476111 0 254425 9429989 4192479 0 5237510 1791697

––––––––––––––––––––––––––––––––––––––––––-

Total general 35615923071 564756579 705195308 28862160673 12498818256 5552400 16357790017 5483810511

===============================================================================================================================

Raport editat la data:20/08/2002 ora:12:18:38

B13

Nota contabila

BIBLIOGRAFIE

Similar Posts