refs #6276 several methods created
gitea/salix/pipeline/head This commit looks good Details

This commit is contained in:
Jorge Penadés 2023-11-21 12:32:36 +01:00
parent 67fa60ae81
commit 251578146e
13 changed files with 913 additions and 8 deletions

View File

@ -0,0 +1,28 @@
const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethodCtx('assignCollection', {
description: 'Assign a collection',
accessType: 'WRITE',
http: {
path: `/assignCollection`,
verb: 'POST'
},
returns: {
type: ['object'],
},
});
Self.assignCollection = async ctx => {
const userId = ctx.req.accessToken.userId;
await Self.rawSql('CALL vn.collection_assign(?, @vCollectionFk)', [userId]);
const [assignedCollection] = await Self.rawSql('SELECT @vCollectionFk');
const {'@vCollectionFk': collectionFk} = assignedCollection;
if (!collectionFk) throw new UserError('No hay tickets para sacar');
await Self.rawSql('CALL vn.collection_printSticker(?, NULL)', [collectionFk]);
return collectionFk;
};
};

View File

@ -5,4 +5,5 @@ module.exports = Self => {
require('../methods/collection/setSaleQuantity')(Self); require('../methods/collection/setSaleQuantity')(Self);
require('../methods/collection/previousLabel')(Self); require('../methods/collection/previousLabel')(Self);
require('../methods/collection/getTickets')(Self); require('../methods/collection/getTickets')(Self);
require('../methods/collection/assignCollection')(Self);
}; };

View File

@ -0,0 +1,4 @@
INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId)
VALUES
('Collection', 'assignCollection', 'WRITE', 'ALLOW', 'ROLE', 'employee'),
('ExpeditionPallet', 'getPallet', 'READ', 'ALLOW', 'ROLE', 'employee');

View File

