diff --git a/back/methods/chat/sendCheckingPresence.js b/back/methods/chat/sendCheckingPresence.js
index c1bc565eb2..fcde20130c 100644
--- a/back/methods/chat/sendCheckingPresence.js
+++ b/back/methods/chat/sendCheckingPresence.js
@@ -27,7 +27,7 @@ module.exports = Self => {
Self.sendCheckingPresence = async(ctx, recipientId, message, options) => {
if (!recipientId) return false;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/back/methods/dms/updateFile.js b/back/methods/dms/updateFile.js
index 161f4728c9..cfc4c322fc 100644
--- a/back/methods/dms/updateFile.js
+++ b/back/methods/dms/updateFile.js
@@ -60,7 +60,7 @@ module.exports = Self => {
const args = ctx.args;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/back/methods/dms/uploadFile.js b/back/methods/dms/uploadFile.js
index 6bda1e6db2..fb4b2e5b81 100644
--- a/back/methods/dms/uploadFile.js
+++ b/back/methods/dms/uploadFile.js
@@ -54,7 +54,7 @@ module.exports = Self => {
const args = ctx.args;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/back/methods/starred-module/getStarredModules.js b/back/methods/starred-module/getStarredModules.js
index 7b0f0e945d..5d399f16e1 100644
--- a/back/methods/starred-module/getStarredModules.js
+++ b/back/methods/starred-module/getStarredModules.js
@@ -16,7 +16,7 @@ module.exports = function(Self) {
const models = Self.app.models;
const userId = ctx.req.accessToken.userId;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/back/methods/starred-module/setPosition.js b/back/methods/starred-module/setPosition.js
index c72de10834..d993f18e92 100644
--- a/back/methods/starred-module/setPosition.js
+++ b/back/methods/starred-module/setPosition.js
@@ -31,7 +31,7 @@ module.exports = function(Self) {
const userId = ctx.req.accessToken.userId;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/back/methods/starred-module/toggleStarredModule.js b/back/methods/starred-module/toggleStarredModule.js
index 16e14740ba..9cc496f44a 100644
--- a/back/methods/starred-module/toggleStarredModule.js
+++ b/back/methods/starred-module/toggleStarredModule.js
@@ -23,7 +23,7 @@ module.exports = function(Self) {
const userId = ctx.req.accessToken.userId;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/db/changes/10370-pickles/00-item_getBalance.sql b/db/changes/10390-constitution/00-item_getBalance.sql
similarity index 97%
rename from db/changes/10370-pickles/00-item_getBalance.sql
rename to db/changes/10390-constitution/00-item_getBalance.sql
index 91e5c36815..90e3ee2bb2 100644
--- a/db/changes/10370-pickles/00-item_getBalance.sql
+++ b/db/changes/10390-constitution/00-item_getBalance.sql
@@ -1,9 +1,9 @@
-DROP PROCEDURE IF EXISTS vn.item_getBalance;
+DROP PROCEDURE IF EXISTS `vn`.`item_getBalance`;
DELIMITER $$
$$
CREATE
- definer = root@`%` procedure vn.item_getBalance(IN vItemId int, IN vWarehouse int)
+ definer = root@`%` procedure `vn`.`item_getBalance`(IN vItemId int, IN vWarehouse int)
BEGIN
DECLARE vDateInventory DATETIME;
DECLARE vCurdate DATE DEFAULT CURDATE();
diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql
index b467eedc04..3808e29b47 100644
--- a/db/dump/fixtures.sql
+++ b/db/dump/fixtures.sql
@@ -739,7 +739,7 @@ INSERT INTO `vn`.`itemType`(`id`, `code`, `name`, `categoryFk`, `warehouseFk`, `
(3, 'WPN', 'Paniculata', 2, 1, 31, 35, 0),
(4, 'PRT', 'Delivery ports', 3, 1, NULL, 35, 1),
(5, 'CON', 'Container', 3, 1, NULL, 35, 1),
- (6, 'ALS', 'Alstroemeria', 1, 1, 31, 35, 0);
+ (6, 'ALS', 'Alstroemeria', 1, 1, 31, 16, 0);
INSERT INTO `vn`.`ink`(`id`, `name`, `picture`, `showOrder`, `hex`)
VALUES
@@ -796,25 +796,25 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`)
('SER', 'Services'),
('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
- (1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT'),
- (2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT'),
- (3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT'),
- (4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT'),
- (5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT'),
- (6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT'),
- (7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT'),
- (8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT'),
- (9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT'),
- (10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT'),
- (11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT'),
- (12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT'),
- (13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT'),
- (14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT'),
- (15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'),
- (16, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'),
- (71, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, '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', 0),
+ (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', 0),
+ (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', 0),
+ (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', 0),
+ (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', 0),
+ (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', 0),
+ (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', 1),
+ (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', 0),
+ (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 `vn`.`itemTaxCountry` SET `taxClassFk` = 2
diff --git a/e2e/paths/02-client/01_create_client.spec.js b/e2e/paths/02-client/01_create_client.spec.js
index bde4203b47..ff2aac6b9f 100644
--- a/e2e/paths/02-client/01_create_client.spec.js
+++ b/e2e/paths/02-client/01_create_client.spec.js
@@ -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',
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.userName, 'CaptainMarvel');
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);
const message = await page.waitForSnackbar();
@@ -83,7 +83,6 @@ describe('Client create path', () => {
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() => {
await page.clearInput(selectors.createClientView.email);
await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
@@ -91,13 +90,10 @@ describe('Client create path', () => {
await page.waitToClick(selectors.createClientView.createButton);
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() => {
- await page.clearInput(selectors.createClientView.email);
- await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
-
await page.autocompleteSearch(selectors.createClientView.businessType, 'florist');
await page.clearInput(selectors.createClientView.postcode);
await page.write(selectors.createClientView.postcode, '479999');
diff --git a/front/core/components/calendar/style.scss b/front/core/components/calendar/style.scss
index aecc3eecbc..6a7995ea5f 100644
--- a/front/core/components/calendar/style.scss
+++ b/front/core/components/calendar/style.scss
@@ -86,12 +86,12 @@
align-items: center;
&.today {
- color: $color-font-bg;
+ color: $color-font;
& > .day-number {
border: 2px solid $color-font-link;
&:hover {
- background-color: lighten($color-font-link, 20%);
+ background-color: $color-marginal;
opacity: .8
}
}
diff --git a/front/core/components/chip/style.scss b/front/core/components/chip/style.scss
index d1632890c6..cc0554509d 100644
--- a/front/core/components/chip/style.scss
+++ b/front/core/components/chip/style.scss
@@ -50,7 +50,7 @@ vn-chip {
&.alert,
&.alert.clickable:hover,
&.alert.clickable:focus {
- background-color: $color-alert-medium;
+ background-color: lighten($color-alert, 5%);
}
&.message,
&.message.clickable:hover,
diff --git a/front/core/components/field/style.scss b/front/core/components/field/style.scss
index 5f77e904ee..399122b1d0 100644
--- a/front/core/components/field/style.scss
+++ b/front/core/components/field/style.scss
@@ -222,11 +222,11 @@
}
}
&.focused {
- background-color: $color-bg-panel;
+ background-color: $color-font-dark;
& > .container {
& > .infix > .control > * {
- color: $color-font;
+ color: $color-marginal;
&::placeholder {
color: $color-font-bg;
@@ -235,7 +235,7 @@
& > .prepend,
& > .append,
& > .icons {
- color: $color-font-bg-marginal;
+ color: $color-marginal;
}
}
}
diff --git a/front/core/components/smart-table/table.scss b/front/core/components/smart-table/table.scss
index e0464465ae..b38ca7d824 100644
--- a/front/core/components/smart-table/table.scss
+++ b/front/core/components/smart-table/table.scss
@@ -6,14 +6,14 @@ smart-table table {
border-collapse: collapse;
& > thead {
- border-bottom: 2px solid $color-spacer;
+ border-bottom: $border;
& > * > th {
font-weight: normal;
}
}
& > tfoot {
- border-top: 2px solid $color-spacer;
+ border-top: $border;
}
thead, tbody, tfoot {
& > * {
@@ -27,7 +27,7 @@ smart-table table {
& > th,
& > td {
text-align: left;
- padding: 9px 5px;
+ padding: 5px;
white-space: nowrap;
text-overflow: ellipsis;
@@ -67,7 +67,7 @@ smart-table table {
}
}
tbody > * {
- border-bottom: 1px solid $color-spacer-light;
+ border-bottom: $border-thin;
&:last-child {
border-bottom: none;
@@ -76,23 +76,26 @@ smart-table table {
.chip {
padding: 4px;
border-radius: 4px;
- color: $color-font-bg;
&.notice {
- background-color: $color-notice-medium
+ background-color: $color-notice-medium;
+ color: $color-font-bg;
}
&.success {
background-color: $color-success-medium;
+ color: $color-font-bg;
}
&.warning {
background-color: $color-main-medium;
+ color: $color-font-bg;
}
&.alert {
- background-color: $color-alert-medium;
+ background-color: lighten($color-alert, 5%);
+ color: $color-font-bg;
}
&.message {
+ background-color: $color-bg-dark;
color: $color-font-dark;
- background-color: $color-bg-dark
}
}
}
diff --git a/front/core/components/table/style.scss b/front/core/components/table/style.scss
index 2864ea8a1c..28d5a4f363 100644
--- a/front/core/components/table/style.scss
+++ b/front/core/components/table/style.scss
@@ -14,7 +14,7 @@ vn-table {
& > vn-thead,
& > thead {
display: table-header-group;
- border-bottom: 2px solid $color-spacer;
+ border-bottom: $border;
& > * > th {
font-weight: normal;
@@ -32,7 +32,7 @@ vn-table {
& > vn-tfoot,
& > .vn-tfoot,
& > tfoot {
- border-top: 2px solid $color-spacer;
+ border-top: $border;
display: table-footer-group
}
& > * > vn-tr,
@@ -119,7 +119,7 @@ vn-table {
vn-tbody > *,
.vn-tbody > *,
tbody > * {
- border-bottom: 1px solid $color-spacer-light;
+ border-bottom: $border-thin;
&:last-child {
border-bottom: none;
@@ -132,23 +132,26 @@ vn-table {
.chip {
padding: 4px;
border-radius: 4px;
- color: $color-font-bg;
&.notice {
- background-color: $color-notice-medium
+ background-color: $color-notice-medium;
+ color: $color-font-bg;
}
&.success {
background-color: $color-success-medium;
+ color: $color-font-bg;
}
&.warning {
background-color: $color-main-medium;
+ color: $color-font-bg;
}
&.alert {
- background-color: $color-alert-medium;
+ background-color: lighten($color-alert, 5%);
+ color: $color-font-bg;
}
&.message {
+ background-color: $color-bg-dark;
color: $color-font-dark;
- background-color: $color-bg-dark
}
}
vn-icon-menu {
@@ -194,8 +197,8 @@ vn-table.scrollable > .vn-table,
vn-thead vn-th,
thead vn-th,
thead th {
- border-bottom: 2px solid $color-spacer;
- background-color: #FFF;
+ border-bottom: $border;
+ background-color: $color-bg-panel;
position: sticky;
z-index: 9;
top: 0
diff --git a/front/core/directives/no-image-dark.png b/front/core/directives/no-image-dark.png
new file mode 100644
index 0000000000..2a20d7eb49
Binary files /dev/null and b/front/core/directives/no-image-dark.png differ
diff --git a/front/core/directives/on-error-src.js b/front/core/directives/on-error-src.js
index 094064aad1..5cad429743 100644
--- a/front/core/directives/on-error-src.js
+++ b/front/core/directives/on-error-src.js
@@ -1,5 +1,5 @@
import ngModule from '../module';
-import noImage from './no-image.png';
+import noImage from './no-image-dark.png';
/**
* Sets a default image when there is an error loading
diff --git a/front/core/styles/icons/salixfont.css b/front/core/styles/icons/salixfont.css
index d6466a0ebd..48dd91a826 100644
--- a/front/core/styles/icons/salixfont.css
+++ b/front/core/styles/icons/salixfont.css
@@ -23,30 +23,30 @@
-moz-osx-font-smoothing: grayscale;
}
-.icon-basketadd:before {
- content: "\e901";
+.icon-preserved:before {
+ content: "\e963";
}
-.icon-addperson:before {
- content: "\e955";
+.icon-treatments:before {
+ content: "\e964";
}
-.icon-supplierfalse:before {
+.icon-funeral:before {
+ content: "\e965";
+}
+.icon-handmadeArtificial:before {
+ content: "\e966";
+}
+.icon-fixedPrice:before {
content: "\e962";
}
-.icon-invoice-in-create:before {
- content: "\e948";
+.icon-accounts:before {
+ content: "\e95f";
}
-.icon-invoiceOut:before {
+.icon-clientConsumption:before {
content: "\e960";
}
-.icon-invoiceIn:before {
+.icon-lastBuy:before {
content: "\e961";
}
-.icon-supplier:before {
- content: "\e936";
-}
-.icon-latestBuy:before {
- content: "\e95f";
-}
.icon-zone:before {
content: "\e95d";
}
@@ -86,6 +86,9 @@
.icon-deliveryprices:before {
content: "\e956";
}
+.icon-basketadd:before {
+ content: "\e955";
+}
.icon-catalog:before {
content: "\e952";
}
@@ -128,9 +131,15 @@
.icon-actions:before {
content: "\e900";
}
+.icon-addperson:before {
+ content: "\e901";
+}
.icon-albaran:before {
content: "\e902";
}
+.icon-apps:before {
+ content: "\e948";
+}
.icon-artificial:before {
content: "\e903";
}
@@ -239,6 +248,9 @@
.icon-mandatory:before {
content: "\e921";
}
+.icon-niche:before {
+ content: "\e922";
+}
.icon-no036:before {
content: "\e923";
}
@@ -302,6 +314,9 @@
.icon-stowaway:before {
content: "\e92c";
}
+.icon-supplier:before {
+ content: "\e936";
+}
.icon-tags:before {
content: "\e937";
}
diff --git a/front/core/styles/icons/salixfont.svg b/front/core/styles/icons/salixfont.svg
index 7ff0f037d9..42129b284d 100644
--- a/front/core/styles/icons/salixfont.svg
+++ b/front/core/styles/icons/salixfont.svg
@@ -10,16 +10,16 @@
-
+
-
+
-
+
@@ -29,7 +29,7 @@
-
+
@@ -41,6 +41,7 @@
+
@@ -49,7 +50,7 @@
-
+
@@ -66,7 +67,7 @@
-
+
@@ -104,6 +105,11 @@
+
+
+
+
+
diff --git a/front/core/styles/icons/salixfont.ttf b/front/core/styles/icons/salixfont.ttf
index 106994f836..f0e5ad0474 100644
Binary files a/front/core/styles/icons/salixfont.ttf and b/front/core/styles/icons/salixfont.ttf differ
diff --git a/front/core/styles/icons/salixfont.woff b/front/core/styles/icons/salixfont.woff
index d2491a5380..1cf4179ac1 100644
Binary files a/front/core/styles/icons/salixfont.woff and b/front/core/styles/icons/salixfont.woff differ
diff --git a/front/core/styles/variables.scss b/front/core/styles/variables.scss
index 8883c54802..c79a8590fb 100644
--- a/front/core/styles/variables.scss
+++ b/front/core/styles/variables.scss
@@ -1,6 +1,6 @@
@import "./util";
-$font-size: 12pt;
+$font-size: 11pt;
$menu-width: 256px;
$topbar-height: 56px;
$mobile-width: 800px;
@@ -24,7 +24,7 @@ $spacing-xl: 70px;
// Light theme
-$color-primary: #f7931e;
+/* $color-primary: #f7931e;
$color-secondary: $color-primary;
$color-font: #222;
@@ -72,52 +72,65 @@ $color-success-light: lighten($color-success, 35%);
$color-notice-medium: lighten($color-notice, 20%);
$color-notice-light: lighten($color-notice, 35%);
$color-alert-medium: lighten($color-alert, 20%);
-$color-alert-light: lighten($color-alert, 35%);
+$color-alert-light: lighten($color-alert, 35%); */
/**/
// Dark theme
-/*
-$color-header: #3d3d3d;
-$color-bg: #222;
-$color-bg-dark: #222;
+$color-primary: #ec8916;
+$color-secondary: $color-primary;
+
$color-font: #eee;
$color-font-light: #aaa;
$color-font-secondary: #777;
$color-font-dark: white;
+$color-font-link: #66bfff;
$color-font-bg: rgba(0, 0, 0, .8);
-$color-font-link: #005a9a;
+$color-font-bg-marginal: rgba(255, 255, 255, .4);
+$color-font-bg-dark: rgba(255, 255, 255, .7);
+$color-font-bg-dark-marginal: rgba(255, 255, 255, .4);
+
+$color-header: #3d3d3d;
+$color-menu-header: #3d3d3d;
+$color-bg: #222;
+$color-bg-dark: #222;
$color-active: #666;
$color-active-font: white;
$color-bg-panel: #3c3b3b;
-$color-main: #f7931e;
-$color-marginal: #ccc;
+$color-main: $color-primary;
+$color-marginal: #222;
$color-success: #a3d131;
$color-notice: #32b1ce;
-$color-alert: #f42121;
+$color-alert: #fa3939;
+$color-button: $color-secondary;
$color-spacer: rgba(255, 255, 255, .3);
$color-spacer-light: rgba(255, 255, 255, .12);
$color-input-underline: rgba(255, 255, 255, .12);
$color-input-underline-hover: rgba(255, 255, 255, .6);
$color-shadow: rgba(0, 0, 0, .2);
+$color-border: rgba(0, 0, 0, .3);
$color-hightlight: rgba(255, 255, 255, .15);
$color-hover-cd: rgba(255, 255, 255, .1);
$color-hover-dc: .7;
$color-disabled: .6;
-$color-font-link: lighten($color-main, 10%);
-$color-main-medium: darken($color-main, 20%);
-$color-main-light: darken($color-main, 35%);
-$color-success-medium: darken($color-success, 20%);
-$color-success-light: darken($color-success, 35%);
-$color-notice-medium: darken($color-notice, 20%);
-$color-notice-light: darken($color-notice, 35%);
-$color-alert-medium: darken($color-alert, 20%);
-$color-alert-light: darken($color-alert, 35%);
+$color-primary-medium: lighten($color-primary, 20%);
+$color-primary-light: lighten($color-primary, 35%);
+$color-font-link-medium: lighten($color-font-link, 20%);
+$color-font-link-light: lighten($color-font-link, 35%);
+$color-main-medium: lighten($color-main, 20%);
+$color-main-light: lighten($color-main, 35%);
+$color-success-medium: lighten($color-success, 20%);
+$color-success-light: lighten($color-success, 35%);
+$color-notice-medium: lighten($color-notice, 20%);
+$color-notice-light: lighten($color-notice, 35%);
+$color-alert-medium: lighten($color-alert, 20%);
+$color-alert-light: lighten($color-alert, 35%);
/**/
// Border
-$border-thin: 1px solid $color-spacer;
+$border-thin: 1px solid $color-border;
$border-thin-light: 1px solid $color-spacer-light;
+$border: 2px solid $color-border;
$shadow: 0 2px 2px 0 rgba(0, 0, 0, .3);
diff --git a/front/salix/components/summary/style.scss b/front/salix/components/summary/style.scss
index 99854fa9d6..6f93a61bfe 100644
--- a/front/salix/components/summary/style.scss
+++ b/front/salix/components/summary/style.scss
@@ -65,11 +65,10 @@ ui-view > .vn-summary {
text-transform: uppercase;
font-size: 1.25rem;
line-height: 1;
- padding: 7px;
- padding-bottom: 4px; /* Bottom line-height fix */
+ padding: 7px 0;
+ padding-bottom: 5px; /* Bottom line-height fix */
font-weight: lighter;
- background-color: $color-main-light;
- border-bottom: 1px solid $color-main;
+ border-bottom: 2px solid $color-main;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@@ -78,7 +77,7 @@ ui-view > .vn-summary {
display: block;
}
a {
- color: $color-font;
+ color: $color-font-link;
}
}
h4 span:after {
@@ -87,7 +86,7 @@ ui-view > .vn-summary {
position: absolute;
right: 5px;
text-transform: none;
- color: $color-spacer
+ color: $color-font-link;
}
& > * {
margin: $spacing-sm;
diff --git a/front/salix/styles/misc.scss b/front/salix/styles/misc.scss
index 55de5eb0c2..02bfd9f175 100644
--- a/front/salix/styles/misc.scss
+++ b/front/salix/styles/misc.scss
@@ -60,7 +60,7 @@ vn-bg-title {
font-size: 1.25rem;
}
.totalBox {
- border: 1px solid #CCC;
+ border: $border-thin;
text-align: right;
justify-content: center;
align-items: center;
diff --git a/loopback/locale/en.json b/loopback/locale/en.json
index 271c3fd4f2..15c65fd89a 100644
--- a/loopback/locale/en.json
+++ b/loopback/locale/en.json
@@ -118,5 +118,6 @@
"reference duplicated": "reference duplicated",
"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",
- "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"
}
\ No newline at end of file
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index 8d5c69cb46..bb4f357dfe 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -133,7 +133,7 @@
"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}}",
+ "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}}})",
@@ -211,6 +211,7 @@
"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 manager": "No puedes cambiar el cŕedito establecido a cero por un gerente",
- "Amounts do not match": "Amounts do not match",
- "The PDF document does not exists": "El documento PDF no existe. Prueba a regenerarlo desde la opción 'Regenerar PDF factura'"
+ "Amounts do not match": "Las cantidades no coinciden",
+ "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"
}
\ No newline at end of file
diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js
index 0e358678ea..de812417a0 100644
--- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js
+++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js
@@ -63,7 +63,7 @@ module.exports = Self => {
};
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/claim/back/methods/claim-dms/removeFile.js b/modules/claim/back/methods/claim-dms/removeFile.js
index 310d2b941e..edc714235f 100644
--- a/modules/claim/back/methods/claim-dms/removeFile.js
+++ b/modules/claim/back/methods/claim-dms/removeFile.js
@@ -20,7 +20,7 @@ module.exports = Self => {
Self.removeFile = async(ctx, id, options) => {
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/claim/back/methods/claim-end/importTicketSales.js b/modules/claim/back/methods/claim-end/importTicketSales.js
index 106313f142..6dd64be363 100644
--- a/modules/claim/back/methods/claim-end/importTicketSales.js
+++ b/modules/claim/back/methods/claim-end/importTicketSales.js
@@ -22,7 +22,7 @@ module.exports = Self => {
let userId = ctx.req.accessToken.userId;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/claim/back/methods/claim/regularizeClaim.js b/modules/claim/back/methods/claim/regularizeClaim.js
index 2106ab2108..d1fe7c13ef 100644
--- a/modules/claim/back/methods/claim/regularizeClaim.js
+++ b/modules/claim/back/methods/claim/regularizeClaim.js
@@ -24,7 +24,7 @@ module.exports = Self => {
const resolvedState = 3;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/claim/back/methods/claim/updateClaim.js b/modules/claim/back/methods/claim/updateClaim.js
index 68df9481c6..a646db3556 100644
--- a/modules/claim/back/methods/claim/updateClaim.js
+++ b/modules/claim/back/methods/claim/updateClaim.js
@@ -44,7 +44,7 @@ module.exports = Self => {
const userId = ctx.req.accessToken.userId;
const args = ctx.args;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/claim/back/methods/claim/updateClaimAction.js b/modules/claim/back/methods/claim/updateClaimAction.js
index 12749fb6ba..23d1d417da 100644
--- a/modules/claim/back/methods/claim/updateClaimAction.js
+++ b/modules/claim/back/methods/claim/updateClaimAction.js
@@ -30,7 +30,7 @@ module.exports = Self => {
Self.updateClaimAction = async(ctx, id, options) => {
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/claim/back/methods/claim/uploadFile.js b/modules/claim/back/methods/claim/uploadFile.js
index daab9341af..81ad402198 100644
--- a/modules/claim/back/methods/claim/uploadFile.js
+++ b/modules/claim/back/methods/claim/uploadFile.js
@@ -54,7 +54,7 @@ module.exports = Self => {
Self.uploadFile = async(ctx, id, options) => {
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/client/back/methods/client/canBeInvoiced.js b/modules/client/back/methods/client/canBeInvoiced.js
index d8a126ed20..567d491f1f 100644
--- a/modules/client/back/methods/client/canBeInvoiced.js
+++ b/modules/client/back/methods/client/canBeInvoiced.js
@@ -25,7 +25,7 @@ module.exports = function(Self) {
Self.canBeInvoiced = async(id, options) => {
const models = Self.app.models;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/client/back/models/client.js b/modules/client/back/models/client.js
index 4cac16358f..f3591750da 100644
--- a/modules/client/back/models/client.js
+++ b/modules/client/back/models/client.js
@@ -55,6 +55,15 @@ module.exports = Self => {
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', {
allowNull: true,
allowBlank: true,
diff --git a/modules/client/front/create/locale/es.yml b/modules/client/front/create/locale/es.yml
index 6922ba917b..31b7cd4037 100644
--- a/modules/client/front/create/locale/es.yml
+++ b/modules/client/front/create/locale/es.yml
@@ -7,4 +7,5 @@ Create and edit: Crear y editar
You can save multiple emails: >-
Puede guardar varios correos electrónicos encadenándolos mediante comas
sin espacios, ejemplo: user@dominio.com, user2@dominio.com siendo el primer
- correo electrónico el principal
\ No newline at end of file
+ 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
diff --git a/modules/entry/back/methods/entry/addBuy.js b/modules/entry/back/methods/entry/addBuy.js
index f21c1650ce..f612c16518 100644
--- a/modules/entry/back/methods/entry/addBuy.js
+++ b/modules/entry/back/methods/entry/addBuy.js
@@ -68,7 +68,7 @@ module.exports = Self => {
Self.addBuy = async(ctx, options) => {
const conn = Self.dataSource.connector;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/entry/back/methods/entry/deleteBuys.js b/modules/entry/back/methods/entry/deleteBuys.js
index ce5ff6a7d9..ac6d30ce67 100644
--- a/modules/entry/back/methods/entry/deleteBuys.js
+++ b/modules/entry/back/methods/entry/deleteBuys.js
@@ -21,7 +21,7 @@ module.exports = Self => {
Self.deleteBuys = async(ctx, options) => {
const models = Self.app.models;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/entry/back/methods/entry/editLatestBuys.js b/modules/entry/back/methods/entry/editLatestBuys.js
index 53b92d966e..fb0397d2b4 100644
--- a/modules/entry/back/methods/entry/editLatestBuys.js
+++ b/modules/entry/back/methods/entry/editLatestBuys.js
@@ -32,7 +32,7 @@ module.exports = Self => {
Self.editLatestBuys = async(field, newValue, lines, options) => {
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js
index 24c518de87..13690d3acf 100644
--- a/modules/entry/back/methods/entry/filter.js
+++ b/modules/entry/back/methods/entry/filter.js
@@ -108,7 +108,7 @@ module.exports = Self => {
});
Self.filter = async(ctx, filter, options) => {
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/entry/back/methods/entry/getBuys.js b/modules/entry/back/methods/entry/getBuys.js
index 8adcc950d8..6da9ec53e6 100644
--- a/modules/entry/back/methods/entry/getBuys.js
+++ b/modules/entry/back/methods/entry/getBuys.js
@@ -29,7 +29,7 @@ module.exports = Self => {
Self.getBuys = async(id, filter, options) => {
const models = Self.app.models;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/entry/back/methods/entry/getEntry.js b/modules/entry/back/methods/entry/getEntry.js
index 74ccc88c51..66238d0dc4 100644
--- a/modules/entry/back/methods/entry/getEntry.js
+++ b/modules/entry/back/methods/entry/getEntry.js
@@ -21,7 +21,7 @@ module.exports = Self => {
Self.getEntry = async(id, options) => {
const models = Self.app.models;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/entry/back/methods/entry/importBuysPreview.js b/modules/entry/back/methods/entry/importBuysPreview.js
index 790d33364c..5b88b587ca 100644
--- a/modules/entry/back/methods/entry/importBuysPreview.js
+++ b/modules/entry/back/methods/entry/importBuysPreview.js
@@ -26,7 +26,7 @@ module.exports = Self => {
Self.importBuysPreview = async(id, buys, options) => {
const models = Self.app.models;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/entry/back/methods/entry/latestBuysFilter.js b/modules/entry/back/methods/entry/latestBuysFilter.js
index cbf9e3b6a4..7711bc0f10 100644
--- a/modules/entry/back/methods/entry/latestBuysFilter.js
+++ b/modules/entry/back/methods/entry/latestBuysFilter.js
@@ -76,7 +76,7 @@ module.exports = Self => {
});
Self.latestBuysFilter = async(ctx, filter, options) => {
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/entry/front/buy/index/style.scss b/modules/entry/front/buy/index/style.scss
index 55df72f1c3..04c8d130a0 100644
--- a/modules/entry/front/buy/index/style.scss
+++ b/modules/entry/front/buy/index/style.scss
@@ -15,16 +15,16 @@ vn-entry-buy-index vn-card {
tbody tr:nth-child(1),
tbody tr:nth-child(2) {
- border-left: 1px solid $color-marginal;
- border-right: 1px solid $color-marginal;
+ border-left: 1px solid $color-spacer;
+ border-right: 1px solid $color-spacer;
}
tbody tr:nth-child(2) {
- border-bottom: 1px solid $color-marginal;
+ border-bottom: 1px solid $color-spacer;
}
tbody{
- border-bottom: 1px solid $color-marginal;
+ border-bottom: 1px solid $color-spacer;
}
tbody:last-child {
diff --git a/modules/entry/front/main/index.html b/modules/entry/front/main/index.html
index 6c08cd0c42..f6a4c61fcf 100644
--- a/modules/entry/front/main/index.html
+++ b/modules/entry/front/main/index.html
@@ -2,7 +2,8 @@
vn-id="model"
url="Entries/filter"
limit="20"
- auto-load="true">
+ auto-load="true"
+ order="landed DESC, id DESC">
{
{
arg: 'isBooked',
type: 'boolean',
- description: 'Whether the the invoice is booked or not',
+ description: 'Whether the invoice is booked or not',
},
],
returns: {
@@ -95,7 +95,7 @@ module.exports = Self => {
const conn = Self.dataSource.connector;
const args = ctx.args;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/invoiceIn/back/methods/invoice-in/summary.js b/modules/invoiceIn/back/methods/invoice-in/summary.js
index 80dc2331b2..33bf670d36 100644
--- a/modules/invoiceIn/back/methods/invoice-in/summary.js
+++ b/modules/invoiceIn/back/methods/invoice-in/summary.js
@@ -21,7 +21,7 @@ module.exports = Self => {
Self.summary = async(id, options) => {
const models = Self.app.models;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/invoiceOut/back/methods/invoiceOut/book.js b/modules/invoiceOut/back/methods/invoiceOut/book.js
index 0371d4f746..7aa0eac1f0 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/book.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/book.js
@@ -23,7 +23,7 @@ module.exports = Self => {
Self.book = async(ref, options) => {
const models = Self.app.models;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/invoiceOut/back/methods/invoiceOut/createPdf.js b/modules/invoiceOut/back/methods/invoiceOut/createPdf.js
index ac79f0d5d0..3f577c9b09 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/createPdf.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/createPdf.js
@@ -35,7 +35,7 @@ module.exports = Self => {
throw new UserError(`Action not allowed on the test environment`);
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/invoiceOut/back/methods/invoiceOut/filter.js b/modules/invoiceOut/back/methods/invoiceOut/filter.js
index 3496c92963..99a80c169f 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/filter.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/filter.js
@@ -35,7 +35,7 @@ module.exports = Self => {
{
arg: 'hasPdf',
type: 'boolean',
- description: 'Whether the the invoiceOut has PDF or not',
+ description: 'Whether the invoiceOut has PDF or not',
http: {source: 'query'}
},
{
@@ -87,7 +87,7 @@ module.exports = Self => {
Self.filter = async(ctx, filter, options) => {
const conn = Self.dataSource.connector;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/invoiceOut/back/methods/invoiceOut/getTickets.js b/modules/invoiceOut/back/methods/invoiceOut/getTickets.js
index dc3296aba9..dc94f0f0f5 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/getTickets.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/getTickets.js
@@ -29,7 +29,7 @@ module.exports = Self => {
Self.getTickets = async(id, filter, options) => {
const models = Self.app.models;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/invoiceOut/back/methods/invoiceOut/summary.js b/modules/invoiceOut/back/methods/invoiceOut/summary.js
index a95016ff28..db01a41895 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/summary.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/summary.js
@@ -21,7 +21,7 @@ module.exports = Self => {
Self.summary = async(id, options) => {
let summary = {};
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/item/back/methods/item/activeBuyers.js b/modules/item/back/methods/item/activeBuyers.js
new file mode 100644
index 0000000000..e16ff877b0
--- /dev/null
+++ b/modules/item/back/methods/item/activeBuyers.js
@@ -0,0 +1,44 @@
+const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
+const mergeFilters = require('vn-loopback/util/filter').mergeFilters;
+
+module.exports = Self => {
+ Self.remoteMethod('activeBuyers', {
+ description: 'Returns a list of buyers for the given item type',
+ accepts: [{
+ arg: 'filter',
+ type: 'object',
+ description: `Filter defining where, order, offset, and limit - must be a JSON-encoded string`
+ }],
+ returns: {
+ type: ['object'],
+ root: true
+ },
+ http: {
+ path: `/activeBuyers`,
+ verb: 'GET'
+ }
+ });
+
+ Self.activeBuyers = async(filter, options) => {
+ const conn = Self.dataSource.connector;
+ const where = {isActive: true};
+ const myOptions = {};
+
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ filter = mergeFilters(filter, {where});
+
+ let stmt = new ParameterizedSQL(
+ `SELECT DISTINCT w.id workerFk, w.firstName, w.lastName, u.name, u.nickname
+ FROM worker w
+ JOIN itemType it ON it.workerFk = w.id
+ JOIN account.user u ON u.id = w.id
+ JOIN item i ON i.typeFk = it.id`,
+ null, myOptions);
+
+ stmt.merge(conn.makeSuffix(filter));
+
+ return conn.executeStmt(stmt);
+ };
+};
diff --git a/modules/item/back/methods/item/filter.js b/modules/item/back/methods/item/filter.js
index 8cfefac9f0..29099c7ec2 100644
--- a/modules/item/back/methods/item/filter.js
+++ b/modules/item/back/methods/item/filter.js
@@ -41,10 +41,10 @@ module.exports = Self => {
{
arg: 'isActive',
type: 'boolean',
- description: 'Whether the the item is or not active',
+ description: 'Whether the item is or not active',
},
{
- arg: 'salesPersonFk',
+ arg: 'buyerFk',
type: 'integer',
description: 'The buyer of the item',
},
@@ -62,6 +62,11 @@ module.exports = Self => {
arg: 'landed',
type: 'date',
description: 'The item last buy landed date',
+ },
+ {
+ arg: 'isFloramondo',
+ type: 'boolean',
+ description: 'Whether the the item is or not floramondo',
}
],
returns: {
@@ -104,13 +109,13 @@ module.exports = Self => {
? {or: [{'i.id': value}, codeWhere]}
: {or: [{'i.name': {like: `%${value}%`}}, codeWhere]};
case 'id':
- return {'i.id': value};
case 'isActive':
- return {'i.isActive': value};
+ case 'typeFk':
+ case 'isFloramondo':
+ param = `i.${param}`;
+ return {[param]: value};
case 'multiplier':
return {'i.stemMultiplier': value};
- case 'typeFk':
- return {'i.typeFk': value};
case 'categoryFk':
return {'ic.id': value};
case 'buyerFk':
@@ -146,6 +151,7 @@ module.exports = Self => {
i.density,
i.stemMultiplier,
i.typeFk,
+ i.isFloramondo,
it.name AS typeName,
it.workerFk AS buyerFk,
u.name AS userName,
diff --git a/modules/item/back/methods/item/specs/activeBuyers.spec.js b/modules/item/back/methods/item/specs/activeBuyers.spec.js
new file mode 100644
index 0000000000..5bf36756fc
--- /dev/null
+++ b/modules/item/back/methods/item/specs/activeBuyers.spec.js
@@ -0,0 +1,24 @@
+const models = require('vn-loopback/server/server').models;
+
+describe('Worker activeBuyers', () => {
+ it('should return the buyers in itemType as result', async() => {
+ const tx = await models.Item.beginTransaction({});
+
+ try {
+ const options = {transaction: tx};
+ const filter = {};
+ const result = await models.Item.activeBuyers(filter, options);
+ const firstWorker = result[0];
+ const secondWorker = result[1];
+
+ expect(result.length).toEqual(2);
+ expect(firstWorker.nickname).toEqual('logisticBossNick');
+ expect(secondWorker.nickname).toEqual('buyerNick');
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+});
diff --git a/modules/item/back/methods/item/specs/filter.spec.js b/modules/item/back/methods/item/specs/filter.spec.js
index 572aa0167c..7b1fac9ac0 100644
--- a/modules/item/back/methods/item/specs/filter.spec.js
+++ b/modules/item/back/methods/item/specs/filter.spec.js
@@ -60,4 +60,23 @@ describe('item filter()', () => {
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;
+ }
+ });
});
diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js
index 6cf5ba6258..457cce4f2f 100644
--- a/modules/item/back/models/item.js
+++ b/modules/item/back/models/item.js
@@ -14,6 +14,7 @@ module.exports = Self => {
require('../methods/item/getWasteByWorker')(Self);
require('../methods/item/getWasteByItem')(Self);
require('../methods/item/createIntrastat')(Self);
+ require('../methods/item/activeBuyers')(Self);
Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'});
diff --git a/modules/item/back/models/item.json b/modules/item/back/models/item.json
index d39b39178b..fd4b6b0794 100644
--- a/modules/item/back/models/item.json
+++ b/modules/item/back/models/item.json
@@ -140,6 +140,9 @@
},
"isFragile": {
"type": "boolean"
+ },
+ "isFloramondo": {
+ "type": "boolean"
}
},
"relations": {
diff --git a/modules/item/front/main/index.html b/modules/item/front/main/index.html
index a57d4fb2df..44d1257587 100644
--- a/modules/item/front/main/index.html
+++ b/modules/item/front/main/index.html
@@ -1,16 +1,19 @@
+ data="items"
+ auto-load="true">
diff --git a/modules/item/front/main/index.js b/modules/item/front/main/index.js
index f343699824..1d99c91a10 100644
--- a/modules/item/front/main/index.js
+++ b/modules/item/front/main/index.js
@@ -1,7 +1,15 @@
import ngModule from '../module';
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', {
controller: Items,
diff --git a/modules/item/front/routes.json b/modules/item/front/routes.json
index 8f3e037469..6d39083b43 100644
--- a/modules/item/front/routes.json
+++ b/modules/item/front/routes.json
@@ -9,7 +9,7 @@
{"state": "item.index", "icon": "icon-item"},
{"state": "item.request", "icon": "pan_tool"},
{"state": "item.waste.index", "icon": "icon-claims"},
- {"state": "item.fixedPrice", "icon": "contact_support"}
+ {"state": "item.fixedPrice", "icon": "icon-fixedPrice"}
],
"card": [
{"state": "item.card.basicData", "icon": "settings"},
diff --git a/modules/item/front/search-panel/index.html b/modules/item/front/search-panel/index.html
index 94e4b6d070..57f05bb546 100644
--- a/modules/item/front/search-panel/index.html
+++ b/modules/item/front/search-panel/index.html
@@ -40,13 +40,11 @@
@@ -155,6 +153,14 @@
tabindex="-1">
+
+
+
+
diff --git a/modules/monitor/front/index/orders/style.scss b/modules/monitor/front/index/orders/style.scss
index 102712eaf9..64d6497c90 100644
--- a/modules/monitor/front/index/orders/style.scss
+++ b/modules/monitor/front/index/orders/style.scss
@@ -11,7 +11,7 @@ vn-monitor-sales-orders {
color: gray;
& > vn-td {
- border-bottom: 2px solid $color-marginal;
+ border-bottom: $border;
font-size: 13px;
}
}
diff --git a/modules/monitor/front/index/style.scss b/modules/monitor/front/index/style.scss
index 9eda945b56..2b193ac885 100644
--- a/modules/monitor/front/index/style.scss
+++ b/modules/monitor/front/index/style.scss
@@ -6,7 +6,7 @@ vn-monitor-index {
padding: 12px 0 5px 0;
color: gray;
font-size: 1.2rem;
- border-bottom: 2px solid $color-font-secondary;
+ border-bottom: $border;
margin-bottom: 10px;
& > vn-none > vn-icon {
diff --git a/modules/route/back/methods/route/getSuggestedTickets.js b/modules/route/back/methods/route/getSuggestedTickets.js
index fe268f8ccc..49d7c1977e 100644
--- a/modules/route/back/methods/route/getSuggestedTickets.js
+++ b/modules/route/back/methods/route/getSuggestedTickets.js
@@ -20,7 +20,7 @@ module.exports = Self => {
});
Self.getSuggestedTickets = async(id, options) => {
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/route/back/methods/route/getTickets.js b/modules/route/back/methods/route/getTickets.js
index 5705d89050..9a2f5289a4 100644
--- a/modules/route/back/methods/route/getTickets.js
+++ b/modules/route/back/methods/route/getTickets.js
@@ -26,7 +26,8 @@ module.exports = Self => {
Self.getTickets = async(filter, options) => {
const conn = Self.dataSource.connector;
- let myOptions = {};
+ const myOptions = {};
+
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/route/back/methods/route/insertTicket.js b/modules/route/back/methods/route/insertTicket.js
index d716bd8ba1..f78e1cb831 100644
--- a/modules/route/back/methods/route/insertTicket.js
+++ b/modules/route/back/methods/route/insertTicket.js
@@ -30,7 +30,7 @@ module.exports = Self => {
const models = Self.app.models;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/route/back/methods/route/updateVolume.js b/modules/route/back/methods/route/updateVolume.js
index ce6e16b5c2..f3b8da1301 100644
--- a/modules/route/back/methods/route/updateVolume.js
+++ b/modules/route/back/methods/route/updateVolume.js
@@ -24,7 +24,7 @@ module.exports = Self => {
const models = Self.app.models;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/supplier/front/contact/style.scss b/modules/supplier/front/contact/style.scss
index 84e98050df..becc66dcf5 100644
--- a/modules/supplier/front/contact/style.scss
+++ b/modules/supplier/front/contact/style.scss
@@ -6,5 +6,5 @@
margin-bottom: 10px;
padding-right: 10px;
padding-left: 10px;
- border: 1px solid $color-marginal;
+ border: 1px solid $color-spacer;
}
diff --git a/modules/supplier/front/descriptor/index.html b/modules/supplier/front/descriptor/index.html
index 9781c95b87..dcc065eff8 100644
--- a/modules/supplier/front/descriptor/index.html
+++ b/modules/supplier/front/descriptor/index.html
@@ -28,11 +28,6 @@
icon="icon-disabled"
ng-if="$ctrl.supplier.isActive == false">
-
-
{
return this.ticket.option = response.data[0].id;
diff --git a/modules/worker/back/methods/calendar/absences.js b/modules/worker/back/methods/calendar/absences.js
index 96293c931b..32d311cdb6 100644
--- a/modules/worker/back/methods/calendar/absences.js
+++ b/modules/worker/back/methods/calendar/absences.js
@@ -40,7 +40,7 @@ module.exports = Self => {
ended.setMonth(12);
ended.setDate(0);
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/worker/back/methods/worker-time-control/addTimeEntry.js b/modules/worker/back/methods/worker-time-control/addTimeEntry.js
index 2079a62a39..80786b7236 100644
--- a/modules/worker/back/methods/worker-time-control/addTimeEntry.js
+++ b/modules/worker/back/methods/worker-time-control/addTimeEntry.js
@@ -34,8 +34,8 @@ module.exports = Self => {
const models = Self.app.models;
const args = ctx.args;
const currentUserId = ctx.req.accessToken.userId;
+ const myOptions = {};
- let myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/worker/back/methods/worker-time-control/deleteTimeEntry.js b/modules/worker/back/methods/worker-time-control/deleteTimeEntry.js
index 23e4c5fffd..c80dcab81b 100644
--- a/modules/worker/back/methods/worker-time-control/deleteTimeEntry.js
+++ b/modules/worker/back/methods/worker-time-control/deleteTimeEntry.js
@@ -25,7 +25,7 @@ module.exports = Self => {
const currentUserId = ctx.req.accessToken.userId;
const models = Self.app.models;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/worker/back/methods/worker-time-control/updateTimeEntry.js b/modules/worker/back/methods/worker-time-control/updateTimeEntry.js
index abeda7f8e4..a99a617704 100644
--- a/modules/worker/back/methods/worker-time-control/updateTimeEntry.js
+++ b/modules/worker/back/methods/worker-time-control/updateTimeEntry.js
@@ -31,7 +31,7 @@ module.exports = Self => {
const models = Self.app.models;
const args = ctx.args;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/worker/back/methods/worker/createAbsence.js b/modules/worker/back/methods/worker/createAbsence.js
index 549ba7fd15..b276cf1f7c 100644
--- a/modules/worker/back/methods/worker/createAbsence.js
+++ b/modules/worker/back/methods/worker/createAbsence.js
@@ -41,7 +41,7 @@ module.exports = Self => {
const userId = ctx.req.accessToken.userId;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/worker/back/methods/worker/deleteAbsence.js b/modules/worker/back/methods/worker/deleteAbsence.js
index 18427424df..72e9243d9f 100644
--- a/modules/worker/back/methods/worker/deleteAbsence.js
+++ b/modules/worker/back/methods/worker/deleteAbsence.js
@@ -28,7 +28,7 @@ module.exports = Self => {
const userId = ctx.req.accessToken.userId;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/worker/back/methods/worker/holidays.js b/modules/worker/back/methods/worker/holidays.js
index f3ce0c6615..e11d130020 100644
--- a/modules/worker/back/methods/worker/holidays.js
+++ b/modules/worker/back/methods/worker/holidays.js
@@ -34,7 +34,7 @@ module.exports = Self => {
const models = Self.app.models;
const args = ctx.args;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/worker/back/methods/worker/isSubordinate.js b/modules/worker/back/methods/worker/isSubordinate.js
index 13cc365c63..f051cf7685 100644
--- a/modules/worker/back/methods/worker/isSubordinate.js
+++ b/modules/worker/back/methods/worker/isSubordinate.js
@@ -27,7 +27,7 @@ module.exports = Self => {
const models = Self.app.models;
const myUserId = ctx.req.accessToken.userId;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/worker/back/methods/worker/mySubordinates.js b/modules/worker/back/methods/worker/mySubordinates.js
index 07a22291da..b6711e3827 100644
--- a/modules/worker/back/methods/worker/mySubordinates.js
+++ b/modules/worker/back/methods/worker/mySubordinates.js
@@ -25,7 +25,7 @@ module.exports = Self => {
const userId = ctx.req.accessToken.userId;
const stmts = [];
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/worker/front/calendar/style.scss b/modules/worker/front/calendar/style.scss
index 70e998a4fa..d92c54806f 100644
--- a/modules/worker/front/calendar/style.scss
+++ b/modules/worker/front/calendar/style.scss
@@ -11,7 +11,7 @@ vn-worker-calendar {
padding: $spacing-md;
& > vn-calendar {
- border: 1px solid #ddd;
+ border: $border-thin;
margin: $spacing-md;
padding: $spacing-xs;
max-width: 288px;
@@ -38,13 +38,12 @@ vn-worker-calendar {
}
vn-side-menu div > .input {
- border-color: rgba(0, 0, 0, 0.3);
- border-bottom: 1px solid rgba(0, 0, 0, 0.3);
+ border-bottom: $border-thin;
}
.festive,
vn-avatar.today {
- background-color: $color-font-dark;
+ color: $color-font;
width: 24px;
min-width: 24px;
height: 24px
diff --git a/modules/zone/back/methods/agency-mode/byWarehouse.js b/modules/zone/back/methods/agency-mode/byWarehouse.js
index 30716d145b..945e79320e 100644
--- a/modules/zone/back/methods/agency-mode/byWarehouse.js
+++ b/modules/zone/back/methods/agency-mode/byWarehouse.js
@@ -22,7 +22,7 @@ module.exports = Self => {
Self.byWarehouse = async(filter, options) => {
const conn = Self.dataSource.connector;
const where = {isActive: true};
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/zone/back/methods/agency/getAgenciesWithWarehouse.js b/modules/zone/back/methods/agency/getAgenciesWithWarehouse.js
index 296b9ee8d4..846ad6a3db 100644
--- a/modules/zone/back/methods/agency/getAgenciesWithWarehouse.js
+++ b/modules/zone/back/methods/agency/getAgenciesWithWarehouse.js
@@ -29,7 +29,7 @@ module.exports = Self => {
});
Self.getAgenciesWithWarehouse = async(addressFk, landed, warehouseFk, options) => {
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/zone/back/methods/agency/landsThatDay.js b/modules/zone/back/methods/agency/landsThatDay.js
index 5a9efefe8f..b7f13dddae 100644
--- a/modules/zone/back/methods/agency/landsThatDay.js
+++ b/modules/zone/back/methods/agency/landsThatDay.js
@@ -23,7 +23,7 @@ module.exports = Self => {
});
Self.landsThatDay = async(addressFk, landed, options) => {
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/zone/back/methods/zone/clone.js b/modules/zone/back/methods/zone/clone.js
index 64dc5aa553..391b3762a6 100644
--- a/modules/zone/back/methods/zone/clone.js
+++ b/modules/zone/back/methods/zone/clone.js
@@ -22,7 +22,7 @@ module.exports = Self => {
Self.clone = async(id, options) => {
const models = Self.app.models;
let tx;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/zone/back/methods/zone/getEvents.js b/modules/zone/back/methods/zone/getEvents.js
index c76a38ea50..a8ee8bb7be 100644
--- a/modules/zone/back/methods/zone/getEvents.js
+++ b/modules/zone/back/methods/zone/getEvents.js
@@ -26,7 +26,7 @@ module.exports = Self => {
});
Self.getEvents = async(geoFk, agencyModeFk, options) => {
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/zone/back/methods/zone/getLeaves.js b/modules/zone/back/methods/zone/getLeaves.js
index cda5d7ff9a..db17beb1bb 100644
--- a/modules/zone/back/methods/zone/getLeaves.js
+++ b/modules/zone/back/methods/zone/getLeaves.js
@@ -32,7 +32,7 @@ module.exports = Self => {
});
Self.getLeaves = async(id, parentId = null, search, options) => {
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/zone/back/methods/zone/getUpcomingDeliveries.js b/modules/zone/back/methods/zone/getUpcomingDeliveries.js
index 6aceb694b4..2a1c39ed6d 100644
--- a/modules/zone/back/methods/zone/getUpcomingDeliveries.js
+++ b/modules/zone/back/methods/zone/getUpcomingDeliveries.js
@@ -14,7 +14,7 @@ module.exports = Self => {
});
Self.getUpcomingDeliveries = async options => {
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/zone/back/methods/zone/includingExpired.js b/modules/zone/back/methods/zone/includingExpired.js
index 75aa41e1c8..e93b864712 100644
--- a/modules/zone/back/methods/zone/includingExpired.js
+++ b/modules/zone/back/methods/zone/includingExpired.js
@@ -2,7 +2,7 @@ const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
module.exports = Self => {
Self.remoteMethodCtx('includingExpired', {
- description: 'Returns a list of agencies from a warehouse',
+ description: 'Returns a list of zones for the given warehouse and user',
accepts: [{
arg: 'filter',
type: 'Object',
@@ -19,7 +19,7 @@ module.exports = Self => {
});
Self.includingExpired = async(ctx, filter, options) => {
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/modules/zone/back/methods/zone/toggleIsIncluded.js b/modules/zone/back/methods/zone/toggleIsIncluded.js
index 32144ab971..bf8c86f464 100644
--- a/modules/zone/back/methods/zone/toggleIsIncluded.js
+++ b/modules/zone/back/methods/zone/toggleIsIncluded.js
@@ -29,7 +29,7 @@ module.exports = Self => {
Self.toggleIsIncluded = async(id, geoId, isIncluded, options) => {
const models = Self.app.models;
- let myOptions = {};
+ const myOptions = {};
if (typeof options == 'object')
Object.assign(myOptions, options);
diff --git a/print/core/smtp.js b/print/core/smtp.js
index 0017739da6..36a76dbafc 100644
--- a/print/core/smtp.js
+++ b/print/core/smtp.js
@@ -28,7 +28,7 @@ module.exports = {
for (let attachment of options.attachments) {
const fileName = attachment.filename;
const filePath = attachment.path;
- // if (fileName.includes('.png')) return;
+ if (fileName.includes('.png')) return;
if (fileName || filePath)
attachments.push(filePath ? filePath : fileName);