marți, 1 septembrie 2015

Noul blog andreilungu.com

Așa cum am anunțat în acest post blogul s-a mutat pe o nouă platformă. Adresă este: andreilungu.com

În cazul în care doriți să primiți  în continuare email atunci când scriu un articol nou, vă rog să vă abonați pe noul site. Nu voi mai posta articole pe acest blog.

Citește în continuare ->

joi, 16 iulie 2015

Confirmare așteptări acțiune BVB

Salutare ! Scriam în acest articol despre acțiunea ROCE, iar în acesta am selectat-o cu ajutorul aplicației Excel drept prima recomandare pentru cumpărare.

Rezultatele au început deja să apară, creşterea pe această acţiune fiind una considerabilă în doar câteva luni de când am început să acumulez (12.5% profit în aproximativ 2-3 luni):




Nu doresc să mă laud, ci să promovez investițiile pe bursa românească și educația financiară a românilor, mai ales că în prezent volumul tracțiilor de pe bvb este unul extrem de mic comparativ cu ceea ce se întâmplă pe alte burse mai mature.

De asemenea, am observat în ultimul timp inițiative și din partea Bursei de Valori București, cum ar fi spre exemplu, programul "Fluent în Finance" , prin care bursa intenționează să atragă atenția asupra importanței de a gestiona în mod eficient propriile resurse. Pentru cei interesați a fost redactat și un ghid care poate fi descărcat și studiat gratuit aici. 

Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

vineri, 3 iulie 2015

Excel VBA Split Rows Trick and Announcement

Today i have to make an announcement: in the near future I intend to migrate the blog to a new one with a new design and completely in english because I want to develop a better project and reach readers from Romania, but also from other countries. The content will remain the same: finance and accounting, Excel automations and apps, SQL, Access etc.

Now, let's talk about an Excel problem which i recently had to solve. In reality i had a worksheet with thousands of rows (so the manual work which could take days wasn't a solution), but for illustrating purposes i created a file with few rows and no confidential data :)

! Challenge: You have the data from Range("A2:E4"). Split the rows by company codes: for Each Company code separated by a character (; or , or / or -) automatically create a new row. The rest of the data from other columns remains the same for the new rows. Every Company Code string can have different lenght and betwen codes and separators can be spaces.

Initial:







Result:







My code for solving this is the following:

Sub split_rows()

'original code by Andrei Lungu

lr = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row

counter_ch = 0
ismore = False

col_comp_code = "C"

Application.ScreenUpdating = False

For i = lr To 2 Step -1

    Set check_cell0 = ActiveSheet.Range(col_comp_code & i)
    
    check_cell = Replace(check_cell0, " ", "")
    
    counter = 0
        For j = 1 To Len(check_cell)
        
            counter_ch = counter_ch + 1
            activechar = Mid(check_cell, j, 1)
            
            If activechar = "," Or activechar = ";" Or activechar = "/" Or activechar = "-" Then
            ismore = True
                Separator = activechar
                
                counter = counter + 1
                ActiveSheet.Rows(i).Offset(0).EntireRow.Insert
                where_starts = j - (counter_ch - 1)
                company_code = Mid(check_cell, where_starts, counter_ch - 1)
                
    
                ActiveSheet.Range(col_comp_code & i) = company_code
                
            counter_ch = 0
            End If
        
        Next j
                
    'last comp code
    If ismore = True Then
    
    'find out the position of the last separator
                    last_sep = counter
                    char_no = 1
                    counter2 = 0
                    For k = 1 To Len(check_cell)
                    
                        activechar2 = Mid(check_cell, k, 1)
                        char_no = char_no + 1
                        If activechar2 = "," Or activechar2 = ";" Or activechar2 = "/" Or activechar2 = "-" Then
                        counter2 = counter2 + 1
                        If counter2 = last_sep Then
                            last_sep_char_no = char_no
                            'MsgBox last_sep_char_no
                        End If
                        
                        End If
                    
                    Next k
            
    'copy last company code
        last_company_code = Right(check_cell, Len(check_cell) - last_sep_char_no + 1)
        ActiveSheet.Range(col_comp_code & i).Offset(counter) = last_company_code
        
    'copy rest of data
        Do While counter > 0
        
        ActiveSheet.Range("A" & i & ":B" & i).Offset(counter).Copy ActiveSheet.Range("A" & i & ":B" & i).Offset(counter - 1)
        ActiveSheet.Range("D" & i & ":E" & i).Offset(counter).Copy ActiveSheet.Range("D" & i & ":E" & i).Offset(counter - 1)
        counter = counter - 1
        Loop
    
    End If
    
    ismore = False
    
        counter_ch = 0
        counter = 0

Next i

Application.ScreenUpdating = False

End Sub

If you have other ideas please share them in a comment.

The sample file can be downloaded from this location.

Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

joi, 4 iunie 2015

3 methods to summarize total amounts per users and years in Excel 2013 [Pivot Table, Dictionaries, Arrays]

Suppose that we have some raw data like in the image and we need to summarize it in Excel by Names and Years. Although in most of the cases the easiest way to complete this task is by using an Excel Pivot Table or SUMIF/SUMIFS formulas, there might be cases when we will want/need to use other methods. (especially when creating VBA scripts for process automation).

In this post i will present 2 fast alternatives which i used lately and a comparison regarding the speed. Which method will be the fastest: the Pivot Table, the VBA Dictionaries or the VBA Variant Arrays ? You will  also find the sample file download link at the end of the post.

Method 1: VBA Dictionaries. You can read more about them in this article. The code i used to summarize more than 135.000 rows of data using this method is the following:
Sub test_d()

Dim namesdictionary As Dictionary
Dim yearsdictionary As Dictionary

Set namesdictionary = New Dictionary '-main dictionary with names
Set yearsdictionary = New Dictionary '-secondary dictionary with years
Set ws = ActiveSheet
lr = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

StartTime = Timer

ws.Range("F3:H1000").ClearContents

For i = 2 To lr

dKey = ws.Range("A" & i)
damount = ws.Range("B" & i)
dyear = ws.Range("D" & i)

