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
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Aplicatie Informatica Pentru Urmarirea Activitatii Depozitelor (ID: 148824)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
