Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into dev
This commit is contained in:
commit
432085c301
|
@ -80,7 +80,6 @@ export default {
|
|||
receivedCoreVNLCheckbox: `vn-check[label='Received core VNL'] > label > input`,
|
||||
receivedB2BVNLCheckbox: `vn-check[label='Received B2B VNL'] > label > input`,
|
||||
swiftBicAutocomplete: 'vn-client-billing-data vn-autocomplete[field="$ctrl.client.bankEntityFk"]',
|
||||
firstSwiftBicOption: `vn-client-billing-data vn-autocomplete[field="$ctrl.client.bankEntityFk"] vn-drop-down ul > li:nth-child(1)`,
|
||||
clearswiftBicButton: `vn-client-billing-data vn-autocomplete[field="$ctrl.client.bankEntityFk"] > div > div > div > vn-icon > i`,
|
||||
newBankEntityButton: 'vn-client-billing-data vn-icon-button[vn-tooltip="New bank entity"] > button',
|
||||
newBankEntityName: 'vn-client-billing-data > vn-dialog vn-textfield[label="Name"] input',
|
||||
|
@ -208,22 +207,16 @@ export default {
|
|||
itemTags: {
|
||||
goToItemIndexButton: 'vn-item-descriptor [ui-sref="item.index"]',
|
||||
tagsButton: `vn-left-menu a[ui-sref="item.card.tags"]`,
|
||||
firstRemoveTagButton: `vn-item-tags vn-horizontal:nth-child(2) vn-icon-button[icon="delete"]`,
|
||||
firstTagAutocomplete: `vn-item-tags vn-horizontal:nth-child(2) > vn-autocomplete[field="itemTag.tagFk"]`,
|
||||
firstValueInput: `vn-item-tags vn-horizontal:nth-child(2) > vn-textfield[label="Value"] input`,
|
||||
firstRelevancyInput: `vn-horizontal:nth-child(2) > vn-textfield[label="Relevancy"] input`,
|
||||
secondTagAutocomplete: `vn-item-tags vn-horizontal:nth-child(3) > vn-autocomplete[field="itemTag.tagFk"]`,
|
||||
secondValueInput: `vn-item-tags vn-horizontal:nth-child(3) > vn-textfield[label="Value"] input`,
|
||||
secondRelevancyInput: `vn-horizontal:nth-child(3) > vn-textfield[label="Relevancy"] input`,
|
||||
thirdTagAutocomplete: `vn-item-tags vn-horizontal:nth-child(4) > vn-autocomplete[field="itemTag.tagFk"]`,
|
||||
thirdValueInput: `vn-item-tags vn-horizontal:nth-child(4) > vn-textfield[label="Value"] input`,
|
||||
thirdRelevancyInput: `vn-horizontal:nth-child(4) > vn-textfield[label="Relevancy"] input`,
|
||||
fourthTagAutocomplete: `vn-item-tags vn-horizontal:nth-child(5) > vn-autocomplete[field="itemTag.tagFk"]`,
|
||||
fourthValueInput: `vn-item-tags vn-horizontal:nth-child(5) > vn-textfield[label="Value"] input`,
|
||||
fourthRelevancyInput: `vn-horizontal:nth-child(5) > vn-textfield[label="Relevancy"] input`,
|
||||
fourthRemoveTagButton: `vn-item-tags vn-horizontal:nth-child(5) vn-icon-button[icon="delete"]`,
|
||||
fifthTagAutocomplete: `vn-item-tags vn-horizontal:nth-child(6) > vn-autocomplete[field="itemTag.tagFk"]`,
|
||||
fifthValueInput: `vn-item-tags vn-horizontal:nth-child(6) > vn-textfield[label="Value"] input`,
|
||||
fifthRelevancyInput: `vn-horizontal:nth-child(6) > vn-textfield[label="Relevancy"] input`,
|
||||
sixthTagAutocomplete: `vn-item-tags vn-horizontal:nth-child(7) > vn-autocomplete[field="itemTag.tagFk"]`,
|
||||
sixthValueInput: `vn-item-tags vn-horizontal:nth-child(7) > vn-textfield[label="Value"] input`,
|
||||
sixthRelevancyInput: `vn-horizontal:nth-child(7) > vn-textfield[label="Relevancy"] input`,
|
||||
seventhTagAutocomplete: `vn-item-tags vn-horizontal:nth-child(8) > vn-autocomplete[field="itemTag.tagFk"]`,
|
||||
seventhValueInput: `vn-item-tags vn-horizontal:nth-child(8) > vn-textfield[label="Value"] input`,
|
||||
seventhRelevancyInput: `vn-horizontal:nth-child(8) > vn-textfield[label="Relevancy"] input`,
|
||||
|
@ -346,7 +339,7 @@ export default {
|
|||
firstSaleDiscountInput: 'vn-ticket-sale:nth-child(1) vn-ticket-sale-edit-discount > div > vn-textfield > div > div > div.infix > input.ng-not-empty',
|
||||
firstSaleImport: 'vn-ticket-sale:nth-child(1) vn-td:nth-child(9)',
|
||||
firstSaleReservedIcon: 'vn-ticket-sale vn-tr:nth-child(1) > vn-td:nth-child(2) > vn-icon:nth-child(3)',
|
||||
firstSaleColour: `vn-ticket-sale vn-tr:nth-child(1) vn-td:nth-child(5) section:nth-child(5)`,
|
||||
firstSaleColour: `vn-ticket-sale vn-tr:nth-child(1) vn-td:nth-child(5) section:nth-child(1)`,
|
||||
firstSaleLength: `vn-ticket-sale vn-tr:nth-child(1) vn-td:nth-child(5) section:nth-child(3)`,
|
||||
firstSaleCheckbox: `vn-ticket-sale vn-tr:nth-child(1) vn-check[field="sale.checked"] label`,
|
||||
secondSaleClaimId: 'vn-ticket-sale > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(2) > a > vn-icon',
|
||||
|
|
|
@ -90,7 +90,7 @@ describe('Client Edit fiscalData path', () => {
|
|||
.waitForLastSnackbar();
|
||||
|
||||
expect(result).toEqual('Cannot check VIES and Equalization Tax');
|
||||
});
|
||||
}, 15000);
|
||||
|
||||
it('should receive an error if the fiscal id contains A or B at the beginning', async() => {
|
||||
const result = await nightmare
|
||||
|
|
|
@ -9,10 +9,10 @@ describe('Item summary path', () => {
|
|||
.loginAndModule('employee', 'item');
|
||||
});
|
||||
|
||||
it('should search for the item Gem of Time', async () => {
|
||||
it('should search for an item', async() => {
|
||||
const result = await nightmare
|
||||
.wait(selectors.itemsIndex.searchItemInput)
|
||||
.type(selectors.itemsIndex.searchItemInput, 'Gem of Time')
|
||||
.type(selectors.itemsIndex.searchItemInput, 'Object1 Gem1 5')
|
||||
.click(selectors.itemsIndex.searchButton)
|
||||
.waitForNumberOfElements(selectors.itemsIndex.searchResult, 1)
|
||||
.countElement(selectors.itemsIndex.searchResult);
|
||||
|
@ -20,9 +20,9 @@ describe('Item summary path', () => {
|
|||
expect(result).toEqual(1);
|
||||
});
|
||||
|
||||
it(`should click on the search result summary button to open the item summary popup`, async () => {
|
||||
it(`should click on the search result summary button to open the item summary popup`, async() => {
|
||||
const isVisibleBefore = await nightmare
|
||||
.waitForTextInElement(selectors.itemsIndex.searchResult, 'Gem of Time')
|
||||
.waitForTextInElement(selectors.itemsIndex.searchResult, 'Object1 Gem1 5')
|
||||
.isVisible(selectors.itemSummary.basicData);
|
||||
|
||||
const isVisibleAfter = await nightmare
|
||||
|
@ -33,15 +33,15 @@ describe('Item summary path', () => {
|
|||
expect(isVisibleAfter).toBeTruthy();
|
||||
});
|
||||
|
||||
it(`should check the item summary preview shows fields from basic data`, async () => {
|
||||
it(`should check the item summary preview shows fields from basic data`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.basicData, 'Name: Gem of Time')
|
||||
.waitForTextInElement(selectors.itemSummary.basicData, 'Name: Object1 Gem1 5')
|
||||
.waitToGetProperty(selectors.itemSummary.basicData, 'innerText');
|
||||
|
||||
expect(result).toContain('Name: Gem of Time');
|
||||
expect(result).toContain('Name: Object1 Gem1 5');
|
||||
});
|
||||
|
||||
it(`should check the item summary preview shows fields from tags`, async () => {
|
||||
it(`should check the item summary preview shows fields from tags`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.tags, 'Color: Yellow')
|
||||
.waitToGetProperty(selectors.itemSummary.tags, 'innerText');
|
||||
|
@ -49,7 +49,7 @@ describe('Item summary path', () => {
|
|||
expect(result).toContain('Color: Yellow');
|
||||
});
|
||||
|
||||
it(`should check the item summary preview shows fields from niche`, async () => {
|
||||
it(`should check the item summary preview shows fields from niche`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.niche, 'Warehouse One: A1')
|
||||
.waitToGetProperty(selectors.itemSummary.niche, 'innerText');
|
||||
|
@ -57,7 +57,7 @@ describe('Item summary path', () => {
|
|||
expect(result).toContain('Warehouse One: A1');
|
||||
});
|
||||
|
||||
it(`should check the item summary preview shows fields from botanical`, async () => {
|
||||
it(`should check the item summary preview shows fields from botanical`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.botanical, 'Botanical: Hedera helix')
|
||||
.waitToGetProperty(selectors.itemSummary.botanical, 'innerText');
|
||||
|
@ -65,7 +65,7 @@ describe('Item summary path', () => {
|
|||
expect(result).toContain('Botanical: Hedera helix');
|
||||
});
|
||||
|
||||
it(`should check the item summary preview shows fields from barcode`, async () => {
|
||||
it(`should check the item summary preview shows fields from barcode`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.barcode, '1')
|
||||
.waitToGetProperty(selectors.itemSummary.barcode, 'innerText');
|
||||
|
@ -73,7 +73,7 @@ describe('Item summary path', () => {
|
|||
expect(result).toContain('1');
|
||||
});
|
||||
|
||||
it(`should close the summary popup`, async () => {
|
||||
it(`should close the summary popup`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.itemsIndex.closeItemSummaryPreview)
|
||||
.isVisible(selectors.itemSummary.basicData);
|
||||
|
@ -81,11 +81,11 @@ describe('Item summary path', () => {
|
|||
expect(result).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should search for the item Gem of Mind', async () => {
|
||||
it('should search for other item', async() => {
|
||||
const result = await nightmare
|
||||
.clearInput('body > vn-app > vn-vertical > vn-vertical > ui-view > vn-item-index > div > div > vn-card:nth-child(1) > div > vn-searchbar > form > vn-horizontal > vn-textfield > div > div > div.infix > input')
|
||||
.click(selectors.itemsIndex.searchButton)
|
||||
.type(selectors.itemsIndex.searchItemInput, 'Gem of Mind')
|
||||
.type(selectors.itemsIndex.searchItemInput, 'Object2 Gem2 3')
|
||||
.click(selectors.itemsIndex.searchButton)
|
||||
.waitForNumberOfElements(selectors.itemsIndex.searchResult, 1)
|
||||
.countElement(selectors.itemsIndex.searchResult);
|
||||
|
@ -93,9 +93,9 @@ describe('Item summary path', () => {
|
|||
expect(result).toEqual(1);
|
||||
});
|
||||
|
||||
it(`should now click on the search result summary button to open the item summary popup`, async () => {
|
||||
it(`should now click on the search result summary button to open the item summary popup`, async() => {
|
||||
const isVisibleBefore = await nightmare
|
||||
.waitForTextInElement(selectors.itemsIndex.searchResult, 'Gem of Mind')
|
||||
.waitForTextInElement(selectors.itemsIndex.searchResult, 'Object2 Gem2 3')
|
||||
.isVisible(selectors.itemSummary.basicData);
|
||||
|
||||
const isVisibleAfter = await nightmare
|
||||
|
@ -107,15 +107,15 @@ describe('Item summary path', () => {
|
|||
expect(isVisibleAfter).toBeTruthy();
|
||||
});
|
||||
|
||||
it(`should now check the item summary preview shows fields from basic data`, async () => {
|
||||
it(`should now check the item summary preview shows fields from basic data`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.basicData, 'Name: Gem of Mind')
|
||||
.waitForTextInElement(selectors.itemSummary.basicData, 'Name: Object2 Gem2 3')
|
||||
.waitToGetProperty(selectors.itemSummary.basicData, 'innerText');
|
||||
|
||||
expect(result).toContain('Name: Gem of Mind');
|
||||
expect(result).toContain('Name: Object2 Gem2 3');
|
||||
});
|
||||
|
||||
it(`should now check the item summary preview shows fields from tags`, async () => {
|
||||
it(`should now check the item summary preview shows fields from tags`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.tags, 'Color: Red')
|
||||
.waitToGetProperty(selectors.itemSummary.tags, 'innerText');
|
||||
|
@ -123,7 +123,7 @@ describe('Item summary path', () => {
|
|||
expect(result).toContain('Color: Red');
|
||||
});
|
||||
|
||||
it(`should now check the item summary preview shows fields from niche`, async () => {
|
||||
it(`should now check the item summary preview shows fields from niche`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.niche, 'Warehouse One: A4')
|
||||
.waitToGetProperty(selectors.itemSummary.niche, 'innerText');
|
||||
|
@ -131,7 +131,7 @@ describe('Item summary path', () => {
|
|||
expect(result).toContain('Warehouse One: A4');
|
||||
});
|
||||
|
||||
it(`should now check the item summary preview shows fields from botanical`, async () => {
|
||||
it(`should now check the item summary preview shows fields from botanical`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.botanical, 'Botanical: -')
|
||||
.waitToGetProperty(selectors.itemSummary.botanical, 'innerText');
|
||||
|
@ -139,7 +139,7 @@ describe('Item summary path', () => {
|
|||
expect(result).toContain('Botanical: -');
|
||||
});
|
||||
|
||||
it(`should now check the item summary preview shows fields from barcode`, async () => {
|
||||
it(`should now check the item summary preview shows fields from barcode`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.barcode, '4')
|
||||
.waitToGetProperty(selectors.itemSummary.barcode, 'innerText');
|
||||
|
@ -147,7 +147,7 @@ describe('Item summary path', () => {
|
|||
expect(result).toContain('4');
|
||||
});
|
||||
|
||||
it(`should now close the summary popup`, async () => {
|
||||
it(`should now close the summary popup`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.itemsIndex.closeItemSummaryPreview)
|
||||
.isVisible(selectors.itemSummary.basicData);
|
||||
|
@ -155,7 +155,7 @@ describe('Item summary path', () => {
|
|||
expect(result).toBeFalsy();
|
||||
});
|
||||
|
||||
it(`should navigate to the one of the items detailed section`, async () => {
|
||||
it(`should navigate to the one of the items detailed section`, async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.itemsIndex.searchResult)
|
||||
.waitForURL('summary')
|
||||
|
@ -164,36 +164,36 @@ describe('Item summary path', () => {
|
|||
expect(url.hash).toContain('summary');
|
||||
});
|
||||
|
||||
it(`should check the item summary shows fields from basic data section`, async () => {
|
||||
it(`should check the item summary shows fields from basic data section`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInElement(selectors.itemSummary.basicData, 'Name: Gem of Mind')
|
||||
.waitForTextInElement(selectors.itemSummary.basicData, 'Name: Object2 Gem2 3')
|
||||
.waitToGetProperty(selectors.itemSummary.basicData, 'innerText');
|
||||
|
||||
expect(result).toContain('Name: Gem of Mind');
|
||||
expect(result).toContain('Name: Object2 Gem2 3');
|
||||
});
|
||||
|
||||
it(`should check the item summary shows fields from tags section`, async () => {
|
||||
it(`should check the item summary shows fields from tags section`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(selectors.itemSummary.tags, 'innerText');
|
||||
|
||||
expect(result).toContain('Color: Red');
|
||||
});
|
||||
|
||||
it(`should check the item summary shows fields from niches section`, async () => {
|
||||
it(`should check the item summary shows fields from niches section`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(selectors.itemSummary.niche, 'innerText');
|
||||
|
||||
expect(result).toContain('Warehouse One: A4');
|
||||
});
|
||||
|
||||
it(`should check the item summary shows fields from botanical section`, async () => {
|
||||
it(`should check the item summary shows fields from botanical section`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(selectors.itemSummary.botanical, 'innerText');
|
||||
|
||||
expect(result).toContain('Botanical: -');
|
||||
});
|
||||
|
||||
it(`should check the item summary shows fields from barcodes section`, async () => {
|
||||
it(`should check the item summary shows fields from barcodes section`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(selectors.itemSummary.barcode, 'innerText');
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ describe('Item Edit basic data path', () => {
|
|||
beforeAll(() => {
|
||||
nightmare
|
||||
.loginAndModule('buyer', 'item')
|
||||
.accessToSearchResult('Gem of Mind')
|
||||
.accessToSearchResult('Object2 Gem2 3')
|
||||
.accessToSection('item.card.data');
|
||||
});
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ describe('Item edit tax path', () => {
|
|||
beforeAll(() => {
|
||||
nightmare
|
||||
.loginAndModule('buyer', 'item')
|
||||
.accessToSearchResult('Gem of Time')
|
||||
.accessToSearchResult('Object1 Gem1 5')
|
||||
.accessToSection('item.card.tax');
|
||||
});
|
||||
|
||||
|
|
|
@ -7,88 +7,43 @@ describe('Item create tags path', () => {
|
|||
beforeAll(() => {
|
||||
nightmare
|
||||
.loginAndModule('buyer', 'item')
|
||||
.accessToSearchResult('Gem of Time')
|
||||
.accessToSearchResult('Object1 Gem1 5')
|
||||
.accessToSection('item.card.tags');
|
||||
});
|
||||
|
||||
it(`should create a new tag and delete a former one`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.itemTags.firstRemoveTagButton)
|
||||
.waitToClick(selectors.itemTags.fourthRemoveTagButton)
|
||||
.waitToClick(selectors.itemTags.addItemTagButton)
|
||||
.autocompleteSearch(selectors.itemTags.seventhTagAutocomplete, 'Ancho de la base')
|
||||
.type(selectors.itemTags.seventhValueInput, '50')
|
||||
.clearInput(selectors.itemTags.seventhRelevancyInput)
|
||||
.type(selectors.itemTags.seventhRelevancyInput, '1')
|
||||
.type(selectors.itemTags.seventhRelevancyInput, '4')
|
||||
.click(selectors.itemTags.submitItemTagsButton)
|
||||
.waitForLastSnackbar();
|
||||
|
||||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
|
||||
it(`should confirm the first row data is the expected one`, async() => {
|
||||
it(`should confirm the fourth row data is the expected one`, async() => {
|
||||
let result = await nightmare
|
||||
.click(selectors.itemBasicData.basicDataButton)
|
||||
.wait(selectors.itemBasicData.nameInput)
|
||||
.click(selectors.itemTags.tagsButton)
|
||||
.wait('vn-item-tags')
|
||||
.waitToGetProperty(`${selectors.itemTags.firstTagAutocomplete} input`, 'value');
|
||||
.waitToGetProperty(`${selectors.itemTags.fourthTagAutocomplete} input`, 'value');
|
||||
|
||||
expect(result).toEqual('Ancho de la base');
|
||||
|
||||
result = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.firstValueInput, 'value');
|
||||
.waitToGetProperty(selectors.itemTags.fourthValueInput, 'value');
|
||||
|
||||
expect(result).toEqual('50');
|
||||
|
||||
result = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.firstRelevancyInput, 'value');
|
||||
|
||||
expect(result).toEqual('1');
|
||||
});
|
||||
|
||||
it(`should confirm the second row data is the expected one`, async() => {
|
||||
let tag = await nightmare
|
||||
.waitToGetProperty(`${selectors.itemTags.secondTagAutocomplete} input`, 'value');
|
||||
|
||||
let value = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.secondValueInput, 'value');
|
||||
|
||||
let relevancy = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.secondRelevancyInput, 'value');
|
||||
|
||||
expect(tag).toEqual('Variedad');
|
||||
expect(value).toEqual('Gem1');
|
||||
expect(relevancy).toEqual('2');
|
||||
});
|
||||
|
||||
it(`should confirm the third row data is the expected one`, async() => {
|
||||
let tag = await nightmare
|
||||
.waitToGetProperty(`${selectors.itemTags.thirdTagAutocomplete} input`, 'value');
|
||||
|
||||
let value = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.thirdValueInput, 'value');
|
||||
|
||||
let relevancy = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.thirdRelevancyInput, 'value');
|
||||
|
||||
expect(tag).toEqual('Longitud(cm)');
|
||||
expect(value).toEqual('5');
|
||||
expect(relevancy).toEqual('3');
|
||||
});
|
||||
|
||||
it(`should confirm the fourth row data is the expected one`, async() => {
|
||||
let tag = await nightmare
|
||||
.waitToGetProperty(`${selectors.itemTags.fourthTagAutocomplete} input`, 'value');
|
||||
|
||||
let value = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.fourthValueInput, 'value');
|
||||
|
||||
let relevancy = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.fourthRelevancyInput, 'value');
|
||||
|
||||
expect(tag).toEqual('Proveedor');
|
||||
expect(value).toEqual('Marvel1');
|
||||
expect(relevancy).toEqual('4');
|
||||
expect(result).toEqual('4');
|
||||
});
|
||||
|
||||
it(`should confirm the fifth row data is the expected one`, async() => {
|
||||
|
@ -105,4 +60,19 @@ describe('Item create tags path', () => {
|
|||
expect(value).toEqual('Yellow');
|
||||
expect(relevancy).toEqual('5');
|
||||
});
|
||||
|
||||
it(`should confirm the sixth row data is the expected one`, async() => {
|
||||
let tag = await nightmare
|
||||
.waitToGetProperty(`${selectors.itemTags.sixthTagAutocomplete} input`, 'value');
|
||||
|
||||
let value = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.sixthValueInput, 'value');
|
||||
|
||||
let relevancy = await nightmare
|
||||
.waitToGetProperty(selectors.itemTags.sixthRelevancyInput, 'value');
|
||||
|
||||
expect(tag).toEqual('Categoria');
|
||||
expect(value).toEqual('A1');
|
||||
expect(relevancy).toEqual('6');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -7,7 +7,7 @@ describe('Item create niche path', () => {
|
|||
beforeAll(() => {
|
||||
nightmare
|
||||
.loginAndModule('buyer', 'item')
|
||||
.accessToSearchResult('Gem of Time')
|
||||
.accessToSearchResult('Object1 Gem1 5')
|
||||
.accessToSection('item.card.niche');
|
||||
});
|
||||
|
||||
|
|
|
@ -7,11 +7,11 @@ describe('Item Create botanical path', () => {
|
|||
beforeAll(() => {
|
||||
nightmare
|
||||
.loginAndModule('buyer', 'item')
|
||||
.accessToSearchResult('Mjolnir')
|
||||
.accessToSearchResult('Object5 Weapon 50')
|
||||
.accessToSection('item.card.botanical');
|
||||
});
|
||||
|
||||
it(`should create a new botanical for the item Mjolnir`, async() => {
|
||||
it(`should create a new botanical for the item`, async() => {
|
||||
const result = await nightmare
|
||||
.wait(selectors.itemBotanical.botanicalInput)
|
||||
.type(selectors.itemBotanical.botanicalInput, 'Cicuta maculata')
|
||||
|
@ -23,7 +23,7 @@ describe('Item Create botanical path', () => {
|
|||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
|
||||
it(`should confirm the botanical for item Mjolnir was created`, async() => {
|
||||
it(`should confirm the botanical for the item was created`, async() => {
|
||||
const result = await nightmare
|
||||
.click(selectors.itemBasicData.basicDataButton)
|
||||
.wait(selectors.itemBasicData.nameInput)
|
||||
|
@ -34,7 +34,7 @@ describe('Item Create botanical path', () => {
|
|||
expect(result).toEqual('Cicuta maculata');
|
||||
});
|
||||
|
||||
it(`should confirm the Genus for item Mjolnir was created`, async() => {
|
||||
it(`should confirm the Genus for the item was created`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInInput(`${selectors.itemBotanical.genusAutocomplete} input`, 'Abelia')
|
||||
.waitToGetProperty(`${selectors.itemBotanical.genusAutocomplete} input`, 'value');
|
||||
|
@ -42,14 +42,14 @@ describe('Item Create botanical path', () => {
|
|||
expect(result).toEqual('Abelia');
|
||||
});
|
||||
|
||||
it(`should confirm the Species for item Mjolnir was created`, async() => {
|
||||
it(`should confirm the Species for the item was created`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(`${selectors.itemBotanical.speciesAutocomplete} input`, 'value');
|
||||
|
||||
expect(result).toEqual('dealbata');
|
||||
});
|
||||
|
||||
it(`should edit botanical for the item Mjolnir`, async() => {
|
||||
it(`should edit botanical for the item`, async() => {
|
||||
const result = await nightmare
|
||||
.clearInput(selectors.itemBotanical.botanicalInput)
|
||||
.type(selectors.itemBotanical.botanicalInput, 'Herp Derp')
|
||||
|
@ -61,7 +61,7 @@ describe('Item Create botanical path', () => {
|
|||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
|
||||
it(`should confirm the botanical for item Mjolnir was edited`, async() => {
|
||||
it(`should confirm the botanical for the item was edited`, async() => {
|
||||
const result = await nightmare
|
||||
.click(selectors.itemBasicData.basicDataButton)
|
||||
.wait(selectors.itemBasicData.nameInput)
|
||||
|
@ -72,7 +72,7 @@ describe('Item Create botanical path', () => {
|
|||
expect(result).toEqual('Herp Derp');
|
||||
});
|
||||
|
||||
it(`should confirm the Genus for item Mjolnir was edited`, async() => {
|
||||
it(`should confirm the Genus for the item was edited`, async() => {
|
||||
const result = await nightmare
|
||||
.waitForTextInInput(`${selectors.itemBotanical.genusAutocomplete} input`, 'Abies')
|
||||
.waitToGetProperty(`${selectors.itemBotanical.genusAutocomplete} input`, 'value');
|
||||
|
@ -80,7 +80,7 @@ describe('Item Create botanical path', () => {
|
|||
expect(result).toEqual('Abies');
|
||||
});
|
||||
|
||||
it(`should confirm the Species for item Mjolnir was edited`, async() => {
|
||||
it(`should confirm the Species for the item was edited`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(`${selectors.itemBotanical.speciesAutocomplete} input`, 'value');
|
||||
|
||||
|
|
|
@ -7,11 +7,11 @@ describe('Item Create barcodes path', () => {
|
|||
beforeAll(() => {
|
||||
nightmare
|
||||
.loginAndModule('buyer', 'item')
|
||||
.accessToSearchResult('Gem of Time')
|
||||
.accessToSearchResult('Object1 Gem1 5')
|
||||
.accessToSection('item.card.itemBarcode');
|
||||
});
|
||||
|
||||
it(`should click create a new code and delete a former one`, async () => {
|
||||
it(`should click create a new code and delete a former one`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.itemBarcodes.firstCodeRemoveButton)
|
||||
.waitToClick(selectors.itemBarcodes.addBarcodeButton)
|
||||
|
@ -23,7 +23,7 @@ describe('Item Create barcodes path', () => {
|
|||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
|
||||
it(`should confirm the barcode 5 is created and it is now the third barcode as the first was deleted`, async () => {
|
||||
it(`should confirm the barcode 5 is created and it is now the third barcode as the first was deleted`, async() => {
|
||||
const result = await nightmare
|
||||
.click(selectors.itemBasicData.basicDataButton)
|
||||
.wait(selectors.itemBasicData.nameInput)
|
||||
|
|
|
@ -8,10 +8,10 @@ describe('Item regularize path', () => {
|
|||
.loginAndModule('employee', 'item');
|
||||
});
|
||||
|
||||
it('should search for the item Mjolnir', async() => {
|
||||
it('should search for the item', async() => {
|
||||
const resultCount = await nightmare
|
||||
.wait(selectors.itemsIndex.searchItemInput)
|
||||
.type(selectors.itemsIndex.searchItemInput, 'Mjolnir')
|
||||
.type(selectors.itemsIndex.searchItemInput, 'Object5 Weapon 50')
|
||||
.click(selectors.itemsIndex.searchButton)
|
||||
.waitForNumberOfElements(selectors.itemsIndex.searchResult, 1)
|
||||
.countElement(selectors.itemsIndex.searchResult);
|
||||
|
@ -21,7 +21,7 @@ describe('Item regularize path', () => {
|
|||
|
||||
it(`should click on the search result to access to the item tax`, async() => {
|
||||
const url = await nightmare
|
||||
.waitForTextInElement(selectors.itemsIndex.searchResult, 'Mjolnir')
|
||||
.waitForTextInElement(selectors.itemsIndex.searchResult, 'Object5 Weapon 50')
|
||||
.waitToClick(selectors.itemsIndex.searchResult)
|
||||
.waitForURL('/summary')
|
||||
.parsedUrl();
|
||||
|
@ -100,10 +100,10 @@ describe('Item regularize path', () => {
|
|||
expect(url.hash).toEqual('#!/item/index');
|
||||
});
|
||||
|
||||
it('should search for the item Mjolnir once again', async() => {
|
||||
it('should search for the item once again', async() => {
|
||||
const resultCount = await nightmare
|
||||
.wait(selectors.itemsIndex.searchItemInput)
|
||||
.type(selectors.itemsIndex.searchItemInput, 'Mjolnir')
|
||||
.type(selectors.itemsIndex.searchItemInput, 'Object5 Weapon 50')
|
||||
.click(selectors.itemsIndex.searchButton)
|
||||
.waitForNumberOfElements(selectors.itemsIndex.searchResult, 1)
|
||||
.countElement(selectors.itemsIndex.searchResult);
|
||||
|
@ -113,7 +113,7 @@ describe('Item regularize path', () => {
|
|||
|
||||
it(`should click on the search result to access to the item tax`, async() => {
|
||||
const url = await nightmare
|
||||
.waitForTextInElement(selectors.itemsIndex.searchResult, 'Mjolnir')
|
||||
.waitForTextInElement(selectors.itemsIndex.searchResult, 'Object5 Weapon 50')
|
||||
.waitToClick(selectors.itemsIndex.searchResult)
|
||||
.waitForURL('/summary')
|
||||
.parsedUrl();
|
||||
|
|
|
@ -11,42 +11,42 @@ describe('Ticket List sale path', () => {
|
|||
.accessToSection('ticket.card.sale');
|
||||
});
|
||||
|
||||
it('should confirm the first ticket sale contains the colour', async () => {
|
||||
it('should confirm the first ticket sale contains the colour', async() => {
|
||||
const value = await nightmare
|
||||
.waitToGetProperty(selectors.ticketSales.firstSaleColour, 'innerText');
|
||||
|
||||
expect(value).toContain('Red');
|
||||
});
|
||||
|
||||
it('should confirm the first ticket sale contains the lenght', async () => {
|
||||
it('should confirm the first ticket sale contains the lenght', async() => {
|
||||
const value = await nightmare
|
||||
.waitToGetProperty(selectors.ticketSales.firstSaleText, 'innerText');
|
||||
|
||||
expect(value).toContain('3');
|
||||
});
|
||||
|
||||
it('should confirm the first ticket sale contains the price', async () => {
|
||||
it('should confirm the first ticket sale contains the price', async() => {
|
||||
const value = await nightmare
|
||||
.waitToGetProperty(selectors.ticketSales.firstSalePrice, 'innerText');
|
||||
|
||||
expect(value).toContain('1.30');
|
||||
});
|
||||
|
||||
it('should confirm the first ticket sale contains the discount', async () => {
|
||||
it('should confirm the first ticket sale contains the discount', async() => {
|
||||
const value = await nightmare
|
||||
.waitToGetProperty(selectors.ticketSales.firstSaleDiscount, 'innerText');
|
||||
|
||||
expect(value).toContain('0 %');
|
||||
});
|
||||
|
||||
it('should confirm the first ticket sale contains the total import', async () => {
|
||||
it('should confirm the first ticket sale contains the total import', async() => {
|
||||
const value = await nightmare
|
||||
.waitToGetProperty(selectors.ticketSales.firstSaleImport, 'innerText');
|
||||
|
||||
expect(value).toContain('19.50');
|
||||
});
|
||||
|
||||
it('should navigate to the catalog by pressing the new item button', async () => {
|
||||
it('should navigate to the catalog by pressing the new item button', async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.ticketSales.newItemButton)
|
||||
.waitForURL('/catalog')
|
||||
|
|
|
@ -72,7 +72,7 @@ describe('Ticket Edit basic data path', () => {
|
|||
const result = await nightmare
|
||||
.waitToGetProperty(selectors.ticketBasicData.stepTwoTotalPriceDif, 'innerText');
|
||||
|
||||
expect(result).toContain('-20.65 €');
|
||||
expect(result).toContain('-12.25 €');
|
||||
});
|
||||
|
||||
it(`should then click next to move on to step three`, async() => {
|
||||
|
|
|
@ -317,7 +317,7 @@ describe('Ticket Edit sale path', () => {
|
|||
.wait(selectors.ticketSales.firstSaleText)
|
||||
.waitToGetProperty(selectors.ticketSales.firstSaleText, 'innerText');
|
||||
|
||||
expect(result).toContain(`Mark I`);
|
||||
expect(result).toContain(`Object4 Armor2 2`);
|
||||
});
|
||||
|
||||
it('should go back to the original ticket sales section', async() => {
|
||||
|
|
|
@ -9,7 +9,7 @@ describe('Ticket descriptor path', () => {
|
|||
.loginAndModule('employee', 'ticket');
|
||||
});
|
||||
|
||||
it('should count the mount of tickets in the turns section', async () => {
|
||||
it('should count the mount of tickets in the turns section', async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.ticketsIndex.moreMenu)
|
||||
.waitToClick(selectors.ticketsIndex.moreMenuTurns)
|
||||
|
@ -19,7 +19,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual(5);
|
||||
});
|
||||
|
||||
it('should now click on the Tickets button of the top bar menu', async () => {
|
||||
it('should now click on the Tickets button of the top bar menu', async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.globalItems.applicationsMenuButton)
|
||||
.wait(selectors.globalItems.applicationsMenuVisible)
|
||||
|
@ -30,7 +30,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(url.hash).toEqual('#!/ticket/index');
|
||||
});
|
||||
|
||||
it('should search for the ticket 11', async () => {
|
||||
it('should search for the ticket 11', async() => {
|
||||
const result = await nightmare
|
||||
.wait(selectors.ticketsIndex.searchTicketInput)
|
||||
.type(selectors.ticketsIndex.searchTicketInput, 'id:11')
|
||||
|
@ -41,7 +41,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual(1);
|
||||
});
|
||||
|
||||
it(`should click on the search result to access to the ticket`, async () => {
|
||||
it(`should click on the search result to access to the ticket`, async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.ticketsIndex.searchResult)
|
||||
.waitForURL('/summary')
|
||||
|
@ -50,7 +50,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(url.hash).toContain('/summary');
|
||||
});
|
||||
|
||||
it('should add the ticket to thirsday turn using the descriptor more menu', async () => {
|
||||
it('should add the ticket to thirsday turn using the descriptor more menu', async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.ticketDescriptor.moreMenu)
|
||||
.waitToClick(selectors.ticketDescriptor.moreMenuAddToTurn)
|
||||
|
@ -60,7 +60,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
|
||||
it('should again click on the Tickets button of the top bar menu', async () => {
|
||||
it('should again click on the Tickets button of the top bar menu', async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.globalItems.applicationsMenuButton)
|
||||
.wait(selectors.globalItems.applicationsMenuVisible)
|
||||
|
@ -71,7 +71,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(url.hash).toEqual('#!/ticket/index');
|
||||
});
|
||||
|
||||
it('should confirm the ticket 11 was added on thursday', async () => {
|
||||
it('should confirm the ticket 11 was added on thursday', async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.ticketsIndex.moreMenu)
|
||||
.waitToClick(selectors.ticketsIndex.moreMenuTurns)
|
||||
|
@ -80,7 +80,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual('Thursday');
|
||||
});
|
||||
|
||||
it('should click on the Tickets button of the top bar menu once more', async () => {
|
||||
it('should click on the Tickets button of the top bar menu once more', async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.globalItems.applicationsMenuButton)
|
||||
.wait(selectors.globalItems.applicationsMenuVisible)
|
||||
|
@ -91,7 +91,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(url.hash).toEqual('#!/ticket/index');
|
||||
});
|
||||
|
||||
it('should now search for the ticket 11', async () => {
|
||||
it('should now search for the ticket 11', async() => {
|
||||
const result = await nightmare
|
||||
.wait(selectors.ticketsIndex.searchTicketInput)
|
||||
.type(selectors.ticketsIndex.searchTicketInput, 'id:11')
|
||||
|
@ -102,7 +102,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual(1);
|
||||
});
|
||||
|
||||
it(`should click on the search result to access to the ticket`, async () => {
|
||||
it(`should click on the search result to access to the ticket`, async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.ticketsIndex.searchResult)
|
||||
.waitForURL('/summary')
|
||||
|
@ -111,7 +111,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(url.hash).toContain('/summary');
|
||||
});
|
||||
|
||||
it('should add the ticket to saturday turn using the descriptor more menu', async () => {
|
||||
it('should add the ticket to saturday turn using the descriptor more menu', async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.ticketDescriptor.moreMenu)
|
||||
.waitToClick(selectors.ticketDescriptor.moreMenuAddToTurn)
|
||||
|
@ -121,7 +121,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
|
||||
it('should click on the Tickets button of the top bar menu once again', async () => {
|
||||
it('should click on the Tickets button of the top bar menu once again', async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.globalItems.applicationsMenuButton)
|
||||
.wait(selectors.globalItems.applicationsMenuVisible)
|
||||
|
@ -132,7 +132,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(url.hash).toEqual('#!/ticket/index');
|
||||
});
|
||||
|
||||
it('should confirm the ticket 11 was added on saturday', async () => {
|
||||
it('should confirm the ticket 11 was added on saturday', async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.ticketsIndex.moreMenu)
|
||||
.waitToClick(selectors.ticketsIndex.moreMenuTurns)
|
||||
|
@ -141,7 +141,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual('Saturday');
|
||||
});
|
||||
|
||||
it('should delete the weekly ticket 11', async () => {
|
||||
it('should delete the weekly ticket 11', async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.ticketsIndex.sixthWeeklyTicketDeleteIcon)
|
||||
.waitForLastSnackbar();
|
||||
|
@ -149,7 +149,7 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
|
||||
it('should confirm the sixth weekly ticket was deleted', async () => {
|
||||
it('should confirm the sixth weekly ticket was deleted', async() => {
|
||||
const result = await nightmare
|
||||
.countElement(selectors.ticketsIndex.weeklyTicket);
|
||||
|
||||
|
|
|
@ -12,12 +12,12 @@ module.exports = function(Self) {
|
|||
Self.super_.setup.call(this);
|
||||
|
||||
// Register field ACL validation
|
||||
this.beforeRemote('prototype.patchAttributes', ctx => this.checkUpdateAcls(ctx));
|
||||
/* this.beforeRemote('prototype.patchAttributes', ctx => this.checkUpdateAcls(ctx));
|
||||
this.beforeRemote('updateAll', ctx => this.checkUpdateAcls(ctx));
|
||||
this.beforeRemote('patchOrCreate', ctx => this.checkInsertAcls(ctx));
|
||||
this.beforeRemote('create', ctx => this.checkInsertAcls(ctx));
|
||||
this.beforeRemote('replaceById', ctx => this.checkInsertAcls(ctx));
|
||||
this.beforeRemote('replaceOrCreate', ctx => this.checkInsertAcls(ctx));
|
||||
this.beforeRemote('replaceOrCreate', ctx => this.checkInsertAcls(ctx)); */
|
||||
|
||||
this.remoteMethod('crud', {
|
||||
description: `Create, update or/and delete instances from model with a single request`,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const app = require(`${serviceRoot}/server/server`);
|
||||
|
||||
describe('Client activeWorkersWithRole', () => {
|
||||
it('should return the sales people as result', async () => {
|
||||
it('should return the sales people as result', async() => {
|
||||
let filter = {where: {role: 'salesPerson'}};
|
||||
let result = await app.models.Client.activeWorkersWithRole(filter);
|
||||
|
||||
|
@ -11,7 +11,7 @@ describe('Client activeWorkersWithRole', () => {
|
|||
expect(isSalesPerson).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should return the buyers as result', async () => {
|
||||
it('should return the buyers as result', async() => {
|
||||
let filter = {where: {role: 'buyer'}};
|
||||
let result = await app.models.Client.activeWorkersWithRole(filter);
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
const app = require(`${serviceRoot}/server/server`);
|
||||
|
||||
describe('Client card', () => {
|
||||
it('should call the card() method to receive a formated card of Bruce Wayne', async () => {
|
||||
it('should call the card() method to receive a formated card of Bruce Wayne', async() => {
|
||||
let id = 101;
|
||||
let result = await app.models.Client.getCard(id);
|
||||
|
||||
expect(result.id).toEqual(101);
|
||||
expect(result.name).toEqual('Bruce Wayne');
|
||||
expect(result.debt).toEqual(79.1);
|
||||
expect(result.debt).toEqual(579.1);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,44 +1,44 @@
|
|||
const app = require(`${serviceRoot}/server/server`);
|
||||
|
||||
describe('client summary()', () => {
|
||||
it('should return a summary object containing data', async () => {
|
||||
it('should return a summary object containing data', async() => {
|
||||
let result = await app.models.Client.summary(101);
|
||||
|
||||
expect(result.id).toEqual(101);
|
||||
expect(result.name).toEqual('Bruce Wayne');
|
||||
});
|
||||
|
||||
it('should return a summary object containing mana', async () => {
|
||||
it('should return a summary object containing mana', async() => {
|
||||
let result = await app.models.Client.summary(101);
|
||||
|
||||
expect(result.mana.mana).toEqual(151.33);
|
||||
});
|
||||
|
||||
it('should return a summary object containing debt', async () => {
|
||||
it('should return a summary object containing debt', async() => {
|
||||
let result = await app.models.Client.summary(101);
|
||||
|
||||
expect(result.debt.debt).toEqual(79.1);
|
||||
expect(result.debt.debt).toEqual(579.1);
|
||||
});
|
||||
|
||||
it('should return a summary object containing averageInvoiced', async () => {
|
||||
it('should return a summary object containing averageInvoiced', async() => {
|
||||
let result = await app.models.Client.summary(101);
|
||||
|
||||
expect(result.averageInvoiced.invoiced).toEqual(1500);
|
||||
});
|
||||
|
||||
it('should return a summary object containing totalGreuge', async () => {
|
||||
it('should return a summary object containing totalGreuge', async() => {
|
||||
let result = await app.models.Client.summary(101);
|
||||
|
||||
expect(result.totalGreuge).toEqual(203.71);
|
||||
});
|
||||
|
||||
it('should return a summary object without containing active recoveries', async () => {
|
||||
it('should return a summary object without containing active recoveries', async() => {
|
||||
let result = await app.models.Client.summary(101);
|
||||
|
||||
expect(result.recovery).toEqual(null);
|
||||
});
|
||||
|
||||
it('should return a summary object containing active recoveries', async () => {
|
||||
it('should return a summary object containing active recoveries', async() => {
|
||||
let result = await app.models.Client.summary(102);
|
||||
|
||||
expect(result.recovery.id).toEqual(3);
|
||||
|
|
|
@ -12,7 +12,7 @@ describe('item filter()', () => {
|
|||
|
||||
expect(result.length).toEqual(1);
|
||||
expect(result[0].id).toEqual(2);
|
||||
expect(result[0].name).toEqual('Gem of Mind');
|
||||
expect(result[0].name).toEqual('Object2 Gem2 3');
|
||||
expect(result[0].type).toEqual('Anthurium');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -14,7 +14,7 @@ describe('order catalogFilter()', () => {
|
|||
let firstItemId = result[0].id;
|
||||
|
||||
expect(result.length).toEqual(2);
|
||||
expect(firstItemId).toEqual(1);
|
||||
expect(firstItemId).toEqual(2);
|
||||
});
|
||||
|
||||
it('should return an array of items based on tag filter', async() => {
|
||||
|
|
|
@ -4,7 +4,7 @@ describe('order getTotalVolume()', () => {
|
|||
it('should return the total', async() => {
|
||||
let result = await app.models.Order.getTotalVolume(1);
|
||||
|
||||
expect(result.totalVolume).toEqual(0.078);
|
||||
expect(result.totalVolume).toEqual(0.066);
|
||||
expect(result.totalBoxes).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
const app = require(`${serviceRoot}/server/server`);
|
||||
|
||||
describe('ticket listSaleTracking()', () => {
|
||||
it('should call the listSaleTracking method and return the response', async () => {
|
||||
it('should call the listSaleTracking method and return the response', async() => {
|
||||
let filter = {where: {ticketFk: 1}};
|
||||
let result = await app.models.SaleTracking.listSaleTracking(filter);
|
||||
|
||||
expect(result[0].concept).toEqual('Gem of Time');
|
||||
expect(result[0].concept).toEqual('Object1 Gem1 5');
|
||||
});
|
||||
|
||||
it(`should call the listSaleTracking method and return zero if doesn't have lines`, async () => {
|
||||
it(`should call the listSaleTracking method and return zero if doesn't have lines`, async() => {
|
||||
let filter = {where: {ticketFk: 2}};
|
||||
let result = await app.models.SaleTracking.listSaleTracking(filter);
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
const app = require(`${serviceRoot}/server/server`);
|
||||
|
||||
describe('sale getClaimableFromTicket()', () => {
|
||||
it('should return the claimable sales of a given ticket', async () => {
|
||||
it('should return the claimable sales of a given ticket', async() => {
|
||||
let claimableFromTicket = await app.models.Sale.getClaimableFromTicket(16);
|
||||
|
||||
expect(claimableFromTicket[0].concept).toBe('Gem of Time');
|
||||
expect(claimableFromTicket[0].concept).toBe('Object1 Gem1 5');
|
||||
expect(claimableFromTicket.length).toBe(3);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -11,7 +11,7 @@ describe('sale priceDifference()', () => {
|
|||
let result = await app.models.Sale.priceDifference(1, data);
|
||||
|
||||
expect(result.totalUnitPrice).toEqual(22.33);
|
||||
expect(result.totalNewPrice).toEqual(22.33);
|
||||
expect(result.totalDifference).toEqual(0);
|
||||
expect(result.totalNewPrice).toEqual(22.29);
|
||||
expect(result.totalDifference).toEqual(0.8);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -4,7 +4,7 @@ describe('ticket getTotalVolume()', () => {
|
|||
it('should return the total volume of a ticket', async() => {
|
||||
let ticketFk = 1;
|
||||
|
||||
let expectedResult = 0.078;
|
||||
let expectedResult = 0.066;
|
||||
|
||||
let result = await app.models.Ticket.getTotalVolume(ticketFk);
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
echo USE `account`; > install/dump/dumpedFixtures.sql
|
||||
mysqldump --defaults-file=connect.ini --no-create-info account role roleRole roleInherit >> install/dump/dumpedFixtures.sql
|
||||
echo USE `salix`; >> install/dump/dumpedFixtures.sql
|
||||
mysqldump --defaults-file=connect.ini --no-create-info salix ACL >> install/dump/dumpedFixtures.sql
|
||||
mysqldump --defaults-file=connect.ini --no-create-info salix ACL fieldAcl>> install/dump/dumpedFixtures.sql
|
||||
echo USE `vn`; >> install/dump/dumpedFixtures.sql
|
||||
mysqldump --defaults-file=connect.ini --no-create-info vn cplusInvoiceType477 cplusSubjectOp cplusTaxBreak bookingPlanner pgc tag alertLevel>> install/dump/dumpedFixtures.sql
|
||||
echo USE `vn2008`; >> install/dump/dumpedFixtures.sql
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
echo "USE \`account\`;" > install/dump/dumpedFixtures.sql
|
||||
mysqldump --defaults-file=connect.ini --no-create-info account role roleRole roleInherit >> install/dump/dumpedFixtures.sql
|
||||
echo "USE \`salix\`;" >> install/dump/dumpedFixtures.sql
|
||||
mysqldump --defaults-file=connect.ini --no-create-info salix ACL >> install/dump/dumpedFixtures.sql
|
||||
mysqldump --defaults-file=connect.ini --no-create-info salix ACL fieldAcl>> install/dump/dumpedFixtures.sql
|
||||
echo "USE \`vn\`;" >> install/dump/dumpedFixtures.sql
|
||||
mysqldump --defaults-file=connect.ini --no-create-info vn cplusInvoiceType477 cplusSubjectOp cplusTaxBreak bookingPlanner pgc tag alertLevel >> install/dump/dumpedFixtures.sql
|
||||
echo "USE \`vn2008\`;" >> install/dump/dumpedFixtures.sql
|
||||
|
|
|
@ -1,84 +0,0 @@
|
|||
/**
|
||||
* Cambios para evitar fallos en local.
|
||||
* Ya está en producción
|
||||
**/
|
||||
|
||||
|
||||
USE `vn`;
|
||||
CREATE TABLE `salix`.`fieldAcl` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`model` VARCHAR(255) NULL,
|
||||
`property` VARCHAR(255) NULL,
|
||||
`actionType` SET('insert', 'update', '*') NULL DEFAULT '*',
|
||||
`role` VARCHAR(45) NULL,
|
||||
PRIMARY KEY (`id`));
|
||||
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'name', 'update', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'contact', 'update', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'email', 'update', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'phone', 'update', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'mobile', 'update', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'contactChannelFk', 'update', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'socialName', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'fi', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'street', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'postcode', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'city', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'countryFk', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'provinceFk', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'isActive', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'salesPersonFk', 'update', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'hasToInvoice', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'isToBeMailed', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'isEqualizated', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'isFreezed', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'isVies', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'hasToInvoiceByAddress', 'update', 'salesPerson');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'isTaxDataChecked', 'update', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'payMethodFk', 'update', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'dueDay', 'update', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'iban', 'update', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'bankEntityFk', 'update', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'hasLcr', 'update', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'hasCoreVnl', 'update', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'hasSepaVnl', 'update', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Client', 'credit', 'update', 'teamBoss');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('BankEntity', '*', 'insert', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'isDefaultAddress', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'nickname', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'postalCode', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'provinceFk', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'agencyModeFk', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'phone', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'mobile', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'street', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'city', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'isActive', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'isEqualizated', '*', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Address', 'clientFk', 'insert', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('ClientObservation', '*', 'insert', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Recovery', '*', 'insert', 'administrative');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Recovery', 'finished', 'update', 'administrative');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('CreditClassification', 'finished', 'update', 'creditInsurance');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Account', '*', 'update', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Greuge', '*', 'insert', 'salesAssistant');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('ClientSample', '*', 'insert', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Item', '*', '*', 'buyer');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Item', '*', '*', 'marketingBoss');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('ItemBotanical', '*', '*', 'buyer');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('ClaimEnd', '*', '*', 'salesAssistant');
|
||||
|
||||
|
||||
DELETE FROM `salix`.`ACL` WHERE `id`='28';
|
||||
UPDATE `salix`.`ACL` SET `accessType`='*' WHERE `id`='60';
|
||||
DELETE FROM `salix`.`ACL` WHERE `id`='59';
|
||||
DELETE FROM `salix`.`ACL` WHERE `id`='57';
|
||||
INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (116, 'BankEntity', '*', '*', 'ALLOW', 'role', 'employee');
|
||||
INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (117, 'ClientSample', '*', '*', 'ALLOW', 'role', 'employee');
|
||||
|
||||
|
||||
|
||||
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('TicketWeekly', '*', '*', 'employee');
|
||||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`, `role`) VALUES ('Receipt', '*', '*', 'administrative');
|
||||
INSERT INTO salix.fieldAcl (model,property,actionType,`role`) VALUES ('Zone','*','*','agency');
|
|
@ -1,4 +0,0 @@
|
|||
USE `vn`;
|
||||
CREATE TABLE `vn`.`workerTeamCollegues` (
|
||||
`workerFk` VARCHAR(255) NULL,
|
||||
`collegueFk` VARCHAR(255) NULL);
|
|
@ -1,15 +0,0 @@
|
|||
USE `vn`;
|
||||
CREATE
|
||||
OR REPLACE ALGORITHM = UNDEFINED
|
||||
DEFINER = `root`@`%`
|
||||
SQL SECURITY DEFINER
|
||||
VIEW `itemCategory` AS
|
||||
SELECT
|
||||
`r`.`id` AS `id`,
|
||||
`r`.`reino` AS `name`,
|
||||
`r`.`display` AS `display`,
|
||||
`r`.`color` AS `color`,
|
||||
`r`.`icon` AS `icon`,
|
||||
`r`.`mercancia` AS `merchandise`
|
||||
FROM
|
||||
`vn2008`.`reinos` `r`;
|
|
@ -1,11 +0,0 @@
|
|||
DROP TRIGGER IF EXISTS `vn`.`itemLog_BEFORE_INSERT`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`itemLog_BEFORE_INSERT` BEFORE INSERT ON `itemLog` FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.newInstance is NULL THEN
|
||||
SET NEW.newInstance = NEW.description;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,11 +0,0 @@
|
|||
DROP TRIGGER IF EXISTS `vn`.`ticketLog_BEFORE_INSERT`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`ticketLog_BEFORE_INSERT` BEFORE INSERT ON `ticketLog` FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.newInstance is NULL THEN
|
||||
SET NEW.newInstance = NEW.description;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,88 +0,0 @@
|
|||
USE `vn`;
|
||||
DROP procedure IF EXISTS `ticketCalculateClon`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateClon`(IN vTicketNew INT, vTicketOld INT)
|
||||
BEGIN
|
||||
/*
|
||||
* @vTicketNew id del nuevo ticket clonado
|
||||
* @vTicketOld id ticket original, a partir del qual se clonara el nuevo
|
||||
* Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo
|
||||
*/
|
||||
DECLARE vShipped DATE;
|
||||
DECLARE vClient INT;
|
||||
DECLARE vWarehouse SMALLINT;
|
||||
DECLARE vAgencyMode INT;
|
||||
DECLARE vAddress INT;
|
||||
DECLARE vLanded DATE;
|
||||
DECLARE vAgency INT;
|
||||
|
||||
INSERT INTO orderTicket(orderFk,ticketFk)
|
||||
SELECT orderFk, vTicketNew
|
||||
FROM orderTicket
|
||||
WHERE ticketFk = vTicketOld;
|
||||
|
||||
SELECT t.clientFk , t.warehouseFk, date(t.shipped), t.addressFk, t.agencyModeFk, t.landed, a.agencyFk
|
||||
INTO vClient, vWarehouse, vShipped, vAddress, vAgencyMode, vLanded, vAgency
|
||||
FROM vn.agencyMode a
|
||||
JOIN vn.ticket t ON t.agencyModeFk = a.id
|
||||
WHERE t.id = vTicketNew;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.agencyHourGetShipped;
|
||||
CREATE TEMPORARY TABLE tmp.agencyHourGetShipped ENGINE = MEMORY
|
||||
SELECT vWarehouse warehouseFk, vShipped shipped, vLanded landed;
|
||||
|
||||
CALL buyUltimate(vWarehouse, vShipped); -- rellena la tabla tmp.buyUltimate con la ultima compra
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot;
|
||||
CREATE TEMPORARY TABLE tmp.ticketLot
|
||||
SELECT vWarehouse warehouseFk,NULL available,s.itemFk, bu.buyFk
|
||||
FROM sale s
|
||||
LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
|
||||
WHERE s.ticketFk = vTicketOld GROUP BY s.itemFk;
|
||||
|
||||
CALL ticketComponentCalculate(vAddress,vAgencyMode);
|
||||
|
||||
-- Bionizamos lineas con Preu = 0
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.sale;
|
||||
CREATE TEMPORARY TABLE tmp.sale
|
||||
(PRIMARY KEY (saleFk)) ENGINE = MEMORY
|
||||
SELECT s.id saleFk, vWarehouse warehouseFk
|
||||
FROM sale s
|
||||
JOIN ticket t on t.id = s.ticketFk WHERE s.ticketFk = vTicketNew AND s.price = 0;
|
||||
|
||||
CALL ticketComponentUpdateSale(1);
|
||||
|
||||
-- Bionizamos lineas con Preu > 0
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.sale;
|
||||
CREATE TEMPORARY TABLE tmp.sale
|
||||
(PRIMARY KEY (saleFk)) ENGINE = MEMORY
|
||||
SELECT s.id saleFk, vWarehouse warehouseFk
|
||||
FROM sale s
|
||||
JOIN ticket t on t.id = s.ticketFk WHERE s.ticketFk = vTicketNew
|
||||
AND s.price > 0;
|
||||
|
||||
CALL ticketComponentUpdateSale(6);
|
||||
|
||||
IF vLanded IS NULL THEN
|
||||
CALL agencyHourGetLanded(vShipped, vAddress, vAgency,vWarehouse);
|
||||
|
||||
UPDATE ticket t
|
||||
JOIN tmp.agencyHourGetLanded ah ON t.warehouseFk = ah.warehouseFk
|
||||
SET t.landed = ah.landed
|
||||
WHERE t.id = vTicketNew;
|
||||
END IF;
|
||||
|
||||
-- Log
|
||||
CALL `logAdd`(vTicketNew, 'update', ' ticket' , 'Bioniza Ticket');
|
||||
|
||||
-- Limpieza
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimate;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.sale;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot;
|
||||
DROP TEMPORARY TABLE IF EXISTS agencyHourGetShipped;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
DROP TRIGGER IF EXISTS `vn`.`claimLog_BEFORE_INSERT`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`claimLog_BEFORE_INSERT` BEFORE INSERT ON `claimLog` FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.newInstance is NULL THEN
|
||||
SET NEW.newInstance = NEW.description;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,11 +0,0 @@
|
|||
DROP TRIGGER IF EXISTS `vn`.`clientLog_BEFORE_INSERT`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`clientLog_BEFORE_INSERT` BEFORE INSERT ON `clientLog` FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.newInstance is NULL THEN
|
||||
SET NEW.newInstance = NEW.description;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,17 +0,0 @@
|
|||
DROP TRIGGER IF EXISTS `vn`.`ticketLog_AFTER_INSERT`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` TRIGGER `vn`.`ticketLog_AFTER_INSERT` AFTER INSERT ON `ticketLog` FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE vActionId INT DEFAULT 84;
|
||||
DECLARE vWorkerFk INT;
|
||||
|
||||
SELECT id INTO vWorkerFk
|
||||
FROM worker w
|
||||
WHERE w.userFk = NEW.userFk;
|
||||
|
||||
INSERT INTO vn2008.Tickets_dits(idaccion_dits,Id_Trabajador,Id_Ticket,value_old,value_new)
|
||||
VALUES (vActionId, vWorkerFk, NEW.originFk, NULL, NULL);
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,10 +0,0 @@
|
|||
ALTER TABLE `vn`.`ticketLog`
|
||||
DROP FOREIGN KEY `ticketLog_ibfk_2`;
|
||||
ALTER TABLE `vn`.`ticketLog`
|
||||
CHANGE COLUMN `userFk` `userFk` INT(10) UNSIGNED NULL DEFAULT NULL ;
|
||||
ALTER TABLE `vn`.`ticketLog`
|
||||
ADD CONSTRAINT `ticketLog_ibfk_2`
|
||||
FOREIGN KEY (`userFk`)
|
||||
REFERENCES `account`.`user` (`id`)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE;
|
|
@ -1,10 +0,0 @@
|
|||
ALTER TABLE `vn2008`.`Tickets_dits`
|
||||
DROP FOREIGN KEY `fgkey3`;
|
||||
ALTER TABLE `vn2008`.`Tickets_dits`
|
||||
CHANGE COLUMN `Id_Trabajador` `Id_Trabajador` INT(11) NULL DEFAULT NULL ;
|
||||
ALTER TABLE `vn2008`.`Tickets_dits`
|
||||
ADD CONSTRAINT `fgkey3`
|
||||
FOREIGN KEY (`Id_Trabajador`)
|
||||
REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE CASCADE;
|
|
@ -1,4 +1,4 @@
|
|||
INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (118, 'WorkerTeam', '*', '*', 'ALLOW', 'role', 'salesPerson');
|
||||
/* INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (118, 'WorkerTeam', '*', '*', 'ALLOW', 'role', 'salesPerson');
|
||||
INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (119, 'Travel', '*', 'READ', 'ALLOW', 'role', 'employee');
|
||||
INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (120, 'Travel', '*', 'WRITE', 'ALLOW', 'role', 'buyer');
|
||||
INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (121, 'Item', 'regularize', '*', 'ALLOW', 'role', 'employee');
|
||||
|
@ -8,3 +8,25 @@ UPDATE `salix`.`ACL` SET model='TicketRequest', property='*', accessType='*', pe
|
|||
INSERT INTO `salix`.`fieldAcl` (`model`, `property`, `actionType`,`role`) VALUES ('ClaimBeginning','*','*','salesAssistant');
|
||||
INSERT INTO `salix`.`ACL`(`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES ('Agency', 'getAgenciesWithWarehouse', '*', 'ALLOW', 'ROLE', 'employee');
|
||||
INSERT INTO `salix`.`ACL`(`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES('Client', 'activeWorkersWithRole', '*', 'ALLOW', 'ROLE', 'employee');
|
||||
|
||||
*/
|
||||
INSERT INTO `salix`.`ACL`(`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES('CreditClassification', '*', 'READ', 'ALLOW', 'ROLE', 'employee');
|
||||
|
||||
INSERT INTO `salix`.`ACL`(`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES('ClientObservation', '*', 'READ', 'ALLOW', 'ROLE', 'employee');
|
||||
|
||||
INSERT INTO `salix`.`ACL`(`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES('ItemTag', '*', 'WRITE', 'ALLOW', 'ROLE', 'marketingBoss');
|
||||
|
||||
INSERT INTO `salix`.`ACL`(`id`,`model`,`property`,`accessType`,`permission`,`principalType`,`principalId`) VALUES (104,'Item','*','WRITE','ALLOW','ROLE','marketingBoss');
|
||||
INSERT INTO `salix`.`ACL`(`id`,`model`,`property`,`accessType`,`permission`,`principalType`,`principalId`) VALUES (105,'ItemBarcode','*','WRITE','ALLOW','ROLE','marketingBoss');
|
||||
INSERT INTO `salix`.`ACL`(`id`,`model`,`property`,`accessType`,`permission`,`principalType`,`principalId`) VALUES (106,'ItemBotanical','*','WRITE','ALLOW','ROLE','marketingBoss');
|
||||
INSERT INTO `salix`.`ACL`(`id`,`model`,`property`,`accessType`,`permission`,`principalType`,`principalId`) VALUES (107,'ItemNiche','*','WRITE','ALLOW','ROLE','marketingBoss');
|
||||
INSERT INTO `salix`.`ACL`(`id`,`model`,`property`,`accessType`,`permission`,`principalType`,`principalId`) VALUES (108,'ItemPlacement','*','WRITE','ALLOW','ROLE','marketingBoss');
|
||||
|
||||
INSERT INTO `salix`.`ACL`(`id`,`model`,`property`,`accessType`,`permission`,`principalType`,`principalId`) VALUES (108,'ItemPlacement','*','WRITE','ALLOW','ROLE','marketingBoss');
|
||||
|
||||
INSERT INTO `ACLCopia` (`id`,`model`,`property`,`accessType`,`permission`,`principalType`,`principalId`) VALUES (59,'CreditInsurance','*','READ','ALLOW','ROLE','employee');
|
||||
DELETE FROM `salix`.`ACL` WHERE `id`='67';
|
||||
DELETE FROM `salix`.`ACL` WHERE `id`='74';
|
||||
DELETE FROM `salix`.`ACL` WHERE `id`='92';
|
||||
DELETE FROM `salix`.`ACL` WHERE `id`='93';
|
||||
DELETE FROM `salix`.`ACL` WHERE `id`='95';
|
|
@ -1,47 +0,0 @@
|
|||
ALTER TABLE `vn2008`.`Ordenes`
|
||||
ADD COLUMN `isOk` TINYINT(1) NULL DEFAULT NULL AFTER `odbc_date`,
|
||||
ADD COLUMN `requesterFk` INT(11) NULL DEFAULT NULL AFTER `isOk`,
|
||||
ADD COLUMN `atenderFk` INT(11) NULL DEFAULT NULL AFTER `requesterFk`;
|
||||
|
||||
ALTER TABLE `vn2008`.`Ordenes`
|
||||
ADD COLUMN `ticketFk` INT(11) NULL DEFAULT NULL AFTER `atenderFk`;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE `vn2008`.`Ordenes`
|
||||
ADD INDEX `fgnRequester_idx` (`requesterFk` ASC),
|
||||
ADD INDEX `fgnAtender_idx` (`atenderFk` ASC);
|
||||
ALTER TABLE `vn2008`.`Ordenes`
|
||||
ADD CONSTRAINT `fgnRequester`
|
||||
FOREIGN KEY (`requesterFk`)
|
||||
REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`)
|
||||
ON DELETE RESTRICT
|
||||
ON UPDATE CASCADE,
|
||||
ADD CONSTRAINT `fgnAtender`
|
||||
FOREIGN KEY (`atenderFk`)
|
||||
REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`)
|
||||
ON DELETE RESTRICT
|
||||
ON UPDATE CASCADE,
|
||||
ADD CONSTRAINT `fgbMovimiento`
|
||||
FOREIGN KEY (`Id_Movimiento`)
|
||||
REFERENCES `vn2008`.`Movimientos` (`Id_Movimiento`)
|
||||
ON DELETE RESTRICT
|
||||
ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE `vn2008`.`Ordenes`
|
||||
DROP FOREIGN KEY `fgbMovimiento`;
|
||||
ALTER TABLE `vn2008`.`Ordenes`
|
||||
ADD CONSTRAINT `fgbMovimiento`
|
||||
FOREIGN KEY (`Id_Movimiento`)
|
||||
REFERENCES `vn2008`.`Movimientos` (`Id_Movimiento`)
|
||||
ON DELETE SET NULL
|
||||
ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE `vn2008`.`Ordenes`
|
||||
ADD INDEX `fgnTicket_idx` (`ticketFk` ASC);
|
||||
ALTER TABLE `vn2008`.`Ordenes`
|
||||
ADD CONSTRAINT `fgnTicket`
|
||||
FOREIGN KEY (`ticketFk`)
|
||||
REFERENCES `vn2008`.`Tickets` (`Id_Ticket`)
|
||||
ON DELETE RESTRICT
|
||||
ON UPDATE CASCADE;
|
|
@ -1,19 +0,0 @@
|
|||
USE `vn`;
|
||||
CREATE
|
||||
OR REPLACE ALGORITHM = UNDEFINED
|
||||
DEFINER = `root`@`%`
|
||||
SQL SECURITY DEFINER
|
||||
VIEW `ticketRequest` AS
|
||||
SELECT
|
||||
`t`.`Id_ORDEN` AS `id`,
|
||||
`t`.`ORDEN` AS `description`,
|
||||
`t`.`requesterFk` AS `requesterFk`,
|
||||
`t`.`CodCOMPRADOR` AS `atenderFk`,
|
||||
`t`.`CANTIDAD` AS `quantity`,
|
||||
`t`.`PRECIOMAX` AS `price`,
|
||||
`t`.`isOk` AS `isOk`,
|
||||
`t`.`Id_Movimiento` AS `saleFk`,
|
||||
`t`.`ticketFk` AS `ticketFk`,
|
||||
`t`.`odbc_date` AS `created`
|
||||
FROM
|
||||
`vn2008`.`Ordenes` `t`;
|
|
@ -1,134 +0,0 @@
|
|||
USE `vn`;
|
||||
DROP procedure IF EXISTS `ticketComponentPreview`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `ticketComponentPreview`(
|
||||
vTicketFk INT,
|
||||
vLanded DATE,
|
||||
vAddressFk INT,
|
||||
vAgencyModeFk INT,
|
||||
vWarehouseFk SMALLINT)
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve un listado previo de
|
||||
* componentes para un ticket
|
||||
*
|
||||
* @param vTicketFk Id del ticket
|
||||
* @param vLanded Fecha de recepcion
|
||||
* @param vAddressFk Id del consignatario
|
||||
* @param vAgencyModeFk Id del modo de agencia
|
||||
* @param vWarehouseFk Id del almacén
|
||||
*/
|
||||
|
||||
DECLARE vAgencyFk INT;
|
||||
DECLARE vShipped DATE;
|
||||
DECLARE vBuyOrderItem INT DEFAULT 100;
|
||||
|
||||
DECLARE vHasDataChanged BOOL DEFAULT FALSE;
|
||||
DECLARE vHasAddressChanged BOOL;
|
||||
DECLARE vHasAgencyModeChanged BOOL DEFAULT FALSE;
|
||||
DECLARE vHasWarehouseChanged BOOL DEFAULT FALSE;
|
||||
|
||||
DECLARE vAddressTypeRateFk INT DEFAULT NULL;
|
||||
DECLARE vAgencyModeTypeRateFk INT DEFAULT NULL;
|
||||
|
||||
DECLARE vHasChangeAll BOOL DEFAULT FALSE;
|
||||
|
||||
SELECT DATE(landed) <> vLanded,
|
||||
addressFk <> vAddressFk,
|
||||
agencyModeFk <> vAgencyModeFk,
|
||||
warehouseFk <> vWarehouseFk
|
||||
INTO
|
||||
vHasDataChanged,
|
||||
vHasAddressChanged,
|
||||
vHasAgencyModeChanged,
|
||||
vHasWarehouseChanged
|
||||
FROM vn.ticket t
|
||||
WHERE t.id = vTicketFk;
|
||||
/*SELECT vHasDataChanged,
|
||||
vHasAddressChanged,
|
||||
vHasAgencyModeChanged,
|
||||
vHasWarehouseChanged;
|
||||
*/
|
||||
IF vHasDataChanged OR vHasWarehouseChanged THEN
|
||||
SET vHasChangeAll = TRUE;
|
||||
END IF;
|
||||
|
||||
IF vHasAddressChanged THEN
|
||||
SET vAddressTypeRateFk = 5;
|
||||
END IF;
|
||||
|
||||
IF vHasAgencyModeChanged THEN
|
||||
SET vAgencyModeTypeRateFk = 6;
|
||||
END IF;
|
||||
|
||||
SELECT agencyFk INTO vAgencyFk
|
||||
FROM agencyMode
|
||||
WHERE id = vAgencyModeFk;
|
||||
|
||||
CALL agencyHourGetShipped(vLanded, vAddressFk, vAgencyFk);
|
||||
|
||||
SELECT shipped INTO vShipped
|
||||
FROM tmp.agencyHourGetShipped
|
||||
WHERE warehouseFk = vWarehouseFK;
|
||||
|
||||
CALL buyUltimate(vWarehouseFK, vShipped);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot;
|
||||
CREATE TEMPORARY TABLE tmp.ticketLot ENGINE = MEMORY (
|
||||
SELECT
|
||||
vWarehouseFK AS warehouseFk,
|
||||
NULL AS available,
|
||||
s.itemFk,
|
||||
bu.buyFk
|
||||
FROM sale s
|
||||
LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
|
||||
WHERE s.ticketFk = vTicketFk
|
||||
AND s.itemFk != vBuyOrderItem
|
||||
GROUP BY bu.warehouseFk, bu.itemFk);
|
||||
|
||||
CALL ticketComponentCalculate(vAddressFk, vAgencyModeFk);
|
||||
|
||||
/*SELECT *,vHasChangeAll,cr.isRenewable = FALSE,vHasChangeAll,
|
||||
NOT (cr.componentTypeRate <=> vAddressTypeRateFk),NOT (cr.componentTypeRate <=> vAgencyModeTypeRateFk),
|
||||
NOT (cr.componentTypeRate <=> vAddressTypeRateFk) OR NOT (cr.componentTypeRate <=> vAgencyModeTypeRateFk)
|
||||
FROM saleComponent sc
|
||||
JOIN sale s ON s.id = sc.saleFk
|
||||
JOIN ticket t ON t.id = s.ticketFk
|
||||
JOIN componentRate cr ON cr.id = sc.componentFk
|
||||
WHERE s.ticketFk = vTicketFk
|
||||
AND (cr.isRenewable = FALSE
|
||||
OR
|
||||
(NOT vHasChangeAll
|
||||
AND (NOT (cr.componentTypeRate <=> vAddressTypeRateFk
|
||||
OR cr.componentTypeRate <=> vAgencyModeTypeRateFk))));*/
|
||||
/*SELECT * FROM tmp.ticketComponent;*/
|
||||
-- Inserta los componentes que NO seran modificados
|
||||
REPLACE INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost)
|
||||
SELECT t.warehouseFk, s.itemFk, sc.componentFk, sc.value
|
||||
FROM saleComponent sc
|
||||
JOIN sale s ON s.id = sc.saleFk
|
||||
JOIN ticket t ON t.id = s.ticketFk
|
||||
JOIN componentRate cr ON cr.id = sc.componentFk
|
||||
WHERE s.ticketFk = vTicketFk
|
||||
AND (cr.isRenewable = FALSE
|
||||
OR
|
||||
(NOT vHasChangeAll
|
||||
AND (NOT (cr.componentTypeRate <=> vAddressTypeRateFk
|
||||
OR cr.componentTypeRate <=> vAgencyModeTypeRateFk))));
|
||||
/*SELECT * FROM tmp.ticketComponent;*/
|
||||
SET @shipped = vShipped;
|
||||
|
||||
DROP TEMPORARY TABLE
|
||||
tmp.agencyHourGetShipped,
|
||||
tmp.buyUltimate,
|
||||
tmp.ticketLot;
|
||||
|
||||
IF IFNULL(vShipped, CURDATE() - 1) < CURDATE() THEN
|
||||
CALL util.throw('NO_AGENCY_AVAILABLE');
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
USE `vn`;
|
||||
DROP procedure IF EXISTS `ticketComponentPriceDifference`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `ticketComponentPriceDifference`(
|
||||
vTicketFk INT,
|
||||
vLanded DATE,
|
||||
vAddressFk INT,
|
||||
vAgencyModeFk INT,
|
||||
vWarehouseFk INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve las diferencias de precio
|
||||
* de los movimientos de un ticket.
|
||||
*
|
||||
* @param vTicketFk Id del ticket
|
||||
* @param vLanded Fecha de recepcion
|
||||
* @param vAddressFk Id del consignatario
|
||||
* @param vAgencyModeFk Id del modo de agencia
|
||||
* @param vWarehouseFk Id del almacén
|
||||
*/
|
||||
CALL vn.ticketComponentPreview(vTicketFk, vLanded, vAddressFk, vAgencyModeFk, vWarehouseFk);
|
||||
|
||||
SELECT s.itemFk,
|
||||
i.name,
|
||||
i.size,
|
||||
i.category,
|
||||
IFNULL(s.quantity, 0) AS quantity,
|
||||
IFNULL(s.price, 0) AS price,
|
||||
ROUND(SUM(tc.cost), 2) AS newPrice,
|
||||
s.quantity * (s.price - ROUND(SUM(tc.cost), 2)) difference,
|
||||
s.id AS saleFk
|
||||
FROM sale s
|
||||
JOIN item i ON i.id = s.itemFk
|
||||
JOIN ticket t ON t.id = s.ticketFk
|
||||
LEFT JOIN tmp.ticketComponent tc ON tc.itemFk = s.itemFk
|
||||
AND tc.warehouseFk = t.warehouseFk
|
||||
LEFT JOIN saleComponent sc ON sc.saleFk = s.id
|
||||
AND sc.componentFk = tc.componentFk
|
||||
LEFT JOIN componentRate cr ON cr.id = tc.componentFk
|
||||
WHERE
|
||||
t.id = vTicketFk
|
||||
AND IF(sc.componentFk IS NULL
|
||||
AND cr.classRate IS NOT NULL, FALSE, TRUE)
|
||||
GROUP BY s.id ORDER BY s.id;
|
||||
|
||||
DROP TEMPORARY TABLE
|
||||
tmp.ticketComponent,
|
||||
tmp.ticketComponentPrice;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
USE `hedera`;
|
||||
CREATE
|
||||
OR REPLACE ALGORITHM = UNDEFINED
|
||||
DEFINER = `root`@`%`
|
||||
SQL SECURITY DEFINER
|
||||
VIEW `orderTicket` AS
|
||||
SELECT
|
||||
`b`.`order_id` AS `orderFk`, `b`.`Id_Ticket` AS `ticketFk`
|
||||
FROM
|
||||
`vn2008`.`order_Tickets` `b`;
|
|
@ -1,68 +0,0 @@
|
|||
USE `vn`;
|
||||
DROP function IF EXISTS `clientGetMana`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `vn`$$
|
||||
CREATE DEFINER=`root`@`%` FUNCTION `clientGetMana`(vClient INT) RETURNS decimal(10,2)
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve el maná del cliente.
|
||||
*
|
||||
* @param vClient Id del cliente
|
||||
* @return Maná del cliente
|
||||
*/
|
||||
|
||||
|
||||
DECLARE vMana DECIMAL(10,2);
|
||||
DECLARE vFromDated DATE;
|
||||
|
||||
SELECT max(dated) INTO vFromDated
|
||||
FROM vn.clientManaCache;
|
||||
|
||||
SELECT sum(mana) INTO vMana
|
||||
FROM
|
||||
(
|
||||
SELECT mana
|
||||
FROM vn.clientManaCache
|
||||
WHERE clientFk = vClient
|
||||
AND dated = vFromDated
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT s.quantity * Valor
|
||||
FROM vn.ticket t
|
||||
JOIN vn.address a ON a.id = t.addressFk
|
||||
JOIN vn.sale s on s.ticketFk = t.id
|
||||
JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = s.id
|
||||
WHERE Id_Componente IN (37, 39)
|
||||
AND t.shipped > vFromDated
|
||||
AND t.shipped < TIMESTAMPADD(DAY,1,CURDATE())
|
||||
AND a.clientFk = vClient
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT - Entregado
|
||||
FROM vn2008.Recibos r
|
||||
JOIN vn2008.Clientes c using(Id_Cliente)
|
||||
WHERE r.Id_Banco = 66
|
||||
AND r.Fechacobro > vFromDated
|
||||
AND r.Fechacobro <= CURDATE()
|
||||
AND c.Id_Cliente = vClient
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT g.Importe
|
||||
FROM vn2008.Greuges g
|
||||
JOIN vn2008.Clientes c using(Id_Cliente)
|
||||
WHERE g.Greuges_type_id = 3 -- Maná
|
||||
AND g.Fecha > vFromDated
|
||||
AND g.Fecha <= CURDATE()
|
||||
AND c.Id_Cliente = vClient
|
||||
|
||||
) sub;
|
||||
|
||||
RETURN IFNULL(vMana,0);
|
||||
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
|
@ -1,50 +0,0 @@
|
|||
USE `cache`;
|
||||
DROP procedure IF EXISTS `last_buy_refresh`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `cache`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `last_buy_refresh`(vRefresh BOOL)
|
||||
proc: BEGIN
|
||||
/**
|
||||
* Crea o actualiza la cache con la última compra y fecha de cada
|
||||
* artículo hasta ayer. Para obtener la última compra hasta una fecha
|
||||
* determinada utilizar el procedimiento vn2008.item_last_buy_().
|
||||
*
|
||||
* @param vRefresh %TRUE para forzar el recálculo de la cache
|
||||
**/
|
||||
DECLARE vCalc INT;
|
||||
DECLARE started DATE;
|
||||
DECLARE ended DATE;
|
||||
DECLARE vLastRefresh DATE;
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
CALL cache_calc_unlock (vCalc);
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
CALL cache_calc_start (vCalc, vRefresh, 'last_buy', NULL);
|
||||
|
||||
IF !vRefresh
|
||||
THEN
|
||||
LEAVE proc;
|
||||
END IF;
|
||||
|
||||
-- TODO: ¿Se puede usar la fecha del ultimo inventario?
|
||||
SET started = vn2008.date_inv();-- TIMESTAMPADD(DAY, -90, CURDATE());
|
||||
SET ended = CURDATE(); -- TIMESTAMPADD(DAY, -1, CURDATE());
|
||||
|
||||
CALL vn.buyUltimateFromInterval(NULL, started, ended);
|
||||
|
||||
DELETE FROM last_buy;
|
||||
|
||||
INSERT INTO last_buy (item_id, warehouse_id, buy_id, landing)
|
||||
SELECT itemFk, warehouseFk, buyFk, landed
|
||||
FROM tmp.buyUltimateFromInterval;
|
||||
|
||||
DROP TEMPORARY TABLE tmp.buyUltimateFromInterval;
|
||||
CALL cache_calc_end (vCalc);
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
use `vn`;
|
||||
CREATE TABLE `ticketService` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||
`quantity` int(11) NOT NULL DEFAULT '0',
|
||||
`price` decimal(10,2) unsigned NOT NULL DEFAULT '0.00',
|
||||
`taxClassFk` tinyint(3) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `ticketServiceIvaGroup_idx` (`taxClassFk`),
|
||||
CONSTRAINT `ticketServiceIvaGroup` FOREIGN KEY (`taxClassFk`) REFERENCES `vn2008`.`iva_group` (`iva_group_id`) ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
File diff suppressed because one or more lines are too long
|
@ -498,14 +498,14 @@ INSERT INTO `vn`.`intrastat`(`id`, `description`, `taxClassFk`, `taxCodeFk`)
|
|||
|
||||
INSERT INTO `vn`.`item`(`id`, `name`,`typeFk`,`size`,`inkFk`,`category`,`stems`,`originFk`,`description`,`producerFk`,`intrastatFk`,`isOnOffer`,`expenceFk`,`isBargain`,`comment`,`relevancy`,`image`,`taxClassFk`,`longName`,`subName`,`tag5`,`value5`,`tag6`,`value6`,`tag7`,`value7`,`tag8`,`value8`)
|
||||
VALUES
|
||||
(1 , 'Gem of Time', 2, 70, 'AMA', 'EXT', 1 , 1, 'One of the infinity gems', 1, 06021010, 0, 2000000000, 0, NULL, 0, 66540, 1, 'Gem of Time', NULL, 'Medida', '70', 'Color', 'Amarillo' , 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(2 , 'Gem of Mind', 2, 70, 'AZL', 'EXT', 1 , 2, 'One of the infinity gems', 1, 06021010, 0, 2000000000, 0, NULL, 0, 65540, 1, 'Gem of Mind', NULL, 'Medida', '70', 'Color', 'Azul' , 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(3 , 'Iron Patriot', 1, 60, 'AMR', 'EXT', 1 , 3, 'Rhodeys armor', 1, 05080000, 0, 4751000000, 0, NULL, 0, 61692, 1, 'Iron Patriot', NULL, 'Medida', '60', 'Color', 'Rosa/Amarillo', 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(4 , 'Mark I', 1, 60, 'AMR', 'EXT', 1 , 1, 'Iron Mans first armor', 1, 05080000, 1, 4751000000, 0, NULL, 0, 66090, 2, 'Mark I', NULL, 'Medida', '60', 'Color', 'Rosa/Amarillo', 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(5 , 'Mjolnir', 3, 30, 'GRE', 'EXT', 1 , 2, 'Thors hammer!', 2, 06021010, 1, 4751000000, 0, NULL, 0, 67350, 2, 'Mjolnir', NULL, 'Medida', '30', 'Color', 'Azul' , 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(6 , 'Broken Box', 5, 30, 'GRE', 'EXT', 1 , 2, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, 67350, 2, 'Legendary Box', NULL, 'Medida', '30', 'Color', 'Gris' , NULL, NULL, NULL, NULL),
|
||||
(7 , 'Legendary Box', 5, 90, 'AZL', 'EXT', 1 , 2, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, 67350, 2, 'Broken Box', NULL, 'Medida', '90', 'Color', 'Gris' , NULL, NULL, NULL, NULL),
|
||||
(71, 'ShippingCost', 4, NULL, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 1, 4751000000, 0, NULL, 0, NULL, 2, 'ShippingCost', NULL, NULL , NULL, NULL , NULL , NULL, NULL, NULL, NULL);
|
||||
(1 , 'Object1 Gem1 5', 2, 70, 'AMA', 'EXT', 1 , 1, 'One of the infinity gems', 1, 06021010, 0, 2000000000, 0, NULL, 0, 66540, 1, 'Object1 Gem1 5', NULL, 'Medida', '70', 'Color', 'Amarillo' , 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(2 , 'Object2 Gem2 3', 2, 70, 'AZL', 'EXT', 1 , 2, 'One of the infinity gems', 1, 06021010, 0, 2000000000, 0, NULL, 0, 65540, 1, 'Object2 Gem2 3', NULL, 'Medida', '70', 'Color', 'Azul' , 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(3 , 'Object3 Armor 3', 1, 60, 'AMR', 'EXT', 1 , 3, 'Rhodeys armor', 1, 05080000, 0, 4751000000, 0, NULL, 0, 61692, 1, 'Object3 Armor 3', NULL, 'Medida', '60', 'Color', 'Rosa/Amarillo', 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(4 , 'Object4 Armor2 2', 1, 60, 'AMR', 'EXT', 1 , 1, 'Iron Mans first armor', 1, 05080000, 1, 4751000000, 0, NULL, 0, 66090, 2, 'Object4 Armor2 2', NULL, 'Medida', '60', 'Color', 'Rosa/Amarillo', 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(5 , 'Object5 Weapon 50', 3, 30, 'GRE', 'EXT', 1 , 2, 'Thors hammer!', 2, 06021010, 1, 4751000000, 0, NULL, 0, 67350, 2, 'Object5 Weapon 50', NULL, 'Medida', '30', 'Color', 'Azul' , 'Categoria', 'EXT', 'Tallos', '1'),
|
||||
(6 , 'Broken Box', 5, 30, 'GRE', 'EXT', 1 , 2, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, 67350, 2, 'Broken Box', NULL, 'Medida', '30', 'Color', 'Gris' , NULL, NULL, NULL, NULL),
|
||||
(7 , 'Legendary Box', 5, 90, 'AZL', 'EXT', 1 , 2, NULL, NULL, 06021010, 0, 4751000000, 0, NULL, 0, 67350, 2, 'Legendary Box', NULL, 'Medida', '90', 'Color', 'Gris' , NULL, NULL, NULL, NULL),
|
||||
(71, 'ShippingCost', 4, NULL, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 1, 4751000000, 0, NULL, 0, NULL, 2, 'ShippingCost', NULL, NULL , NULL, NULL , NULL , NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO `vn`.`expedition`(`id`, `agencyModeFk`, `ticketFk`, `isBox`, `created`, `itemFk`, `counter`, `checked`, `workerFk`)
|
||||
VALUES
|
||||
|
@ -529,19 +529,19 @@ INSERT INTO `vn`.`ticketPackaging`(`id`, `ticketFk`, `packagingFk`, `quantity`,
|
|||
|
||||
INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `price`, `discount`, `reserved`, `isPicked`, `created`)
|
||||
VALUES
|
||||
(1, 1, 1 , 'Gem of Time', 5, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(2, 2, 1 , 'Gem of Mind', 10, 1.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(3, 1, 1 , 'Gem of Time', 2, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(4, 4, 1 , 'Mark I' , 20, 3.06, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(5, 1, 2 , 'Gem of Time', 10, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -10 DAY)),
|
||||
(6, 1, 3 , 'Gem of Time', 15, 6.50, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -5 DAY)),
|
||||
(7, 2, 11, 'Gem of Mind', 15, 1.30, 0, 0, 0, CURDATE()),
|
||||
(8, 4, 11, 'Mark I' , 10, 3.26, 0, 0, 0, CURDATE()),
|
||||
(9, 1, 16, 'Gem of Time', 5, 9.10, 0, 0, 0, CURDATE()),
|
||||
(10, 2, 16, 'Gem of Mind', 10, 1.07, 0, 0, 0, CURDATE()),
|
||||
(11, 1, 16, 'Gem of Time', 2, 9.10, 0, 0, 0, CURDATE()),
|
||||
(12, 4, 16, 'Mark I' , 20, 3.06, 0, 0, 0, CURDATE()),
|
||||
(13, 2, 8, 'Gem of Mind', 15, 1.30, 0, 0, 0, CURDATE());
|
||||
(1, 1, 1 , 'Object1 Gem1 5', 5, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(2, 2, 1 , 'Object2 Gem2 3', 10, 1.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(3, 1, 1 , 'Object1 Gem1 5', 2, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(4, 4, 1 , 'Object4 Armor2 2' , 20, 3.06, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(5, 1, 2 , 'Object1 Gem1 5', 10, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -10 DAY)),
|
||||
(6, 1, 3 , 'Object1 Gem1 5', 15, 6.50, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -5 DAY)),
|
||||
(7, 2, 11, 'Object2 Gem2 3', 15, 1.30, 0, 0, 0, CURDATE()),
|
||||
(8, 4, 11, 'Object4 Armor2 2' , 10, 3.26, 0, 0, 0, CURDATE()),
|
||||
(9, 1, 16, 'Object1 Gem1 5', 5, 9.10, 0, 0, 0, CURDATE()),
|
||||
(10, 2, 16, 'Object2 Gem2 3', 10, 1.07, 0, 0, 0, CURDATE()),
|
||||
(11, 1, 16, 'Object1 Gem1 5', 2, 9.10, 0, 0, 0, CURDATE()),
|
||||
(12, 4, 16, 'Object4 Armor2 2' , 20, 3.06, 0, 0, 0, CURDATE()),
|
||||
(13, 2, 8, 'Object2 Gem2 3', 15, 1.30, 0, 0, 0, CURDATE());
|
||||
|
||||
INSERT INTO `vn`.`saleChecked`(`saleFk`, `isChecked`)
|
||||
VALUES
|
||||
|
@ -677,7 +677,7 @@ INSERT INTO `vn`.`itemTag`(`id`,`itemFk`,`tagFk`,`value`,`priority`)
|
|||
(19, 3, 1 , 'Green' , 5),
|
||||
(20, 3, 67, 'EXT' , 6),
|
||||
(21, 3, 23, '0' , 7),
|
||||
(22, 4, 56, 'Object3', 1),
|
||||
(22, 4, 56, 'Object4', 1),
|
||||
(23, 4, 58, 'Armor2' , 2),
|
||||
(24, 4, 4, '2' , 3),
|
||||
(25, 4, 36, 'Stark' , 4),
|
||||
|
@ -1026,7 +1026,13 @@ INSERT INTO `vn2008`.`workerTeam`(`id`, `team`, `user`)
|
|||
|
||||
INSERT INTO `vn`.`ticketRequest`(`id`, `description`, `requesterFk`, `atenderFk`, `quantity`, `price`, `isOk`, `saleFk`, `ticketFk`, `created`)
|
||||
VALUES
|
||||
(1, 'Gem of Time', 18, 35, 5, 9.10, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(2, 'Gem of Mind', 18, 35, 10, 1.07, 0, NULL, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(3, 'Mark I', 18, 35, 20, 3.06, 0, NULL, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(4, 'Gem of Mind', 18, 35, 15, 1.30, NULL, NULL, 11, CURDATE());
|
||||
(1, 'Object1 Gem1 5', 18, 35, 5, 9.10, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(2, 'Object2 Gem2 3', 18, 35, 10, 1.07, 0, NULL, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(3, 'Object4 Armor2 2', 18, 35, 20, 3.06, 0, NULL, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY)),
|
||||
(4, 'Object2 Gem2 3', 18, 35, 15, 1.30, NULL, NULL, 11, CURDATE());
|
||||
|
||||
|
||||
|
||||
delete from `account`.`roleRole` where role =52 and inheritsFrom = 35;
|
||||
|
||||
delete from `account`.`roleInherit` where role =52 and inheritsFrom = 35;
|
File diff suppressed because it is too large
Load Diff
|
@ -9,7 +9,7 @@ let verbose = false;
|
|||
if (process.argv[2] === '--v')
|
||||
verbose = true;
|
||||
|
||||
serviceRoot = __dirname;
|
||||
loopbackApp = `vn-loopback/server/server`;
|
||||
|
||||
let Jasmine = require('jasmine');
|
||||
let jasmine = new Jasmine();
|
||||
|
|
Loading…
Reference in New Issue