@ -1218,6 +1218,7 @@ INSERT INTO `vn`.`train`(`id`, `name`)
INSERT INTO `vn`.`operator` (`workerFk`, `numberOfWagons`, `trainFk`, `itemPackingTypeFk`, `warehouseFk`, `sectorFk`, `labelerFk`) INSERT INTO `vn`.`operator` (`workerFk`, `numberOfWagons`, `trainFk`, `itemPackingTypeFk`, `warehouseFk`, `sectorFk`, `labelerFk`)
VALUES VALUES
('1106', '1', '1', 'H', '1', '1', '1'), ('1106', '1', '1', 'H', '1', '1', '1'),
('9', '2', '1', 'H', '1', '1', '1'),
('1107', '1', '1', 'V', '1', '1', '1'); ('1107', '1', '1', 'V', '1', '1', '1');
INSERT INTO `vn`.`collection`(`id`, `workerFk`, `stateFk`, `created`, `trainFk`) INSERT INTO `vn`.`collection`(`id`, `workerFk`, `stateFk`, `created`, `trainFk`)
@ -2996,3 +2997,671 @@ INSERT INTO `vn`.`invoiceCorrectionType` (`id`, `description`)
(1, 'Error in VAT calculation'), (1, 'Error in VAT calculation'),
(2, 'Error in sales details'), (2, 'Error in sales details'),
(3, 'Error in customer data'); (3, 'Error in customer data');
/*
Se necesitan, para hacer un simulacro de pedido, lo siguiente:
- Warehouse 999
- Sectores
- Normal 9991
- Previa 9992
- Altillo 9993
- Parkings
- Normal A-01-1, A-02-2, B-03-3, B-04-4, C-05-5
- Previa P-01-1, P-02-2, P-03-3
- Altillo M-01-1, M-02-2, M-03-3
- Shelvings
- Normal NAA, NBB, NCC, NDD, NEE
- Previa PAA, PBB, PCC
- Altillo MAA, MBB, MCC
- Items
* Normal
* Previa:
- Ticket
- Sales
*/
INSERT IGNORE INTO intrastat
SET id = 44219999,
description = 'Manufacturas de madera',
taxClassFk = 1,
taxCodeFk = 1;
INSERT IGNORE INTO warehouse
SET id = 999,
name = 'TestingWarehouse',
hasAvailable = TRUE,
isForTicket = TRUE,
isInventory = TRUE,
hasUbications = TRUE,
hasProduction = TRUE;
INSERT IGNORE INTO sector
SET id = 9991,
description = 'NormalSector',
warehouseFk = 999,
isPreviousPreparedByPacking = FALSE,
code = 'NS',
isPreviousPrepared = FALSE,
isPackagingArea = FALSE,
sonFk = NULL,
isMain = TRUE,
itemPackingTypeFk = NULL;
INSERT IGNORE INTO sector
SET id = 9992,
description = 'PreviousSector',
warehouseFk = 999,
isPreviousPreparedByPacking = FALSE,
code = 'PS',
isPreviousPrepared = TRUE,
isPackagingArea = FALSE,
sonFk = NULL,
isMain = TRUE,
itemPackingTypeFk = NULL;
INSERT IGNORE INTO sector
SET id = 9993,
description = 'MezaninneSector',
warehouseFk = 999,
isPreviousPreparedByPacking = TRUE,
code = 'MS',
isPreviousPrepared = FALSE,
isPackagingArea = FALSE,
sonFk = 9991,
isMain = TRUE,
itemPackingTypeFk = NULL;
REPLACE parking SET id = 9991011, sectorFk = 9991, code = 'A-01-1', pickingOrder = 1;
REPLACE parking SET id = 9991012, sectorFk = 9991, code = 'A-02-2', pickingOrder = 2;
REPLACE parking SET id = 9991013, sectorFk = 9991, code = 'A-03-3', pickingOrder = 3;
REPLACE parking SET id = 9991014, sectorFk = 9991, code = 'A-04-4', pickingOrder = 4;
REPLACE parking SET id = 9991015, sectorFk = 9991, code = 'A-05-5', pickingOrder = 5;
REPLACE parking SET id = 9992011, sectorFk = 9992, code = 'P-01-1', pickingOrder = 6;
REPLACE parking SET id = 9992012, sectorFk = 9992, code = 'P-02-2', pickingOrder = 7;
REPLACE parking SET id = 9992013, sectorFk = 9992, code = 'P-03-3', pickingOrder = 8;
REPLACE parking SET id = 9993011, sectorFk = 9993, code = 'M-01-1', pickingOrder = 9;
REPLACE parking SET id = 9993012, sectorFk = 9993, code = 'M-02-2', pickingOrder = 10;
REPLACE parking SET id = 9993013, sectorFk = 9993, code = 'M-03-3', pickingOrder = 11;
REPLACE shelving SET code = 'NAA', parkingFk = 9991011, priority = 1;
REPLACE shelving SET code = 'NBB', parkingFk = 9991012, priority = 1;
REPLACE shelving SET code = 'NCC', parkingFk = 9991013, priority = 1;
REPLACE shelving SET code = 'NDD', parkingFk = 9991014, priority = 1;
REPLACE shelving SET code = 'NEE', parkingFk = 9991015, priority = 1;
REPLACE shelving SET code = 'PAA', parkingFk = 9992011, priority = 1;
REPLACE shelving SET code = 'PBB', parkingFk = 9992012, priority = 1;
REPLACE shelving SET code = 'PCC', parkingFk = 9992013, priority = 1;
REPLACE shelving SET code = 'MAA', parkingFk = 9993011, priority = 1;
REPLACE shelving SET code = 'MBB', parkingFk = 9993012, priority = 1;
REPLACE shelving SET code = 'MCC', parkingFk = 9993013, priority = 1;
INSERT IGNORE INTO itemType
SET id = 999,
code = 'WOO',
name = 'Wood Objects',
categoryFk = 3,
workerFk = 103,
isInventory = TRUE,
life = 10,
density = 250,
itemPackingTypeFk = NULL,
temperatureFk = 'warm';
INSERT IGNORE INTO travel
SET id = 99,
shipped = CURDATE(),
landed = CURDATE(),
warehouseInFk = 999,
warehouseOutFk = 1,
isReceived = TRUE,
agencyFk = 1;
REPLACE entry
SET id = 999,
supplierFk = 791,
isConfirmed = TRUE,
dated = CURDATE(),
travelFk = 99,
companyFk = 442;
REPLACE ticket
SET id = 999999,
clientFk = 2,
warehouseFk = 999,
shipped = CURDATE(),
nickname = 'Cliente',
addressFk = 1,
companyFk = 442,
agencyModeFk = 10,
landed = CURDATE();
REPLACE collection
SET id = 10101010,
workerFk = 103;
INSERT IGNORE INTO ticketCollection
SET id = 10101010,
ticketFk = 999999,
collectionFk = 10101010;
REPLACE item
SET id = 999991,
name = 'Palito para pinchos',
`size` = 25,
stems = NULL,
category = 'EXT',
typeFk = 999,
longName = 'Palito para pinchos',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 6,
intrastatFk = 44219999;
REPLACE buy
SET id = 9999991,
entryFk = 999,
itemFk = 999991,
quantity = 8,
buyingValue = 0.61,
stickers = 1,
packing = 20,
`grouping` = 1,
groupingMode = 1,
packageFk = 94,
price1 = 1,
price2 = 1,
price3 = 1,
minPrice = 1,
weight = 50;
REPLACE sale
SET id = 99991,
itemFk = 999991,
ticketFk = 999999,
concept = 'Palito para pinchos',
quantity = 3,
price = 1,
discount = 0;
REPLACE item
SET id = 999992,
name = 'Madera verde',
`size` = 10,
stems = NULL,
category = 'EXT',
typeFk = 999,
longName = 'Madera verde',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 50,
intrastatFk = 44219999;
REPLACE buy
SET id = 9999992,
entryFk = 999,
itemFk = 999992,
quantity = 40,
buyingValue = 0.62,
stickers = 1,
packing = 40,
`grouping` = 5,
groupingMode = 1,
packageFk = 94,
price1 = 1,
price2 = 1,
price3 = 1,
minPrice = 1,
weight = 25;
REPLACE sale
SET id = 99992,
itemFk = 999992,
ticketFk = 999999,
concept = 'Madera Verde',
quantity = 10,
price = 1,
discount = 0;
REPLACE item
SET id = 999993,
name = 'Madera Roja/Morada',
`size` = 12,
stems = 2,
category = 'EXT',
typeFk = 999,
longName = 'Madera Roja/Morada',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 35,
intrastatFk = 44219999;
REPLACE buy
SET id = 9999993,
entryFk = 999,
itemFk = 999993,
quantity = 20,
buyingValue = 0.63,
stickers = 2,
packing = 10,
`grouping` = 5,
groupingMode = 1,
packageFk = 94,
price1 = 1,
price2 = 1,
price3 = 1,
minPrice = 1,
weight = 25;
REPLACE itemShelving
SET id = 9931,
itemFk = 999993,
shelvingFk = 'NCC',
visible = 10,
`grouping` = 5,
packing = 10;
REPLACE sale
SET id = 99993,
itemFk = 999993,
ticketFk = 999999,
concept = 'Madera Roja/Morada',
quantity = 15,
price = 1,
discount = 0;
REPLACE item
SET id = 999994,
name = 'Madera Naranja',
`size` = 18,
stems = 1,
category = 'EXT',
typeFk = 999,
longName = 'Madera Naranja',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 160,
intrastatFk = 44219999;
REPLACE buy
SET id = 9999994,
entryFk = 999,
itemFk = 999994,
quantity = 20,
buyingValue = 0.64,
stickers = 1,
packing = 20,
`grouping` = 4,
groupingMode = 1,
packageFk = 94,
price1 = 1,
price2 = 1,
price3 = 1,
minPrice = 1,
weight = 25;
REPLACE sale
SET id = 99994,
itemFk = 999994,
ticketFk = 999999,
concept = 'Madera Naranja',
quantity = 4,
price = 1,
discount = 0;
REPLACE item
SET id = 999995,
name = 'Madera Amarilla',
`size` = 11,
stems = 5,
category = 'EXT',
typeFk = 999,
longName = 'Madera Amarilla',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 78,
intrastatFk = 44219999;
REPLACE buy
SET id = 9999995,
entryFk = 999,
itemFk = 999995,
quantity = 4,
buyingValue = 0.65,
stickers = 1,
packing = 20,
`grouping` = 1,
groupingMode = 1,
packageFk = 94,
price1 = 1,
price2 = 1,
price3 = 1,
minPrice = 1,
weight = 35;
REPLACE sale
SET id = 99995,
itemFk = 999995,
ticketFk = 999999,
concept = 'Madera Amarilla',
quantity = 5,
price = 1,
discount = 0;
-- Palito naranja
REPLACE item
SET id = 999998,
name = 'Palito naranja',
`size` = 11,
stems = 1,
category = 'EXT',
typeFk = 999,
longName = 'Palito naranja',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 78,
intrastatFk = 44219999;
REPLACE buy
SET id = 9999998,
entryFk = 999,
itemFk = 999998,
quantity = 80,
buyingValue = 0.65,
stickers = 1,
packing = 200,
`grouping` = 30,
groupingMode = 1,
packageFk = 94,
price1 = 1,
price2 = 1,
price3 = 1,
minPrice = 1,
weight = 35;
REPLACE sale
SET id = 99998,
itemFk = 999998,
ticketFk = 999999,
concept = 'Palito naranja',
quantity = 60,
price = 1,
discount = 0;
-- Palito amarillo
REPLACE item
SET id = 999999,
name = 'Palito amarillo',
`size` = 11,
stems = 1,
category = 'EXT',
typeFk = 999,
longName = 'Palito amarillo',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 78,
intrastatFk = 44219999;
REPLACE buy
SET id = 9999999,
entryFk = 999,
itemFk = 999999,
quantity = 70,
buyingValue = 0.65,
stickers = 1,
packing = 500,
`grouping` = 10,
groupingMode = 1,
packageFk = 94,
price1 = 1,
price2 = 1,
price3 = 1,
minPrice = 1,
weight = 35;
REPLACE sale
SET id = 99999,
itemFk = 999999,
ticketFk = 999999,
concept = 'Palito amarillo',
quantity = 50,
price = 1,
discount = 0;
-- Palito azul
REPLACE item
SET id = 1000000,
name = 'Palito azul',
`size` = 10,
stems = 1,
category = 'EXT',
typeFk = 999,
longName = 'Palito azul',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 78,
intrastatFk = 44219999;
REPLACE buy
SET id = 10000000,
entryFk = 999,
itemFk = 1000000,
quantity = 75,
buyingValue = 0.65,
stickers = 2,
packing = 300,
`grouping` = 50,
groupingMode = 1,
packageFk = 94,
price1 = 1,
price2 = 1,
price3 = 1,
minPrice = 1,
weight = 35;
REPLACE sale
SET id = 100000,
itemFk = 1000000,
ticketFk = 999999,
concept = 'Palito azul',
quantity = 50,
price = 1,
discount = 0;
-- Palito rojo
REPLACE item
SET id = 1000001,
name = 'Palito rojo',
`size` = 10,
stems = NULL,
category = 'EXT',
typeFk = 999,
longName = 'Palito rojo',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 78,
intrastatFk = 44219999;
REPLACE buy
SET id = 10000001,
entryFk = 999,
itemFk = 1000001,
quantity = 12,
buyingValue = 0.65,
stickers = 2,
packing = 50,
`grouping` = 5,
groupingMode = 1,
packageFk = 94,
price1 = 1,
price2 = 1,
price3 = 1,
minPrice = 1,
weight = 35;
REPLACE sale
SET id = 100001,
itemFk = 1000001,
ticketFk = 999999,
concept = 'Palito rojo',
quantity = 10,
price = 1,
discount = 0;
-- Previa
INSERT IGNORE INTO item
SET id = 999996,
name = 'Bolas de madera',
`size` = 2,
stems = 4,
category = 'EXT',
typeFk = 999,
longName = 'Bolas de madera',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 20,
intrastatFk = 44219999;
REPLACE buy
SET id = 9999996,
entryFk = 999,
itemFk = 999996,
quantity = 5,
buyingValue = 3,
stickers = 1,
packing = 5,
`grouping` = 2,
groupingMode = 1,
packageFk = 94,
price1 = 7,
price2 = 7,
price3 = 7,
minPrice = 7,
weight = 80;
REPLACE sale
SET id = 99996,
itemFk = 999996,
ticketFk = 999999,
concept = 'Bolas de madera',
quantity = 4,
price = 7,
discount = 0,
isPicked = TRUE;
INSERT IGNORE INTO item
SET id = 999997,
name = 'Palitos de polo MIX',
`size` = 14,
stems = NULL,
category = 'EXT',
typeFk = 999,
longName = 'Palitos de polo MIX',
itemPackingTypeFk = NULL,
originFk = 1,
weightByPiece = 20,
intrastatFk = 44219999;
REPLACE buy
SET id = 9999997,
entryFk = 999,
itemFk = 999997,
quantity = 100,
buyingValue = 3.2,
stickers = 1,
packing = 100,
`grouping` = 5,
groupingMode = 1,
packageFk = 94,
price1 = 7,
price2 = 7,
price3 = 7,
minPrice = 7,
weight = 80;
REPLACE sale
SET id = 99997,
itemFk = 999997,
ticketFk = 999999,
concept = 'Palitos de polo MIX',
quantity = 5,
price = 7,
discount = 0;
-- Ubicación
DELETE ish.*
FROM itemShelving ish
JOIN shelving sh ON sh.code = ish.shelvingFk
JOIN parking p ON p.id = sh.parkingFk
JOIN sector s ON s.id = p.sectorFk
JOIN warehouse w ON w.id = s.warehouseFk
WHERE w.name = 'TestingWarehouse';
REPLACE vn.itemShelving
(id, itemFk, shelvingFk, visible, created, `grouping`, packing, packagingFk, userFk, isChecked)
VALUES
(9911, 999991, 'NAA', 8, '2023-09-20', 1, 20, NULL, 103, NULL),
(9912, 999998, 'NAA', 80, '2023-09-20', 10, 30, NULL, 103, NULL),
(9913, 1000001, 'NAA', 6, '2023-09-20', 3, 50, NULL, 103, NULL),
(9914, 1000000, 'NBB', 50, '2023-09-18', 25, 500, NULL, 103, NULL),
(9915, 999993, 'NBB', 25, '2023-09-18', NULL, 10, NULL, 103, NULL),
(9916, 999999, 'NBB', 30, '2023-09-18', 10, 500, NULL, 103, NULL),
(9917, 999993, 'NCC', 25, '2023-09-20', 5, 10, NULL, 103, NULL),
(9918, 999997, 'NCC', 10, '2023-09-20', NULL, 100, NULL, 103, NULL),
(9919, 999999, 'NCC', 40, '2023-09-20', 10, 500, NULL, 103, NULL),
(9920, 999995, 'NDD', 10, '2023-09-19', NULL, 20, NULL, 103, NULL),
(9921, 999994, 'NDD', 48, '2023-09-19', 4, 20, NULL, 103, NULL),
(9922, 1000001, 'NEE', 6, '2023-09-21', 3, 50, NULL, 103, NULL),
(9923, 999992, 'NEE', 50, '2023-09-21', NULL, 1, NULL, 103, NULL),
(9924, 1000000, 'NEE', 25, '2023-09-21', 25, 500, NULL, 103, NULL),
(9925, 999996, 'PAA', 5, '2023-09-27', 1, 5, NULL, 103, NULL),
(9926, 999997, 'PCC', 10, '2023-09-27', 5, 100, NULL, 103, NULL);
-- Previous for Bolas de madera
INSERT IGNORE INTO sectorCollection
SET id = 99,
userFk = 1,
sectorFk = 9992;
INSERT IGNORE INTO saleGroup
SET id = 999,
userFk = 1,
parkingFk = 9992011,
sectorFk = 9992;
INSERT IGNORE INTO sectorCollectionSaleGroup
SET id = 9999,
sectorCollectionFk = 99,
saleGroupFk = 999;
REPLACE saleGroupDetail
SET id = 99991,
saleFk = 99996,
saleGroupFk = 999;
REPLACE saleTracking
SET saleFk = 99996,
isChecked = TRUE,
workerFk = 103,
stateFk = 28;
INSERT IGNORE INTO itemShelvingSale
SET id = 991,
itemShelvingFk = 9962,
saleFk = 99996,
quantity = 5,
userFk = 1;
CALL itemShelvingSale_reserveByCollection(10101010);
UPDATE vn.collection
SET workerFk=9
WHERE id=10101010;

View File

@ -0,0 +1,52 @@
module.exports = Self => {
Self.remoteMethod('card', {
description: 'Idk',
accessType: 'READ',
http: {
path: `/card`,
verb: 'GET'
},
accepts: [
{
arg: 'itemFk',
type: 'number',
required: true,
},
{
arg: 'warehouseFk',
type: 'number',
required: true,
}
],
returns: {
type: ['object'],
root: true
},
});
Self.card = async(itemFk, warehouseFk) => {
const models = Self.app.models;
const [result] = await Self.rawSql('CALL vn.item_getInfo(?, ?)', [itemFk, warehouseFk]);
const barcodeItems = await Self.rawSql('SELECT vn.barcodeToItem(?) as realIdItem', [itemFk]);
const realIdItems = barcodeItems.map(barcodeItem => barcodeItem.realIdItem);
const barcodes = await models.ItemBarcode.find({
fields: ['code'],
where: {
realIdItem: {
inq: realIdItems
}
}
});
let itemInfo;
if (result.length) {
itemInfo = {...result[0]};
itemInfo.barcodes = barcodes.map(barcode => barcode.code);
}
return itemInfo;
};
};

View File

@ -17,6 +17,7 @@ module.exports = Self => {
require('../methods/item/buyerWasteEmail')(Self); require('../methods/item/buyerWasteEmail')(Self);
require('../methods/item/labelPdf')(Self); require('../methods/item/labelPdf')(Self);
require('../methods/item/setVisibleDiscard')(Self); require('../methods/item/setVisibleDiscard')(Self);
require('../methods/item/card')(Self);
Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'}); Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'});

View File

@ -0,0 +1,53 @@
const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethod('getPallet', {
description: 'Get pallet',
accessType: 'READ',
accepts: [
{
arg: 'expeditionFk',
type: 'integer',
},
],
http: {
path: `/getPallet`,
verb: 'GET'
},
returns: {
type: 'object',
},
});
Self.getPallet = async expeditionFk => {
try {
const pallet = await Self.findOne({
fields: ['truckFk'],
where: {
id: expeditionFk
},
include: [
{
relation: 'expeditionTruck',
scope: {
fields: ['eta', 'description']
}
}
],
});
if (pallet) {
const truck = pallet.expeditionTruck();
return {
truckFk: pallet.truckFk,
eta: truck.eta,
description: truck.description
};
}
throw new UserError('palletDoesNotExist');
} catch (e) {
return {message: e.message};
}
};
};

View File

@ -0,0 +1,3 @@
module.exports = function(Self) {
require('../methods/expedition-pallet/getPallet')(Self);
};

View File

@ -1,5 +1,6 @@
{ {
"name": "ExpeditionPallet", "name": "ExpeditionPallet",
"base": "VnModel",
"options": { "options": {
"mysql": { "mysql": {
"table": "expeditionPallet" "table": "expeditionPallet"
@ -10,13 +11,27 @@
"type": "number", "type": "number",
"id": true, "id": true,
"description": "Identifier" "description": "Identifier"
},
"truckFk": {
"type": "number"
},
"built": {
"type": "date"
},
"position": {
"type": "number"
},
"isPrint": {
"type": "number"
} }
}, },
"acls": [{ "relations": {
"accessType": "WRITE", "expeditionTruck": {
"principalType": "ROLE", "type": "belongsTo",
"principalId": "production", "model": "ExpeditionTruck",
"permission": "ALLOW" "foreignKey": "truckFk"
}] }
}
} }

