Skip to content

Commit 973cf07

Browse files
Adding price and SAC simulators
1 parent 6c9ea63 commit 973cf07

File tree

5 files changed

+353
-0
lines changed

5 files changed

+353
-0
lines changed

README.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
* [Validador de CPF](#validaCPF)
88
* [Gerador de CNPJ](#geraCNPJ)
99
* [Validador de CNPJ](#validaCNPJ)
10+
* [Cálculo de Financiamento PRICE](#calculaPRICE)
11+
* [Cálculo de Financiamento SAC](#calculaSAC)
12+
* [Cálculo de Prestação](#calculaPAGTO)
1013
* [Cálculo de Valor Futuro](#calculaVF)
1114
* [Cálculo de Valor Presente](#calculaVP)
1215
* [Setup](#setup)
@@ -95,6 +98,83 @@
9598
```
9699
* Os stat codes e messages podem ser vistos em include/std_messages_api.js
97100

101+
102+
## calculaPRICE
103+
* Arquivo: calculaPRICE.js
104+
* Calculo de financiamento por tabela PRICE - Sistema Frances de Amortizacao
105+
* URL: http://.../calculaPRICE
106+
* Body => JSON
107+
```
108+
{ "authKey":"", "param": [vl, i, n]} Ex.: { "authKey":"", "param": [1000, 1.5, 12]}
109+
```
110+
* onde vl = valor financiado / i = taxa de juros / n = numero de periodos
111+
* Method: GET ou POST
112+
* Retorno:
113+
```
114+
{
115+
"statCode": "<status code>",
116+
"statMsg": "<status message>",
117+
"result": [
118+
[
119+
###, Numero da parcela
120+
###.##, Vl. da Prestação
121+
###.##, Vl. da Amortização
122+
###.##, Vl dos Juros
123+
###.## Saldo devedor
124+
],[...]
125+
]
126+
}
127+
```
128+
* Os stat codes e messages podem ser vistos em include/std_messages_api.js
129+
130+
## calculaSAC
131+
* Arquivo: calculaSAC.js
132+
* Calculo de financiamento por tabela SAC
133+
* URL: http://.../calculaSAC
134+
* Body => JSON
135+
```
136+
{ "authKey":"", "param": [vl, i, n]} Ex.: { "authKey":"", "param": [1000, 1.5, 12]}
137+
```
138+
* onde vl = valor financiado / i = taxa de juros / n = numero de periodos
139+
* Method: GET ou POST
140+
* Retorno:
141+
```
142+
{
143+
"statCode": "<status code>",
144+
"statMsg": "<status message>",
145+
"result": [
146+
[
147+
###, Numero da parcela
148+
###.##, Vl. da Prestação
149+
###.##, Vl. da Amortização
150+
###.##, Vl dos Juros
151+
###.## Saldo devedor
152+
],[...]
153+
]
154+
}
155+
```
156+
* Os stat codes e messages podem ser vistos em include/std_messages_api.js
157+
158+
## calculaPAGTO
159+
* Arquivo: calculaPAGTO.js
160+
* Cálculo financeiro para valor de Prestação
161+
* URL: http://.../calculaPAGTO
162+
* Body => JSON
163+
```
164+
{ "authKey":"", "param": [vl, i, n]} Ex.: { "authKey":"", "param": [1000, 1.5, 12]}
165+
```
166+
* onde vl = valor financiado / i = taxa de juros / n = numero de periodos
167+
* Method: GET ou POST
168+
* Retorno:
169+
```
170+
{
171+
"statCode": "<status code>",
172+
"statMsg": "<status message>",
173+
"result": #####.## correspondente ao valor da prestação
174+
}
175+
```
176+
* Os stat codes e messages podem ser vistos em include/std_messages_api.js
177+
98178
## calculaVF
99179
* Arquivo: calculaVF.js
100180
* Cálculo financeiro para Valor Futuro

app.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ const objGeraCNPJ = require('./scripts/geraCNPJ');
77
const objValidaCNPJ = require('./scripts/validaCNPJ');
88
const objCalculaVF = require('./scripts/calculaVF');
99
const objCalculaVP = require('./scripts/calculaVP');
10+
const objCalculaPAGTO = require('./scripts/calculaPAGTO');
11+
const objCalculaPRICE = require('./scripts/calculaPRICE');
12+
const objCalculaSAC = require('./scripts/calculaSAC');
1013

1114
var app = express();
1215
var port = process.env.PORT || 8080;
@@ -46,6 +49,18 @@ app.get('/calculaVP', function (req, res) {
4649
res.json(objCalculaVP.doCalculaVP(req.body));
4750
});
4851

52+
app.get('/calculaPAGTO', function (req, res) {
53+
res.json(objCalculaPAGTO.doCalculaPAGTO(req.body));
54+
});
55+
56+
app.get('/calculaPRICE', function (req, res) {
57+
res.json(objCalculaPRICE.doCalculaPRICE(req.body));
58+
});
59+
60+
app.get('/calculaSAC', function (req, res) {
61+
res.json(objCalculaSAC.doCalculaSAC(req.body));
62+
});
63+
4964
app.listen(port);
5065

5166
console.log("Servico de APIs iniciado na porta " + port);

scripts/calculaPAGTO.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
const objStdMessages = require('../include/std_messages_api');
2+
const objValidacoes = require('../include/validacoes');
3+
4+
var funMain = function (json_obj_entrada) {
5+
var result;
6+
var json_output;
7+
8+
console.log("Parametros de entrada: " + JSON.stringify(json_obj_entrada));
9+
10+
if (json_obj_entrada.length < 2) {
11+
json_output = objStdMessages.stdMessages[3];
12+
} else {
13+
14+
if (json_obj_entrada["authKey"] == null || json_obj_entrada["param"] == null) {
15+
json_output = objStdMessages.stdMessages[3];
16+
} else {
17+
18+
if (json_obj_entrada["authKey"] != null) {
19+
//Verifica a permissao de uso
20+
//Como eh publica, todos podem usar
21+
if (true) {
22+
23+
if (json_obj_entrada["param"].length != 3) {
24+
//Bad request
25+
json_output = objStdMessages.stdMessages[4].replace('__RESULT__', '"Parametros invalidos. Utilizar: Valor Financiado, Tx. Juros, Periodos"');
26+
} else {
27+
//Executa o codigo da API
28+
//Parametros esperados
29+
//V = valor financiado
30+
//n = numero de periodos
31+
//i = taxa de juros
32+
33+
var v = json_obj_entrada["param"][0];
34+
var i = json_obj_entrada["param"][1];
35+
var n = json_obj_entrada["param"][2];
36+
37+
var strResult = (v) * (((i / 100) * Math.pow((1 + (i / 100)), n)) / (Math.pow((1 + (i / 100)), n) - 1));
38+
39+
json_output = objStdMessages.stdMessages[0].replace('__RESULT__', strResult);
40+
41+
v = null;
42+
i = null;
43+
n = null;
44+
45+
}
46+
} else {
47+
//Forbidden
48+
json_output = objStdMessages.stdMessages[2];
49+
}
50+
51+
} else {
52+
//Forbidden
53+
json_output = objStdMessages.stdMessages[2];
54+
}
55+
56+
}
57+
}
58+
return JSON.parse(json_output);
59+
}
60+
61+
module.exports = {
62+
doCalculaPAGTO: funMain
63+
}

scripts/calculaPRICE.js

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
const objStdMessages = require('../include/std_messages_api');
2+
const objValidacoes = require('../include/validacoes');
3+
4+
var funMain = function (json_obj_entrada) {
5+
var result;
6+
var json_output;
7+
8+
console.log("Parametros de entrada: " + JSON.stringify(json_obj_entrada));
9+
10+
if (json_obj_entrada.length < 2) {
11+
json_output = objStdMessages.stdMessages[3];
12+
} else {
13+
14+
if (json_obj_entrada["authKey"] == null || json_obj_entrada["param"] == null) {
15+
json_output = objStdMessages.stdMessages[3];
16+
} else {
17+
18+
if (json_obj_entrada["authKey"] != null) {
19+
//Verifica a permissao de uso
20+
//Como eh publica, todos podem usar
21+
if (true) {
22+
23+
if (json_obj_entrada["param"].length != 3) {
24+
//Bad request
25+
json_output = objStdMessages.stdMessages[4].replace('__RESULT__', '"Parametros invalidos. Utilizar: Valor Presente, Tx. Juros, Periodos"');
26+
} else {
27+
//Executa o codigo da API
28+
//Parametros esperados
29+
//VP = valor presente
30+
//n = numero de periodos
31+
//i = taxa de juros
32+
33+
var v = json_obj_entrada["param"][0];
34+
var i = json_obj_entrada["param"][1];
35+
var n = json_obj_entrada["param"][2];
36+
37+
var aryResultado = [];
38+
39+
var pmt = (v) * (((i / 100) * Math.pow((1 + (i / 100)), n)) / (Math.pow((1 + (i / 100)), n) - 1));
40+
var juros = v * (i / 100);
41+
42+
var amort = pmt - juros;
43+
var saldo = v - amort;
44+
45+
for (var a = 0; a < n; a++) {
46+
//Colunas Mes / Prestacao / Amortizacao / Juros / Saldo Devedor
47+
aux = [(a + 1), pmt.toFixed(2), amort.toFixed(2), juros.toFixed(2), saldo.toFixed(2)];
48+
aryResultado.push(aux);
49+
50+
juros = saldo * (i / 100);
51+
amort = pmt - juros;
52+
saldo = saldo - amort;
53+
54+
}
55+
a = null;
56+
57+
var strSep = "";
58+
var strResult = '[';
59+
60+
for (var a = 0; a < aryResultado.length; a++) {
61+
strResult = strResult + strSep + "[" + aryResultado[a][0] + "," + aryResultado[a][1] + "," + aryResultado[a][2] + "," + aryResultado[a][3] + "," + aryResultado[a][4] + "]";
62+
if (a == 0) { strSep = ","; }
63+
}
64+
a = null;
65+
strSep = null;
66+
strResult = strResult + ']';
67+
68+
json_output = objStdMessages.stdMessages[0].replace('__RESULT__', strResult);
69+
70+
vp = null;
71+
i = null;
72+
n = null;
73+
strResult = null;
74+
juros = null;
75+
pmt = null;
76+
amort = null;
77+
saldo = null;
78+
aryResultado = null;
79+
80+
}
81+
} else {
82+
//Forbidden
83+
json_output = objStdMessages.stdMessages[2];
84+
}
85+
86+
} else {
87+
//Forbidden
88+
json_output = objStdMessages.stdMessages[2];
89+
}
90+
91+
}
92+
}
93+
return JSON.parse(json_output);
94+
}
95+
96+
module.exports = {
97+
doCalculaPRICE: funMain
98+
}

scripts/calculaSAC.js

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
const objStdMessages = require('../include/std_messages_api');
2+
const objValidacoes = require('../include/validacoes');
3+
4+
var funMain = function (json_obj_entrada) {
5+
var result;
6+
var json_output;
7+
8+
console.log("Parametros de entrada: " + JSON.stringify(json_obj_entrada));
9+
10+
if (json_obj_entrada.length < 2) {
11+
json_output = objStdMessages.stdMessages[3];
12+
} else {
13+
14+
if (json_obj_entrada["authKey"] == null || json_obj_entrada["param"] == null) {
15+
json_output = objStdMessages.stdMessages[3];
16+
} else {
17+
18+
if (json_obj_entrada["authKey"] != null) {
19+
//Verifica a permissao de uso
20+
//Como eh publica, todos podem usar
21+
if (true) {
22+
23+
if (json_obj_entrada["param"].length != 3) {
24+
//Bad request
25+
json_output = objStdMessages.stdMessages[4].replace('__RESULT__', '"Parametros invalidos. Utilizar: Valor Financiado, Tx. Juros, Periodos"');
26+
} else {
27+
//Executa o codigo da API
28+
//Parametros esperados
29+
//V = valor financiado
30+
//i = taxa de juros
31+
//n = numero de periodos
32+
33+
var v = json_obj_entrada["param"][0];
34+
var i = json_obj_entrada["param"][1];
35+
var n = json_obj_entrada["param"][2];
36+
37+
var aryResultado = [];
38+
39+
var juros = v * (i / 100);
40+
var pmt = (v / n) + juros;
41+
var amort = (v / n);
42+
var saldo = v - amort;
43+
44+
for (var a = 0; a < n; a++) {
45+
//Colunas Mes / Prestacao / Amortizacao / Juros / Saldo Devedor
46+
var aux = [(a + 1), pmt.toFixed(2), amort.toFixed(2), juros.toFixed(2), saldo.toFixed(2)];
47+
aryResultado.push(aux);
48+
49+
juros = saldo * (i / 100);
50+
saldo = saldo - amort;
51+
pmt = amort + juros;
52+
53+
}
54+
a = null;
55+
56+
var strSep = "";
57+
var strResult = '[';
58+
59+
for (var a = 0; a < aryResultado.length; a++) {
60+
strResult = strResult + strSep + "[" + aryResultado[a][0] + "," + aryResultado[a][1]+ "," + aryResultado[a][2] + "," + aryResultado[a][3] + "," + aryResultado[a][4] + "]";
61+
if (a == 0) { strSep = ","; }
62+
}
63+
a = null;
64+
strSep = null;
65+
strResult = strResult +']';
66+
67+
json_output = objStdMessages.stdMessages[0].replace('__RESULT__', strResult);
68+
69+
vp= null;
70+
i = null;
71+
n = null;
72+
strResult = null;
73+
juros = null;
74+
pmt = null;
75+
amort = null;
76+
saldo = null;
77+
aryResultado = null;
78+
79+
}
80+
} else {
81+
//Forbidden
82+
json_output = objStdMessages.stdMessages[2];
83+
}
84+
85+
} else {
86+
//Forbidden
87+
json_output = objStdMessages.stdMessages[2];
88+
}
89+
90+
}
91+
}
92+
return JSON.parse(json_output);
93+
}
94+
95+
module.exports = {
96+
doCalculaSAC: funMain
97+
}

0 commit comments

Comments
 (0)