Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 2563-supplier_fiscalData

This commit is contained in:
Carlos Jimenez Ruiz 2020-11-04 15:19:07 +01:00
commit c826c1ccc1
8 changed files with 51 additions and 14 deletions

View File

@ -57,6 +57,8 @@ describe('Client lock verified data path', () => {
}); });
it('should check the Verified data checkbox', async() => { it('should check the Verified data checkbox', async() => {
await page.autocompleteSearch(selectors.clientFiscalData.sageTax, 'operaciones no sujetas');
await page.autocompleteSearch(selectors.clientFiscalData.sageTransaction, 'regularización de inversiones');
await page.waitToClick(selectors.clientFiscalData.verifiedDataCheckbox); await page.waitToClick(selectors.clientFiscalData.verifiedDataCheckbox);
await page.waitToClick(selectors.clientFiscalData.saveButton); await page.waitToClick(selectors.clientFiscalData.saveButton);
await page.waitToClick(selectors.globalItems.acceptButton); await page.waitToClick(selectors.globalItems.acceptButton);

View File

@ -21,6 +21,7 @@ let buildDir = 'dist';
let backSources = [ let backSources = [
'!node_modules', '!node_modules',
'!loopback/locale/*.json',
'loopback', 'loopback',
'modules/*/back/**', 'modules/*/back/**',
'modules/*/back/*', 'modules/*/back/*',

View File

@ -81,5 +81,6 @@
"shipped": "Shipped", "shipped": "Shipped",
"landed": "Landed", "landed": "Landed",
"addressFk": "Address", "addressFk": "Address",
"companyFk": "Company" "companyFk": "Company",
"You need to fill sage information before you check verified data": "You need to fill sage information before you check verified data"
} }

View File

@ -157,6 +157,5 @@
"landed": "F. entrega", "landed": "F. entrega",
"addressFk": "Consignatario", "addressFk": "Consignatario",
"companyFk": "Empresa", "companyFk": "Empresa",
"The social name cannot be empty": "La razón social no puede quedar en blanco", "You need to fill sage information before you check verified data": "Debes rellenar la información de sage antes de marcar datos comprobados"
"The nif cannot be empty": "El NIF no puede quedar en blanco"
} }

View File

@ -2,9 +2,11 @@ const app = require('vn-loopback/server/server');
describe('Client updateFiscalData', () => { describe('Client updateFiscalData', () => {
const clientId = 101; const clientId = 101;
const employeeId = 1;
const salesAssistantId = 21;
const administrativeId = 5;
afterAll(async done => { afterAll(async done => {
const clientId = 101; const ctx = {req: {accessToken: {userId: administrativeId}}};
const ctx = {req: {accessToken: {userId: 5}}};
ctx.args = {postcode: 46460}; ctx.args = {postcode: 46460};
await app.models.Client.updateFiscalData(ctx, clientId); await app.models.Client.updateFiscalData(ctx, clientId);
@ -12,8 +14,8 @@ describe('Client updateFiscalData', () => {
done(); done();
}); });
it('should return an error if the user is not administrative and the isTaxDataChecked value is true', async() => { it('should return an error if the user is not salesAssistant and the isTaxDataChecked value is true', async() => {
const ctx = {req: {accessToken: {userId: 1}}}; const ctx = {req: {accessToken: {userId: employeeId}}};
ctx.args = {}; ctx.args = {};
let error; let error;
@ -22,11 +24,30 @@ describe('Client updateFiscalData', () => {
error = e; error = e;
}); });
expect(error.message).toBeDefined(); expect(error.message).toEqual(`You can't make changes on a client with verified data`);
});
it('should return an error if the salesAssistant did not fill the sage data before checking verified data', async() => {
const client = await app.models.Client.findById(clientId);
await client.updateAttribute('isTaxDataChecked', false);
const ctx = {req: {accessToken: {userId: salesAssistantId}}};
ctx.args = {isTaxDataChecked: true};
let error;
await app.models.Client.updateFiscalData(ctx, clientId)
.catch(e => {
error = e;
});
expect(error.message).toEqual('You need to fill sage information before you check verified data');
// Restores
await client.updateAttribute('isTaxDataChecked', true);
}); });
it('should update the client fiscal data and return the count if changes made', async() => { it('should update the client fiscal data and return the count if changes made', async() => {
const ctx = {req: {accessToken: {userId: 5}}}; const ctx = {req: {accessToken: {userId: administrativeId}}};
ctx.args = {postcode: 46680}; ctx.args = {postcode: 46680};
const client = await app.models.Client.findById(clientId); const client = await app.models.Client.findById(clientId);

View File

@ -45,15 +45,15 @@ module.exports = Self => {
}, },
{ {
arg: 'sageTaxTypeFk', arg: 'sageTaxTypeFk',
type: 'number' type: 'any'
}, },
{ {
arg: 'sageTransactionTypeFk', arg: 'sageTransactionTypeFk',
type: 'number' type: 'any'
}, },
{ {
arg: 'transferorFk', arg: 'transferorFk',
type: 'number' type: 'any'
}, },
{ {
arg: 'hasToInvoiceByAddress', arg: 'hasToInvoiceByAddress',
@ -118,6 +118,15 @@ module.exports = Self => {
if (!isSalesAssistant && client.isTaxDataChecked) if (!isSalesAssistant && client.isTaxDataChecked)
throw new UserError(`You can't make changes on a client with verified data`); throw new UserError(`You can't make changes on a client with verified data`);
// Sage data validation
const taxDataChecked = args.isTaxDataChecked;
const sageTaxChecked = client.sageTaxTypeFk || args.sageTaxTypeFk;
const sageTransactionChecked = client.sageTransactionTypeFk || args.sageTransactionTypeFk;
const hasSageData = sageTaxChecked && sageTransactionChecked;
if (taxDataChecked && !hasSageData)
throw new UserError(`You need to fill sage information before you check verified data`);
if (args.despiteOfClient) { if (args.despiteOfClient) {
const logRecord = { const logRecord = {
originFk: clientId, originFk: clientId,

View File

@ -188,7 +188,7 @@ module.exports = Self => {
// Validate socialName format // Validate socialName format
const hasChanges = orgData && changes; const hasChanges = orgData && changes;
const socialName = changes.socialName || orgData.socialName; const socialName = changes && changes.socialName || orgData && orgData.socialName;
const isTaxDataChecked = hasChanges && (changes.isTaxDataChecked || orgData.isTaxDataChecked); const isTaxDataChecked = hasChanges && (changes.isTaxDataChecked || orgData.isTaxDataChecked);
const socialNameChanged = hasChanges const socialNameChanged = hasChanges

View File

@ -39,7 +39,8 @@
label="Social name" label="Social name"
ng-model="$ctrl.client.socialName" ng-model="$ctrl.client.socialName"
rule rule
info="You can use letters and spaces"> info="You can use letters and spaces"
required="true">
</vn-textfield> </vn-textfield>
<vn-textfield <vn-textfield
vn-one vn-one
@ -63,6 +64,7 @@
show-field="vat" show-field="vat"
value-field="id" value-field="id"
label="Sage tax type" label="Sage tax type"
vn-acl="salesAssistant"
rule> rule>
</vn-autocomplete> </vn-autocomplete>
<vn-autocomplete vn-one <vn-autocomplete vn-one
@ -71,6 +73,7 @@
show-field="transaction" show-field="transaction"
value-field="id" value-field="id"
label="Sage transaction type" label="Sage transaction type"
vn-acl="salesAssistant"
rule> rule>
</vn-autocomplete> </vn-autocomplete>
<vn-autocomplete vn-one <vn-autocomplete vn-one
@ -82,6 +85,7 @@
value-field="id" value-field="id"
label="Previous client" label="Previous client"
info="In case of a company succession, specify the grantor company" info="In case of a company succession, specify the grantor company"
vn-acl="salesAssistant"
rule> rule>
</vn-autocomplete> </vn-autocomplete>
</vn-horizontal> </vn-horizontal>