first commit

This commit is contained in:
Ainki 2020-03-23 08:24:57 +01:00 committed by Joan Sanchez
parent 87f0a7e417
commit e893576591
10 changed files with 182 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
back/.DS_Store vendored Normal file

Binary file not shown.

BIN
back/methods/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,22 @@
module.exports = Self => {
Self.remoteMethodCtx('collectionGet', {
description: 'Get pending collections from a worker',
accessType: 'WRITE',
returns: {
type: 'Object',
root: true
},
http: {
path: `/collectionGet`,
verb: 'POST'
}
});
Self.collectionGet = async ctx => {
const userId = ctx.req.accessToken.userId;
const query = `CALL vn.collection_get(?)`;
const [result] = await Self.rawSql(query, [userId]);
return result;
};
};

View File

@ -0,0 +1,120 @@
module.exports = Self => {
Self.remoteMethodCtx('collectionNew', {
description: 'Make a new collection of tickets',
accessType: 'WRITE',
accepts: [{
arg: 'collectionFk',
type: 'Number',
required: false,
description: 'The collection id'
}, {
arg: 'sectorFk',
type: 'Number',
required: true,
description: 'The sector of worker'
}],
returns: {
type: 'Object',
root: true
},
http: {
path: `/collectionNew`,
verb: 'POST'
}
});
Self.collectionNew = async(ctx, collectionFk, sectorFk) => {
let query = '';
if (!collectionFk) {
const userId = ctx.req.accessToken.userId;
query = `CALL vn.collection_newBeta(?,?)`;
const [result] = await Self.rawSql(query, [sectorFk, userId]);
if (result.length == 0)
throw new Error(`No collections for today`);
collectionFk = result[0].vCollectionFk;
}
query = `CALL vn.collectionTicket_get(?)`;
const [tickets] = await Self.rawSql(query, [collectionFk]);
query = `CALL vn.collectionSale_get(?)`;
const [sales] = await Self.rawSql(query, [collectionFk]);
query = `CALL vn.collectionPlacement_get(?)`;
const [placements] = await Self.rawSql(query, [collectionFk]);
return makeCollection(tickets, sales, placements);
};
/**
* Returns a collection json
* @param {*} tickets - Request tickets
* @param {*} sales - Request sales
* @param {*} placements - Request placements
* @return {Object} Collection JSON
*/
async function makeCollection(tickets, sales, placements) {
let collection = [];
for (let i = 0; i < tickets.length; i++) {
let ticket = {};
ticket['ticketFk'] = tickets[i]['ticketFk'];
ticket['level'] = tickets[i]['level'];
ticket['agencyName'] = tickets[i]['agencyName'];
ticket['warehouseFk'] = tickets[i]['warehouseFk'];
ticket['salesPersonFk'] = tickets[i]['salesPersonFk'];
let ticketSales = [];
for (let x = 0; x < sales.length; x++) {
if (sales[x]['ticketFk'] == ticket['ticketFk']) {
let sale = {};
sale['ticketFk'] = sales[x]['ticketFk'];
sale['saleFk'] = sales[x]['saleFk'];
sale['itemFk'] = sales[x]['itemFk'];
sale['quantity'] = sales[x]['quantity'];
sale['longName'] = sales[x]['longName'];
sale['size'] = sales[x]['size'];
sale['color'] = sales[x]['color'];
sale['discount'] = sales[x]['discount'];
sale['price'] = sales[x]['price'];
sale['stems'] = sales[x]['stems'];
sale['category'] = sales[x]['category'];
sale['origin'] = sales[x]['origin'];
sale['clientFk'] = sales[x]['clientFk'];
sale['productor'] = sales[x]['productor'];
sale['reserved'] = sales[x]['reserved'];
sale['isPreviousPrepared'] = sales[x]['isPreviousPrepared'];
sale['isPrepared'] = sales[x]['isPrepared'];
sale['isControlled'] = sales[x]['isControlled'];
let salePlacements = [];
for (let z = 0; z < placements.length; z++) {
if (placements[z]['saleFk'] == sale['saleFk']) {
let placement = {};
placement['saleFk'] = placements[z]['saleFk'];
placement['itemFk'] = placements[z]['itemFk'];
placement['placement'] = placements[z]['placement'];
placement['shelving'] = placements[z]['shelving'];
placement['created'] = placements[z]['created'];
placement['visible'] = placements[z]['visible'];
placement['order'] = placements[z]['order'];
placement['grouping'] = placements[z]['grouping'];
salePlacements.push(placement);
}
}
sale['placements'] = salePlacements;
ticketSales.push(sale);
}
}
ticket['sales'] = ticketSales;
collection.push(ticket);
}
return collection;
}
};

View File

@ -0,0 +1,20 @@
module.exports = Self => {
Self.remoteMethodCtx('getSectors', {
description: 'Get all sectors',
accessType: 'WRITE',
returns: {
type: 'Object',
root: true
},
http: {
path: `/getSectors`,
verb: 'POST'
}
});
Self.getSectors = async ctx => {
const query = `CALL vn.sector_get()`;
const [result] = await Self.rawSql(query, []);
return result;
};
};

View File

@ -14,6 +14,9 @@
"Container": {
"dataSource": "storage"
},
"Collection": {
"dataSource": "vn"
},
"Chat": {
"dataSource": "vn"
},

View File

@ -0,0 +1,5 @@
module.exports = Self => {
require('../methods/collection/collectionGet')(Self);
require('../methods/collection/collectionNew')(Self);
require('../methods/collection/getSectors')(Self);
};

View File

@ -0,0 +1,12 @@
{
"name": "Collection",
"base": "VnModel",
"acls": [{
"property": "validations",
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW"
}]
}

BIN
loopback/.DS_Store vendored Normal file

Binary file not shown.