View File

@ -10,7 +10,6 @@ module.exports = Self => {
Self.add = async ctx => { Self.add = async ctx => {
const userId = ctx.req.accessToken.userId; const userId = ctx.req.accessToken.userId;
// He visto findOrCreate pero no funciona
const user = await Self.findById(userId); const user = await Self.findById(userId);
if (!user) { if (!user) {
await Self.create({ await Self.create({

View File

@ -0,0 +1,39 @@
module.exports = Self => {
Self.remoteMethodCtx('getAvailablePrinters', {
description: 'Retrieve available printers for an user',
accessType: 'READ',
http: {
path: `/getAvailabePrinters`,
verb: 'GET'
},
returns: {
type: ['object'],
},
});
Self.getAvailablePrinters = async ctx => {
const userId = ctx.req.accessToken.userId;
const operators = await Self.find({
fields: [],
where: {
workerFk: userId,
},
include: {
relation: 'printer',
scope: {
fields: ['id', 'name']
},
where: {
isLabeler: {neq: 0}
}
}
});
if (operators.length) {
return operators.map(operator => {
return operator.printer();
});
}
};
};

View File

@ -0,0 +1,39 @@
module.exports = Self => {
Self.remoteMethodCtx('getPrinter', {
description: 'Gets user\'s printer',
accessType: 'READ',
http: {
path: `/getPrinter`,
verb: 'GET'
},
returns: {
type: 'object',
},
});
Self.getPrinter = async ctx => {
const userId = ctx.req.accessToken.userId;
const operator = await Self.findOne({
include: [
{
relation: 'printer',
scope: {
fields: ['id', 'name'],
}
}
],
where: {
workerFk: userId
}
});
if (operator) {
const printer = operator.printer();
return {
id: printer.id,
name: printer.name
};
}
};
};

View File

@ -1,5 +1,7 @@
module.exports = Self => { module.exports = Self => {
require('../methods/operator/add')(Self); require('../methods/operator/add')(Self);
require('../methods/operator/getPrinter')(Self);
require('../methods/operator/getAvailablePrinters')(Self);
Self.observe('after save', async function(ctx) { Self.observe('after save', async function(ctx) {
const instance = ctx.data || ctx.instance; const instance = ctx.data || ctx.instance;