refactor ticket.basicData steps
gitea/salix/2041-ticket_datos_basico This commit looks good
Details
gitea/salix/2041-ticket_datos_basico This commit looks good
Details
This commit is contained in:
parent
9918a5afbc
commit
dd368a8c3f
|
@ -0,0 +1,5 @@
|
|||
ALTER TABLE `vn`.`ticketUpdateAction`
|
||||
ADD COLUMN `code` VARCHAR(45) NOT NULL AFTER `description`;
|
||||
|
||||
UPDATE `vn`.`ticketUpdateAction` SET `code`='changePrice' WHERE `id`='1';
|
||||
UPDATE `vn`.`ticketUpdateAction` SET `code`='turnInMana' WHERE `id`='3';
|
|
@ -471,7 +471,7 @@ export default {
|
|||
nextStepButton: 'vn-step-control .buttons > section:last-child vn-button',
|
||||
finalizeButton: 'vn-step-control .buttons > section:last-child button[type=submit]',
|
||||
stepTwoTotalPriceDif: 'vn-ticket-basic-data-step-two vn-tfoot > vn-tr > :nth-child(6)',
|
||||
chargesReason: 'vn-autocomplete[ng-model="$ctrl.ticket.option"]',
|
||||
chargesReason: 'div:nth-child(3) > vn-radio > div',
|
||||
},
|
||||
ticketComponents: {
|
||||
base: 'vn-ticket-components [name="base-sum"]'
|
||||
|
|
|
@ -80,15 +80,15 @@ describe('Ticket Edit basic data path', () => {
|
|||
expect(result).toContain('-€248.00');
|
||||
});
|
||||
|
||||
it(`should then click next to move on to step three`, async() => {
|
||||
await page.waitToClick(selectors.ticketBasicData.nextStepButton);
|
||||
let url = await page.expectURL('data/step-three');
|
||||
// it(`should then click next to move on to step three`, async() => {
|
||||
// await page.waitToClick(selectors.ticketBasicData.nextStepButton);
|
||||
// let url = await page.expectURL('data/step-three');
|
||||
|
||||
expect(url).toBe(true);
|
||||
});
|
||||
// expect(url).toBe(true);
|
||||
// });
|
||||
|
||||
it(`should select a new reason for the changes made then click on finalize`, async() => {
|
||||
await page.autocompleteSearch(selectors.ticketBasicData.chargesReason, 'Cambiar los precios en el ticket');
|
||||
await page.waitToClick(selectors.ticketBasicData.chargesReason);
|
||||
await page.waitToClick(selectors.ticketBasicData.finalizeButton);
|
||||
let url = await page.expectURL('summary');
|
||||
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
"description": {
|
||||
"type": "String",
|
||||
"required": true
|
||||
},
|
||||
"code": {
|
||||
"type": "String"
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
|
|
|
@ -3,9 +3,8 @@
|
|||
step-count="10"
|
||||
steps="[
|
||||
{name: 'Basic data', state: 'ticket.card.basicData.stepOne'},
|
||||
{name: 'Price difference', state: 'ticket.card.basicData.stepTwo'},
|
||||
{name: 'Charge', state: 'ticket.card.basicData.stepThree'}]"
|
||||
on-step-change="$ctrl.onStepChange(state)"
|
||||
{name: 'Price difference', state: 'ticket.card.basicData.stepTwo'}]"
|
||||
on-step-change="$ctrl.onStepChange()"
|
||||
on-step-end="$ctrl.onSubmit()">
|
||||
</vn-step-control>
|
||||
</vn-button-bar>
|
||||
|
|
|
@ -16,8 +16,8 @@ class Controller {
|
|||
this.child = child;
|
||||
}
|
||||
|
||||
onStepChange(state) {
|
||||
return this.child.onStepChange(state);
|
||||
onStepChange() {
|
||||
return this.child.onStepChange();
|
||||
}
|
||||
|
||||
onSubmit() {
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
<form name="form">
|
||||
<vn-card class="vn-w-md vn-pa-lg">
|
||||
<vn-horizontal>
|
||||
<vn-autocomplete vn-one
|
||||
url="TicketUpdateActions"
|
||||
label="Charge difference to"
|
||||
show-field="description"
|
||||
value-field="id"
|
||||
ng-model="$ctrl.ticket.option"
|
||||
initial-data="$ctrl.ticket.option">
|
||||
</vn-autocomplete>
|
||||
</vn-horizontal>
|
||||
</vn-card>
|
||||
</form>
|
|
@ -1,73 +0,0 @@
|
|||
import ngModule from '../../module';
|
||||
|
||||
class Controller {
|
||||
constructor($http, $scope, $state, $translate, vnApp) {
|
||||
this.$http = $http;
|
||||
this.$scope = $scope;
|
||||
this.$state = $state;
|
||||
this.$translate = $translate;
|
||||
this.vnApp = vnApp;
|
||||
}
|
||||
|
||||
$onInit() {
|
||||
this.data.registerChild(this);
|
||||
}
|
||||
|
||||
get ticket() {
|
||||
return this._ticket;
|
||||
}
|
||||
|
||||
set ticket(value) {
|
||||
this._ticket = value;
|
||||
|
||||
if (value) this.ticket.option = 1;
|
||||
}
|
||||
|
||||
onStepChange(state) {
|
||||
return true;
|
||||
}
|
||||
|
||||
onSubmit() {
|
||||
if (!this.ticket.option) {
|
||||
return this.vnApp.showError(
|
||||
this.$translate.instant('Choose an option')
|
||||
);
|
||||
}
|
||||
|
||||
let query = `tickets/${this.ticket.id}/componentUpdate`;
|
||||
let params = {
|
||||
clientId: this.ticket.clientFk,
|
||||
agencyModeId: this.ticket.agencyModeFk,
|
||||
addressId: this.ticket.addressFk,
|
||||
zoneId: this.ticket.zoneFk,
|
||||
warehouseId: this.ticket.warehouseFk,
|
||||
companyId: this.ticket.companyFk,
|
||||
shipped: this.ticket.shipped,
|
||||
landed: this.ticket.landed,
|
||||
isDeleted: this.ticket.isDeleted,
|
||||
option: this.ticket.option
|
||||
};
|
||||
|
||||
this.$http.post(query, params).then(res => {
|
||||
this.vnApp.showMessage(
|
||||
this.$translate.instant(`The ticket has been unrouted`)
|
||||
);
|
||||
this.card.reload();
|
||||
this.$state.go('ticket.card.summary', {id: this.$state.params.id});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Controller.$inject = ['$http', '$scope', '$state', '$translate', 'vnApp'];
|
||||
|
||||
ngModule.component('vnTicketBasicDataStepThree', {
|
||||
template: require('./index.html'),
|
||||
controller: Controller,
|
||||
bindings: {
|
||||
ticket: '<'
|
||||
},
|
||||
require: {
|
||||
card: '^vnTicketCard',
|
||||
data: '^vnTicketBasicData'
|
||||
}
|
||||
});
|
|
@ -1,67 +0,0 @@
|
|||
import './index.js';
|
||||
|
||||
describe('ticket', () => {
|
||||
describe('Component vnTicketBasicDataStepThree', () => {
|
||||
let now = Date.now();
|
||||
let $state;
|
||||
let controller;
|
||||
let $httpBackend;
|
||||
let vnApp;
|
||||
|
||||
beforeEach(ngModule('ticket'));
|
||||
|
||||
beforeEach(angular.mock.inject(($componentController, _$state_, _$httpBackend_, _vnApp_) => {
|
||||
$state = _$state_;
|
||||
spyOn($state, 'go');
|
||||
vnApp = _vnApp_;
|
||||
spyOn(vnApp, 'showError');
|
||||
$httpBackend = _$httpBackend_;
|
||||
controller = $componentController('vnTicketBasicDataStepThree', {$state});
|
||||
}));
|
||||
|
||||
describe('onSubmit()', () => {
|
||||
it(`should return an error if the item doesn't have option property in the controller`, () => {
|
||||
controller._ticket = {id: 1};
|
||||
controller.onSubmit();
|
||||
|
||||
expect(vnApp.showError).toHaveBeenCalledWith('Choose an option');
|
||||
});
|
||||
|
||||
it('should perform a post query correctly then call two functions()', () => {
|
||||
spyOn(controller.vnApp, 'showMessage');
|
||||
controller.card = {reload: () => {}};
|
||||
spyOn(controller.card, 'reload');
|
||||
|
||||
controller.ticket = {
|
||||
id: 1,
|
||||
agencyModeFk: 1,
|
||||
addressFk: 121,
|
||||
zoneFk: 3,
|
||||
warehouseFk: 1,
|
||||
shipped: now,
|
||||
landed: now,
|
||||
option: 1
|
||||
};
|
||||
|
||||
let data = {
|
||||
agencyModeId: 1,
|
||||
addressId: 121,
|
||||
zoneId: 3,
|
||||
warehouseId: 1,
|
||||
shipped: now,
|
||||
landed: now,
|
||||
option: 1
|
||||
};
|
||||
|
||||
$httpBackend.whenPOST(`tickets/1/componentUpdate`, data).respond('ok');
|
||||
$httpBackend.expectPOST(`tickets/1/componentUpdate`, data);
|
||||
controller.onSubmit();
|
||||
$httpBackend.flush();
|
||||
|
||||
expect(controller.vnApp.showMessage).toHaveBeenCalledWith('The ticket has been unrouted');
|
||||
expect(controller.card.reload).toHaveBeenCalledWith();
|
||||
expect(controller.$state.go).toHaveBeenCalledWith('ticket.card.summary', jasmine.any(Object));
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,4 +0,0 @@
|
|||
Charge: Cargo
|
||||
Choose an option: Selecciona una opción
|
||||
Charge difference to: Diferencia a cargo de
|
||||
The ticket has been unrouted: El ticket ha sido desenrutado
|
|
@ -1,3 +1,23 @@
|
|||
<vn-crud-model
|
||||
url="TicketUpdateActions"
|
||||
data="ticketUpdateActions"
|
||||
auto-load="true">
|
||||
</vn-crud-model>
|
||||
<vn-card class="vn-w-lg vn-pa-md vn-mb-md">
|
||||
<h6
|
||||
class="text-secondary"
|
||||
style="font-weight: normal;"
|
||||
translate>
|
||||
Charge difference to
|
||||
</h6>
|
||||
<div ng-repeat="action in ticketUpdateActions">
|
||||
<vn-radio
|
||||
ng-model=$ctrl.ticket.option
|
||||
label="{{action.description}}"
|
||||
val={{action.id}}>
|
||||
</vn-radio>
|
||||
</div>
|
||||
</vn-card>
|
||||
<vn-card class="vn-w-lg">
|
||||
<vn-table>
|
||||
<vn-thead>
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import ngModule from '../../module';
|
||||
|
||||
class Controller {
|
||||
constructor($http) {
|
||||
constructor($http, $state, $translate, vnApp) {
|
||||
this.$http = $http;
|
||||
this.$state = $state;
|
||||
this.$translate = $translate;
|
||||
this.vnApp = vnApp;
|
||||
}
|
||||
|
||||
$onInit() {
|
||||
|
@ -21,9 +24,18 @@ class Controller {
|
|||
this.getTotalPrice();
|
||||
this.getTotalNewPrice();
|
||||
this.getTotalDifferenceOfPrice();
|
||||
this.loadDefaultTicketAction();
|
||||
}
|
||||
|
||||
onStepChange(state) {
|
||||
loadDefaultTicketAction() {
|
||||
let filter = {where: {code: 'changePrice'}};
|
||||
|
||||
this.$http.get(`TicketUpdateActions`, {filter}).then(response => {
|
||||
return this.ticket.option = response.data[0].id;
|
||||
});
|
||||
}
|
||||
|
||||
onStepChange() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -53,9 +65,39 @@ class Controller {
|
|||
});
|
||||
this.totalPriceDifference = totalPriceDifference;
|
||||
}
|
||||
|
||||
onSubmit() {
|
||||
if (!this.ticket.option) {
|
||||
return this.vnApp.showError(
|
||||
this.$translate.instant('Choose an option')
|
||||
);
|
||||
}
|
||||
|
||||
Controller.$inject = ['$http'];
|
||||
let query = `tickets/${this.ticket.id}/componentUpdate`;
|
||||
let params = {
|
||||
clientId: this.ticket.clientFk,
|
||||
agencyModeId: this.ticket.agencyModeFk,
|
||||
addressId: this.ticket.addressFk,
|
||||
zoneId: this.ticket.zoneFk,
|
||||
warehouseId: this.ticket.warehouseFk,
|
||||
companyId: this.ticket.companyFk,
|
||||
shipped: this.ticket.shipped,
|
||||
landed: this.ticket.landed,
|
||||
isDeleted: this.ticket.isDeleted,
|
||||
option: parseInt(this.ticket.option)
|
||||
};
|
||||
|
||||
this.$http.post(query, params).then(res => {
|
||||
this.vnApp.showMessage(
|
||||
this.$translate.instant(`The ticket has been unrouted`)
|
||||
);
|
||||
this.card.reload();
|
||||
this.$state.go('ticket.card.summary', {id: this.$state.params.id});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Controller.$inject = ['$http', '$state', '$translate', 'vnApp'];
|
||||
|
||||
ngModule.component('vnTicketBasicDataStepTwo', {
|
||||
template: require('./index.html'),
|
||||
|
@ -64,6 +106,7 @@ ngModule.component('vnTicketBasicDataStepTwo', {
|
|||
ticket: '<'
|
||||
},
|
||||
require: {
|
||||
card: '^vnTicketCard',
|
||||
data: '^vnTicketBasicData'
|
||||
}
|
||||
});
|
||||
|
|
|
@ -13,7 +13,6 @@ import './summary';
|
|||
import './basic-data';
|
||||
import './basic-data/step-one';
|
||||
import './basic-data/step-two';
|
||||
import './basic-data/step-three';
|
||||
import './note';
|
||||
import './expedition';
|
||||
import './volume';
|
||||
|
|
|
@ -79,14 +79,6 @@
|
|||
"params": {
|
||||
"ticket": "$ctrl.data"
|
||||
}
|
||||
}, {
|
||||
"url" : "/step-three",
|
||||
"state": "ticket.card.basicData.stepThree",
|
||||
"component": "vn-ticket-basic-data-step-three",
|
||||
"description": "Charge",
|
||||
"params": {
|
||||
"ticket": "$ctrl.data"
|
||||
}
|
||||
}, {
|
||||
"url" : "/sale",
|
||||
"state": "ticket.card.sale",
|
||||
|
|
Loading…
Reference in New Issue