Merge branch 'dev' into 3351-ticket_step-two-two
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
commit
52cc927f85
|
@ -796,25 +796,25 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`)
|
||||||
('SER', 'Services'),
|
('SER', 'Services'),
|
||||||
('VT', 'Sales');
|
('VT', 'Sales');
|
||||||
|
|
||||||
INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenceFk`, `comment`, `relevancy`, `image`, `subName`, `minPrice`, `stars`, `family`)
|
INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenceFk`, `comment`, `relevancy`, `image`, `subName`, `minPrice`, `stars`, `family`, `isFloramondo`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT'),
|
(1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT', 0),
|
||||||
(2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT'),
|
(2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT', 0),
|
||||||
(3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT'),
|
(3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT', 0),
|
||||||
(4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT'),
|
(4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT', 0),
|
||||||
(5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT'),
|
(5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT', 0),
|
||||||
(6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT'),
|
(6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT', 0),
|
||||||
(7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT'),
|
(7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT', 0),
|
||||||
(8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT'),
|
(8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT', 0),
|
||||||
(9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT'),
|
(9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT', 0),
|
||||||
(10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT'),
|
(10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT', 0),
|
||||||
(11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT'),
|
(11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT', 0),
|
||||||
(12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT'),
|
(12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT', 0),
|
||||||
(13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT'),
|
(13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT', 1),
|
||||||
(14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT'),
|
(14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT', 1),
|
||||||
(15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'),
|
(15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0),
|
||||||
(16, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'),
|
(16, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0),
|
||||||
(71, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT');
|
(71, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT', 0);
|
||||||
|
|
||||||
-- Update the taxClass after insert of the items
|
-- Update the taxClass after insert of the items
|
||||||
UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2
|
UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2
|
||||||
|
|
|
@ -29,11 +29,11 @@ describe('Client create path', () => {
|
||||||
|
|
||||||
it('should receive an error when clicking the create button having name and Business name fields empty',
|
it('should receive an error when clicking the create button having name and Business name fields empty',
|
||||||
async() => {
|
async() => {
|
||||||
|
await page.autocompleteSearch(selectors.createClientView.salesPerson, 'salesPerson');
|
||||||
|
await page.autocompleteSearch(selectors.createClientView.businessType, 'florist');
|
||||||
await page.write(selectors.createClientView.taxNumber, '74451390E');
|
await page.write(selectors.createClientView.taxNumber, '74451390E');
|
||||||
await page.write(selectors.createClientView.userName, 'CaptainMarvel');
|
await page.write(selectors.createClientView.userName, 'CaptainMarvel');
|
||||||
await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
|
await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
|
||||||
await page.autocompleteSearch(selectors.createClientView.salesPerson, 'salesPerson');
|
|
||||||
await page.autocompleteSearch(selectors.createClientView.businessType, 'florist');
|
|
||||||
await page.waitToClick(selectors.createClientView.createButton);
|
await page.waitToClick(selectors.createClientView.createButton);
|
||||||
const message = await page.waitForSnackbar();
|
const message = await page.waitForSnackbar();
|
||||||
|
|
||||||
|
@ -83,7 +83,6 @@ describe('Client create path', () => {
|
||||||
expect(message.text).toContain('Some fields are invalid');
|
expect(message.text).toContain('Some fields are invalid');
|
||||||
});
|
});
|
||||||
|
|
||||||
/* Tarea #3370
|
|
||||||
it(`should attempt to create a new user with all it's data but wrong business type`, async() => {
|
it(`should attempt to create a new user with all it's data but wrong business type`, async() => {
|
||||||
await page.clearInput(selectors.createClientView.email);
|
await page.clearInput(selectors.createClientView.email);
|
||||||
await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
|
await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
|
||||||
|
@ -91,13 +90,10 @@ describe('Client create path', () => {
|
||||||
await page.waitToClick(selectors.createClientView.createButton);
|
await page.waitToClick(selectors.createClientView.createButton);
|
||||||
const message = await page.waitForSnackbar();
|
const message = await page.waitForSnackbar();
|
||||||
|
|
||||||
expect(message.text).toContain('Some fields are invalid');
|
expect(message.text).toContain('The type of business must be filled in basic data');
|
||||||
});*/
|
});
|
||||||
|
|
||||||
it(`should attempt to create a new user with all it's data but wrong postal code`, async() => {
|
it(`should attempt to create a new user with all it's data but wrong postal code`, async() => {
|
||||||
await page.clearInput(selectors.createClientView.email);
|
|
||||||
await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
|
|
||||||
|
|
||||||
await page.autocompleteSearch(selectors.createClientView.businessType, 'florist');
|
await page.autocompleteSearch(selectors.createClientView.businessType, 'florist');
|
||||||
await page.clearInput(selectors.createClientView.postcode);
|
await page.clearInput(selectors.createClientView.postcode);
|
||||||
await page.write(selectors.createClientView.postcode, '479999');
|
await page.write(selectors.createClientView.postcode, '479999');
|
||||||
|
|
|
@ -118,5 +118,6 @@
|
||||||
"reference duplicated": "reference duplicated",
|
"reference duplicated": "reference duplicated",
|
||||||
"The PDF document does not exists": "The PDF document does not exists. Try regenerating it from 'Regenerate invoice PDF' option",
|
"The PDF document does not exists": "The PDF document does not exists. Try regenerating it from 'Regenerate invoice PDF' option",
|
||||||
"This item is not available": "This item is not available",
|
"This item is not available": "This item is not available",
|
||||||
"Deny buy request": "Purchase request for ticket id [{{ticketId}}]({{{url}}}) has been rejected. Reason: {{observation}}"
|
"Deny buy request": "Purchase request for ticket id [{{ticketId}}]({{{url}}}) has been rejected. Reason: {{observation}}",
|
||||||
|
"The type of business must be filled in basic data": "The type of business must be filled in basic data"
|
||||||
}
|
}
|
|
@ -211,5 +211,6 @@
|
||||||
"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",
|
"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 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 manager": "No puedes cambiar el cŕedito establecido a cero por un gerente",
|
"You can't change the credit set to zero from a manager": "No puedes cambiar el cŕedito establecido a cero por un gerente",
|
||||||
"The PDF document does not exists": "El documento PDF no existe. Prueba a regenerarlo desde la opción 'Regenerar PDF factura'"
|
"The PDF document does not exists": "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"
|
||||||
}
|
}
|
|
@ -55,6 +55,15 @@ module.exports = Self => {
|
||||||
with: /^[\w|.|-]+@[\w|-]+(\.[\w|-]+)*(,[\w|.|-]+@[\w|-]+(\.[\w|-]+)*)*$/
|
with: /^[\w|.|-]+@[\w|-]+(\.[\w|-]+)*(,[\w|.|-]+@[\w|-]+(\.[\w|-]+)*)*$/
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Self.validate('businessTypeFk', hasBusinessType, {
|
||||||
|
message: `The type of business must be filled in basic data`
|
||||||
|
});
|
||||||
|
|
||||||
|
function hasBusinessType(err) {
|
||||||
|
if (!this.businessTypeFk)
|
||||||
|
err();
|
||||||
|
}
|
||||||
|
|
||||||
Self.validatesLengthOf('postcode', {
|
Self.validatesLengthOf('postcode', {
|
||||||
allowNull: true,
|
allowNull: true,
|
||||||
allowBlank: true,
|
allowBlank: true,
|
||||||
|
|
|
@ -8,3 +8,4 @@ You can save multiple emails: >-
|
||||||
Puede guardar varios correos electrónicos encadenándolos mediante comas
|
Puede guardar varios correos electrónicos encadenándolos mediante comas
|
||||||
sin espacios, ejemplo: user@dominio.com, user2@dominio.com siendo el primer
|
sin espacios, ejemplo: user@dominio.com, user2@dominio.com siendo el primer
|
||||||
correo electrónico el principal
|
correo electrónico el principal
|
||||||
|
The type of business must be filled in basic data: El tipo de negocio debe estar rellenado en datos básicos
|
||||||
|
|
|
@ -62,6 +62,11 @@ module.exports = Self => {
|
||||||
arg: 'landed',
|
arg: 'landed',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
description: 'The item last buy landed date',
|
description: 'The item last buy landed date',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arg: 'isFloramondo',
|
||||||
|
type: 'boolean',
|
||||||
|
description: 'Whether the the item is or not floramondo',
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
returns: {
|
returns: {
|
||||||
|
@ -104,13 +109,13 @@ module.exports = Self => {
|
||||||
? {or: [{'i.id': value}, codeWhere]}
|
? {or: [{'i.id': value}, codeWhere]}
|
||||||
: {or: [{'i.name': {like: `%${value}%`}}, codeWhere]};
|
: {or: [{'i.name': {like: `%${value}%`}}, codeWhere]};
|
||||||
case 'id':
|
case 'id':
|
||||||
return {'i.id': value};
|
|
||||||
case 'isActive':
|
case 'isActive':
|
||||||
return {'i.isActive': value};
|
case 'typeFk':
|
||||||
|
case 'isFloramondo':
|
||||||
|
param = `i.${param}`;
|
||||||
|
return {[param]: value};
|
||||||
case 'multiplier':
|
case 'multiplier':
|
||||||
return {'i.stemMultiplier': value};
|
return {'i.stemMultiplier': value};
|
||||||
case 'typeFk':
|
|
||||||
return {'i.typeFk': value};
|
|
||||||
case 'categoryFk':
|
case 'categoryFk':
|
||||||
return {'ic.id': value};
|
return {'ic.id': value};
|
||||||
case 'buyerFk':
|
case 'buyerFk':
|
||||||
|
@ -146,6 +151,7 @@ module.exports = Self => {
|
||||||
i.density,
|
i.density,
|
||||||
i.stemMultiplier,
|
i.stemMultiplier,
|
||||||
i.typeFk,
|
i.typeFk,
|
||||||
|
i.isFloramondo,
|
||||||
it.name AS typeName,
|
it.name AS typeName,
|
||||||
it.workerFk AS buyerFk,
|
it.workerFk AS buyerFk,
|
||||||
u.name AS userName,
|
u.name AS userName,
|
||||||
|
|
|
@ -60,4 +60,23 @@ describe('item filter()', () => {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should return 2 result filtering by isFloramondo checkbox', async() => {
|
||||||
|
const tx = await models.Item.beginTransaction({});
|
||||||
|
const options = {transaction: tx};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const filter = {};
|
||||||
|
const ctx = {args: {filter: filter, isFloramondo: true}};
|
||||||
|
const result = await models.Item.filter(ctx, filter, options);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(2);
|
||||||
|
expect(result[0].id).toEqual(13);
|
||||||
|
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -140,6 +140,9 @@
|
||||||
},
|
},
|
||||||
"isFragile": {
|
"isFragile": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"isFloramondo": {
|
||||||
|
"type": "boolean"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"relations": {
|
"relations": {
|
||||||
|
|
|
@ -1,16 +1,19 @@
|
||||||
<vn-crud-model
|
<vn-crud-model
|
||||||
vn-id="model"
|
vn-id="model"
|
||||||
url="Items/filter"
|
url="Items/filter"
|
||||||
|
user-params="::$ctrl.filterParams"
|
||||||
limit="12"
|
limit="12"
|
||||||
order="isActive DESC, name, id"
|
order="isActive DESC, name, id"
|
||||||
data="items">
|
data="items"
|
||||||
|
auto-load="true">
|
||||||
</vn-crud-model>
|
</vn-crud-model>
|
||||||
<vn-portal slot="topbar">
|
<vn-portal slot="topbar">
|
||||||
<vn-searchbar
|
<vn-searchbar
|
||||||
vn-focus
|
vn-focus
|
||||||
panel="vn-item-search-panel"
|
panel="vn-item-search-panel"
|
||||||
info="Search items by id, name or barcode"
|
info="Search items by id, name or barcode"
|
||||||
suggested-filter="{isActive: true}"
|
suggested-filter="$ctrl.filterParams"
|
||||||
|
filter="$ctrl.filterParams"
|
||||||
model="model">
|
model="model">
|
||||||
</vn-searchbar>
|
</vn-searchbar>
|
||||||
</vn-portal>
|
</vn-portal>
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
import ngModule from '../module';
|
import ngModule from '../module';
|
||||||
import ModuleMain from 'salix/components/module-main';
|
import ModuleMain from 'salix/components/module-main';
|
||||||
|
export default class Items extends ModuleMain {
|
||||||
|
constructor($element, $) {
|
||||||
|
super($element, $);
|
||||||
|
|
||||||
export default class Items extends ModuleMain {}
|
this.filterParams = {
|
||||||
|
isActive: true,
|
||||||
|
isFloramondo: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ngModule.vnComponent('vnItems', {
|
ngModule.vnComponent('vnItems', {
|
||||||
controller: Items,
|
controller: Items,
|
||||||
|
|
|
@ -153,6 +153,14 @@
|
||||||
tabindex="-1">
|
tabindex="-1">
|
||||||
</vn-icon-button>
|
</vn-icon-button>
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
|
<vn-horizontal>
|
||||||
|
<vn-check
|
||||||
|
vn-one
|
||||||
|
label="Floramondo"
|
||||||
|
ng-model="filter.isFloramondo"
|
||||||
|
triple-state="true">
|
||||||
|
</vn-check>
|
||||||
|
</vn-horizontal>
|
||||||
<vn-horizontal class="vn-mt-lg">
|
<vn-horizontal class="vn-mt-lg">
|
||||||
<vn-submit label="Search"></vn-submit>
|
<vn-submit label="Search"></vn-submit>
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
|
|
Loading…
Reference in New Issue