Merge branch 'dev' into 6500-procRefactor8
gitea/salix/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Robert Ferrús 2024-04-11 12:21:32 +00:00
commit 04c5a9a004
27 changed files with 60 additions and 61 deletions

View File

@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [24.18.01] - 2024-05-02
## [24.16.01] - 2024-04-18 ## [24.16.01] - 2024-04-18
## [2414.01] - 2024-04-04 ## [2414.01] - 2024-04-04

View File

@ -3,14 +3,14 @@ const {models} = require('vn-loopback/server/server');
describe('Chat send()', () => { describe('Chat send()', () => {
it('should return true as response', async() => { it('should return true as response', async() => {
let ctx = {req: {accessToken: {userId: 1}}}; let ctx = {req: {accessToken: {userId: 1}}};
let response = await models.Chat.send(ctx, '@salesPerson', 'I changed something'); let response = await models.Chat.send(ctx, '@salesperson', 'I changed something');
expect(response).toEqual(true); expect(response).toEqual(true);
}); });
it('should return false as response', async() => { it('should return false as response', async() => {
let ctx = {req: {accessToken: {userId: 18}}}; let ctx = {req: {accessToken: {userId: 18}}};
let response = await models.Chat.send(ctx, '@salesPerson', 'I changed something'); let response = await models.Chat.send(ctx, '@salesperson', 'I changed something');
expect(response).toEqual(false); expect(response).toEqual(false);
}); });

View File

@ -81,7 +81,7 @@ INSERT INTO `account`.`roleConfig`(`id`, `mysqlPassword`, `rolePrefix`, `userPre
CALL `account`.`role_sync`; CALL `account`.`role_sync`;
INSERT INTO `account`.`user`(`id`,`name`, `nickname`, `role`,`active`,`email`, `lang`, `image`, `password`) INSERT INTO `account`.`user`(`id`,`name`, `nickname`, `role`,`active`,`email`, `lang`, `image`, `password`)
SELECT id, name, CONCAT(name, 'Nick'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2' SELECT id, LOWER(name), CONCAT(name, 'Nick'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2'
FROM `account`.`role` FROM `account`.`role`
ORDER BY id; ORDER BY id;
@ -118,18 +118,18 @@ INSERT INTO `hedera`.`tpvConfig`(`id`, `currency`, `terminal`, `transactionType`
INSERT INTO `account`.`user`(`id`,`name`,`nickname`, `password`,`role`,`active`,`email`,`lang`, `image`) INSERT INTO `account`.`user`(`id`,`name`,`nickname`, `password`,`role`,`active`,`email`,`lang`, `image`)
VALUES VALUES
(1101, 'BruceWayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es','1101'), (1101, 'brucewayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es','1101'),
(1102, 'PetterParker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'PetterParker@mydomain.com', 'en','1102'), (1102, 'petterparker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'PetterParker@mydomain.com', 'en','1102'),
(1103, 'ClarkKent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr','1103'), (1103, 'clarkkent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr','1103'),
(1104, 'TonyStark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es','1104'), (1104, 'tonystark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es','1104'),
(1105, 'MaxEisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt','1105'), (1105, 'maxeisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt','1105'),
(1106, 'DavidCharlesHaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en','1106'), (1106, 'davidcharleshaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en','1106'),
(1107, 'HankPym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en','1107'), (1107, 'hankpym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en','1107'),
(1108, 'CharlesXavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en','1108'), (1108, 'charlesxavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en','1108'),
(1109, 'BruceBanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en','1109'), (1109, 'brucebanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en','1109'),
(1110, 'JessicaJones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en','1110'), (1110, 'jessicajones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en','1110'),
(1111, 'Missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'), (1111, 'missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'),
(1112, 'Trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'); (1112, 'trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29');
UPDATE account.`user` UPDATE account.`user`
SET passExpired = DATE_SUB(util.VN_CURDATE(), INTERVAL 1 YEAR) SET passExpired = DATE_SUB(util.VN_CURDATE(), INTERVAL 1 YEAR)

View File

@ -7,7 +7,7 @@ BEGIN
* The user name must only contain lowercase letters or, starting with second * The user name must only contain lowercase letters or, starting with second
* character, numbers or underscores. * character, numbers or underscores.
*/ */
IF vUserName NOT REGEXP '^[a-z0-9_-]*$' THEN IF vUserName NOT REGEXP BINARY '^[a-z0-9_-]+$' THEN
SIGNAL SQLSTATE '45000' SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'INVALID_USER_NAME'; SET MESSAGE_TEXT = 'INVALID_USER_NAME';
END IF; END IF;

View File

@ -6,7 +6,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.catalogue_get(vLanded DATE,
READS SQL DATA READS SQL DATA
proc:BEGIN proc:BEGIN
/** /**
* Returns list, price and all the stuff regarding the floranet items * Returns list, price and all the stuff regarding the floranet items.
* *
* @param vLanded Delivery date * @param vLanded Delivery date
* @param vPostalCode Delivery address postal code * @param vPostalCode Delivery address postal code

View File

@ -11,7 +11,7 @@ PROCEDURE floranet.contact_request(
READS SQL DATA READS SQL DATA
BEGIN BEGIN
/** /**
* Set actions for contact request. * Set actions for contact request
* *
* @param vPostalCode Delivery address postal code * @param vPostalCode Delivery address postal code
*/ */

View File

@ -6,7 +6,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `floranet`.`deliveryDate_get`(vPosta
READS SQL DATA READS SQL DATA
BEGIN BEGIN
/** /**
* Returns available dates for this postalCode, in the next seven days * Returns available dates for this postalCode, in the next seven days.
* *
* @param vPostalCode Delivery address postal code * @param vPostalCode Delivery address postal code
*/ */

View File

@ -7,7 +7,7 @@ CREATE DEFINER=`root`@`localhost`PROCEDURE floranet.order_confirm(vCatalogueFk I
READS SQL DATA READS SQL DATA
BEGIN BEGIN
/** Update order.isPaid field /** Update order.isPaid field.
* *
* @param vCatalogueFk floranet.catalogue.id * @param vCatalogueFk floranet.catalogue.id
* *

View File

@ -6,7 +6,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.order_put(vOrder JSON)
READS SQL DATA READS SQL DATA
BEGIN BEGIN
/** /**
* Get and process an order * Get and process an order.
* *
* @param vOrder Data of the order * @param vOrder Data of the order
* *

View File

@ -6,7 +6,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.sliders_get()
READS SQL DATA READS SQL DATA
BEGIN BEGIN
/** /**
* Returns list of url for sliders * Returns list of url for sliders.
*/ */
SELECT SELECT
CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image) url, CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image) url,

View File

@ -15,7 +15,7 @@ BEGIN
FROM `entry` FROM `entry`
WHERE id = vSelf; WHERE id = vSelf;
IF vIsBooked THEN IF vIsBooked AND NOT @isModeInventory THEN
CALL util.throw('Entry is already booked'); CALL util.throw('Entry is already booked');
END IF; END IF;
END$$ END$$

View File

@ -23,7 +23,7 @@ AS SELECT `s`.`id` AS `Id_Proveedor`,
`s`.`isOfficial` AS `oficial`, `s`.`isOfficial` AS `oficial`,
`s`.`workerFk` AS `workerFk`, `s`.`workerFk` AS `workerFk`,
`s`.`payDay` AS `pay_day`, `s`.`payDay` AS `pay_day`,
`s`.`isSerious` AS `serious`, `s`.`isReal` AS `serious`,
`s`.`note` AS `notas`, `s`.`note` AS `notas`,
`s`.`taxTypeSageFk` AS `taxTypeSageFk`, `s`.`taxTypeSageFk` AS `taxTypeSageFk`,
`s`.`withholdingSageFk` AS `withholdingSageFk`, `s`.`withholdingSageFk` AS `withholdingSageFk`,

View File

@ -0,0 +1,9 @@
UPDATE account.user
SET name = LOWER(name),
name = REPLACE(name, ' ', ''),
name = REPLACE(name, '.', ''),
name = REPLACE(name, 'ñ', 'n'),
name = REPLACE(name, '*', ''),
name = REPLACE(name, 'ç', 'z'),
name = REPLACE(name, 'ã', 'a')
WHERE NOT active;

View File

@ -32,7 +32,7 @@ describe('Client create path', () => {
await page.autocompleteSearch(selectors.createClientView.salesPerson, 'salesPerson'); await page.autocompleteSearch(selectors.createClientView.salesPerson, 'salesPerson');
await page.autocompleteSearch(selectors.createClientView.businessType, 'florist'); await page.autocompleteSearch(selectors.createClientView.businessType, 'florist');
await page.write(selectors.createClientView.taxNumber, '74451390E'); await page.write(selectors.createClientView.taxNumber, '74451390E');
await page.write(selectors.createClientView.userName, 'CaptainMarvel'); await page.write(selectors.createClientView.userName, 'captainmarvel');
await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es'); await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
await page.waitToClick(selectors.createClientView.createButton); await page.waitToClick(selectors.createClientView.createButton);
const message = await page.waitForSnackbar(); const message = await page.waitForSnackbar();

View File

@ -29,7 +29,7 @@ describe('Client web access path', () => {
await page.click($.enableWebAccess); await page.click($.enableWebAccess);
await page.click($.saveButton); await page.click($.saveButton);
const enableMessage = await page.waitForSnackbar(); const enableMessage = await page.waitForSnackbar();
await page.overwrite($.userName, 'Legion'); await page.overwrite($.userName, 'legion');
await page.overwrite($.email, 'legion@marvel.com'); await page.overwrite($.email, 'legion@marvel.com');
await page.click($.saveButton); await page.click($.saveButton);
const modifyMessage = await page.waitForSnackbar(); const modifyMessage = await page.waitForSnackbar();
@ -47,7 +47,7 @@ describe('Client web access path', () => {
expect(modifyMessage.type).toBe('success'); expect(modifyMessage.type).toBe('success');
expect(hasAccess).toBe('unchecked'); expect(hasAccess).toBe('unchecked');
expect(userName).toEqual('Legion'); expect(userName).toEqual('legion');
expect(email).toEqual('legion@marvel.com'); expect(email).toEqual('legion@marvel.com');
// expect(logName).toEqual('Legion'); // expect(logName).toEqual('Legion');

View File

@ -34,6 +34,6 @@ describe('Client Add credit path', () => {
const result = await page.waitToGetProperty(selectors.clientCredit.firstCreditText, 'innerText'); const result = await page.waitToGetProperty(selectors.clientCredit.firstCreditText, 'innerText');
expect(result).toContain(999); expect(result).toContain(999);
expect(result).toContain('salesAssistant'); expect(result).toContain('salesassistant');
}); });
}); });

View File

@ -61,7 +61,7 @@ describe('Client summary path', () => {
it('should display web access details', async() => { it('should display web access details', async() => {
const result = await page.waitToGetProperty(selectors.clientSummary.userName, 'innerText'); const result = await page.waitToGetProperty(selectors.clientSummary.userName, 'innerText');
expect(result).toContain('PetterParker'); expect(result).toContain('petterparker');
}); });
it('should display business data', async() => { it('should display business data', async() => {

View File

@ -59,7 +59,7 @@ describe('Ticket Create new tracking state path', () => {
const result = await page const result = await page
.waitToGetProperty(selectors.createStateView.worker, 'value'); .waitToGetProperty(selectors.createStateView.worker, 'value');
expect(result).toEqual('salesPerson'); expect(result).toEqual('salesperson');
}); });
it(`should succesfully create a valid state`, async() => { it(`should succesfully create a valid state`, async() => {

View File

@ -34,14 +34,6 @@ describe('Claim edit basic data path', () => {
await page.waitForState('claim.card.detail'); await page.waitForState('claim.card.detail');
}); });
it('should check the "Pick up" checkbox', async() => {
await page.reloadSection('claim.card.basicData');
await page.waitToClick(selectors.claimBasicData.saveButton);
const message = await page.waitForSnackbar();
expect(message.text).toContain('Data saved!');
});
it('should confirm the claim state was edited', async() => { it('should confirm the claim state was edited', async() => {
await page.reloadSection('claim.card.basicData'); await page.reloadSection('claim.card.basicData');
await page.waitForSelector(selectors.claimBasicData.claimState); await page.waitForSelector(selectors.claimBasicData.claimState);

View File

@ -21,7 +21,7 @@ describe('Account create and basic data path', () => {
}); });
it('should fill the form and then save it by clicking the create button', async() => { it('should fill the form and then save it by clicking the create button', async() => {
await page.write(selectors.accountIndex.newName, 'Remy'); await page.write(selectors.accountIndex.newName, 'remy');
await page.write(selectors.accountIndex.newNickname, 'Gambit'); await page.write(selectors.accountIndex.newNickname, 'Gambit');
await page.write(selectors.accountIndex.newEmail, 'RemyEtienneLeBeau@verdnatura.es'); await page.write(selectors.accountIndex.newEmail, 'RemyEtienneLeBeau@verdnatura.es');
await page.autocompleteSearch(selectors.accountIndex.newRole, 'Trainee'); await page.autocompleteSearch(selectors.accountIndex.newRole, 'Trainee');
@ -39,7 +39,7 @@ describe('Account create and basic data path', () => {
it('should check the name is as expected', async() => { it('should check the name is as expected', async() => {
const result = await page.waitToGetProperty(selectors.accountBasicData.name, 'value'); const result = await page.waitToGetProperty(selectors.accountBasicData.name, 'value');
expect(result).toEqual('Remy'); expect(result).toEqual('remy');
}); });
it('should check the nickname is as expected', async() => { it('should check the nickname is as expected', async() => {

View File

@ -86,7 +86,8 @@ export default class Auth {
return this.$http.get('VnUsers/ShareToken', { return this.$http.get('VnUsers/ShareToken', {
headers: {Authorization: json.data.token} headers: {Authorization: json.data.token}
}).then(({data}) => { }).then(({data}) => {
this.vnToken.set(json.data.token, data.multimediaToken.id, now, json.data.ttl, remember); // Usar data.multimediaToken.id cuando el resto de sistemas lo tengan completado
this.vnToken.set(json.data.token, json.data.token, now, json.data.ttl, remember);
this.loadAcls().then(() => { this.loadAcls().then(() => {
let continueHash = this.$state.params.continue; let continueHash = this.$state.params.continue;
if (continueHash) if (continueHash)

View File

@ -3,8 +3,8 @@ const LoopBackContext = require('loopback-context');
describe('Client Create', () => { describe('Client Create', () => {
const newAccount = { const newAccount = {
userName: 'Deadpool', userName: 'deadpool',
email: 'Deadpool@marvel.com', email: 'deadpool@marvel.com',
fi: '16195279J', fi: '16195279J',
name: 'Wade', name: 'Wade',
socialName: 'DEADPOOL MARVEL', socialName: 'DEADPOOL MARVEL',
@ -31,7 +31,7 @@ describe('Client Create', () => {
}); });
}); });
it(`should not find Deadpool as he's not created yet`, async() => { it(`should not find deadpool as he's not created yet`, async() => {
const tx = await models.Client.beginTransaction({}); const tx = await models.Client.beginTransaction({});
try { try {

View File

@ -31,8 +31,8 @@ describe('Client Model', () => {
await models.Client.notifyAssignment(instance, previousWorkerId, currentWorkerId); await models.Client.notifyAssignment(instance, previousWorkerId, currentWorkerId);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@DavidCharlesHaller', `Client assignment has changed`); expect(chatModel.send).toHaveBeenCalledWith(ctx, '@davidcharleshaller', `Client assignment has changed`);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@HankPym', `Client assignment has changed`); expect(chatModel.send).toHaveBeenCalledWith(ctx, '@hankpym', `Client assignment has changed`);
}); });
it('should call to the Chat send() method for the previous worker', async() => { it('should call to the Chat send() method for the previous worker', async() => {
@ -40,7 +40,7 @@ describe('Client Model', () => {
await models.Client.notifyAssignment(instance, null, currentWorkerId); await models.Client.notifyAssignment(instance, null, currentWorkerId);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@HankPym', `Client assignment has changed`); expect(chatModel.send).toHaveBeenCalledWith(ctx, '@hankpym', `Client assignment has changed`);
}); });
it('should call to the Chat send() method for the current worker', async() => { it('should call to the Chat send() method for the current worker', async() => {
@ -48,7 +48,7 @@ describe('Client Model', () => {
await models.Client.notifyAssignment(instance, previousWorkerId, null); await models.Client.notifyAssignment(instance, previousWorkerId, null);
expect(chatModel.send).toHaveBeenCalledWith(ctx, '@DavidCharlesHaller', `Client assignment has changed`); expect(chatModel.send).toHaveBeenCalledWith(ctx, '@davidcharleshaller', `Client assignment has changed`);
}); });
}); });

View File

@ -6,7 +6,7 @@ describe('Worker activeWithInheritedRole', () => {
allRolesCount = await app.models.VnRole.count(); allRolesCount = await app.models.VnRole.count();
}); });
it('should return the workers with an inherited role of salesPerson', async() => { it('should return the workers with an inherited role of salesperson', async() => {
const filter = {where: {role: 'salesPerson'}}; const filter = {where: {role: 'salesPerson'}};
const result = await app.models.Worker.activeWithInheritedRole(filter); const result = await app.models.Worker.activeWithInheritedRole(filter);

View File

@ -20,7 +20,7 @@ describe('Worker new', () => {
const employeeId = 1; const employeeId = 1;
const defaultWorker = { const defaultWorker = {
fi: '78457139E', fi: '78457139E',
name: 'DEFAULTERWORKER', name: 'defaulterworker',
firstName: 'DEFAULT', firstName: 'DEFAULT',
lastNames: 'WORKER', lastNames: 'WORKER',
email: 'defaultWorker@mydomain.com', email: 'defaultWorker@mydomain.com',

View File

@ -4,10 +4,11 @@ import './style.scss';
import UserError from 'core/lib/user-error'; import UserError from 'core/lib/user-error';
class Controller extends Section { class Controller extends Section {
constructor($element, $, vnWeekDays) { constructor($element, $, vnWeekDays, moment) {
super($element, $); super($element, $);
this.weekDays = []; this.weekDays = [];
this.weekdayNames = vnWeekDays.locales; this.weekdayNames = vnWeekDays.locales;
this.moment = moment;
this.entryDirections = [ this.entryDirections = [
{code: 'in', description: this.$t('In')}, {code: 'in', description: this.$t('In')},
{code: 'middle', description: this.$t('Intermediate')}, {code: 'middle', description: this.$t('Intermediate')},
@ -364,14 +365,8 @@ class Controller extends Section {
} }
getWeekNumber(date) { getWeekNumber(date) {
const tempDate = new Date(date); const tempDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
let dayOfWeek = tempDate.getDay(); return this.moment(tempDate).isoWeek();
dayOfWeek = (dayOfWeek === 0) ? 7 : dayOfWeek;
const firstDayOfWeek = new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() - (dayOfWeek - 1));
const firstDayOfYear = new Date(tempDate.getFullYear(), 0, 1);
const differenceInMilliseconds = firstDayOfWeek.getTime() - firstDayOfYear.getTime();
const weekNumber = Math.floor(differenceInMilliseconds / (1000 * 60 * 60 * 24 * 7)) + 1;
return weekNumber;
} }
isSatisfied() { isSatisfied() {
@ -499,7 +494,7 @@ class Controller extends Section {
} }
} }
Controller.$inject = ['$element', '$scope', 'vnWeekDays']; Controller.$inject = ['$element', '$scope', 'vnWeekDays', 'moment'];
ngModule.vnComponent('vnWorkerTimeControl', { ngModule.vnComponent('vnWorkerTimeControl', {
template: require('./index.html'), template: require('./index.html'),

View File

@ -1,6 +1,6 @@
{ {
"name": "salix-back", "name": "salix-back",
"version": "24.16.0", "version": "24.18.0",
"author": "Verdnatura Levante SL", "author": "Verdnatura Levante SL",
"description": "Salix backend", "description": "Salix backend",
"license": "GPL-3.0", "license": "GPL-3.0",