Merge pull request '2534 - Fill sage data before enable taxDataChecked' (#432) from 2534-sage_taxDataChecked into dev
gitea/salix/pipeline/head This commit looks good Details

Reviewed-on: #432
Reviewed-by: Carlos Jimenez Ruiz <carlosjr@verdnatura.es>
This commit is contained in:
Carlos Jimenez Ruiz 2020-11-04 12:54:13 +00:00
commit 47b845da46
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() => {
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.saveButton);
await page.waitToClick(selectors.globalItems.acceptButton);

View File

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

View File

@ -81,5 +81,6 @@
"shipped": "Shipped",
"landed": "Landed",
"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",
"landed": "F. entrega",
"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', () => {
const clientId = 101;
const employeeId = 1;
const salesAssistantId = 21;
const administrativeId = 5;
afterAll(async done => {
const clientId = 101;
const ctx = {req: {accessToken: {userId: 5}}};
const ctx = {req: {accessToken: {userId: administrativeId}}};
ctx.args = {postcode: 46460};
await app.models.Client.updateFiscalData(ctx, clientId);
@ -12,8 +14,8 @@ describe('Client updateFiscalData', () => {
done();
});
it('should return an error if the user is not administrative and the isTaxDataChecked value is true', async() => {
const ctx = {req: {accessToken: {userId: 1}}};
it('should return an error if the user is not salesAssistant and the isTaxDataChecked value is true', async() => {
const ctx = {req: {accessToken: {userId: employeeId}}};
ctx.args = {};
let error;
@ -22,11 +24,30 @@ describe('Client updateFiscalData', () => {
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() => {
const ctx = {req: {accessToken: {userId: 5}}};
const ctx = {req: {accessToken: {userId: administrativeId}}};
ctx.args = {postcode: 46680};
const client = await app.models.Client.findById(clientId);

View File

@ -45,15 +45,15 @@ module.exports = Self => {
},
{
arg: 'sageTaxTypeFk',
type: 'number'
type: 'any'
},
{
arg: 'sageTransactionTypeFk',
type: 'number'
type: 'any'
},
{
arg: 'transferorFk',
type: 'number'
type: 'any'
},
{
arg: 'hasToInvoiceByAddress',
@ -118,6 +118,15 @@ module.exports = Self => {
if (!isSalesAssistant && client.isTaxDataChecked)
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) {
const logRecord = {
originFk: clientId,

View File

@ -187,7 +187,7 @@ module.exports = Self => {
// Validate socialName format
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 socialNameChanged = hasChanges

View File

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