2534 - Fill sage data before enable taxDataChecked #432

Merged
carlosjr merged 3 commits from 2534-sage_taxDataChecked into dev 2020-11-04 12:54:15 +00:00
8 changed files with 52 additions and 13 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

@ -156,5 +156,6 @@
"shipped": "F. envío", "shipped": "F. envío",
"landed": "F. entrega", "landed": "F. entrega",
"addressFk": "Consignatario", "addressFk": "Consignatario",
"companyFk": "Empresa" "companyFk": "Empresa",
"You need to fill sage information before you check verified data": "Debes rellenar la información de sage antes de marcar datos comprobados"
} }

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`);
});
joan marked this conversation as resolved
Review

who is d?

who is d?
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

@ -187,7 +187,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>