If namesdictionary.Exists(dKey) Then 'if the name already exists then set yearsdictionary in namesdictionary with the key from the row

    Set yearsdictionary = namesdictionary(dKey)
    If yearsdictionary.Exists(dyear) Then         'check if the year already exists in yearsdictionary and if is true then add the amount from the row to the yearsdictionary amount

        damount = damount + yearsdictionary(dyear)
        yearsdictionary(dyear) = damount
        
    Else
    yearsdictionary.Add dyear, damount     'if it doesn't exist then add new years dictionary with the row amount
    
    End If
    
Else                                'if the name does not exist then add yearsdictionary and namesdictionary for that row

Set yearsdictionary = New Dictionary
yearsdictionary.Add dyear, damount

namesdictionary.Add dKey, yearsdictionary

End If

Next i

'scrie valorile
r = 3
For Each dKey In namesdictionary.Keys

    Set yearsdictionary = namesdictionary(dKey)
    
    For Each dyear In yearsdictionary.Keys
    
    ws.Range("F" & r) = dKey
    ws.Range("G" & r) = dyear
    ws.Range("H" & r) = yearsdictionary(dyear)
    r = r + 1
    
    Next dyear
    
Next dKey

'set dictionaries to nothing to release the memory
Set namesdictionary = Nothing
Set yearsdictionary = Nothing

SecondsElapsed = Round(Timer - StartTime, 2)
ws.Range("F15") = "Time: " & SecondsElapsed & " seconds"
ws.Range("F15").Font.Italic = True
ws.Range("F15:H15").Interior.Color = RGB(255, 128, 128)
ws.Range("F16") = "No of rows: " & lr

End Sub

Method 2: VBA Variant Arrays. More about them in this article. The code for the same data:
Sub test_array()

Set ws = ActiveSheet
lr = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim x() As Variant, y() As Variant

StartTime = Timer

ws.Range("R3:T1000").ClearContents      'clear old data

'copy data
ws.Range("A2:A" & lr).Copy ws.Range("R3")
ws.Range("D2:D" & lr).Copy ws.Range("S3")
Application.CutCopyMode = False

'remove duplicates
ws.Range("$R$2:$S$" & lr + 1).RemoveDuplicates Columns:=Array(1, 2), Header _
        :=xlYes

x = ws.Range("A2:D" & lr).Value                                         'array with gross data
y = ws.Range("R3:T" & ws.Cells(ws.Rows.Count, "R").End(xlUp).Row).Value      'array with summarized data

'loop through arrays and summarize amounts by names and years
amount = 0
For i = LBound(y) To UBound(y)
    For j = LBound(x) To UBound(x)
    
    If y(i, 1) = x(j, 1) And y(i, 2) = x(j, 4) Then
        amount = amount + x(j, 2)
    End If
    
    Next j
    
    y(i, 3) = amount
    amount = 0
    
Next i

'write array to sheet including the summarized amounts
ws.Range("R3:T" & ws.Cells(ws.Rows.Count, "R").End(xlUp).Row) = y

Erase x()
Erase y()

SecondsElapsed = Round(Timer - StartTime, 2)
ws.Range("R15") = "Time: " & SecondsElapsed & " seconds"
ws.Range("R15").Font.Italic = True
ws.Range("R15:T15").Interior.Color = RGB(255, 128, 128)

End Sub

Method 3: Excel Pivot Table with dynamic source data range. The formula for the source data range is the following:" =OFFSET(Sheet1!$A$1;0;0;COUNTA(Sheet1!$A:$A);4)" . This named range is defined in Excel Formulas --> Name manager and then is set as source data range for the pivot table. After this, when you add more rows in the raw data range and refresh the pivot table, the source will be updated dynamicaly.











 The speed results for more than 135.000 rows of sample data, core i5 laptop with 16 gb RAM (the variances are significant depending on the computer performance):

1) Pivot Table (only refresh): 0.19 seconds.
2) VBA Variant Arrays: 0.81 seconds.
3) VBA Dictionaries: 2.78 seconds. Although this was the slowest method, in other situations it can be very useful and it is also very interesting. 

 Code for using dictionaries to take only unique values:
Sub unique_names()

Dim namesdictionary As Dictionary
Set namesdictionary = New Dictionary
Set ws = ActiveSheet
lr = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

ws.Range("N2:N100").ClearContents

'insert unique values to dictionary
For i = 2 To lr

On Error Resume Next
namesdictionary.Add ws.Range("A" & i).Value, 1
On Error GoTo 0

Next i

'write values to column N
r = 2
For Each dKey In namesdictionary.Keys
ws.Range("N" & r) = dKey
r = r + 1
Next


End Sub

Code to refresh the pivot table in VBA:
Sub refresh_pt()

Set ws = ActiveSheet

StartTime = Timer

'refresh pivot
For Each pt In ws.PivotTables

        pt.RefreshTable

Next pt

SecondsElapsed = Round(Timer - StartTime, 2)
ws.Range("J15") = "Time: " & SecondsElapsed & " seconds"
ws.Range("J15").Font.Italic = True
ws.Range("J15:L15").Interior.Color = RGB(255, 128, 128)


End Sub


Link to download the file with all methods.

Hope it will be useful ;)

Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

joi, 30 aprilie 2015

Aplicatie Import si Analiza date de pe site- Partea 2 [VIDEO]

 Aplicația este realizată în Excel 2013 și oferă următoarele funcții:

1) Import automat al datelor financiare din anul dorit pentru toate companiile cu date pe site-ul bursei de valori Bucuresti.
2)  Calculul unor indicatorii proprii pe baza datelor importate.
3)  Un sistem prin care fiecare indicator calculat al unei companii obține un anumit punctaj în funcție de valorile din fiecare an. Prin însumarea punctajelor pe indicatori, fiecare companie obține un punctaj general, iar în final se genereaza raporte cu datele sortate în funcție de aceste punctaje. Cele cu valorile cele mai mari sunt companiile cele mai recomandate pentru cumpărare din punct de vedere fundamental.
Urmăriți mai jos prezentarea parții 2 a aplicației: Importul unor date de pe site, calcul indicatori, calcul punctaje si generare raport.



Descărcați fișierul generat de aplicație in Video 2
Urmăriți si partea 1 a prezentării aici
 
Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

duminică, 26 aprilie 2015

Aplicatie Import si Analiza date de pe site- Partea 1 [VIDEO]

Aplicația este realizată în Excel 2013 și își propune să ofere următoarele funcții:

1) Import automat al datelor financiare din anul dorit pentru toate companiile cu date pe site-ul bursei de valori Bucuresti.
2)  Calculul unor indicatorii proprii pe baza datelor importate.
3) Crearea unui sistem prin care fiecare indicator calculat al unei companii va obține un anumit punctaj în funcție de valorile din fiecare an. Prin însumarea punctajelor pe indicatori, fiecare companie va obține un punctaj general, iar în final voi sorta companiile în funcție de aceste punctaje. Cele cu valorile cele mai mari vor fi cele mai recomandate pentru cumpărare. 

Urmăriți mai jos prezentarea parții 1 a aplicației: Importul datelor de pe site:


Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

joi, 16 aprilie 2015

Ce "reduceri" mai sunt pe bursa

Pe bursa noastră de valori se pot cumpăra multe acțiuni la prețuri extrem de bune din punctul meu de vedere. De exemplu, când mă uit la tabelul de mai jos, mă simt ca în lunile Februarie sau August în mall când peste tot sunt numai afișe cu Sale 75%.. Numai că la bvb reducerile sunt chiar mai mari.. 

Atenție însă, aceste acțiuni sunt foarte riscante și trebuie cumpărate doar cu bani de care nu avem neapărat nevoie în următorii ani.Cu alte cuvinte, sunt doar pentru cei care rezistă să vadă și pierderi de 50% sau 70% în portofoliu fără să își "smulgă părul din cap".

Ideea mea cu aceste acțiuni este că la un moment dat prețurile lor se vor dubla sau chiar tripla cum se întâmplă deseori pe bursă. Totul depinde însă de performanțele economice pe care le vor realiza în următorii ani. Oricum nu sunt companii care funcționează în pierdere de ani de zile, ca alte exemple.


Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

vineri, 10 aprilie 2015

Despre cumpărarea produselor românești.

Astăzi vreau să vă povestesc o întâmplare legată de "mitul" cumpărării de produse made in Romania. Pasionat fiind de ceasuri, am avut nevoie să cumpăr o curea de piele pentru un Seiko. Cum doream ceva puțin mai deosebit (un model "Aviator"), m-am gândit să apelez la cineva din România care oferă curele de ceas hand-made.

Toate bune și frumoase, îmi trimite persoana respectivă pe e-mail vreo zece modele foarte drăguțe de curele împreună cu descriere și detalii despre preț. Aici apare problema. Cel mai ieftin produs costa 100 lei + 20 de lei transport, iar cel mai scump peste 200 de lei + transport. Destul de mult având în vedere că vorbim doar despre o bucată de piele, ce-i drept lucrată manual. Fiind dispus să cheltui maxim 100 de lei pentru acest "moft",  i-am scris vânzătorului că îi pot oferi 100 lei inclusiv transport pentru modelul de 100 lei + 20 de lei transport. Răspunsul nu a întârziat să apară, vânzătorul spunându-mi că nu negociază prețul.

După cum v-am precizat, îmi plac ceasurile și de aceea m-am mai uitat de o curea cum îmi doream și prin alte părți. Astfel, am reușit să găsesc una la fel ca cea confecționată în România, pe ebay.co.uk la un vânzător din Spania, la prețul de 21 euro + 2 euro transport, adică aproximativ 100 lei inclusiv transport. Prima întrebare pe care mi-am pus-o a fost "de ce transportul de la Oradea la București costă aproape 5 euro, iar cel din Spania la București 2 euro ?", iar a doua întrebare a fost "de ce cureaua confecționată în România unde toate costurile sunt mai mici decât în Spania costă mai mult decât cea confecționată în Spania ?" 

Apoi, am intrat într-un cunoscut magazin de ceasuri din magazinul "Unirea" unde am găsit o curea cum căutam la prețul de 70 lei, iar pe etichetă avea înscripționat prețul de 12 euro (aprox. 55 lei), probabil cu cât se vinde în afară...

Deși inițial am dorit să cumpăr un produs "made in România", în final am cumpărat un produs "de afară" deoarece mi s-a oferit un raport calitate-preț mult mai bun pentru ceea ce am dorit să cumpăr. 

Ceea ce doresc să transmit prin acest articol este faptul că pentru ca economia României să prospere, românii să cumpere produse confecționate de români, iar străinii să importe produse confecționate de români, este necesar ca produsele românești să fie competitive, iar raportul preț-calitate să fie  mai bun decât cel al altor produse. Cât timp acest lucru nu se întâmplă, prefer să cumpăr pâine prăjită din Ungaria (cum am văzut în supermaketuri) și curele de ceas din Spania

Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

sâmbătă, 4 aprilie 2015

Regula lui 72: în câți ani dublăm o sumă la o anumită rată anuală a rentabilității ?

Regula lui 72 este o metodă simplificată de a calcula rapid în câți ani dublăm suma investită considerând o rată de rentabilitate fixă anulă în condițiile capitalizării câștigului anual. Aflăm acest lucru împărțind 72 la rata rentabilității.

De exemplu dacă avem 100 de lei la o rată anuală de 10%, dupa primul an vom avea 100 * 10%= 10 lei câștig, în al doilea an 110 lei * 10% = 11 lei și tot asa. În cât timp vom avea 200 de lei ? Folosind Regula lui 72, calculăm 72 / 10 = 7.2 ani, deci peste aproximativ 7.2 ne dublăm suma la o rată anuală de 10%.

Această metodă oferă valori estimative și se utilizează de către investitori pentru a afla foarte rapid o valoare grosieră. După cum putem vedea, în tabelul de mai jos am calculat numărul de ani necesari pntru dublarea investiției la toate ratele cuprinse intre 1% si 100%, utilizând regula lui 72 și calcul matematic exact. Când avem rate de rentabilitate mici regula lui 72 oferă rezultate destul de apropiate de valorile reale, dar în cazul ratelor mari, diferențele sunt semnificative. În aceste cazuri pentru a afla un răspuns corect este necesar să utilizăm formula matematică:
Logaritm în bază (1 + rata dobanzii) de 2.

Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

vineri, 6 martie 2015

[VIDEO] Aplicatie Excel pentru Calcul Rate Credite Bancare

