Commit b6a09156 authored by Wendy Fuertes's avatar Wendy Fuertes

Cierre de punto de venta, registro evento inicio operaciones

parent 9ada0ee0
......@@ -62,7 +62,7 @@ module.exports = (app) => {
async function registrar(req, res) {
const t = await app.db.sequelize.transaction();
try {
const punto = await app.dao.punto.registrarPuntoEvento(req.params.id, t);
const punto = await app.dao.punto_venta.registrarPuntoEvento(req.params.id, t);
await t.commit();
res.json({
finalizado: true,
......@@ -100,11 +100,29 @@ module.exports = (app) => {
}
}
async function cierrePuntoVenta(req, res) {
const t = await app.db.sequelize.transaction();
try {
await app.dao.punto_venta.cierrePuntoVenta(req.params.id, req.body.audit_usuario.usuario, t);
await t.commit();
res.json({
finalizado: true,
mensaje: 'Punto de Venta cerrado',
datos: undefined
});
} catch (error) {
await logs(app.db.models.logs).error(error.message, error.name, error, req.body.audit_usuario.usuario);
await t.rollback();
throw error;
}
}
return {
post,
get,
index,
registrar,
indexS
indexS,
cierrePuntoVenta
};
};
......@@ -169,6 +169,7 @@ module.exports = (app) => {
if (app.config.impuestos.codigoAutorizacion) {
params.codigoAutorizacion = app.config.impuestos.codigoAutorizacion;
}
let veri=true;
for (let i = 0; i < agrupador.length; i++) {
console.log(agrupador[i].metodo);
const datos = await impuestos.sincronizar(agrupador[i].metodo, params);
......@@ -213,6 +214,13 @@ module.exports = (app) => {
}
});
await t2.commit();
//registrar incio de operaciones
if (datos.listaCodigos.length < 1) {
veri=false;
}
if (datos.listaActividades.length < 1) {
veri=false;
}
} catch (e) {
await t2.rollback();
throw e;
......@@ -225,6 +233,16 @@ module.exports = (app) => {
}
}
}
if (veri) {
var eventoNuevo = {
tipo: 'INFORMATIVO',
fecha_inicio: moment().format('YYYY-MM-DDTHH:mm:ss.SSS'),
descripcion: "INICIO DE OPERACIONES ",
idPuntoVenta: idPuntoVenta,
codigoEvento: 968
};
await app.dao.evento_significativo.post(eventoNuevo, 'system', t);
}
} else {
throw Error(await app.dao.catalogo.getError(idPuntoVenta, conn.toString(), t));
}
......
......@@ -52,7 +52,6 @@ module.exports = (app) => {
}
async function getCuf(nit, fecha, sucursal, modalidad, tipoEmision, codigoDocumentoFiscal, tipoDocumentoSector, numeroFactura, puntoVenta) {
console.log("CUF ::::::", nit, fecha, sucursal, modalidad, tipoEmision, codigoDocumentoFiscal, tipoDocumentoSector, numeroFactura, puntoVenta)
let value = `${cero(nit, 13)}${moment(fecha, 'YYYY-MM-DDTHH:mm:ss.SSS').format('YYYYMMDDHHmmssSSS')}`;
value = `${value}${cero(sucursal, 4)}${modalidad}${tipoEmision}${codigoDocumentoFiscal}`;
value = `${value}${cero(tipoDocumentoSector, 2)}${cero(numeroFactura, 8)}${cero(puntoVenta, 4)}`;
......
......@@ -543,6 +543,21 @@ module.exports = (app) => {
return eventoF;
}
async function put(idEvento, datos, t) {
return await models.evento_significativo.update({
codigo_evento: datos.codigoEvento,
tipo: datos.tipo,
descripcion: datos.descripcion,
fecha_inicio: datos.fechaInicio,
fecha_fin: datos.fechaFin
}, {
where: {
id_evento: idEvento
},
transaccion: t
})
}
return {
inicio,
envioInicioContingencia,
......@@ -557,6 +572,7 @@ module.exports = (app) => {
getR,
verificaEventos,
verificaEventosIniciados,
verificaEventosFinContin
verificaEventosFinContin,
put
};
};
......@@ -179,7 +179,6 @@ module.exports = (app) => {
async function listar(req,t) {
var nro = parseInt(req.query.buscarCodigo);
const options = { }
// filtro por CLIENTE
......@@ -195,8 +194,8 @@ module.exports = (app) => {
}
}
//filtro por tipo de NRO de factura
if(req.query.buscarCodigo != "0"){
options.codigo_punto_venta = nro
if(req.query.buscarCodigo){
options.codigo = parseInt(req.query.buscarCodigo)
}
let limit = req.query.limit; // numero de respuestas por pagina
......@@ -348,7 +347,7 @@ module.exports = (app) => {
codigoPuntoVenta: puntoVenta.codigo,
codigoSistema: app.config.impuestos.codigoSistema,
codigoSucursal: puntoVenta.sucursal.codigo,
nit: puntoVenta.sucursal.nitEmisor
nit: puntoVenta.sucursal.nit
};
console.log('-------------- PARAMS DE REGISTRO CUIS PUNTO -------------');
console.log(params);
......@@ -362,6 +361,50 @@ module.exports = (app) => {
}
await setCuisPunto(idPunto, registro.codigo, t);
}
async function cierrePuntoVenta(idPunto, usuario, t){
const puntoVenta = await models.punto_venta.findByPk(idPunto, {
attributes:['nombre','estado','descripcion','fid_sucursal','tipo', 'codigo', 'cuis'],
include:[
{
attributes: ['codigo', 'nit','nombre'],
model: models.sucursal,
as: 'sucursal'
}
],
transaction: t
});
const sucursal = await app.dao.punto_venta.getId(puntoVenta.fid_sucursal);
const params = {
codigoAmbiente: app.config.impuestos.codigoAmbiente,
codigoPuntoVenta: puntoVenta.codigo,
codigoSistema: app.config.impuestos.codigoSistema,
codigoSucursal: puntoVenta.sucursal.codigo,
cuis: sucursal.cuis,
nit: puntoVenta.sucursal.nit,
};
console.log('-------------- PARAMS CERRAR PUNTO DE VENTA-------------');
console.log(params);
console.log('-----------------------------------------------------');
const registro = await impuestos.cierrePuntoVenta(params);
console.log('---------------- RESULTADOS CIERRE ----------------');
console.log(registro);
console.log('-----------------------------------------------------');
if (!registro.transaccion) {
throw Error(await app.dao.catalogo.getError(1, registro.listaCodigosRespuestas.map(val => val.codigoMensaje.toString())));
}
await models.punto_venta.update({
estado: 'INACTIVO',
_usuario_modificacion: usuario.usuario
},{
where:{
id_punto_venta: idPunto
},
transaction: t
});
}
return {
getId,
......@@ -371,6 +414,7 @@ module.exports = (app) => {
listar,
registrarPuntoEvento,
getPuntosVenta,
listarPVS
listarPVS,
cierrePuntoVenta
};
};
......@@ -118,7 +118,7 @@ module.exports = (app) => {
apellidos: usuarioRes.persona.primer_apellido ? usuarioRes.persona.segundo_apellido ? `${usuarioRes.persona.primer_apellido} ${usuarioRes.persona.segundo_apellido}` : usuarioRes.persona.primer_apellido : usuarioRes.persona.segundo_apellido,
id_grupo: usuarioRes.grupos[0].id_grupo,
cargo: usuarioRes.grupos[0].grupo,
id_sucursal: usuarioRes.fid_sucursal,
id_punto_venta: usuarioRes.fid_punto_venta,
exp: usuarioRes.dataValues.exp
},
menu: usuarioRes.grupos[0].menus
......
......@@ -42,7 +42,6 @@ module.exports = (app) => {
async function enviarFactura() {
try {
const facturas = await app.dao.venta.getPendientesEmision('PENDIENTE', 1, 1);// 1 = FACTURA, 1 = online
console.log("facturas...", facturas)
for (let i = 0; i < facturas.length; i++) {
try {
if (facturas[i].punto_venta.tipo_emision === facturas[i].tipo_emision) {
......
......@@ -39,15 +39,22 @@ module.exports = (app) => {
* "mensaje": "Sucursales.",
* "datos": [
* {
* "id_sucursal": 1,
* "nombre": "ADSIB San Miguel"
* "id_punto_venta": 1,
* "codigo": 0,
* "nombre": "ADSIB San Miguel",
* "fid_sucursal": 1,
* "sucursal": {
* "codigo": "0",
* "nit": 120431020,
* "nombre": "ADSIB San Miguel"
* }
* }
* ]
* }
*/
app.api.get('/puntoVenta',asyncHandler(app.controllers.punto_venta.get));
/**
* @api {get} /api/v1/puntoVenta-lista/:page Recupera todas los puntos de venta
* @api {get} /api/v1/puntoVenta/lista/:page Recupera todas los puntos de venta
* @apiGroup Venta
* @apiDescription Recupera todas los puntos de venta
*
......@@ -67,24 +74,23 @@ module.exports = (app) => {
* {
* "finalizado":true,
* "mensaje":"Datos obtenidos.",
* "datos":[
* {
* "id_punto":1,
* "nombre":"Punto de Venta 1",
* "descripcion":"Punto para ferias",
* "estado":"PENDIENTE",
* "codigo_punto_venta":null,
* "fid_sucursal":1,
* "tipo":2
* }
* "datos": [
* {
* "id_punto_venta": 1,
* "nombre": "ADSIB San Miguel",
* "descripcion": "Punto único de venta",
* "estado": "ACTIVO",
* "codigo": 0,
* "fid_sucursal": 1,
* "tipo": 5
* }
* ],
* "paginacion":
* {
* "totalRegistros":1,
* "paginas":1,
* "paginaActual":"1",
* "cantidad":1
* }
* "paginacion": {
* "totalRegistros": 1,
* "paginas": 1,
* "paginaActual": "1",
* "cantidad": 1
* }
* }
*
*
......@@ -95,6 +101,7 @@ module.exports = (app) => {
* @apiGroup PuntoVenta
* @apiDescription Registrar con impuestos punto de venta segun ID
*
* @apiHeader {String} Authorization Token de acceso generado para facturación
* @apiParamExample Ejemplo
* { }
*
......@@ -108,10 +115,11 @@ module.exports = (app) => {
*/
app.api.post('/puntoVenta/registrar/:id', validate({params: puntoVal.params}),asyncHandler(app.controllers.punto_venta.registrar));
/**
* @api {get} /api/v1/puntoVenta/:id Lista de punto de ventas segun sucursal
* @api {get} /api/v1/puntoVenta/:id/:page Lista de punto de ventas por sucursal
* @apiGroup Sucursal
* @apiDescription Lista de punto de ventas segun sucursal
* @apiDescription Lista de punto de ventas por sucursal
*
* @apiHeader {String} Authorization Token de acceso generado para facturación
* @apiParamExample Ejemplo
* { }
*
......@@ -129,4 +137,22 @@ module.exports = (app) => {
* }
*/
app.api.get('/puntoVentas/:id/:page',asyncHandler(app.controllers.punto_venta.indexS));
/**
* @api {put} /api/v1/puntoVenta/cerrar/:id Cerrar el punto de venta con Impuestos Nacionales
* @apiGroup PuntoVenta
* @apiDescription Cerrar el punto de venta con Impuestos Nacionales
*
* @apiHeader {String} Authorization Token de acceso generado para facturación
* @apiParamExample Ejemplo
* { }
*
* @apiSuccessExample Success-Response:
* HTTP/1.1 200 OK
* {
* "finalizado": true,
* "mensaje": 'Punto de Venta cerrado.',
*
* }
*/
app.api.put('/puntoVenta/cerrar/:id', validate({params: puntoVal.params}),asyncHandler(app.controllers.punto_venta.cierrePuntoVenta));
};
\ No newline at end of file
......@@ -97,7 +97,7 @@ module.exports = {
descripcion: 'Lista de los diferentes reportes',
orden: 1,
ruta: '/ventas/reportes',
icono: 'fa fa-dashboard',
icono: 'fa fa-table',
estado: 'ACTIVO',
_usuario_creacion: 'admin',
_fecha_creacion: new Date(),
......
......@@ -63,6 +63,25 @@ module.exports = (app) => {
});
});
}
function cierrePuntoVenta(params) {
return new Promise((resolve, reject) => {
soap.createClient(app.config.impuestos.operaciones, { request: specialRequest }, function(err, client) {
if (err) {
reject(err);
} else {
client.cierrePuntoVenta({SolicitudCierrePuntoVenta: params}, function(err, result) {
if (err) {
reject(err);
} else {
//resolve(result.return);
resolve(result.RespuestaCierrePuntoVenta);
}
});
}
});
});
}
function solicitudCuis(params) {
return new Promise((resolve, reject) => {
......@@ -104,6 +123,7 @@ module.exports = (app) => {
verificarComunicacion,
registroPuntoVenta,
solicitudCuis,
consultaPuntoVenta
consultaPuntoVenta,
cierrePuntoVenta
};
};
\ No newline at end of file
Markdown is supported
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