Change dueDay to 5 only with paymethod with iban #341

This commit is contained in:
Joan Sanchez 2018-07-10 14:13:47 +02:00
parent 841a72a269
commit 2d020268fe
5 changed files with 62 additions and 66 deletions

View File

@ -16,53 +16,48 @@ describe('Client', () => {
$httpBackend = _$httpBackend_; $httpBackend = _$httpBackend_;
$httpBackend.when('GET', /\/locale\/\w+\/[a-z]{2}\.json/).respond({}); $httpBackend.when('GET', /\/locale\/\w+\/[a-z]{2}\.json/).respond({});
$scope = $rootScope.$new(); $scope = $rootScope.$new();
let submit = jasmine.createSpy('submit').and.returnValue(Promise.resolve()); $scope.watcher = {
$scope.watcher = {submit}; submit: () => {
return {
then: callback => {
callback();
}
};
}
};
$httpBackend.get = jasmine.createSpy('get').and.returnValue(Promise.resolve()); $httpBackend.get = jasmine.createSpy('get').and.returnValue(Promise.resolve());
controller = $componentController('vnClientBillingData', {$scope: $scope}, {$http: $httpBackend}); controller = $componentController('vnClientBillingData', {$scope: $scope}, {$http: $httpBackend});
controller.client = {id: 101, name: 'Client name', payMethodFk: 4};
})); }));
describe('copyData()', () => { describe('client()', () => {
it(`should define billData using client's data`, () => { it(`should call setter client`, () => {
controller.client = { expect(controller.orgData).toEqual(controller.client);
dueDay: 0,
iban: null,
payMethodFk: 1
};
controller.billData = {};
controller.copyData(controller.client);
expect(controller.billData).toEqual(controller.client);
}); });
}); });
describe('submit()', () => { describe('hasPaymethodChanged()', () => {
it(`should call submit() on the watcher then receive a callback`, done => { it(`should call hasPaymethodChanged() and return true if there are changes on payMethod data`, () => {
spyOn(controller, 'checkPaymentChanges'); controller.client.payMethodFk = 5;
controller.submit()
.then(() => { expect(controller.hasPaymethodChanged()).toBeTruthy();
expect(controller.$.watcher.submit).toHaveBeenCalledWith(); });
expect(controller.checkPaymentChanges).toHaveBeenCalledWith();
done(); it(`should call hasPaymethodChanged() and return false if there are no changes on payMethod data`, () => {
}); controller.client.payMethodFk = 4;
expect(controller.hasPaymethodChanged()).toBeFalsy();
}); });
}); });
describe('checkPaymentChanges()', () => { describe('onSubmit()', () => {
it(`should not call sendMail.show() if there are no changes on billing data`, () => { it(`should call notifyChanges() if there are changes on payMethod data`, () => {
controller.billData = {marvelHero: 'Silver Surfer'}; spyOn(controller, 'notifyChanges');
controller.client = {marvelHero: 'Silver Surfer'}; controller.client.payMethodFk = 5;
controller.checkPaymentChanges(); controller.onSubmit();
expect(controller.$http.get).not.toHaveBeenCalled(); expect(controller.hasPaymethodChanged()).toBeTruthy();
}); expect(controller.notifyChanges).toHaveBeenCalledWith();
it(`should call sendMail.show() if there are changes on billing data object`, () => {
controller.billData = {id: '123', marvelHero: 'Silver Surfer'};
controller.client = {id: '123', marvelHero: 'Spider-Man'};
controller.checkPaymentChanges();
expect(controller.$http.get).toHaveBeenCalled();
}); });
}); });
}); });

View File

@ -5,7 +5,7 @@
form="form" form="form"
save="patch"> save="patch">
</vn-watcher> </vn-watcher>
<form name="form" ng-submit="$ctrl.submit()"> <form name="form" ng-submit="$ctrl.onSubmit()">
<vn-card pad-large> <vn-card pad-large>
<vn-title>Pay method</vn-title> <vn-title>Pay method</vn-title>
<vn-horizontal> <vn-horizontal>

View File

@ -2,47 +2,42 @@ import ngModule from '../module';
export default class Controller { export default class Controller {
constructor($scope, $http, vnApp, $translate) { constructor($scope, $http, vnApp, $translate) {
this.$ = $scope; this.$scope = $scope;
this.$http = $http; this.$http = $http;
this.vnApp = vnApp; this.vnApp = vnApp;
this.translate = $translate; this.translate = $translate;
this.billData = {};
this.copyData();
} }
$onChanges() { set client(value) {
this.copyData(); this._client = value;
if (value)
this.orgData = Object.assign({}, value);
} }
copyData() { get client() {
if (this.client) { return this._client;
this.billData.payMethodFk = this.client.payMethodFk;
this.billData.iban = this.client.iban;
this.billData.dueDay = this.client.dueDay;
}
} }
submit() { onSubmit() {
return this.$.watcher.submit().then( this.$scope.watcher.submit().then(() => {
() => this.checkPaymentChanges()); if (this.hasPaymethodChanged())
this.notifyChanges();
});
} }
checkPaymentChanges() { notifyChanges() {
let equals = true; this.$http.get(`/mailer/notification/payment-update/${this.client.id}`).then(
Object.keys(this.billData).forEach( () => this.vnApp.showMessage(this.translate.instant('Notification sent!'))
val => {
if (this.billData[val] !== this.client[val]) {
this.billData[val] = this.client[val];
equals = false;
}
}
); );
}
if (!equals) { hasPaymethodChanged() {
this.$http.get(`/mailer/notification/payment-update/${this.client.id}`).then( let payMethod = this.orgData.payMethodFk != this.client.payMethodFk;
() => this.vnApp.showMessage(this.translate.instant('Notification sent!')) let iban = this.orgData.iban != this.client.iban;
); let dueDay = this.orgData.dueDay != this.client.dueDay;
}
return payMethod || iban || dueDay;
} }
} }
Controller.$inject = ['$scope', '$http', 'vnApp', '$translate']; Controller.$inject = ['$scope', '$http', 'vnApp', '$translate'];

View File

@ -14,6 +14,7 @@ describe('Ticket', () => {
beforeEach(angular.mock.inject((_$componentController_, $rootScope, _$httpBackend_) => { beforeEach(angular.mock.inject((_$componentController_, $rootScope, _$httpBackend_) => {
$componentController = _$componentController_; $componentController = _$componentController_;
$httpBackend = _$httpBackend_; $httpBackend = _$httpBackend_;
$httpBackend.when('GET', /\/locale\/\w+\/[a-z]{2}\.json/).respond({});
$scope = $rootScope.$new(); $scope = $rootScope.$new();
controller = $componentController('vnTicketCreateCard', {$scope: $scope}); controller = $componentController('vnTicketCreateCard', {$scope: $scope});
controller.item = {id: 3}; controller.item = {id: 3};

View File

@ -89,7 +89,9 @@ module.exports = Self => {
Self.observe('before save', async function(ctx) { Self.observe('before save', async function(ctx) {
let changes = ctx.data || ctx.instance; let changes = ctx.data || ctx.instance;
let orgData = ctx.currentInstance;
let finalState = getFinalState(ctx); let finalState = getFinalState(ctx);
let payMethodWithIban = 4;
if (changes.salesPerson === null) { if (changes.salesPerson === null) {
changes.credit = 0; changes.credit = 0;
@ -97,7 +99,10 @@ module.exports = Self => {
changes.payMethodFk = 5; // Credit card changes.payMethodFk = 5; // Credit card
} }
if (changes.payMethodFk !== undefined && changes.dueDay === undefined) let payMethodFk = changes.payMethodFk || (orgData && orgData.payMethodFk);
let dueDay = changes.dueDay || (orgData && orgData.dueDay);
if (payMethodFk == payMethodWithIban && dueDay == 0)
changes.dueDay = 5; changes.dueDay = 5;
if (isMultiple(ctx)) return; if (isMultiple(ctx)) return;