Mai jos puteți viziona un tutorial de prezentare a unei mini-aplicatii care calculeaza ratele creditelor bancare (pentru credite cu rate egale sau descrescătoare) precum și o sumă maxim recomandabilă de contractare a unui credit în funcție de venitul net introdus de utilizator. 

Fișierul permite de asemenea printarea rapidă sau salvarea în format *pdf a graficului de rambursare al creditului pe care îl simulați. 

Funcții Excel utilizate în realizarea mini-aplicației:
1) Excel VBA (modificare formule in funcție de tipul creditului ales si de numarul de luni introdus, mesaj sumă maximă recomandabilă în funcție de venit, printare rapidă, salvare rapidă ca pdf, rulare cod recalcul credit la modificare valoare credit, procent dobânda și număr luni etc)
2) Funcția PMT (la calculul creditului cu rate egale)
3) Data Validation (la Input Values- Număr Rate nu pot fi introduse valori <0)
4) Formatare Condiționată (la marginile negre dinamice ale celulelor din graficului de rambursare)
5) Funcția Goal Seek (calcul sumă maximă recomandabilă în funcție de venit)


LINK DOWNLOAD APLICATIE !!!

V-ar putea interesa și:
- Smart Invoicer
- Running App
- Working Days Analyzer
- Calculator on-line pentru bursă
- Calculator Salariu Brut pornind de la Net
- Link Collection Manager

Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

joi, 5 februarie 2015

[VIDEO] Link Collection Manager App [VBA, Dashboard, Grafice]

Puteți găsi mai jos un videoclip de prezentare + download link pentru o nouă mini-aplicație realizată în Excel 2013. În cadrul acesteia veți întâlni modalități de stocare și filtrare inteligentă a datelor, dar și un dashboard cu grafice interactive ce se actualizează dinamic în urma introducerii de noi rânduri.



Download "Link Collection Manager" apăsând aici.

V-ar putea interesa și:
- Smart Invoicer
- Running App
- Working Days Analyzer
- Calculator on-line pentru bursă
- Calculator Salariu Brut pornind de la Net

Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

sâmbătă, 13 decembrie 2014

[VIDEO] Calcul Salariu Brut pornind de la Salariul Net + Functia Excel Goal Seek



PS1) Exemplele din acest video au scopul de a reflecta modalitatea in care putem beneficia de prevederile legale. Sa nu intelegeti ca sunt de acord cu salarii foarte mici acordate angajatiilor cu multe persoane in intretinere daca acestia sunt competenti !!! In conditii normale salariul net ar trebui majorat, iar impozitul platit statului diminuat in cazul aparitiei deducerii personale pentru un angajat competent, iar costul total pentru societate va ramane neschimbat. Va rog nu judecati exemplele ca si cum ar fi in defavoarea angajatiilor. Cel mai important: Salariul este cel negociat de fiecare angajat in functie de competente, experienta, implicare si alti factori obiectivi sau subiectivi. Eu nu am vorbit despre salarii in mod absolut, ci despre cum le putem calcula astfel incat sa platim cat mai putin statului conform normelor impuse de el insusi.


PS2) Imi cer scuze pentru ca am repetat de atatea ori cuvantul "da!?" in acest video. Sunt inca amator in domeniul prezentarilor video, dar promit ca pe viitor voi incerca sa realizez tutoriale de o calitate mai buna ! 

Download link fisier

Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

sâmbătă, 6 decembrie 2014

[Reglementari] Ghid persoane fizice autorizate (PFA)

PFA este persoana autorizată să desfăşoare orice formă de activitate economică permisă de lege, folosind în principal forţa sa de muncă. Conform normelor legale pot deveni PFA cetaţenii care au împlinit 18 ani, nu au săvârşit infracţiuni economice şi au pregatire profesională în domeniul în care doresc să fie autorizaţi.

ETAPELE înfiinţării şi gestionării din punct de vedere fiscal a unei PFA sunt următoarele:

1) Înainte de începerea activităţii economice: solicitarea înregistrarii în registrul comerţului şi autorizarii funcţionării. Cererea de înregistrare în registrul comerţului şi de autorizare a funcţionării se depune la registrul comerţului de pe lângă tribunalul din judeţul în care solicitantul îşi stabileşte sediul profesional si va fi însoţită de documentaţia prevăzută în anexa (vezi la finalul articolului).

2) Sediul: PFA au sediul profesional declarat prin cererea de înregistrare în registrul comerţului şi de autorizare a funcţionării. (trebuie să deţii un drept de folosinţă asupra imobilului la adresa căruia acesta este declarat.)

3) Certificatul de înregistrare, conţinând codul unic de înregistrare, este documentul care atestă înregistrarea în registrul comerţului, autorizarea funcţionării, precum şi luarea în evidenţă de către autoritatea fiscală competentă se elibereaza de Reg Comertului. 

4) Impunerea veniturilor este reglementată de Legea nr. 571/2003 privind Codul fiscal, cu modificările şi completările ulterioare, Titlul III - Impozitul pe venit, precum şi de Normele metodologice date în aplicarea acestuia, aprobate prin HG nr. 44/2004, cu modificările şi completările ulterioare.

5) Depunerea declaratiei privind venitul estimat (Declaratia 220): la ANAF în termen de 15 zile de la data inceperii activităţii / până pe 31 Ianuarie inclusiv dacă realizezi venituri impuse pe baza de norme de venit şi în anul fiscal anterior ai înregistrat venituri mai mari de echiv. în lei a 100.000 euro- în acest caz ai obligatia determinării venitului net în sistem real, începand cu anul urmator /  până pe 25 Mai a anului de impunere, odată cu declaraţia privind venitul realizat (D200) dacă ai realizat pierderi sau venituri pe perioade mai mici decât anul fiscal sau din motive obiective estimezi că vei obţine venituri care diferă cu cel putin 20% faţă de anul anterior / până pe 31 ianuarie inclusiv dacă ai deşfăsurat activităţi impuse pe baza de norme de venit şi soliciţi trecerea pt anul fiscal următor la impunere în sistem real sau invers. 

