140 lines
3.9 KiB
JavaScript
140 lines
3.9 KiB
JavaScript
import ngModule from '../../module';
|
|
import Component from 'core/lib/component';
|
|
import './style.scss';
|
|
|
|
class Controller extends Component {
|
|
$onInit() {
|
|
this.data.registerChild(this);
|
|
}
|
|
|
|
get ticket() {
|
|
return this._ticket;
|
|
}
|
|
|
|
set ticket(value) {
|
|
this._ticket = value;
|
|
|
|
if (!value) return;
|
|
|
|
this.getTotalPrice();
|
|
this.getTotalNewPrice();
|
|
this.getTotalDifferenceOfPrice();
|
|
this.loadDefaultTicketAction();
|
|
this.ticketHaveNegatives();
|
|
}
|
|
|
|
loadDefaultTicketAction() {
|
|
const isSalesAssistant = this.aclService.hasAny(['salesAssistant']);
|
|
this.ticket.option = isSalesAssistant ? 'mana' : 'renewPrices';
|
|
}
|
|
|
|
onStepChange() {
|
|
return true;
|
|
}
|
|
|
|
getTotalPrice() {
|
|
let totalPrice = 0;
|
|
this.ticket.sale.items.forEach(item => {
|
|
let itemTotalPrice = item.quantity * item.price;
|
|
totalPrice += itemTotalPrice;
|
|
});
|
|
this.totalPrice = totalPrice;
|
|
}
|
|
|
|
getTotalNewPrice() {
|
|
let totalNewPrice = 0;
|
|
this.ticket.sale.items.forEach(item => {
|
|
if (item.component)
|
|
totalNewPrice += item.quantity * item.component.newPrice;
|
|
});
|
|
this.totalNewPrice = totalNewPrice;
|
|
}
|
|
|
|
getTotalDifferenceOfPrice() {
|
|
let totalPriceDifference = 0;
|
|
this.ticket.sale.items.forEach(item => {
|
|
if (item.component)
|
|
totalPriceDifference += item.component.difference;
|
|
});
|
|
this.totalPriceDifference = totalPriceDifference;
|
|
}
|
|
|
|
ticketHaveNegatives() {
|
|
let haveNegatives = false;
|
|
let haveNotNegatives = false;
|
|
this.ticket.withoutNegatives = false;
|
|
const haveDifferences = this.ticket.sale.haveDifferences;
|
|
|
|
this.ticket.sale.items.forEach(item => {
|
|
if (item.quantity > item.movable)
|
|
haveNegatives = true;
|
|
else
|
|
haveNotNegatives = true;
|
|
});
|
|
|
|
this.haveNegatives = (haveNegatives && haveNotNegatives && haveDifferences);
|
|
if (this.haveNegatives)
|
|
this.ticket.withoutNegatives = true;
|
|
}
|
|
|
|
onSubmit() {
|
|
if (this.haveNegatives && !this.ticket.withoutNegatives)
|
|
this.$.negativesConfirm.show();
|
|
else this.applyChanges();
|
|
}
|
|
|
|
onConfirmAccept() {
|
|
this.ticket.withWarningAccept = true;
|
|
this.applyChanges();
|
|
}
|
|
|
|
applyChanges() {
|
|
if (!this.ticket.option) {
|
|
return this.vnApp.showError(
|
|
this.$t('Choose an option')
|
|
);
|
|
}
|
|
|
|
const query = `tickets/${this.ticket.id}/componentUpdate`;
|
|
const params = {
|
|
clientFk: this.ticket.clientFk,
|
|
nickname: this.ticket.nickname,
|
|
agencyModeFk: this.ticket.agencyModeFk,
|
|
addressFk: this.ticket.addressFk,
|
|
zoneFk: this.ticket.zoneFk,
|
|
warehouseFk: this.ticket.warehouseFk,
|
|
companyFk: this.ticket.companyFk,
|
|
shipped: this.ticket.shipped,
|
|
landed: this.ticket.landed,
|
|
isDeleted: this.ticket.isDeleted,
|
|
option: this.ticket.option,
|
|
isWithoutNegatives: this.ticket.withoutNegatives,
|
|
withWarningAccept: this.ticket.withWarningAccept,
|
|
keepPrice: false
|
|
};
|
|
|
|
this.$http.post(query, params)
|
|
.then(res => {
|
|
this.ticketToMove = res.data.id;
|
|
this.vnApp.showMessage(
|
|
this.$t(`The ticket has been unrouted`)
|
|
);
|
|
})
|
|
.finally(() => {
|
|
this.$state.go('ticket.card.summary', {id: this.ticketToMove});
|
|
});
|
|
}
|
|
}
|
|
|
|
ngModule.vnComponent('vnTicketBasicDataStepTwo', {
|
|
template: require('./index.html'),
|
|
controller: Controller,
|
|
bindings: {
|
|
ticket: '<'
|
|
},
|
|
require: {
|
|
card: '^vnTicketCard',
|
|
data: '^vnTicketBasicData'
|
|
}
|
|
});
|