#6276 createNewWarehouse methods migrated from silex to salix #1850

Merged
jorgep merged 158 commits from 6276-createNewWarehouse into dev 2024-03-06 11:32:11 +00:00
13 changed files with 913 additions and 8 deletions
Showing only changes of commit 251578146e - Show all commits

View File

@ -0,0 +1,28 @@
const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethodCtx('assignCollection', {
jorgep marked this conversation as resolved Outdated

nombre simplemente assign al estar en el contexto collection se asume que es una coleccion

nombre simplemente assign al estar en el contexto collection se asume que es una coleccion
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/previousLabel')(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`)
VALUES
('1106', '1', '1', 'H', '1', '1', '1'),
('9', '2', '1', 'H', '1', '1', '1'),
('1107', '1', '1', 'V', '1', '1', '1');
INSERT INTO `vn`.`collection`(`id`, `workerFk`, `stateFk`, `created`, `trainFk`)
@ -2996,3 +2997,671 @@ INSERT INTO `vn`.`invoiceCorrectionType` (`id`, `description`)
(1, 'Error in VAT calculation'),
(2, 'Error in sales details'),
(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', {
jorgep marked this conversation as resolved Outdated

get

get
description: 'Idk',
accessType: 'READ',
http: {
path: `/card`,
verb: 'GET'
},
accepts: [
{
arg: 'itemFk',
jorgep marked this conversation as resolved Outdated

barcode

barcode
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: {
jorgep marked this conversation as resolved Outdated

quitar esta llamada, dentro de item_getInfo ya se llama a barcodeToItem por tanto itemInfo ya contiene el id que se busca

quitar esta llamada, dentro de item_getInfo ya se llama a barcodeToItem por tanto itemInfo ya contiene el id que se busca

@sergiodt es correcto o quieres los barcodes tambien?

@sergiodt es correcto o quieres los barcodes tambien?
realIdItem: {
inq: realIdItems
jorgep marked this conversation as resolved Outdated

quitar salto

quitar salto
}
}
});
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/labelPdf')(Self);
require('../methods/item/setVisibleDiscard')(Self);
require('../methods/item/card')(Self);
Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'});

View File

@ -0,0 +1,53 @@
const UserError = require('vn-loopback/util/user-error');
jorgep marked this conversation as resolved Outdated

este solo con un filtro de loopback no lo puedes conseguir sacar en el explorer, así no es necesario crear este método?

este solo con un filtro de loopback no lo puedes conseguir sacar en el explorer, así no es necesario crear este método?
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",
"base": "VnModel",
"options": {
"mysql": {
"table": "expeditionPallet"
@ -10,13 +11,27 @@
"type": "number",
"id": true,
"description": "Identifier"
}
},
"truckFk": {
jorgep marked this conversation as resolved
Review

al poner la relacion este bloque lo puedes quitar

al poner la relacion este bloque lo puedes quitar
"type": "number"
},
"built": {
"type": "date"
},
"position": {
"type": "number"
},
"isPrint": {
"type": "number"
}
},
"acls": [{
"accessType": "WRITE",
"principalType": "ROLE",
"principalId": "production",
"permission": "ALLOW"
}]
"relations": {
"expeditionTruck": {
"type": "belongsTo",
"model": "ExpeditionTruck",
"foreignKey": "truckFk"
}
}
}

View File

@ -10,7 +10,6 @@ module.exports = Self => {
Self.add = async ctx => {
const userId = ctx.req.accessToken.userId;
// He visto findOrCreate pero no funciona
const user = await Self.findById(userId);
if (!user) {
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 => {
require('../methods/operator/add')(Self);
require('../methods/operator/getPrinter')(Self);
require('../methods/operator/getAvailablePrinters')(Self);
Self.observe('after save', async function(ctx) {
const instance = ctx.data || ctx.instance;