6) Stabilirea plăţilor anticipate: Anaf emite o decizie de impunere, pe baza venitului anual estimat. La stabilirea plaţilor anticipate se utilizeaza cota unică de 16%. Plaţile anticipate se fac in 4 rate egale până la data de 25 inclusiv a ultimei luni din fiecare trimestru. Dacă ai desfăşurat activitate în anul precedent, iar stabilirarea plaţilor anticipate se face după expirarea termenelor de plată, ai obligaţia să efectuezi plăţile anticipate la nivelul la nivelul sumei datorate pentru ultimul termen de plata al anului precedent. Diferenţele se vor repartiza pe termenele de plată urmatoare. Pt declaraţiile privind venitul estimat depuse în luna Decembrie nu se mai stabilesc plăţi anticipate, venitul net aferent perioadei până la sfârșitul anului urmând să fie supus impozitarii potrivit deciziei de impunere emise pe baza declaraţiei privind venitul realizat. 

7) Poţi opta pentru stabilirea venitului anual estimat pe bază de norme de venit (indiferent de ce venit realizezi, plăteşti impozitul şi contribuţiile la nivelul normei de venit aferente activităţii si judeţului unde desfasori activitatea) sau în sistem real pe baza datelor din contabilitatea în partida simplă. Dacă optezi pt norme de venit nu mai trebuie să ţii contabilitate în partidă simplă, dar activităţile care pot opta pt norme de venit sunt cele prevazute prin OMFP 2875/2011. În cazul în care desfaşori o activitate impusa pe bază de normă de venit şi o altă activitate independentă, venitul net estimat se calculează pe baza contabilitaţii în partidă simplă. 

 7.1.) Stabilirea venitului net anual pe baza normelor de venit: normele de venit se stabilesc şi se publică anual, în cursul trimestrului IV al anului anterior celui in care se aplica. Normele de venit ââse pot consulta accesând ACEST LINK. Dacă desfăşori 2 sau mai multe activităţi comerciale, venitul net se stabileşte prin însumarea normelor de venit corespunzatoare fiecarei tip de activitate. În cazul în care optezi pt norme de venit, trebuie să completezi Registrul Jurnal de Încasari şi Plăti, doar partea referitoare la încasari, cf. legii contabilităţii în partidă simpla (Link). Dacă desfăşori o activitate independentă care generează venituri, pe o perioada de timp mai mica decât anul calendaristic, norma de venit se corecteaza a.i. să reflecte perioada în care a fost desfasurată activitatea. 

7.2. Stabilirea venitului net anual în sistem real: se determina ca diferenta intre Venitul brut si cheltuielile efectuate in scopul desfasurarii activitatii, pe baza datelor din contabilitatea in partida simpla. Trebuie sa organizezi contabilitate in partida simpla si sa completezi Registrul de incasari si plati, Registrul Inventar si alte documente contabile prevazute de legislatie. Completearea acestor documente este similara cu cea aferenta situatiei profesiilor liberale, prezentata in acest articol: Ghid privind contabilitatea si fiscalitatea Profesiilor Liberale

8) Contributiile sociale (CAS): Declararea veniturilor pt stabilirea contribuţiilor sociale se realizeaza prin depunerea Declaratiei 600. Venitul declarat constituie baza de calcul lunara pt stabilirea obligaţiilor de plată lunare pe care trebuie să le efectuezi în cursul anului ca plati anticipate. Plata se efectueaza trimestrial, în 4 rate egale, până pe data de 25 inclusiv a ultimei luni din fiecare trimestru, prin decizie de impunere ANAF. D 600 se depune anual, pana pe 31 Ianuarie inclusiv a anului pt care se datoreaza CAS. Dacă începi activitatea în cursul anului, trebuie să completezi D 600 în termen de 15 zile de la începere. 
Excepţii:  A) Dacă venitul rămas după deducerea cheltuielilor este sub 35% din venitul salarial mediu brut pe aferent anului respectiv, nu se mai datoreaza CAS. În 2014 salariul mediu brut= 2298, deci limita de venit până la care nu se datoreaza CAS va fi 35% * 2298= 804 lei / lună.  
B) Baza de calcul a CAS nu poate depăși 5 * salariul mediu brut. De exemplu, dacă în 2014 un contribuabil obține venituri nete mai mari de 5 * 2298 = 11.490 lei, CAS va fi 31.3% * 11.490 lei= 3596 lei. 
C) Dacă se obțin și venituri din salarii pentru care se plătește CAS, nu se mai datoreaza CAS și pentru venitul din activitatea independenta. 

9) Contributia de asigurari sociale de sanatate (CASS): Declararea veniturilor pt stabilitea CASS, are loc prin depunerea declaratiei de venit estimat/norma de venit sau a declaratiei privind venitul realizat. Plaţile se efectueaza similar CAS. Obligația de plată a CASS nu poate fi mai mică decât salariul minim brut pe țară, dacă venitul este singurul asupra căruia se calculează contribuția. În prezent salariul minim fiind 900 lei, CASS minim de plată va fi 5.5% * 900= 50 lei.

Contribuțiile se achită la trezoreria statului. 

10) Declaratia privind venitul realizat (D 200): se depune până la data de 25 Mai a anului urmator celui în care s-a desfăşurat activitatea. Aceasta declaraţie nu se depune în cazul veniturilor declarate pe baza de norme de venit, cu excepţia cazului în care ai depus declaraţii privind venitul estimat / norma de venit în luna Decembrie şi nu s-au stabilit plăţi anticipate. 

11) Impozitul anual datorat: se încrie în dezia de impunere ANAF şi se calculează prin aplicarea cotei de 16% asupra venitului net impozabil. Diferenţele de impozit rămase de achitat (faţă de plăţile anticipate) cf. deciziei de impunere anuale, se efectueaza în termen de max. 60 de zile de la data comunicării deciziei de impunere, perioada pt care nu se calculeaza şi nu se datoreaza penalităţi/dobanzi de intarziere.  

12) TVA: Te înregistrezi în scopuri de TVA în următoarele 2 situaţii:

* Prin opţiune
* Prin depăşirea plafonului de scutire din Codul Fiscal, de 220.000 lei. 

Pt înreg în scopuri de TVA se poate opta la înfiinţarare, în cererea de la Registrul Comertului sau ulterior prin depunarea la ANAF a următoarelor declaraţii:
•    D 070 : pt activităţi desfaurate individual
•    D 010: pt activităţi desfasurate în cadrul unei asocieri fără personalitate juridica.
Ulterior, trebuie să depui la ANAF decontul de TVA (D300) lunar/trimestrial, Declaraţia privind livrările/prestările şi achiziţiile efectuate pe teritoriul naţional (D394)  lunar/trimestrial, D392A, precum şi alte declaraţii prevăzute de legislaţie, în functie de situaţia specifică. 

