- Ingresos: {{formatMoneda(totalIngresos)}}
+ Ingresos: {{ formatMoneda(totalIngresos) }}
-
-
Egreso: {{formatMoneda(totalEgresos)}}
+
+ Egreso: {{ formatMoneda(totalEgresos) }}
-
-
Total: {{formatMoneda(total)}}
+
+ Total:
+ {{ formatMoneda(total) }}
-
@@ -105,54 +120,93 @@
import { Table, TableColumn } from "element-ui";
export default {
- components: {
-
+ components: {
[Table.name]: Table,
[TableColumn.name]: TableColumn,
- },
+ },
middleware: "authenticated",
data() {
return {
newPresupuesto: {
- fecha: "",
- detalle: "",
+ nombrePresupuesto: "",
},
- selectedPresupuesto:{
-
- _id:"",
- fecha:"",
- nombrePresupuesto:"",
- datos:[]
-
+ selectedPresupuesto: {
+ _id: "",
+ nombrePresupuesto: "",
+ datos: [],
},
+ selectedPresupuestoName: "",
newItem: {
- detalle:"",
+ _id: "",
+ detalle: "",
valor: 0,
- tipo:"Egreso"
-
+ tipo: "Egreso",
},
presupuestos: [],
- totalIngresos:0,
- totalEgresos:0,
- total:0
+ totalIngresos: 0,
+ totalEgresos: 0,
+ total: 0,
};
},
methods: {
- savePresupuesto() {},
+ savePresupuesto() {
+ const axiosHeader = {
+ headers: {
+ token: this.$store.state.auth.token,
+ },
+ };
+ this.newPresupuesto.nombrePresupuesto = this.newPresupuesto.nombrePresupuesto.trim();
+ const toSend = this.newPresupuesto;
+ console.log(axiosHeader.data);
+ this.$axios
+ .post("/presupuesto", toSend, axiosHeader)
+ .then((res) => {
+ console.log(res.data.status);
+ this.getPresupuesto();
+ })
+ .catch((e) => console.log(e));
+ },
addItem() {
- this.selectedPresupuesto.datos.push(JSON.parse(JSON.stringify(this.newItem)))
- this.sumItems()
+ //this.selectedPresupuesto.datos.push(JSON.parse(JSON.stringify(this.newItem)))
+ console.log(this.newItem._id);
+ var nameSelected = this.selectedPresupuestoName;
+ console.log(nameSelected);
+ const axiosHeader = {
+ headers: {
+ token: this.$store.state.auth.token,
+ },
+ };
+ const toSend = this.newItem;
+ this.$axios
+ .put("/presupuesto", toSend, axiosHeader)
+ .then((res) => {
+ console.log(res.data.status);
+ this.getPresupuesto();
+ this.selectedPresupuestoName = nameSelected;
+ console.log(this.selectedPresupuestoName);
+ this.selectedPresupuesto = this.presupuestos.find(
+ (x) => x.nombrePresupuesto === this.selectedPresupuestoName
+ );
+ this.newItem._id = this.selectedPresupuesto._id;
+ })
+ .catch((e) => console.log(e));
+
+ this.sumItems();
},
- sumItems(){
-
- this.totalIngresos=this.selectedPresupuesto.datos.reduce((acc,x) => x.tipo ==="Ingreso"?acc + Number(x.valor):acc,0)
-
- this.totalEgresos = this.selectedPresupuesto.datos.reduce((acc,x) => x.tipo==="Egreso"?acc + Number(x.valor):acc,0)
- this.total = this.totalIngresos - this.totalEgresos
+ sumItems() {
+ this.totalIngresos = this.selectedPresupuesto.datos.reduce(
+ (acc, x) => (x.tipo === "Ingreso" ? acc + Number(x.valor) : acc),
+ 0
+ );
+ this.totalEgresos = this.selectedPresupuesto.datos.reduce(
+ (acc, x) => (x.tipo === "Egreso" ? acc + Number(x.valor) : acc),
+ 0
+ );
+ this.total = this.totalIngresos - this.totalEgresos;
},
- formatMoneda(dato) {
+ formatMoneda(dato) {
var num = dato;
if (!isNaN(num)) {
num = Math.abs(num)
@@ -165,11 +219,68 @@ export default {
return `$ ${num}`;
}
},
+ getPresupuesto() {
+ const axiosHeader = {
+ headers: {
+ token: this.$store.state.auth.token,
+ },
+ };
+
+
+ this.$axios
+ .get("/presupuesto", axiosHeader)
+ .then((res) => {
+ this.presupuestos=[]
+ if (res.data.data.length) {
+ this.presupuestos = res.data.data;
+ this.selectedPresupuesto = this.presupuestos[0];
+ this.selectedPresupuestoName = this.selectedPresupuesto.nombrePresupuesto;
+ this.newItem._id = this.selectedPresupuesto._id;
+ console.log(this.selectedPresupuesto);
+ this.sumItems();
+ }
+ })
+ .catch((e) => console.log(e));
+ },
+ onChange() {
+ this.selectedPresupuesto = this.presupuestos.find(
+ (x) => x.nombrePresupuesto === this.selectedPresupuestoName
+ );
+ this.newItem._id = this.selectedPresupuesto._id;
+ this.sumItems();
+ },
+ deletePresupuesto() {
+ console.log(this.selectedPresupuesto._id);
+ const axiosHeader = {
+ headers: {
+ token: this.$store.state.auth.token,
+ },
+ params: {
+ id: this.selectedPresupuesto._id,
+ },
+ };
+ this.$axios
+ .delete("/presupuesto", axiosHeader)
+ .then((res) => {
+ console.log(res.data);
+
+ this.selectedPresupuesto = {
+ _id: "",
+ nombrePresupuesto: "",
+ datos: [],
+ }
+ this.selectedPresupuestoName=""
+ this.getPresupuesto();
+
+ })
+ .catch((e) => console.log(e));
+ },
},
mounted() {
- this.newPresupuesto.fecha = this.$store.state.fecha;
- },
+ // this.newPresupuesto.fecha = this.$store.state.fecha;
+ this.getPresupuesto();
+ },
};
diff --git a/index.js b/index.js
index ccb6a47..7a56e0c 100644
--- a/index.js
+++ b/index.js
@@ -27,6 +27,7 @@ app.use(cors());
app.use('/api',require('./routes/users'));
app.use('/api',require('./routes/compras'))
app.use('/api',require('./routes/ingresos'))
+app.use('/api',require('./routes/presupuesto'))
app.use('/api',require('./routes/categorias'))
app.use('/api',require('./routes/metodos_pago'))
app.disable('x-powered-by');
diff --git a/routes/presupuesto.js b/routes/presupuesto.js
new file mode 100644
index 0000000..51826a9
--- /dev/null
+++ b/routes/presupuesto.js
@@ -0,0 +1,78 @@
+const router = require("express").Router();
+const presupuesto = require("../models/presupuestoMes").Presupuesto;
+const itemPresupuesto = require("../models/presupuestoMes").itemPresupuesto;
+const { checkAuth } = require("../middlewares/authentication");
+
+
+router.get("/presupuesto", checkAuth, async (req, res) => {
+ var presupuestos;
+ presupuestos = await presupuesto.find({ user: req.userData._id }).sort({
+ date: "desc",
+ });
+
+ return res.send(
+ {
+ status:"ok",
+ data:presupuestos
+ }
+ )
+ });
+
+ router.post("/presupuesto", checkAuth, async (req, res) => {
+ const {nombrePresupuesto} = req.body;
+ const Presupuesto = new presupuesto({
+ nombrePresupuesto:nombrePresupuesto
+ });
+
+ console.log(Presupuesto)
+ Presupuesto.user = req.userData._id;
+ await Presupuesto.save();
+
+ res.json({
+ status:"OK"
+ })
+
+
+ });
+
+
+ router.put("/presupuesto", checkAuth, async (req, res) => {
+ const { _id, detalle, valor, tipo } = req.body;
+ console.log(_id)
+ const presupuesto_edit = await presupuesto.findOne({ _id: _id });
+ const itemP = new itemPresupuesto({detalle,valor,tipo});
+ presupuesto_edit.datos.push(itemP);
+ await presupuesto_edit.save();
+
+ //await presupuesto_edit.updateOne({ fecha, detalle, valor});
+
+
+
+ res.json({
+ status:"OK"
+ })
+
+
+ });
+
+
+
+ router.delete("/presupuesto", checkAuth, async (req, res) => {
+
+ try{
+ const userId = req.userData._id;
+ const id = req.query.id;
+
+ const resultado = await presupuesto.deleteOne({user:userId,_id:id});
+
+ return res.json({status:"ok",data: resultado})
+
+ }
+ catch(error){
+ console.log(error);
+ return res.status(500).json({status:"fail",error:error})
+ }
+ });
+
+
+ module.exports = router;
\ No newline at end of file