merge with master
gitea/salix/test This commit looks good
Details
gitea/salix/test This commit looks good
Details
This commit is contained in:
commit
7daf2e4328
|
@ -19,7 +19,7 @@ ext install dbaeumer.vscode-eslint
|
|||
|
||||
You will need to install globally the following items.
|
||||
```
|
||||
# npm install -g karma-cli gulp-cli nodemon
|
||||
# npm install -g jest gulp-cli nodemon
|
||||
```
|
||||
## Linux Only Prerequisites
|
||||
|
||||
|
|
|
@ -25,24 +25,24 @@ module.exports = Self => {
|
|||
}
|
||||
});
|
||||
|
||||
Self.send = async(ctx, data, transaction) => {
|
||||
Self.send = async(ctx, data, options) => {
|
||||
const accessToken = ctx.options && ctx.options.accessToken || ctx.req && ctx.req.accessToken;
|
||||
const userId = accessToken.userId;
|
||||
const models = Self.app.models;
|
||||
const sender = await models.Account.findById(userId, transaction);
|
||||
const recipient = await models.Account.findById(data.recipientFk, transaction);
|
||||
const sender = await models.Account.findById(userId, options);
|
||||
const recipient = await models.Account.findById(data.recipientFk, options);
|
||||
|
||||
await Self.create({
|
||||
sender: sender.name,
|
||||
recipient: recipient.name,
|
||||
message: data.message
|
||||
}, transaction);
|
||||
}, options);
|
||||
|
||||
return await models.MessageInbox.create({
|
||||
sender: sender.name,
|
||||
recipient: recipient.name,
|
||||
finalRecipient: recipient.name,
|
||||
message: data.message
|
||||
}, transaction);
|
||||
}, options);
|
||||
};
|
||||
};
|
||||
|
|
|
@ -576,7 +576,8 @@ INSERT INTO `vn`.`itemCategory`(`id`, `name`, `display`, `color`, `icon`)
|
|||
(4, 'Handmade', 1, NULL, 'icon-handmade'),
|
||||
(5, 'Artificial', 1, NULL, 'icon-artificial'),
|
||||
(6, 'Green', 1, NULL, 'icon-greenery'),
|
||||
(7, 'Accessories', 1, NULL, 'icon-accessory');
|
||||
(7, 'Accessories', 1, NULL, 'icon-accessory'),
|
||||
(8, 'Fruit', 1, NULL, 'icon-fruit');
|
||||
|
||||
INSERT INTO `vn`.`itemType`(`id`, `code`, `name`, `categoryFk`, `life`,`workerFk`, `isPackaging`)
|
||||
VALUES
|
||||
|
|
|
@ -33,8 +33,8 @@ export default {
|
|||
taxNumber: `${components.vnTextfield}[name="fi"]`,
|
||||
socialName: `${components.vnTextfield}[name="socialName"]`,
|
||||
street: `${components.vnTextfield}[name="street"]`,
|
||||
postcode: `vn-autocomplete[field="$ctrl.client.postcode"]`,
|
||||
city: `vn-autocomplete[field="$ctrl.client.city"]`,
|
||||
postcode: `${components.vnTextfield}[name="postcode"]`,
|
||||
city: `${components.vnTextfield}[name="city"]`,
|
||||
province: `vn-autocomplete[field="$ctrl.client.provinceFk"]`,
|
||||
country: `vn-autocomplete[field="$ctrl.client.countryFk"]`,
|
||||
userName: `${components.vnTextfield}[name="userName"]`,
|
||||
|
@ -65,8 +65,8 @@ export default {
|
|||
equalizationTaxCheckbox: 'vn-check[label="Is equalizated"] md-checkbox',
|
||||
acceptPropagationButton: 'vn-client-fiscal-data > vn-confirm button[response=ACCEPT]',
|
||||
addressInput: `${components.vnTextfield}[name="street"]`,
|
||||
postcodeAutocomplete: `vn-autocomplete[field="$ctrl.client.postcode"]`,
|
||||
cityAutocomplete: `vn-autocomplete[field="$ctrl.client.city"]`,
|
||||
postcodeInput: `${components.vnTextfield}[name="postcode"]`,
|
||||
cityInput: `${components.vnTextfield}[name="city"]`,
|
||||
provinceAutocomplete: 'vn-autocomplete[field="$ctrl.client.provinceFk"]',
|
||||
countryAutocomplete: 'vn-autocomplete[field="$ctrl.client.countryFk"]',
|
||||
activeCheckbox: 'vn-check[label="Active"] md-checkbox',
|
||||
|
@ -100,8 +100,8 @@ export default {
|
|||
defaultCheckboxInput: 'vn-check[label="Default"] md-checkbox',
|
||||
consigneeInput: `${components.vnTextfield}[name="nickname"]`,
|
||||
streetAddressInput: `${components.vnTextfield}[name="street"]`,
|
||||
postcodeAutocomplete: `vn-autocomplete[field="$ctrl.address.postalCode"]`,
|
||||
cityAutocomplete: `vn-autocomplete[field="$ctrl.address.city"]`,
|
||||
postcodeInput: `${components.vnTextfield}[name="postalCode"]`,
|
||||
cityInput: `${components.vnTextfield}[name="city"]`,
|
||||
provinceAutocomplete: 'vn-autocomplete[field="$ctrl.address.provinceFk"]',
|
||||
agencyAutocomplete: 'vn-autocomplete[field="$ctrl.address.agencyModeFk"]',
|
||||
phoneInput: `${components.vnTextfield}[name="phone"]`,
|
||||
|
|
|
@ -53,7 +53,10 @@ describe('Client create path', () => {
|
|||
.write(selectors.createClientView.name, 'Carol Danvers')
|
||||
.write(selectors.createClientView.socialName, 'AVG tax')
|
||||
.write(selectors.createClientView.street, 'Many places')
|
||||
.autocompleteSearch(selectors.createClientView.postcode, '46000')
|
||||
.autocompleteSearch(selectors.createClientView.country, 'España')
|
||||
.autocompleteSearch(selectors.createClientView.province, 'Province one')
|
||||
.write(selectors.createClientView.city, 'Valencia')
|
||||
.write(selectors.createClientView.postcode, '46000')
|
||||
.clearInput(selectors.createClientView.email)
|
||||
.write(selectors.createClientView.email, 'incorrect email format')
|
||||
.waitToClick(selectors.createClientView.createButton)
|
||||
|
@ -64,7 +67,7 @@ describe('Client create path', () => {
|
|||
|
||||
it(`should check for autocompleted city, province and country`, async() => {
|
||||
const clientCity = await nightmare
|
||||
.waitToGetProperty(`${selectors.createClientView.city} input`, 'value');
|
||||
.waitToGetProperty(`${selectors.createClientView.city}`, 'value');
|
||||
|
||||
const clientProvince = await nightmare
|
||||
.waitToGetProperty(`${selectors.createClientView.province} input`, 'value');
|
||||
|
|
|
@ -67,8 +67,12 @@ describe('Client Edit fiscalData path', () => {
|
|||
.write(selectors.clientFiscalData.fiscalIdInput, 'INVALID!')
|
||||
.clearInput(selectors.clientFiscalData.addressInput)
|
||||
.write(selectors.clientFiscalData.addressInput, 'Somewhere edited')
|
||||
.autocompleteSearch(selectors.clientFiscalData.cityAutocomplete, 'Valencia')
|
||||
.autocompleteSearch(selectors.clientFiscalData.postcodeAutocomplete, '46000')
|
||||
.autocompleteSearch(selectors.clientFiscalData.countryAutocomplete, 'España')
|
||||
.autocompleteSearch(selectors.clientFiscalData.provinceAutocomplete, 'Province one')
|
||||
.clearInput(selectors.clientFiscalData.cityInput)
|
||||
.write(selectors.clientFiscalData.cityInput, 'Valencia')
|
||||
.clearInput(selectors.clientFiscalData.postcodeInput)
|
||||
.write(selectors.clientFiscalData.postcodeInput, '46000')
|
||||
.waitToClick(selectors.clientFiscalData.activeCheckbox)
|
||||
.waitToClick(selectors.clientFiscalData.frozenCheckbox)
|
||||
.waitToClick(selectors.clientFiscalData.hasToInvoiceCheckbox)
|
||||
|
@ -194,14 +198,14 @@ describe('Client Edit fiscalData path', () => {
|
|||
|
||||
it('should confirm the postcode have been edited', async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(`${selectors.clientFiscalData.postcodeAutocomplete} input`, 'value');
|
||||
.waitToGetProperty(`${selectors.clientFiscalData.postcodeInput}`, 'value');
|
||||
|
||||
expect(result).toContain('46000');
|
||||
});
|
||||
|
||||
it('should confirm the city have been autocompleted', async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(`${selectors.clientFiscalData.cityAutocomplete} input`, 'value');
|
||||
.waitToGetProperty(`${selectors.clientFiscalData.cityInput}`, 'value');
|
||||
|
||||
expect(result).toEqual('Valencia');
|
||||
});
|
||||
|
|
|
@ -24,7 +24,11 @@ describe('Client Add address path', () => {
|
|||
const result = await nightmare
|
||||
.waitToClick(selectors.clientAddresses.defaultCheckboxInput)
|
||||
.clearInput(selectors.clientAddresses.streetAddressInput)
|
||||
.autocompleteSearch(selectors.clientAddresses.postcodeAutocomplete, '46000')
|
||||
.autocompleteSearch(selectors.clientAddresses.provinceAutocomplete, 'Province one')
|
||||
.clearInput(selectors.clientAddresses.cityInput)
|
||||
.write(selectors.clientAddresses.cityInput, 'Valencia')
|
||||
.clearInput(selectors.clientAddresses.postcodeInput)
|
||||
.write(selectors.clientAddresses.postcodeInput, '46000')
|
||||
.autocompleteSearch(selectors.clientAddresses.agencyAutocomplete, 'Entanglement')
|
||||
.write(selectors.clientAddresses.phoneInput, '999887744')
|
||||
.write(selectors.clientAddresses.mobileInput, '999887744')
|
||||
|
@ -36,14 +40,14 @@ describe('Client Add address path', () => {
|
|||
|
||||
it('should confirm the postcode have been edited', async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(`${selectors.clientAddresses.postcodeAutocomplete} input`, 'value');
|
||||
.waitToGetProperty(`${selectors.clientAddresses.postcodeInput}`, 'value');
|
||||
|
||||
expect(result).toContain('46000');
|
||||
});
|
||||
|
||||
it('should confirm the city have been autocompleted', async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(`${selectors.clientAddresses.cityAutocomplete} input`, 'value');
|
||||
.waitToGetProperty(`${selectors.clientAddresses.cityInput}`, 'value');
|
||||
|
||||
expect(result).toEqual('Valencia');
|
||||
});
|
||||
|
|
|
@ -23,263 +23,8 @@
|
|||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-basketadd:before {
|
||||
content: "\e955";
|
||||
}
|
||||
.icon-catalog:before {
|
||||
content: "\e952";
|
||||
}
|
||||
.icon-agency:before {
|
||||
content: "\e910";
|
||||
}
|
||||
.icon-delivery:before {
|
||||
content: "\e94a";
|
||||
}
|
||||
.icon-wand:before {
|
||||
content: "\e954";
|
||||
}
|
||||
.icon-unavailable:before {
|
||||
content: "\e953";
|
||||
}
|
||||
.icon-buscaman:before {
|
||||
content: "\e951";
|
||||
}
|
||||
.icon-pbx:before {
|
||||
content: "\e950";
|
||||
}
|
||||
.icon-calendar:before {
|
||||
content: "\e94f";
|
||||
}
|
||||
.icon-linesplit:before {
|
||||
content: "\e945";
|
||||
}
|
||||
.icon-invoices:before {
|
||||
content: "\e91c";
|
||||
}
|
||||
.icon-pets:before {
|
||||
content: "\e94e";
|
||||
}
|
||||
.icon-100:before {
|
||||
content: "\e940";
|
||||
}
|
||||
.icon-accessory:before {
|
||||
content: "\e90a";
|
||||
}
|
||||
.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";
|
||||
}
|
||||
.icon-barcode:before {
|
||||
content: "\e904";
|
||||
}
|
||||
.icon-basket:before {
|
||||
content: "\e942";
|
||||
}
|
||||
.icon-bin:before {
|
||||
content: "\e905";
|
||||
}
|
||||
.icon-botanical:before {
|
||||
content: "\e906";
|
||||
}
|
||||
.icon-bucket:before {
|
||||
content: "\e907";
|
||||
}
|
||||
.icon-claims:before {
|
||||
content: "\e908";
|
||||
}
|
||||
.icon-clone:before {
|
||||
content: "\e909";
|
||||
}
|
||||
.icon-columnadd:before {
|
||||
content: "\e944";
|
||||
}
|
||||
.icon-columndelete:before {
|
||||
content: "\e90f";
|
||||
}
|
||||
.icon-components:before {
|
||||
content: "\e90b";
|
||||
}
|
||||
.icon-consignatarios:before {
|
||||
content: "\e90d";
|
||||
}
|
||||
.icon-control:before {
|
||||
content: "\e93f";
|
||||
}
|
||||
.icon-credit:before {
|
||||
content: "\e90e";
|
||||
}
|
||||
.icon-details:before {
|
||||
content: "\e911";
|
||||
}
|
||||
.icon-disabled:before {
|
||||
content: "\e91b";
|
||||
}
|
||||
.icon-doc:before {
|
||||
content: "\e913";
|
||||
}
|
||||
.icon-entry:before {
|
||||
content: "\e914";
|
||||
}
|
||||
.icon-exit:before {
|
||||
content: "\e947";
|
||||
}
|
||||
.icon-eye:before {
|
||||
content: "\e915";
|
||||
}
|
||||
.icon-fiscal:before {
|
||||
content: "\e912";
|
||||
}
|
||||
.icon-flower:before {
|
||||
content: "\e916";
|
||||
}
|
||||
.icon-frozen:before {
|
||||
content: "\e917";
|
||||
}
|
||||
.icon-greenery:before {
|
||||
content: "\e93c";
|
||||
}
|
||||
.icon-greuge:before {
|
||||
content: "\e918";
|
||||
}
|
||||
.icon-grid:before {
|
||||
content: "\e919";
|
||||
}
|
||||
.icon-handmade:before {
|
||||
content: "\e90c";
|
||||
}
|
||||
.icon-history:before {
|
||||
content: "\e91a";
|
||||
}
|
||||
.icon-info:before {
|
||||
content: "\e949";
|
||||
}
|
||||
.icon-item:before {
|
||||
content: "\e941";
|
||||
}
|
||||
.icon-languaje:before {
|
||||
content: "\e91d";
|
||||
}
|
||||
.icon-linedelete:before {
|
||||
content: "\e946";
|
||||
}
|
||||
.icon-lines:before {
|
||||
content: "\e91e";
|
||||
}
|
||||
.icon-linesprepaired:before {
|
||||
content: "\e94b";
|
||||
}
|
||||
.icon-logout:before {
|
||||
content: "\e91f";
|
||||
}
|
||||
.icon-mana:before {
|
||||
content: "\e920";
|
||||
}
|
||||
.icon-mandatory:before {
|
||||
content: "\e921";
|
||||
}
|
||||
.icon-niche:before {
|
||||
content: "\e922";
|
||||
}
|
||||
.icon-no036:before {
|
||||
content: "\e923";
|
||||
}
|
||||
.icon-notes:before {
|
||||
content: "\e924";
|
||||
}
|
||||
.icon-noweb:before {
|
||||
content: "\e925";
|
||||
}
|
||||
.icon-onlinepayment:before {
|
||||
content: "\e926";
|
||||
}
|
||||
.icon-package:before {
|
||||
content: "\e927";
|
||||
}
|
||||
.icon-payment:before {
|
||||
content: "\e928";
|
||||
}
|
||||
.icon-person:before {
|
||||
content: "\e929";
|
||||
}
|
||||
.icon-photo:before {
|
||||
content: "\e92a";
|
||||
}
|
||||
.icon-plant:before {
|
||||
content: "\e92b";
|
||||
}
|
||||
.icon-recovery:before {
|
||||
content: "\e92d";
|
||||
}
|
||||
.icon-regentry:before {
|
||||
content: "\e92e";
|
||||
}
|
||||
.icon-reserve:before {
|
||||
content: "\e92f";
|
||||
}
|
||||
.icon-revision:before {
|
||||
content: "\e94c";
|
||||
}
|
||||
.icon-risk:before {
|
||||
content: "\e930";
|
||||
}
|
||||
.icon-services:before {
|
||||
content: "\e94d";
|
||||
}
|
||||
.icon-settings:before {
|
||||
content: "\e931";
|
||||
}
|
||||
.icon-sms:before {
|
||||
content: "\e932";
|
||||
}
|
||||
.icon-solclaim:before {
|
||||
content: "\e933";
|
||||
}
|
||||
.icon-solunion:before {
|
||||
content: "\e934";
|
||||
}
|
||||
.icon-splur:before {
|
||||
content: "\e935";
|
||||
}
|
||||
.icon-stowaway:before {
|
||||
content: "\e92c";
|
||||
}
|
||||
.icon-supplier:before {
|
||||
content: "\e936";
|
||||
}
|
||||
.icon-tags:before {
|
||||
content: "\e937";
|
||||
}
|
||||
.icon-tax:before {
|
||||
content: "\e938";
|
||||
}
|
||||
.icon-ticket:before {
|
||||
content: "\e939";
|
||||
}
|
||||
.icon-traceability:before {
|
||||
content: "\e93a";
|
||||
}
|
||||
.icon-transaction:before {
|
||||
content: "\e93b";
|
||||
}
|
||||
.icon-volume:before {
|
||||
content: "\e93d";
|
||||
}
|
||||
.icon-web:before {
|
||||
content: "\e93e";
|
||||
}
|
||||
.icon-worker:before {
|
||||
content: "\e943";
|
||||
.icon-fruit:before {
|
||||
content: "\e957";
|
||||
}
|
||||
.icon-deliveryprices:before {
|
||||
content: "\e956";
|
||||
|
|
|
@ -94,4 +94,5 @@
|
|||
<glyph unicode="" glyph-name="wand" d="M829.649 565.029l-18.808-50.155-50.155-18.808 50.155-18.808 18.808-50.155 18.808 50.155 50.155 18.808-50.155 18.808-18.808 50.155zM624.849 870.139l-35.527 89.861-33.437-89.861-89.861-35.527 89.861-33.437 33.437-89.861 33.437 89.861 91.951 33.437-89.861 35.527zM969.665 819.984l-20.898 54.335-20.898-54.335-52.245-20.898 52.245-20.898 20.898-52.245 20.898 52.245 54.335 20.898-54.335 20.898zM783.673 648.62l-71.053 71.053c-4.18 4.18-8.359 4.18-12.539 4.18s-8.359-2.090-12.539-4.18l-681.273-681.273c0 0 0 0 0 0v0c-6.269-6.269-6.269-18.808 0-25.078l71.053-71.053c6.269-6.269 16.718-6.269 22.988 0v0c0 0 0 0 0 0l683.363 683.363c6.269 6.269 6.269 16.718 0 22.988zM626.939 506.514l-56.424 56.424 129.567 129.567 56.424-56.424-129.567-129.567z" />
|
||||
<glyph unicode="" glyph-name="basketadd" d="M515.2 512c-16 0-28.8-12.8-28.8-28.8v-83.2c16 22.4 35.2 41.6 57.6 60.8v22.4c0 16-12.8 28.8-28.8 28.8zM416 185.6h-259.2l-44.8 348.8h566.4c32 9.6 64 16 99.2 16 16 0 32 0 48-3.2 3.2 3.2 6.4 9.6 6.4 16v64c0 16-12.8 28.8-32 32h-140.8l-115.2 227.2c6.4 6.4 6.4 19.2 6.4 28.8-6.4 32-35.2 54.4-64 48-32-6.4-54.4-32-48-64s35.2-54.4 64-48l89.6-198.4h-355.2l89.6 198.4c32-6.4 60.8 19.2 64 48s-19.2 57.6-48 64c-32 6.4-60.8-19.2-64-48 0-9.6 3.2-19.2 6.4-28.8l-115.2-233.6h-140.8c-16 0-28.8-12.8-28.8-28.8v-64c0-16 12.8-28.8 28.8-28.8h22.4l51.2-377.6c3.2-12.8 16-22.4 28.8-22.4h288c-3.2 16-3.2 35.2-3.2 54.4zM416 512c-16 0-28.8-12.8-28.8-28.8v-259.2c0-16 12.8-28.8 28.8-28.8 0 0 0 0 0 0 0 44.8 9.6 89.6 28.8 131.2v160c0 12.8-12.8 25.6-28.8 25.6zM198.4 508.8c-16-3.2-25.6-16-25.6-32l16-262.4c0-12.8 12.8-25.6 25.6-22.4h3.2c16 3.2 25.6 16 25.6 32l-12.8 259.2c-3.2 12.8-19.2 25.6-32 25.6zM284.8 483.2v-262.4c0-19.2 12.8-28.8 28.8-28.8s28.8 12.8 28.8 28.8v262.4c0 16-12.8 28.8-28.8 28.8s-28.8-12.8-28.8-28.8zM1024 243.2v-121.6h-185.6v-185.6h-121.6v185.6h-185.6v121.6h185.6v185.6h121.6v-185.6z" />
|
||||
<glyph unicode="" glyph-name="deliveryprices" d="M789.333 264.533c-55.467 0-102.4-46.933-102.4-102.4s46.933-102.4 102.4-102.4 102.4 46.933 102.4 102.4c0 59.733-46.933 102.4-102.4 102.4zM789.333 110.933c-29.867 0-51.2 21.333-51.2 51.2s21.333 51.2 51.2 51.2 51.2-21.333 51.2-51.2c0-25.6-25.6-51.2-51.2-51.2zM251.733 264.533c-55.467 0-102.4-46.933-102.4-102.4s46.933-102.4 102.4-102.4 102.4 46.933 102.4 102.4c0 59.733-46.933 102.4-102.4 102.4zM251.733 110.933c-29.867 0-51.2 21.333-51.2 51.2s21.333 51.2 51.2 51.2 51.2-21.333 51.2-51.2c0-25.6-25.6-51.2-51.2-51.2zM1006.933 537.6l-196.267 192c-12.8 12.8-29.867 17.067-46.933 17.067h-98.133v38.4c0 25.6-21.333 51.2-51.2 51.2h-563.2c-29.867 0-51.2-21.333-51.2-51.2v-554.667c0-29.867 25.6-51.2 51.2-51.2h68.267c8.533 64 64 115.2 132.267 115.2 64 0 123.733-51.2 132.267-115.2h268.8c8.533 64 64 115.2 132.267 115.2s128-51.2 136.533-115.2h51.2c29.867 0 51.2 25.6 51.2 51.2v260.267c0 17.067-8.533 34.133-17.067 46.933zM392.533 605.867v-38.4h-170.667c0-8.533 0-12.8 0-17.067s0-12.8 0-17.067h170.667v-42.667h-157.867c12.8-25.6 25.6-42.667 51.2-59.733 21.333-12.8 46.933-21.333 76.8-21.333 42.667 0 76.8 17.067 102.4 46.933l46.933-42.667c-17.067-21.333-38.4-38.4-68.267-46.933-25.6-12.8-55.467-17.067-89.6-17.067s-64 4.267-89.6 17.067c-25.6 12.8-51.2 29.867-68.267 51.2s-29.867 42.667-38.4 72.533h-64v38.4h55.467c0 4.267 0 8.533 0 17.067s0 12.8 0 17.067h-55.467v42.667h64c8.533 29.867 21.333 51.2 38.4 76.8s42.667 38.4 68.267 51.2c29.867 8.533 59.733 12.8 93.867 12.8 29.867 0 59.733-4.267 89.6-17.067 25.6-8.533 46.933-25.6 64-46.933l-46.933-42.667c-29.867 29.867-64 46.933-102.4 46.933-29.867 0-55.467-8.533-76.8-21.333-25.6-17.067-42.667-34.133-51.2-59.733h157.867zM921.6 529.067h-187.733c-8.533 0-8.533 4.267-8.533 8.533v145.067c0 4.267 4.267 8.533 8.533 8.533h34.133c0 0 4.267 0 4.267-4.267l153.6-145.067c4.267 0 0-12.8-4.267-12.8z" />
|
||||
<glyph unicode="" glyph-name="fruit" d="M870.4 814.933c-204.8 196.267-529.067 192-725.333-8.533-196.267-204.8-192-529.067 8.533-725.333s524.8-192 725.333 12.8c196.267 200.533 192 524.8-8.533 721.067zM840.533 128c-174.933-179.2-465.067-183.467-644.267-8.533s-179.2 465.067-4.267 644.267 465.067 183.467 644.267 8.533c179.2-174.933 179.2-460.8 4.267-644.267zM145.067 366.933c-38.4 51.2-4.267 149.333 8.533 162.133 29.867 17.067 157.867-25.6 183.467-38.4s98.133-29.867 98.133-55.467c0-29.867-64-46.933-119.467-55.467-59.733-12.8-153.6-38.4-170.667-12.8zM256 170.667c-59.733 17.067-89.6 102.4-85.333 119.467 12.8 29.867 136.533 68.267 162.133 76.8 25.6 4.267 93.867 34.133 106.667 12.8 17.067-25.6-29.867-64-64-106.667-38.4-46.933-89.6-115.2-119.467-102.4zM405.333 622.933c-25.6 51.2-72.533 128-51.2 153.6 38.4 51.2 132.267 51.2 145.067 38.4 25.6-21.333 17.067-157.867 12.8-183.467s0-102.4-25.6-106.667c-29.867-8.533-55.467 46.933-81.067 98.133zM537.6 648.533c8.533 59.733 8.533 149.333 42.667 162.133 59.733 21.333 140.8-29.867 149.333-51.2 8.533-34.133-72.533-145.067-93.867-166.4s-59.733-85.333-85.333-76.8c-29.867 12.8-17.067 76.8-12.8 132.267zM494.933 217.6c-8.533-51.2-12.8-128-38.4-136.533-51.2-17.067-119.467 25.6-123.733 42.667-8.533 29.867 68.267 123.733 85.333 140.8s51.2 72.533 72.533 64c21.333-4.267 8.533-59.733 4.267-110.933zM320 516.267c-55.467 25.6-136.533 51.2-136.533 85.333 0 64 68.267 123.733 85.333 123.733 34.133 0 110.933-110.933 128-132.267 12.8-25.6 64-76.8 46.933-98.133-17.067-29.867-72.533 0-123.733 21.333zM887.467 482.133c38.4-51.2 8.533-149.333-17.067-162.133-29.867-17.067-145.067 38.4-170.667 46.933-25.6 12.8-98.133 29.867-98.133 55.467 0 29.867 64 38.4 123.733 51.2 55.467 8.533 140.8 34.133 162.133 8.533zM785.067 686.933c55.467-17.067 89.6-98.133 85.333-115.2-8.533-29.867-132.267-64-157.867-72.533-25.6-4.267-89.6-29.867-102.4-12.8-17.067 25.6 25.6 64 64 102.4 29.867 42.667 76.8 106.667 110.933 98.133zM725.333 328.533c51.2-17.067 102.4-46.933 102.4-76.8-4.267-51.2-64-115.2-98.133-115.2-29.867 0-89.6 106.667-102.4 132.267-12.8 21.333-51.2 76.8-34.133 98.133s76.8-17.067 132.267-38.4zM610.133 238.933c21.333-46.933 59.733-110.933 38.4-132.267-34.133-42.667-115.2-42.667-128-29.867-21.333 17.067-8.533 136.533-4.267 157.867 4.267 25.6 4.267 89.6 25.6 93.867 29.867 4.267 46.933-46.933 68.267-89.6z" />
|
||||
</font></defs></svg>
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 84 KiB |
Binary file not shown.
Binary file not shown.
|
@ -16,7 +16,7 @@ server {
|
|||
listen [::]:80 default_server;
|
||||
server_name _;
|
||||
autoindex off;
|
||||
client_max_body_size 50M;
|
||||
client_max_body_size 250M;
|
||||
|
||||
root /salix/dist;
|
||||
error_page 404 = @notfound;
|
||||
|
|
|
@ -53,5 +53,7 @@
|
|||
"Ticket id cannot be blank": "Ticket id cannot be blank",
|
||||
"Weekday cannot be blank": "Weekday cannot be blank",
|
||||
"This ticket can not be modified": "This ticket can not be modified",
|
||||
"You can't delete a confirmed order": "You can't delete a confirmed order"
|
||||
"You can't delete a confirmed order": "You can't delete a confirmed order",
|
||||
"Value has an invalid format": "Value has an invalid format",
|
||||
"The postcode doesn't exists. Ensure you put the correct format": "The postcode doesn't exists. Ensure you put the correct format"
|
||||
}
|
|
@ -101,5 +101,11 @@
|
|||
"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"
|
||||
"You can't delete a confirmed order": "No puedes borrar un pedido confirmado",
|
||||
"Can't create stowaway for this ticket": "No se puede crear un polizon para este ticket",
|
||||
"The socialName has an invalid format": "El nombre fiscal tiene un formato incorrecto",
|
||||
"Invalid quantity": "Cantidad invalida",
|
||||
"This postal code is not valid": "This postal code is not valid",
|
||||
"is invalid": "is invalid",
|
||||
"The postcode doesn't exists. Ensure you put the correct format": "El código postal no existe. Asegúrate de ponerlo con el formato correcto"
|
||||
}
|
|
@ -20,7 +20,7 @@
|
|||
"connector": "loopback-component-storage",
|
||||
"provider": "filesystem",
|
||||
"root": "./e2e/dms",
|
||||
"maxFileSize": "52428800",
|
||||
"maxFileSize": "262144000",
|
||||
"allowedContentTypes": [
|
||||
"application/x-7z-compressed",
|
||||
"application/x-zip-compressed",
|
||||
|
|
|
@ -22,18 +22,18 @@ module.exports = Self => {
|
|||
const models = Self.app.models;
|
||||
const resolvedState = 3;
|
||||
|
||||
const claimEnds = await models.ClaimEnd.find({
|
||||
include: {
|
||||
relation: 'claimDestination',
|
||||
fields: ['addressFk']
|
||||
},
|
||||
where: {claimFk: params.claimFk}
|
||||
});
|
||||
|
||||
let tx = await Self.beginTransaction({});
|
||||
try {
|
||||
let options = {transaction: tx};
|
||||
|
||||
const claimEnds = await models.ClaimEnd.find({
|
||||
include: {
|
||||
relation: 'claimDestination',
|
||||
fields: ['addressFk']
|
||||
},
|
||||
where: {claimFk: params.claimFk}
|
||||
}, options);
|
||||
|
||||
for (let i = 0; i < claimEnds.length; i++) {
|
||||
const claimEnd = claimEnds[i];
|
||||
const destination = claimEnd.claimDestination();
|
||||
|
@ -42,7 +42,7 @@ module.exports = Self => {
|
|||
if (!addressFk)
|
||||
continue;
|
||||
|
||||
let sale = await getSale(claimEnd.saleFk);
|
||||
let sale = await getSale(claimEnd.saleFk, options);
|
||||
let ticketFk = await getTicketId({
|
||||
addressFk: addressFk,
|
||||
companyFk: sale.ticket().companyFk,
|
||||
|
@ -51,7 +51,7 @@ module.exports = Self => {
|
|||
|
||||
let address = await models.Address.findOne({
|
||||
where: {id: addressFk}
|
||||
});
|
||||
}, options);
|
||||
|
||||
if (!ticketFk) {
|
||||
ticketFk = await createTicket(ctx, {
|
||||
|
@ -84,7 +84,7 @@ module.exports = Self => {
|
|||
}
|
||||
}
|
||||
|
||||
let claim = await Self.findById(params.claimFk);
|
||||
let claim = await Self.findById(params.claimFk, null, options);
|
||||
claim = await claim.updateAttributes({
|
||||
claimStateFk: resolvedState
|
||||
}, options);
|
||||
|
@ -98,7 +98,7 @@ module.exports = Self => {
|
|||
}
|
||||
};
|
||||
|
||||
async function getSale(saleFk) {
|
||||
async function getSale(saleFk, options) {
|
||||
return await Self.app.models.Sale.findOne({
|
||||
include: [
|
||||
{
|
||||
|
@ -116,7 +116,7 @@ module.exports = Self => {
|
|||
}
|
||||
}],
|
||||
where: {id: saleFk}
|
||||
});
|
||||
}, options);
|
||||
}
|
||||
|
||||
async function getTicketId(params, options) {
|
||||
|
|
|
@ -30,10 +30,11 @@ module.exports = Self => {
|
|||
JOIN vn.ticketState ts ON t.id = ts.ticketFk
|
||||
JOIN vn.agencyMode a ON t.agencyModeFk = a.id
|
||||
JOIN vn.warehouse w ON t.warehouseFk = w.id
|
||||
WHERE t.shipped >= CURDATE() AND t.clientFk = ? AND ts.alertLevel = 0 AND t.id <> ?
|
||||
WHERE t.shipped >= CURDATE() AND t.clientFk = ?
|
||||
AND ts.alertLevel = 0 AND t.id <> ?
|
||||
ORDER BY t.shipped
|
||||
LIMIT 3`;
|
||||
|
||||
return Self.rawSql(query, [id, ticketId]);
|
||||
LIMIT 5`;
|
||||
let tickets = await Self.rawSql(query, [params.clientFk, params.ticketFk]);
|
||||
return tickets;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -42,6 +42,21 @@ module.exports = Self => {
|
|||
next();
|
||||
});
|
||||
|
||||
Self.validateAsync('postalCode', hasValidPostcode, {
|
||||
message: `The postcode doesn't exists. Ensure you put the correct format`
|
||||
});
|
||||
|
||||
async function hasValidPostcode(err, done) {
|
||||
if (!this.postalCode)
|
||||
return done();
|
||||
|
||||
const models = Self.app.models;
|
||||
const postcode = await models.Postcode.findById(this.postalCode);
|
||||
|
||||
if (!postcode) err();
|
||||
done();
|
||||
}
|
||||
|
||||
// Helpers
|
||||
|
||||
Self.observe('before save', async function(ctx) {
|
||||
|
|
|
@ -108,6 +108,8 @@ module.exports = Self => {
|
|||
});
|
||||
|
||||
function cannotHaveET(err) {
|
||||
if (!this.fi) return;
|
||||
|
||||
let tin = this.fi.toUpperCase();
|
||||
let cannotHaveET = /^[A-B]/.test(tin);
|
||||
|
||||
|
@ -150,6 +152,31 @@ module.exports = Self => {
|
|||
done();
|
||||
}
|
||||
|
||||
Self.validateBinded('socialName', isAlpha, {
|
||||
message: 'The socialName has an invalid format'
|
||||
});
|
||||
|
||||
function isAlpha(value) {
|
||||
const regexp = new RegExp(/^[a-zA-Z\s]*$/);
|
||||
|
||||
return regexp.test(value);
|
||||
}
|
||||
|
||||
Self.validateAsync('postCode', hasValidPostcode, {
|
||||
message: `The postcode doesn't exists. Ensure you put the correct format`
|
||||
});
|
||||
|
||||
async function hasValidPostcode(err, done) {
|
||||
if (!this.postcode)
|
||||
return done();
|
||||
|
||||
const models = Self.app.models;
|
||||
const postcode = await models.Postcode.findById(this.postcode);
|
||||
|
||||
if (!postcode) err();
|
||||
done();
|
||||
}
|
||||
|
||||
Self.observe('before save', async function(ctx) {
|
||||
let changes = ctx.data || ctx.instance;
|
||||
let orgData = ctx.currentInstance;
|
||||
|
@ -199,9 +226,9 @@ module.exports = Self => {
|
|||
if (payMethodChanged || ibanChanged || dueDayChanged) {
|
||||
const message = `La forma de pago del cliente con id ${instance.id} ha cambiado`;
|
||||
const salesPersonFk = instance.salesPersonFk;
|
||||
const salesPerson = await Self.app.models.Worker.findById(salesPersonFk);
|
||||
|
||||
if (salesPerson) {
|
||||
if (salesPersonFk) {
|
||||
const salesPerson = await Self.app.models.Worker.findById(salesPersonFk);
|
||||
await Self.app.models.Message.send(ctx, {
|
||||
recipientFk: salesPerson.userFk,
|
||||
message: message
|
||||
|
|
|
@ -31,7 +31,11 @@
|
|||
value-field="id"
|
||||
label="Province">
|
||||
</vn-autocomplete>
|
||||
<vn-autocomplete vn-id="town" vn-one
|
||||
<vn-textfield vn-one
|
||||
label="City"
|
||||
field="$ctrl.address.city">
|
||||
</vn-textfield>
|
||||
<!-- <vn-autocomplete vn-id="town" vn-one
|
||||
label="City"
|
||||
url="/api/Towns"
|
||||
fields="['id', 'name']"
|
||||
|
@ -55,12 +59,16 @@
|
|||
{{code}}, {{town.name}} - {{town.province.name}}
|
||||
({{town.province.country.country}})
|
||||
</tpl-item>
|
||||
</vn-autocomplete>
|
||||
<vn-icon-button vn-auto margin-medium-v
|
||||
</vn-autocomplete> -->
|
||||
<vn-textfield vn-one
|
||||
label="Postcode"
|
||||
field="$ctrl.address.postalCode">
|
||||
</vn-textfield>
|
||||
<!-- <vn-icon-button vn-auto margin-medium-v
|
||||
icon="add_circle"
|
||||
vn-tooltip="New postcode"
|
||||
ng-click="postcode.open()">
|
||||
</vn-icon-button>
|
||||
</vn-icon-button> -->
|
||||
</vn-horizontal>
|
||||
<vn-horizontal>
|
||||
<vn-autocomplete
|
||||
|
|
|
@ -47,7 +47,11 @@
|
|||
value-field="id"
|
||||
label="Province">
|
||||
</vn-autocomplete>
|
||||
<vn-autocomplete vn-id="town" vn-one
|
||||
<vn-textfield vn-one
|
||||
label="City"
|
||||
field="$ctrl.address.city">
|
||||
</vn-textfield>
|
||||
<!-- <vn-autocomplete vn-id="town" vn-one
|
||||
label="City"
|
||||
url="/api/Towns"
|
||||
fields="['id', 'name']"
|
||||
|
@ -66,12 +70,16 @@
|
|||
show-field="code"
|
||||
value-field="code"
|
||||
label="Postcode">
|
||||
</vn-autocomplete>
|
||||
<vn-icon-button vn-auto margin-medium-v
|
||||
</vn-autocomplete> -->
|
||||
<vn-textfield vn-one
|
||||
label="Postcode"
|
||||
field="$ctrl.address.postalCode">
|
||||
</vn-textfield>
|
||||
<!-- <vn-icon-button vn-auto margin-medium-v
|
||||
icon="add_circle"
|
||||
vn-tooltip="New postcode"
|
||||
ng-click="postcode.open()">
|
||||
</vn-icon-button>
|
||||
</vn-icon-button> -->
|
||||
</vn-horizontal>
|
||||
<vn-horizontal>
|
||||
<vn-autocomplete vn-one
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
ng-if="$ctrl.isDefaultAddress(address)">
|
||||
</vn-icon-button>
|
||||
<vn-icon-button
|
||||
ng-if="!address.isActive"
|
||||
ng-if="!address.isActive && !$ctrl.isDefaultAddress(address)"
|
||||
icon="star_border"
|
||||
vn-tooltip="Active first to set as default">
|
||||
</vn-icon-button>
|
||||
|
|
|
@ -50,7 +50,11 @@
|
|||
</vn-autocomplete>
|
||||
</vn-horizontal>
|
||||
<vn-horizontal>
|
||||
<vn-autocomplete vn-id="town" vn-one
|
||||
<vn-textfield vn-one
|
||||
label="City"
|
||||
field="$ctrl.client.city">
|
||||
</vn-textfield>
|
||||
<!-- <vn-autocomplete vn-id="town" vn-one
|
||||
label="City"
|
||||
url="/api/Towns"
|
||||
fields="['id', 'name']"
|
||||
|
@ -58,13 +62,17 @@
|
|||
show-field="name"
|
||||
value-field="name"
|
||||
field="$ctrl.client.city">
|
||||
</vn-autocomplete>
|
||||
<vn-icon-button vn-auto margin-medium-v
|
||||
</vn-autocomplete> -->
|
||||
<!-- <vn-icon-button vn-auto margin-medium-v
|
||||
icon="add_circle"
|
||||
vn-tooltip="New postcode"
|
||||
ng-click="postcode.open()">
|
||||
</vn-icon-button>
|
||||
<vn-autocomplete vn-one
|
||||
</vn-icon-button> -->
|
||||
<vn-textfield vn-one
|
||||
label="Postcode"
|
||||
field="$ctrl.client.postcode">
|
||||
</vn-textfield>
|
||||
<!-- <vn-autocomplete vn-one
|
||||
url="/api/Postcodes/location"
|
||||
fields="['code', 'townFk']"
|
||||
field="$ctrl.client.postcode"
|
||||
|
@ -79,7 +87,7 @@
|
|||
{{code}}, {{town.name}} - {{town.province.name}}
|
||||
({{town.province.country.country}})
|
||||
</tpl-item>
|
||||
</vn-autocomplete>
|
||||
</vn-autocomplete> -->
|
||||
</vn-horizontal>
|
||||
<vn-horizontal>
|
||||
<vn-textfield
|
||||
|
|
|
@ -45,7 +45,15 @@
|
|||
</vn-autocomplete>
|
||||
</vn-horizontal>
|
||||
<vn-horizontal>
|
||||
<vn-autocomplete vn-id="town" vn-one
|
||||
<vn-textfield vn-one
|
||||
label="City"
|
||||
field="$ctrl.client.city">
|
||||
</vn-textfield>
|
||||
<vn-textfield vn-one
|
||||
label="Postcode"
|
||||
field="$ctrl.client.postcode">
|
||||
</vn-textfield>
|
||||
<!-- <vn-autocomplete vn-id="town" vn-one
|
||||
label="City"
|
||||
url="/api/Towns"
|
||||
fields="['id', 'name']"
|
||||
|
@ -64,7 +72,7 @@
|
|||
show-field="code"
|
||||
value-field="code"
|
||||
label="Postcode">
|
||||
</vn-autocomplete>
|
||||
</vn-autocomplete> -->
|
||||
</vn-horizontal>
|
||||
<vn-horizontal pad-small-v>
|
||||
<vn-check
|
||||
|
|
|
@ -8,6 +8,7 @@ Enter a new search: Introduce una nueva búsqueda
|
|||
Plant: Planta
|
||||
Flower: Flor
|
||||
Handmade: Confección
|
||||
Fruit: Fruta
|
||||
Green: Verde
|
||||
Lines: Lineas
|
||||
Accessories: Complemento
|
||||
|
|
|
@ -243,6 +243,31 @@ class Controller {
|
|||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Gets a zone from an agency
|
||||
*/
|
||||
onChangeWarehouse(warehouseId) {
|
||||
let params = {
|
||||
landed: this.ticket.landed,
|
||||
addressFk: this.ticket.addressFk,
|
||||
agencyModeFk: this.ticket.agencyModeFk,
|
||||
warehouseFk: warehouseId
|
||||
};
|
||||
|
||||
this.ticket.zoneFk = null;
|
||||
let query = `/api/Agencies/getShipped`;
|
||||
this.$http.get(query, {params}).then(res => {
|
||||
if (res.data)
|
||||
this.ticket.zoneFk = res.data.id;
|
||||
|
||||
if (!res.data) {
|
||||
this.vnApp.showMessage(
|
||||
this.$translate.instant('No delivery zone available for this parameters')
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async onStepChange() {
|
||||
if (this.isFormInvalid()) {
|
||||
return this.vnApp.showError(
|
||||
|
|
Loading…
Reference in New Issue