Pe site-ul ANAF poate fi consultat calendarul declaraţiilor fiscale din 2014 accesând acest link.

13) Aparate de marcat electronice si fiscal: daca obţii venituri din activitati comerciale, ai obligatia utilizarii aparatelor de marcat electronice fiscale si de a emite si preda clientilor bonuri fiscale. La solicitarea clientilor trebuie sa emiti si factura fiscala. Obligatia utilizarii acestor aparate ia nastere de la data inceperii activitatilor comerciale in fiecare locatie. 
Exceptii: comerţ cu amanuntul prin comis-voiajori precum şi prin corespondeţă cu excepţia livrărilor de bunuri la domiciliu efectuate de magazine / unitaţi de alimentaţie publică pe bază de comandă; serviciile de instalaţii, reparaţii şi întreţinere a bunurilor, efectuate la domiciliul clientului; efectuarea lucrărilor de construcţii, reparaţii, amenajări şi întreţinere de locuinţe.  
Aparatele de marcat electronice fiscal sunt necesare numai în cazul în care vinzi produse / prestezi servicii şi catre persoane fizice. 

14) BINE DE ŞTIUT: 

Dacă te gândeşti să înlocuieşti contractul individual de muncă cu PFA deoarece este mai avantajos din punct de vedere fiscal, ar trebui să ştii urmatoarele lucruri:

Pot functiona ca PFA persoanele fizice care desfasoara activităţi independente ! În cazul unui control, o activitate independentă se poate reconsidera ca fiind activitate dependentă, dacă cel puţin unul din următoarele criterii este îndeplinit:

A) beneficiarul de venit se află într-o relaţie de subordonare faţă de plătitorul de venit, respectiv organele de conducere ale plătitorului de venit, şi respectă condiţiile de muncă impuse de acesta, cum ar fi: atribuţiile ce îi revin şi modul de îndeplinire a acestora, locul desfăşurării activităţii, programul de lucru;

B) în prestarea activităţii, beneficiarul de venit foloseşte exclusiv baza materială a plătitorului de venit, respectiv spaţii cu înzestrare corespunzătoare, echipament special de lucru sau de protecţie, unelte de muncă sau altele asemenea şi contribuie cu prestaţia fizică sau cu capacitatea intelectuală, nu şi cu capitalul propriu;
C) plătitorul de venit suportă în interesul desfăşurării activităţii cheltuielile de deplasare ale beneficiarului de venit, cum ar fi indemnizaţia de delegare-detaşare în ţară şi în străinătate, precum şi alte cheltuieli de această natură;

D) plătitorul de venit suportă indemnizaţia de concediu de odihnă şi indemnizaţia pentru incapacitate temporară de muncă, în contul beneficiarului de venit.

Dacă îţi este reconsiderată activitatea atunci, pe lângă ce ai plătit ca PFA vei mai plăti şi sumele aferente activităţii dependente. -Conform Art.7, Alin.1, pct. 2.2 din Codul Fiscal. : "În cazul reconsiderării unei activităţi ca activitate dependentă, impozitul pe venit şi contribuţiile sociale obligatorii, stabilite potrivit legii, vor fi recalculate și virate, fiind datorate solidar de către plătitorul şi beneficiarul de venit.  În acest caz se aplică regulile de determinare a impozitului pentru veniturile din salarii realizate în afara funcţiei de bază"
 
ANEXA:

Documentaţia de susţinere a cererii de înregistrare în registrul comerţului şi de autorizare a funcţionării PFA

-cerere tip
-dovada verificarii disponibilitatii si rezervarea denumirii.
-carte de identitate sau pasaport
-document care sa ateste dreptul de folosinta asupra sediului profesional/punct de lucru (contract de vanzare-cumparare sau contract de inchiriere sau comodat)
-avizul privind schimbarea destinatiei imobilului colectiv cu regim de locuinta
-specimenul de semnatura a PFA
-declaratie pe proprie raspundere care sa ateste indeplinirea conditiilor legale de functionare prevazute de legislatia speciala din domeniu:sanitar,sanitar-veterinar,protectia mediului si protectia muncii.
-documentul care atesta pregatirea profesionala sau experienta profesionala.
-taxele de registru   

Pregătirea sau experienţa profesională se atestă, după caz, cu documente cum sunt: diploma, certificatul sau adeverinţa, prin care se dovedeşte absolvirea unei instituţii de învăţământ, certificatul de calificare profesională sau de absolvire a unei forme de pregătire profesională, organizată în condiţiile legii, în vigoare la data eliberării acestuia, certificatul de competenţă profesională, cartea de meşteşugar, carnetul de muncă al solicitantului, declaraţie de notorietate cu privire la abilitatea de a desfăşura activitatea pentru care se solicită autorizarea, eliberată de primarul localităţii respective în mod gratuit în cazul meseriilor tradiţionale artizanale, atestatul de recunoaştere şi/sau de echivalare pentru persoanele fizice care au dobândit calificarea în străinătate, atestatul de recunoaştere a calificării dobândite în străinătate, în afara sistemului de învăţământ, orice alte dovezi care să ateste experienţa profesională.

SURSE (LEGISLATIE utila):
1)    OUG 44/2008

Citește în continuare ->

vineri, 21 noiembrie 2014

[Reglementari] Contabilitatea si fiscalitatea profesiilor liberale- ce trebuie sa stii?

Definirea profesiilor liberale şi încadrarea veniturilor obtinute din aceste activitati

Profesiile liberale sunt următoarele:  avocat, notar, auditor financiar, consultant fiscal,expert contabil, contabil autorizat, consultant de plasament în valori mobiliare, traducator autorizat, arhitect si alte profesii reglementate, desfăşurate în mod independent,  în condiţiile legii.

Veniturile din profesii liberale realizate in mod individual si/sau intr-o forma de asociere sunt cuprinse in cadrul veniturilor din activitati independente, reglementate prin Codul Fiscal.

 
Pașii pe care trebuie să îi urmați

