7167-testToMaster_2414 #2244
|
@ -5,6 +5,14 @@ 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/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [2414.01] - 2024-04-04
|
||||
|
||||
### Added
|
||||
|
||||
### Changed
|
||||
|
||||
### Fixed
|
||||
|
||||
## [2408.01] - 2024-02-22
|
||||
|
||||
### Added
|
||||
|
|
|
@ -29,7 +29,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: `/:id/downloadFile`,
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.downloadFile = async function(ctx, id) {
|
||||
|
|
|
@ -42,7 +42,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: `/:id/download`,
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.download = async function(id, fileCabinet, filter) {
|
||||
|
|
|
@ -47,7 +47,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: `/:collection/:size/:id/download`,
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.download = async function(ctx, collection, size, id) {
|
||||
|
|
|
@ -4,20 +4,21 @@ describe('image download()', () => {
|
|||
const collection = 'user';
|
||||
const size = '160x160';
|
||||
const employeeId = 1;
|
||||
const developerId = 9;
|
||||
const jessicaJonesId = 1110;
|
||||
const ctx = {req: {accessToken: {userId: employeeId}}};
|
||||
|
||||
it('should return the image content-type of the user', async() => {
|
||||
const userId = 9;
|
||||
const image = await models.Image.download(ctx, collection, size, userId);
|
||||
const image = await models.Image.download(ctx, collection, size, developerId);
|
||||
const contentType = image[1];
|
||||
|
||||
expect(contentType).toEqual('image/png');
|
||||
});
|
||||
|
||||
it(`should return false if the user doesn't have image`, async() => {
|
||||
const userId = 1110;
|
||||
const image = await models.Image.download(ctx, collection, size, userId);
|
||||
it('should return the user profile picture', async() => {
|
||||
const image = await models.Image.download(ctx, collection, size, jessicaJonesId);
|
||||
const fileName = image[2];
|
||||
|
||||
expect(image).toBeFalse();
|
||||
expect(fileName).toMatch('1110.png');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -49,6 +49,7 @@ describe('MRWConfig createShipment()', () => {
|
|||
|
||||
await models.MrwConfig.create(
|
||||
{
|
||||
'id': 1,
|
||||
'url': 'https://url.com',
|
||||
'user': 'user',
|
||||
'password': 'password',
|
||||
|
|
|
@ -7,7 +7,7 @@ describe('NotificationSubscription getList()', () => {
|
|||
const notifications = await models.Notification.find({});
|
||||
const totalAvailable = notifications.length - active.length;
|
||||
|
||||
expect(active.length).toEqual(2);
|
||||
expect(active.length).toEqual(3);
|
||||
expect(available.length).toEqual(totalAvailable);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
module.exports = Self => {
|
||||
Self.remoteMethodCtx('shareToken', {
|
||||
description: 'Returns token to view files or images and share it',
|
||||
accessType: 'WRITE',
|
||||
accepts: [],
|
||||
returns: {
|
||||
type: 'Object',
|
||||
root: true
|
||||
},
|
||||
http: {
|
||||
path: `/shareToken`,
|
||||
verb: 'GET'
|
||||
}
|
||||
});
|
||||
|
||||
Self.shareToken = async function(ctx) {
|
||||
const {accessToken: token} = ctx.req;
|
||||
|
||||
const user = await Self.findById(token.userId);
|
||||
const multimediaToken = await user.accessTokens.create({
|
||||
scopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
return {multimediaToken};
|
||||
};
|
||||
};
|
|
@ -0,0 +1,27 @@
|
|||
const {models} = require('vn-loopback/server/server');
|
||||
describe('Share Token', () => {
|
||||
let ctx = null;
|
||||
beforeAll(async() => {
|
||||
const unAuthCtx = {
|
||||
req: {
|
||||
headers: {},
|
||||
connection: {
|
||||
remoteAddress: '127.0.0.1'
|
||||
},
|
||||
getLocale: () => 'en'
|
||||
},
|
||||
args: {}
|
||||
};
|
||||
let login = await models.VnUser.signIn(unAuthCtx, 'salesAssistant', 'nightmare');
|
||||
let accessToken = await models.AccessToken.findById(login.token);
|
||||
ctx = {req: {accessToken: accessToken}};
|
||||
});
|
||||
|
||||
it('should renew token', async() => {
|
||||
const multimediaToken = await models.VnUser.shareToken(ctx);
|
||||
|
||||
expect(Object.keys(multimediaToken).length).toEqual(1);
|
||||
expect(multimediaToken.multimediaToken.userId).toEqual(ctx.req.accessToken.userId);
|
||||
expect(multimediaToken.multimediaToken.scopes[0]).toEqual('read:multimedia');
|
||||
});
|
||||
});
|
|
@ -9,6 +9,7 @@
|
|||
"properties": {
|
||||
"id": {
|
||||
"type": "number",
|
||||
"id": true,
|
||||
"required": true
|
||||
},
|
||||
"url": {
|
||||
|
|
|
@ -13,6 +13,7 @@ module.exports = function(Self) {
|
|||
require('../methods/vn-user/privileges')(Self);
|
||||
require('../methods/vn-user/validate-auth')(Self);
|
||||
require('../methods/vn-user/renew-token')(Self);
|
||||
require('../methods/vn-user/share-token')(Self);
|
||||
require('../methods/vn-user/update-user')(Self);
|
||||
|
||||
Self.definition.settings.acls = Self.definition.settings.acls.filter(acl => acl.property !== 'create');
|
||||
|
|
|
@ -1,129 +1,140 @@
|
|||
{
|
||||
"name": "VnUser",
|
||||
"base": "User",
|
||||
"validateUpsert": true,
|
||||
"options": {
|
||||
"mysql": {
|
||||
"table": "account.user"
|
||||
}
|
||||
},
|
||||
"name": "VnUser",
|
||||
"base": "User",
|
||||
"validateUpsert": true,
|
||||
"options": {
|
||||
"mysql": {
|
||||
"table": "account.user"
|
||||
}
|
||||
},
|
||||
"mixins": {
|
||||
"Loggable": true
|
||||
},
|
||||
"resetPasswordTokenTTL": "604800",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number",
|
||||
"id": true
|
||||
},
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number",
|
||||
"id": true
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"username": {
|
||||
"type": "string"
|
||||
},
|
||||
"roleFk": {
|
||||
"type": "number",
|
||||
"mysql": {
|
||||
"columnName": "role"
|
||||
}
|
||||
},
|
||||
"nickname": {
|
||||
"type": "string"
|
||||
},
|
||||
"lang": {
|
||||
"type": "string"
|
||||
},
|
||||
"active": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"emailVerified": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"created": {
|
||||
"type": "date"
|
||||
},
|
||||
"updated": {
|
||||
"type": "date"
|
||||
},
|
||||
"image": {
|
||||
"type": "string"
|
||||
},
|
||||
"hasGrant": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"type": "string",
|
||||
"required": true
|
||||
},
|
||||
"username": {
|
||||
"type": "string"
|
||||
},
|
||||
"roleFk": {
|
||||
"type": "number",
|
||||
"mysql": {
|
||||
"columnName": "role"
|
||||
}
|
||||
},
|
||||
"nickname": {
|
||||
"type": "string"
|
||||
},
|
||||
"lang": {
|
||||
"type": "string"
|
||||
},
|
||||
"active": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"emailVerified": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"created": {
|
||||
"type": "date"
|
||||
},
|
||||
"updated": {
|
||||
"type": "date"
|
||||
},
|
||||
"image": {
|
||||
"type": "string"
|
||||
},
|
||||
"hasGrant": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"passExpired": {
|
||||
"type": "date"
|
||||
},
|
||||
"twoFactor": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
"role": {
|
||||
"type": "belongsTo",
|
||||
"model": "VnRole",
|
||||
"foreignKey": "roleFk"
|
||||
},
|
||||
"roles": {
|
||||
"type": "hasMany",
|
||||
"model": "RoleRole",
|
||||
"foreignKey": "role",
|
||||
"primaryKey": "roleFk"
|
||||
},
|
||||
"emailUser": {
|
||||
"type": "hasOne",
|
||||
"model": "EmailUser",
|
||||
"foreignKey": "userFk"
|
||||
},
|
||||
"worker": {
|
||||
"type": "hasOne",
|
||||
"model": "Worker",
|
||||
"foreignKey": "id"
|
||||
},
|
||||
"userConfig": {
|
||||
"type": "hasOne",
|
||||
"model": "UserConfig",
|
||||
"foreignKey": "userFk"
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"property": "signIn",
|
||||
"accessType": "EXECUTE",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
}, {
|
||||
"property": "recoverPassword",
|
||||
"accessType": "EXECUTE",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
}, {
|
||||
"property": "validateAuth",
|
||||
"accessType": "EXECUTE",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
}, {
|
||||
"property": "privileges",
|
||||
"accessType": "*",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$authenticated",
|
||||
"permission": "ALLOW"
|
||||
}, {
|
||||
"property": "renewToken",
|
||||
"accessType": "WRITE",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$authenticated",
|
||||
"permission": "ALLOW"
|
||||
}
|
||||
],
|
||||
"twoFactor": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
"role": {
|
||||
"type": "belongsTo",
|
||||
"model": "VnRole",
|
||||
"foreignKey": "roleFk"
|
||||
},
|
||||
"roles": {
|
||||
"type": "hasMany",
|
||||
"model": "RoleRole",
|
||||
"foreignKey": "role",
|
||||
"primaryKey": "roleFk"
|
||||
},
|
||||
"emailUser": {
|
||||
"type": "hasOne",
|
||||
"model": "EmailUser",
|
||||
"foreignKey": "userFk"
|
||||
},
|
||||
"worker": {
|
||||
"type": "hasOne",
|
||||
"model": "Worker",
|
||||
"foreignKey": "id"
|
||||
},
|
||||
"userConfig": {
|
||||
"type": "hasOne",
|
||||
"model": "UserConfig",
|
||||
"foreignKey": "userFk"
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"property": "signIn",
|
||||
"accessType": "EXECUTE",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
},
|
||||
{
|
||||
"property": "recoverPassword",
|
||||
"accessType": "EXECUTE",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
},
|
||||
{
|
||||
"property": "validateAuth",
|
||||
"accessType": "EXECUTE",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$everyone",
|
||||
"permission": "ALLOW"
|
||||
},
|
||||
{
|
||||
"property": "privileges",
|
||||
"accessType": "*",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$authenticated",
|
||||
"permission": "ALLOW"
|
||||
},
|
||||
{
|
||||
"property": "renewToken",
|
||||
"accessType": "WRITE",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$authenticated",
|
||||
"permission": "ALLOW"
|
||||
},
|
||||
{
|
||||
"property": "shareToken",
|
||||
"accessType": "WRITE",
|
||||
"principalType": "ROLE",
|
||||
"principalId": "$authenticated",
|
||||
"permission": "ALLOW"
|
||||
}
|
||||
],
|
||||
"scopes": {
|
||||
"preview": {
|
||||
"fields": [
|
||||
|
@ -140,7 +151,7 @@
|
|||
"hasGrant",
|
||||
"realm",
|
||||
"email",
|
||||
"emailVerified"
|
||||
"emailVerified"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,8 +7,8 @@ SET foreign_key_checks = 0;
|
|||
|
||||
-- XXX: vn-database
|
||||
|
||||
INSERT INTO util.config (environment, mockTime, mockUtcTime, mockEnabled)
|
||||
VALUES ('local', '2001-01-01 12:00:00', '2001-01-01 11:00:00', TRUE);
|
||||
INSERT INTO util.config (id, environment, mockTime, mockUtcTime, mockEnabled)
|
||||
VALUES (1, 'local', '2001-01-01 12:00:00', '2001-01-01 11:00:00', TRUE);
|
||||
/* #5483
|
||||
INSERT INTO vn.entryConfig (defaultEntry, mailToNotify, inventorySupplierFk, maxLockTime, defaultSupplierFk)
|
||||
VALUES(1, NULL, 1, 300, 1);
|
||||
|
|
|
@ -60,13 +60,13 @@ INSERT INTO `vn`.`ticketConfig` (`id`, `scopeDays`)
|
|||
VALUES
|
||||
('1', '6');
|
||||
|
||||
INSERT INTO `vn`.`bionicConfig` (`generalInflationCoeficient`, `minimumDensityVolumetricWeight`, `verdnaturaVolumeBox`, `itemCarryBox`)
|
||||
INSERT INTO `vn`.`bionicConfig` (`id`, `generalInflationCoeficient`, `minimumDensityVolumetricWeight`, `verdnaturaVolumeBox`, `itemCarryBox`)
|
||||
VALUES
|
||||
(1.30, 167.00, 138000, 71);
|
||||
(1, 1.30, 167.00, 138000, 71);
|
||||
|
||||
INSERT INTO `vn`.`chatConfig` (`host`, `api`)
|
||||
INSERT INTO `vn`.`chatConfig` (`id`, `host`, `api`)
|
||||
VALUES
|
||||
('https://chat.verdnatura.es', 'https://chat.verdnatura.es/api/v1');
|
||||
(1, 'https://chat.verdnatura.es', 'https://chat.verdnatura.es/api/v1');
|
||||
|
||||
INSERT IGNORE INTO `vn`.`greugeConfig`(`id`, `freightPickUpPrice`)
|
||||
VALUES
|
||||
|
@ -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`)
|
||||
VALUES
|
||||
(1101, 'BruceWayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es', 'e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1102, 'PetterParker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'PetterParker@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1103, 'ClarkKent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr', 'e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1104, 'TonyStark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es', 'e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1105, 'MaxEisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt', 'e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1106, 'DavidCharlesHaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1107, 'HankPym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1108, 'CharlesXavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1109, 'BruceBanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1110, 'JessicaJones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en', NULL),
|
||||
(1111, 'Missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en', NULL),
|
||||
(1112, 'Trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en', NULL);
|
||||
(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'),
|
||||
(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'),
|
||||
(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'),
|
||||
(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'),
|
||||
(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'),
|
||||
(1111, 'Missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'),
|
||||
(1112, 'Trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29');
|
||||
|
||||
UPDATE account.`user`
|
||||
SET passExpired = DATE_SUB(util.VN_CURDATE(), INTERVAL 1 YEAR)
|
||||
|
@ -592,13 +592,13 @@ INSERT INTO `vn`.`supplierAccount`(`id`, `supplierFk`, `iban`, `bankEntityFk`)
|
|||
VALUES
|
||||
(241, 442, 'ES111122333344111122221111', 128);
|
||||
|
||||
INSERT INTO `vn`.`company`(`id`, `code`, `supplierAccountFk`, `workerManagerFk`, `companyCode`, `sage200Company`, `expired`, `companyGroupFk`, `phytosanitary` , `clientFk`)
|
||||
INSERT INTO `vn`.`company`(`id`, `code`, `supplierAccountFk`, `workerManagerFk`, `companyCode`, `expired`, `companyGroupFk`, `phytosanitary` , `clientFk`)
|
||||
VALUES
|
||||
(69 , 'CCs', NULL, 30, NULL, 0, NULL, 1, NULL , NULL),
|
||||
(442 , 'VNL', 241, 30, 2 , 1, NULL, 2, 'VNL Company - Plant passport' , 1101),
|
||||
(567 , 'VNH', NULL, 30, NULL, 4, NULL, 1, 'VNH Company - Plant passport' , NULL),
|
||||
(791 , 'FTH', NULL, 30, NULL, 3, '2015-11-30', 1, NULL , NULL),
|
||||
(1381, 'ORN', NULL, 30, NULL, 7, NULL, 1, 'ORN Company - Plant passport' , NULL);
|
||||
(69 , 'CCs', NULL, 30, 0, NULL, 1, NULL , NULL),
|
||||
(442 , 'VNL', 241, 30, 1, NULL, 2, 'VNL Company - Plant passport' , 1101),
|
||||
(567 , 'VNH', NULL, 30, 4, NULL, 1, 'VNH Company - Plant passport' , NULL),
|
||||
(791 , 'FTH', NULL, 30, 3, '2015-11-30', 1, NULL , NULL),
|
||||
(1381, 'ORN', NULL, 30, 7, NULL, 1, 'ORN Company - Plant passport' , NULL);
|
||||
|
||||
INSERT INTO `vn`.`taxArea` (`code`, `claveOperacionFactura`, `CodigoTransaccion`)
|
||||
VALUES
|
||||
|
@ -608,7 +608,8 @@ INSERT INTO `vn`.`taxArea` (`code`, `claveOperacionFactura`, `CodigoTransaccion`
|
|||
('WORLD', 2, 15);
|
||||
|
||||
INSERT INTO vn.invoiceOutConfig
|
||||
SET parallelism = 8;
|
||||
SET id = 1,
|
||||
parallelism = 8;
|
||||
|
||||
INSERT INTO `vn`.`invoiceOutSerial` (`code`, `description`, `isTaxed`, `taxAreaFk`, `isCEE`, `type`)
|
||||
VALUES
|
||||
|
@ -714,7 +715,7 @@ INSERT INTO `vn`.`zoneClosure` (`zoneFk`, `dated`, `hour`)
|
|||
(12, util.VN_CURDATE(), '23:59'),
|
||||
(13, util.VN_CURDATE(), '23:59');
|
||||
|
||||
INSERT INTO `vn`.`zoneConfig` (`scope`) VALUES ('1');
|
||||
INSERT INTO `vn`.`zoneConfig` (`id`, `scope`) VALUES (1, '1');
|
||||
|
||||
INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`)
|
||||
VALUES
|
||||
|
@ -759,8 +760,8 @@ INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeF
|
|||
(29, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
|
||||
(30, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
|
||||
(31, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
|
||||
(32, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL);
|
||||
|
||||
(32, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
|
||||
(33, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL);
|
||||
INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`)
|
||||
VALUES
|
||||
(1, 11, 1, 'ready'),
|
||||
|
@ -983,9 +984,9 @@ INSERT INTO `vn`.`packaging`(`id`, `volume`, `width`, `height`, `depth`, `isPack
|
|||
('cc', 1640038.00, 56.00, 220.00, 128.00, 1, util.VN_CURDATE(), 15, 90.00),
|
||||
('pallet 100', 2745600.00, 100.00, 220.00, 120.00, 1, util.VN_CURDATE(), 16, 0.00);
|
||||
|
||||
INSERT INTO `vn`.`packagingConfig`(`upperGap`, `defaultSmallPackageFk`, `defaultBigPackageFk`)
|
||||
INSERT INTO `vn`.`packagingConfig`(`id`, `upperGap`, `defaultSmallPackageFk`, `defaultBigPackageFk`)
|
||||
VALUES
|
||||
('10', 1, 'pallet 100');
|
||||
(1, '10', 1, 'pallet 100');
|
||||
|
||||
INSERT INTO `vn`.`expeditionStateType`(`id`, `description`, `code`)
|
||||
VALUES
|
||||
|
@ -1868,8 +1869,7 @@ INSERT INTO `vn`.`claimEnd`(`id`, `saleFk`, `claimFk`, `workerFk`, `claimDestina
|
|||
|
||||
INSERT INTO `vn`.`claimConfig`(`id`, `maxResponsibility`)
|
||||
VALUES
|
||||
(1, 50),
|
||||
(2, 30);
|
||||
(1, 50);
|
||||
|
||||
INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRate`, `priceIncreasing`, `packingRate`)
|
||||
VALUES
|
||||
|
@ -1980,10 +1980,10 @@ INSERT INTO `pbx`.`sip`(`user_id`, `extension`)
|
|||
(5, 1102),
|
||||
(9, 1201);
|
||||
|
||||
INSERT INTO `vn`.`professionalCategory` (`id`, `name`, `level`, `dayBreak`)
|
||||
INSERT INTO `vn`.`professionalCategory` (`id`, `description`)
|
||||
VALUES
|
||||
(1, 'employee', NULL, NULL),
|
||||
(2, 'florist', NULL, NULL);
|
||||
(1, 'employee'),
|
||||
(2, 'florist');
|
||||
|
||||
INSERT INTO `vn`.`calendarType` (`id`, `description`, `hoursWeek`, `isPartial`)
|
||||
VALUES
|
||||
|
@ -2400,7 +2400,8 @@ INSERT INTO `vn`.`dmsType`(`id`, `name`, `readRoleFk`, `writeRoleFk`, `code`)
|
|||
(18, 'dua', NULL, NULL, 'dua'),
|
||||
(19, 'inmovilizado', NULL, NULL, 'fixedAssets'),
|
||||
(20, 'Reclamación', 1, 1, 'claim'),
|
||||
(21, 'Entrada', 1, 1, 'entry');
|
||||
(21, 'Entrada', 1, 1, 'entry'),
|
||||
(22, 'Proveedor', 1, 1, 'supplier');
|
||||
|
||||
INSERT INTO `vn`.`dms`(`id`, `dmsTypeFk`, `file`, `contentType`, `workerFk`, `warehouseFk`, `companyFk`, `hardCopyNumber`, `hasFile`, `reference`, `description`, `created`)
|
||||
VALUES
|
||||
|
@ -2412,7 +2413,8 @@ INSERT INTO `vn`.`dms`(`id`, `dmsTypeFk`, `file`, `contentType`, `workerFk`, `wa
|
|||
(6, 5, '6.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'NotExists', 'DoesNotExists', util.VN_CURDATE()),
|
||||
(7, 20, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'TICKET ID DEL CLIENTE BRUCE WAYNE ID 1101', util.VN_CURDATE()),
|
||||
(8, 20, '8.mp4', 'video/mp4', 9, 1, 442, NULL, FALSE, '1', 'TICKET ID DEL CLIENTE BRUCE WAYNE ID 1101', util.VN_CURDATE()),
|
||||
(9, 21, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'ENTRADA ID 1', util.VN_CURDATE());
|
||||
(9, 21, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'ENTRADA ID 1', util.VN_CURDATE()),
|
||||
(10, 21, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'ENTRADA DE PRUEBA', util.VN_CURDATE());
|
||||
|
||||
INSERT INTO `vn`.`claimDms`(`claimFk`, `dmsFk`)
|
||||
VALUES
|
||||
|
@ -2504,9 +2506,9 @@ INSERT INTO `hedera`.`imageCollectionSize`(`id`, `collectionFk`,`width`, `height
|
|||
VALUES
|
||||
(1, 4, 160, 160);
|
||||
|
||||
INSERT INTO `vn`.`rateConfig`(`rate0`, `rate1`, `rate2`, `rate3`)
|
||||
INSERT INTO `vn`.`rateConfig`(`id`, `rate0`, `rate1`, `rate2`, `rate3`)
|
||||
VALUES
|
||||
(36, 31, 25, 21);
|
||||
(1, 36, 31, 25, 21);
|
||||
|
||||
INSERT INTO `vn`.`rate`(`dated`, `warehouseFk`, `rate0`, `rate1`, `rate2`, `rate3`)
|
||||
VALUES
|
||||
|
@ -2697,9 +2699,9 @@ INSERT INTO `bs`.`sale` (`saleFk`, `amount`, `dated`, `typeFk`, `clientFk`)
|
|||
(4, 33.8, util.VN_CURDATE(), 1, 1101),
|
||||
(30, 34.4, util.VN_CURDATE(), 1, 1108);
|
||||
|
||||
INSERT INTO `vn`.`docuwareConfig` (`url`)
|
||||
INSERT INTO `vn`.`docuwareConfig` (`id`, `url`)
|
||||
VALUES
|
||||
('http://docuware.url/');
|
||||
(1, 'http://docuware.url/');
|
||||
|
||||
INSERT INTO `vn`.`calendarHolidaysName` (`id`, `name`)
|
||||
VALUES
|
||||
|
@ -2796,12 +2798,13 @@ INSERT INTO `vn`.`packingSite` (`id`, `code`, `hostFk`, `monitorId`)
|
|||
VALUES
|
||||
(1, 'h1', 1, '');
|
||||
|
||||
INSERT INTO `vn`.`packingSiteConfig` (`shinobiUrl`, `shinobiToken`, `shinobiGroupKey`, `avgBoxingTime`)
|
||||
INSERT INTO `vn`.`packingSiteConfig` (`id`, `shinobiUrl`, `shinobiToken`, `shinobiGroupKey`, `avgBoxingTime`)
|
||||
VALUES
|
||||
('', 'SHINNOBI_TOKEN', 'GROUP_TOKEN', 6000);
|
||||
(1, '', 'SHINNOBI_TOKEN', 'GROUP_TOKEN', 6000);
|
||||
INSERT INTO `util`.`notificationConfig`
|
||||
SET `cleanDays` = 90;
|
||||
|
||||
SET `id` = 1,
|
||||
`cleanDays` = 90;
|
||||
TRUNCATE `util`.`notification`;
|
||||
INSERT INTO `util`.`notification` (`id`, `name`, `description`)
|
||||
VALUES
|
||||
(1, 'print-email', 'notification fixture one'),
|
||||
|
@ -2809,8 +2812,10 @@ INSERT INTO `util`.`notification` (`id`, `name`, `description`)
|
|||
(3, 'not-main-printer-configured', 'A printer distinct than main has been configured'),
|
||||
(4, 'supplier-pay-method-update', 'A supplier pay method has been updated'),
|
||||
(5, 'modified-entry', 'An entry has been modified'),
|
||||
(6, 'book-entry-deleted', 'accounting entries deleted');
|
||||
(6, 'book-entry-deleted', 'accounting entries deleted'),
|
||||
(7, 'zone-included','An email to notify zoneCollisions');
|
||||
|
||||
TRUNCATE `util`.`notificationAcl`;
|
||||
INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`)
|
||||
VALUES
|
||||
(1, 9),
|
||||
|
@ -2819,13 +2824,16 @@ INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`)
|
|||
(3, 9),
|
||||
(4, 1),
|
||||
(5, 9),
|
||||
(6, 9);
|
||||
(6, 9),
|
||||
(7, 9);
|
||||
|
||||
TRUNCATE `util`.`notificationQueue`;
|
||||
INSERT INTO `util`.`notificationQueue` (`id`, `notificationFk`, `params`, `authorFk`, `status`, `created`)
|
||||
VALUES
|
||||
(1, 'print-email', '{"id": "1"}', 9, 'pending', util.VN_CURDATE()),
|
||||
(2, 'print-email', '{"id": "2"}', null, 'pending', util.VN_CURDATE()),
|
||||
(3, 'print-email', null, null, 'pending', util.VN_CURDATE());
|
||||
TRUNCATE `util`.`notificationSubscription`;
|
||||
|
||||
INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`)
|
||||
VALUES
|
||||
|
@ -2836,8 +2844,8 @@ INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`)
|
|||
(2, 1109),
|
||||
(1, 9),
|
||||
(1, 3),
|
||||
(6, 9);
|
||||
|
||||
(6, 9),
|
||||
(7, 9);
|
||||
|
||||
INSERT INTO `vn`.`routeConfig` (`id`, `defaultWorkCenterFk`)
|
||||
VALUES
|
||||
|
@ -2853,7 +2861,7 @@ INSERT INTO `vn`.`collection` (`id`, `created`, `workerFk`, `stateFk`, `itemPack
|
|||
|
||||
INSERT INTO `vn`.`itemConfig` (`id`, `isItemTagTriggerDisabled`, `monthToDeactivate`, `wasteRecipients`, `validPriorities`, `defaultPriority`, `defaultTag`, `warehouseFk`)
|
||||
VALUES
|
||||
(0, 0, 24, '', '[1,2,3]', 2, 56, 60);
|
||||
(1, 0, 24, '', '[1,2,3]', 2, 56, 60);
|
||||
|
||||
INSERT INTO `vn`.`ticketCollection` (`ticketFk`, `collectionFk`, `created`, `level`, `wagon`, `smartTagFk`, `usedShelves`, `itemCount`, `liters`)
|
||||
VALUES
|
||||
|
@ -2890,7 +2898,7 @@ INSERT INTO `vn`.`ticketLog` (originFk, userFk, `action`, creationDate, changedM
|
|||
(1, 18, 'insert', '1999-05-09 10:00:00', 'Ticket', 45, 'Super Man' , NULL, '{"id":45,"clientFk":8608,"warehouseFk":60,"shipped":"2023-05-16T22:00:00.000Z","nickname":"Super Man","addressFk":48637,"isSigned":true,"isLabeled":true,"isPrinted":true,"packages":0,"hour":0,"created":"2023-05-16T11:42:56.000Z","isBlocked":false,"hasPriority":false,"companyFk":442,"agencyModeFk":639,"landed":"2023-05-17T22:00:00.000Z","isBoxed":true,"isDeleted":true,"zoneFk":713,"zonePrice":13,"zoneBonus":0}', NULL);
|
||||
INSERT INTO `vn`.`osTicketConfig` (`id`, `host`, `user`, `password`, `oldStatus`, `newStatusId`, `day`, `comment`, `hostDb`, `userDb`, `passwordDb`, `portDb`, `responseType`, `fromEmailId`, `replyTo`)
|
||||
VALUES
|
||||
(0, 'http://localhost:56596/scp', 'ostadmin', 'Admin1', '1,6', 3, 60, 'Este CAU se ha cerrado automáticamente. Si el problema persiste responda a este mensaje.', 'localhost', 'osticket', 'osticket', 40003, 'reply', 1, 'all');
|
||||
(1, 'http://localhost:56596/scp', 'ostadmin', 'Admin1', '1,6', 3, 60, 'Este CAU se ha cerrado automáticamente. Si el problema persiste responda a este mensaje.', 'localhost', 'osticket', 'osticket', 40003, 'reply', 1, 'all');
|
||||
|
||||
INSERT INTO `vn`.`mdbApp` (`app`, `baselineBranchFk`, `userFk`, `locked`)
|
||||
VALUES
|
||||
|
@ -3068,8 +3076,6 @@ INSERT INTO `vn`.`cmr` (id,truckPlate,observations,senderInstruccions,paymentIns
|
|||
UPDATE vn.department
|
||||
SET workerFk = null;
|
||||
|
||||
-- NEW WAREHOUSE
|
||||
|
||||
INSERT INTO vn.packaging
|
||||
VALUES('--', 2745600.00, 100.00, 120.00, 220.00, 0.00, 1, '2001-01-01 00:00:00.000', NULL, NULL, NULL, 0.00, 16, 0.00, 0, NULL, 0.00, NULL, NULL, 0, NULL, 0, 0);
|
||||
|
||||
|
@ -3713,8 +3719,8 @@ UPDATE vn.collection
|
|||
UPDATE vn.sale
|
||||
SET isPicked =FALSE;
|
||||
|
||||
INSERT INTO vn.machineWorkerConfig(maxHours)
|
||||
VALUES(12);
|
||||
INSERT INTO vn.machineWorkerConfig(id, maxHours)
|
||||
VALUES(1, 12);
|
||||
|
||||
INSERT INTO vn.workerAppTester(workerFk) VALUES(66);
|
||||
|
||||
|
@ -3733,3 +3739,10 @@ INSERT INTO vn.report (name) VALUES ('LabelCollection');
|
|||
|
||||
INSERT INTO vn.parkingLog(originFk, userFk, `action`, creationDate, description, changedModel,oldInstance, newInstance, changedModelId, changedModelValue)
|
||||
VALUES(1, 18, 'update', util.VN_CURDATE(), NULL, 'SaleGroup', '{"parkingFk":null}', '{"parkingFk":1}', 1, NULL);
|
||||
|
||||
INSERT INTO vn.ticketLog (originFk,userFk,`action`,creationDate,changedModel,newInstance,changedModelId,changedModelValue)
|
||||
VALUES (18,9,'insert','2001-01-01 11:01:00.000','Ticket','{"isDeleted":true}',45,'Super Man');
|
||||
|
||||
INSERT INTO `vn`.`supplierDms`(`supplierFk`, `dmsFk`, `editorFk`)
|
||||
VALUES
|
||||
(1, 10, 9);
|
|
@ -0,0 +1,22 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE
|
||||
DEFINER=`root`@`localhost`
|
||||
EVENT `floranet`.`clean`
|
||||
ON SCHEDULE EVERY 1 DAY
|
||||
STARTS '2024-01-01 23:00:00.000'
|
||||
ON COMPLETION PRESERVE
|
||||
ENABLE
|
||||
DO
|
||||
BEGIN
|
||||
DELETE
|
||||
FROM `order`
|
||||
WHERE created < CURDATE()
|
||||
AND isPaid = FALSE;
|
||||
|
||||
DELETE c.*
|
||||
FROM catalogue c
|
||||
LEFT JOIN `order` o ON o.catalogueFk = c.id
|
||||
WHERE c.created < CURDATE()
|
||||
AND o.id IS NULL;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,52 @@
|
|||
DROP PROCEDURE IF EXISTS floranet.catalogue_get;
|
||||
|
||||
DELIMITER $$
|
||||
$$
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.catalogue_get(vLanded DATE, vPostalCode VARCHAR(15))
|
||||
READS SQL DATA
|
||||
BEGIN
|
||||
/**
|
||||
* Returns list, price and all the stuff regarding the floranet items
|
||||
*
|
||||
* @param vLanded Delivery date
|
||||
* @param vPostalCode Delivery address postal code
|
||||
*/
|
||||
DECLARE vLastCatalogueFk INT;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
SELECT * FROM catalogue FOR UPDATE;
|
||||
|
||||
SELECT MAX(id) INTO vLastCatalogueFk
|
||||
FROM catalogue;
|
||||
|
||||
INSERT INTO catalogue(
|
||||
name,
|
||||
price,
|
||||
itemFk,
|
||||
dated,
|
||||
postalCode,
|
||||
`type`,
|
||||
image,
|
||||
description
|
||||
)
|
||||
SELECT i.name,
|
||||
i.`size`,
|
||||
i.id,
|
||||
vLanded,
|
||||
vPostalCode,
|
||||
it.name,
|
||||
CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image),
|
||||
i.description
|
||||
FROM vn.item i
|
||||
JOIN vn.itemType it ON it.id = i.typeFk
|
||||
WHERE it.code IN ('FNR','FNP');
|
||||
|
||||
SELECT *
|
||||
FROM catalogue
|
||||
WHERE id > IFNULL(vLastCatalogueFk,0);
|
||||
|
||||
COMMIT;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,20 @@
|
|||
DROP PROCEDURE IF EXISTS floranet.contact_request;
|
||||
|
||||
DELIMITER $$
|
||||
$$
|
||||
CREATE DEFINER=`root`@`localhost`
|
||||
PROCEDURE floranet.contact_request(
|
||||
vName VARCHAR(100),
|
||||
vPhone VARCHAR(15),
|
||||
vEmail VARCHAR(100),
|
||||
vMessage TEXT)
|
||||
READS SQL DATA
|
||||
BEGIN
|
||||
/**
|
||||
* Set actions for contact request.
|
||||
*
|
||||
* @param vPostalCode Delivery address postal code
|
||||
*/
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,29 @@
|
|||
DROP PROCEDURE IF EXISTS floranet.deliveryDate_get;
|
||||
|
||||
DELIMITER $$
|
||||
$$
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `floranet`.`deliveryDate_get`(vPostalCode VARCHAR(15))
|
||||
READS SQL DATA
|
||||
BEGIN
|
||||
/**
|
||||
* Returns available dates for this postalCode, in the next seven days
|
||||
*
|
||||
* @param vPostalCode Delivery address postal code
|
||||
*/
|
||||
DECLARE vCurrentDayOfWeek INT;
|
||||
|
||||
SET vCurrentDayOfWeek = DAYOFWEEK(NOW());
|
||||
|
||||
SELECT DISTINCT nextDay
|
||||
FROM (
|
||||
SELECT CURDATE() + INTERVAL IF(
|
||||
apc.dayOfWeek >= vCurrentDayOfWeek,
|
||||
apc.dayOfWeek - vCurrentDayOfWeek,
|
||||
7 - apc.dayOfWeek
|
||||
) DAY nextDay,
|
||||
NOW() + INTERVAL apc.hoursInAdvance - 12 HOUR minDeliveryTime
|
||||
FROM addressPostCode apc
|
||||
WHERE apc.postCode = vPostalCode
|
||||
HAVING nextDay > minDeliveryTime) sub;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,25 @@
|
|||
DROP PROCEDURE IF EXISTS floranet.order_confirm;
|
||||
|
||||
DELIMITER $$
|
||||
$$
|
||||
|
||||
CREATE DEFINER=`root`@`localhost`PROCEDURE floranet.order_confirm(vCatalogueFk INT)
|
||||
READS SQL DATA
|
||||
|
||||
BEGIN
|
||||
/** Update order.isPaid field
|
||||
*
|
||||
* @param vCatalogueFk floranet.catalogue.id
|
||||
*
|
||||
* @returns floranet.order.isPaid
|
||||
*/
|
||||
UPDATE `order`
|
||||
SET isPaid = TRUE,
|
||||
payed = NOW()
|
||||
WHERE catalogueFk = vCatalogueFk;
|
||||
|
||||
SELECT isPaid
|
||||
FROM `order`
|
||||
WHERE catalogueFk = vCatalogueFk;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,42 @@
|
|||
DROP PROCEDURE IF EXISTS floranet.order_put;
|
||||
|
||||
DELIMITER $$
|
||||
$$
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.order_put(vOrder JSON)
|
||||
READS SQL DATA
|
||||
BEGIN
|
||||
/**
|
||||
* Get and process an order
|
||||
*
|
||||
* @param vOrder Data of the order
|
||||
*
|
||||
* Customer data: <customerName>, <email>, <customerPhone>
|
||||
*
|
||||
* Item data: <catalogueFk>, <message>
|
||||
*
|
||||
* Delivery data: <deliveryName>, <address>, <deliveryPhone>
|
||||
*
|
||||
*/
|
||||
INSERT IGNORE INTO `order`(
|
||||
catalogueFk,
|
||||
customerName,
|
||||
email,
|
||||
customerPhone,
|
||||
message,
|
||||
deliveryName,
|
||||
address,
|
||||
deliveryPhone
|
||||
)
|
||||
VALUES (JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.catalogueFk')),
|
||||
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.customerName')),
|
||||
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.email')),
|
||||
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.customerPhone')),
|
||||
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.message')),
|
||||
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.deliveryName')),
|
||||
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.address')),
|
||||
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.deliveryPhone'))
|
||||
);
|
||||
|
||||
SELECT LAST_INSERT_ID() orderFk;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,19 @@
|
|||
DROP PROCEDURE IF EXISTS floranet.sliders_get;
|
||||
|
||||
DELIMITER $$
|
||||
$$
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.sliders_get()
|
||||
READS SQL DATA
|
||||
BEGIN
|
||||
/**
|
||||
* Returns list of url for sliders
|
||||
*/
|
||||
SELECT
|
||||
CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image) url,
|
||||
i.longName
|
||||
FROM vn.item i
|
||||
JOIN vn.itemType it ON it.id = i.typeFk
|
||||
WHERE it.code IN ('FNR','FNP');
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -13,8 +13,11 @@ BEGIN
|
|||
|
||||
SELECT `value` INTO price
|
||||
FROM vn.specialPrice
|
||||
WHERE itemFk = vItemFk
|
||||
AND clientFk = vClientFk ;
|
||||
WHERE itemFk = vItemFk
|
||||
AND (clientFk = vClientFk OR clientFk IS NULL)
|
||||
AND started <= util.VN_CURDATE()
|
||||
AND (ended >= util.VN_CURDATE() OR ended IS NULL)
|
||||
ORDER BY id DESC LIMIT 1;
|
||||
RETURN price;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`absoluteInventoryHistory`(
|
||||
vItemFk INT,
|
||||
vWarehouseFk INT,
|
||||
vDate DATETIME
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Calcula y proporciona un historial de inventario absoluto
|
||||
* para un artículo específico en un almacén dado
|
||||
* hasta una fecha determinada.
|
||||
*
|
||||
* @param vItemFk Id de artículo
|
||||
* @param vWarehouseFk Id de almacén
|
||||
* @param vDate Fecha
|
||||
*/
|
||||
DECLARE vCalculatedInventory INT;
|
||||
DECLARE vToday DATETIME DEFAULT util.VN_CURDATE();
|
||||
DECLARE vStartDate DATE DEFAULT '2001-01-01';
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tHistoricalPast
|
||||
ENGINE = MEMORY
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT tr.landed `date`,
|
||||
b.quantity input,
|
||||
NULL `output`,
|
||||
tr.isReceived ok,
|
||||
s.name alias,
|
||||
e.invoiceNumber reference,
|
||||
e.id id,
|
||||
tr.isDelivered f5
|
||||
FROM buy b
|
||||
JOIN `entry` e ON e.id = b.entryFk
|
||||
JOIN travel tr ON tr.id = e.travelFk
|
||||
JOIN supplier s ON s.id = e.supplierFk
|
||||
WHERE tr.landed >= vStartDate
|
||||
AND s.id <> (SELECT supplierFk FROM inventoryConfig)
|
||||
AND vWarehouseFk IN (tr.warehouseInFk, 0)
|
||||
AND b.itemFk = vItemFk
|
||||
AND NOT e.isExcludedFromAvailable
|
||||
AND NOT e.isRaid
|
||||
UNION ALL
|
||||
SELECT tr.shipped,
|
||||
NULL,
|
||||
b.quantity,
|
||||
tr.isDelivered,
|
||||
s.name,
|
||||
e.invoiceNumber,
|
||||
e.id,
|
||||
tr.isDelivered
|
||||
FROM buy b
|
||||
JOIN `entry` e ON e.id = b.entryFk
|
||||
JOIN travel tr ON tr.id = e.travelFk
|
||||
JOIN supplier s ON s.id = e.supplierFk
|
||||
WHERE tr.shipped >= vStartDate
|
||||
AND vWarehouseFk = tr.warehouseOutFk
|
||||
AND s.id <> (SELECT supplierFk FROM inventoryConfig)
|
||||
AND b.itemFk = vItemFk
|
||||
AND NOT e.isExcludedFromAvailable
|
||||
AND NOT e.isRaid
|
||||
UNION ALL
|
||||
SELECT t.shipped,
|
||||
NULL,
|
||||
m.quantity,
|
||||
(m.isPicked OR t.isLabeled OR t.refFk IS NOT NULL),
|
||||
t.nickname,
|
||||
t.refFk,
|
||||
t.id,
|
||||
t.isPrinted
|
||||
FROM sale m
|
||||
JOIN ticket t ON t.id = m.ticketFk
|
||||
JOIN client c ON c.id = t.clientFk
|
||||
WHERE t.shipped >= vStartDate
|
||||
AND m.itemFk = vItemFk
|
||||
AND vWarehouseFk IN (t.warehouseFk, 0)
|
||||
) t1
|
||||
ORDER BY `date`, input DESC, ok DESC;
|
||||
|
||||
SELECT SUM(input) - SUM(`output`) INTO vCalculatedInventory
|
||||
FROM tHistoricalPast
|
||||
WHERE `date` < vDate;
|
||||
|
||||
SELECT p1.*, NULL v_virtual
|
||||
FROM (
|
||||
SELECT vDate `date`,
|
||||
vCalculatedInventory input,
|
||||
NULL `output`,
|
||||
1 ok,
|
||||
'Inventario calculado' alias,
|
||||
'' reference,
|
||||
0 id,
|
||||
1 f5
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM tHistoricalPast
|
||||
WHERE `date` >= vDate
|
||||
) p1;
|
||||
|
||||
DROP TEMPORARY TABLE tHistoricalPast;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,283 @@
|
|||
DELIMITER $$
|
||||
$$
|
||||
CREATE OR REPLACE PROCEDURE vn.sale_boxPickingPrint(
|
||||
IN vPrinterFk INT,
|
||||
IN vSaleFk INT,
|
||||
IN vPacking INT,
|
||||
IN vSectorFk INT,
|
||||
IN vUserFk INT,
|
||||
IN vPackagingFk INT,
|
||||
IN vPackingSiteFk INT)
|
||||
BEGIN
|
||||
/** Splits a line of sale to a different ticket and prints the transport sticker
|
||||
*/
|
||||
DECLARE vAgencyModeFk INT;
|
||||
DECLARE vConcept VARCHAR(30);
|
||||
DECLARE vExpeditionFk INT;
|
||||
DECLARE vItemFk INT;
|
||||
DECLARE vItemShelvingFk INT;
|
||||
DECLARE vItemShelvingSaleFk INT;
|
||||
DECLARE vItemShelvingSaleFk_old INT;
|
||||
DECLARE vLastExpeditionTimeStamp DATETIME;
|
||||
DECLARE vMaxPhoneLength INT DEFAULT 11;
|
||||
DECLARE vMaxStreetLength INT DEFAULT 36;
|
||||
DECLARE vNewSaleFk INT;
|
||||
DECLARE vNewTicketFk INT;
|
||||
DECLARE vParkingCode VARCHAR(10);
|
||||
DECLARE vQuantity INT;
|
||||
DECLARE vRemainder INT DEFAULT 0;
|
||||
DECLARE vRemainderSaleFk INT;
|
||||
DECLARE vShelving VARCHAR(10);
|
||||
DECLARE vTicketFk INT;
|
||||
|
||||
SELECT s.quantity,
|
||||
s.quantity MOD vPacking,
|
||||
s.ticketFk,
|
||||
s.itemFk,
|
||||
s.concept
|
||||
INTO vQuantity,
|
||||
vRemainder,
|
||||
vTicketFk,
|
||||
vItemFk,
|
||||
vConcept
|
||||
FROM sale s
|
||||
WHERE s.id = vSaleFk;
|
||||
|
||||
IF vRemainder THEN
|
||||
UPDATE sale SET quantity = quantity - vRemainder WHERE id = vSaleFk;
|
||||
|
||||
INSERT INTO sale(ticketFk, itemFk, quantity, price, discount, concept)
|
||||
SELECT ticketFk, itemFk, vRemainder, price, discount, concept
|
||||
FROM sale
|
||||
WHERE id = vSaleFk;
|
||||
|
||||
SET vRemainderSaleFk = LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO saleComponent(saleFk, componentFk, value)
|
||||
SELECT vRemainderSaleFk, componentFk, value
|
||||
FROM saleComponent
|
||||
WHERE saleFk = vSaleFk;
|
||||
END IF;
|
||||
|
||||
w1: WHILE vQuantity >= vPacking DO
|
||||
|
||||
SET vItemShelvingFk = NULL;
|
||||
|
||||
SELECT sub.id
|
||||
INTO vItemShelvingFk
|
||||
FROM productionConfig pc
|
||||
JOIN (
|
||||
SELECT ish.id,
|
||||
ish.visible - IFNULL(SUM(iss.quantity),0) available,
|
||||
p.pickingOrder,
|
||||
ish.created
|
||||
FROM itemShelving ish
|
||||
JOIN shelving sh ON sh.code = ish.shelvingFk
|
||||
JOIN parking p ON p.id = sh.parkingFk
|
||||
LEFT JOIN itemShelvingSale iss
|
||||
ON iss.itemShelvingFk = ish.id
|
||||
AND iss.created >= CURDATE()
|
||||
AND iss.isPicked = FALSE
|
||||
WHERE ish.itemFk = vItemFk
|
||||
AND p.sectorFk = vSectorFk
|
||||
GROUP BY ish.id
|
||||
HAVING available >= vPacking) sub
|
||||
ORDER BY IF(pc.orderMode = 'Location',sub.pickingOrder, sub.created)
|
||||
LIMIT 1;
|
||||
|
||||
IF vItemShelvingFk THEN
|
||||
INSERT INTO itemShelvingSale
|
||||
SET itemShelvingFk = vItemShelvingFk,
|
||||
saleFk = vSaleFk,
|
||||
quantity = vPacking,
|
||||
userFk = vUserFk,
|
||||
isPicked = TRUE;
|
||||
|
||||
SET vItemShelvingSaleFk = LAST_INSERT_ID();
|
||||
|
||||
UPDATE sale SET isPicked = FALSE WHERE id = vSaleFk;
|
||||
ELSE
|
||||
LEAVE w1;
|
||||
END IF;
|
||||
|
||||
SET vNewTicketFk = NULL;
|
||||
|
||||
SELECT MAX(t.id) INTO vNewTicketFk
|
||||
FROM ticket t
|
||||
JOIN ticketLastState tls ON tls.ticketFk = t.id
|
||||
JOIN (SELECT addressFk, clientFk, date(shipped) shipped, warehouseFk
|
||||
FROM ticket
|
||||
WHERE id = vTicketFk) tt
|
||||
ON tt.addressFk = t.addressFk
|
||||
AND tt.clientFk = t.clientFk
|
||||
AND t.shipped BETWEEN tt.shipped AND util.dayend(tt.shipped)
|
||||
AND t.warehouseFk = tt.warehouseFk
|
||||
WHERE tls.name = 'Encajado' ;
|
||||
|
||||
IF ISNULL(vNewTicketFk) THEN
|
||||
INSERT INTO ticket( clientFk,
|
||||
shipped,
|
||||
addressFk,
|
||||
agencyModeFk,
|
||||
nickname,
|
||||
warehouseFk,
|
||||
companyFk,
|
||||
landed,
|
||||
zoneFk,
|
||||
zonePrice,
|
||||
zoneBonus,
|
||||
routeFk,
|
||||
priority,
|
||||
hasPriority,
|
||||
clonedFrom)
|
||||
SELECT clientFk,
|
||||
shipped,
|
||||
addressFk,
|
||||
agencyModeFk,
|
||||
nickname,
|
||||
warehouseFk,
|
||||
companyFk,
|
||||
landed,
|
||||
zoneFk,
|
||||
zonePrice,
|
||||
zoneBonus,
|
||||
routeFk,
|
||||
priority,
|
||||
hasPriority,
|
||||
id
|
||||
FROM ticket
|
||||
WHERE id = vTicketFk;
|
||||
|
||||
SET vNewTicketFk = LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO ticketTracking(ticketFk, stateFk, userFk)
|
||||
SELECT vNewTicketFk, id, vUserFk
|
||||
FROM state
|
||||
WHERE code = 'PACKED';
|
||||
END IF;
|
||||
|
||||
UPDATE sale SET quantity = quantity - vPacking WHERE id = vSaleFk;
|
||||
|
||||
UPDATE itemShelving SET visible = visible - vPacking WHERE id = vItemShelvingFk;
|
||||
|
||||
SET vNewSaleFk = NULL;
|
||||
|
||||
SELECT MAX(id) INTO vNewSaleFk
|
||||
FROM sale
|
||||
WHERE ticketFk = vNewTicketFk
|
||||
AND itemFk = vItemFk;
|
||||
|
||||
IF vNewSaleFk THEN
|
||||
UPDATE sale
|
||||
SET quantity = quantity + vPacking
|
||||
WHERE id = vNewSaleFk;
|
||||
|
||||
SET vItemShelvingSaleFk_old = NULL;
|
||||
|
||||
SELECT MAX(id) INTO vItemShelvingSaleFk_old
|
||||
FROM itemShelvingSale
|
||||
WHERE itemShelvingFk = vItemShelvingFk
|
||||
AND saleFk = vNewSaleFk;
|
||||
|
||||
IF vItemShelvingSaleFk_old THEN
|
||||
UPDATE itemShelvingSale
|
||||
SET quantity = quantity + vPacking
|
||||
WHERE id = vItemShelvingSaleFk_old;
|
||||
|
||||
DELETE FROM itemShelvingSale
|
||||
WHERE id = vItemShelvingSaleFk;
|
||||
|
||||
SET vItemShelvingSaleFk = vItemShelvingSaleFk_old;
|
||||
ELSE
|
||||
UPDATE itemShelvingSale
|
||||
SET saleFk = vNewSaleFk
|
||||
WHERE id = vItemShelvingSaleFk;
|
||||
END IF;
|
||||
ELSE
|
||||
INSERT INTO sale(ticketFk, itemFk, concept, quantity, discount, price)
|
||||
SELECT vNewTicketFk, itemFk, concept, vPacking, discount, price
|
||||
FROM sale
|
||||
WHERE id = vSaleFk;
|
||||
|
||||
SET vNewSaleFk = LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO saleComponent(saleFk, componentFk, value, isGreuge)
|
||||
SELECT vNewSaleFk, componentFk, value, isGreuge
|
||||
FROM saleComponent
|
||||
WHERE saleFk = vSaleFk;
|
||||
|
||||
UPDATE itemShelvingSale
|
||||
SET saleFk = vNewSaleFk
|
||||
WHERE id = vItemShelvingSaleFk;
|
||||
END IF;
|
||||
|
||||
INSERT IGNORE INTO saleTracking(saleFk, isChecked, workerFk, stateFk)
|
||||
SELECT vNewSaleFk, TRUE, vUserFk, id
|
||||
FROM state
|
||||
WHERE code = 'PREPARED';
|
||||
|
||||
SELECT agencyModeFk INTO vAgencyModeFk
|
||||
FROM ticket
|
||||
WHERE id = vNewTicketFk;
|
||||
|
||||
INSERT INTO expedition(
|
||||
agencyModeFk,
|
||||
ticketFk,
|
||||
freightItemFk,
|
||||
workerFk,
|
||||
packagingFk,
|
||||
itemPackingTypeFk,
|
||||
hostFk,
|
||||
packingSiteFk,
|
||||
monitorId,
|
||||
started,
|
||||
ended
|
||||
)
|
||||
SELECT vAgencyModeFk,
|
||||
vNewTicketFk,
|
||||
i.id,
|
||||
vUserFk,
|
||||
vPackagingFk,
|
||||
ps.code,
|
||||
h.code,
|
||||
vPackingSiteFk,
|
||||
ps.monitorId,
|
||||
IFNULL(vLastExpeditionTimeStamp, NOW()),
|
||||
NOW()
|
||||
FROM packingSite ps
|
||||
JOIN host h ON h.id = ps.hostFk
|
||||
JOIN item i ON i.name = 'Shipping cost'
|
||||
WHERE ps.id = vPackingSiteFk
|
||||
LIMIT 1;
|
||||
|
||||
SET vExpeditionFk = LAST_INSERT_ID();
|
||||
|
||||
SET vLastExpeditionTimeStamp = NOW();
|
||||
|
||||
CALL dipole.expedition_Add(vExpeditionFk,vPrinterFk, TRUE);
|
||||
|
||||
SELECT shelvingFk, p.code
|
||||
INTO vShelving, vParkingCode
|
||||
FROM itemShelving ish
|
||||
JOIN shelving sh ON sh.code = ish.shelvingFk
|
||||
JOIN parking p ON p.id = sh.parkingFk
|
||||
WHERE ish.id = vItemShelvingFk;
|
||||
|
||||
UPDATE dipole.expedition_PrintOut
|
||||
SET isPrinted = FALSE,
|
||||
itemFk = vItemFk,
|
||||
quantity = vPacking,
|
||||
longName = vConcept,
|
||||
shelvingFk = vShelving,
|
||||
parkingCode = vParkingCode,
|
||||
phone = RIGHT(phone,vMaxPhoneLength),
|
||||
street = RIGHT(street, vMAxStreetLength)
|
||||
WHERE expeditionFk = vExpeditionFk;
|
||||
|
||||
DELETE FROM sale
|
||||
WHERE quantity = 0
|
||||
AND id = vSaleFk;
|
||||
END WHILE;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -25,6 +25,19 @@ BEGIN
|
|||
FROM address
|
||||
WHERE id = vAddressFk;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tSpecialPrice
|
||||
(INDEX (itemFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT * FROM (
|
||||
SELECT *
|
||||
FROM specialPrice
|
||||
WHERE (clientFk = vClientFk OR clientFk IS NULL)
|
||||
AND started <= vShipped
|
||||
AND (ended >= vShipped OR ended IS NULL)
|
||||
ORDER BY (clientFk = vClientFk) DESC, id DESC
|
||||
LIMIT 10000000000000000000) t
|
||||
GROUP BY itemFk;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketComponentCalculate
|
||||
(PRIMARY KEY (itemFk, warehouseFk))
|
||||
ENGINE = MEMORY
|
||||
|
@ -44,8 +57,7 @@ BEGIN
|
|||
JOIN item i ON i.id = tl.itemFk
|
||||
JOIN itemType it ON it.id = i.typeFk
|
||||
JOIN itemCategory ic ON ic.id = it.categoryFk
|
||||
LEFT JOIN specialPrice sp ON sp.itemFk = i.id
|
||||
AND sp.clientFk = vClientFk
|
||||
LEFT JOIN tSpecialPrice sp ON sp.itemFk = i.id
|
||||
LEFT JOIN (
|
||||
SELECT * FROM (
|
||||
SELECT pf.itemFk,
|
||||
|
@ -146,7 +158,7 @@ BEGIN
|
|||
FROM tmp.ticketComponentBase tcb
|
||||
JOIN vn.component c2 ON c2.code = 'lastUnitsDiscount'
|
||||
JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tcb.itemFk AND tcc.warehouseFk = tcb.warehouseFk
|
||||
LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk
|
||||
LEFT JOIN tSpecialPrice sp ON sp.itemFk = tcc.itemFk
|
||||
JOIN vn.item i ON i.id = tcb.itemFk
|
||||
WHERE sp.value IS NULL
|
||||
AND i.supplyResponseFk IS NULL;
|
||||
|
@ -169,7 +181,7 @@ BEGIN
|
|||
FROM tmp.ticketComponentCalculate tcc
|
||||
JOIN vn.component c2 ON c2.code = 'salePerPackage'
|
||||
JOIN buy b ON b.id = tcc.buyFk
|
||||
LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk
|
||||
LEFT JOIN tSpecialPrice sp ON sp.itemFk = tcc.itemFk
|
||||
WHERE sp.value IS NULL;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.`zone` (INDEX (id))
|
||||
|
@ -208,7 +220,7 @@ BEGIN
|
|||
sp.value - SUM(tcc.cost) sumCost
|
||||
FROM tmp.ticketComponentCopy tcc
|
||||
JOIN component c ON c.id = tcc.componentFk
|
||||
JOIN specialPrice sp ON sp.clientFk = vClientFK AND sp.itemFk = tcc.itemFk
|
||||
JOIN tSpecialPrice sp ON sp.itemFk = tcc.itemFk
|
||||
JOIN vn.component c2 ON c2.code = 'specialPrices'
|
||||
WHERE c.classRate IS NULL
|
||||
AND tcc.warehouseFk = vWarehouseFk
|
||||
|
@ -289,6 +301,7 @@ BEGIN
|
|||
tmp.ticketComponentSum,
|
||||
tmp.ticketComponentBase,
|
||||
tmp.ticketComponentRate,
|
||||
tmp.ticketComponentCopy;
|
||||
tmp.ticketComponentCopy,
|
||||
tSpecialPrice;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -30,6 +30,7 @@ BEGIN
|
|||
DELETE IGNORE FROM expedition WHERE created < v26Months;
|
||||
DELETE FROM sms WHERE created < v18Months;
|
||||
DELETE FROM saleTracking WHERE created < v1Years;
|
||||
DELETE FROM productionError WHERE dated < v1Years;
|
||||
DELETE FROM ticketTracking WHERE created < v18Months;
|
||||
DELETE tobs FROM ticketObservation tobs
|
||||
JOIN ticket t ON tobs.ticketFk = t.id
|
||||
|
|
|
@ -7,194 +7,195 @@ BEGIN
|
|||
* @param vSelf company id
|
||||
* @param vMonthAgo time interval to be consulted
|
||||
*/
|
||||
DECLARE vStartingDate DATETIME DEFAULT TIMESTAMPADD (MONTH,- vMonthsAgo,util.VN_CURDATE());
|
||||
DECLARE vCurrencyEuroFk INT;
|
||||
DECLARE vStartDate DATE;
|
||||
DECLARE vInvalidBalances DOUBLE;
|
||||
DECLARE vStartingDate DATETIME DEFAULT TIMESTAMPADD (MONTH,- vMonthsAgo,util.VN_CURDATE());
|
||||
DECLARE vCurrencyEuroFk INT;
|
||||
DECLARE vStartDate DATE;
|
||||
DECLARE vInvalidBalances DOUBLE;
|
||||
|
||||
SELECT dated, invalidBalances INTO vStartDate, vInvalidBalances FROM supplierDebtConfig;
|
||||
SELECT id INTO vCurrencyEuroFk FROM currency WHERE code = 'EUR';
|
||||
SELECT dated, invalidBalances INTO vStartDate, vInvalidBalances FROM supplierDebtConfig;
|
||||
SELECT id INTO vCurrencyEuroFk FROM currency WHERE code = 'EUR';
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tOpeningBalances;
|
||||
CREATE TEMPORARY TABLE tOpeningBalances (
|
||||
supplierFk INT NOT NULL,
|
||||
companyFk INT NOT NULL,
|
||||
openingBalances DOUBLE NOT NULL,
|
||||
closingBalances DOUBLE NOT NULL,
|
||||
currencyFk INT NOT NULL,
|
||||
PRIMARY KEY (supplierFk, companyFk, currencyFk)
|
||||
) ENGINE = MEMORY;
|
||||
DROP TEMPORARY TABLE IF EXISTS tOpeningBalances;
|
||||
CREATE TEMPORARY TABLE tOpeningBalances (
|
||||
supplierFk INT NOT NULL,
|
||||
companyFk INT NOT NULL,
|
||||
openingBalances DOUBLE NOT NULL,
|
||||
closingBalances DOUBLE NOT NULL,
|
||||
currencyFk INT NOT NULL,
|
||||
PRIMARY KEY (supplierFk, companyFk, currencyFk)
|
||||
) ENGINE = MEMORY;
|
||||
|
||||
-- Calculates the opening and closing balance for each supplier
|
||||
INSERT INTO tOpeningBalances
|
||||
SELECT supplierFk,
|
||||
companyFk,
|
||||
SUM(amount * isBeforeStarting) AS openingBalances,
|
||||
SUM(amount) closingBalances,
|
||||
currencyFk
|
||||
FROM (
|
||||
SELECT p.supplierFk,
|
||||
p.companyFk,
|
||||
IF (p.currencyFk = vCurrencyEuroFk, p.amount, p.divisa) AS amount,
|
||||
p.dueDated < vStartingDate isBeforeStarting,
|
||||
p.currencyFk
|
||||
FROM payment p
|
||||
WHERE p.received > vStartDate
|
||||
AND p.companyFk = vSelf
|
||||
UNION ALL
|
||||
SELECT r.supplierFk,
|
||||
r.companyFk,
|
||||
- IF (r.currencyFk = vCurrencyEuroFk, rv.amount, rv.foreignValue) AS Total,
|
||||
rv.dueDated < vStartingDate isBeforeStarting,
|
||||
r.currencyFk
|
||||
FROM invoiceIn r
|
||||
INNER JOIN invoiceInDueDay rv ON r.id = rv.invoiceInFk
|
||||
WHERE r.issued > vStartDate
|
||||
AND r.isBooked
|
||||
AND r.companyFk = vSelf
|
||||
) sub GROUP BY companyFk, supplierFk, currencyFk;
|
||||
-- Calculates the opening and closing balance for each supplier
|
||||
INSERT INTO tOpeningBalances
|
||||
SELECT supplierFk,
|
||||
companyFk,
|
||||
SUM(amount * isBeforeStarting) AS openingBalances,
|
||||
SUM(amount) closingBalances,
|
||||
currencyFk
|
||||
FROM (
|
||||
SELECT p.supplierFk,
|
||||
p.companyFk,
|
||||
IF (p.currencyFk = vCurrencyEuroFk, p.amount, p.divisa) AS amount,
|
||||
p.dueDated < vStartingDate isBeforeStarting,
|
||||
p.currencyFk
|
||||
FROM payment p
|
||||
WHERE p.received > vStartDate
|
||||
AND p.companyFk = vSelf
|
||||
UNION ALL
|
||||
SELECT r.supplierFk,
|
||||
r.companyFk,
|
||||
- IF (r.currencyFk = vCurrencyEuroFk, rv.amount, rv.foreignValue) AS Total,
|
||||
rv.dueDated < vStartingDate isBeforeStarting,
|
||||
r.currencyFk
|
||||
FROM invoiceIn r
|
||||
INNER JOIN invoiceInDueDay rv ON r.id = rv.invoiceInFk
|
||||
WHERE r.issued > vStartDate
|
||||
AND r.isBooked
|
||||
AND r.companyFk = vSelf
|
||||
) sub GROUP BY companyFk, supplierFk, currencyFk;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tPendingDuedates;
|
||||
CREATE TEMPORARY TABLE tPendingDuedates (
|
||||
id INT auto_increment,
|
||||
expirationId INT,
|
||||
dated DATE,
|
||||
supplierFk INT NOT NULL,
|
||||
companyFk INT NOT NULL,
|
||||
amount DECIMAL(10, 2) NOT NULL,
|
||||
currencyFk INT NOT NULL,
|
||||
pending DECIMAL(10, 2) DEFAULT 0,
|
||||
balance DECIMAL(10, 2) DEFAULT 0,
|
||||
endingBalance DECIMAL(10, 2) DEFAULT 0,
|
||||
isPayment BOOLEAN,
|
||||
isReconciled BOOLEAN,
|
||||
PRIMARY KEY (id),
|
||||
INDEX (supplierFk, companyFk, currencyFk)
|
||||
) ENGINE = MEMORY;
|
||||
DROP TEMPORARY TABLE IF EXISTS tPendingDuedates;
|
||||
CREATE TEMPORARY TABLE tPendingDuedates (
|
||||
id INT auto_increment,
|
||||
expirationId INT,
|
||||
dated DATE,
|
||||
supplierFk INT NOT NULL,
|
||||
companyFk INT NOT NULL,
|
||||
amount DECIMAL(10, 2) NOT NULL,
|
||||
currencyFk INT NOT NULL,
|
||||
pending DECIMAL(10, 2) DEFAULT 0,
|
||||
balance DECIMAL(10, 2) DEFAULT 0,
|
||||
endingBalance DECIMAL(10, 2) DEFAULT 0,
|
||||
isPayment BOOLEAN,
|
||||
isReconciled BOOLEAN,
|
||||
PRIMARY KEY (id),
|
||||
INDEX (supplierFk, companyFk, currencyFk)
|
||||
) ENGINE = MEMORY;
|
||||
|
||||
INSERT INTO tPendingDuedates (
|
||||
expirationId,
|
||||
dated,
|
||||
supplierFk,
|
||||
companyFk,
|
||||
amount,
|
||||
currencyFk,
|
||||
isPayment,
|
||||
isReconciled
|
||||
)SELECT p.id,
|
||||
p.dueDated,
|
||||
p.supplierFk,
|
||||
p.companyFk,
|
||||
IF (p.currencyFk = vCurrencyEuroFk, p.amount, p.divisa),
|
||||
p.currencyFk,
|
||||
TRUE isPayment,
|
||||
p.isConciliated
|
||||
FROM payment p
|
||||
WHERE p.dueDated >= vStartingDate
|
||||
AND p.companyFk = vSelf
|
||||
UNION ALL
|
||||
SELECT r.id,
|
||||
rv.dueDated,
|
||||
r.supplierFk,
|
||||
r.companyFk,
|
||||
-IF (r.currencyFk = vCurrencyEuroFk, rv.amount, rv.foreignValue),
|
||||
r.currencyFk,
|
||||
FALSE isPayment,
|
||||
TRUE
|
||||
FROM invoiceIn r
|
||||
LEFT JOIN tOpeningBalances si ON r.companyFk = si.companyFk
|
||||
AND r.supplierFk = si.supplierFk
|
||||
AND r.currencyFk = si.currencyFk
|
||||
JOIN invoiceInDueDay rv ON r.id = rv.invoiceInFk
|
||||
WHERE rv.dueDated >= vStartingDate
|
||||
AND (si.closingBalances IS NULL OR si.closingBalances <> 0)
|
||||
AND r.isBooked
|
||||
AND r.companyFk = vSelf
|
||||
ORDER BY supplierFk, companyFk, companyFk, dueDated, isPayment DESC, id;
|
||||
-- Now, we calculate the outstanding amount for each receipt in descending order
|
||||
SET @risk := 0.0;
|
||||
SET @supplier := 0.0;
|
||||
SET @company := 0.0;
|
||||
SET @moneda := 0.0;
|
||||
SET @pending := 0.0;
|
||||
SET @day := util.VN_CURDATE();
|
||||
INSERT INTO tPendingDuedates (
|
||||
expirationId,
|
||||
dated,
|
||||
supplierFk,
|
||||
companyFk,
|
||||
amount,
|
||||
currencyFk,
|
||||
isPayment,
|
||||
isReconciled
|
||||
)SELECT p.id,
|
||||
p.dueDated,
|
||||
p.supplierFk,
|
||||
p.companyFk,
|
||||
IF (p.currencyFk = vCurrencyEuroFk, p.amount, p.divisa),
|
||||
p.currencyFk,
|
||||
TRUE isPayment,
|
||||
p.isConciliated
|
||||
FROM payment p
|
||||
WHERE p.dueDated >= vStartingDate
|
||||
AND p.companyFk = vSelf
|
||||
UNION ALL
|
||||
SELECT r.id,
|
||||
rv.dueDated,
|
||||
r.supplierFk,
|
||||
r.companyFk,
|
||||
-IF (r.currencyFk = vCurrencyEuroFk, rv.amount, rv.foreignValue),
|
||||
r.currencyFk,
|
||||
FALSE isPayment,
|
||||
TRUE
|
||||
FROM invoiceIn r
|
||||
LEFT JOIN tOpeningBalances si ON r.companyFk = si.companyFk
|
||||
AND r.supplierFk = si.supplierFk
|
||||
AND r.currencyFk = si.currencyFk
|
||||
JOIN invoiceInDueDay rv ON r.id = rv.invoiceInFk
|
||||
WHERE rv.dueDated >= vStartingDate
|
||||
AND (si.closingBalances IS NULL OR si.closingBalances <> 0)
|
||||
AND r.isBooked
|
||||
AND r.companyFk = vSelf
|
||||
ORDER BY supplierFk, companyFk, companyFk, dueDated, isPayment DESC, id;
|
||||
-- Now, we calculate the outstanding amount for each receipt in descending order
|
||||
SET @risk := 0.0;
|
||||
SET @supplier := 0.0;
|
||||
SET @company := 0.0;
|
||||
SET @moneda := 0.0;
|
||||
SET @pending := 0.0;
|
||||
SET @day := util.VN_CURDATE();
|
||||
|
||||
UPDATE tPendingDuedates vp
|
||||
LEFT JOIN tOpeningBalances si ON vp.companyFk = si.companyFk
|
||||
AND vp.supplierFk = si.supplierFk
|
||||
AND vp.currencyFk = si.currencyFk
|
||||
SET vp.balance = @risk := (
|
||||
IF (
|
||||
@company <> vp.companyFk
|
||||
OR @supplier <> vp.supplierFk
|
||||
OR @moneda <> vp.currencyFk,
|
||||
IFNULL(si.openingBalances, 0),
|
||||
@risk
|
||||
) +
|
||||
vp.amount
|
||||
),
|
||||
-- if there is a change of company or supplier or currency, the balance is reset
|
||||
vp.pending = @pending := IF (
|
||||
@company <> vp.companyFk
|
||||
OR @supplier <> vp.supplierFk
|
||||
OR @moneda <> vp.currencyFk
|
||||
OR @day <> vp.dated,
|
||||
vp.amount * (NOT vp.isPayment),
|
||||
@pending + vp.amount
|
||||
),
|
||||
vp.companyFk = @company := vp.companyFk,
|
||||
vp.supplierFk = @supplier := vp.supplierFk,
|
||||
vp.currencyFk = @moneda := vp.currencyFk,
|
||||
vp.dated = @day := vp.dated,
|
||||
vp.balance = @risk,
|
||||
vp.pending = @pending;
|
||||
UPDATE tPendingDuedates vp
|
||||
LEFT JOIN tOpeningBalances si ON vp.companyFk = si.companyFk
|
||||
AND vp.supplierFk = si.supplierFk
|
||||
AND vp.currencyFk = si.currencyFk
|
||||
SET vp.balance = @risk := (
|
||||
IF (
|
||||
@company <> vp.companyFk
|
||||
OR @supplier <> vp.supplierFk
|
||||
OR @moneda <> vp.currencyFk,
|
||||
IFNULL(si.openingBalances, 0),
|
||||
@risk
|
||||
) +
|
||||
vp.amount
|
||||
),
|
||||
-- if there is a change of company or supplier or currency, the balance is reset
|
||||
vp.pending = @pending := IF (
|
||||
@company <> vp.companyFk
|
||||
OR @supplier <> vp.supplierFk
|
||||
OR @moneda <> vp.currencyFk
|
||||
OR @day <> vp.dated,
|
||||
vp.amount * (NOT vp.isPayment),
|
||||
@pending + vp.amount
|
||||
),
|
||||
vp.companyFk = @company := vp.companyFk,
|
||||
vp.supplierFk = @supplier := vp.supplierFk,
|
||||
vp.currencyFk = @moneda := vp.currencyFk,
|
||||
vp.dated = @day := vp.dated,
|
||||
vp.balance = @risk,
|
||||
vp.pending = @pending;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tRowsToDelete ENGINE = MEMORY
|
||||
SELECT expirationId,
|
||||
dated,
|
||||
supplierFk,
|
||||
companyFk,
|
||||
currencyFk,
|
||||
balance
|
||||
FROM tPendingDuedates
|
||||
WHERE balance < vInvalidBalances
|
||||
AND balance > - vInvalidBalances;
|
||||
CREATE OR REPLACE TEMPORARY TABLE tRowsToDelete ENGINE = MEMORY
|
||||
SELECT expirationId,
|
||||
dated,
|
||||
supplierFk,
|
||||
companyFk,
|
||||
currencyFk,
|
||||
balance
|
||||
FROM tPendingDuedates
|
||||
WHERE balance < vInvalidBalances
|
||||
AND balance > - vInvalidBalances;
|
||||
|
||||
DELETE vp.*
|
||||
FROM tPendingDuedates vp
|
||||
JOIN tRowsToDelete rd ON (
|
||||
vp.dated < rd.dated
|
||||
OR (vp.dated = rd.dated AND vp.expirationId <= rd.expirationId)
|
||||
)
|
||||
AND vp.supplierFk = rd.supplierFk
|
||||
AND vp.companyFk = rd.companyFk
|
||||
AND vp.currencyFk = rd.currencyFk
|
||||
WHERE NOT vp.isPayment;
|
||||
DELETE vp.*
|
||||
FROM tPendingDuedates vp
|
||||
JOIN tRowsToDelete rd ON (
|
||||
vp.dated < rd.dated
|
||||
OR (vp.dated = rd.dated AND vp.expirationId <= rd.expirationId)
|
||||
)
|
||||
AND vp.supplierFk = rd.supplierFk
|
||||
AND vp.companyFk = rd.companyFk
|
||||
AND vp.currencyFk = rd.currencyFk
|
||||
WHERE NOT vp.isPayment;
|
||||
|
||||
SELECT vp.expirationId,
|
||||
vp.dated,
|
||||
vp.supplierFk,
|
||||
vp.companyFk,
|
||||
vp.currencyFk,
|
||||
vp.amount,
|
||||
vp.pending,
|
||||
vp.balance,
|
||||
s.payMethodFk,
|
||||
vp.isPayment,
|
||||
vp.isReconciled,
|
||||
vp.endingBalance,
|
||||
cr.amount clientRiskAmount,
|
||||
co.CEE
|
||||
FROM tPendingDuedates vp
|
||||
LEFT JOIN supplier s ON s.id = vp.supplierFk
|
||||
LEFT JOIN client c ON c.fi = s.nif
|
||||
JOIN clientRisk cr ON cr.clientFk = c.id AND cr.companyFk = vp.companyFk
|
||||
LEFT JOIN supplierAccount sa ON sa.supplierFk = s.id
|
||||
LEFT JOIN bankEntity be ON be.id = sa.bankEntityFk
|
||||
LEFT JOIN country co ON co.id = be.countryFk;
|
||||
SELECT vp.expirationId,
|
||||
vp.dated,
|
||||
vp.supplierFk,
|
||||
vp.companyFk,
|
||||
vp.currencyFk,
|
||||
vp.amount,
|
||||
vp.pending,
|
||||
vp.balance,
|
||||
s.payMethodFk,
|
||||
vp.isPayment,
|
||||
vp.isReconciled,
|
||||
vp.endingBalance,
|
||||
cr.amount clientRiskAmount,
|
||||
co.CEE
|
||||
FROM tPendingDuedates vp
|
||||
LEFT JOIN supplier s ON s.id = vp.supplierFk
|
||||
LEFT JOIN client c ON c.fi = s.nif
|
||||
LEFT JOIN clientRisk cr ON cr.clientFk = c.id
|
||||
LEFT JOIN supplierAccount sa ON sa.supplierFk = s.id
|
||||
LEFT JOIN bankEntity be ON be.id = sa.bankEntityFk
|
||||
LEFT JOIN country co ON co.id = be.countryFk
|
||||
AND cr.companyFk = vp.companyFk;
|
||||
|
||||
DROP TEMPORARY TABLE tOpeningBalances;
|
||||
DROP TEMPORARY TABLE tPendingDuedates;
|
||||
DROP TEMPORARY TABLE tRowsToDelete;
|
||||
DROP TEMPORARY TABLE tOpeningBalances;
|
||||
DROP TEMPORARY TABLE tPendingDuedates;
|
||||
DROP TEMPORARY TABLE tRowsToDelete;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`creditInsurance_getRisk`()
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve el riesgo de los clientes que estan asegurados
|
||||
*/
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.client_list
|
||||
(PRIMARY KEY (Id_Cliente))
|
||||
ENGINE = MEMORY
|
||||
SELECT * FROM (
|
||||
SELECT cc.client Id_Cliente, ci.grade
|
||||
FROM creditClassification cc
|
||||
JOIN creditInsurance ci ON cc.id = ci.creditClassification
|
||||
WHERE dateEnd IS NULL
|
||||
ORDER BY ci.creationDate DESC
|
||||
LIMIT 10000000000000000000) t1
|
||||
GROUP BY Id_Cliente;
|
||||
|
||||
CALL vn2008.risk_vs_client_list(util.VN_CURDATE());
|
||||
|
||||
SELECT
|
||||
c.id,
|
||||
c.name,
|
||||
c.credit clientCredit,
|
||||
c.creditInsurance solunion,
|
||||
CAST(r.risk AS DECIMAL(10,0)) risk,
|
||||
CAST(c.creditInsurance - r.risk AS DECIMAL(10,0)) riskAlive,
|
||||
cac.invoiced billedAnnually,
|
||||
c.dueDay,
|
||||
ci.grade,
|
||||
c2.country
|
||||
FROM tmp.client_list ci
|
||||
LEFT JOIN tmp.risk r ON r.Id_Cliente = ci.Id_Cliente
|
||||
JOIN client c ON c.id = ci.Id_Cliente
|
||||
JOIN bs.clientAnnualConsumption cac ON c.id = cac.clientFk
|
||||
JOIN country c2 ON c2.id = c.countryFk
|
||||
GROUP BY c.id;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.risk;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.client_list;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,22 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_checkBooked`(
|
||||
vSelf INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Comprueba si una entrada está contabilizada,
|
||||
* y si lo está retorna un throw.
|
||||
*
|
||||
* @param vSelf Id de entrada
|
||||
*/
|
||||
DECLARE vIsBooked BOOL;
|
||||
|
||||
SELECT isBooked INTO vIsBooked
|
||||
FROM `entry`
|
||||
WHERE id = vSelf;
|
||||
|
||||
IF vIsBooked THEN
|
||||
CALL util.throw('Entry is already booked');
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -37,7 +37,7 @@ BEGIN
|
|||
LEFT JOIN origin o ON o.id = i.originFk
|
||||
) ON it.id = i.typeFk
|
||||
LEFT JOIN edi.ekt ek ON b.ektFk = ek.id
|
||||
WHERE (b.packagingFk = "--" OR b.price2 = 0 OR b.packing = 0 OR b.buyingValue = 0) AND tr.landed > util.firstDayOfMonth(TIMESTAMPADD(MONTH,-1,util.VN_CURDATE())) AND s.name = 'INVENTARIO';
|
||||
WHERE (b.packagingFk = "--" OR b.price2 = 0 OR b.buyingValue = 0) AND tr.landed > util.firstDayOfMonth(TIMESTAMPADD(MONTH,-1,util.VN_CURDATE())) AND s.name = 'INVENTARIO';
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.lastEntryOk;
|
||||
CREATE TEMPORARY TABLE tmp.lastEntryOk
|
||||
|
@ -94,11 +94,6 @@ BEGIN
|
|||
JOIN tmp.lastEntryOkGroup eo ON eo.itemFk = lt.itemFk AND eo.warehouseFk = lt.warehouseFk
|
||||
SET b.price2 = eo.price2 WHERE b.price2 = 0 ;
|
||||
|
||||
UPDATE buy b
|
||||
JOIN tmp.lastEntry lt ON lt.buyFk = b.id
|
||||
JOIN tmp.lastEntryOkGroup eo ON eo.itemFk = lt.itemFk AND eo.warehouseFk = lt.warehouseFk
|
||||
SET b.packing = eo.packing WHERE b.packing = 0;
|
||||
|
||||
UPDATE buy b
|
||||
JOIN tmp.lastEntry lt ON lt.buyFk = b.id
|
||||
JOIN tmp.lastEntryOkGroup eo ON eo.itemFk = lt.itemFk AND eo.warehouseFk = lt.warehouseFk
|
||||
|
|
|
@ -10,20 +10,15 @@ BEGIN
|
|||
* @param vInvoiceInFk Id de factura recibida
|
||||
*/
|
||||
DECLARE vRate DOUBLE DEFAULT 1;
|
||||
DECLARE vDated DATE;
|
||||
DECLARE vExpenseFk VARCHAR(10);
|
||||
|
||||
SELECT MAX(rr.dated) INTO vDated
|
||||
SELECT `value` INTO vRate
|
||||
FROM referenceRate rr
|
||||
JOIN invoiceIn ii ON ii.id = vInvoiceInFk
|
||||
WHERE rr.dated <= ii.issued
|
||||
AND rr.currencyFk = ii.currencyFk;
|
||||
|
||||
IF vDated THEN
|
||||
SELECT `value` INTO vRate
|
||||
FROM referenceRate
|
||||
WHERE dated = vDated;
|
||||
END IF;
|
||||
AND rr.currencyFk = ii.currencyFk
|
||||
ORDER BY dated DESC
|
||||
LIMIT 1;
|
||||
|
||||
DELETE FROM invoiceInTax WHERE invoiceInFk = vInvoiceInFk;
|
||||
|
||||
|
|
|
@ -34,16 +34,22 @@ BEGIN
|
|||
-- Rellena la tabla tmp.errorsByChecker con fallos de revisores
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.errorsByChecker
|
||||
ENGINE = MEMORY
|
||||
SELECT st.workerFk,
|
||||
COUNT(t.id) errors
|
||||
FROM saleMistake sm
|
||||
JOIN saleTracking st ON sm.saleFk = st.saleFk
|
||||
JOIN `state` s2 ON s2.id = st.stateFk
|
||||
JOIN sale s ON s.id = sm.saleFk
|
||||
JOIN ticket t on t.id = s.ticketFk
|
||||
WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo)
|
||||
AND s2.code IN ('OK','PREVIOUS_PREPARATION','PREPARED','CHECKED')
|
||||
GROUP BY st.workerFk;
|
||||
WITH rankedWorkers AS (
|
||||
SELECT sm.id,
|
||||
st.workerFk,
|
||||
ROW_NUMBER() OVER(PARTITION BY sm.id ORDER BY s2.`order`) rnk
|
||||
FROM vn.saleMistake sm
|
||||
JOIN vn.saleTracking st ON sm.saleFk = st.saleFk
|
||||
JOIN vn.`state` s2 ON s2.id = st.stateFk
|
||||
JOIN vn.sale s ON s.id = sm.saleFk
|
||||
JOIN vn.ticket t ON t.id = s.ticketFk
|
||||
WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo
|
||||
AND s2.code IN ('OK', 'PREVIOUS_PREPARATION', 'PREPARED', 'CHECKED')
|
||||
)
|
||||
SELECT workerFk, COUNT(*) errors
|
||||
FROM rankedWorkers
|
||||
WHERE rnk = 1
|
||||
GROUP BY workerFk;
|
||||
|
||||
-- Rellena la tabla tmp.expeditionErrors con fallos de expediciones
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.expeditionErrors
|
||||
|
|
|
@ -46,6 +46,7 @@ BEGIN
|
|||
JOIN parking p ON p.id = sh.parkingFk
|
||||
JOIN tmp.productionBuffer pb ON pb.ticketFk = s.ticketFk
|
||||
JOIN agencyMode am ON am.id = pb.agencyModeFk
|
||||
JOIN agency a ON a .id = am.agencyFk
|
||||
LEFT JOIN routesMonitor rm ON rm.routeFk = pb.routeFk
|
||||
LEFT JOIN saleGroupDetail sgd ON sgd.saleFk = s.id
|
||||
LEFT JOIN ticketState ts ON ts.ticketFk = s.ticketFk
|
||||
|
@ -60,6 +61,7 @@ BEGIN
|
|||
AND ((rm.bufferFk AND rm.isPickingAllowed)
|
||||
OR am.code = 'REC_ALG')
|
||||
AND pb.shipped = vDated
|
||||
AND a.isOwn
|
||||
GROUP BY s.id
|
||||
ORDER BY etd;
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ BEGIN
|
|||
price)
|
||||
SELECT vTicketFk,
|
||||
vNewItemFk,
|
||||
CEIL(vQuantity / vRoundQuantity) * vRoundQuantity, CONCAT('+ ',i.longName),
|
||||
CEIL(vQuantity / vRoundQuantity) * vRoundQuantity, CONCAT('+ ', i.name),
|
||||
vFinalPrice
|
||||
FROM vn.item i
|
||||
WHERE id = vNewItemFk;
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`solunionRiskRequest`()
|
||||
BEGIN
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.client_list;
|
||||
CREATE TEMPORARY TABLE tmp.client_list
|
||||
(PRIMARY KEY (Id_Cliente))
|
||||
ENGINE = MEMORY
|
||||
SELECT * FROM (SELECT cc.client Id_Cliente, ci.grade FROM vn.creditClassification cc
|
||||
JOIN vn.creditInsurance ci ON cc.id = ci.creditClassification
|
||||
WHERE dateEnd IS NULL
|
||||
ORDER BY ci.creationDate DESC
|
||||
LIMIT 10000000000000000000) t1 GROUP BY Id_Cliente;
|
||||
|
||||
CALL vn2008.risk_vs_client_list(util.VN_CURDATE());
|
||||
|
||||
SELECT
|
||||
c.Id_Cliente, c.Cliente, c.Credito credito_vn, c.creditInsurance solunion, cast(r.risk as DECIMAL(10,0)) riesgo_vivo,
|
||||
cast(c.creditInsurance - r.risk as decimal(10,0)) margen_vivo,
|
||||
f.Consumo consumo_anual, c.Vencimiento, ci.grade
|
||||
FROM
|
||||
vn2008.Clientes c
|
||||
JOIN tmp.risk r ON r.Id_Cliente = c.Id_Cliente
|
||||
JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente
|
||||
JOIN bi.facturacion_media_anual f ON c.Id_Cliente = f.Id_Cliente
|
||||
GROUP BY Id_cliente;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.risk;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.client_list;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -2,54 +2,9 @@ DELIMITER $$
|
|||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketClon`(vTicketFk INT, vNewShipped DATE)
|
||||
BEGIN
|
||||
|
||||
DECLARE done INT DEFAULT FALSE;
|
||||
DECLARE vNewTicketFk INT;
|
||||
DECLARE vOldSaleFk INT;
|
||||
DECLARE vNewSaleFk INT;
|
||||
|
||||
DECLARE cur1 CURSOR FOR
|
||||
SELECT id
|
||||
FROM vn.sale
|
||||
WHERE ticketFk = vTicketFk;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||||
|
||||
SET vNewShipped = IFNULL(vNewShipped, util.VN_CURDATE());
|
||||
|
||||
CALL vn.ticket_Clone(vTicketFk, vNewTicketFk);
|
||||
|
||||
UPDATE vn.ticket
|
||||
SET landed = TIMESTAMPADD(DAY, DATEDIFF(vNewShipped, shipped), landed),
|
||||
shipped = vNewShipped
|
||||
WHERE id = vNewTicketFk;
|
||||
|
||||
OPEN cur1;
|
||||
|
||||
read_loop: LOOP
|
||||
|
||||
FETCH cur1 INTO vOldSaleFk;
|
||||
|
||||
IF done THEN
|
||||
LEAVE read_loop;
|
||||
END IF;
|
||||
|
||||
INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed)
|
||||
SELECT vNewTicketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed
|
||||
FROM vn.sale
|
||||
WHERE id = vOldSaleFk;
|
||||
|
||||
SELECT max(id) INTO vNewSaleFk
|
||||
FROM vn.sale
|
||||
WHERE ticketFk = vNewTicketFk;
|
||||
|
||||
INSERT INTO vn.saleComponent(saleFk, componentFk, value, isGreuge)
|
||||
SELECT vNewSaleFk, componentFk, value, isGreuge
|
||||
FROM vn.saleComponent
|
||||
WHERE saleFk = vOldSaleFk;
|
||||
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur1;
|
||||
CALL ticket_cloneAll(vTicketFk, vNewShipped, TRUE, vNewTicketFk);
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_cloneAll`(vTicketFk INT, vNewShipped DATE, vWithWarehouse BOOLEAN, OUT vNewTicketFk INT)
|
||||
BEGIN
|
||||
|
||||
DECLARE vDone BOOLEAN DEFAULT FALSE;
|
||||
DECLARE vOldSaleFk INT;
|
||||
DECLARE vNewSaleFk INT;
|
||||
|
||||
DECLARE cur1 CURSOR FOR
|
||||
SELECT id
|
||||
FROM sale
|
||||
WHERE ticketFk = vTicketFk;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||
|
||||
SET vNewShipped = IFNULL(vNewShipped, util.VN_CURDATE());
|
||||
|
||||
CALL ticket_Clone(vTicketFk, vNewTicketFk);
|
||||
|
||||
UPDATE ticket
|
||||
SET landed = TIMESTAMPADD(DAY, DATEDIFF(vNewShipped, shipped), landed),
|
||||
shipped = vNewShipped,
|
||||
warehouseFk = IF(vWithWarehouse, warehouseFk, NULL)
|
||||
WHERE id = vNewTicketFk;
|
||||
|
||||
OPEN cur1;
|
||||
|
||||
read_loop: LOOP
|
||||
|
||||
FETCH cur1 INTO vOldSaleFk;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE read_loop;
|
||||
END IF;
|
||||
|
||||
INSERT INTO sale(ticketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed)
|
||||
SELECT vNewTicketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed
|
||||
FROM sale
|
||||
WHERE id = vOldSaleFk;
|
||||
|
||||
SELECT max(id) INTO vNewSaleFk
|
||||
FROM sale
|
||||
WHERE ticketFk = vNewTicketFk;
|
||||
|
||||
INSERT INTO saleComponent(saleFk, componentFk, value, isGreuge)
|
||||
SELECT vNewSaleFk, componentFk, value, isGreuge
|
||||
FROM saleComponent
|
||||
WHERE saleFk = vOldSaleFk;
|
||||
|
||||
END LOOP;
|
||||
|
||||
CLOSE cur1;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,4 +1,5 @@
|
|||
DELIMITER $$
|
||||
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getCollisions`()
|
||||
BEGIN
|
||||
/**
|
||||
|
@ -10,6 +11,7 @@ BEGIN
|
|||
DECLARE vZoneFk INT;
|
||||
DECLARE vIsDone INT DEFAULT FALSE;
|
||||
DECLARE vTableCollisions TEXT;
|
||||
DECLARE json_data JSON;
|
||||
DECLARE cur1 CURSOR FOR SELECT zoneFk from tmp.zoneOption;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = TRUE;
|
||||
|
@ -77,45 +79,26 @@ BEGIN
|
|||
GROUP BY z.agencyModeFk, zn.geoFk, zw.warehouseFk
|
||||
HAVING count(*) > 1;
|
||||
|
||||
SELECT '<table cellspacing="10">
|
||||
<tr>
|
||||
<th>C.Postal</th>
|
||||
<th>Número de zona</th>
|
||||
<th>Precio</th>
|
||||
<th>Zona</th>
|
||||
<th>Almacén</th>
|
||||
<th>Salix</th>
|
||||
</tr>' INTO vTableCollisions;
|
||||
-- Recojo los datos de la zona que ha dado conflicto
|
||||
SELECT JSON_ARRAYAGG(
|
||||
JSON_OBJECT(
|
||||
'zoneFk', zoneFk,
|
||||
'zn', JSON_OBJECT('name', zn.name),
|
||||
'z', JSON_OBJECT('name', z.name,'price', z.price),
|
||||
'w', JSON_OBJECT('name', w.name)
|
||||
)
|
||||
) FROM tmp.zoneNodes zn
|
||||
JOIN zone z ON z.id = zn.zoneFk
|
||||
JOIN geoCollision gc ON gc.agencyModeFk = z.agencyModeFk AND zn.geoFk = gc.geoFk
|
||||
JOIN warehouse w ON w.id = gc.warehouseFk
|
||||
INTO json_data;
|
||||
|
||||
INSERT INTO mail (receiver,replyTo,subject,body)
|
||||
SELECT 'pepe@verdnatura.es' receiver,
|
||||
'noreply@verdnatura.es' replyTo,
|
||||
CONCAT('Colisiones en zonas ', util.VN_CURDATE()) subject,
|
||||
CONCAT(vTableCollisions,
|
||||
GROUP_CONCAT(sub.td SEPARATOR ''),
|
||||
'</table>') body
|
||||
FROM(SELECT
|
||||
CONCAT('<tr>
|
||||
<td>', zn.name, '</td>
|
||||
<td>', zoneFk,'</td>
|
||||
<td>', z.price,'</td>
|
||||
<td>', z.name,'</td>
|
||||
<td>', w.name, '</td>
|
||||
<td>', CONCAT('<a href="https://salix.verdnatura.es/#!/zone/',
|
||||
zoneFk,
|
||||
'/location?q=%7B%22search%22:%22',
|
||||
zn.name,
|
||||
'%22%7D">'
|
||||
'https://salix.verdnatura.es/#!/zone/',
|
||||
zoneFk,
|
||||
'/location?q=%7B%22search%22:%22',
|
||||
zn.name,
|
||||
'%22%7D</a>'),'</td>
|
||||
</tr>') td
|
||||
FROM tmp.zoneNodes zn
|
||||
JOIN zone z ON z.id = zn.zoneFk
|
||||
JOIN geoCollision gc ON gc.agencyModeFk = z.agencyModeFk AND zn.geoFk = gc.geoFk
|
||||
JOIN warehouse w ON w.id = gc.warehouseFk) sub;
|
||||
-- Creo un registro de la notificacion 'zone-included' para reportar via email
|
||||
SELECT util.notification_send(
|
||||
'zone-included',
|
||||
JSON_OBJECT('zoneCollisions',json_data),
|
||||
account.myUser_getId()
|
||||
);
|
||||
|
||||
DROP TEMPORARY TABLE
|
||||
geoCollision,
|
||||
|
|
|
@ -3,6 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`buy_beforeDelete`
|
|||
BEFORE DELETE ON `buy`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL entry_checkBooked(OLD.entryFk);
|
||||
IF OLD.printedStickers <> 0 THEN
|
||||
CALL util.throw("it is not possible to delete buys with printed labels ");
|
||||
END IF;
|
||||
|
|
|
@ -9,17 +9,26 @@ trig: BEGIN
|
|||
DECLARE vGroupingMode TINYINT;
|
||||
DECLARE vGenericFk INT;
|
||||
DECLARE vGenericInDate BOOL;
|
||||
DECLARE vBuyerFk INT;
|
||||
|
||||
IF @isModeInventory THEN
|
||||
LEAVE trig;
|
||||
END IF;
|
||||
|
||||
CALL entry_checkBooked(NEW.entryFk);
|
||||
IF NEW.printedStickers <> 0 THEN
|
||||
CALL util.throw('it is not possible to create buy lines with printedstickers other than 0');
|
||||
END IF;
|
||||
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
|
||||
SELECT it.workerFk INTO vBuyerFk
|
||||
FROM item i
|
||||
JOIN itemType it ON it.id = i.typeFk
|
||||
WHERE i.id = NEW.itemFk;
|
||||
|
||||
SET NEW.buyerFk = vBuyerFk;
|
||||
|
||||
CALL buy_checkGrouping(NEW.`grouping`);
|
||||
|
||||
SELECT t.warehouseInFk, t.landed
|
||||
|
|
|
@ -7,11 +7,13 @@ trig:BEGIN
|
|||
DECLARE vGenericInDate BOOL;
|
||||
DECLARE vIsInventory BOOL;
|
||||
DECLARE vDefaultEntry INT;
|
||||
DECLARE vBuyerFk INT;
|
||||
|
||||
IF @isTriggerDisabled THEN
|
||||
LEAVE trig;
|
||||
END IF;
|
||||
|
||||
CALL entry_checkBooked(OLD.entryFk);
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
|
||||
SELECT defaultEntry INTO vDefaultEntry
|
||||
|
@ -65,6 +67,15 @@ trig:BEGIN
|
|||
SET NEW.isIgnored = TRUE;
|
||||
END IF;
|
||||
|
||||
IF NOT (NEW.itemFk <=> OLD.itemFk) THEN
|
||||
SELECT it.workerFk INTO vBuyerFk
|
||||
FROM item i
|
||||
JOIN itemType it ON it.id = i.typeFk
|
||||
WHERE i.id = NEW.itemFk;
|
||||
|
||||
SET NEW.buyerFk = vBuyerFk;
|
||||
END IF;
|
||||
|
||||
IF NOT (NEW.itemFk <=> OLD.itemFk) OR
|
||||
NOT (OLD.entryFk <=> NEW.entryFk) THEN
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck
|
||||
|
|
|
@ -3,6 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_beforeDelete`
|
|||
BEFORE DELETE ON `entry`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL entry_checkBooked(OLD.id);
|
||||
DELETE FROM buy WHERE entryFk = OLD.id;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -7,6 +7,10 @@ BEGIN
|
|||
DECLARE vPrintedCount INT;
|
||||
DECLARE vHasDistinctWarehouses BOOL;
|
||||
|
||||
IF NEW.isBooked = OLD.isBooked THEN
|
||||
CALL entry_checkBooked(OLD.id);
|
||||
END IF;
|
||||
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
|
||||
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
|
||||
|
|
|
@ -8,5 +8,6 @@ BEGIN
|
|||
`changedModel` = 'zoneIncluded',
|
||||
`changedModelId` = OLD.zoneFk,
|
||||
`userFk` = account.myUser_getId();
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -4,5 +4,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_beforeIn
|
|||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -4,5 +4,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`zoneIncluded_beforeUp
|
|||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.editorFk = account.myUser_getId();
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -12,5 +12,5 @@ FROM (
|
|||
`pc`.`id` = `b`.`workerBusinessProfessionalCategoryFk`
|
||||
)
|
||||
)
|
||||
WHERE `pc`.`name` = 'Aux ventas'
|
||||
WHERE `pc`.`description` = 'Aux ventas'
|
||||
GROUP BY `b`.`workerFk`
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`add_awb_component`(IN vAwbFk SMALLINT)
|
||||
BEGIN
|
||||
|
||||
DECLARE vShipped DATE;
|
||||
DECLARE vHasStems BOOLEAN;
|
||||
|
||||
SELECT t.shipped, IF(a.stems, TRUE, FALSE)
|
||||
INTO vShipped, vHasStems
|
||||
FROM vn.travel t
|
||||
JOIN vn.awb a ON a.id = t.awbFk
|
||||
WHERE awbFk = vAwbFk
|
||||
LIMIT 1;
|
||||
|
||||
INSERT IGNORE INTO awb_component (awb_id,Id_Proveedor,awb_component_type_id,awb_role_id,awb_unit_id,value,Id_Moneda)
|
||||
SELECT id, Id_Proveedor, awb_component_type_id, awb_role_id,awb_unit_id, LEAST(GREATEST(value1, IFNULL(min_value, value1)), IFNULL(max_value, value1)), Id_Moneda
|
||||
FROM (
|
||||
SELECT a.id,
|
||||
IFNULL(act.carguera_id,
|
||||
CASE awb_role_id
|
||||
WHEN 1 THEN a.carguera_id
|
||||
WHEN 2 THEN a.transitario_id
|
||||
WHEN 3 THEN f.airline_id
|
||||
END
|
||||
) Id_Proveedor,
|
||||
act.awb_component_type_id,
|
||||
act.awb_role_id,
|
||||
act.awb_unit_id,
|
||||
value *
|
||||
CASE awb_unit_id
|
||||
WHEN '1000Tj-20' THEN ((CAST(stems AS SIGNED) - 20000)/1000) + (min_value / value)
|
||||
WHEN '1000Tj-10' THEN ((CAST(stems AS SIGNED) - 10000)/1000) + (min_value / value)
|
||||
WHEN '100GW' THEN peso/100
|
||||
WHEN 'AWB' THEN 1 -- No action
|
||||
WHEN 'FB' THEN hb/2
|
||||
WHEN 'GW' THEN peso
|
||||
WHEN 'TW' THEN GREATEST(peso,volume_weight)
|
||||
WHEN 'PN' THEN LEAST(90, value + a.propertyNumber * 10)
|
||||
END value1,
|
||||
value,
|
||||
act.Id_Moneda,
|
||||
act.min_value,
|
||||
act.max_value
|
||||
FROM awb a
|
||||
JOIN flight f ON f.flight_id = a.flight_id
|
||||
LEFT JOIN awb_component_template act ON
|
||||
((IFNULL(act.carguera_id, a.carguera_id) = a.carguera_id AND awb_role_id = 1)
|
||||
OR (IFNULL(act.carguera_id, a.transitario_id) = a.transitario_id AND awb_role_id = 2)
|
||||
OR (IFNULL(act.airline_id, f.airline_id) = f.airline_id AND awb_role_id = 3)
|
||||
OR (awb_role_id = 4))
|
||||
AND IFNULL(act.airport_out, f.airport_out) = f.airport_out
|
||||
AND IFNULL(act.airport_in, f.airport_in) = f.airport_in
|
||||
AND IFNULL(act.airline_id, f.airline_id) = f.airline_id
|
||||
AND INSTR(IFNULL(act.days, WEEKDAY(vShipped) + 1),WEEKDAY(vShipped) + 1)
|
||||
JOIN awb_component_type acty ON acty.awb_component_type_id = act.awb_component_type_id
|
||||
WHERE a.id = vAwbFk AND Fecha <= vShipped
|
||||
AND (vHasStems = TRUE OR acty.hasStems)
|
||||
ORDER BY Fecha DESC, act.days DESC LIMIT 10000000000000000000
|
||||
) t;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,50 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`agencyModeImbalance`(vStarted DATE, vEnded DATE)
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve el valor de los precios teorico, practico de las agencias
|
||||
* y si ademas es de mrw lo compara con su fichero previamente procesado
|
||||
*
|
||||
* @param vEktFk Identificador de edi.ekt
|
||||
*/
|
||||
DECLARE vEndedDayEnd DATETIME;
|
||||
|
||||
SET vEndedDayEnd = util.dayEnd(vEnded);
|
||||
|
||||
SELECT t.id ticketFk,t.addressFk,
|
||||
CAST(v.amount AS DECIMAL (10,2)) AS VN,
|
||||
CAST(v.amount - e.shipping_charge AS DECIMAL (10,2)) AS Difer,
|
||||
CAST(mrwPrice AS DECIMAL (10,2)) mrwPrice,
|
||||
CAST(e.shipping_charge - mrwPrice AS DECIMAL (10,2)) mrwDifference,
|
||||
CAST(e.shipping_charge AS DECIMAL (10,2)) AS teorico,
|
||||
CAST(e.extraCharge AS DECIMAL (10,2)) AS extraCharge,
|
||||
t.packages, t.clientFk,
|
||||
t.zoneFk, a.provinceFk, mrwCount
|
||||
FROM vn.ticket t
|
||||
LEFT JOIN
|
||||
(SELECT ticketFk, SUM(amount) amount, fc.shipped
|
||||
FROM vn.sale_freightComponent fc
|
||||
JOIN vn.ticket t ON t.id = fc.ticketFk
|
||||
JOIN tmp.agencyMode am ON am.agencyModeFk = t.agencyModeFk
|
||||
WHERE fc.shipped BETWEEN vStarted AND vEndedDayEnd
|
||||
GROUP BY ticketFk) v ON t.id = v.ticketFk
|
||||
LEFT JOIN (SELECT t.id,
|
||||
SUM(t.zonePrice) shipping_charge,
|
||||
SUM(IFNULL(aex.price,0)) extraCharge
|
||||
FROM vn.ticket t
|
||||
LEFT JOIN vn.expedition e ON e.ticketFk = t.id
|
||||
LEFT JOIN vn.packaging p ON p.id = e.packagingFk
|
||||
JOIN tmp.agencyMode amc ON amc.agencyModeFk = t.agencyModeFk
|
||||
JOIN vn.agencyMode am ON am.id = amc.agencyModeFk
|
||||
LEFT JOIN vn.agencyExtraCharge aex ON p.width+p.depth+p.height BETWEEN aex.sizeMin AND aex.sizeMax AND aex.agencyFk = am.agencyFk
|
||||
WHERE t.shipped BETWEEN vStarted AND vEndedDayEnd
|
||||
GROUP BY t.id
|
||||
) e ON t.id = e.id
|
||||
LEFT JOIN (SELECT ticketFk, SUM(price) mrwPrice, COUNT(*) mrwCount
|
||||
FROM vn.mrw
|
||||
GROUP BY ticketFk) mrw ON mrw.ticketFk = t.id
|
||||
JOIN vn.address a ON a.id = t.addressFk
|
||||
JOIN tmp.agencyMode am ON am.agencyModeFk = t.agencyModeFk
|
||||
WHERE t.shipped BETWEEN vStarted AND vEndedDayEnd;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,91 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`historico_absoluto`(IN idART INT, IN wh INT, IN datfecha DATETIME)
|
||||
BEGIN
|
||||
|
||||
DECLARE inv_calculado INT;
|
||||
DECLARE inv INT;
|
||||
DECLARE today DATETIME;
|
||||
DECLARE fecha_inv DATETIME;
|
||||
|
||||
SET today = util.VN_CURDATE();
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE historico_pasado
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT TR.landing Fecha,
|
||||
C.Cantidad Entrada,
|
||||
NULL Salida,
|
||||
(TR.received != FALSE) OK,
|
||||
P.Proveedor Alias,
|
||||
E.Referencia Referencia,
|
||||
E.Id_Entrada id,
|
||||
TR.delivered F5
|
||||
FROM Compres C -- mirar perque no entra en received
|
||||
INNER JOIN Entradas E USING (Id_Entrada)
|
||||
INNER JOIN travel TR ON TR.id = E.travel_id
|
||||
INNER JOIN Proveedores P USING (Id_Proveedor)
|
||||
WHERE TR.landing >= '2001-01-01'
|
||||
AND Id_proveedor <> 4
|
||||
AND wh IN (TR.warehouse_id , 0)
|
||||
AND C.Id_Article = idART
|
||||
AND E.Inventario = 0
|
||||
AND E.Redada = 0
|
||||
UNION ALL
|
||||
SELECT TR.shipment Fecha,
|
||||
NULL Entrada,
|
||||
C.Cantidad Salida,
|
||||
TR.delivered OK,
|
||||
P.Proveedor Alias,
|
||||
E.Referencia Referencia,
|
||||
E.Id_Entrada id,
|
||||
TR.delivered F5
|
||||
FROM Compres C
|
||||
INNER JOIN Entradas E USING (Id_Entrada)
|
||||
INNER JOIN travel TR ON TR.id = E.travel_id
|
||||
INNER JOIN Proveedores P USING (Id_Proveedor)
|
||||
WHERE TR.shipment >= '2001-01-01'
|
||||
AND wh = TR.warehouse_id_out
|
||||
AND Id_Proveedor <> 4
|
||||
AND C.Id_Article = idART
|
||||
AND E.Inventario = 0
|
||||
AND E.Redada = 0
|
||||
UNION ALL
|
||||
SELECT T.Fecha Fecha,
|
||||
NULL Entrada,
|
||||
M.Cantidad Salida,
|
||||
(M.OK <> 0 OR T.Etiquetasemitidas <> 0 OR T.Factura IS NOT NULL) OK,
|
||||
T.Alias Alias,
|
||||
T.Factura Referencia,
|
||||
T.Id_Ticket,
|
||||
T.PedidoImpreso
|
||||
FROM Movimientos M
|
||||
INNER JOIN Tickets T USING (Id_Ticket)
|
||||
JOIN Clientes C ON C.Id_Cliente = T.Id_Cliente
|
||||
WHERE T.Fecha >= '2001-01-01'
|
||||
AND M.Id_Article = idART
|
||||
AND wh IN (T.warehouse_id , 0)
|
||||
) t1
|
||||
ORDER BY Fecha, Entrada DESC, OK DESC;
|
||||
|
||||
SELECT sum(Entrada) - sum(Salida) INTO inv_calculado
|
||||
FROM historico_pasado
|
||||
WHERE Fecha < datfecha;
|
||||
|
||||
SELECT p1.*, NULL v_virtual
|
||||
FROM(
|
||||
SELECT datfecha Fecha,
|
||||
inv_calculado Entrada,
|
||||
NULL Salida,
|
||||
1 OK,
|
||||
'Inventario calculado' Alias,
|
||||
'' Referencia, 0 id,
|
||||
1 F5
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM historico_pasado
|
||||
WHERE Fecha >= datfecha
|
||||
) p1;
|
||||
|
||||
DROP TEMPORARY TABLE historico_pasado;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,206 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`historico_multiple`(IN vItemFk INT)
|
||||
BEGIN
|
||||
|
||||
DECLARE vDateInventory DATETIME;
|
||||
|
||||
SELECT Fechainventario INTO vDateInventory FROM tblContadores;
|
||||
|
||||
SET @a = 0;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS hm1;
|
||||
|
||||
CREATE TEMPORARY TABLE hm1
|
||||
SELECT DATE(Fecha) as Fecha,
|
||||
Entrada,
|
||||
Salida,
|
||||
OK,
|
||||
Referencia,
|
||||
Historia.id,
|
||||
|
||||
wh,
|
||||
|
||||
`name` as wh_name
|
||||
|
||||
FROM
|
||||
|
||||
( SELECT TR.landing as Fecha,
|
||||
C.Cantidad as Entrada,
|
||||
NULL as Salida,
|
||||
|
||||
IF(warehouse_id = 44, 1, warehouse_id) as wh,
|
||||
(TR.received != FALSE) as OK,
|
||||
E.Referencia as Referencia,
|
||||
E.Id_Entrada as id
|
||||
|
||||
|
||||
|
||||
FROM Compres C
|
||||
INNER JOIN Entradas E USING (Id_Entrada)
|
||||
INNER JOIN travel TR ON TR.id = E.travel_id
|
||||
WHERE TR.landing >= vDateInventory
|
||||
AND C.Id_Article = vItemFk
|
||||
AND E.Redada = 0
|
||||
|
||||
AND C.Cantidad <> 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT TR.shipment as Fecha,
|
||||
NULL as Entrada,
|
||||
C.Cantidad as Salida,
|
||||
warehouse_id_out as wh,
|
||||
TR.delivered as OK,
|
||||
E.Referencia as Referencia,
|
||||
E.Id_Entrada as id
|
||||
|
||||
FROM Compres C
|
||||
INNER JOIN Entradas E USING (Id_Entrada)
|
||||
INNER JOIN travel TR ON TR.id = E.travel_id
|
||||
WHERE TR.shipment >= vDateInventory
|
||||
AND C.Id_Article = vItemFk
|
||||
|
||||
AND E.Redada = 0
|
||||
|
||||
AND C.Cantidad <> 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT T.Fecha as Fecha,
|
||||
NULL as Entrada,
|
||||
M.Cantidad as Salida,
|
||||
warehouse_id as wh,
|
||||
(M.OK <> 0 OR T.Etiquetasemitidas <> 0 OR T.Factura IS NOT NULL) as OK,
|
||||
T.Factura as Referencia,
|
||||
T.Id_Ticket as id
|
||||
|
||||
FROM Movimientos M
|
||||
INNER JOIN Tickets T USING (Id_Ticket)
|
||||
WHERE T.Fecha >= vDateInventory
|
||||
AND M.Id_Article = vItemFk
|
||||
|
||||
) AS Historia
|
||||
|
||||
INNER JOIN warehouse ON warehouse.id = Historia.wh
|
||||
ORDER BY Fecha, Entrada DESC, OK DESC;
|
||||
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS hm2;
|
||||
DROP TEMPORARY TABLE IF EXISTS hm3;
|
||||
DROP TEMPORARY TABLE IF EXISTS hm4;
|
||||
DROP TEMPORARY TABLE IF EXISTS hm5;
|
||||
DROP TEMPORARY TABLE IF EXISTS hm6;
|
||||
DROP TEMPORARY TABLE IF EXISTS hm7;
|
||||
DROP TEMPORARY TABLE IF EXISTS hm8;
|
||||
CREATE TEMPORARY TABLE hm2 SELECT * FROM hm1 WHERE wh = 19;
|
||||
CREATE TEMPORARY TABLE hm3 SELECT * FROM hm1 WHERE wh = 7;
|
||||
CREATE TEMPORARY TABLE hm4 SELECT * FROM hm1 WHERE wh = 60;
|
||||
CREATE TEMPORARY TABLE hm5 SELECT * FROM hm1 WHERE wh = 5;
|
||||
CREATE TEMPORARY TABLE hm6 SELECT * FROM hm1 WHERE wh = 17;
|
||||
CREATE TEMPORARY TABLE hm7 SELECT * FROM hm1 WHERE wh = 37;
|
||||
CREATE TEMPORARY TABLE hm8 SELECT * FROM hm1 WHERE wh = 55;
|
||||
|
||||
SELECT * FROM
|
||||
|
||||
(
|
||||
|
||||
SELECT Fecha, Entrada as BOGEntrada, Salida as BOGSalida, OK as BOGOK, Referencia as BOGReferencia, id as BOGid,
|
||||
|
||||
NULL AS VNHEntrada, NULL AS VNHSalida, NULL AS VNHOK, NULL AS VNHReferencia, NULL AS VNHid,
|
||||
|
||||
NULL AS ALGEntrada, NULL AS ALGSalida, NULL AS ALGOK, NULL AS ALGReferencia, NULL AS ALGid,
|
||||
|
||||
NULL AS MADEntrada, NULL AS MADSalida, NULL AS MADOK, NULL AS MADReferencia, NULL AS MADid,
|
||||
|
||||
NULL AS MCFEntrada, NULL AS MCFSalida, NULL AS MCFOK, NULL AS MCFReferencia, NULL AS MCFid,
|
||||
|
||||
NULL AS VILEntrada, NULL AS VILSalida, NULL AS VILOK, NULL AS VILReferencia, NULL AS VILid,
|
||||
|
||||
NULL AS BAREntrada, NULL AS BARSalida, NULL AS BAROK, NULL AS BARReferencia, NULL AS BARid
|
||||
|
||||
FROM hm2
|
||||
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT Fecha
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
,Entrada, Salida, OK, Referencia, id
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
FROM hm3
|
||||
|
||||
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT Fecha
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, Entrada, Salida, OK, Referencia, id
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
FROM hm4
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT Fecha
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, Entrada, Salida, OK, Referencia, id
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
FROM hm5
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT Fecha
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, Entrada, Salida, OK, Referencia, id
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
FROM hm6
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT Fecha
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, Entrada, Salida, OK, Referencia, id
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
|
||||
|
||||
FROM hm7
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT Fecha
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, NULL, NULL, NULL, NULL, NULL
|
||||
, Entrada, Salida, OK, Referencia, id
|
||||
|
||||
FROM hm8
|
||||
|
||||
) sub
|
||||
|
||||
ORDER BY Fecha, BOGEntrada IS NULL, VNHEntrada IS NULL, ALGEntrada IS NULL, MADEntrada IS NULL, MCFEntrada IS NULL, VILEntrada IS NULL, BAREntrada IS NULL;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -5,7 +5,6 @@ AS SELECT `c`.`id` AS `id`,
|
|||
`c`.`code` AS `abbreviation`,
|
||||
`c`.`supplierAccountFk` AS `Id_Proveedores_account`,
|
||||
`c`.`workerManagerFk` AS `gerente_id`,
|
||||
`c`.`sage200Company` AS `digito_factura`,
|
||||
`c`.`phytosanitary` AS `phytosanitary`,
|
||||
`c`.`companyCode` AS `CodigoEmpresa`,
|
||||
`c`.`companyGroupFk` AS `empresa_grupo`,
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE vn.buy ADD buyerFk int(10) unsigned DEFAULT NULL NULL;
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE util.notification MODIFY COLUMN id int(11) auto_increment NOT NULL;
|
|
@ -0,0 +1,15 @@
|
|||
INSERT IGNORE INTO util.notification ( `name`,`description`)
|
||||
VALUES
|
||||
( 'zone-included','An email to notify zoneCollisions');
|
||||
|
||||
-- Change value if destionation user should be different
|
||||
SET @DESTINATION_USER = "pepe";
|
||||
|
||||
SET @MaxId = LAST_INSERT_ID();
|
||||
|
||||
INSERT IGNORE INTO util.notificationSubscription (notificationFk,userFk)
|
||||
VALUES(
|
||||
@MaxId, (SELECT id from `account`.`user` where name = @DESTINATION_USER));
|
||||
|
||||
INSERT IGNORE INTO util.notificationAcl (notificationFk,roleFk)
|
||||
SELECT @MaxId, (SELECT role from `account`.`user` where name = @DESTINATION_USER) FROM util.notification WHERE name= "zone-included";
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
CREATE SCHEMA IF NOT EXISTS `floranet`;
|
||||
|
||||
CREATE ROLE IF NOT EXISTS 'floranet' ;
|
||||
|
||||
GRANT Create temporary tables ON floranet.* TO 'floranet';
|
||||
|
||||
GRANT Execute ON floranet.* TO 'floranet';
|
||||
|
||||
GRANT Lock tables ON floranet.* TO 'floranet';
|
||||
|
||||
CREATE USER IF NOT EXISTS 'floranet'@'%';
|
||||
|
||||
GRANT floranet TO floranet@'%';
|
|
@ -0,0 +1,61 @@
|
|||
CREATE OR REPLACE TABLE floranet.`builder` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`itemFk` int(11) NOT NULL,
|
||||
`elementFk` int(11) NOT NULL,
|
||||
`quantity` int(10) unsigned NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `builder_FK` (`itemFk`),
|
||||
KEY `builder_FK_1` (`elementFk`),
|
||||
CONSTRAINT `builder_FK` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Links handmade products with their elements';
|
||||
|
||||
CREATE OR REPLACE TABLE floranet.`element` (
|
||||
`itemFk` int(11) NOT NULL,
|
||||
`typeFk` smallint(5) unsigned DEFAULT NULL,
|
||||
`size` int(11) DEFAULT NULL,
|
||||
`inkFk` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
|
||||
`originFk` tinyint(2) unsigned DEFAULT NULL,
|
||||
`name` varchar(30) DEFAULT NULL,
|
||||
`quantity` int(11) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`itemFk`),
|
||||
KEY `element_FK` (`itemFk`),
|
||||
KEY `element_FK_1` (`typeFk`),
|
||||
KEY `element_FK_2` (`inkFk`),
|
||||
KEY `element_FK_3` (`originFk`),
|
||||
CONSTRAINT `element_FK` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `element_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `vn`.`itemType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `element_FK_2` FOREIGN KEY (`inkFk`) REFERENCES `vn`.`ink` (`id`) ON UPDATE CASCADE,
|
||||
CONSTRAINT `element_FK_3` FOREIGN KEY (`originFk`) REFERENCES `vn`.`origin` (`id`) ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Filtro para localizar posibles items que coincidan con la descripción';
|
||||
|
||||
ALTER TABLE floranet.builder ADD CONSTRAINT `builder_FK_1` FOREIGN KEY (`elementFk`) REFERENCES `element` (`itemFk`) ON UPDATE CASCADE;
|
||||
|
||||
CREATE OR REPLACE TABLE floranet.catalogue
|
||||
(id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50),
|
||||
price DECIMAL(10,2) NOT NULL,
|
||||
itemFk INT NOT NULL,
|
||||
dated DATE,
|
||||
postalCode VARCHAR(12),
|
||||
`type` VARCHAR(50),
|
||||
image VARCHAR(255),
|
||||
description TEXT,
|
||||
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
payed DATETIME,
|
||||
FOREIGN KEY (itemFk) REFERENCES vn.item(id) ON DELETE RESTRICT ON UPDATE CASCADE);
|
||||
|
||||
|
||||
CREATE OR REPLACE TABLE floranet.`order`
|
||||
(id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
catalogueFk INT UNIQUE,
|
||||
customerName VARCHAR(100),
|
||||
email VARCHAR(100),
|
||||
customerPhone VARCHAR(15),
|
||||
message VARCHAR(255),
|
||||
deliveryName VARCHAR(100),
|
||||
address VARCHAR(200),
|
||||
deliveryPhone VARCHAR(100),
|
||||
isPaid BOOL NOT NULL DEFAULT FALSE,
|
||||
payed DATETIME,
|
||||
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (catalogueFk) REFERENCES catalogue(id) ON DELETE RESTRICT ON UPDATE CASCADE);
|
|
@ -0,0 +1,19 @@
|
|||
SET @isTriggerDisabled := TRUE;
|
||||
|
||||
UPDATE vn.buy
|
||||
SET packing = 1
|
||||
WHERE packing IS NULL
|
||||
OR packing <= 0;
|
||||
|
||||
UPDATE vn.itemShelving
|
||||
SET packing = 1
|
||||
WHERE packing IS NULL
|
||||
OR NOT packing;
|
||||
|
||||
SET @isTriggerDisabled := FALSE;
|
||||
|
||||
ALTER TABLE vn.buy MODIFY COLUMN packing int(11) NOT NULL DEFAULT 1 CHECK(packing > 0);
|
||||
ALTER TABLE vn.itemShelving MODIFY COLUMN packing int(11) NOT NULL DEFAULT 1 CHECK(packing > 0);
|
||||
|
||||
-- Antes tenia '0=sin obligar 1=groping 2=packing' (groping → grouping)
|
||||
ALTER TABLE vn.buy MODIFY COLUMN groupingMode tinyint(4) DEFAULT 0 NOT NULL COMMENT '0=sin obligar 1=grouping 2=packing';
|
|
@ -0,0 +1,73 @@
|
|||
-- Auto-generated SQL script #202403061303
|
||||
UPDATE vn.company
|
||||
SET companyCode=0
|
||||
WHERE id=69;
|
||||
UPDATE vn.company
|
||||
SET companyCode=1
|
||||
WHERE id=442;
|
||||
UPDATE vn.company
|
||||
SET companyCode=4
|
||||
WHERE id=567;
|
||||
UPDATE vn.company
|
||||
SET companyCode=2
|
||||
WHERE id=791;
|
||||
UPDATE vn.company
|
||||
SET companyCode=3
|
||||
WHERE id=792;
|
||||
UPDATE vn.company
|
||||
SET companyCode=5
|
||||
WHERE id=965;
|
||||
UPDATE vn.company
|
||||
SET companyCode=7
|
||||
WHERE id=1381;
|
||||
UPDATE vn.company
|
||||
SET companyCode=3
|
||||
WHERE id=1463;
|
||||
UPDATE vn.company
|
||||
SET companyCode=8
|
||||
WHERE id=2142;
|
||||
UPDATE vn.company
|
||||
SET companyCode=6
|
||||
WHERE id=2393;
|
||||
UPDATE vn.company
|
||||
SET companyCode=9
|
||||
WHERE id=3869;
|
||||
|
||||
-- Auto-generated SQL script #202403061311
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=69;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=442;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=567;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=791;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=792;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=965;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=1381;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=1463;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=2142;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=2393;
|
||||
UPDATE vn.company
|
||||
SET sage200Company=NULL
|
||||
WHERE id=3869;
|
||||
|
||||
|
||||
ALTER TABLE vn.company CHANGE sage200Company sage200Company__ int(2) DEFAULT NULL NULL COMMENT '@deprecated 06/03/2024';
|
||||
ALTER TABLE vn.company MODIFY COLUMN sage200Company__ int(2) DEFAULT NULL NULL COMMENT '@deprecated 06/03/2024';
|
|
@ -0,0 +1,3 @@
|
|||
-- Place your SQL code here
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`multipleInventoryHistory`(
|
||||
vItemFk INT)
|
||||
BEGIN
|
||||
DECLARE vDateInventory DATETIME;
|
||||
SELECT inventoried INTO vDateInventory FROM config;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`absoluteInventoryHistory`(
|
||||
vItemFk INT, vWarehouse INT, vDate DATETIME)
|
||||
BEGIN
|
||||
DECLARE vCalculatedInventory INT;
|
||||
SET vCalculatedInventory = 0;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
GRANT EXECUTE ON PROCEDURE vn.absoluteInventoryHistory TO buyer;
|
||||
GRANT EXECUTE ON PROCEDURE vn.multipleInventoryHistory TO buyer;
|
|
@ -0,0 +1,23 @@
|
|||
-- account.accountConfig
|
||||
ALTER TABLE account.accountConfig MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
ALTER TABLE account.accountConfig ADD CONSTRAINT accountConfig_check CHECK (id = 1);
|
||||
|
||||
-- account.ldapConfig
|
||||
ALTER TABLE account.ldapConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE account.ldapConfig ADD CONSTRAINT ldapConfig_check CHECK (id = 1);
|
||||
|
||||
-- account.mailConfig
|
||||
ALTER TABLE account.mailConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE account.mailConfig ADD CONSTRAINT mailConfig_check CHECK (id = 1);
|
||||
|
||||
-- account.roleConfig
|
||||
ALTER TABLE account.roleConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE account.roleConfig ADD CONSTRAINT roleConfig_check CHECK (id = 1);
|
||||
|
||||
-- account.sambaConfig
|
||||
ALTER TABLE account.sambaConfig MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
ALTER TABLE account.sambaConfig ADD CONSTRAINT sambaConfig_check CHECK (id = 1);
|
||||
|
||||
-- account.userConfig
|
||||
ALTER TABLE account.userConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE account.userConfig ADD CONSTRAINT userConfig_check CHECK (id = 1);
|
|
@ -0,0 +1,7 @@
|
|||
-- bs.nightTaskConfig
|
||||
ALTER TABLE bs.nightTaskConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE bs.nightTaskConfig ADD CONSTRAINT nightTaskConfig_check CHECK (id = 1);
|
||||
|
||||
-- bs.workerProductivityConfig
|
||||
ALTER TABLE bs.workerProductivityConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE bs.workerProductivityConfig ADD CONSTRAINT workerProductivityConfig_check CHECK (id = 1);
|
|
@ -0,0 +1,15 @@
|
|||
-- edi.exchangeConfig
|
||||
ALTER TABLE edi.exchangeConfig MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
ALTER TABLE edi.exchangeConfig ADD CONSTRAINT exchangeConfig_check CHECK (id = 1);
|
||||
|
||||
-- edi.ftpConfig
|
||||
ALTER TABLE edi.ftpConfig MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
ALTER TABLE edi.ftpConfig ADD CONSTRAINT ftpConfig_check CHECK (id = 1);
|
||||
|
||||
-- edi.imapConfig (Tiene más de 1 registro en producción)
|
||||
-- ALTER TABLE edi.imapConfig MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
-- ALTER TABLE edi.imapConfig ADD CONSTRAINT imapConfig_check CHECK (id = 1);
|
||||
|
||||
-- edi.offerRefreshConfig
|
||||
ALTER TABLE edi.offerRefreshConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE edi.offerRefreshConfig ADD CONSTRAINT offerRefreshConfig_check CHECK (id = 1);
|
|
@ -0,0 +1,27 @@
|
|||
-- hedera.config
|
||||
ALTER TABLE hedera.config MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
ALTER TABLE hedera.config ADD CONSTRAINT config_check CHECK (id = 1);
|
||||
|
||||
-- hedera.imageConfig
|
||||
ALTER TABLE hedera.imageConfig MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
ALTER TABLE hedera.imageConfig ADD CONSTRAINT imageConfig_check CHECK (id = 1);
|
||||
|
||||
-- hedera.mailConfig
|
||||
ALTER TABLE hedera.mailConfig MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
ALTER TABLE hedera.mailConfig ADD CONSTRAINT mailConfig_check CHECK (id = 1);
|
||||
|
||||
-- hedera.orderConfig
|
||||
ALTER TABLE hedera.orderConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE hedera.orderConfig ADD CONSTRAINT orderConfig_check CHECK (id = 1);
|
||||
|
||||
-- hedera.shelfConfig (Tiene más de 1 registro en producción)
|
||||
-- ALTER TABLE hedera.shelfConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
-- ALTER TABLE hedera.shelfConfig ADD CONSTRAINT shelfConfig_check CHECK (id = 1);
|
||||
|
||||
-- hedera.tpvConfig
|
||||
ALTER TABLE hedera.tpvConfig MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
ALTER TABLE hedera.tpvConfig ADD CONSTRAINT tpvConfig_check CHECK (id = 1);
|
||||
|
||||
-- hedera.tpvImapConfig
|
||||
ALTER TABLE hedera.tpvImapConfig MODIFY COLUMN id tinyint(3) unsigned NOT NULL;
|
||||
ALTER TABLE hedera.tpvImapConfig ADD CONSTRAINT tpvImapConfig_check CHECK (id = 1);
|
|
@ -0,0 +1,15 @@
|
|||
-- pbx.config
|
||||
ALTER TABLE pbx.config MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE pbx.config ADD CONSTRAINT config_check CHECK (id = 1);
|
||||
|
||||
-- pbx.followmeConfig
|
||||
ALTER TABLE pbx.followmeConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE pbx.followmeConfig ADD CONSTRAINT followmeConfig_check CHECK (id = 1);
|
||||
|
||||
-- pbx.queueConfig (Tiene más de 1 registro en producción)
|
||||
-- ALTER TABLE pbx.queueConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
-- ALTER TABLE pbx.queueConfig ADD CONSTRAINT queueConfig_check CHECK (id = 1);
|
||||
|
||||
-- pbx.sipConfig
|
||||
ALTER TABLE pbx.sipConfig MODIFY COLUMN id mediumint(8) unsigned NOT NULL;
|
||||
ALTER TABLE pbx.sipConfig ADD CONSTRAINT sipConfig_check CHECK (id = 1);
|
|
@ -0,0 +1,3 @@
|
|||
-- sage.config
|
||||
ALTER TABLE sage.config MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE sage.config ADD CONSTRAINT config_check CHECK (id = 1);
|
|
@ -0,0 +1,7 @@
|
|||
-- salix.accessTokenConfig
|
||||
ALTER TABLE salix.accessTokenConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE salix.accessTokenConfig ADD CONSTRAINT accessTokenConfig_check CHECK (id = 1);
|
||||
|
||||
-- salix.printConfig
|
||||
ALTER TABLE salix.printConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE salix.printConfig ADD CONSTRAINT printConfig_check CHECK (id = 1);
|
|
@ -0,0 +1,3 @@
|
|||
-- srt.config
|
||||
ALTER TABLE srt.config MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE srt.config ADD CONSTRAINT config_check CHECK (id = 1);
|
|
@ -0,0 +1,11 @@
|
|||
-- util.config
|
||||
ALTER TABLE util.config MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE util.config ADD CONSTRAINT config_check CHECK (id = 1);
|
||||
|
||||
-- util.notificationConfig
|
||||
ALTER TABLE util.notificationConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE util.notificationConfig ADD CONSTRAINT notificationConfig_check CHECK (id = 1);
|
||||
|
||||
-- util.versionConfig
|
||||
ALTER TABLE util.versionConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE util.versionConfig ADD CONSTRAINT versionConfig_check CHECK (id = 1);
|
|
@ -0,0 +1,87 @@
|
|||
-- vn.accountingConfig
|
||||
ALTER TABLE vn.accountingConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.accountingConfig ADD CONSTRAINT accountingConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.auctionConfig
|
||||
ALTER TABLE vn.auctionConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.auctionConfig ADD CONSTRAINT auctionConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.autoRadioConfig
|
||||
ALTER TABLE vn.autoRadioConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.autoRadioConfig ADD CONSTRAINT autoRadioConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.bankEntityConfig
|
||||
ALTER TABLE vn.bankEntityConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.bankEntityConfig ADD CONSTRAINT bankEntityConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.bionicConfig
|
||||
ALTER TABLE vn.bionicConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.bionicConfig ADD CONSTRAINT bionicConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.buyConfig
|
||||
ALTER TABLE vn.buyConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.buyConfig ADD CONSTRAINT buyConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.chatConfig
|
||||
ALTER TABLE vn.chatConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.chatConfig ADD CONSTRAINT chatConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.claimConfig
|
||||
ALTER TABLE vn.claimConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.claimConfig ADD CONSTRAINT claimConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.clientConfig
|
||||
ALTER TABLE vn.clientConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.clientConfig ADD CONSTRAINT clientConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.comparativeAddConfig
|
||||
ALTER TABLE vn.comparativeAddConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.comparativeAddConfig ADD CONSTRAINT comparativeAddConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.comparativeConfig
|
||||
ALTER TABLE vn.comparativeConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.comparativeConfig ADD CONSTRAINT comparativeConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.config
|
||||
ALTER TABLE vn.config MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.config ADD CONSTRAINT config_check CHECK (id = 1);
|
||||
|
||||
-- vn.conveyorConfig (Tiene más de 1 registro en producción)
|
||||
-- ALTER TABLE vn.conveyorConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
-- ALTER TABLE vn.conveyorConfig ADD CONSTRAINT conveyorConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.deviceProductionConfig
|
||||
ALTER TABLE vn.deviceProductionConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.deviceProductionConfig ADD CONSTRAINT deviceProductionConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.docuwareConfig
|
||||
ALTER TABLE vn.docuwareConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.docuwareConfig ADD CONSTRAINT docuwareConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.floramondoConfig
|
||||
ALTER TABLE vn.floramondoConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.floramondoConfig ADD CONSTRAINT floramondoConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.franceExpressConfig
|
||||
ALTER TABLE vn.franceExpressConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.franceExpressConfig ADD CONSTRAINT franceExpressConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.glsConfig
|
||||
ALTER TABLE vn.glsConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.glsConfig ADD CONSTRAINT glsConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.greugeConfig
|
||||
ALTER TABLE vn.greugeConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.greugeConfig ADD CONSTRAINT greugeConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.inventoryConfig
|
||||
ALTER TABLE vn.inventoryConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.inventoryConfig ADD CONSTRAINT inventoryConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.invoiceInConfig
|
||||
ALTER TABLE vn.invoiceInConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.invoiceInConfig ADD CONSTRAINT invoiceInConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.invoiceOutConfig
|
||||
ALTER TABLE vn.invoiceOutConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.invoiceOutConfig ADD CONSTRAINT invoiceOutConfig_check CHECK (id = 1);
|
|
@ -0,0 +1,91 @@
|
|||
-- vn.invoiceOutTaxConfig (Tiene más de 1 registro en producción)
|
||||
-- ALTER TABLE vn.invoiceOutTaxConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
-- ALTER TABLE vn.invoiceOutTaxConfig ADD CONSTRAINT invoiceOutTaxConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.itemConfig
|
||||
ALTER TABLE vn.itemConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.itemConfig ADD CONSTRAINT itemConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.machineWorkerConfig
|
||||
ALTER TABLE vn.machineWorkerConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.machineWorkerConfig ADD CONSTRAINT machineWorkerConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.mdbConfig
|
||||
ALTER TABLE vn.mdbConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.mdbConfig ADD CONSTRAINT mdbConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.mrwConfig
|
||||
ALTER TABLE vn.mrwConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.mrwConfig ADD CONSTRAINT mrwConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.osTicketConfig
|
||||
ALTER TABLE vn.osTicketConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.osTicketConfig ADD CONSTRAINT osTicketConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.packagingConfig
|
||||
ALTER TABLE vn.packagingConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.packagingConfig ADD CONSTRAINT packagingConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.packingSiteConfig
|
||||
ALTER TABLE vn.packingSiteConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.packingSiteConfig ADD CONSTRAINT packingSiteConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.productionConfig
|
||||
ALTER TABLE vn.productionConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.productionConfig ADD CONSTRAINT productionConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.rateConfig
|
||||
ALTER TABLE vn.rateConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.rateConfig ADD CONSTRAINT rateConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.routeConfig
|
||||
ALTER TABLE vn.routeConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.routeConfig ADD CONSTRAINT routeConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.salespersonConfig
|
||||
ALTER TABLE vn.salespersonConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.salespersonConfig ADD CONSTRAINT salespersonConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.sendingConfig
|
||||
ALTER TABLE vn.sendingConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.sendingConfig ADD CONSTRAINT sendingConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.smsConfig
|
||||
ALTER TABLE vn.smsConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.smsConfig ADD CONSTRAINT smsConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.ticketConfig
|
||||
ALTER TABLE vn.ticketConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.ticketConfig ADD CONSTRAINT ticketConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.tillConfig
|
||||
ALTER TABLE vn.tillConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.tillConfig ADD CONSTRAINT tillConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.travelConfig
|
||||
ALTER TABLE vn.travelConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.travelConfig ADD CONSTRAINT travelConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.viaexpressConfig
|
||||
ALTER TABLE vn.viaexpressConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.viaexpressConfig ADD CONSTRAINT viaexpressConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.wagonConfig
|
||||
ALTER TABLE vn.wagonConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.wagonConfig ADD CONSTRAINT wagonConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.workerConfig
|
||||
ALTER TABLE vn.workerConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.workerConfig ADD CONSTRAINT workerConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.workerTimeControlConfig
|
||||
ALTER TABLE vn.workerTimeControlConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.workerTimeControlConfig ADD CONSTRAINT workerTimeControlConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.zipConfig
|
||||
ALTER TABLE vn.zipConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.zipConfig ADD CONSTRAINT zipConfig_check CHECK (id = 1);
|
||||
|
||||
-- vn.zoneConfig
|
||||
ALTER TABLE vn.zoneConfig MODIFY COLUMN id int(10) unsigned NOT NULL;
|
||||
ALTER TABLE vn.zoneConfig ADD CONSTRAINT zoneConfig_check CHECK (id = 1);
|
|
@ -0,0 +1,12 @@
|
|||
CREATE TABLE floranet.`addressPostCode` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`addressFk` int(11) NOT NULL,
|
||||
`postCode` varchar(30) NOT NULL,
|
||||
`hoursInAdvance` int(10) unsigned NOT NULL DEFAULT 24,
|
||||
`dayOfWeek` int(10) unsigned NOT NULL,
|
||||
`deliveryCost` decimal(10,2) NOT NULL DEFAULT 0.00,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `addressPostCode_unique` (`postCode`,`addressFk`,`dayOfWeek`),
|
||||
KEY `addressPostCode_address_FK` (`addressFk`),
|
||||
CONSTRAINT `addressPostCode_address_FK` FOREIGN KEY (`addressFk`) REFERENCES `vn`.`address` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Client''s address registered for floranet network';
|
|
@ -0,0 +1,2 @@
|
|||
INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId)
|
||||
VALUES('Ticket', 'clone', 'WRITE', 'ALLOW', 'ROLE', 'administrative');
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE vn.professionalCategory DROP COLUMN dayBreak, DROP COLUMN `level`;
|
||||
ALTER TABLE vn.professionalCategory
|
||||
CHANGE name description varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL;
|
|
@ -0,0 +1,3 @@
|
|||
-- Place your SQL code here
|
||||
INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`)
|
||||
VALUES('SupplierDms', '*', '*', 'ALLOW', 'ROLE', 'employee');
|
|
@ -0,0 +1,10 @@
|
|||
ALTER TABLE vn.specialPrice MODIFY COLUMN clientFk int(11) NULL;
|
||||
ALTER TABLE vn.specialPrice ADD started date NOT NULL DEFAULT '2024-01-01';
|
||||
ALTER TABLE vn.specialPrice ADD ended date NULL;
|
||||
ALTER TABLE vn.specialPrice MODIFY COLUMN itemFk int(11) NOT NULL;
|
||||
ALTER TABLE vn.specialPrice MODIFY COLUMN value DECIMAL(10,2) NOT NULL;
|
||||
|
||||
|
||||
ALTER TABLE vn.`specialPrice`
|
||||
ADD CONSTRAINT `check_date_range`
|
||||
CHECK (`ended` IS NULL OR `ended` >= `started`);
|
|
@ -24,7 +24,7 @@ describe('Ticket descriptor path', () => {
|
|||
|
||||
it('should go back to the ticket index then search and access a ticket summary', async() => {
|
||||
await page.accessToSection('ticket.index');
|
||||
await page.accessToSearchResult('11');
|
||||
await page.accessToSearchResult('33');
|
||||
});
|
||||
|
||||
it('should add the ticket to thursday turn using the descriptor more menu', async() => {
|
||||
|
@ -33,7 +33,7 @@ describe('Ticket descriptor path', () => {
|
|||
await page.waitToClick(selectors.ticketDescriptor.thursdayButton);
|
||||
const message = await page.waitForSnackbar();
|
||||
|
||||
expect(message.text).toContain('Data saved!');
|
||||
expect(message.text).toContain('Current ticket deleted and added to shift');
|
||||
});
|
||||
|
||||
it('should again click on the Tickets button of the top bar menu', async() => {
|
||||
|
@ -43,7 +43,7 @@ describe('Ticket descriptor path', () => {
|
|||
await page.waitForState('ticket.index');
|
||||
});
|
||||
|
||||
it('should confirm the ticket 11 was added to thursday', async() => {
|
||||
it('should confirm the ticket 33 was added to thursday', async() => {
|
||||
await page.accessToSection('ticket.weekly.index');
|
||||
const result = await page.waitToGetProperty(selectors.ticketsIndex.thirdWeeklyTicket, 'value');
|
||||
|
||||
|
@ -57,8 +57,8 @@ describe('Ticket descriptor path', () => {
|
|||
await page.waitForState('ticket.index');
|
||||
});
|
||||
|
||||
it('should now search for the ticket 11', async() => {
|
||||
await page.accessToSearchResult('11');
|
||||
it('should now search for the ticket 33', async() => {
|
||||
await page.accessToSearchResult('33');
|
||||
await page.waitForState('ticket.card.summary');
|
||||
});
|
||||
|
||||
|
@ -68,7 +68,7 @@ describe('Ticket descriptor path', () => {
|
|||
await page.waitToClick(selectors.ticketDescriptor.saturdayButton);
|
||||
const message = await page.waitForSnackbar();
|
||||
|
||||
expect(message.text).toContain('Data saved!');
|
||||
expect(message.text).toContain('Current ticket deleted and added to shift');
|
||||
});
|
||||
|
||||
it('should click on the Tickets button of the top bar menu once again', async() => {
|
||||
|
@ -78,7 +78,7 @@ describe('Ticket descriptor path', () => {
|
|||
await page.waitForState('ticket.index');
|
||||
});
|
||||
|
||||
it('should confirm the ticket 11 was added on saturday', async() => {
|
||||
it('should confirm the ticket 33 was added on saturday', async() => {
|
||||
await page.accessToSection('ticket.weekly.index');
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
|
@ -87,14 +87,14 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual('Saturday');
|
||||
});
|
||||
|
||||
it('should now search for the weekly ticket 11', async() => {
|
||||
await page.doSearch('11');
|
||||
it('should now search for the weekly ticket 33', async() => {
|
||||
await page.doSearch('33');
|
||||
const nResults = await page.countElement(selectors.ticketsIndex.searchWeeklyResult);
|
||||
|
||||
expect(nResults).toEqual(2);
|
||||
});
|
||||
|
||||
it('should delete the weekly ticket 11', async() => {
|
||||
it('should delete the weekly ticket 33', async() => {
|
||||
await page.waitToClick(selectors.ticketsIndex.firstWeeklyTicketDeleteIcon);
|
||||
await page.waitToClick(selectors.ticketsIndex.acceptDeleteTurn);
|
||||
const message = await page.waitForSnackbar();
|
||||
|
|
|
@ -22,12 +22,4 @@ describe('Account Connections path', () => {
|
|||
|
||||
expect(firstResult).toContain(account);
|
||||
});
|
||||
|
||||
it('should kill this connection and then get redirected to the login page', async() => {
|
||||
await page.waitToClick(selectors.accountConnections.deleteFirstConnection);
|
||||
await page.waitToClick(selectors.globalItems.acceptButton);
|
||||
const message = await page.waitForSnackbar();
|
||||
|
||||
expect(message.text).toContain('Your session has expired, please login again');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -83,22 +83,27 @@ export default class Auth {
|
|||
}
|
||||
|
||||
onLoginOk(json, now, remember) {
|
||||
this.vnToken.set(json.data.token, now, json.data.ttl, remember);
|
||||
|
||||
return this.loadAcls().then(() => {
|
||||
let continueHash = this.$state.params.continue;
|
||||
if (continueHash)
|
||||
this.$window.location = continueHash;
|
||||
else
|
||||
this.$state.go('home');
|
||||
});
|
||||
return this.$http.get('VnUsers/ShareToken', {
|
||||
headers: {Authorization: json.data.token}
|
||||
}).then(({data}) => {
|
||||
this.vnToken.set(json.data.token, data.multimediaToken.id, now, json.data.ttl, remember);
|
||||
this.loadAcls().then(() => {
|
||||
let continueHash = this.$state.params.continue;
|
||||
if (continueHash)
|
||||
this.$window.location = continueHash;
|
||||
else
|
||||
this.$state.go('home');
|
||||
});
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
||||
logout() {
|
||||
this.$http.post('Accounts/logout', null, {headers: {'Authorization': this.vnToken.tokenMultimedia},
|
||||
}).catch(() => {});
|
||||
|
||||
let promise = this.$http.post('VnUsers/logout', null, {
|
||||
headers: {Authorization: this.vnToken.token}
|
||||
}).catch(() => {});
|
||||
|
||||
this.vnToken.unset();
|
||||
this.loggedIn = false;
|
||||
this.vnModules.reset();
|
||||
|
|
|
@ -14,7 +14,7 @@ class File {
|
|||
*/
|
||||
getPath(dmsUrl) {
|
||||
const serializedParams = this.$httpParamSerializer({
|
||||
access_token: this.vnToken.token
|
||||
access_token: this.vnToken.tokenMultimedia
|
||||
});
|
||||
|
||||
return `${dmsUrl}?${serializedParams}`;
|
||||
|
|
|
@ -19,7 +19,7 @@ function interceptor($q, vnApp, $translate) {
|
|||
|
||||
if (config.url.charAt(0) !== '/' && apiPath)
|
||||
config.url = `${apiPath}${config.url}`;
|
||||
if (token)
|
||||
if (token && !config.headers.Authorization)
|
||||
config.headers.Authorization = token;
|
||||
if ($translate.use())
|
||||
config.headers['Accept-Language'] = $translate.use();
|
||||
|
|
|
@ -15,7 +15,7 @@ class Report {
|
|||
*/
|
||||
show(path, params) {
|
||||
params = Object.assign({
|
||||
access_token: this.vnToken.token
|
||||
access_token: this.vnToken.tokenMultimedia
|
||||
}, params);
|
||||
const serializedParams = this.$httpParamSerializer(params);
|
||||
const query = serializedParams ? `?${serializedParams}` : '';
|
||||
|
|
|
@ -24,21 +24,22 @@ export default class Token {
|
|||
} catch (e) {}
|
||||
}
|
||||
|
||||
set(token, created, ttl, remember) {
|
||||
set(token, tokenMultimedia, created, ttl, remember) {
|
||||
this.unset();
|
||||
|
||||
Object.assign(this, {
|
||||
token,
|
||||
tokenMultimedia,
|
||||
created,
|
||||
ttl,
|
||||
remember
|
||||
});
|
||||
this.vnInterceptor.setToken(token);
|
||||
this.vnInterceptor.setToken(token, tokenMultimedia);
|
||||
try {
|
||||
if (remember)
|
||||
this.setStorage(localStorage, token, created, ttl);
|
||||
this.setStorage(localStorage, token, tokenMultimedia, created, ttl);
|
||||
else
|
||||
this.setStorage(sessionStorage, token, created, ttl);
|
||||
this.setStorage(sessionStorage, token, tokenMultimedia, created, ttl);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
|
@ -46,6 +47,7 @@ export default class Token {
|
|||
|
||||
unset() {
|
||||
this.token = null;
|
||||
this.tokenMultimedia = null;
|
||||
this.created = null;
|
||||
this.ttl = null;
|
||||
this.remember = null;
|
||||
|
@ -57,13 +59,15 @@ export default class Token {
|
|||
|
||||
getStorage(storage) {
|
||||
this.token = storage.getItem('vnToken');
|
||||
this.tokenMultimedia = storage.getItem('vnTokenMultimedia');
|
||||
if (!this.token) return;
|
||||
const created = storage.getItem('vnTokenCreated');
|
||||
this.created = created && new Date(created);
|
||||
this.ttl = storage.getItem('vnTokenTtl');
|
||||
}
|
||||
|
||||
setStorage(storage, token, created, ttl) {
|
||||
setStorage(storage, token, tokenMultimedia, created, ttl) {
|
||||
storage.setItem('vnTokenMultimedia', tokenMultimedia);
|
||||
storage.setItem('vnToken', token);
|
||||
storage.setItem('vnTokenCreated', created.toJSON());
|
||||
storage.setItem('vnTokenTtl', ttl);
|
||||
|
@ -71,6 +75,7 @@ export default class Token {
|
|||
|
||||
removeStorage(storage) {
|
||||
storage.removeItem('vnToken');
|
||||
storage.removeItem('vnTokenMultimedia');
|
||||
storage.removeItem('vnTokenCreated');
|
||||
storage.removeItem('vnTokenTtl');
|
||||
}
|
||||
|
|
|
@ -23,8 +23,7 @@ export class Layout extends Component {
|
|||
if (!this.$.$root.user) return;
|
||||
|
||||
const userId = this.$.$root.user.id;
|
||||
const token = this.vnToken.token;
|
||||
return `/api/Images/user/160x160/${userId}/download?access_token=${token}`;
|
||||
return `/api/Images/user/160x160/${userId}/download?access_token=${this.vnToken.tokenMultimedia}`;
|
||||
}
|
||||
|
||||
refresh() {
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
ng-click="$ctrl.showDescriptor($event, userLog)">
|
||||
<img
|
||||
ng-if="::userLog.user.image"
|
||||
ng-src="/api/Images/user/160x160/{{::userLog.userFk}}/download?access_token={{::$ctrl.vnToken.token}}">
|
||||
ng-src="/api/Images/user/160x160/{{::userLog.userFk}}/download?access_token={{::$ctrl.vnToken.tokenMultimedia}}">
|
||||
</img>
|
||||
</vn-avatar>
|
||||
</div>
|
||||
|
@ -181,7 +181,7 @@
|
|||
val="{{::nickname}}">
|
||||
<img
|
||||
ng-if="::image"
|
||||
ng-src="/api/Images/user/160x160/{{::id}}/download?access_token={{::$ctrl.vnToken.token}}">
|
||||
ng-src="/api/Images/user/160x160/{{::id}}/download?access_token={{::$ctrl.vnToken.tokenMultimedia}}">
|
||||
</img>
|
||||
</vn-avatar>
|
||||
<div>
|
||||
|
|
|
@ -13,7 +13,7 @@ export function run($window, $rootScope, vnAuth, vnApp, vnToken, $state) {
|
|||
if (!collection || !size || !id) return;
|
||||
|
||||
const basePath = `/api/Images/${collection}/${size}/${id}`;
|
||||
return `${basePath}/download?access_token=${vnToken.token}`;
|
||||
return `${basePath}/download?access_token=${vnToken.tokenMultimedia}`;
|
||||
};
|
||||
|
||||
$window.validations = {};
|
||||
|
|
|
@ -220,5 +220,7 @@
|
|||
"Shelving not valid": "Shelving not valid",
|
||||
"printerNotExists": "The printer does not exist",
|
||||
"There are not picking tickets": "There are not picking tickets",
|
||||
"ticketCommercial": "The ticket {{ ticket }} for the salesperson {{ salesMan }} is in preparation. (automatically generated message)"
|
||||
"ticketCommercial": "The ticket {{ ticket }} for the salesperson {{ salesMan }} is in preparation. (automatically generated message)",
|
||||
"This password can only be changed by the user themselves": "This password can only be changed by the user themselves",
|
||||
"They're not your subordinate": "They're not your subordinate"
|
||||
}
|
||||
|
|
|
@ -1,351 +1,353 @@
|
|||
{
|
||||
"Phone format is invalid": "El formato del teléfono no es correcto",
|
||||
"You are not allowed to change the credit": "No tienes privilegios para modificar el crédito",
|
||||
"Unable to mark the equivalence surcharge": "No se puede marcar el recargo de equivalencia",
|
||||
"The default consignee can not be unchecked": "No se puede desmarcar el consignatario predeterminado",
|
||||
"Unable to default a disabled consignee": "No se puede poner predeterminado un consignatario desactivado",
|
||||
"Can't be blank": "No puede estar en blanco",
|
||||
"Invalid TIN": "NIF/CIF inválido",
|
||||
"TIN must be unique": "El NIF/CIF debe ser único",
|
||||
"A client with that Web User name already exists": "Ya existe un cliente con ese Usuario Web",
|
||||
"Is invalid": "Es inválido",
|
||||
"Quantity cannot be zero": "La cantidad no puede ser cero",
|
||||
"Enter an integer different to zero": "Introduce un entero distinto de cero",
|
||||
"Package cannot be blank": "El embalaje no puede estar en blanco",
|
||||
"The company name must be unique": "La razón social debe ser única",
|
||||
"Invalid email": "Correo electrónico inválido",
|
||||
"The IBAN does not have the correct format": "El IBAN no tiene el formato correcto",
|
||||
"That payment method requires an IBAN": "El método de pago seleccionado requiere un IBAN",
|
||||
"That payment method requires a BIC": "El método de pago seleccionado requiere un BIC",
|
||||
"State cannot be blank": "El estado no puede estar en blanco",
|
||||
"Worker cannot be blank": "El trabajador no puede estar en blanco",
|
||||
"Cannot change the payment method if no salesperson": "No se puede cambiar la forma de pago si no hay comercial asignado",
|
||||
"can't be blank": "El campo no puede estar vacío",
|
||||
"Observation type must be unique": "El tipo de observación no puede repetirse",
|
||||
"The credit must be an integer greater than or equal to zero": "The credit must be an integer greater than or equal to zero",
|
||||
"The grade must be similar to the last one": "El grade debe ser similar al último",
|
||||
"Only manager can change the credit": "Solo el gerente puede cambiar el credito de este cliente",
|
||||
"Name cannot be blank": "El nombre no puede estar en blanco",
|
||||
"Phone cannot be blank": "El teléfono no puede estar en blanco",
|
||||
"Period cannot be blank": "El periodo no puede estar en blanco",
|
||||
"Choose a company": "Selecciona una empresa",
|
||||
"Se debe rellenar el campo de texto": "Se debe rellenar el campo de texto",
|
||||
"Description should have maximum of 45 characters": "La descripción debe tener maximo 45 caracteres",
|
||||
"Cannot be blank": "El campo no puede estar en blanco",
|
||||
"The grade must be an integer greater than or equal to zero": "El grade debe ser un entero mayor o igual a cero",
|
||||
"Sample type cannot be blank": "El tipo de plantilla no puede quedar en blanco",
|
||||
"Description cannot be blank": "Se debe rellenar el campo de texto",
|
||||
"The price of the item changed": "El precio del artículo cambió",
|
||||
"The value should not be greater than 100%": "El valor no debe de ser mayor de 100%",
|
||||
"The value should be a number": "El valor debe ser un numero",
|
||||
"This order is not editable": "Esta orden no se puede modificar",
|
||||
"You can't create an order for a frozen client": "No puedes crear una orden para un cliente congelado",
|
||||
"You can't create an order for a client that has a debt": "No puedes crear una orden para un cliente con deuda",
|
||||
"is not a valid date": "No es una fecha valida",
|
||||
"Barcode must be unique": "El código de barras debe ser único",
|
||||
"The warehouse can't be repeated": "El almacén no puede repetirse",
|
||||
"The tag or priority can't be repeated for an item": "El tag o prioridad no puede repetirse para un item",
|
||||
"The observation type can't be repeated": "El tipo de observación no puede repetirse",
|
||||
"A claim with that sale already exists": "Ya existe una reclamación para esta línea",
|
||||
"You don't have enough privileges to change that field": "No tienes permisos para cambiar ese campo",
|
||||
"Warehouse cannot be blank": "El almacén no puede quedar en blanco",
|
||||
"Agency cannot be blank": "La agencia no puede quedar en blanco",
|
||||
"Not enough privileges to edit a client with verified data": "No tienes permisos para hacer cambios en un cliente con datos comprobados",
|
||||
"This address doesn't exist": "Este consignatario no existe",
|
||||
"You must delete the claim id %d first": "Antes debes borrar la reclamación %d",
|
||||
"You don't have enough privileges": "No tienes suficientes permisos",
|
||||
"Cannot check Equalization Tax in this NIF/CIF": "No se puede marcar RE en este NIF/CIF",
|
||||
"You can't make changes on the basic data of an confirmed order or with rows": "No puedes cambiar los datos básicos de una orden con artículos",
|
||||
"INVALID_USER_NAME": "El nombre de usuario solo debe contener letras minúsculas o, a partir del segundo carácter, números o subguiones, no está permitido el uso de la letra ñ",
|
||||
"You can't create a ticket for a frozen client": "No puedes crear un ticket para un cliente congelado",
|
||||
"You can't create a ticket for an inactive client": "No puedes crear un ticket para un cliente inactivo",
|
||||
"Tag value cannot be blank": "El valor del tag no puede quedar en blanco",
|
||||
"ORDER_EMPTY": "Cesta vacía",
|
||||
"You don't have enough privileges to do that": "No tienes permisos para cambiar esto",
|
||||
"NO SE PUEDE DESACTIVAR EL CONSIGNAT": "NO SE PUEDE DESACTIVAR EL CONSIGNAT",
|
||||
"Error. El NIF/CIF está repetido": "Error. El NIF/CIF está repetido",
|
||||
"Street cannot be empty": "Dirección no puede estar en blanco",
|
||||
"City cannot be empty": "Ciudad no puede estar en blanco",
|
||||
"Code cannot be blank": "Código no puede estar en blanco",
|
||||
"You cannot remove this department": "No puedes eliminar este departamento",
|
||||
"The extension must be unique": "La extensión debe ser unica",
|
||||
"The secret can't be blank": "La contraseña no puede estar en blanco",
|
||||
"We weren't able to send this SMS": "No hemos podido enviar el SMS",
|
||||
"This client can't be invoiced": "Este cliente no puede ser facturado",
|
||||
"You must provide the correction information to generate a corrective invoice": "Debes informar la información de corrección para generar una factura rectificativa",
|
||||
"This ticket can't be invoiced": "Este ticket no puede ser facturado",
|
||||
"You cannot add or modify services to an invoiced ticket": "No puedes añadir o modificar servicios a un ticket facturado",
|
||||
"This ticket can not be modified": "Este ticket no puede ser modificado",
|
||||
"The introduced hour already exists": "Esta hora ya ha sido introducida",
|
||||
"INFINITE_LOOP": "Existe una dependencia entre dos Jefes",
|
||||
"The sales of the receiver ticket can't be modified": "Las lineas del ticket al que envias no pueden ser modificadas",
|
||||
"NO_AGENCY_AVAILABLE": "No hay una zona de reparto disponible con estos parámetros",
|
||||
"ERROR_PAST_SHIPMENT": "No puedes seleccionar una fecha de envío en pasado",
|
||||
"The current ticket can't be modified": "El ticket actual no puede ser modificado",
|
||||
"The current claim can't be modified": "La reclamación actual no puede ser modificada",
|
||||
"The sales of this ticket can't be modified": "Las lineas de este ticket no pueden ser modificadas",
|
||||
"The sales do not exists": "La(s) línea(s) seleccionada(s) no existe(n)",
|
||||
"Please select at least one sale": "Por favor selecciona al menos una linea",
|
||||
"All sales must belong to the same ticket": "Todas las lineas deben pertenecer al mismo ticket",
|
||||
"NO_ZONE_FOR_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada",
|
||||
"This item doesn't exists": "El artículo no existe",
|
||||
"NOT_ZONE_WITH_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada",
|
||||
"Extension format is invalid": "El formato de la extensión es inválido",
|
||||
"Invalid parameters to create a new ticket": "Parámetros inválidos para crear un nuevo ticket",
|
||||
"This item is not available": "Este artículo no está disponible",
|
||||
"This postcode already exists": "Este código postal ya existe",
|
||||
"Concept cannot be blank": "El concepto no puede quedar en blanco",
|
||||
"File doesn't exists": "El archivo no existe",
|
||||
"You don't have privileges to change the zone": "No tienes permisos para cambiar la zona o para esos parámetros hay más de una opción de envío, hable con las agencias",
|
||||
"This ticket is already on weekly tickets": "Este ticket ya está en tickets programados",
|
||||
"Ticket id cannot be blank": "El id de ticket no puede quedar en blanco",
|
||||
"Weekday cannot be blank": "El día de la semana no puede quedar en blanco",
|
||||
"You can't delete a confirmed order": "No puedes borrar un pedido confirmado",
|
||||
"The social name has an invalid format": "El nombre fiscal tiene un formato incorrecto",
|
||||
"Invalid quantity": "Cantidad invalida",
|
||||
"This postal code is not valid": "Este código postal no es válido",
|
||||
"is invalid": "es inválido",
|
||||
"The postcode doesn't exist. Please enter a correct one": "El código postal no existe. Por favor, introduce uno correcto",
|
||||
"The department name can't be repeated": "El nombre del departamento no puede repetirse",
|
||||
"This phone already exists": "Este teléfono ya existe",
|
||||
"You cannot move a parent to its own sons": "No puedes mover un elemento padre a uno de sus hijos",
|
||||
"You can't create a claim for a removed ticket": "No puedes crear una reclamación para un ticket eliminado",
|
||||
"You cannot delete a ticket that part of it is being prepared": "No puedes eliminar un ticket en el que una parte que está siendo preparada",
|
||||
"You must delete all the buy requests first": "Debes eliminar todas las peticiones de compra primero",
|
||||
"You should specify a date": "Debes especificar una fecha",
|
||||
"You should specify at least a start or end date": "Debes especificar al menos una fecha de inicio o de fin",
|
||||
"Start date should be lower than end date": "La fecha de inicio debe ser menor que la fecha de fin",
|
||||
"You should mark at least one week day": "Debes marcar al menos un día de la semana",
|
||||
"Swift / BIC can't be empty": "Swift / BIC no puede estar vacío",
|
||||
"Customs agent is required for a non UEE member": "El agente de aduanas es requerido para los clientes extracomunitarios",
|
||||
"Incoterms is required for a non UEE member": "El incoterms es requerido para los clientes extracomunitarios",
|
||||
"Deleted sales from ticket": "He eliminado las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}",
|
||||
"Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}",
|
||||
"Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||
"Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||
"Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})",
|
||||
"Changed sale quantity": "He cambiado la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}* del ticket [{{ticketId}}]({{{ticketUrl}}})",
|
||||
"State": "Estado",
|
||||
"regular": "normal",
|
||||
"reserved": "reservado",
|
||||
"Changed sale reserved state": "He cambiado el estado reservado de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||
"Bought units from buy request": "Se ha comprado {{quantity}} unidades de [{{itemId}} {{concept}}]({{{urlItem}}}) para el ticket id [{{ticketId}}]({{{url}}})",
|
||||
"Deny buy request": "Se ha rechazado la petición de compra para el ticket id [{{ticketId}}]({{{url}}}). Motivo: {{observation}}",
|
||||
"MESSAGE_INSURANCE_CHANGE": "He cambiado el crédito asegurado del cliente [{{clientName}} ({{clientId}})]({{{url}}}) a *{{credit}} €*",
|
||||
"Changed client paymethod": "He cambiado la forma de pago del cliente [{{clientName}} ({{clientId}})]({{{url}}})",
|
||||
"Sent units from ticket": "Envio *{{quantity}}* unidades de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenientes del ticket id [{{ticketId}}]({{{ticketUrl}}})",
|
||||
"Change quantity": "{{concept}} cambia de {{oldQuantity}} a {{newQuantity}}",
|
||||
"Claim will be picked": "Se recogerá el género de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}*",
|
||||
"Claim state has changed to": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *{{newState}}*",
|
||||
"Client checked as validated despite of duplication": "Cliente comprobado a pesar de que existe el cliente id {{clientId}}",
|
||||
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
|
||||
"Distance must be lesser than 4000": "La distancia debe ser inferior a 4000",
|
||||
"This ticket is deleted": "Este ticket está eliminado",
|
||||
"Unable to clone this travel": "No ha sido posible clonar este travel",
|
||||
"This thermograph id already exists": "La id del termógrafo ya existe",
|
||||
"Choose a date range or days forward": "Selecciona un rango de fechas o días en adelante",
|
||||
"ORDER_ALREADY_CONFIRMED": "ORDEN YA CONFIRMADA",
|
||||
"Invalid password": "Invalid password",
|
||||
"Password does not meet requirements": "La contraseña no cumple los requisitos",
|
||||
"Role already assigned": "Rol ya asignado",
|
||||
"Invalid role name": "Nombre de rol no válido",
|
||||
"Role name must be written in camelCase": "El nombre del rol debe escribirse en camelCase",
|
||||
"Email already exists": "El correo ya existe",
|
||||
"User already exists": "El/La usuario/a ya existe",
|
||||
"Absence change notification on the labour calendar": "Notificación de cambio de ausencia en el calendario laboral",
|
||||
"Record of hours week": "Registro de horas semana {{week}} año {{year}} ",
|
||||
"Created absence": "El empleado <strong>{{author}}</strong> ha añadido una ausencia de tipo '{{absenceType}}' a <a href='{{{workerUrl}}}'><strong>{{employee}}</strong></a> para el día {{dated}}.",
|
||||
"Deleted absence": "El empleado <strong>{{author}}</strong> ha eliminado una ausencia de tipo '{{absenceType}}' a <a href='{{{workerUrl}}}'><strong>{{employee}}</strong></a> del día {{dated}}.",
|
||||
"I have deleted the ticket id": "He eliminado el ticket id [{{id}}]({{{url}}})",
|
||||
"I have restored the ticket id": "He restaurado el ticket id [{{id}}]({{{url}}})",
|
||||
"You can only restore a ticket within the first hour after deletion": "Únicamente puedes restaurar el ticket dentro de la primera hora después de su eliminación",
|
||||
"Changed this data from the ticket": "He cambiado estos datos del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||
"agencyModeFk": "Agencia",
|
||||
"clientFk": "Cliente",
|
||||
"zoneFk": "Zona",
|
||||
"warehouseFk": "Almacén",
|
||||
"shipped": "F. envío",
|
||||
"landed": "F. entrega",
|
||||
"addressFk": "Consignatario",
|
||||
"companyFk": "Empresa",
|
||||
"The social name cannot be empty": "La razón social no puede quedar en blanco",
|
||||
"The nif cannot be empty": "El NIF no puede quedar en blanco",
|
||||
"You need to fill sage information before you check verified data": "Debes rellenar la información de sage antes de marcar datos comprobados",
|
||||
"ASSIGN_ZONE_FIRST": "Asigna una zona primero",
|
||||
"Amount cannot be zero": "El importe no puede ser cero",
|
||||
"Company has to be official": "Empresa inválida",
|
||||
"You can not select this payment method without a registered bankery account": "No se puede utilizar este método de pago si no has registrado una cuenta bancaria",
|
||||
"Action not allowed on the test environment": "Esta acción no está permitida en el entorno de pruebas",
|
||||
"The selected ticket is not suitable for this route": "El ticket seleccionado no es apto para esta ruta",
|
||||
"New ticket request has been created with price": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}* y un precio de *{{price}} €*",
|
||||
"New ticket request has been created": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}*",
|
||||
"Swift / BIC cannot be empty": "Swift / BIC no puede estar vacío",
|
||||
"This BIC already exist.": "Este BIC ya existe.",
|
||||
"That item doesn't exists": "Ese artículo no existe",
|
||||
"There's a new urgent ticket:": "Hay un nuevo ticket urgente:",
|
||||
"Invalid account": "Cuenta inválida",
|
||||
"Compensation account is empty": "La cuenta para compensar está vacia",
|
||||
"This genus already exist": "Este genus ya existe",
|
||||
"This specie already exist": "Esta especie ya existe",
|
||||
"Client assignment has changed": "He cambiado el comercial ~*\"<{{previousWorkerName}}>\"*~ por *\"<{{currentWorkerName}}>\"* del cliente [{{clientName}} ({{clientId}})]({{{url}}})",
|
||||
"None": "Ninguno",
|
||||
"The contract was not active during the selected date": "El contrato no estaba activo durante la fecha seleccionada",
|
||||
"Cannot add more than one '1/2 day vacation'": "No puedes añadir más de un 'Vacaciones 1/2 dia'",
|
||||
"This document already exists on this ticket": "Este documento ya existe en el ticket",
|
||||
"Some of the selected tickets are not billable": "Algunos de los tickets seleccionados no son facturables",
|
||||
"You can't invoice tickets from multiple clients": "No puedes facturar tickets de multiples clientes",
|
||||
"nickname": "nickname",
|
||||
"INACTIVE_PROVIDER": "Proveedor inactivo",
|
||||
"This client is not invoiceable": "Este cliente no es facturable",
|
||||
"serial non editable": "Esta serie no permite asignar la referencia",
|
||||
"Max shipped required": "La fecha límite es requerida",
|
||||
"Can't invoice to future": "No se puede facturar a futuro",
|
||||
"Can't invoice to past": "No se puede facturar a pasado",
|
||||
"This ticket is already invoiced": "Este ticket ya está facturado",
|
||||
"A ticket with an amount of zero can't be invoiced": "No se puede facturar un ticket con importe cero",
|
||||
"A ticket with a negative base can't be invoiced": "No se puede facturar un ticket con una base negativa",
|
||||
"Global invoicing failed": "[Facturación global] No se han podido facturar algunos clientes",
|
||||
"Wasn't able to invoice the following clients": "No se han podido facturar los siguientes clientes",
|
||||
"Can't verify data unless the client has a business type": "No se puede verificar datos de un cliente que no tiene tipo de negocio",
|
||||
"You don't have enough privileges to set this credit amount": "No tienes suficientes privilegios para establecer esta cantidad de crédito",
|
||||
"You can't change the credit set to zero from a financialBoss": "No puedes cambiar el cŕedito establecido a cero por un jefe de finanzas",
|
||||
"Amounts do not match": "Las cantidades no coinciden",
|
||||
"The PDF document does not exist": "El documento PDF no existe. Prueba a regenerarlo desde la opción 'Regenerar PDF factura'",
|
||||
"The type of business must be filled in basic data": "El tipo de negocio debe estar rellenado en datos básicos",
|
||||
"You can't create a claim from a ticket delivered more than seven days ago": "No puedes crear una reclamación de un ticket entregado hace más de siete días",
|
||||
"The worker has hours recorded that day": "El trabajador tiene horas fichadas ese día",
|
||||
"The worker has a marked absence that day": "El trabajador tiene marcada una ausencia ese día",
|
||||
"You can not modify is pay method checked": "No se puede modificar el campo método de pago validado",
|
||||
"The account size must be exactly 10 characters": "El tamaño de la cuenta debe ser exactamente de 10 caracteres",
|
||||
"Can't transfer claimed sales": "No puedes transferir lineas reclamadas",
|
||||
"You don't have privileges to create refund": "No tienes permisos para crear un abono",
|
||||
"The item is required": "El artículo es requerido",
|
||||
"The agency is already assigned to another autonomous": "La agencia ya está asignada a otro autónomo",
|
||||
"date in the future": "Fecha en el futuro",
|
||||
"reference duplicated": "Referencia duplicada",
|
||||
"This ticket is already a refund": "Este ticket ya es un abono",
|
||||
"isWithoutNegatives": "Sin negativos",
|
||||
"routeFk": "routeFk",
|
||||
"Can't change the password of another worker": "No se puede cambiar la contraseña de otro trabajador",
|
||||
"No hay un contrato en vigor": "No hay un contrato en vigor",
|
||||
"No se permite fichar a futuro": "No se permite fichar a futuro",
|
||||
"No está permitido trabajar": "No está permitido trabajar",
|
||||
"Fichadas impares": "Fichadas impares",
|
||||
"Descanso diario 12h.": "Descanso diario 12h.",
|
||||
"Descanso semanal 36h. / 72h.": "Descanso semanal 36h. / 72h.",
|
||||
"Dirección incorrecta": "Dirección incorrecta",
|
||||
"Modifiable user details only by an administrator": "Detalles de usuario modificables solo por un administrador",
|
||||
"Modifiable password only via recovery or by an administrator": "Contraseña modificable solo a través de la recuperación o por un administrador",
|
||||
"Not enough privileges to edit a client": "No tienes suficientes privilegios para editar un cliente",
|
||||
"This route does not exists": "Esta ruta no existe",
|
||||
"Claim pickup order sent": "Reclamación Orden de recogida enviada [{{claimId}}]({{{claimUrl}}}) al cliente *{{clientName}}*",
|
||||
"You don't have grant privilege": "No tienes privilegios para dar privilegios",
|
||||
"You don't own the role and you can't assign it to another user": "No eres el propietario del rol y no puedes asignarlo a otro usuario",
|
||||
"Ticket merged": "Ticket [{{originId}}]({{{originFullPath}}}) ({{{originDated}}}) fusionado con [{{destinationId}}]({{{destinationFullPath}}}) ({{{destinationDated}}})",
|
||||
"Already has this status": "Ya tiene este estado",
|
||||
"There aren't records for this week": "No existen registros para esta semana",
|
||||
"Empty data source": "Origen de datos vacio",
|
||||
"App locked": "Aplicación bloqueada por el usuario {{userId}}",
|
||||
"Email verify": "Correo de verificación",
|
||||
"Landing cannot be lesser than shipment": "Landing cannot be lesser than shipment",
|
||||
"Receipt's bank was not found": "No se encontró el banco del recibo",
|
||||
"This receipt was not compensated": "Este recibo no ha sido compensado",
|
||||
"Client's email was not found": "No se encontró el email del cliente",
|
||||
"Negative basis": "Base negativa",
|
||||
"This worker code already exists": "Este codigo de trabajador ya existe",
|
||||
"This personal mail already exists": "Este correo personal ya existe",
|
||||
"This worker already exists": "Este trabajador ya existe",
|
||||
"App name does not exist": "El nombre de aplicación no es válido",
|
||||
"Try again": "Vuelve a intentarlo",
|
||||
"Aplicación bloqueada por el usuario 9": "Aplicación bloqueada por el usuario 9",
|
||||
"Failed to upload delivery note": "Error al subir albarán {{id}}",
|
||||
"The DOCUWARE PDF document does not exists": "El documento PDF Docuware no existe",
|
||||
"It is not possible to modify tracked sales": "No es posible modificar líneas de pedido que se hayan empezado a preparar",
|
||||
"It is not possible to modify sales that their articles are from Floramondo": "No es posible modificar líneas de pedido cuyos artículos sean de Floramondo",
|
||||
"It is not possible to modify cloned sales": "No es posible modificar líneas de pedido clonadas",
|
||||
"A supplier with the same name already exists. Change the country.": "Un proveedor con el mismo nombre ya existe. Cambie el país.",
|
||||
"There is no assigned email for this client": "No hay correo asignado para este cliente",
|
||||
"Exists an invoice with a future date": "Existe una factura con fecha posterior",
|
||||
"Invoice date can't be less than max date": "La fecha de factura no puede ser inferior a la fecha límite",
|
||||
"Warehouse inventory not set": "El almacén inventario no está establecido",
|
||||
"This locker has already been assigned": "Esta taquilla ya ha sido asignada",
|
||||
"Tickets with associated refunds": "No se pueden borrar tickets con abonos asociados. Este ticket está asociado al abono Nº %d",
|
||||
"Not exist this branch": "La rama no existe",
|
||||
"This ticket cannot be signed because it has not been boxed": "Este ticket no puede firmarse porque no ha sido encajado",
|
||||
"Collection does not exist": "La colección no existe",
|
||||
"Cannot obtain exclusive lock": "No se puede obtener un bloqueo exclusivo",
|
||||
"Insert a date range": "Inserte un rango de fechas",
|
||||
"Added observation": "{{user}} añadió esta observacion: {{text}}",
|
||||
"Comment added to client": "Observación añadida al cliente {{clientFk}}",
|
||||
"Invalid auth code": "Código de verificación incorrecto",
|
||||
"Invalid or expired verification code": "Código de verificación incorrecto o expirado",
|
||||
"Cannot create a new claimBeginning from a different ticket": "No se puede crear una línea de reclamación de un ticket diferente al origen",
|
||||
"company": "Compañía",
|
||||
"country": "País",
|
||||
"clientId": "Id cliente",
|
||||
"clientSocialName": "Cliente",
|
||||
"amount": "Importe",
|
||||
"taxableBase": "Base",
|
||||
"ticketFk": "Id ticket",
|
||||
"isActive": "Activo",
|
||||
"hasToInvoice": "Facturar",
|
||||
"isTaxDataChecked": "Datos comprobados",
|
||||
"comercialId": "Id comercial",
|
||||
"comercialName": "Comercial",
|
||||
"Pass expired": "La contraseña ha caducado, cambiela desde Salix",
|
||||
"Invalid NIF for VIES": "Invalid NIF for VIES",
|
||||
"Ticket does not exist": "Este ticket no existe",
|
||||
"Ticket is already signed": "Este ticket ya ha sido firmado",
|
||||
"Authentication failed": "Autenticación fallida",
|
||||
"You can't use the same password": "No puedes usar la misma contraseña",
|
||||
"You can only add negative amounts in refund tickets": "Solo se puede añadir cantidades negativas en tickets abono",
|
||||
"Fecha fuera de rango": "Fecha fuera de rango",
|
||||
"Error while generating PDF": "Error al generar PDF",
|
||||
"Error when sending mail to client": "Error al enviar el correo al cliente",
|
||||
"Mail not sent": "Se ha producido un fallo al enviar la factura al cliente [{{clientId}}]({{{clientUrl}}}), por favor revisa la dirección de correo electrónico",
|
||||
"The renew period has not been exceeded": "El periodo de renovación no ha sido superado",
|
||||
"Valid priorities": "Prioridades válidas: %d",
|
||||
"hasAnyNegativeBase": "Base negativa para los tickets: {{ticketsIds}}",
|
||||
"hasAnyPositiveBase": "Base positivas para los tickets: {{ticketsIds}}",
|
||||
"You cannot assign an alias that you are not assigned to": "No puede asignar un alias que no tenga asignado",
|
||||
"This ticket cannot be left empty.": "Este ticket no se puede dejar vacío. %s",
|
||||
"The company has not informed the supplier account for bank transfers": "La empresa no tiene informado la cuenta de proveedor para transferencias bancarias",
|
||||
"You cannot assign/remove an alias that you are not assigned to": "No puede asignar/eliminar un alias que no tenga asignado",
|
||||
"This invoice has a linked vehicle.": "Esta factura tiene un vehiculo vinculado",
|
||||
"You don't have enough privileges.": "No tienes suficientes permisos.",
|
||||
"This ticket is locked": "Este ticket está bloqueado.",
|
||||
"This ticket is not editable.": "Este ticket no es editable.",
|
||||
"The ticket doesn't exist.": "No existe el ticket.",
|
||||
"Social name should be uppercase": "La razón social debe ir en mayúscula",
|
||||
"Street should be uppercase": "La dirección fiscal debe ir en mayúscula",
|
||||
"Ticket without Route": "Ticket sin ruta",
|
||||
"Select a different client": "Seleccione un cliente distinto",
|
||||
"Fill all the fields": "Rellene todos los campos",
|
||||
"The response is not a PDF": "La respuesta no es un PDF",
|
||||
"Booking completed": "Reserva completada",
|
||||
"The ticket is in preparation": "El ticket [{{ticketId}}]({{{ticketUrl}}}) del comercial {{salesPersonId}} está en preparación",
|
||||
"The notification subscription of this worker cant be modified": "La subscripción a la notificación de este trabajador no puede ser modificada",
|
||||
"User disabled": "Usuario desactivado",
|
||||
"The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mínima",
|
||||
"quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mínima",
|
||||
"Cannot past travels with entries": "No se pueden pasar envíos con entradas",
|
||||
"It was not able to remove the next expeditions:": "No se pudo eliminar las siguientes expediciones: {{expeditions}}",
|
||||
"This claim has been updated": "La reclamación con Id: {{claimId}}, ha sido actualizada",
|
||||
"This user does not have an assigned tablet": "Este usuario no tiene tablet asignada",
|
||||
"Field are invalid": "El campo '{{tag}}' no es válido",
|
||||
"Incorrect pin": "Pin incorrecto.",
|
||||
"You already have the mailAlias": "Ya tienes este alias de correo",
|
||||
"The alias cant be modified": "Este alias de correo no puede ser modificado",
|
||||
"No tickets to invoice": "No hay tickets para facturar",
|
||||
"this warehouse has not dms": "El Almacén no acepta documentos",
|
||||
"This ticket already has a cmr saved": "Este ticket ya tiene un cmr guardado",
|
||||
"Name should be uppercase": "El nombre debe ir en mayúscula",
|
||||
"Bank entity must be specified": "La entidad bancaria es obligatoria",
|
||||
"An email is necessary": "Es necesario un email",
|
||||
"You cannot update these fields": "No puedes actualizar estos campos",
|
||||
"CountryFK cannot be empty": "El país no puede estar vacío",
|
||||
"Cmr file does not exist": "El archivo del cmr no existe",
|
||||
"You are not allowed to modify the alias": "No estás autorizado a modificar el alias",
|
||||
"The address of the customer must have information about Incoterms and Customs Agent": "El consignatario del cliente debe tener informado Incoterms y Agente de aduanas",
|
||||
"The line could not be marked": "La linea no puede ser marcada"
|
||||
"Phone format is invalid": "El formato del teléfono no es correcto",
|
||||
"You are not allowed to change the credit": "No tienes privilegios para modificar el crédito",
|
||||
"Unable to mark the equivalence surcharge": "No se puede marcar el recargo de equivalencia",
|
||||
"The default consignee can not be unchecked": "No se puede desmarcar el consignatario predeterminado",
|
||||
"Unable to default a disabled consignee": "No se puede poner predeterminado un consignatario desactivado",
|
||||
"Can't be blank": "No puede estar en blanco",
|
||||
"Invalid TIN": "NIF/CIF inválido",
|
||||
"TIN must be unique": "El NIF/CIF debe ser único",
|
||||
"A client with that Web User name already exists": "Ya existe un cliente con ese Usuario Web",
|
||||
"Is invalid": "Es inválido",
|
||||
"Quantity cannot be zero": "La cantidad no puede ser cero",
|
||||
"Enter an integer different to zero": "Introduce un entero distinto de cero",
|
||||
"Package cannot be blank": "El embalaje no puede estar en blanco",
|
||||
"The company name must be unique": "La razón social debe ser única",
|
||||
"Invalid email": "Correo electrónico inválido",
|
||||
"The IBAN does not have the correct format": "El IBAN no tiene el formato correcto",
|
||||
"That payment method requires an IBAN": "El método de pago seleccionado requiere un IBAN",
|
||||
"That payment method requires a BIC": "El método de pago seleccionado requiere un BIC",
|
||||
"State cannot be blank": "El estado no puede estar en blanco",
|
||||
"Worker cannot be blank": "El trabajador no puede estar en blanco",
|
||||
"Cannot change the payment method if no salesperson": "No se puede cambiar la forma de pago si no hay comercial asignado",
|
||||
"can't be blank": "El campo no puede estar vacío",
|
||||
"Observation type must be unique": "El tipo de observación no puede repetirse",
|
||||
"The credit must be an integer greater than or equal to zero": "The credit must be an integer greater than or equal to zero",
|
||||
"The grade must be similar to the last one": "El grade debe ser similar al último",
|
||||
"Only manager can change the credit": "Solo el gerente puede cambiar el credito de este cliente",
|
||||
"Name cannot be blank": "El nombre no puede estar en blanco",
|
||||
"Phone cannot be blank": "El teléfono no puede estar en blanco",
|
||||
"Period cannot be blank": "El periodo no puede estar en blanco",
|
||||
"Choose a company": "Selecciona una empresa",
|
||||
"Se debe rellenar el campo de texto": "Se debe rellenar el campo de texto",
|
||||
"Description should have maximum of 45 characters": "La descripción debe tener maximo 45 caracteres",
|
||||
"Cannot be blank": "El campo no puede estar en blanco",
|
||||
"The grade must be an integer greater than or equal to zero": "El grade debe ser un entero mayor o igual a cero",
|
||||
"Sample type cannot be blank": "El tipo de plantilla no puede quedar en blanco",
|
||||
"Description cannot be blank": "Se debe rellenar el campo de texto",
|
||||
"The price of the item changed": "El precio del artículo cambió",
|
||||
"The value should not be greater than 100%": "El valor no debe de ser mayor de 100%",
|
||||
"The value should be a number": "El valor debe ser un numero",
|
||||
"This order is not editable": "Esta orden no se puede modificar",
|
||||
"You can't create an order for a frozen client": "No puedes crear una orden para un cliente congelado",
|
||||
"You can't create an order for a client that has a debt": "No puedes crear una orden para un cliente con deuda",
|
||||
"is not a valid date": "No es una fecha valida",
|
||||
"Barcode must be unique": "El código de barras debe ser único",
|
||||
"The warehouse can't be repeated": "El almacén no puede repetirse",
|
||||
"The tag or priority can't be repeated for an item": "El tag o prioridad no puede repetirse para un item",
|
||||
"The observation type can't be repeated": "El tipo de observación no puede repetirse",
|
||||
"A claim with that sale already exists": "Ya existe una reclamación para esta línea",
|
||||
"You don't have enough privileges to change that field": "No tienes permisos para cambiar ese campo",
|
||||
"Warehouse cannot be blank": "El almacén no puede quedar en blanco",
|
||||
"Agency cannot be blank": "La agencia no puede quedar en blanco",
|
||||
"Not enough privileges to edit a client with verified data": "No tienes permisos para hacer cambios en un cliente con datos comprobados",
|
||||
"This address doesn't exist": "Este consignatario no existe",
|
||||
"You must delete the claim id %d first": "Antes debes borrar la reclamación %d",
|
||||
"You don't have enough privileges": "No tienes suficientes permisos",
|
||||
"Cannot check Equalization Tax in this NIF/CIF": "No se puede marcar RE en este NIF/CIF",
|
||||
"You can't make changes on the basic data of an confirmed order or with rows": "No puedes cambiar los datos básicos de una orden con artículos",
|
||||
"INVALID_USER_NAME": "El nombre de usuario solo debe contener letras minúsculas o, a partir del segundo carácter, números o subguiones, no está permitido el uso de la letra ñ",
|
||||
"You can't create a ticket for a frozen client": "No puedes crear un ticket para un cliente congelado",
|
||||
"You can't create a ticket for an inactive client": "No puedes crear un ticket para un cliente inactivo",
|
||||
"Tag value cannot be blank": "El valor del tag no puede quedar en blanco",
|
||||
"ORDER_EMPTY": "Cesta vacía",
|
||||
"You don't have enough privileges to do that": "No tienes permisos para cambiar esto",
|
||||
"NO SE PUEDE DESACTIVAR EL CONSIGNAT": "NO SE PUEDE DESACTIVAR EL CONSIGNAT",
|
||||
"Error. El NIF/CIF está repetido": "Error. El NIF/CIF está repetido",
|
||||
"Street cannot be empty": "Dirección no puede estar en blanco",
|
||||
"City cannot be empty": "Ciudad no puede estar en blanco",
|
||||
"Code cannot be blank": "Código no puede estar en blanco",
|
||||
"You cannot remove this department": "No puedes eliminar este departamento",
|
||||
"The extension must be unique": "La extensión debe ser unica",
|
||||
"The secret can't be blank": "La contraseña no puede estar en blanco",
|
||||
"We weren't able to send this SMS": "No hemos podido enviar el SMS",
|
||||
"This client can't be invoiced": "Este cliente no puede ser facturado",
|
||||
"You must provide the correction information to generate a corrective invoice": "Debes informar la información de corrección para generar una factura rectificativa",
|
||||
"This ticket can't be invoiced": "Este ticket no puede ser facturado",
|
||||
"You cannot add or modify services to an invoiced ticket": "No puedes añadir o modificar servicios a un ticket facturado",
|
||||
"This ticket can not be modified": "Este ticket no puede ser modificado",
|
||||
"The introduced hour already exists": "Esta hora ya ha sido introducida",
|
||||
"INFINITE_LOOP": "Existe una dependencia entre dos Jefes",
|
||||
"The sales of the receiver ticket can't be modified": "Las lineas del ticket al que envias no pueden ser modificadas",
|
||||
"NO_AGENCY_AVAILABLE": "No hay una zona de reparto disponible con estos parámetros",
|
||||
"ERROR_PAST_SHIPMENT": "No puedes seleccionar una fecha de envío en pasado",
|
||||
"The current ticket can't be modified": "El ticket actual no puede ser modificado",
|
||||
"The current claim can't be modified": "La reclamación actual no puede ser modificada",
|
||||
"The sales of this ticket can't be modified": "Las lineas de este ticket no pueden ser modificadas",
|
||||
"The sales do not exists": "La(s) línea(s) seleccionada(s) no existe(n)",
|
||||
"Please select at least one sale": "Por favor selecciona al menos una linea",
|
||||
"All sales must belong to the same ticket": "Todas las lineas deben pertenecer al mismo ticket",
|
||||
"NO_ZONE_FOR_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada",
|
||||
"This item doesn't exists": "El artículo no existe",
|
||||
"NOT_ZONE_WITH_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada",
|
||||
"Extension format is invalid": "El formato de la extensión es inválido",
|
||||
"Invalid parameters to create a new ticket": "Parámetros inválidos para crear un nuevo ticket",
|
||||
"This item is not available": "Este artículo no está disponible",
|
||||
"This postcode already exists": "Este código postal ya existe",
|
||||
"Concept cannot be blank": "El concepto no puede quedar en blanco",
|
||||
"File doesn't exists": "El archivo no existe",
|
||||
"You don't have privileges to change the zone": "No tienes permisos para cambiar la zona o para esos parámetros hay más de una opción de envío, hable con las agencias",
|
||||
"This ticket is already on weekly tickets": "Este ticket ya está en tickets programados",
|
||||
"Ticket id cannot be blank": "El id de ticket no puede quedar en blanco",
|
||||
"Weekday cannot be blank": "El día de la semana no puede quedar en blanco",
|
||||
"You can't delete a confirmed order": "No puedes borrar un pedido confirmado",
|
||||
"The social name has an invalid format": "El nombre fiscal tiene un formato incorrecto",
|
||||
"Invalid quantity": "Cantidad invalida",
|
||||
"This postal code is not valid": "Este código postal no es válido",
|
||||
"is invalid": "es inválido",
|
||||
"The postcode doesn't exist. Please enter a correct one": "El código postal no existe. Por favor, introduce uno correcto",
|
||||
"The department name can't be repeated": "El nombre del departamento no puede repetirse",
|
||||
"This phone already exists": "Este teléfono ya existe",
|
||||
"You cannot move a parent to its own sons": "No puedes mover un elemento padre a uno de sus hijos",
|
||||
"You can't create a claim for a removed ticket": "No puedes crear una reclamación para un ticket eliminado",
|
||||
"You cannot delete a ticket that part of it is being prepared": "No puedes eliminar un ticket en el que una parte que está siendo preparada",
|
||||
"You must delete all the buy requests first": "Debes eliminar todas las peticiones de compra primero",
|
||||
"You should specify a date": "Debes especificar una fecha",
|
||||
"You should specify at least a start or end date": "Debes especificar al menos una fecha de inicio o de fin",
|
||||
"Start date should be lower than end date": "La fecha de inicio debe ser menor que la fecha de fin",
|
||||
"You should mark at least one week day": "Debes marcar al menos un día de la semana",
|
||||
"Swift / BIC can't be empty": "Swift / BIC no puede estar vacío",
|
||||
"Customs agent is required for a non UEE member": "El agente de aduanas es requerido para los clientes extracomunitarios",
|
||||
"Incoterms is required for a non UEE member": "El incoterms es requerido para los clientes extracomunitarios",
|
||||
"Deleted sales from ticket": "He eliminado las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}",
|
||||
"Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}",
|
||||
"Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||
"Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||
"Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})",
|
||||
"Changed sale quantity": "He cambiado la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}* del ticket [{{ticketId}}]({{{ticketUrl}}})",
|
||||
"State": "Estado",
|
||||
"regular": "normal",
|
||||
"reserved": "reservado",
|
||||
"Changed sale reserved state": "He cambiado el estado reservado de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||
"Bought units from buy request": "Se ha comprado {{quantity}} unidades de [{{itemId}} {{concept}}]({{{urlItem}}}) para el ticket id [{{ticketId}}]({{{url}}})",
|
||||
"Deny buy request": "Se ha rechazado la petición de compra para el ticket id [{{ticketId}}]({{{url}}}). Motivo: {{observation}}",
|
||||
"MESSAGE_INSURANCE_CHANGE": "He cambiado el crédito asegurado del cliente [{{clientName}} ({{clientId}})]({{{url}}}) a *{{credit}} €*",
|
||||
"Changed client paymethod": "He cambiado la forma de pago del cliente [{{clientName}} ({{clientId}})]({{{url}}})",
|
||||
"Sent units from ticket": "Envio *{{quantity}}* unidades de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenientes del ticket id [{{ticketId}}]({{{ticketUrl}}})",
|
||||
"Change quantity": "{{concept}} cambia de {{oldQuantity}} a {{newQuantity}}",
|
||||
"Claim will be picked": "Se recogerá el género de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}*",
|
||||
"Claim state has changed to": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *{{newState}}*",
|
||||
"Client checked as validated despite of duplication": "Cliente comprobado a pesar de que existe el cliente id {{clientId}}",
|
||||
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
|
||||
"Distance must be lesser than 4000": "La distancia debe ser inferior a 4000",
|
||||
"This ticket is deleted": "Este ticket está eliminado",
|
||||
"Unable to clone this travel": "No ha sido posible clonar este travel",
|
||||
"This thermograph id already exists": "La id del termógrafo ya existe",
|
||||
"Choose a date range or days forward": "Selecciona un rango de fechas o días en adelante",
|
||||
"ORDER_ALREADY_CONFIRMED": "ORDEN YA CONFIRMADA",
|
||||
"Invalid password": "Invalid password",
|
||||
"Password does not meet requirements": "La contraseña no cumple los requisitos",
|
||||
"Role already assigned": "Rol ya asignado",
|
||||
"Invalid role name": "Nombre de rol no válido",
|
||||
"Role name must be written in camelCase": "El nombre del rol debe escribirse en camelCase",
|
||||
"Email already exists": "El correo ya existe",
|
||||
"User already exists": "El/La usuario/a ya existe",
|
||||
"Absence change notification on the labour calendar": "Notificación de cambio de ausencia en el calendario laboral",
|
||||
"Record of hours week": "Registro de horas semana {{week}} año {{year}} ",
|
||||
"Created absence": "El empleado <strong>{{author}}</strong> ha añadido una ausencia de tipo '{{absenceType}}' a <a href='{{{workerUrl}}}'><strong>{{employee}}</strong></a> para el día {{dated}}.",
|
||||
"Deleted absence": "El empleado <strong>{{author}}</strong> ha eliminado una ausencia de tipo '{{absenceType}}' a <a href='{{{workerUrl}}}'><strong>{{employee}}</strong></a> del día {{dated}}.",
|
||||
"I have deleted the ticket id": "He eliminado el ticket id [{{id}}]({{{url}}})",
|
||||
"I have restored the ticket id": "He restaurado el ticket id [{{id}}]({{{url}}})",
|
||||
"You can only restore a ticket within the first hour after deletion": "Únicamente puedes restaurar el ticket dentro de la primera hora después de su eliminación",
|
||||
"Changed this data from the ticket": "He cambiado estos datos del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||
"agencyModeFk": "Agencia",
|
||||
"clientFk": "Cliente",
|
||||
"zoneFk": "Zona",
|
||||
"warehouseFk": "Almacén",
|
||||
"shipped": "F. envío",
|
||||
"landed": "F. entrega",
|
||||
"addressFk": "Consignatario",
|
||||
"companyFk": "Empresa",
|
||||
"The social name cannot be empty": "La razón social no puede quedar en blanco",
|
||||
"The nif cannot be empty": "El NIF no puede quedar en blanco",
|
||||
"You need to fill sage information before you check verified data": "Debes rellenar la información de sage antes de marcar datos comprobados",
|
||||
"ASSIGN_ZONE_FIRST": "Asigna una zona primero",
|
||||
"Amount cannot be zero": "El importe no puede ser cero",
|
||||
"Company has to be official": "Empresa inválida",
|
||||
"You can not select this payment method without a registered bankery account": "No se puede utilizar este método de pago si no has registrado una cuenta bancaria",
|
||||
"Action not allowed on the test environment": "Esta acción no está permitida en el entorno de pruebas",
|
||||
"The selected ticket is not suitable for this route": "El ticket seleccionado no es apto para esta ruta",
|
||||
"New ticket request has been created with price": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}* y un precio de *{{price}} €*",
|
||||
"New ticket request has been created": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}*",
|
||||
"Swift / BIC cannot be empty": "Swift / BIC no puede estar vacío",
|
||||
"This BIC already exist.": "Este BIC ya existe.",
|
||||
"That item doesn't exists": "Ese artículo no existe",
|
||||
"There's a new urgent ticket:": "Hay un nuevo ticket urgente:",
|
||||
"Invalid account": "Cuenta inválida",
|
||||
"Compensation account is empty": "La cuenta para compensar está vacia",
|
||||
"This genus already exist": "Este genus ya existe",
|
||||
"This specie already exist": "Esta especie ya existe",
|
||||
"Client assignment has changed": "He cambiado el comercial ~*\"<{{previousWorkerName}}>\"*~ por *\"<{{currentWorkerName}}>\"* del cliente [{{clientName}} ({{clientId}})]({{{url}}})",
|
||||
"None": "Ninguno",
|
||||
"The contract was not active during the selected date": "El contrato no estaba activo durante la fecha seleccionada",
|
||||
"Cannot add more than one '1/2 day vacation'": "No puedes añadir más de un 'Vacaciones 1/2 dia'",
|
||||
"This document already exists on this ticket": "Este documento ya existe en el ticket",
|
||||
"Some of the selected tickets are not billable": "Algunos de los tickets seleccionados no son facturables",
|
||||
"You can't invoice tickets from multiple clients": "No puedes facturar tickets de multiples clientes",
|
||||
"nickname": "nickname",
|
||||
"INACTIVE_PROVIDER": "Proveedor inactivo",
|
||||
"This client is not invoiceable": "Este cliente no es facturable",
|
||||
"serial non editable": "Esta serie no permite asignar la referencia",
|
||||
"Max shipped required": "La fecha límite es requerida",
|
||||
"Can't invoice to future": "No se puede facturar a futuro",
|
||||
"Can't invoice to past": "No se puede facturar a pasado",
|
||||
"This ticket is already invoiced": "Este ticket ya está facturado",
|
||||
"A ticket with an amount of zero can't be invoiced": "No se puede facturar un ticket con importe cero",
|
||||
"A ticket with a negative base can't be invoiced": "No se puede facturar un ticket con una base negativa",
|
||||
"Global invoicing failed": "[Facturación global] No se han podido facturar algunos clientes",
|
||||
"Wasn't able to invoice the following clients": "No se han podido facturar los siguientes clientes",
|
||||
"Can't verify data unless the client has a business type": "No se puede verificar datos de un cliente que no tiene tipo de negocio",
|
||||
"You don't have enough privileges to set this credit amount": "No tienes suficientes privilegios para establecer esta cantidad de crédito",
|
||||
"You can't change the credit set to zero from a financialBoss": "No puedes cambiar el cŕedito establecido a cero por un jefe de finanzas",
|
||||
"Amounts do not match": "Las cantidades no coinciden",
|
||||
"The PDF document does not exist": "El documento PDF no existe. Prueba a regenerarlo desde la opción 'Regenerar PDF factura'",
|
||||
"The type of business must be filled in basic data": "El tipo de negocio debe estar rellenado en datos básicos",
|
||||
"You can't create a claim from a ticket delivered more than seven days ago": "No puedes crear una reclamación de un ticket entregado hace más de siete días",
|
||||
"The worker has hours recorded that day": "El trabajador tiene horas fichadas ese día",
|
||||
"The worker has a marked absence that day": "El trabajador tiene marcada una ausencia ese día",
|
||||
"You can not modify is pay method checked": "No se puede modificar el campo método de pago validado",
|
||||
"The account size must be exactly 10 characters": "El tamaño de la cuenta debe ser exactamente de 10 caracteres",
|
||||
"Can't transfer claimed sales": "No puedes transferir lineas reclamadas",
|
||||
"You don't have privileges to create refund": "No tienes permisos para crear un abono",
|
||||
"The item is required": "El artículo es requerido",
|
||||
"The agency is already assigned to another autonomous": "La agencia ya está asignada a otro autónomo",
|
||||
"date in the future": "Fecha en el futuro",
|
||||
"reference duplicated": "Referencia duplicada",
|
||||
"This ticket is already a refund": "Este ticket ya es un abono",
|
||||
"isWithoutNegatives": "Sin negativos",
|
||||
"routeFk": "routeFk",
|
||||
"Can't change the password of another worker": "No se puede cambiar la contraseña de otro trabajador",
|
||||
"No hay un contrato en vigor": "No hay un contrato en vigor",
|
||||
"No se permite fichar a futuro": "No se permite fichar a futuro",
|
||||
"No está permitido trabajar": "No está permitido trabajar",
|
||||
"Fichadas impares": "Fichadas impares",
|
||||
"Descanso diario 12h.": "Descanso diario 12h.",
|
||||
"Descanso semanal 36h. / 72h.": "Descanso semanal 36h. / 72h.",
|
||||
"Dirección incorrecta": "Dirección incorrecta",
|
||||
"Modifiable user details only by an administrator": "Detalles de usuario modificables solo por un administrador",
|
||||
"Modifiable password only via recovery or by an administrator": "Contraseña modificable solo a través de la recuperación o por un administrador",
|
||||
"Not enough privileges to edit a client": "No tienes suficientes privilegios para editar un cliente",
|
||||
"This route does not exists": "Esta ruta no existe",
|
||||
"Claim pickup order sent": "Reclamación Orden de recogida enviada [{{claimId}}]({{{claimUrl}}}) al cliente *{{clientName}}*",
|
||||
"You don't have grant privilege": "No tienes privilegios para dar privilegios",
|
||||
"You don't own the role and you can't assign it to another user": "No eres el propietario del rol y no puedes asignarlo a otro usuario",
|
||||
"Ticket merged": "Ticket [{{originId}}]({{{originFullPath}}}) ({{{originDated}}}) fusionado con [{{destinationId}}]({{{destinationFullPath}}}) ({{{destinationDated}}})",
|
||||
"Already has this status": "Ya tiene este estado",
|
||||
"There aren't records for this week": "No existen registros para esta semana",
|
||||
"Empty data source": "Origen de datos vacio",
|
||||
"App locked": "Aplicación bloqueada por el usuario {{userId}}",
|
||||
"Email verify": "Correo de verificación",
|
||||
"Landing cannot be lesser than shipment": "Landing cannot be lesser than shipment",
|
||||
"Receipt's bank was not found": "No se encontró el banco del recibo",
|
||||
"This receipt was not compensated": "Este recibo no ha sido compensado",
|
||||
"Client's email was not found": "No se encontró el email del cliente",
|
||||
"Negative basis": "Base negativa",
|
||||
"This worker code already exists": "Este codigo de trabajador ya existe",
|
||||
"This personal mail already exists": "Este correo personal ya existe",
|
||||
"This worker already exists": "Este trabajador ya existe",
|
||||
"App name does not exist": "El nombre de aplicación no es válido",
|
||||
"Try again": "Vuelve a intentarlo",
|
||||
"Aplicación bloqueada por el usuario 9": "Aplicación bloqueada por el usuario 9",
|
||||
"Failed to upload delivery note": "Error al subir albarán {{id}}",
|
||||
"The DOCUWARE PDF document does not exists": "El documento PDF Docuware no existe",
|
||||
"It is not possible to modify tracked sales": "No es posible modificar líneas de pedido que se hayan empezado a preparar",
|
||||
"It is not possible to modify sales that their articles are from Floramondo": "No es posible modificar líneas de pedido cuyos artículos sean de Floramondo",
|
||||
"It is not possible to modify cloned sales": "No es posible modificar líneas de pedido clonadas",
|
||||
"A supplier with the same name already exists. Change the country.": "Un proveedor con el mismo nombre ya existe. Cambie el país.",
|
||||
"There is no assigned email for this client": "No hay correo asignado para este cliente",
|
||||
"Exists an invoice with a future date": "Existe una factura con fecha posterior",
|
||||
"Invoice date can't be less than max date": "La fecha de factura no puede ser inferior a la fecha límite",
|
||||
"Warehouse inventory not set": "El almacén inventario no está establecido",
|
||||
"This locker has already been assigned": "Esta taquilla ya ha sido asignada",
|
||||
"Tickets with associated refunds": "No se pueden borrar tickets con abonos asociados. Este ticket está asociado al abono Nº %d",
|
||||
"Not exist this branch": "La rama no existe",
|
||||
"This ticket cannot be signed because it has not been boxed": "Este ticket no puede firmarse porque no ha sido encajado",
|
||||
"Collection does not exist": "La colección no existe",
|
||||
"Cannot obtain exclusive lock": "No se puede obtener un bloqueo exclusivo",
|
||||
"Insert a date range": "Inserte un rango de fechas",
|
||||
"Added observation": "{{user}} añadió esta observacion: {{text}}",
|
||||
"Comment added to client": "Observación añadida al cliente {{clientFk}}",
|
||||
"Invalid auth code": "Código de verificación incorrecto",
|
||||
"Invalid or expired verification code": "Código de verificación incorrecto o expirado",
|
||||
"Cannot create a new claimBeginning from a different ticket": "No se puede crear una línea de reclamación de un ticket diferente al origen",
|
||||
"company": "Compañía",
|
||||
"country": "País",
|
||||
"clientId": "Id cliente",
|
||||
"clientSocialName": "Cliente",
|
||||
"amount": "Importe",
|
||||
"taxableBase": "Base",
|
||||
"ticketFk": "Id ticket",
|
||||
"isActive": "Activo",
|
||||
"hasToInvoice": "Facturar",
|
||||
"isTaxDataChecked": "Datos comprobados",
|
||||
"comercialId": "Id comercial",
|
||||
"comercialName": "Comercial",
|
||||
"Pass expired": "La contraseña ha caducado, cambiela desde Salix",
|
||||
"Invalid NIF for VIES": "Invalid NIF for VIES",
|
||||
"Ticket does not exist": "Este ticket no existe",
|
||||
"Ticket is already signed": "Este ticket ya ha sido firmado",
|
||||
"Authentication failed": "Autenticación fallida",
|
||||
"You can't use the same password": "No puedes usar la misma contraseña",
|
||||
"You can only add negative amounts in refund tickets": "Solo se puede añadir cantidades negativas en tickets abono",
|
||||
"Fecha fuera de rango": "Fecha fuera de rango",
|
||||
"Error while generating PDF": "Error al generar PDF",
|
||||
"Error when sending mail to client": "Error al enviar el correo al cliente",
|
||||
"Mail not sent": "Se ha producido un fallo al enviar la factura al cliente [{{clientId}}]({{{clientUrl}}}), por favor revisa la dirección de correo electrónico",
|
||||
"The renew period has not been exceeded": "El periodo de renovación no ha sido superado",
|
||||
"Valid priorities": "Prioridades válidas: %d",
|
||||
"hasAnyNegativeBase": "Base negativa para los tickets: {{ticketsIds}}",
|
||||
"hasAnyPositiveBase": "Base positivas para los tickets: {{ticketsIds}}",
|
||||
"You cannot assign an alias that you are not assigned to": "No puede asignar un alias que no tenga asignado",
|
||||
"This ticket cannot be left empty.": "Este ticket no se puede dejar vacío. %s",
|
||||
"The company has not informed the supplier account for bank transfers": "La empresa no tiene informado la cuenta de proveedor para transferencias bancarias",
|
||||
"You cannot assign/remove an alias that you are not assigned to": "No puede asignar/eliminar un alias que no tenga asignado",
|
||||
"This invoice has a linked vehicle.": "Esta factura tiene un vehiculo vinculado",
|
||||
"You don't have enough privileges.": "No tienes suficientes permisos.",
|
||||
"This ticket is locked": "Este ticket está bloqueado.",
|
||||
"This ticket is not editable.": "Este ticket no es editable.",
|
||||
"The ticket doesn't exist.": "No existe el ticket.",
|
||||
"Social name should be uppercase": "La razón social debe ir en mayúscula",
|
||||
"Street should be uppercase": "La dirección fiscal debe ir en mayúscula",
|
||||
"Ticket without Route": "Ticket sin ruta",
|
||||
"Select a different client": "Seleccione un cliente distinto",
|
||||
"Fill all the fields": "Rellene todos los campos",
|
||||
"The response is not a PDF": "La respuesta no es un PDF",
|
||||
"Booking completed": "Reserva completada",
|
||||
"The ticket is in preparation": "El ticket [{{ticketId}}]({{{ticketUrl}}}) del comercial {{salesPersonId}} está en preparación",
|
||||
"The notification subscription of this worker cant be modified": "La subscripción a la notificación de este trabajador no puede ser modificada",
|
||||
"User disabled": "Usuario desactivado",
|
||||
"The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mínima",
|
||||
"quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mínima",
|
||||
"Cannot past travels with entries": "No se pueden pasar envíos con entradas",
|
||||
"It was not able to remove the next expeditions:": "No se pudo eliminar las siguientes expediciones: {{expeditions}}",
|
||||
"This claim has been updated": "La reclamación con Id: {{claimId}}, ha sido actualizada",
|
||||
"This user does not have an assigned tablet": "Este usuario no tiene tablet asignada",
|
||||
"Field are invalid": "El campo '{{tag}}' no es válido",
|
||||
"Incorrect pin": "Pin incorrecto.",
|
||||
"You already have the mailAlias": "Ya tienes este alias de correo",
|
||||
"The alias cant be modified": "Este alias de correo no puede ser modificado",
|
||||
"No tickets to invoice": "No hay tickets para facturar",
|
||||
"this warehouse has not dms": "El Almacén no acepta documentos",
|
||||
"This ticket already has a cmr saved": "Este ticket ya tiene un cmr guardado",
|
||||
"Name should be uppercase": "El nombre debe ir en mayúscula",
|
||||
"Bank entity must be specified": "La entidad bancaria es obligatoria",
|
||||
"An email is necessary": "Es necesario un email",
|
||||
"You cannot update these fields": "No puedes actualizar estos campos",
|
||||
"CountryFK cannot be empty": "El país no puede estar vacío",
|
||||
"Cmr file does not exist": "El archivo del cmr no existe",
|
||||
"You are not allowed to modify the alias": "No estás autorizado a modificar el alias",
|
||||
"The address of the customer must have information about Incoterms and Customs Agent": "El consignatario del cliente debe tener informado Incoterms y Agente de aduanas",
|
||||
"The line could not be marked": "La linea no puede ser marcada",
|
||||
"This password can only be changed by the user themselves": "Esta contraseña solo puede ser modificada por el propio usuario",
|
||||
"They're not your subordinate": "No es tu subordinado/a."
|
||||
}
|
|
@ -15,7 +15,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: `/logout`,
|
||||
verb: 'POST'
|
||||
}
|
||||
},
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.logout = async ctx => Self.app.models.VnUser.logout(ctx.req.accessToken.id);
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
|
||||
const ForbiddenError = require('vn-loopback/util/forbiddenError');
|
||||
const {models} = require('vn-loopback/server/server');
|
||||
|
||||
module.exports = Self => {
|
||||
require('../methods/account/sync')(Self);
|
||||
require('../methods/account/sync-by-id')(Self);
|
||||
|
@ -7,4 +10,11 @@ module.exports = Self => {
|
|||
require('../methods/account/logout')(Self);
|
||||
require('../methods/account/change-password')(Self);
|
||||
require('../methods/account/set-password')(Self);
|
||||
|
||||
Self.setUnverifiedPassword = async(id, pass, options) => {
|
||||
const {emailVerified} = await models.VnUser.findById(id, {fields: ['emailVerified']}, options);
|
||||
if (emailVerified) throw new ForbiddenError('This password can only be changed by the user themselves');
|
||||
|
||||
await models.VnUser.setPassword(id, pass, options);
|
||||
};
|
||||
};
|
||||
|
|
|
@ -34,7 +34,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: '/:id/claim-pickup-pdf',
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.claimPickupPdf = (ctx, id) => Self.printReport(ctx, id, 'claim-pickup-order');
|
||||
|
|
|
@ -32,7 +32,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: `/:id/downloadFile`,
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.downloadFile = async function(ctx, id) {
|
||||
|
|
|
@ -45,7 +45,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: '/:id/campaign-metrics-pdf',
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.campaignMetricsPdf = (ctx, id) => Self.printReport(ctx, id, 'campaign-metrics');
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
<vn-td center shrink>
|
||||
<a ng-show="balance.hasPdf"
|
||||
target="_blank"
|
||||
href="api/InvoiceOuts/{{::balance.id}}/download?access_token={{::$ctrl.vnToken.token}}">
|
||||
href="api/InvoiceOuts/{{::balance.id}}/download?access_token={{::$ctrl.vnToken.tokenMultimedia}}">
|
||||
<vn-icon-button
|
||||
icon="cloud_download"
|
||||
title="{{'Download PDF' | translate}}">
|
||||
|
|
|
@ -33,7 +33,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: '/:id/entry-order-pdf',
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.entryOrderPdf = (ctx, id) => Self.printReport(ctx, id, 'entry-order');
|
||||
|
|
|
@ -31,7 +31,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: '/:id/download',
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.download = async function(ctx, id, options) {
|
||||
|
|
|
@ -31,7 +31,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: '/downloadZip',
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.downloadZip = async function(ctx, ids, options) {
|
||||
|
|
|
@ -34,7 +34,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: '/:reference/exportation-pdf',
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.exportationPdf = (ctx, reference) => Self.printReport(ctx, reference, 'exportation');
|
||||
|
|
|
@ -37,7 +37,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: '/:reference/invoice-csv',
|
||||
verb: 'GET'
|
||||
}
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
});
|
||||
|
||||
Self.invoiceCsv = async reference => {
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue