Commit 3f9f0e6ab3a54e07a79402c84197d48e6c1e5b70
1 parent
b8b527453e
Exists in
master
Arreglo en servicio de articulos.
Showing
1 changed file
with
27 additions
and
43 deletions
Show diff stats
rutas/articulos.js
| 1 | 1 | ||
| 2 | var bookshelf = require('bookshelf')(knex); | 2 | var bookshelf = require('bookshelf')(knex); |
| 3 | bookshelf.plugin('pagination'); | ||
| 3 | 4 | ||
| 4 | const ArticuloImagen = bookshelf.Model.extend({ | 5 | const ArticuloImagen = bookshelf.Model.extend({ |
| 5 | tableName: 'ARTICULOS_IMAGEN' | 6 | tableName: 'ARTICULOS_IMAGEN' |
| 6 | }); | 7 | }); |
| 7 | 8 | ||
| 8 | const Articulo = bookshelf.Model.extend({ | 9 | const Articulo = bookshelf.Model.extend({ |
| 9 | tableName: 'ARTICULOS', | 10 | tableName: 'ARTICULOS', |
| 10 | imagenes: function() { | 11 | imagenes: function () { |
| 11 | return this.hasMany(ArticuloImagen, 'id_articulo', 'id'); | 12 | return this.hasMany(ArticuloImagen, 'id_articulo', 'id'); |
| 12 | } | 13 | } |
| 13 | }); | 14 | }); |
| 14 | 15 | ||
| 15 | router.get('/articulos', (req , res) => { | 16 | router.get('/articulos/:page', (req, res) => { |
| 16 | 17 | ||
| 17 | let cantidadesVendidas = knex.schema | 18 | Articulo |
| 18 | .raw(`select stock.SEC, stock.ART, SUM(stock.can) as cantidadVendida | 19 | .query((qb) => { |
| 19 | from AMOVSTOC stock | 20 | qb.where('NHA', 0); |
| 20 | join ARTICULOS art on art.CodSec = stock.SEC and art.CodArt = stock.ART and | 21 | qb.where('PreVen', '>', 0); |
| 21 | art.categoria_selfservice > 0 and art.PreVen > 0 | ||
| 22 | where stock.FEC >= dateadd(month, -2, getdate()) and stock.CYV = 'V' and TCO = 'FT' | ||
| 23 | group by stock.sec, stock.art`) | ||
| 24 | |||
| 25 | var articulos = Articulo | ||
| 26 | .where((query) => { | ||
| 27 | query.where('NHA', 0); | ||
| 28 | query.where('PreVen', '>', 0); | ||
| 29 | query.where('categoria_selfservice', '>', 0); | ||
| 30 | }) | 22 | }) |
| 31 | .fetchAll({withRelated: ['imagenes']}) | 23 | .orderBy('id', 'asc') |
| 32 | 24 | .fetchPage({ | |
| 33 | Promise.all([articulos, cantidadesVendidas]) | 25 | pageSize: 150, |
| 34 | .then(values => { | 26 | page: req.params.page, |
| 35 | 27 | withRelated: ['imagenes'] | |
| 36 | let articulos = values[0]; | 28 | }) |
| 37 | let cantidadesVendidas = values[1]; | 29 | .then(data => { |
| 38 | 30 | ||
| 39 | var promisesCodBar = []; | 31 | var promisesCodBar = []; |
| 40 | 32 | ||
| 41 | articulos.forEach(articulo => { | 33 | data.forEach(articulo => { |
| 42 | |||
| 43 | let cantidadVendida = cantidadesVendidas.filter(art => { | ||
| 44 | return articulo.get('CodArt') == art.ART && articulo.get('CodSec') == art.SEC; | ||
| 45 | }); | ||
| 46 | |||
| 47 | articulo.set('cantidadVendida', cantidadVendida[0] ? cantidadVendida[0].cantidadVendida : 0); | ||
| 48 | 34 | ||
| 49 | promisesCodBar.push( | 35 | promisesCodBar.push( |
| 50 | knex('CODBAR').where({ | 36 | knex('CODBAR').where({ |
| 51 | CodSec: articulo.get('CodSec'), | 37 | CodSec: articulo.get('CodSec'), |
| 52 | CodArt: articulo.get('CodArt') | 38 | CodArt: articulo.get('CodArt') |
| 53 | }) | 39 | }) |
| 54 | ); | 40 | ); |
| 55 | }); | 41 | }); |
| 56 | 42 | ||
| 57 | Promise.all(promisesCodBar).then((codigoBarra) => { | 43 | Promise.all(promisesCodBar).then((codigoBarra) => { |
| 58 | 44 | ||
| 59 | codigoBarra.forEach(codigo => { | 45 | codigoBarra.forEach(codigo => { |
| 60 | codigo = codigo[0]; | 46 | codigo = codigo[0]; |
| 61 | 47 | ||
| 62 | let articulo = articulos.filter(art => { | 48 | if (codigo) { |
| 63 | return art.get('CodArt') == codigo.CodArt; | ||
| 64 | }); | ||
| 65 | 49 | ||
| 66 | articulo[0].set('codigoBarra', codigo.CodBar); | 50 | let articulo = data.filter(art => { |
| 67 | }); | 51 | return art.get('CodArt') == codigo.CodArt; |
| 52 | }); | ||
| 68 | 53 | ||
| 69 | res.status(200).send(articulos); | 54 | articulo[0].set('codigoBarra', codigo.CodBar); |
| 55 | } | ||
| 56 | }); | ||
| 57 | res.status(200).send( | ||
| 58 | { | ||
| 59 | data: data, | ||
| 60 | pagination: data.pagination, | ||
| 61 | }); | ||
| 70 | }); | 62 | }); |
| 71 | 63 | ||
| 72 | }); | 64 | }); |
| 73 | }); | 65 | }); |
| 74 | 66 | ||
| 75 | router.get('/articulos/:id', (req, res) => { |