Se ține contabilitate în partidă simplă conform ordinului 1040 din 2004 și se aplică prevederile Codului Fiscal referitoare la Veniturile din activități independente.

1) Contribuabilii care obțin venituri din profesii liberale au obligația să se înregistreze la ANAF prin depunerea formularului 070.

2) După aceea, trebuie depusă declarația 220 în termen de maxim 15 zile de la începerea activității. În aceast document veți estima venitul realizat până la finalul anului curent.

3) Plățile anticipate se fac în 4 rate egale până pe 22 inclusiv a ultimei luni din fiecare trimestru (ex: pentru T1 până la 25.03 plătești 16% din venitul net estimat pt T1)

4) Dacă în anul anterior au existat pierderi, au fost estimate venituri pe perioade mai mici de 12 luni sau se estimeaza realizarea de venituri care diferă cu cel puțin 20% față de anul anterior, contribuabilii trebuie să depună 220 până pe 25 Mai al anului de impunere, odata cu declarația privind venitul realizat.

5) Venitul net anual este Venitul Brut minus Cheltuielile effectuate în scopul realizării de venituri, deductibile, pe baza datelor din contabilitatea în partida simplă.

6) Registrul Jurnal de Încasări și plăți și Registrul Inventar se înregistrează la ANAF parafate și șnuruite.

7) TVA:  Înregistrarea în scopuri de TVA are loc:
  • Prin opțiune
  • Dacă este depășit plafonul de scutire de 220.000 lei (din Venitul Brut)
Dacă te înregistrezi în scopuri de TVA:
  • Depui D300 trimestrial
  • Depui D394 lunar/trimestrial
  • Depui D392 annual
  • Evidența TVA colectată (la ce vinzi) se ține cu ajutorul Jurnalului pentru Vânzări. În acesta se înregistrează pe bază de documente (facturi fiscale, bonuri de comandă-chitanță) valoarea bunurilor livrate și/sau a serviciilor prestate și TVA aferentă.
  •  Evidența TVA deductibilă se ține cu Jurnalul pentru cumpărări: se înregistrează valoarea serviciilor / bunurilor primite de la terți.

8) Opțional, poate fi deținut și Registrul Unic de Control. (în lege este specificat acest lucru ca fiind opțional, dar în practică ANAF poate solicita și acest registru. În cazul în care se întâmplă acest lucru, puteți argumenta prin citarea ART 1, alineatul 2 din legea 253/2003 privind registrul unic de control)

9) Până pe 25 Mai anul următor, se depune declarația 200 privind Venitul realizat.

10) Impozitul se stabilește de ANAF aplicând 16% asupra Venitului net impozabil. Impozitul se înscrie în decizia de impunere. 
- Diferențele de impozit rămase de achitat conform deciziei de impunere se plătesc în maxim 60 de zile de la data comunicării deciziei de impunere.

11. Contribuțiile Sociale:

11.1 CAS (pensii): 31.3% * baza de calcul. Declararea venitului pentru stabilirea CAS se face prin D600. Se depune până pe 31.01 an curent sau în termen de 15 zile de la începerea activității pentru persoanele nou înregistrate. Plățile anticipate se fac în 4 tranșe până pe 25 a ultimei luni din trimestru.

Excepții:

    * Dacă venitul rămas după deducerea cheltuielilor este sub 35% din venitul salarial mediu brut pe aferent anului respectiv, nu se mai datoreaza CAS. În 2014 salariul mediu brut= 2298, deci limita de venit până la care nu se datoreaza CAS va fi 35% * 2298= 804 lei / lună.
   * Baza de calcul a CAS nu poate depăși 5 * salariul mediu brut. De exemplu, dacă în 2014 un contribuabil obține venituri nete mai mari de 5 * 2298 = 11.490 lei, CAS va fi 31.3% * 11.490 lei= 3596 lei.
   * Dacă se obțin și venituri din salarii pentru care se plătește CAS, nu se mai datoreaza CAS și pentru venitul din profesii liberale.

11.2. CASS (sănătate): obligația de plată a CASS nu poate fi mai mică decât salariul minim brut pe țară, dacă venitul din profesii liberale este singurul asupra căruia se calculează contribuția. În prezent salariul minim fiind 900 lei, CASS minim de plată va fi 5.5% * 900= 50 lei.

Contribuțiile se achită la trezoreria statului.

12) Toate declarațiile se întocmesc în câte 2 exemplare. Unul se depune la ANAF, iar celălalt se păstrează de contribuabil cu nr. De înregistrare de la ANAF. Toate documentele justificative (cele pe baza cărora se întocmește Registrul Jurnal de încasări și plăți) se arhivează. Registrul Jurnal de încasări și plăți se arhivează și se păstrează timp de 10 ani.

13) Completarea Registrului de Încasări și Plăți se poate face în Excel sau într-un program de contabilitate în partidă simplă, urmând ca în registrul cumpărat de la ANAF să se treacă numai totalurile veniturilor și cheltuielilor de la sfârșitul fiecărei luni.

14) Completarea Registrului Inventar: la finalul fiecărui an se completează informațiile referitoare la toate bunurile care s-au cumpărat în scopul desfășurării activității (și pentru care s-au dedus cheltuieli) și drepturile și obligațiile aferente (creanțe / datorii).

Atenție: dacă valoarea bunurilor cumpărate depășește valoare legală (2500 lei în prezent), iar durata normală de utilizare este mai mare de un an, aceste bunuri intră în categoria mijloacelor fixe și se aplică prevederile legale referitoare la amortizare ! (nu se deduce intreaga cheltuială în luna în care s-a realizat achiziția, ci se deduce lunar o parte din aceasta în funcție de durata de utilizare din catalogul mijloacelor fixe.

Ex: dacă prețul de achizitie al unui laptop este 3000 de lei fără TVA, trebuie să îl amortizezi pe o perioadă între 3-5 ani. Dacă estimezi că îl vei folosi 3 ani, suma dedusă în fiecare lună va fi 3000 : 3: 12 = 83.33 lei.

Pentru întrebări referitoare la acest subiect mă puteţi contacta prin modalităţile de contact pe care le găsiţi pe pagina Andrei


Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->

duminică, 19 octombrie 2014

Funcţie Custom Made Excel VBA: Distanţa Medie Alergată Lunar

Am descoperit mai demult un mic bug la aplicaţia mea de alergare pe care am postat-o şi pe blog aici. Mai exact, în sheet-ul "Years Comparison", la calcularea distanţei medii lunare, într-o singură situaţie rezultatul nu era corect: când în luna în curs nu aveam nicio alergare.

Dar haideţi să vedem exact care a fost problema ce trebuia rezolvată şi care este rezolvarea mea:

După cum puteţi vedea şi în imaginea din dreapta care se poate mări apăsând pe ea, avem o bază de date cu alergările fiecărui user din aplicaţie. (în acest exemplu, doar eu :) ). 

Am dorit să calculez Distanţa Medie lunară alergată ţinând cont de următoarele criterii:
      - se iau în considerare doar lunile în care am alergat cel puţin 1 km. Daca într-o lună nu am alergat deloc se exclude din calcularea mediei. Mai exact vreau să văd media doar în lunile în care am alergat;
        -  se iau în calcul doar distanţele alergate în luni terminate, nu şi cele din luna în curs. De exemplu, daca în lunile Ianuarie, Februarie şi Martie am alergat câte 100 de km, iar azi suntem în 1 Aprilie şi am alergat 2 km, nu trebuie să ne păcălim calculând media ca (100+100+100+2)/4 = 75.5 km lunar, deoarece rezultatul nu este corect. Trebuie să calculăm doar pentru lunile încheiate, deci în  acest exemplu media ar fi (100+100+100)/3= 100 km lunar. 
           -   trebuie să putem calcula media automat, pe fiecare an, tip de alergare şi user. Mai precis, dacă în imaginea din dreapta selectăm un alt tip de activitate sau un alt user media trebuie să se modifice, iar daca avem alergari şi în alţi ani, pe coloana anului respectiv trebuie să apară distanţa medie alergată. 

Iniţial am combinat o mulţime de funcţii Excel şi am ajuns la o formulă lungă cât o zi de post şi care nu arăta deloc bine şi în plus era şi foarte dificil de corectat. Arăta cam aşa:
De mai demult am avut ideea de a crea o User Defined Function care să arate mai "omenesc" şi să calculeze mai eficient şi mai corect, însă abia astăzi mi-am făcut timp şi chef să o creez şi să o postez pe blog pentru cei interesaţi de subiect.

Funcţia are 3 argumente obligatorii: anul, tipul alergării şi userul şi se introduce în bara de formule a Excel-ului, la fel ca funcţiile predefinite:

Cum funcţionează ?


Puteţi descărca fişierul Excel apăsând AICI.

Funcţia este creată folosind Excel VBA, iar codul care face toate calculele este cel de mai jos.

Cu siguranţă sunt şi alte metode de rezolvare a acestei probleme, deci dacă ai o idee mai bună, te rog să scrii un comentariu.
Function MonthlyDstAverage(selyear As Long, seltype As String, seluser As String) As Double

Application.Volatile True

iyear = year(Date) ' current year
Set ws = ThisWorkbook.Sheets("Data Base")

'Find the lastrow from sheet data base
If ws.Range("A4") = "" Then
lastrow = 1
Else: lastrow = ws.Range("A3").End(xlDown).Row
End If

'if the selected year is in future then the average is 0 because we cannot have runs in future
While iyear < selyear
MonthlyDstAverage = 0
Exit Function
Wend
    
cmonth = Month(Date)  'the current month

monthswithruns = 0     'months when we ran more than 0 kilometers
cmonthruns = cmonth    'the lastmonth used for calculating the average. If we ran in current month min once, the lastmonth will be current month minus 1

'-----------------------CALCULATE----------------------------------
'if the selected type of runs is All then calculate monthly average
Select Case seltype

Case "All"

'calculate the number of months with runs
   For i = 1 To cmonth
    
        If Application.WorksheetFunction.CountIfs(ws.Range("K:K"), selyear, ws.Range("J:J"), i, ws.Range("C:C"), seluser) > 0 Then
        monthswithruns = monthswithruns + 1
        End If

    Next i
    
'calculate number of runs from current month and if we ran min once then subsctract one month

        If Application.WorksheetFunction.CountIfs(ws.Range("K:K"), selyear, ws.Range("J:J"), cmonth, ws.Range("C:C"), seluser) > 0 Then
        monthswithruns = monthswithruns - 1
        cmonthruns = cmonth - 1
        End If
    
'calculate distance ran in interval matching selected criteria
    randst = 0
    For j = 1 To lastrow
        For k = 1 To cmonthruns
    
            If ws.Cells(j, 11) = selyear And ws.Cells(j, 10) = k And ws.Cells(i, 3) = seluser Then
            randst = randst + ws.Cells(j, 4).Value
            End If
        Next k
    Next j

    MonthlyDstAverage = randst / monthswithruns
'--------------------------------------------------------------------------
'if the selected type is different then All then calculate monthly average including the criteria with run type
Case Else

    'calculate the number of months with runs
    For i = 1 To cmonth
    
    If Application.WorksheetFunction.CountIfs(ws.Range("K:K"), selyear, ws.Range("J:J"), i, ws.Range("G:G"), seltype, ws.Range("C:C"), seluser) > 0 Then
        monthswithruns = monthswithruns + 1
    End If

    Next i
    
    'calculate number of runs from current month and if we ran min once then subsctract one month
        If Application.WorksheetFunction.CountIfs(ws.Range("K:K"), selyear, ws.Range("J:J"), cmonth, ws.Range("G:G"), seltype, ws.Range("C:C"), seluser) > 0 Then
        monthswithruns = monthswithruns - 1
        cmonthruns = cmonth - 1
        End If
    
    'calculate distance ran in interval matching selected criteria
    randst = 0
    For j = 1 To lastrow
        For k = 1 To cmonthruns
    
            If ws.Cells(j, 11) = selyear And ws.Cells(j, 10) = k And ws.Cells(j, 7) = seltype And ws.Cells(i, 3) = seluser Then
            randst = randst + ws.Cells(j, 4).Value
            End If
        Next k
    Next j

    MonthlyDstAverage = randst / monthswithruns

End Select

End Function

Subscribe to Un mod diferit de a privi Economia by Email
Citește în continuare ->