Commit 583ae268 authored by Diego F. Ticona Ramos's avatar Diego F. Ticona Ramos
Browse files

TG-1982: SFC component para Carrito

parent e2aec38d
......@@ -116,163 +116,157 @@
</template>
<script>
<script setup>
import imgTramite from '/src/assets/tramite.svg'
import { inject, onMounted, ref, watchEffect } from 'vue'
export default {
setup() {
const store = inject('store')
const productos = ref([])
const costoTotal = ref(0)
const datosFacturacion = ref({
razonSocialCliente: 'MENDY',
nitCliente: '777666555',
emailCliente: 'ferlandmendy@mail.com'
})
const store = inject('store')
const productos = ref([])
const costoTotal = ref(0)
const datosFacturacion = ref({
razonSocialCliente: 'MENDY',
nitCliente: '777666555',
emailCliente: 'ferlandmendy@mail.com'
})
onMounted(async () => {
console.log('carrito mounted!')
procesarCarrito()
})
onMounted(async () => {
console.log('carrito mounted!')
procesarCarrito()
})
// watchEffect(() => {})
// watchEffect(() => {})
const procesarCarrito = () => {
console.log('store.state.products :: ', store.state.products);
const tmpProducts = [ ...store.state.products ];
let contadorProductos = [];
// tmpProducts.findIndex()
console.log('tmpProducts :: ', tmpProducts);
let _costoTotal = 0;
tmpProducts.forEach((producto) => {
_costoTotal += producto.precioUnitario;
const idxProducto = contadorProductos.findIndex((el) => el.codigo === producto.codigo);
// console.log('existe producto ? ', idxProducto !== -1);
if (idxProducto !== -1) {
// el producto ya esta en el carrito
const productTmp = {...contadorProductos[idxProducto]}
productTmp.cantidad += 1;
productTmp.subTotal += parseFloat(producto.precioUnitario.toFixed(2));
contadorProductos[idxProducto] = {...productTmp}
} else {
// insertamos la primera vez el producto en el carrito
contadorProductos.push({
...producto,
cantidad: 1,
subTotal: parseFloat(producto.precioUnitario.toFixed(2))
})
}
const procesarCarrito = () => {
console.log('store.state.products :: ', store.state.products);
const tmpProducts = [ ...store.state.products ];
let contadorProductos = [];
// tmpProducts.findIndex()
console.log('tmpProducts :: ', tmpProducts);
let _costoTotal = 0;
tmpProducts.forEach((producto) => {
_costoTotal += producto.precioUnitario;
const idxProducto = contadorProductos.findIndex((el) => el.codigo === producto.codigo);
// console.log('existe producto ? ', idxProducto !== -1);
if (idxProducto !== -1) {
// el producto ya esta en el carrito
const productTmp = {...contadorProductos[idxProducto]}
productTmp.cantidad += 1;
productTmp.subTotal += parseFloat(producto.precioUnitario.toFixed(2));
contadorProductos[idxProducto] = {...productTmp}
} else {
// insertamos la primera vez el producto en el carrito
contadorProductos.push({
...producto,
cantidad: 1,
subTotal: parseFloat(producto.precioUnitario.toFixed(2))
})
console.log('CARRITO PROCESADO > ', contadorProductos);
productos.value = contadorProductos;
costoTotal.value = _costoTotal;
}
})
const aumentarCantidadProducto = (idxProducto, precioUnitario) => {
const tmpProductos = [...productos.value];
tmpProductos[idxProducto].cantidad += 1;
tmpProductos[idxProducto].subTotal += parseFloat(precioUnitario.toFixed(2));
productos.value = tmpProductos;
costoTotal.value += parseFloat(precioUnitario.toFixed(2));
}
console.log('CARRITO PROCESADO > ', contadorProductos);
productos.value = contadorProductos;
costoTotal.value = _costoTotal;
}
const descontarCantidadProducto = (idxProducto, precioUnitario) => {
const tmpProductos = [...productos.value];
tmpProductos[idxProducto].cantidad -= 1;
tmpProductos[idxProducto].subTotal -= parseFloat(precioUnitario.toFixed(2));
productos.value = tmpProductos;
costoTotal.value -= parseFloat(precioUnitario.toFixed(2));
}
const aumentarCantidadProducto = (idxProducto, precioUnitario) => {
const tmpProductos = [...productos.value];
tmpProductos[idxProducto].cantidad += 1;
tmpProductos[idxProducto].subTotal += parseFloat(precioUnitario.toFixed(2));
productos.value = tmpProductos;
costoTotal.value += parseFloat(precioUnitario.toFixed(2));
}
const generarCodigoOrden = () => {
return 'Ar-1D-AA-11-9Z'
}
const descontarCantidadProducto = (idxProducto, precioUnitario) => {
const tmpProductos = [...productos.value];
tmpProductos[idxProducto].cantidad -= 1;
tmpProductos[idxProducto].subTotal -= parseFloat(precioUnitario.toFixed(2));
productos.value = tmpProductos;
costoTotal.value -= parseFloat(precioUnitario.toFixed(2));
}
const efectuarCompra = async () => {
const _codigoOrden = generarCodigoOrden();
const _costoTotal = costoTotal.value;
const generarCodigoOrden = () => {
return 'Ar-1D-AA-11-9Z'
}
const _prods = [...productos.value];
_prods.map((prod) => {
delete(prod.id);
return prod
})
const efectuarCompra = async () => {
const _codigoOrden = generarCodigoOrden();
const _costoTotal = costoTotal.value;
console.log(_prods);
const _prods = [...productos.value];
_prods.map((prod) => {
delete(prod.id);
return prod
})
const data = {
descripcion: "Pago de trámites QA",
datosSesion: null, // no se emula ciudadania
metaDatosTransaccion: "informacion extra para pago de tramites qa",
codigoOrden: _codigoOrden,
datosPago: {
nombresCliente: 'Ferland',
apellidosCliente: 'Mendy',
numeroDocumentoCliente: '6058904',
fechaNacimientoCliente: '1996-09-19',
cuentaBancaria: '111000034567',
montoTotal: parseFloat(_costoTotal.toFixed(2))
},
productos: _prods,
facturacion: datosFacturacion.value,
};
console.log(_prods);
console.log('Data para pasarela ::: ', data);
console.log('Data para pasarela ::: ', JSON.stringify(data));
const data = {
descripcion: "Pago de trámites QA",
datosSesion: null, // no se emula ciudadania
metaDatosTransaccion: "informacion extra para pago de tramites qa",
codigoOrden: _codigoOrden,
datosPago: {
nombresCliente: 'Ferland',
apellidosCliente: 'Mendy',
numeroDocumentoCliente: '6058904',
fechaNacimientoCliente: '1996-09-19',
cuentaBancaria: '111000034567',
montoTotal: parseFloat(_costoTotal.toFixed(2))
},
productos: _prods,
facturacion: datosFacturacion.value,
};
const response = await fetch('http://localhost:8081/api/admin/pago/solicitud', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
}).then(r => r.json());
console.log('Data para pasarela ::: ', data);
console.log('Data para pasarela ::: ', JSON.stringify(data));
console.log('RESPONSE PASARELA :: ', response);
const response = await fetch('http://localhost:8081/api/admin/pago/solicitud', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
}).then(r => r.json());
// const a = document.createElement('a');
// a.title = 'link redireccion para pasarela'
// a.href = ;
console.log('RESPONSE PASARELA :: ', response);
// {
// "finalizado": true,
// "mensaje": "Registro creado con exito!",
// "datos": {
// "idTransaccion": "878a046b-73de-4f22-95c4-946313ebf2d6",
// "urlRedireccion": "https://pre-ppe.agetic.gob.bo/transaccion/?id=878a046b-73de-4f22-95c4-946313ebf2d6"
// }
// }
console.log('redireccion pasarela :: ', response.datos.urlRedireccion);
// const a = document.createElement('a');
// a.title = 'link redireccion para pasarela'
// a.href = ;
// const url = window.URL.createObjectURL(this.b64toBlob(response.data, 'application/pdf'));
const link = document.createElement('a');
link.href = response.datos.urlRedireccion;
// const d = new Date();
// link.setAttribute('target', '_blank');
// document.body.appendChild(link);
link.click();
// {
// "finalizado": true,
// "mensaje": "Registro creado con exito!",
// "datos": {
// "idTransaccion": "878a046b-73de-4f22-95c4-946313ebf2d6",
// "urlRedireccion": "https://pre-ppe.agetic.gob.bo/transaccion/?id=878a046b-73de-4f22-95c4-946313ebf2d6"
// }
// }
console.log('redireccion pasarela :: ', response.datos.urlRedireccion);
// a.click();
// console.log('Parametros obtenidos de servicio :: ', parametros);
// const url = window.URL.createObjectURL(this.b64toBlob(response.data, 'application/pdf'));
const link = document.createElement('a');
link.href = response.datos.urlRedireccion;
// const d = new Date();
// link.setAttribute('target', '_blank');
// document.body.appendChild(link);
link.click();
// a.click();
// console.log('Parametros obtenidos de servicio :: ', parametros);
}
return {
// Variables
imgTramite,
store,
productos,
datosFacturacion,
costoTotal,
// Methods
aumentarCantidadProducto,
descontarCantidadProducto,
efectuarCompra,
}
},
}
// export default {
// imgTramite,
// store,
// productos,
// datosFacturacion,
// costoTotal,
// // Methods
// aumentarCantidadProducto,
// descontarCantidadProducto,
// efectuarCompra,
// }
</script>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment