Commit cd6e32a184e023becdcaaf9db8e8172ddd29f461

Authored by Eric Fernandez
Exists in master and in 1 other branch develop

Merge branch 'develop' into 'master'

Develop

See merge request !71
1 const templateCache = require('gulp-angular-templatecache'); 1 const templateCache = require('gulp-angular-templatecache');
2 const clean = require('gulp-clean'); 2 const clean = require('gulp-clean');
3 const concat = require('gulp-concat'); 3 const concat = require('gulp-concat');
4 const htmlmin = require('gulp-htmlmin'); 4 const htmlmin = require('gulp-htmlmin');
5 const rename = require('gulp-rename'); 5 const rename = require('gulp-rename');
6 const uglify = require('gulp-uglify'); 6 const uglify = require('gulp-uglify');
7 const gulp = require('gulp'); 7 const gulp = require('gulp');
8 const pump = require('pump'); 8 const pump = require('pump');
9 const jshint = require('gulp-jshint'); 9 const jshint = require('gulp-jshint');
10 const replace = require('gulp-replace'); 10 const replace = require('gulp-replace');
11 const connect = require('gulp-connect'); 11 const connect = require('gulp-connect');
12 const header = require('gulp-header'); 12 const header = require('gulp-header');
13 const footer = require('gulp-footer'); 13 const footer = require('gulp-footer');
14 const gulpSequence = require('gulp-sequence'); 14 const gulpSequence = require('gulp-sequence');
15 15
16 var paths = { 16 var paths = {
17 srcJS: 'src/js/*.js', 17 srcJS: 'src/js/*.js',
18 srcViews: 'src/views/*.html', 18 srcViews: 'src/views/*.html',
19 specs: 'spec/*.js', 19 specs: 'spec/*.js',
20 tmp: 'tmp', 20 tmp: 'tmp',
21 dist: 'dist/' 21 dist: 'dist/'
22 }; 22 };
23 23
24 gulp.task('uglify', gulpSequence('clean', ['templates', 'uglify-spec'], 'uglify-app')); 24 gulp.task('uglify', function(callback) {
25 gulpSequence('clean', ['templates', 'uglify-spec'], 'uglify-app')(callback);
26 });
25 27
26 gulp.task('templates', function() { 28 gulp.task('templates', function() {
27 return pump( 29 return pump(
28 [ 30 [
29 gulp.src(paths.srcViews), 31 gulp.src(paths.srcViews),
30 htmlmin(), 32 htmlmin(),
31 templateCache('views.js', { 33 templateCache('views.js', {
32 module: 'focaCrearNotaPedido', 34 module: 'focaCrearNotaPedido',
33 root: '' 35 root: ''
34 }), 36 }),
35 gulp.dest(paths.tmp) 37 gulp.dest(paths.tmp)
36 ] 38 ]
37 ); 39 );
38 }); 40 });
39 41
40 gulp.task('uglify-app', function() { 42 gulp.task('uglify-app', function() {
41 return pump( 43 return pump(
42 [ 44 [
43 gulp.src([ 45 gulp.src([
44 paths.srcJS, 46 paths.srcJS,
45 'tmp/views.js' 47 'tmp/views.js'
46 ]), 48 ]),
47 concat('foca-crear-nota-pedido.js'), 49 concat('foca-crear-nota-pedido.js'),
48 replace('src/views/', ''), 50 replace('src/views/', ''),
49 gulp.dest(paths.tmp), 51 gulp.dest(paths.tmp),
50 rename('foca-crear-nota-pedido.min.js'), 52 rename('foca-crear-nota-pedido.min.js'),
51 uglify(), 53 uglify(),
52 gulp.dest(paths.dist) 54 gulp.dest(paths.dist)
53 ] 55 ]
54 ); 56 );
55 }); 57 });
56 58
57 gulp.task('uglify-spec', function() { 59 gulp.task('uglify-spec', function() {
58 return pump([ 60 return pump([
59 gulp.src(paths.specs), 61 gulp.src(paths.specs),
60 concat('foca-crear-nota-pedido.spec.js'), 62 concat('foca-crear-nota-pedido.spec.js'),
61 replace("src/views/", ''), 63 replace("src/views/", ''),
62 header("describe('Módulo foca-crear-nota-pedido', function() { \n"), 64 header("describe('Módulo foca-crear-nota-pedido', function() { \n"),
63 footer("});"), 65 footer("});"),
64 gulp.dest(paths.dist) 66 gulp.dest(paths.dist)
65 ]); 67 ]);
66 }); 68 });
67 69
68 gulp.task('clean', function() { 70 gulp.task('clean', function() {
69 return gulp.src(['tmp', 'dist'], {read: false}) 71 return gulp.src(['tmp', 'dist'], {read: false})
70 .pipe(clean()); 72 .pipe(clean());
71 }); 73 });
72 74
73 gulp.task('pre-commit', function() { 75 gulp.task('pre-commit', function() {
74 return pump( 76 return pump(
75 [ 77 [
76 gulp.src([paths.srcJS, paths.specs]), 78 gulp.src([paths.srcJS, paths.specs]),
77 jshint('.jshintrc'), 79 jshint('.jshintrc'),
78 jshint.reporter('default'), 80 jshint.reporter('default'),
79 jshint.reporter('fail') 81 jshint.reporter('fail')
80 ] 82 ]
81 ); 83 );
82 84
83 gulp.start('uglify'); 85 gulp.start('uglify');
84 }); 86 });
85 87
86 gulp.task('webserver', function() { 88 gulp.task('webserver', function() {
87 pump [ 89 pump [
88 connect.server({port: 3300, host: '0.0.0.0'}) 90 connect.server({port: 3300, host: '0.0.0.0'})
89 ] 91 ]
90 }); 92 });
91 93
92 gulp.task('clean-post-install', function() { 94 gulp.task('clean-post-install', function() {
93 return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js', 95 return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js',
94 'index.html', 'test.html', 'spec'], {read: false}) 96 'index.html', 'test.html', 'spec'], {read: false})
95 .pipe(clean()); 97 .pipe(clean());
96 }); 98 });
97 99
98 gulp.task('default', ['webserver']); 100 gulp.task('default', ['webserver']);
99 101
100 gulp.task('watch', function() { 102 gulp.task('watch', function() {
101 gulp.watch([paths.srcJS, paths.srcViews], ['uglify']); 103 gulp.watch([paths.srcJS, paths.srcViews], ['uglify']);
102 }); 104 });
103 105
104 gulp.task('copy', ['uglify'], function() { 106 gulp.task('copy', ['uglify'], function() {
105 return gulp.src('dist/*.js') 107 return gulp.src('dist/*.js')
106 .pipe(gulp.dest('../../wrapper-demo/node_modules/foca-crear-nota-pedido/dist/')); 108 .pipe(gulp.dest('../../wrapper-demo/node_modules/foca-crear-nota-pedido/dist/'));
107 }); 109 });
108 110
109 gulp.task('watchAndCopy', function() { 111 gulp.task('watchAndCopy', function() {
110 return gulp.watch([paths.srcJS], ['copy']); 112 return gulp.watch([paths.srcJS], ['copy']);
111 }); 113 });
112 114
spec/controllerSpec.js
1 describe('Controladores módulo crear nota de pedido', function() { 1 describe('Controladores módulo crear nota de pedido', function() {
2 2
3 var $controler; 3 var $controler;
4 4
5 beforeEach(function() { 5 beforeEach(function() {
6 module('focaCrearNotaPedido'); 6 module('focaCrearNotaPedido');
7 inject(function(_$controller_) { 7 inject(function(_$controller_) {
8 $controler = _$controller_; 8 $controler = _$controller_;
9 }); 9 });
10 }); 10 });
11 11
12 describe('Controlador notaPedidoCtrl', function() { 12 describe('Controlador notaPedidoCtrl', function() {
13 13
14 var filter = function() { 14 var filter = function() {
15 return function() { }; 15 return function() { };
16 }; 16 };
17 var timeout; 17 var timeout;
18 18
19 beforeEach(function() { 19 beforeEach(function() {
20 20
21 inject(function($timeout) { 21 inject(function($timeout) {
22 timeout = $timeout; 22 timeout = $timeout;
23 }); 23 });
24 }); 24 });
25 25
26 it('La función seleccionarNotaPedido levanta modal', function() { 26 it('La función seleccionarNotaPedido levanta modal', function() {
27 //arrange 27 //arrange
28 var scope = { 28 var scope = {
29 $watch: function() { }, 29 $watch: function() { },
30 $broadcast: function() { } 30 $broadcast: function() { }
31 }; 31 };
32 var uibModal = { 32 var uibModal = {
33 open: function() { } 33 open: function() { }
34 }; 34 };
35 35
36 $controler('notaPedidoCtrl', { 36 $controler('notaPedidoCtrl', {
37 $scope: scope, 37 $scope: scope,
38 $uibModal: uibModal, 38 $uibModal: uibModal,
39 $location: {}, 39 $location: {},
40 $filter: filter, 40 $filter: filter,
41 $timeout: timeout, 41 $timeout: timeout,
42 crearNotaPedidoService: { 42 crearNotaPedidoService: {
43 getNumeroNotaPedido: function() { 43 getNumeroNotaPedido: function() {
44 return { 44 return {
45 then: function() { } 45 then: function() { }
46 }; 46 };
47 }, 47 },
48 getBotonera: function() { }, 48 getBotonera: function() { },
49 getCotizacionByIdMoneda: function() { 49 getCotizacionByIdMoneda: function() {
50 return { 50 return {
51 then: function() { } 51 then: function() { }
52 }; 52 };
53 } 53 }
54 }, 54 },
55 focaBotoneraLateralService: {}, 55 focaBotoneraLateralService: {},
56 focaModalService: {}, 56 focaModalService: {},
57 notaPedidoBusinessService: {}, 57 notaPedidoBusinessService: {},
58 $rootScope: { 58 $rootScope: {
59 $on: function() { } 59 $on: function() { }
60 }, 60 },
61 focaSeguimientoService: {}, 61 focaSeguimientoService: {},
62 APP: {}, 62 APP: {},
63 focaLoginService: {}, 63 focaLoginService: {},
64 $localStorage: {} 64 $localStorage: {}
65 }); 65 });
66 var respuesta = { result: { then: function() { } } }; 66 var respuesta = { result: { then: function() { } } };
67 67
68 //act 68 //act
69 spyOn(uibModal, 'open').and.returnValue(respuesta); 69 spyOn(uibModal, 'open').and.returnValue(respuesta);
70 scope.seleccionarNotaPedido(); 70 scope.seleccionarNotaPedido();
71 71
72 //assert 72 //assert
73 expect(uibModal.open).toHaveBeenCalled(); 73 expect(uibModal.open).toHaveBeenCalled();
74 }); 74 });
75 75
76 it('La función seleccionarNotaPedido llama a broadCast en promesa', function(done) { 76 it('La función seleccionarNotaPedido llama a broadCast en promesa', function(done) {
77 //arrange 77 //arrange
78 var scope = { 78 var scope = {
79 $watch: function() { }, 79 $watch: function() { },
80 $broadcast: function() { } 80 $broadcast: function() { }
81 }; 81 };
82 var uibModal = { 82 var uibModal = {
83 open: function() { } 83 open: function() { }
84 }; 84 };
85 85
86 $controler('notaPedidoCtrl', { 86 $controler('notaPedidoCtrl', {
87 $scope: scope, 87 $scope: scope,
88 $uibModal: uibModal, 88 $uibModal: uibModal,
89 $location: {}, 89 $location: {},
90 $filter: filter, 90 $filter: filter,
91 $timeout: timeout, 91 $timeout: timeout,
92 crearNotaPedidoService: { 92 crearNotaPedidoService: {
93 getNumeroNotaPedido: function() { 93 getNumeroNotaPedido: function() {
94 return { 94 return {
95 then: function() { } 95 then: function() { }
96 }; 96 };
97 }, 97 },
98 getBotonera: function() { }, 98 getBotonera: function() { },
99 getCotizacionByIdMoneda: function() { 99 getCotizacionByIdMoneda: function() {
100 return { 100 return {
101 then: function() { } 101 then: function() { }
102 }; 102 };
103 } 103 }
104 }, 104 },
105 focaBotoneraLateralService: {}, 105 focaBotoneraLateralService: {},
106 focaModalService: {}, 106 focaModalService: {},
107 notaPedidoBusinessService: { 107 notaPedidoBusinessService: {
108 plazoToString: function() { }, 108 plazoToString: function() { },
109 calcularArticulos: function() { } 109 calcularArticulos: function() { }
110 }, 110 },
111 $rootScope: { 111 $rootScope: {
112 $on: function() { } 112 $on: function() { }
113 }, 113 },
114 focaSeguimientoService: {}, 114 focaSeguimientoService: {},
115 APP: {}, 115 APP: {},
116 focaLoginService: {}, 116 focaLoginService: {},
117 $localStorage: {} 117 $localStorage: {}
118 }); 118 });
119 var notaPedido = { 119 var notaPedido = {
120 cotizacion: { 120 cotizacion: {
121 moneda: {} 121 moneda: {}
122 }, 122 },
123 cliente: {}, 123 cliente: {},
124 vendedor: {}, 124 vendedor: {},
125 proveedor: {}, 125 proveedor: {},
126 notaPedidoPlazo: [], 126 notaPedidoPlazo: [],
127 notaPedidoPuntoDescarga: [] 127 notaPedidoPuntoDescarga: []
128 }; 128 };
129 var respuesta = { result: Promise.resolve(notaPedido) }; 129 var respuesta = { result: Promise.resolve(notaPedido) };
130 130
131 //act 131 //act
132 scope.notaPedido = {}; 132 scope.notaPedido = {};
133 scope.$broadcast = function() { }; 133 scope.$broadcast = function() { };
134 spyOn(uibModal, 'open').and.returnValue(respuesta); 134 spyOn(uibModal, 'open').and.returnValue(respuesta);
135 spyOn(scope, '$broadcast'); 135 spyOn(scope, '$broadcast');
136 scope.seleccionarNotaPedido(); 136 scope.seleccionarNotaPedido();
137 137
138 //assert 138 //assert
139 respuesta.result.then(function() { 139 respuesta.result.then(function() {
140 expect(scope.$broadcast).toHaveBeenCalledWith('removeCabecera', 'Bomba:'); 140 expect(scope.$broadcast).toHaveBeenCalledWith('removeCabecera', 'Bomba:');
141 expect(scope.$broadcast).toHaveBeenCalledWith('removeCabecera', 'Kilometros:'); 141 expect(scope.$broadcast).toHaveBeenCalledWith('removeCabecera', 'Kilometros:');
142 done(); 142 done();
143 }); 143 });
144 }); 144 });
145 145
146 it('función seleccionarProductos muestra alerta cuando idLista undefined', function() { 146 it('función seleccionarProductos muestra alerta cuando idLista undefined', function() {
147 //arrange 147 //arrange
148 var scope = { 148 var scope = {
149 $watch: function() { }, 149 $watch: function() { },
150 $broadcast: function() { } 150 $broadcast: function() { }
151 }; 151 };
152 var focaModalService = { 152 var focaModalService = {
153 alert: function() { } 153 alert: function() { }
154 }; 154 };
155 155
156 $controler('notaPedidoCtrl', { 156 $controler('notaPedidoCtrl', {
157 $scope: scope, 157 $scope: scope,
158 $uibModal: {}, 158 $uibModal: {},
159 $location: {}, 159 $location: {},
160 $filter: filter, 160 $filter: filter,
161 $timeout: timeout, 161 $timeout: timeout,
162 crearNotaPedidoService: { 162 crearNotaPedidoService: {
163 getNumeroNotaPedido: function() { 163 getNumeroNotaPedido: function() {
164 return { 164 return {
165 then: function() { } 165 then: function() { }
166 }; 166 };
167 }, 167 },
168 getBotonera: function() { }, 168 getBotonera: function() { },
169 getCotizacionByIdMoneda: function() { 169 getCotizacionByIdMoneda: function() {
170 return { 170 return {
171 then: function() { } 171 then: function() { }
172 }; 172 };
173 } 173 }
174 }, 174 },
175 focaBotoneraLateralService: {}, 175 focaBotoneraLateralService: {},
176 focaModalService: focaModalService, 176 focaModalService: focaModalService,
177 notaPedidoBusinessService: {}, 177 notaPedidoBusinessService: {},
178 $rootScope: { 178 $rootScope: {
179 $on: function() { } 179 $on: function() { }
180 }, 180 },
181 focaSeguimientoService: {}, 181 focaSeguimientoService: {},
182 APP: {}, 182 APP: {},
183 focaLoginService: {}, 183 focaLoginService: {},
184 $localStorage: {} 184 $localStorage: {}
185 }); 185 });
186 186
187 //act 187 //act
188 spyOn(focaModalService, 'alert'); 188 spyOn(focaModalService, 'alert');
189 scope.idLista = undefined; 189 scope.idLista = undefined;
190 scope.seleccionarProductos(); 190 scope.seleccionarProductos();
191 191
192 //assert 192 //assert
193 expect(focaModalService.alert) 193 expect(focaModalService.alert)
194 .toHaveBeenCalledWith('Primero seleccione una lista de precio y condicion'); 194 .toHaveBeenCalledWith('Primero seleccione una lista de precio y condicion');
195 }); 195 });
196 196
197 it('función seleccionarProductos abre modal', function() { 197 it('función seleccionarProductos abre modal', function() {
198 //arrange 198 //arrange
199 var scope = { 199 var scope = {
200 $watch: function() { }, 200 $watch: function() { },
201 $broadcast: function() { } 201 $broadcast: function() { }
202 }; 202 };
203 var uibModal = { 203 var uibModal = {
204 open: function() { } 204 open: function() { }
205 }; 205 };
206 206
207 $controler('notaPedidoCtrl', { 207 $controler('notaPedidoCtrl', {
208 $scope: scope, 208 $scope: scope,
209 $uibModal: uibModal, 209 $uibModal: uibModal,
210 $location: {}, 210 $location: {},
211 $filter: filter, 211 $filter: filter,
212 $timeout: timeout, 212 $timeout: timeout,
213 crearNotaPedidoService: { 213 crearNotaPedidoService: {
214 getNumeroNotaPedido: function() { 214 getNumeroNotaPedido: function() {
215 return { 215 return {
216 then: function() { } 216 then: function() { }
217 }; 217 };
218 }, 218 },
219 getBotonera: function() { }, 219 getBotonera: function() { },
220 getCotizacionByIdMoneda: function() { 220 getCotizacionByIdMoneda: function() {
221 return { 221 return {
222 then: function() { } 222 then: function() { }
223 }; 223 };
224 } 224 }
225 }, 225 },
226 focaBotoneraLateralService: {}, 226 focaBotoneraLateralService: {},
227 focaModalService: {}, 227 focaModalService: {},
228 notaPedidoBusinessService: {}, 228 notaPedidoBusinessService: {},
229 $rootScope: { 229 $rootScope: {
230 $on: function() { } 230 $on: function() { }
231 }, 231 },
232 focaSeguimientoService: {}, 232 focaSeguimientoService: {},
233 APP: {}, 233 APP: {},
234 focaLoginService: {}, 234 focaLoginService: {},
235 $localStorage: {} 235 $localStorage: {}
236 }); 236 });
237 scope.idLista = true; 237 scope.idLista = true;
238 scope.notaPedido = { 238 scope.notaPedido = {
239 cotizacion: { 239 cotizacion: {
240 moneda: {} 240 moneda: {}
241 }, 241 },
242 242
243 }; 243 };
244 var respuesta = { result: {then: function() { } } }; 244 var respuesta = { result: {then: function() { } } };
245 245
246 //act 246 //act
247 spyOn(uibModal, 'open').and.returnValue(respuesta); 247 spyOn(uibModal, 'open').and.returnValue(respuesta);
248 scope.seleccionarProductos(); 248 scope.seleccionarProductos();
249 249
250 //assert 250 //assert
251 expect(uibModal.open).toHaveBeenCalled(); 251 expect(uibModal.open).toHaveBeenCalled();
252 }); 252 });
253 253
254 it('función seleccionarPuntosDeDescarga muestra alerta cuando cliente y domicilio son' + 254 it('función seleccionarPuntosDeDescarga muestra alerta cuando cliente y domicilio son' +
255 'undefined', function() 255 'undefined', function()
256 { 256 {
257 //arrange 257 //arrange
258 var scope = { 258 var scope = {
259 $watch: function() { }, 259 $watch: function() { },
260 $broadcast: function() { } 260 $broadcast: function() { }
261 }; 261 };
262 var focaModalService = { 262 var focaModalService = {
263 alert: function() { } 263 alert: function() { }
264 }; 264 };
265 265
266 $controler('notaPedidoCtrl', { 266 $controler('notaPedidoCtrl', {
267 $scope: scope, 267 $scope: scope,
268 $uibModal: {}, 268 $uibModal: {},
269 $location: {}, 269 $location: {},
270 $filter: filter, 270 $filter: filter,
271 $timeout: timeout, 271 $timeout: timeout,
272 crearNotaPedidoService: { 272 crearNotaPedidoService: {
273 getNumeroNotaPedido: function() { 273 getNumeroNotaPedido: function() {
274 return { 274 return {
275 then: function() { } 275 then: function() { }
276 }; 276 };
277 }, 277 },
278 getBotonera: function() { }, 278 getBotonera: function() { },
279 getCotizacionByIdMoneda: function() { 279 getCotizacionByIdMoneda: function() {
280 return { 280 return {
281 then: function() { } 281 then: function() { }
282 }; 282 };
283 } 283 }
284 }, 284 },
285 focaBotoneraLateralService: {}, 285 focaBotoneraLateralService: {},
286 focaModalService: focaModalService, 286 focaModalService: focaModalService,
287 notaPedidoBusinessService: {}, 287 notaPedidoBusinessService: {},
288 $rootScope: { 288 $rootScope: {
289 $on: function() { } 289 $on: function() { }
290 }, 290 },
291 focaSeguimientoService: {}, 291 focaSeguimientoService: {},
292 APP: {}, 292 APP: {},
293 focaLoginService: {}, 293 focaLoginService: {},
294 $localStorage: {} 294 $localStorage: {}
295 }); 295 });
296 scope.idLista = true; 296 scope.idLista = true;
297 scope.notaPedido = { 297 scope.notaPedido = {
298 cliente: { COD: false }, 298 cliente: { COD: false },
299 domicilio: { id: false} 299 domicilio: { id: false}
300 }; 300 };
301 301
302 //act 302 //act
303 spyOn(focaModalService, 'alert'); 303 spyOn(focaModalService, 'alert');
304 scope.seleccionarPuntosDeDescarga(); 304 scope.seleccionarPuntosDeDescarga();
305 305
306 //assert 306 //assert
307 expect(focaModalService.alert).toHaveBeenCalled(); 307 expect(focaModalService.alert).toHaveBeenCalled();
308 }); 308 });
309 309
310 it('función seleccionarPuntosDeDescarga abre modal', function() { 310 it('función seleccionarPuntosDeDescarga abre modal', function() {
311 //arrange 311 //arrange
312 var scope = { 312 var scope = {
313 $watch: function() { }, 313 $watch: function() { },
314 $broadcast: function() { } 314 $broadcast: function() { }
315 }; 315 };
316 var uibModal = { 316 var uibModal = {
317 open: function() { } 317 open: function() { }
318 }; 318 };
319 319
320 $controler('notaPedidoCtrl', { 320 $controler('notaPedidoCtrl', {
321 $scope: scope, 321 $scope: scope,
322 $uibModal: uibModal, 322 $uibModal: uibModal,
323 $location: {}, 323 $location: {},
324 $filter: filter, 324 $filter: filter,
325 $timeout: timeout, 325 $timeout: timeout,
326 crearNotaPedidoService: { 326 crearNotaPedidoService: {
327 getNumeroNotaPedido: function() { 327 getNumeroNotaPedido: function() {
328 return { 328 return {
329 then: function() { } 329 then: function() { }
330 }; 330 };
331 }, 331 },
332 getBotonera: function() { }, 332 getBotonera: function() { },
333 getCotizacionByIdMoneda: function() { 333 getCotizacionByIdMoneda: function() {
334 return { 334 return {
335 then: function() { } 335 then: function() { }
336 }; 336 };
337 } 337 }
338 }, 338 },
339 focaBotoneraLateralService: {}, 339 focaBotoneraLateralService: {},
340 focaModalService: {}, 340 focaModalService: {},
341 notaPedidoBusinessService: {}, 341 notaPedidoBusinessService: {},
342 $rootScope: { 342 $rootScope: {
343 $on: function() { } 343 $on: function() { }
344 }, 344 },
345 focaSeguimientoService: {}, 345 focaSeguimientoService: {},
346 APP: {}, 346 APP: {},
347 focaLoginService: {}, 347 focaLoginService: {},
348 $localStorage: {} 348 $localStorage: {}
349 }); 349 });
350 scope.idLista = true; 350 scope.idLista = true;
351 scope.notaPedido = { 351 scope.notaPedido = {
352 cliente: { COD: true }, 352 cliente: { COD: true },
353 domicilio: { id: true } 353 domicilio: { id: true }
354 }; 354 };
355 var respuesta = { result: { then: function() { } } }; 355 var respuesta = { result: { then: function() { } } };
356 356
357 //act 357 //act
358 spyOn(uibModal, 'open').and.returnValue(respuesta); 358 spyOn(uibModal, 'open').and.returnValue(respuesta);
359 scope.seleccionarPuntosDeDescarga(); 359 scope.seleccionarPuntosDeDescarga();
360 360
361 //assert 361 //assert
362 expect(uibModal.open).toHaveBeenCalled(); 362 expect(uibModal.open).toHaveBeenCalled();
363 }); 363 });
364 364
365 it('función seleccionarPuntosDeDescarga setea punto elegido', function(done) { 365 it('función seleccionarPuntosDeDescarga setea punto elegido', function(done) {
366 //arrange 366 //arrange
367 var scope = { 367 var scope = {
368 $watch: function() { }, 368 $watch: function() { },
369 $broadcast: function() { } 369 $broadcast: function() { }
370 }; 370 };
371 var uibModal = { 371 var uibModal = {
372 open: function() { } 372 open: function() { }
373 }; 373 };
374 374
375 $controler('notaPedidoCtrl', { 375 $controler('notaPedidoCtrl', {
376 $scope: scope, 376 $scope: scope,
377 $uibModal: uibModal, 377 $uibModal: uibModal,
378 $location: {}, 378 $location: {},
379 $filter: filter, 379 $filter: filter,
380 $timeout: timeout, 380 $timeout: timeout,
381 crearNotaPedidoService: { 381 crearNotaPedidoService: {
382 getNumeroNotaPedido: function() { 382 getNumeroNotaPedido: function() {
383 return { 383 return {
384 then: function() { } 384 then: function() { }
385 }; 385 };
386 }, 386 },
387 getBotonera: function() { }, 387 getBotonera: function() { },
388 getCotizacionByIdMoneda: function() { 388 getCotizacionByIdMoneda: function() {
389 return { 389 return {
390 then: function() { } 390 then: function() { }
391 }; 391 };
392 } 392 }
393 }, 393 },
394 focaBotoneraLateralService: {}, 394 focaBotoneraLateralService: {},
395 focaModalService: {}, 395 focaModalService: {},
396 notaPedidoBusinessService: {}, 396 notaPedidoBusinessService: {},
397 $rootScope: { 397 $rootScope: {
398 $on: function() { } 398 $on: function() { }
399 }, 399 },
400 focaSeguimientoService: {}, 400 focaSeguimientoService: {},
401 APP: {}, 401 APP: {},
402 focaLoginService: {}, 402 focaLoginService: {},
403 $localStorage: {} 403 $localStorage: {}
404 }); 404 });
405 scope.idLista = true; 405 scope.idLista = true;
406 scope.notaPedido = { 406 scope.notaPedido = {
407 cliente: { COD: true }, 407 cliente: { COD: true },
408 domicilio: { id: true }, 408 domicilio: { id: true },
409 puntosDescarga: [] 409 puntosDescarga: []
410 }; 410 };
411 var respuesta = []; 411 var respuesta = [];
412 var promiseRespuesta = { result: Promise.resolve(respuesta) }; 412 var promiseRespuesta = { result: Promise.resolve(respuesta) };
413 scope.$broadcast = function() { }; 413 scope.$broadcast = function() { };
414 414
415 //act 415 //act
416 spyOn(uibModal, 'open').and.returnValue(promiseRespuesta); 416 spyOn(uibModal, 'open').and.returnValue(promiseRespuesta);
417 scope.seleccionarPuntosDeDescarga(); 417 scope.seleccionarPuntosDeDescarga();
418 418
419 //assert 419 //assert
420 promiseRespuesta.result.then(function() { 420 promiseRespuesta.result.then(function() {
421 expect(scope.notaPedido.puntosDescarga).toEqual(respuesta); 421 expect(scope.notaPedido.puntosDescarga).toEqual(respuesta);
422 done(); 422 done();
423 }); 423 });
424 }); 424 });
425 425
426 it('función seleccionarVendedor abre modal', function() { 426 it('función seleccionarVendedor abre modal', function() {
427 //arrange 427 //arrange
428 var scope = { 428 var scope = {
429 $watch: function() { }, 429 $watch: function() { },
430 $broadcast: function() { } 430 $broadcast: function() { }
431 }; 431 };
432 var focaModalService = { 432 var focaModalService = {
433 modal: function() { } 433 modal: function() { }
434 }; 434 };
435 435
436 $controler('notaPedidoCtrl', { 436 $controler('notaPedidoCtrl', {
437 $scope: scope, 437 $scope: scope,
438 $uibModal: {}, 438 $uibModal: {},
439 $location: {}, 439 $location: {},
440 $filter: filter, 440 $filter: filter,
441 $timeout: timeout, 441 $timeout: timeout,
442 crearNotaPedidoService: { 442 crearNotaPedidoService: {
443 getNumeroNotaPedido: function() { 443 getNumeroNotaPedido: function() {
444 return { 444 return {
445 then: function() { } 445 then: function() { }
446 }; 446 };
447 }, 447 },
448 getBotonera: function() { }, 448 getBotonera: function() { },
449 getCotizacionByIdMoneda: function() { 449 getCotizacionByIdMoneda: function() {
450 return { 450 return {
451 then: function() { } 451 then: function() { }
452 }; 452 };
453 } 453 }
454 }, 454 },
455 focaBotoneraLateralService: {}, 455 focaBotoneraLateralService: {},
456 focaModalService: focaModalService, 456 focaModalService: focaModalService,
457 notaPedidoBusinessService: {}, 457 notaPedidoBusinessService: {},
458 $rootScope: { 458 $rootScope: {
459 $on: function() { } 459 $on: function() { }
460 }, 460 },
461 focaSeguimientoService: {}, 461 focaSeguimientoService: {},
462 APP: {}, 462 APP: {},
463 focaLoginService: {}, 463 focaLoginService: {},
464 $localStorage: {} 464 $localStorage: {}
465 }); 465 });
466 scope.idLista = true; 466 scope.idLista = true;
467 scope.notaPedido = { 467 scope.notaPedido = {
468 cliente: { COD: true }, 468 cliente: { COD: true },
469 domicilio: { id: true } 469 domicilio: { id: true }
470 }; 470 };
471 471
472 var respuesta = { then: function() { } }; 472 var respuesta = { then: function() { } };
473 473
474 //act 474 //act
475 spyOn(focaModalService, 'modal').and.returnValue(respuesta); 475 spyOn(focaModalService, 'modal').and.returnValue(respuesta);
476 scope.seleccionarVendedor(); 476 scope.seleccionarVendedor();
477 477
478 //assert 478 //assert
479 expect(focaModalService.modal).toHaveBeenCalled(); 479 expect(focaModalService.modal).toHaveBeenCalled();
480 }); 480 });
481 481
482 it('función seleccionarVendedor setea vendedor y cabecera', function(done) { 482 it('función seleccionarVendedor setea vendedor y cabecera', function(done) {
483 //arrange 483 //arrange
484 var scope = { 484 var scope = {
485 $watch: function() { }, 485 $watch: function() { },
486 $broadcast: function() { } 486 $broadcast: function() { }
487 }; 487 };
488 var focaModalService = { 488 var focaModalService = {
489 modal: function() { } 489 modal: function() { }
490 }; 490 };
491 491
492 $controler('notaPedidoCtrl', { 492 $controler('notaPedidoCtrl', {
493 $scope: scope, 493 $scope: scope,
494 $uibModal: {}, 494 $uibModal: {},
495 $location: {}, 495 $location: {},
496 $filter: filter, 496 $filter: filter,
497 $timeout: timeout, 497 $timeout: timeout,
498 crearNotaPedidoService: { 498 crearNotaPedidoService: {
499 getNumeroNotaPedido: function() { 499 getNumeroNotaPedido: function() {
500 return { 500 return {
501 then: function() { } 501 then: function() { }
502 }; 502 };
503 }, 503 },
504 getBotonera: function() { }, 504 getBotonera: function() { },
505 getCotizacionByIdMoneda: function() { 505 getCotizacionByIdMoneda: function() {
506 return { 506 return {
507 then: function() { } 507 then: function() { }
508 }; 508 };
509 } 509 }
510 }, 510 },
511 focaBotoneraLateralService: {}, 511 focaBotoneraLateralService: {},
512 focaModalService: focaModalService, 512 focaModalService: focaModalService,
513 notaPedidoBusinessService: {}, 513 notaPedidoBusinessService: {},
514 $rootScope: { 514 $rootScope: {
515 $on: function() { } 515 $on: function() { }
516 }, 516 },
517 focaSeguimientoService: {}, 517 focaSeguimientoService: {},
518 APP: {}, 518 APP: {},
519 focaLoginService: {}, 519 focaLoginService: {},
520 $localStorage: {} 520 $localStorage: {}
521 }); 521 });
522 scope.idLista = true; 522 scope.idLista = true;
523 scope.notaPedido = { 523 scope.notaPedido = {
524 cliente: { COD: true }, 524 cliente: { COD: true },
525 domicilio: { id: true } 525 domicilio: { id: true }
526 }; 526 };
527 var respuesta = {}; 527 var respuesta = {};
528 var promesaRespuesta = Promise.resolve(respuesta); 528 var promesaRespuesta = Promise.resolve(respuesta);
529 scope.$broadcast = function() { }; 529 scope.$broadcast = function() { };
530 530
531 //act 531 //act
532 spyOn(focaModalService, 'modal').and.returnValue(promesaRespuesta); 532 spyOn(focaModalService, 'modal').and.returnValue(promesaRespuesta);
533 spyOn(scope, '$broadcast'); 533 spyOn(scope, '$broadcast');
534 scope.seleccionarVendedor(); 534 scope.seleccionarVendedor();
535 535
536 //assert 536 //assert
537 promesaRespuesta.then(function() { 537 promesaRespuesta.then(function() {
538 expect(scope.notaPedido.vendedor).toEqual(respuesta); 538 expect(scope.notaPedido.vendedor).toEqual(respuesta);
539 expect(scope.$broadcast).toHaveBeenCalled(); 539 expect(scope.$broadcast).toHaveBeenCalled();
540 done(); 540 done();
541 }); 541 });
542 }); 542 });
543 543
544 it('función seleccionarProveedor abre modal', function() { 544 it('función seleccionarProveedor abre modal', function() {
545 //arrange 545 //arrange
546 var scope = { 546 var scope = {
547 $watch: function() { }, 547 $watch: function() { },
548 $broadcast: function() { } 548 $broadcast: function() { }
549 }; 549 };
550 var focaModalService = { 550 var focaModalService = {
551 modal: function() { } 551 modal: function() { }
552 }; 552 };
553 553
554 $controler('notaPedidoCtrl', { 554 $controler('notaPedidoCtrl', {
555 $scope: scope, 555 $scope: scope,
556 $uibModal: {}, 556 $uibModal: {},
557 $location: {}, 557 $location: {},
558 $filter: filter, 558 $filter: filter,
559 $timeout: timeout, 559 $timeout: timeout,
560 crearNotaPedidoService: { 560 crearNotaPedidoService: {
561 getNumeroNotaPedido: function() { 561 getNumeroNotaPedido: function() {
562 return { 562 return {
563 then: function() { } 563 then: function() { }
564 }; 564 };
565 }, 565 },
566 getBotonera: function() { }, 566 getBotonera: function() { },
567 getCotizacionByIdMoneda: function() { 567 getCotizacionByIdMoneda: function() {
568 return { 568 return {
569 then: function() { } 569 then: function() { }
570 }; 570 };
571 } 571 }
572 }, 572 },
573 focaBotoneraLateralService: {}, 573 focaBotoneraLateralService: {},
574 focaModalService: focaModalService, 574 focaModalService: focaModalService,
575 notaPedidoBusinessService: {}, 575 notaPedidoBusinessService: {},
576 $rootScope: { 576 $rootScope: {
577 $on: function() { } 577 $on: function() { }
578 }, 578 },
579 focaSeguimientoService: {}, 579 focaSeguimientoService: {},
580 APP: {}, 580 APP: {},
581 focaLoginService: {}, 581 focaLoginService: {},
582 $localStorage: {} 582 $localStorage: {}
583 }); 583 });
584 scope.notaPedido = {}; 584 scope.notaPedido = {};
585 585
586 var respuesta = { then: function() { } }; 586 var respuesta = { then: function() { } };
587 587
588 //act 588 //act
589 spyOn(focaModalService, 'modal').and.returnValue(respuesta); 589 spyOn(focaModalService, 'modal').and.returnValue(respuesta);
590 scope.seleccionarProveedor(); 590 scope.seleccionarProveedor();
591 591
592 //assert 592 //assert
593 expect(focaModalService.modal).toHaveBeenCalled(); 593 expect(focaModalService.modal).toHaveBeenCalled();
594 }); 594 });
595 595
596 it('función seleccionarProveedor setea vendedor y cabecera', function(done) { 596 it('función seleccionarProveedor setea vendedor y cabecera', function(done) {
597 //arrange 597 //arrange
598 var scope = { 598 var scope = {
599 $watch: function() { }, 599 $watch: function() { },
600 $broadcast: function() { } 600 $broadcast: function() { }
601 }; 601 };
602 var focaModalService = { 602 var focaModalService = {
603 modal: function() { } 603 modal: function() { }
604 }; 604 };
605 605
606 $controler('notaPedidoCtrl', { 606 $controler('notaPedidoCtrl', {
607 $scope: scope, 607 $scope: scope,
608 $uibModal: {}, 608 $uibModal: {},
609 $location: {}, 609 $location: {},
610 $filter: filter, 610 $filter: filter,
611 $timeout: timeout, 611 $timeout: timeout,
612 crearNotaPedidoService: { 612 crearNotaPedidoService: {
613 getNumeroNotaPedido: function() { 613 getNumeroNotaPedido: function() {
614 return { 614 return {
615 then: function() { } 615 then: function() { }
616 }; 616 };
617 }, 617 },
618 getBotonera: function() { }, 618 getBotonera: function() { },
619 getCotizacionByIdMoneda: function() { 619 getCotizacionByIdMoneda: function() {
620 return { 620 return {
621 then: function() { } 621 then: function() { }
622 }; 622 };
623 } 623 }
624 }, 624 },
625 focaBotoneraLateralService: {}, 625 focaBotoneraLateralService: {},
626 focaModalService: focaModalService, 626 focaModalService: focaModalService,
627 notaPedidoBusinessService: {}, 627 notaPedidoBusinessService: {},
628 $rootScope: { 628 $rootScope: {
629 $on: function() { } 629 $on: function() { }
630 }, 630 },
631 focaSeguimientoService: {}, 631 focaSeguimientoService: {},
632 APP: {}, 632 APP: {},
633 focaLoginService: {}, 633 focaLoginService: {},
634 $localStorage: {} 634 $localStorage: {}
635 }); 635 });
636 636
637 scope.notaPedido = {}; 637 scope.notaPedido = {};
638 var respuesta = {}; 638 var respuesta = {};
639 var promesaRespuesta = Promise.resolve(respuesta); 639 var promesaRespuesta = Promise.resolve(respuesta);
640 scope.$broadcast = function() { }; 640 scope.$broadcast = function() { };
641 641
642 //act 642 //act
643 spyOn(focaModalService, 'modal').and.returnValue(promesaRespuesta); 643 spyOn(focaModalService, 'modal').and.returnValue(promesaRespuesta);
644 spyOn(scope, '$broadcast'); 644 spyOn(scope, '$broadcast');
645 scope.seleccionarProveedor(); 645 scope.seleccionarProveedor();
646 646
647 //assert 647 //assert
648 promesaRespuesta.then(function() { 648 promesaRespuesta.then(function() {
649 expect(scope.notaPedido.proveedor).toEqual(respuesta); 649 expect(scope.notaPedido.proveedor).toEqual(respuesta);
650 expect(scope.$broadcast).toHaveBeenCalled(); 650 expect(scope.$broadcast).toHaveBeenCalled();
651 done(); 651 done();
652 }); 652 });
653 }); 653 });
654 654
655 it('función seleccionarCliente abre modal', function() { 655 it('función seleccionarCliente abre modal', function() {
656 //arrange 656 //arrange
657 var scope = { 657 var scope = {
658 $watch: function() { }, 658 $watch: function() { },
659 $broadcast: function() { } 659 $broadcast: function() { }
660 }; 660 };
661 var uibModal = { 661 var uibModal = {
662 open: function() { } 662 open: function() { }
663 }; 663 };
664 664
665 $controler('notaPedidoCtrl', { 665 $controler('notaPedidoCtrl', {
666 $scope: scope, 666 $scope: scope,
667 $uibModal: uibModal, 667 $uibModal: uibModal,
668 $location: {}, 668 $location: {},
669 $filter: filter, 669 $filter: filter,
670 $timeout: timeout, 670 $timeout: timeout,
671 crearNotaPedidoService: { 671 crearNotaPedidoService: {
672 getNumeroNotaPedido: function() { 672 getNumeroNotaPedido: function() {
673 return { 673 return {
674 then: function() { } 674 then: function() { }
675 }; 675 };
676 }, 676 },
677 getBotonera: function() { }, 677 getBotonera: function() { },
678 getCotizacionByIdMoneda: function() { 678 getCotizacionByIdMoneda: function() {
679 return { 679 return {
680 then: function() { } 680 then: function() { }
681 }; 681 };
682 }, 682 },
683 getVendedorById: function() { 683 getVendedorById: function() {
684 return { 684 return {
685 then: function() { } 685 then: function() { }
686 }; 686 };
687 } 687 }
688 }, 688 },
689 focaBotoneraLateralService: {}, 689 focaBotoneraLateralService: {},
690 focaModalService: { 690 focaModalService: {
691 modal: function() { 691 modal: function() {
692 return { 692 return {
693 then: function() {} 693 then: function() {}
694 }; 694 };
695 } 695 }
696 }, 696 },
697 notaPedidoBusinessService: {}, 697 notaPedidoBusinessService: {},
698 $rootScope: { 698 $rootScope: {
699 $on: function() { } 699 $on: function() { }
700 }, 700 },
701 focaSeguimientoService: {}, 701 focaSeguimientoService: {},
702 APP: 'distribuidor', 702 APP: 'distribuidor',
703 focaLoginService: { 703 focaLoginService: {
704 getLoginData: function() { 704 getLoginData: function() {
705 return { 705 return {
706 vendedorCorbrador: true 706 vendedorCorbrador: true
707 }; 707 };
708 } 708 }
709 }, 709 },
710 $localStorage: {} 710 $localStorage: {}
711 }); 711 });
712 scope.notaPedido = { 712 scope.notaPedido = {
713 vendedor: { NUM: true } 713 vendedor: { NUM: true }
714 }; 714 };
715 715
716 var respuesta = { result: {then: function() { } } }; 716 var respuesta = { result: {then: function() { } } };
717 717
718 //act 718 //act
719 spyOn(uibModal, 'open').and.returnValue(respuesta); 719 spyOn(uibModal, 'open').and.returnValue(respuesta);
720 scope.seleccionarCliente(); 720 scope.seleccionarCliente();
721 721
722 //assert 722 //assert
723 expect(uibModal.open).toHaveBeenCalled(); 723 expect(uibModal.open).toHaveBeenCalled();
724 }); 724 });
725 725
726 it('función seleccionarCliente setea vendedor y llama a domicilios', function(done) { 726 it('función seleccionarCliente setea vendedor y llama a domicilios', function(done) {
727 727
728 //arrange 728 //arrange
729 var scope = { 729 var scope = {
730 $watch: function() { }, 730 $watch: function() { },
731 $broadcast: function() { }, 731 $broadcast: function() { },
732 seleccionarVendedor: function() { }, 732 seleccionarVendedor: function() { },
733 notaPedido: {} 733 notaPedido: {}
734 }; 734 };
735 var uibModal = { 735 var uibModal = {
736 open: function() { } 736 open: function() { }
737 }; 737 };
738 738
739 $controler('notaPedidoCtrl', { 739 $controler('notaPedidoCtrl', {
740 $scope: scope, 740 $scope: scope,
741 $uibModal: uibModal, 741 $uibModal: uibModal,
742 $location: {}, 742 $location: {},
743 $filter: filter, 743 $filter: filter,
744 $timeout: timeout, 744 $timeout: timeout,
745 crearNotaPedidoService: { 745 crearNotaPedidoService: {
746 getNumeroNotaPedido: function() { 746 getNumeroNotaPedido: function() {
747 return { 747 return {
748 then: function() { } 748 then: function() { }
749 }; 749 };
750 }, 750 },
751 getBotonera: function() { }, 751 getBotonera: function() { },
752 getCotizacionByIdMoneda: function() { 752 getCotizacionByIdMoneda: function() {
753 return { 753 return {
754 then: function() { } 754 then: function() { }
755 }; 755 };
756 }, 756 },
757 getVendedorById : function() { 757 getVendedorById : function() {
758 return { 758 return {
759 then: function() { } 759 then: function() { }
760 }; 760 };
761 } 761 }
762 }, 762 },
763 focaBotoneraLateralService: {}, 763 focaBotoneraLateralService: {},
764 focaModalService: { 764 focaModalService: {
765 modal: function() { 765 modal: function() {
766 return { 766 return {
767 then: function() { } 767 then: function() { }
768 }; 768 };
769 } 769 }
770 }, 770 },
771 notaPedidoBusinessService: {}, 771 notaPedidoBusinessService: {},
772 $rootScope: { 772 $rootScope: {
773 $on: function() { } 773 $on: function() { }
774 }, 774 },
775 focaSeguimientoService: {}, 775 focaSeguimientoService: {},
776 APP: 'distribuidor', 776 APP: 'distribuidor',
777 focaLoginService: { 777 focaLoginService: {
778 getLoginData: function() { 778 getLoginData: function() {
779 return { 779 return {
780 vendedorCorbrador: true 780 vendedorCorbrador: true
781 }; 781 };
782 } 782 }
783 }, 783 },
784 $localStorage: {} 784 $localStorage: {}
785 }); 785 });
786 scope.idLista = true; 786 scope.idLista = true;
787 scope.notaPedido = { 787 scope.notaPedido = {
788 vendedor: { NUM: true } 788 vendedor: { NUM: true }
789 }; 789 };
790 var respuesta = {}; 790 var respuesta = {};
791 var promesaRespuesta = { result: Promise.resolve(respuesta) }; 791 var promesaRespuesta = { result: Promise.resolve(respuesta) };
792 792
793 //act 793 //act
794 spyOn(uibModal, 'open').and.returnValue(promesaRespuesta); 794 spyOn(uibModal, 'open').and.returnValue(promesaRespuesta);
795 spyOn(scope, 'abrirModalDomicilios'); 795 spyOn(scope, 'abrirModalDomicilios');
796 scope.seleccionarCliente(); 796 scope.seleccionarCliente();
797 797
798 //assert 798 //assert
799 promesaRespuesta.result.then(function() { 799 promesaRespuesta.result.then(function() {
800 expect(scope.cliente).toEqual(respuesta); 800 expect(scope.cliente).toEqual(respuesta);
801 expect(scope.abrirModalDomicilios).toHaveBeenCalled(); 801 expect(scope.abrirModalDomicilios).toHaveBeenCalled();
802 done(); 802 done();
803 }); 803 });
804 }); 804 });
805 805
806 it('función abrirModalDomicilios abre modal', function() { 806 it('función abrirModalDomicilios abre modal', function() {
807 //arrange 807 //arrange
808 var scope = { 808 var scope = {
809 $watch: function() { }, 809 $watch: function() { },
810 $broadcast: function() { } 810 $broadcast: function() { }
811 }; 811 };
812 var uibModal = { 812 var uibModal = {
813 open: function() { } 813 open: function() { }
814 }; 814 };
815 815
816 $controler('notaPedidoCtrl', { 816 $controler('notaPedidoCtrl', {
817 $scope: scope, 817 $scope: scope,
818 $uibModal: uibModal, 818 $uibModal: uibModal,
819 $location: {}, 819 $location: {},
820 $filter: filter, 820 $filter: filter,
821 $timeout: timeout, 821 $timeout: timeout,
822 crearNotaPedidoService: { 822 crearNotaPedidoService: {
823 getNumeroNotaPedido: function() { 823 getNumeroNotaPedido: function() {
824 return { 824 return {
825 then: function() { } 825 then: function() { }
826 }; 826 };
827 }, 827 },
828 getBotonera: function() { }, 828 getBotonera: function() { },
829 getCotizacionByIdMoneda: function() { 829 getCotizacionByIdMoneda: function() {
830 return { 830 return {
831 then: function() { } 831 then: function() { }
832 }; 832 };
833 } 833 }
834 }, 834 },
835 focaBotoneraLateralService: {}, 835 focaBotoneraLateralService: {},
836 focaModalService: {}, 836 focaModalService: {},
837 notaPedidoBusinessService: {}, 837 notaPedidoBusinessService: {},
838 $rootScope: { 838 $rootScope: {
839 $on: function() { } 839 $on: function() { }
840 }, 840 },
841 focaSeguimientoService: {}, 841 focaSeguimientoService: {},
842 APP: {}, 842 APP: {},
843 focaLoginService: {}, 843 focaLoginService: {},
844 $localStorage: {} 844 $localStorage: {}
845 }); 845 });
846 846
847 var respuesta = { result: {then: function() { } } }; 847 var respuesta = { result: {then: function() { } } };
848 848
849 //act 849 //act
850 spyOn(uibModal, 'open').and.returnValue(respuesta); 850 spyOn(uibModal, 'open').and.returnValue(respuesta);
851 scope.abrirModalDomicilios(); 851 scope.abrirModalDomicilios();
852 852
853 //assert 853 //assert
854 expect(uibModal.open).toHaveBeenCalled(); 854 expect(uibModal.open).toHaveBeenCalled();
855 }); 855 });
856 856
857 it('función abrirModalDomicilios setea domicilio, cliente y cabeceras', function(done) { 857 it('función abrirModalDomicilios setea domicilio, cliente y cabeceras', function(done) {
858 858
859 //arrange 859 //arrange
860 var scope = { 860 var scope = {
861 $watch: function() { }, 861 $watch: function() { },
862 $broadcast: function() { } 862 $broadcast: function() { }
863 }; 863 };
864 var uibModal = { 864 var uibModal = {
865 open: function() { } 865 open: function() { }
866 }; 866 };
867 867
868 $controler('notaPedidoCtrl', { 868 $controler('notaPedidoCtrl', {
869 $scope: scope, 869 $scope: scope,
870 $uibModal: uibModal, 870 $uibModal: uibModal,
871 $location: {}, 871 $location: {},
872 $filter: filter, 872 $filter: filter,
873 $timeout: timeout, 873 $timeout: timeout,
874 crearNotaPedidoService: { 874 crearNotaPedidoService: {
875 getNumeroNotaPedido: function() { 875 getNumeroNotaPedido: function() {
876 return { 876 return {
877 then: function() { } 877 then: function() { }
878 }; 878 };
879 }, 879 },
880 getBotonera: function() { }, 880 getBotonera: function() { },
881 getCotizacionByIdMoneda: function() { 881 getCotizacionByIdMoneda: function() {
882 return { 882 return {
883 then: function() { } 883 then: function() { }
884 }; 884 };
885 }, 885 },
886 getPuntosDescargaByClienDom: function() { 886 getPuntosDescargaByClienDom: function() {
887 return { 887 return {
888 then: function() { } 888 then: function() { }
889 }; 889 };
890 } 890 }
891 }, 891 },
892 focaBotoneraLateralService: {}, 892 focaBotoneraLateralService: {},
893 focaModalService: {}, 893 focaModalService: {},
894 notaPedidoBusinessService: {}, 894 notaPedidoBusinessService: {},
895 $rootScope: { 895 $rootScope: {
896 $on: function() { } 896 $on: function() { }
897 }, 897 },
898 focaSeguimientoService: {}, 898 focaSeguimientoService: {},
899 APP: {}, 899 APP: {},
900 focaLoginService: {}, 900 focaLoginService: {},
901 $localStorage: {} 901 $localStorage: {}
902 }); 902 });
903 scope.idLista = true; 903 scope.idLista = true;
904 scope.notaPedido = { 904 scope.notaPedido = {
905 vendedor: { NUM: true } 905 vendedor: { NUM: true }
906 }; 906 };
907 var respuesta = {}; 907 var respuesta = {};
908 var promesaRespuesta = { result: Promise.resolve(respuesta) }; 908 var promesaRespuesta = { result: Promise.resolve(respuesta) };
909 scope.$broadcast = function() { }; 909 scope.$broadcast = function() { };
910 var cliente = { 910 var cliente = {
911 COD: undefined, 911 COD: undefined,
912 CUIT: undefined, 912 CUIT: undefined,
913 NOM: undefined 913 NOM: undefined,
914 MOD: undefined
914 }; 915 };
915 916
916 //act 917 //act
917 spyOn(uibModal, 'open').and.returnValue(promesaRespuesta); 918 spyOn(uibModal, 'open').and.returnValue(promesaRespuesta);
918 spyOn(scope, '$broadcast'); 919 spyOn(scope, '$broadcast');
919 scope.abrirModalDomicilios({ }); 920 scope.abrirModalDomicilios(cliente);
920 921
921 //assert 922 //assert
922 promesaRespuesta.result.then(function() { 923 promesaRespuesta.result.then(function() {
924 //scope.notaPedido.domicilio sea vacio
923 expect(scope.notaPedido.domicilio).toEqual(respuesta); 925 expect(scope.notaPedido.domicilio).toEqual(respuesta);
924 expect(scope.notaPedido.cliente).toEqual(cliente); 926 expect(scope.notaPedido.cliente).toEqual(cliente);
925 expect(scope.$broadcast).toHaveBeenCalled(); 927 expect(scope.$broadcast).toHaveBeenCalled();
926 done(); 928 done();
927 }); 929 });
928 }); 930 });
929 931
930 it('función getTotal devulve correctamente', function() { 932 it('función getTotal devulve correctamente', function() {
931 933
932 //arrange 934 //arrange
933 var scope = { 935 var scope = {
934 $watch: function() { }, 936 $watch: function() { },
935 $broadcast: function() { } 937 $broadcast: function() { }
936 }; 938 };
937 939
938 $controler('notaPedidoCtrl', { 940 $controler('notaPedidoCtrl', {
939 $scope: scope, 941 $scope: scope,
940 $uibModal: {}, 942 $uibModal: {},
941 $location: {}, 943 $location: {},
942 $filter: filter, 944 $filter: filter,
943 $timeout: timeout, 945 $timeout: timeout,
944 crearNotaPedidoService: { 946 crearNotaPedidoService: {
945 getNumeroNotaPedido: function() { 947 getNumeroNotaPedido: function() {
946 return { 948 return {
947 then: function() { } 949 then: function() { }
948 }; 950 };
949 }, 951 },
950 getBotonera: function() { }, 952 getBotonera: function() { },
951 getCotizacionByIdMoneda: function() { 953 getCotizacionByIdMoneda: function() {
952 return { 954 return {
953 then: function() { } 955 then: function() { }
954 }; 956 };
955 } 957 }
956 }, 958 },
957 focaBotoneraLateralService: {}, 959 focaBotoneraLateralService: {},
958 focaModalService: {}, 960 focaModalService: {},
959 notaPedidoBusinessService: {}, 961 notaPedidoBusinessService: {},
960 $rootScope: { 962 $rootScope: {
961 $on: function() { } 963 $on: function() { }
962 }, 964 },
963 focaSeguimientoService: {}, 965 focaSeguimientoService: {},
964 APP: {}, 966 APP: {},
965 focaLoginService: {}, 967 focaLoginService: {},
966 $localStorage: {} 968 $localStorage: {}
967 }); 969 });
968 scope.idLista = true; 970 scope.idLista = true;
969 scope.notaPedido = { 971 scope.notaPedido = {
970 vendedor: { NUM: true } 972 vendedor: { NUM: true }
971 }; 973 };
972 974
973 //act 975 //act
974 scope.notaPedido.articulosNotaPedido = [{ precio: 2, cantidad: 1}]; 976 scope.notaPedido.articulosNotaPedido = [{ precio: 2, cantidad: 1}];
975 var esperado = 2; 977 var esperado = 2;
976 var resultado = scope.getTotal(); 978 var resultado = scope.getTotal();
977 979
978 //assert 980 //assert
979 expect(resultado).toEqual(esperado); 981 expect(resultado).toEqual(esperado);
980 }); 982 });
981 983
982 it('función getSubTotal devulve correctamente', function() { 984 it('función getSubTotal devulve correctamente', function() {
983 985
984 //arrange 986 //arrange
985 var scope = { 987 var scope = {
986 $watch: function() { }, 988 $watch: function() { },
987 $broadcast: function() { } 989 $broadcast: function() { }
988 }; 990 };
989 991
990 $controler('notaPedidoCtrl', { 992 $controler('notaPedidoCtrl', {
991 $scope: scope, 993 $scope: scope,
992 $uibModal: {}, 994 $uibModal: {},
993 $location: {}, 995 $location: {},
994 $filter: filter, 996 $filter: filter,
995 $timeout: timeout, 997 $timeout: timeout,
996 crearNotaPedidoService: { 998 crearNotaPedidoService: {
997 getNumeroNotaPedido: function() { 999 getNumeroNotaPedido: function() {
998 return { 1000 return {
999 then: function() { } 1001 then: function() { }
1000 }; 1002 };
1001 }, 1003 },
1002 getBotonera: function() { }, 1004 getBotonera: function() { },
1003 getCotizacionByIdMoneda: function() { 1005 getCotizacionByIdMoneda: function() {
1004 return { 1006 return {
1005 then: function() { } 1007 then: function() { }
1006 }; 1008 };
1007 } 1009 }
1008 }, 1010 },
1009 focaBotoneraLateralService: {}, 1011 focaBotoneraLateralService: {},
1010 focaModalService: {}, 1012 focaModalService: {},
1011 notaPedidoBusinessService: {}, 1013 notaPedidoBusinessService: {},
1012 $rootScope: { 1014 $rootScope: {
1013 $on: function() { } 1015 $on: function() { }
1014 }, 1016 },
1015 focaSeguimientoService: {}, 1017 focaSeguimientoService: {},
1016 APP: {}, 1018 APP: {},
1017 focaLoginService: {}, 1019 focaLoginService: {},
1018 $localStorage: {} 1020 $localStorage: {}
1019 }); 1021 });
1020 scope.idLista = true; 1022 scope.idLista = true;
1021 scope.notaPedido = { 1023 scope.notaPedido = {
1022 vendedor: { NUM: true } 1024 vendedor: { NUM: true }
1023 }; 1025 };
1024 1026
1025 //act 1027 //act
1026 scope.articuloACargar = { precio: 2, cantidad: 1}; 1028 scope.articuloACargar = { precio: 2, cantidad: 1};
1027 var esperado = 2; 1029 var esperado = 2;
1028 var resultado = scope.getSubTotal(); 1030 var resultado = scope.getSubTotal();
1029 1031
1030 //assert 1032 //assert
1031 expect(resultado).toEqual(esperado); 1033 expect(resultado).toEqual(esperado);
1032 }); 1034 });
1033 1035
1034 it('función seleccionarPreciosYCondiciones abre modal', function() { 1036 it('función seleccionarPreciosYCondiciones abre modal', function() {
1035 1037
1036 //arrange 1038 //arrange
1037 var scope = { 1039 var scope = {
1038 $watch: function() { }, 1040 $watch: function() { },
1039 $broadcast: function() { } 1041 $broadcast: function() { }
1040 }; 1042 };
1041 var uibModal = { 1043 var uibModal = {
1042 open: function() { } 1044 open: function() { }
1043 }; 1045 };
1044 1046
1045 $controler('notaPedidoCtrl', { 1047 $controler('notaPedidoCtrl', {
1046 $scope: scope, 1048 $scope: scope,
1047 $uibModal: uibModal, 1049 $uibModal: uibModal,
1048 $location: {}, 1050 $location: {},
1049 $filter: filter, 1051 $filter: filter,
1050 $timeout: timeout, 1052 $timeout: timeout,
1051 crearNotaPedidoService: { 1053 crearNotaPedidoService: {
1052 getNumeroNotaPedido: function() { 1054 getNumeroNotaPedido: function() {
1053 return { 1055 return {
1054 then: function() { } 1056 then: function() { }
1055 }; 1057 };
1056 }, 1058 },
1057 getBotonera: function() { }, 1059 getBotonera: function() { },
1058 getCotizacionByIdMoneda: function() { 1060 getCotizacionByIdMoneda: function() {
1059 return { 1061 return {
1060 then: function() { } 1062 then: function() { }
1061 }; 1063 };
1062 } 1064 }
1063 }, 1065 },
1064 focaBotoneraLateralService: {}, 1066 focaBotoneraLateralService: {},
1065 focaModalService: {}, 1067 focaModalService: {},
1066 notaPedidoBusinessService: {}, 1068 notaPedidoBusinessService: {},
1067 $rootScope: { 1069 $rootScope: {
1068 $on: function() { } 1070 $on: function() { }
1069 }, 1071 },
1070 focaSeguimientoService: {}, 1072 focaSeguimientoService: {},
1071 APP: {}, 1073 APP: {},
1072 focaLoginService: {}, 1074 focaLoginService: {},
1073 $localStorage: {} 1075 $localStorage: {}
1074 }); 1076 });
1075 1077
1076 scope.notaPedido = {}; 1078 scope.notaPedido = {
1079 cliente: { COD: true }
1080 };
1077 1081
1078 var respuesta = { result: {then: function() { } } }; 1082 var respuesta = { result: {then: function() { } } };
1079 1083
1080 //act 1084 //act
1081 spyOn(uibModal, 'open').and.returnValue(respuesta); 1085 spyOn(uibModal, 'open').and.returnValue(respuesta);
1082 scope.seleccionarPreciosYCondiciones(); 1086 scope.seleccionarPreciosYCondiciones();
1083 1087
1084 //assert 1088 //assert
1085 expect(uibModal.open).toHaveBeenCalled(); 1089 expect(uibModal.open).toHaveBeenCalled();
1086 }); 1090 });
1087 1091
1088 it('función seleccionarPreciosYCondiciones setea articulos y cabecera', function(done) { 1092 it('función seleccionarPreciosYCondiciones setea articulos y cabecera', function(done) {
1089 1093
1090 //arrange 1094 //arrange
1091 var scope = { 1095 var scope = {
1092 $watch: function() { }, 1096 $watch: function() { },
1093 $broadcast: function() { } 1097 $broadcast: function() { }
1094 }; 1098 };
1095 var uibModal = { 1099 var uibModal = {
1096 open: function() { } 1100 open: function() { }
1097 }; 1101 };
1098 1102
1099 $controler('notaPedidoCtrl', { 1103 $controler('notaPedidoCtrl', {
1100 $scope: scope, 1104 $scope: scope,
1101 $uibModal: uibModal, 1105 $uibModal: uibModal,
1102 $location: {}, 1106 $location: {},
1103 $filter: filter, 1107 $filter: filter,
1104 $timeout: timeout, 1108 $timeout: timeout,
1105 crearNotaPedidoService: { 1109 crearNotaPedidoService: {
1106 getNumeroNotaPedido: function() { 1110 getNumeroNotaPedido: function() {
1107 return { 1111 return {
1108 then: function() { } 1112 then: function() { }
1109 }; 1113 };
1110 }, 1114 },
1111 getBotonera: function() { }, 1115 getBotonera: function() { },
1112 getCotizacionByIdMoneda: function() { 1116 getCotizacionByIdMoneda: function() {
1113 return { 1117 return {
1114 then: function() { } 1118 then: function() { }
1115 }; 1119 };
1116 } 1120 }
1117 }, 1121 },
1118 focaBotoneraLateralService: {}, 1122 focaBotoneraLateralService: {},
1119 focaModalService: {}, 1123 focaModalService: {},
1120 notaPedidoBusinessService: {}, 1124 notaPedidoBusinessService: {},
1121 $rootScope: { 1125 $rootScope: {
1122 $on: function() { } 1126 $on: function() { }
1123 }, 1127 },
1124 focaSeguimientoService: {}, 1128 focaSeguimientoService: {},
1125 APP: {}, 1129 APP: {},
1126 focaLoginService: {}, 1130 focaLoginService: {},
1127 $localStorage: {} 1131 $localStorage: {}
1128 }); 1132 });
1129 scope.idLista = true; 1133 scope.idLista = true;
1130 scope.notaPedido = { 1134 scope.notaPedido = {
1131 vendedor: { NUM: true } 1135 vendedor: { NUM: true },
1136 cliente: { COD: true }
1132 }; 1137 };
1133 var respuesta = { plazoPago: { } }; 1138 var respuesta = { plazoPago: { } };
1134 var promesaRespuesta = { result: Promise.resolve(respuesta) }; 1139 var promesaRespuesta = { result: Promise.resolve(respuesta) };
1135 scope.$broadcast = function() { }; 1140 scope.$broadcast = function() { };
1136 1141
1137 //act 1142 //act
1138 spyOn(uibModal, 'open').and.returnValue(promesaRespuesta); 1143 spyOn(uibModal, 'open').and.returnValue(promesaRespuesta);
1139 spyOn(scope, '$broadcast'); 1144 spyOn(scope, '$broadcast');
1140 scope.seleccionarPreciosYCondiciones(); 1145 scope.seleccionarPreciosYCondiciones();
1141 1146
1142 //assert 1147 //assert
1143 promesaRespuesta.result.then(function() { 1148 promesaRespuesta.result.then(function() {
1144 expect(scope.notaPedido.articulosNotaPedido.length).toEqual(0); 1149 expect(scope.notaPedido.articulosNotaPedido.length).toEqual(0);
1145 expect(scope.$broadcast).toHaveBeenCalled(); 1150 expect(scope.$broadcast).toHaveBeenCalled();
1146 done(); 1151 done();
1147 }); 1152 });
1148 }); 1153 });
1149 1154
1150 it('función seleccionarMoneda abre modal', function() { 1155 it('función seleccionarMoneda abre modal', function() {
1151 //arrange 1156 //arrange
1152 var scope = { 1157 var scope = {
1153 $watch: function() { }, 1158 $watch: function() { },
1154 $broadcast: function() { } 1159 $broadcast: function() { }
1155 }; 1160 };
1156 var focaModalService = { 1161 var focaModalService = {
1157 modal: function() { } 1162 modal: function() { }
1158 }; 1163 };
1159 1164
1160 $controler('notaPedidoCtrl', { 1165 $controler('notaPedidoCtrl', {
1161 $scope: scope, 1166 $scope: scope,
1162 $uibModal: {}, 1167 $uibModal: {},
1163 $location: {}, 1168 $location: {},
1164 $filter: filter, 1169 $filter: filter,
1165 $timeout: timeout, 1170 $timeout: timeout,
1166 crearNotaPedidoService: { 1171 crearNotaPedidoService: {
1167 getNumeroNotaPedido: function() { 1172 getNumeroNotaPedido: function() {
1168 return { 1173 return {
1169 then: function() { } 1174 then: function() { }
1170 }; 1175 };
1171 }, 1176 },
1172 getBotonera: function() { }, 1177 getBotonera: function() { },
1173 getCotizacionByIdMoneda: function() { 1178 getCotizacionByIdMoneda: function() {
1174 return { 1179 return {
1175 then: function() { } 1180 then: function() { }
1176 }; 1181 };
1177 } 1182 }
1178 }, 1183 },
1179 focaBotoneraLateralService: {}, 1184 focaBotoneraLateralService: {},
1180 focaModalService: focaModalService, 1185 focaModalService: focaModalService,
1181 notaPedidoBusinessService: {}, 1186 notaPedidoBusinessService: {},
1182 $rootScope: { 1187 $rootScope: {
1183 $on: function() { } 1188 $on: function() { }
1184 }, 1189 },
1185 focaSeguimientoService: {}, 1190 focaSeguimientoService: {},
1186 APP: {}, 1191 APP: {},
1187 focaLoginService: {}, 1192 focaLoginService: {},
1188 $localStorage: {} 1193 $localStorage: {}
1189 }); 1194 });
1190 scope.notaPedido = {}; 1195 scope.notaPedido = {};
1191 1196
1192 var respuesta = { then: function() { } }; 1197 var respuesta = { then: function() { } };
1193 1198
1194 //act 1199 //act
1195 spyOn(focaModalService, 'modal').and.returnValue(respuesta); 1200 spyOn(focaModalService, 'modal').and.returnValue(respuesta);
1196 scope.seleccionarMoneda(); 1201 scope.seleccionarMoneda();
1197 1202
1198 //assert 1203 //assert
1199 expect(focaModalService.modal).toHaveBeenCalled(); 1204 expect(focaModalService.modal).toHaveBeenCalled();
1200 }); 1205 });
1201 1206
1202 it('función seleccionarMoneda llama Modal Cotizacion', function(done) { 1207 it('función seleccionarMoneda llama Modal Cotizacion', function(done) {
1203 //arrange 1208 //arrange
1204 var scope = { 1209 var scope = {
1205 $watch: function() { }, 1210 $watch: function() { },
1206 $broadcast: function() { } 1211 $broadcast: function() { }
1207 }; 1212 };
1208 var focaModalService = { 1213 var focaModalService = {
1209 modal: function() { } 1214 modal: function() { }
1210 }; 1215 };
1211 1216
1212 $controler('notaPedidoCtrl', { 1217 $controler('notaPedidoCtrl', {
1213 $scope: scope, 1218 $scope: scope,
1214 $uibModal: {}, 1219 $uibModal: {},
1215 $location: {}, 1220 $location: {},
1216 $filter: filter, 1221 $filter: filter,
1217 $timeout: timeout, 1222 $timeout: timeout,
1218 crearNotaPedidoService: { 1223 crearNotaPedidoService: {
1219 getNumeroNotaPedido: function() { 1224 getNumeroNotaPedido: function() {
1220 return { 1225 return {
1221 then: function() { } 1226 then: function() { }
1222 }; 1227 };
1223 }, 1228 },
1224 getBotonera: function() { }, 1229 getBotonera: function() { },
1225 getCotizacionByIdMoneda: function() { 1230 getCotizacionByIdMoneda: function() {
1226 return { 1231 return {
1227 then: function() { } 1232 then: function() { }
1228 }; 1233 };
1229 } 1234 }
1230 }, 1235 },
1231 focaBotoneraLateralService: {}, 1236 focaBotoneraLateralService: {},
1232 focaModalService: focaModalService, 1237 focaModalService: focaModalService,
1233 notaPedidoBusinessService: {}, 1238 notaPedidoBusinessService: {},
1234 $rootScope: { 1239 $rootScope: {
1235 $on: function() { } 1240 $on: function() { }
1236 }, 1241 },
1237 focaSeguimientoService: {}, 1242 focaSeguimientoService: {},
1238 APP: {}, 1243 APP: {},
1239 focaLoginService: {}, 1244 focaLoginService: {},
1240 $localStorage: {} 1245 $localStorage: {}
1241 }); 1246 });
1242 1247
1243 scope.notaPedido = {}; 1248 scope.notaPedido = {};
1244 var respuesta = 'test'; 1249 var respuesta = 'test';
1245 var promesaRespuesta = Promise.resolve(respuesta); 1250 var promesaRespuesta = Promise.resolve(respuesta);
1246 1251
1247 //act 1252 //act
1248 spyOn(focaModalService, 'modal').and.returnValue(promesaRespuesta); 1253 spyOn(focaModalService, 'modal').and.returnValue(promesaRespuesta);
1249 spyOn(scope, 'abrirModalCotizacion'); 1254 spyOn(scope, 'abrirModalCotizacion');
1250 scope.seleccionarMoneda(); 1255 scope.seleccionarMoneda();
1251 1256
1252 //assert 1257 //assert
1253 promesaRespuesta.then(function() { 1258 promesaRespuesta.then(function() {
1254 expect(scope.abrirModalCotizacion).toHaveBeenCalledWith('test'); 1259 expect(scope.abrirModalCotizacion).toHaveBeenCalledWith('test');
1255 done(); 1260 done();
1256 }); 1261 });
1257 }); 1262 });
1258 1263
1259 it('función seleccionarObservaciones llama a prompt', function() { 1264 it('función seleccionarObservaciones llama a prompt', function() {
1260 1265
1261 //arrange 1266 //arrange
1262 var scope = { 1267 var scope = {
1263 $watch: function() { }, 1268 $watch: function() { },
1264 $broadcast: function() { } 1269 $broadcast: function() { }
1265 }; 1270 };
1266 var focaModalService = { 1271 var focaModalService = {
1267 prompt: function() { } 1272 prompt: function() { }
1268 }; 1273 };
1269 1274
1270 $controler('notaPedidoCtrl', { 1275 $controler('notaPedidoCtrl', {
1271 $scope: scope, 1276 $scope: scope,
1272 $uibModal: {}, 1277 $uibModal: {},
1273 $location: {}, 1278 $location: {},
1274 $filter: filter, 1279 $filter: filter,
1275 $timeout: timeout, 1280 $timeout: timeout,
1276 crearNotaPedidoService: { 1281 crearNotaPedidoService: {
1277 getNumeroNotaPedido: function() { 1282 getNumeroNotaPedido: function() {
1278 return { 1283 return {
1279 then: function() { } 1284 then: function() { }
1280 }; 1285 };
1281 }, 1286 },
1282 getBotonera: function() { }, 1287 getBotonera: function() { },
1283 getCotizacionByIdMoneda: function() { 1288 getCotizacionByIdMoneda: function() {
1284 return { 1289 return {
1285 then: function() { } 1290 then: function() { }
1286 }; 1291 };
1287 } 1292 }
1288 }, 1293 },
1289 focaBotoneraLateralService: {}, 1294 focaBotoneraLateralService: {},
1290 focaModalService: focaModalService, 1295 focaModalService: focaModalService,
1291 notaPedidoBusinessService: {}, 1296 notaPedidoBusinessService: {},
1292 $rootScope: { 1297 $rootScope: {
1293 $on: function() { } 1298 $on: function() { }
1294 }, 1299 },
1295 focaSeguimientoService: {}, 1300 focaSeguimientoService: {},
1296 APP: {}, 1301 APP: {},
1297 focaLoginService: {}, 1302 focaLoginService: {},
1298 $localStorage: {} 1303 $localStorage: {}
1299 }); 1304 });
1300 var respuesta = { then: function() { } }; 1305 var respuesta = { then: function() { } };
1301 scope.notaPedido = {}; 1306 scope.notaPedido = {};
1302 1307
1303 //act 1308 //act
1304 spyOn(focaModalService, 'prompt').and.returnValue(respuesta); 1309 spyOn(focaModalService, 'prompt').and.returnValue(respuesta);
1305 scope.seleccionarObservaciones(); 1310 scope.seleccionarObservaciones();
1306 1311
1307 //assert 1312 //assert
1308 expect(focaModalService.prompt).toHaveBeenCalled(); 1313 expect(focaModalService.prompt).toHaveBeenCalled();
1309 }); 1314 });
1310 1315
1311 it('función seleccionarObservaciones setea observaciones', function(done) { 1316 it('función seleccionarObservaciones setea observaciones', function(done) {
1312 1317
1313 //arrange 1318 //arrange
1314 var scope = { 1319 var scope = {
1315 $watch: function() { }, 1320 $watch: function() { },
1316 $broadcast: function() { } 1321 $broadcast: function() { }
1317 }; 1322 };
1318 var focaModalService = { 1323 var focaModalService = {
1319 prompt: function() { } 1324 prompt: function() { }
1320 }; 1325 };
1321 1326
1322 $controler('notaPedidoCtrl', { 1327 $controler('notaPedidoCtrl', {
1323 $scope: scope, 1328 $scope: scope,
1324 $uibModal: {}, 1329 $uibModal: {},
1325 $location: {}, 1330 $location: {},
1326 $filter: filter, 1331 $filter: filter,
1327 $timeout: timeout, 1332 $timeout: timeout,
1328 crearNotaPedidoService: { 1333 crearNotaPedidoService: {
1329 getNumeroNotaPedido: function() { 1334 getNumeroNotaPedido: function() {
1330 return { 1335 return {
1331 then: function() { } 1336 then: function() { }
1332 }; 1337 };
1333 }, 1338 },
1334 getBotonera: function() { }, 1339 getBotonera: function() { },
1335 getCotizacionByIdMoneda: function() { 1340 getCotizacionByIdMoneda: function() {
1336 return { 1341 return {
1337 then: function() { } 1342 then: function() { }
1338 }; 1343 };
1339 } 1344 }
1340 }, 1345 },
1341 focaBotoneraLateralService: {}, 1346 focaBotoneraLateralService: {},
1342 focaModalService: focaModalService, 1347 focaModalService: focaModalService,
1343 notaPedidoBusinessService: {}, 1348 notaPedidoBusinessService: {},
1344 $rootScope: { 1349 $rootScope: {
1345 $on: function() { } 1350 $on: function() { }
1346 }, 1351 },
1347 focaSeguimientoService: {}, 1352 focaSeguimientoService: {},
1348 APP: {}, 1353 APP: {},
1349 focaLoginService: {}, 1354 focaLoginService: {},
1350 $localStorage: {} 1355 $localStorage: {}
1351 }); 1356 });
1352 var respuesta = 'unit test'; 1357 var respuesta = 'unit test';
1353 var promesa = Promise.resolve(respuesta); 1358 var promesa = Promise.resolve(respuesta);
1354 scope.notaPedido = {}; 1359 scope.notaPedido = {};
1355 1360
1356 //act 1361 //act
1357 spyOn(focaModalService, 'prompt').and.returnValue(promesa); 1362 spyOn(focaModalService, 'prompt').and.returnValue(promesa);
1358 scope.seleccionarObservaciones(); 1363 scope.seleccionarObservaciones();
1359 1364
1360 //assert 1365 //assert
1361 promesa.then(function() { 1366 promesa.then(function() {
1362 expect(scope.notaPedido.observaciones).toEqual(respuesta); 1367 expect(scope.notaPedido.observaciones).toEqual(respuesta);
1363 done(); 1368 done();
1364 }); 1369 });
1365 }); 1370 });
1366 1371
1367 it('función abrirModalCotizacion abre modal', function() { 1372 it('función abrirModalCotizacion abre modal', function() {
1368 1373
1369 //arrange 1374 //arrange
1370 var scope = { 1375 var scope = {
1371 $watch: function() { }, 1376 $watch: function() { },
1372 $broadcast: function() { } 1377 $broadcast: function() { }
1373 }; 1378 };
1374 var uibModal = { 1379 var uibModal = {
1375 open: function() { } 1380 open: function() { }
1376 }; 1381 };
1377 1382
1378 $controler('notaPedidoCtrl', { 1383 $controler('notaPedidoCtrl', {
1379 $scope: scope, 1384 $scope: scope,
1380 $uibModal: uibModal, 1385 $uibModal: uibModal,
1381 $location: {}, 1386 $location: {},
1382 $filter: filter, 1387 $filter: filter,
1383 $timeout: timeout, 1388 $timeout: timeout,
1384 crearNotaPedidoService: { 1389 crearNotaPedidoService: {
1385 getNumeroNotaPedido: function() { 1390 getNumeroNotaPedido: function() {
1386 return { 1391 return {
1387 then: function() { } 1392 then: function() { }
1388 }; 1393 };
1389 }, 1394 },
1390 getBotonera: function() { }, 1395 getBotonera: function() { },
1391 getCotizacionByIdMoneda: function() { 1396 getCotizacionByIdMoneda: function() {
1392 return { 1397 return {
1393 then: function() { } 1398 then: function() { }
1394 }; 1399 };
1395 } 1400 }
1396 }, 1401 },
1397 focaBotoneraLateralService: {}, 1402 focaBotoneraLateralService: {},
1398 focaModalService: {}, 1403 focaModalService: {},
1399 notaPedidoBusinessService: {}, 1404 notaPedidoBusinessService: {},
1400 $rootScope: { 1405 $rootScope: {
1401 $on: function() { } 1406 $on: function() { }
1402 }, 1407 },
1403 focaSeguimientoService: {}, 1408 focaSeguimientoService: {},
1404 APP: {}, 1409 APP: {},
1405 focaLoginService: {}, 1410 focaLoginService: {},
1406 $localStorage: {} 1411 $localStorage: {}
1407 }); 1412 });
1408 1413
1409 scope.notaPedido = {}; 1414 scope.notaPedido = {};
1410 1415
1411 var respuesta = { result: {then: function() { } } }; 1416 var respuesta = { result: {then: function() { } } };
1412 1417
1413 //act 1418 //act
1414 spyOn(uibModal, 'open').and.returnValue(respuesta); 1419 spyOn(uibModal, 'open').and.returnValue(respuesta);
1415 scope.abrirModalCotizacion(); 1420 scope.abrirModalCotizacion();
1416 1421
1417 //assert 1422 //assert
1418 expect(uibModal.open).toHaveBeenCalled(); 1423 expect(uibModal.open).toHaveBeenCalled();
1419 }); 1424 });
1420 1425
1421 it('función abrirModalCotizacion setea datos y cabecera', function(done) { 1426 it('función abrirModalCotizacion setea datos y cabecera', function(done) {
1422 //arrange 1427 //arrange
1423 var scope = { 1428 var scope = {
1424 $watch: function() { }, 1429 $watch: function() { },
1425 $broadcast: function() { } 1430 $broadcast: function() { }
1426 }; 1431 };
1427 var uibModal = { 1432 var uibModal = {
1428 open: function() { } 1433 open: function() { }
1429 }; 1434 };
1430 1435
1431 $controler('notaPedidoCtrl', { 1436 $controler('notaPedidoCtrl', {
1432 $scope: scope, 1437 $scope: scope,
1433 $uibModal: uibModal, 1438 $uibModal: uibModal,
1434 $location: {}, 1439 $location: {},
1435 $filter: filter, 1440 $filter: filter,
1436 $timeout: timeout, 1441 $timeout: timeout,
1437 crearNotaPedidoService: { 1442 crearNotaPedidoService: {
1438 getNumeroNotaPedido: function() { 1443 getNumeroNotaPedido: function() {
1439 return { 1444 return {
1440 then: function() { } 1445 then: function() { }
1441 }; 1446 };
1442 }, 1447 },
1443 getBotonera: function() { }, 1448 getBotonera: function() { },
1444 getCotizacionByIdMoneda: function() { 1449 getCotizacionByIdMoneda: function() {
1445 return { 1450 return {
1446 then: function() { } 1451 then: function() { }
1447 }; 1452 };
1448 } 1453 }
1449 }, 1454 },
1450 focaBotoneraLateralService: {}, 1455 focaBotoneraLateralService: {},
1451 focaModalService: {}, 1456 focaModalService: {},
1452 notaPedidoBusinessService: {}, 1457 notaPedidoBusinessService: {},
1453 $rootScope: { 1458 $rootScope: {
1454 $on: function() { } 1459 $on: function() { }
1455 }, 1460 },
1456 focaSeguimientoService: {}, 1461 focaSeguimientoService: {},
1457 APP: {}, 1462 APP: {},
1458 focaLoginService: {}, 1463 focaLoginService: {},
1459 $localStorage: {}, 1464 $localStorage: {},
1460 articulosNotaPedido: [] 1465 articulosNotaPedido: []
1461 }); 1466 });
1462 1467
1463 scope.notaPedido = {}; 1468 scope.notaPedido = {};
1464 scope.articulosTabla = []; 1469 scope.articulosTabla = [];
1465 scope.$broadcast = function() { }; 1470 scope.$broadcast = function() { };
1466 var moneda = 'moneda'; 1471 var moneda = 'moneda';
1467 var cotizacion = 'test'; 1472 var cotizacion = 'test';
1468 var promesaRespuesta = { result: Promise.resolve(cotizacion) }; 1473 var promesaRespuesta = { result: Promise.resolve(cotizacion) };
1469 1474
1470 //act 1475 //act
1471 spyOn(uibModal, 'open').and.returnValue(promesaRespuesta); 1476 spyOn(uibModal, 'open').and.returnValue(promesaRespuesta);
1472 spyOn(scope, '$broadcast'); 1477 spyOn(scope, '$broadcast');
1473 scope.abrirModalCotizacion(moneda); 1478 scope.abrirModalCotizacion(moneda);
1474 1479
1475 //assert 1480 //assert
1476 promesaRespuesta.result.then(function() { 1481 promesaRespuesta.result.then(function() {
1477 1482
1478 expect(scope.$broadcast).toHaveBeenCalled(); 1483 expect(scope.$broadcast).toHaveBeenCalled();
1479 expect(scope.notaPedido.cotizacion).toEqual(cotizacion); 1484 expect(scope.notaPedido.cotizacion).toEqual(cotizacion);
1480 done(); 1485 done();
1481 }); 1486 });
1482 }); 1487 });
1483 1488
1484 it('función agregarATabla muestra alerta cuando a cargar undefined', function() { 1489 it('función agregarATabla muestra alerta cuando a cargar undefined', function() {
1485 1490
1486 //arrange 1491 //arrange
1487 var scope = { 1492 var scope = {
1488 $watch: function() { }, 1493 $watch: function() { },
1489 $broadcast: function() { } 1494 $broadcast: function() { }
1490 }; 1495 };
1491 var focaModalService = { 1496 var focaModalService = {
1492 alert: function() { } 1497 alert: function() { }
1493 }; 1498 };
1494 1499
1495 $controler('notaPedidoCtrl', { 1500 $controler('notaPedidoCtrl', {
1496 $scope: scope, 1501 $scope: scope,
1497 $uibModal: {}, 1502 $uibModal: {},
1498 $location: {}, 1503 $location: {},
1499 $filter: filter, 1504 $filter: filter,
1500 $timeout: timeout, 1505 $timeout: timeout,
1501 crearNotaPedidoService: { 1506 crearNotaPedidoService: {
1502 getNumeroNotaPedido: function() { 1507 getNumeroNotaPedido: function() {
1503 return { 1508 return {
1504 then: function() { } 1509 then: function() { }
1505 }; 1510 };
1506 }, 1511 },
1507 getBotonera: function() { }, 1512 getBotonera: function() { },
1508 getCotizacionByIdMoneda: function() { 1513 getCotizacionByIdMoneda: function() {
1509 return { 1514 return {
1510 then: function() { } 1515 then: function() { }
1511 }; 1516 };
1512 } 1517 }
1513 }, 1518 },
1514 focaBotoneraLateralService: {}, 1519 focaBotoneraLateralService: {},
1515 focaModalService: focaModalService, 1520 focaModalService: focaModalService,
1516 notaPedidoBusinessService: {}, 1521 notaPedidoBusinessService: {},
1517 $rootScope: { 1522 $rootScope: {
1518 $on: function() { } 1523 $on: function() { }
1519 }, 1524 },
1520 focaSeguimientoService: {}, 1525 focaSeguimientoService: {},
1521 APP: {}, 1526 APP: {},
1522 focaLoginService: {}, 1527 focaLoginService: {},
1523 $localStorage: {} 1528 $localStorage: {}
1524 }); 1529 });
1525 scope.articuloACargar = {}; 1530 scope.articuloACargar = {};
1526 1531
1527 //act 1532 //act
1528 spyOn(focaModalService, 'alert'); 1533 spyOn(focaModalService, 'alert');
1529 scope.agregarATabla(13); 1534 scope.agregarATabla(13);
1530 1535
1531 //assert 1536 //assert
1532 expect(focaModalService.alert).toHaveBeenCalledWith('El valor debe ser al menos 1'); 1537 expect(focaModalService.alert).toHaveBeenCalledWith('El valor debe ser al menos 1');
1533 }); 1538 });
1534 1539
1535 it('función editarArticulo muestra alerta cuando a cargar es undefined', function() { 1540 it('función editarArticulo muestra alerta cuando a cargar es undefined', function() {
1536 1541
1537 //arrange 1542 //arrange
1538 var scope = { 1543 var scope = {
1539 $watch: function() { }, 1544 $watch: function() { },
1540 $broadcast: function() { } 1545 $broadcast: function() { }
1541 }; 1546 };
1542 var focaModalService = { 1547 var focaModalService = {
1543 alert: function() { } 1548 alert: function() { }
1544 }; 1549 };
1545 1550
1546 $controler('notaPedidoCtrl', { 1551 $controler('notaPedidoCtrl', {
1547 $scope: scope, 1552 $scope: scope,
1548 $uibModal: {}, 1553 $uibModal: {},
1549 $location: {}, 1554 $location: {},
1550 $filter: filter, 1555 $filter: filter,
1551 $timeout: timeout, 1556 $timeout: timeout,
1552 crearNotaPedidoService: { 1557 crearNotaPedidoService: {
1553 getNumeroNotaPedido: function() { 1558 getNumeroNotaPedido: function() {
1554 return { 1559 return {
1555 then: function() { } 1560 then: function() { }
1556 }; 1561 };
1557 }, 1562 },
1558 getBotonera: function() { }, 1563 getBotonera: function() { },
1559 getCotizacionByIdMoneda: function() { 1564 getCotizacionByIdMoneda: function() {
1560 return { 1565 return {
1561 then: function() { } 1566 then: function() { }
1562 }; 1567 };
1563 } 1568 }
1564 }, 1569 },
1565 focaBotoneraLateralService: {}, 1570 focaBotoneraLateralService: {},
1566 focaModalService: focaModalService, 1571 focaModalService: focaModalService,
1567 notaPedidoBusinessService: {}, 1572 notaPedidoBusinessService: {},
1568 $rootScope: { 1573 $rootScope: {
1569 $on: function() { } 1574 $on: function() { }
1570 }, 1575 },
1571 focaSeguimientoService: {}, 1576 focaSeguimientoService: {},
1572 APP: {}, 1577 APP: {},
1573 focaLoginService: {}, 1578 focaLoginService: {},
1574 $localStorage: {} 1579 $localStorage: {}
1575 }); 1580 });
1576 scope.articuloACargar = {}; 1581 scope.articuloACargar = {};
1577 1582
1578 //act 1583 //act
1579 spyOn(focaModalService, 'alert'); 1584 spyOn(focaModalService, 'alert');
1580 scope.agregarATabla(13); 1585 scope.agregarATabla(13);
1581 1586
1582 //assert 1587 //assert
1583 expect(focaModalService.alert).toHaveBeenCalledWith('El valor debe ser al menos 1'); 1588 expect(focaModalService.alert).toHaveBeenCalledWith('El valor debe ser al menos 1');
1584 }); 1589 });
1585 1590
1586 it('función salir lleva a ruta correcta', function() { 1591 it('función salir lleva a ruta correcta', function() {
1587 1592
1588 inject(function($location) { 1593 inject(function($location) {
1589 1594
1590 //arrange 1595 //arrange
1591 var scope = { 1596 var scope = {
1592 $watch: function() { }, 1597 $watch: function() { },
1593 $broadcast: function() { } 1598 $broadcast: function() { }
1594 }; 1599 };
1595 1600
1596 $controler('notaPedidoCtrl', { 1601 $controler('notaPedidoCtrl', {
1597 $scope: scope, 1602 $scope: scope,
1598 $uibModal: {}, 1603 $uibModal: {},
1599 $location: $location, 1604 $location: $location,
1600 $filter: filter, 1605 $filter: filter,
1601 $timeout: timeout, 1606 $timeout: timeout,
1602 crearNotaPedidoService: { 1607 crearNotaPedidoService: {
1603 getNumeroNotaPedido: function() { 1608 getNumeroNotaPedido: function() {
1604 return { 1609 return {
1605 then: function() { } 1610 then: function() { }
1606 }; 1611 };
1607 }, 1612 },
1608 getBotonera: function() { }, 1613 getBotonera: function() { },
1609 getCotizacionByIdMoneda: function() { 1614 getCotizacionByIdMoneda: function() {
1610 return { 1615 return {
1611 then: function() { } 1616 then: function() { }
1612 }; 1617 };
1613 } 1618 }
1614 }, 1619 },
1615 focaBotoneraLateralService: {}, 1620 focaBotoneraLateralService: {},
1616 focaModalService: {}, 1621 focaModalService: {},
1617 notaPedidoBusinessService: {}, 1622 notaPedidoBusinessService: {},
1618 $rootScope: { 1623 $rootScope: {
1619 $on: function() { } 1624 $on: function() { }
1620 }, 1625 },
1621 focaSeguimientoService: {}, 1626 focaSeguimientoService: {},
1622 APP: {}, 1627 APP: {},
1623 focaLoginService: {}, 1628 focaLoginService: {},
1624 $localStorage: {}, 1629 $localStorage: {},
1625 }); 1630 });
1626 1631
1627 //act 1632 //act
1628 scope.salir(); 1633 scope.salir();
1629 1634
1630 //assert 1635 //assert
1631 expect($location.url()).toEqual('/'); 1636 expect($location.url()).toEqual('/');
1632 }); 1637 });
1633 }); 1638 });
1634 }); 1639 });
1635 }); 1640 });
1636 1641
src/js/businessService.js
1 angular.module('focaCrearNotaPedido') 1 angular.module('focaCrearNotaPedido')
2 .factory('notaPedidoBusinessService', [ 2 .factory('notaPedidoBusinessService', [
3 'crearNotaPedidoService', 3 'crearNotaPedidoService',
4 function(crearNotaPedidoService) { 4 function(crearNotaPedidoService) {
5 return { 5 return {
6 addArticulos: function(articulosNotaPedido, idNotaPedido, cotizacion) { 6 addArticulos: function(articulosNotaPedido, idNotaPedido, cotizacion) {
7 for(var i = 0; i < articulosNotaPedido.length; i++) { 7 for(var i = 0; i < articulosNotaPedido.length; i++) {
8 delete articulosNotaPedido[i].editCantidad; 8 delete articulosNotaPedido[i].editCantidad;
9 delete articulosNotaPedido[i].editPrecio; 9 delete articulosNotaPedido[i].editPrecio;
10 articulosNotaPedido[i].idNotaPedido = idNotaPedido; 10 articulosNotaPedido[i].idNotaPedido = idNotaPedido;
11 articulosNotaPedido[i].precio = articulosNotaPedido[i].precio * cotizacion; 11 articulosNotaPedido[i].precio = articulosNotaPedido[i].precio * cotizacion;
12 crearNotaPedidoService.crearArticulosParaNotaPedido(articulosNotaPedido[i]); 12 crearNotaPedidoService.crearArticulosParaNotaPedido(articulosNotaPedido[i]);
13 } 13 }
14 }, 14 },
15 addEstado: function(idNotaPedido, idVendedor) { 15 addEstado: function(idNotaPedido, idVendedor) {
16 var date = new Date(); 16 var date = new Date();
17 var estado = { 17 var estado = {
18 idNotaPedido: idNotaPedido, 18 idNotaPedido: idNotaPedido,
19 fecha: new Date(date.getTime() - (date.getTimezoneOffset() * 60000)) 19 fecha: new Date(date.getTime() - (date.getTimezoneOffset() * 60000))
20 .toISOString().slice(0, 19).replace('T', ' '), 20 .toISOString().slice(0, 19).replace('T', ' '),
21 estado: 0, 21 estado: 0,
22 idVendedor: idVendedor 22 idVendedor: idVendedor
23 }; 23 };
24 crearNotaPedidoService.crearEstadoParaNotaPedido(estado); 24 crearNotaPedidoService.crearEstadoParaNotaPedido(estado);
25 }, 25 },
26 addPuntosDescarga: function(idNotaPedido, puntosDescarga) { 26 addPuntosDescarga: function(idNotaPedido, puntosDescarga) {
27
27 var puntos = []; 28 var puntos = [];
28 29
29 if (puntosDescarga && puntosDescarga.length > 0) { 30 puntosDescarga.forEach(function(punto) {
30 puntosDescarga.forEach(function(punto) { 31 puntos.push({
31 if (puntos.articulosAgregados && puntos.articulosAgregados.length > 0) { 32 idPuntoDescarga: punto.id,
32 punto.articulosAgregados.forEach(function(articulo) { 33 idNotaPedido: idNotaPedido,
33 puntos.push({
34 idPuntoDescarga: punto.id,
35 idNotaPedido: idNotaPedido,
36 idProducto: articulo.id,
37 cantidad: articulo.cantidad
38 });
39 });
40 }
41 }); 34 });
42 } 35 });
43 36
44 return crearNotaPedidoService.crearPuntosDescarga(puntos); 37 return crearNotaPedidoService.crearPuntosDescarga(puntos);
45 }, 38 },
46 calcularArticulos: function(articulos, cotizacion) { 39 calcularArticulos: function(articulos, cotizacion) {
47 for(var i = 0; i < articulos.length; i++) { 40 for(var i = 0; i < articulos.length; i++) {
48 articulos[i].precio = articulos[i].precio / cotizacion; 41 articulos[i].precio = articulos[i].precio / cotizacion;
49 } 42 }
50 }, 43 },
51 plazoToString: function(plazos) { 44 plazoToString: function(plazos) {
52 var result = ''; 45 var result = '';
53 for(var i = 0; i < plazos.length; i++) { 46 for(var i = 0; i < plazos.length; i++) {
54 result += plazos[i].dias + ' '; 47 result += plazos[i].dias + ' ';
55 } 48 }
56 return result.trim(); 49 return result.trim();
57 } 50 }
58 }; 51 };
59 }]); 52 }]);
src/js/controller.js
1 angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', 1 angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
2 [ 2 [
3 '$scope', 3 '$scope',
4 '$uibModal', 4 '$uibModal',
5 '$location', 5 '$location',
6 '$filter', 6 '$filter',
7 '$timeout', 7 '$timeout',
8 'crearNotaPedidoService', 8 'crearNotaPedidoService',
9 'focaBotoneraLateralService', 9 'focaBotoneraLateralService',
10 'focaModalService', 10 'focaModalService',
11 'notaPedidoBusinessService', 11 'notaPedidoBusinessService',
12 '$rootScope', 12 '$rootScope',
13 'focaSeguimientoService', 13 'focaSeguimientoService',
14 'APP', 14 'APP',
15 'focaLoginService', 15 'focaLoginService',
16 '$localStorage', 16 '$localStorage',
17 function( 17 function(
18 $scope, $uibModal, $location, $filter, $timeout, crearNotaPedidoService, 18 $scope, $uibModal, $location, $filter, $timeout, crearNotaPedidoService,
19 focaBotoneraLateralService, focaModalService, notaPedidoBusinessService, 19 focaBotoneraLateralService, focaModalService, notaPedidoBusinessService,
20 $rootScope, focaSeguimientoService, APP, focaLoginService, $localStorage) 20 $rootScope, focaSeguimientoService, APP, focaLoginService, $localStorage)
21 { 21 {
22 config(); 22 config();
23 23
24 function config() { 24 function config() {
25 // PARAMETROS INICIALES PARA FUNCIONAMIENTO DEL PROGRAMA 25 // PARAMETROS INICIALES PARA FUNCIONAMIENTO DEL PROGRAMA
26 $scope.notaPedido = {}; 26 $scope.notaPedido = {};
27 $scope.isNumber = angular.isNumber; 27 $scope.isNumber = angular.isNumber;
28 $scope.datepickerAbierto = false; 28 $scope.datepickerAbierto = false;
29 $scope.show = false; 29 $scope.show = false;
30 $scope.cargando = true; 30 $scope.cargando = true;
31 $scope.botonera = crearNotaPedidoService.getBotonera(); 31 $scope.botonera = crearNotaPedidoService.getBotonera();
32 $scope.puntoVenta = $filter('rellenarDigitos')(0, 4); 32 $scope.puntoVenta = $filter('rellenarDigitos')(0, 4);
33 $scope.comprobante = $filter('rellenarDigitos')(0, 8); 33 $scope.comprobante = $filter('rellenarDigitos')(0, 8);
34 $scope.dateOptions = { 34 $scope.dateOptions = {
35 maxDate: new Date(), 35 maxDate: new Date(),
36 minDate: new Date(2010, 0, 1) 36 minDate: new Date(2010, 0, 1)
37 }; 37 };
38 38
39 //SETEO BOTONERA LATERAL 39 //SETEO BOTONERA LATERAL
40 $timeout(function() { 40 $timeout(function() {
41 focaBotoneraLateralService.showSalir(false); 41 focaBotoneraLateralService.showSalir(false);
42 focaBotoneraLateralService.showPausar(true); 42 focaBotoneraLateralService.showPausar(true);
43 focaBotoneraLateralService.showGuardar(true, $scope.crearNotaPedido); 43 focaBotoneraLateralService.showGuardar(true, $scope.crearNotaPedido);
44 focaBotoneraLateralService.addCustomButton('Salir', salir); 44 focaBotoneraLateralService.addCustomButton('Salir', salir);
45 }); 45 });
46 46
47 // SETEA BOTONERA DE FACTURADOR TENIENDO EN CUENTA SI ESTA SETEADO EL VENDEDOR 47 // SETEA BOTONERA DE FACTURADOR TENIENDO EN CUENTA SI ESTA SETEADO EL VENDEDOR
48 if (APP === 'distribuidor') { 48 if (APP === 'distribuidor') {
49 $scope.idVendedor = focaLoginService.getLoginData().vendedorCobrador; 49 $scope.idVendedor = focaLoginService.getLoginData().vendedorCobrador;
50 } 50 }
51 51
52 //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' 52 //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]'
53 crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) { 53 crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) {
54 var monedaPorDefecto = res.data[0]; 54 var monedaPorDefecto = res.data[0];
55
56 $scope.notaPedido.cotizacion = Object.assign( 55 $scope.notaPedido.cotizacion = Object.assign(
57 {moneda: monedaPorDefecto}, 56 {moneda: monedaPorDefecto},
58 monedaPorDefecto.cotizaciones[0] 57 monedaPorDefecto.cotizaciones[0]
59 ); 58 );
60 $scope.inicial.cotizacion = $scope.notaPedido.cotizacion; 59 $scope.inicial.cotizacion = $scope.notaPedido.cotizacion;
60 $timeout(function() {getLSNotaPedido();});
61 }); 61 });
62 62
63 init(); 63 init();
64 $timeout(function() {getLSNotaPedido();}); 64
65 } 65 }
66 66
67 function init() { 67 function init() {
68 $scope.$broadcast('cleanCabecera'); 68 $scope.$broadcast('cleanCabecera');
69 69
70 $scope.notaPedido = { 70 $scope.notaPedido = {
71 id: 0, 71 id: 0,
72 cliente: {}, 72 cliente: {},
73 proveedor: {}, 73 proveedor: {},
74 domicilio: {dom: ''}, 74 domicilio: {dom: ''},
75 vendedor: {}, 75 vendedor: {},
76 fechaCarga: new Date(), 76 fechaCarga: new Date(),
77 cotizacion: {}, 77 cotizacion: {},
78 articulosNotaPedido: [], 78 articulosNotaPedido: [],
79 notaPedidoPlazo: [] 79 notaPedidoPlazo: []
80 }; 80 };
81 $scope.idLista = undefined; 81 $scope.idLista = undefined;
82 82
83 crearNotaPedidoService.getNumeroNotaPedido().then( 83 crearNotaPedidoService.getNumeroNotaPedido().then(
84 function(res) { 84 function(res) {
85 $scope.puntoVenta = $filter('rellenarDigitos')( 85 $scope.puntoVenta = $filter('rellenarDigitos')(
86 res.data.sucursal, 4 86 res.data.sucursal, 4
87 ); 87 );
88 88
89 $scope.comprobante = $filter('rellenarDigitos')( 89 $scope.comprobante = $filter('rellenarDigitos')(
90 res.data.numeroNotaPedido, 8 90 res.data.numeroNotaPedido, 8
91 ); 91 );
92 }, 92 },
93 function(err) { 93 function(err) {
94 focaModalService.alert('La terminal no esta configurada correctamente'); 94 focaModalService.alert('La terminal no esta configurada correctamente');
95 console.info(err); 95 console.info(err);
96 } 96 }
97 ); 97 );
98 98
99 if (APP === 'distribuidor') { 99 if (APP === 'distribuidor') {
100 crearNotaPedidoService.getVendedorById($scope.idVendedor).then( 100 crearNotaPedidoService.getVendedorById($scope.idVendedor).then(
101 function(res) { 101 function(res) {
102 var vendedor = res.data; 102 var vendedor = res.data;
103 $scope.$broadcast('addCabecera', { 103 $scope.$broadcast('addCabecera', {
104 label: 'Vendedor:', 104 label: 'Vendedor:',
105 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' + 105 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' +
106 vendedor.NOM 106 vendedor.NOM
107 }); 107 });
108 108
109 $scope.notaPedido.vendedor = vendedor; 109 $scope.notaPedido.vendedor = vendedor;
110 $scope.inicial.notaPedido.vendedor =$scope.notaPedido.vendedor;
111 } 110 }
112 ); 111 );
113 } 112 }
114 113
115 $scope.inicial = angular.copy($scope.notaPedido); 114 $scope.inicial = angular.copy($scope.notaPedido);
116 } 115 }
117 116
118 $scope.$watch('notaPedido', function(newValue) { 117 $scope.$watch('notaPedido', function(newValue) {
119 focaBotoneraLateralService.setPausarData({ 118 focaBotoneraLateralService.setPausarData({
120 label: 'notaPedido', 119 label: 'notaPedido',
121 val: newValue 120 val: newValue
122 }); 121 });
123 }, true); 122 }, true);
124 123
125 $scope.crearNotaPedido = function() { 124 $scope.crearNotaPedido = function() {
126 if (!$scope.notaPedido.cliente.COD) { 125 if (!$scope.notaPedido.cliente.COD) {
127 focaModalService.alert('Ingrese Cliente'); 126 focaModalService.alert('Ingrese Cliente');
128 return; 127 return;
129 } else if (!$scope.notaPedido.proveedor.COD) { 128 } else if (!$scope.notaPedido.proveedor.COD) {
130 focaModalService.alert('Ingrese Proveedor'); 129 focaModalService.alert('Ingrese Proveedor');
131 return; 130 return;
132 } else if (!$scope.notaPedido.cotizacion.ID) { 131 } else if (!$scope.notaPedido.cotizacion.ID) {
133 focaModalService.alert('Ingrese Cotización'); 132 focaModalService.alert('Ingrese Cotización');
134 return; 133 return;
135 } else if (!$scope.notaPedido.cotizacion.moneda.ID) { 134 } else if (!$scope.notaPedido.cotizacion.moneda.ID) {
136 focaModalService.alert('Ingrese Moneda'); 135 focaModalService.alert('Ingrese Moneda');
137 return; 136 return;
138 } else if (!$scope.notaPedido.notaPedidoPlazo) { 137 } else if (!$scope.notaPedido.notaPedidoPlazo) {
139 focaModalService.alert('Ingrese Precios y Condiciones'); 138 focaModalService.alert('Ingrese Precios y Condiciones');
140 return; 139 return;
141 } else if ( 140 } else if (
142 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null) 141 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null)
143 { 142 {
144 focaModalService.alert('Ingrese Flete'); 143 focaModalService.alert('Ingrese Flete');
145 return; 144 return;
146 } else if (!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto 145 } else if (!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto
147 focaModalService.alert('Ingrese Domicilio'); 146 focaModalService.alert('Ingrese Domicilio');
148 return; 147 return;
149 } else if ($scope.notaPedido.articulosNotaPedido.length === 0) { 148 } else if ($scope.notaPedido.articulosNotaPedido.length === 0) {
150 focaModalService.alert('Debe cargar al menos un articulo'); 149 focaModalService.alert('Debe cargar al menos un articulo');
151 return; 150 return;
152 } 151 }
153 focaBotoneraLateralService.startGuardar(); 152 focaBotoneraLateralService.startGuardar();
154 $scope.saveLoading = true; 153 $scope.saveLoading = true;
155 var notaPedido = { 154 var notaPedido = {
156 id: $scope.notaPedido.id, 155 id: $scope.notaPedido.id,
157 fechaCarga: new Date($scope.notaPedido.fechaCarga) 156 fechaCarga: new Date($scope.notaPedido.fechaCarga)
158 .toISOString().slice(0, 19).replace('T', ' '), 157 .toISOString().slice(0, 19).replace('T', ' '),
159 idVendedor: $scope.notaPedido.vendedor.id, 158 idVendedor: $scope.notaPedido.vendedor.id,
160 idCliente: $scope.notaPedido.cliente.COD, 159 idCliente: $scope.notaPedido.cliente.COD,
161 nombreCliente: $scope.notaPedido.cliente.NOM, 160 nombreCliente: $scope.notaPedido.cliente.NOM,
162 cuitCliente: $scope.notaPedido.cliente.CUIT, 161 cuitCliente: $scope.notaPedido.cliente.CUIT,
163 idProveedor: $scope.notaPedido.proveedor.COD, 162 idProveedor: $scope.notaPedido.proveedor.COD,
164 idDomicilio: $scope.notaPedido.domicilio.id, 163 idDomicilio: $scope.notaPedido.domicilio.id,
165 idCotizacion: $scope.notaPedido.cotizacion.ID, 164 idCotizacion: $scope.notaPedido.cotizacion.ID,
166 idPrecioCondicion: $scope.notaPedido.idPrecioCondicion, 165 idPrecioCondicion: $scope.notaPedido.idPrecioCondicion,
167 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 166 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
168 flete: $scope.notaPedido.flete, 167 flete: $scope.notaPedido.flete,
169 fob: $scope.notaPedido.fob, 168 fob: $scope.notaPedido.fob,
170 bomba: $scope.notaPedido.bomba, 169 bomba: $scope.notaPedido.bomba,
171 kilometros: $scope.notaPedido.kilometros, 170 kilometros: $scope.notaPedido.kilometros,
172 domicilioStamp: $scope.notaPedido.domicilioStamp, 171 domicilioStamp: $scope.notaPedido.domicilioStamp,
173 observaciones: $scope.notaPedido.observaciones, 172 observaciones: $scope.notaPedido.observaciones,
174 estado: 0, 173 estado: 0,
175 total: $scope.getTotal() 174 total: $scope.getTotal()
176 }; 175 };
177 crearNotaPedidoService.crearNotaPedido(notaPedido).then( 176 crearNotaPedidoService.crearNotaPedido(notaPedido).then(
178 function(data) { 177 function(data) {
179 // Al guardar los datos de la nota de pedido logueamos la 178 // Al guardar los datos de la nota de pedido logueamos la
180 // actividad para su seguimiento. 179 // actividad para su seguimiento.
181 //TODO: GUARDAR POSISIONAMIENTO AL EDITAR? 180 //TODO: GUARDAR POSISIONAMIENTO AL EDITAR?
182 focaSeguimientoService.guardarPosicion( 181 focaSeguimientoService.guardarPosicion(
183 'Nota de pedido', 182 'Nota de pedido',
184 data.data.id, 183 data.data.id,
185 '' 184 ''
186 ); 185 );
187 notaPedidoBusinessService.addArticulos( 186 notaPedidoBusinessService.addArticulos(
188 $scope.notaPedido.articulosNotaPedido, 187 $scope.notaPedido.articulosNotaPedido,
189 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR); 188 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR);
190 189
191 if ($scope.notaPedido.notaPedidoPuntoDescarga) { 190 if ($scope.notaPedido.notaPedidoPuntoDescarga) {
192 notaPedidoBusinessService.addPuntosDescarga(data.data.id, 191 notaPedidoBusinessService.addPuntosDescarga(data.data.id,
193 $scope.notaPedido.notaPedidoPuntoDescarga); 192 $scope.notaPedido.notaPedidoPuntoDescarga);
194 } 193 }
195 194
196 var plazos = $scope.notaPedido.notaPedidoPlazo; 195 var plazos = $scope.notaPedido.notaPedidoPlazo;
197 var plazosACrear = []; 196 var plazosACrear = [];
198 plazos.forEach(function(plazo) { 197 plazos.forEach(function(plazo) {
199 plazosACrear.push({ 198 plazosACrear.push({
200 idNotaPedido: data.data.id, 199 idNotaPedido: data.data.id,
201 dias: plazo.dias 200 dias: plazo.dias
202 }); 201 });
203 }); 202 });
204 203
205 if (plazosACrear.length) { 204 if (plazosACrear.length) {
206 crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear); 205 crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear);
207 } 206 }
208 207
209 notaPedidoBusinessService.addEstado(data.data.id, 208 notaPedidoBusinessService.addEstado(data.data.id,
210 $scope.notaPedido.vendedor.id); 209 $scope.notaPedido.vendedor.id);
211 210
212 focaBotoneraLateralService.endGuardar(true); 211 focaBotoneraLateralService.endGuardar(true);
213 $scope.saveLoading = false; 212 $scope.saveLoading = false;
214 213
215 init(); 214 init();
216 }, function(error) { 215 }, function(error) {
217 focaModalService.alert('Hubo un error al crear la nota de pedido'); 216 focaModalService.alert('Hubo un error al crear la nota de pedido');
218 focaBotoneraLateralService.endGuardar(); 217 focaBotoneraLateralService.endGuardar();
219 $scope.saveLoading = false; 218 $scope.saveLoading = false;
220 console.info(error); 219 console.info(error);
221 } 220 }
222 ); 221 );
223 }; 222 };
224 223
225 $scope.seleccionarNotaPedido = function() { 224 $scope.seleccionarNotaPedido = function() {
226 var modalInstance = $uibModal.open( 225 var modalInstance = $uibModal.open(
227 { 226 {
228 ariaLabelledBy: 'Busqueda de Nota de Pedido', 227 ariaLabelledBy: 'Busqueda de Nota de Pedido',
229 templateUrl: 'foca-modal-nota-pedido.html', 228 templateUrl: 'foca-modal-nota-pedido.html',
230 controller: 'focaModalNotaPedidoController', 229 controller: 'focaModalNotaPedidoController',
231 size: 'lg', 230 size: 'lg',
232 resolve: { 231 resolve: {
233 usadoPor: function() {return 'notaPedido';}, 232 usadoPor: function() {return 'notaPedido';},
234 idVendedor: function() { 233 idVendedor: function() {
235 if (APP === 'distribuidor') 234 if (APP === 'distribuidor')
236 return $scope.notaPedido.vendedor.id; 235 return $scope.notaPedido.vendedor.id;
237 else 236 else
238 return null; 237 return null;
239 } 238 }
240 } 239 }
241 } 240 }
242 ); 241 );
243 modalInstance.result.then(setearNotaPedido); 242 modalInstance.result.then(setearNotaPedido);
244 }; 243 };
245 244
246 $scope.seleccionarProductos = function() { 245 $scope.seleccionarProductos = function() {
247 if ($scope.idLista === undefined) { 246 if ($scope.idLista === undefined) {
248 focaModalService.alert( 247 focaModalService.alert(
249 'Primero seleccione una lista de precio y condicion'); 248 'Primero seleccione una lista de precio y condicion');
250 return; 249 return;
251 } 250 }
252 var modalInstance = $uibModal.open( 251 var modalInstance = $uibModal.open(
253 { 252 {
254 ariaLabelledBy: 'Busqueda de Productos', 253 ariaLabelledBy: 'Busqueda de Productos',
255 templateUrl: 'modal-busqueda-productos.html', 254 templateUrl: 'modal-busqueda-productos.html',
256 controller: 'modalBusquedaProductosCtrl', 255 controller: 'modalBusquedaProductosCtrl',
257 resolve: { 256 resolve: {
258 parametroProducto: { 257 parametroProducto: {
259 idLista: $scope.idLista, 258 idLista: $scope.idLista,
260 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 259 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
261 simbolo: $scope.notaPedido.cotizacion.moneda.SIMBOLO 260 simbolo: $scope.notaPedido.cotizacion.moneda.SIMBOLO
262 } 261 }
263 }, 262 },
264 size: 'lg' 263 size: 'lg'
265 } 264 }
266 ); 265 );
267 modalInstance.result.then( 266 modalInstance.result.then(
268 function(producto) { 267 function(producto) {
269 var newArt = 268 var newArt =
270 { 269 {
271 id: 0, 270 id: 0,
272 codigo: producto.codigo, 271 codigo: producto.codigo,
273 sector: producto.sector, 272 sector: producto.sector,
274 sectorCodigo: producto.sector + '-' + producto.codigo, 273 sectorCodigo: producto.sector + '-' + producto.codigo,
275 descripcion: producto.descripcion, 274 descripcion: producto.descripcion,
276 item: $scope.notaPedido.articulosNotaPedido.length + 1, 275 item: $scope.notaPedido.articulosNotaPedido.length + 1,
277 nombre: producto.descripcion, 276 nombre: producto.descripcion,
278 precio: parseFloat(producto.precio.toFixed(4)), 277 precio: parseFloat(producto.precio.toFixed(4)),
279 costoUnitario: producto.costo, 278 costoUnitario: producto.costo,
280 editCantidad: false, 279 editCantidad: false,
281 editPrecio: false, 280 editPrecio: false,
282 rubro: producto.CodRub, 281 rubro: producto.CodRub,
283 exentoUnitario: producto.precio, 282 exentoUnitario: producto.precio,
284 ivaUnitario: producto.IMPIVA, 283 ivaUnitario: producto.IMPIVA,
285 impuestoInternoUnitario: producto.ImpInt, 284 impuestoInternoUnitario: producto.ImpInt,
286 impuestoInterno1Unitario: producto.ImpInt2, 285 impuestoInterno1Unitario: producto.ImpInt2,
287 impuestoInterno2Unitario: producto.ImpInt3, 286 impuestoInterno2Unitario: producto.ImpInt3,
288 precioLista: producto.precio, 287 precioLista: producto.precio,
289 combustible: 1, 288 combustible: 1,
290 facturado: 0, 289 facturado: 0,
291 idArticulo: producto.id 290 idArticulo: producto.id
292 }; 291 };
293 $scope.articuloACargar = newArt; 292 $scope.articuloACargar = newArt;
294 $scope.cargando = false; 293 $scope.cargando = false;
295 }, function() { 294 }, function() {
296 // funcion ejecutada cuando se cancela el modal 295 // funcion ejecutada cuando se cancela el modal
297 } 296 }
298 ); 297 );
299 }; 298 };
300 299
301 $scope.seleccionarPuntosDeDescarga = function() { 300 $scope.seleccionarPuntosDeDescarga = function() {
302 if (!$scope.notaPedido.cliente.COD || !$scope.notaPedido.domicilio.id) { 301 if (!$scope.notaPedido.cliente.COD || !$scope.notaPedido.domicilio.id) {
303 focaModalService.alert('Primero seleccione un cliente y un domicilio'); 302 focaModalService.alert('Primero seleccione un cliente y un domicilio');
304 return; 303 return;
305 } else { 304 } else {
306 var modalInstance = $uibModal.open( 305 var modalInstance = $uibModal.open(
307 { 306 {
308 ariaLabelledBy: 'Búsqueda de Puntos de descarga', 307 ariaLabelledBy: 'Búsqueda de Puntos de descarga',
309 templateUrl: 'modal-punto-descarga.html', 308 templateUrl: 'modal-punto-descarga.html',
310 controller: 'focaModalPuntoDescargaController', 309 controller: 'focaModalPuntoDescargaController',
311 size: 'lg', 310 size: 'lg',
312 resolve: { 311 resolve: {
313 filters: { 312 filters: {
314 idDomicilio: $scope.notaPedido.domicilio.id, 313 idDomicilio: $scope.notaPedido.domicilio.id,
315 idCliente: $scope.notaPedido.cliente.COD, 314 idCliente: $scope.notaPedido.cliente.COD,
316 articulos: $scope.notaPedido.articulosNotaPedido, 315 articulos: $scope.notaPedido.articulosNotaPedido,
317 puntosDescarga: $scope.notaPedido.notaPedidoPuntoDescarga 316 puntosDescarga: $scope.notaPedido.notaPedidoPuntoDescarga,
317 domicilio: $scope.notaPedido.domicilio
318 } 318 }
319 } 319 }
320 } 320 }
321 ); 321 );
322 modalInstance.result.then( 322 modalInstance.result.then(
323 function(puntosDescarga) { 323 function(puntosDescarga) {
324 $scope.notaPedido.notaPedidoPuntoDescarga = puntosDescarga; 324 $scope.notaPedido.notaPedidoPuntoDescarga = puntosDescarga;
325 325
326 //AGREGO PUNTOS DE DESCARGA A CABECERA
327 var puntosStamp = '';
328 puntosDescarga.forEach(function(punto, idx, arr) {
329 puntosStamp += punto.descripcion;
330 if ((idx + 1) !== arr.length) puntosStamp += ', ';
331 });
332
333 $scope.$broadcast('addCabecera', { 326 $scope.$broadcast('addCabecera', {
334 label: 'Puntos de descarga:', 327 label: 'Puntos de descarga:',
335 valor: puntosStamp 328 valor: getCabeceraPuntoDescarga(puntosDescarga)
336 }); 329 });
337 }, function() { 330 }, function() {
338 $scope.abrirModalDomicilios($scope.cliente); 331 $scope.abrirModalDomicilios($scope.cliente);
339 } 332 }
340 ); 333 );
341 } 334 }
342 }; 335 };
343 336
344 $scope.seleccionarTransportista = function() { 337 $scope.seleccionarProveedor = function() {
345 $scope.seleccionarProveedor(function() { 338 $scope.abrirModalProveedores(function() {
346 if (validarNotaRemitada()) { 339 if (validarNotaRemitada()) {
347 var modalInstance = $uibModal.open( 340 var modalInstance = $uibModal.open(
348 { 341 {
349 ariaLabelledBy: 'Busqueda de Flete', 342 ariaLabelledBy: 'Busqueda de Flete',
350 templateUrl: 'modal-flete.html', 343 templateUrl: 'modal-flete.html',
351 controller: 'focaModalFleteController', 344 controller: 'focaModalFleteController',
352 size: 'lg', 345 size: 'lg',
353 resolve: { 346 resolve: {
354 parametrosFlete: 347 parametrosFlete:
355 function() { 348 function() {
356 return { 349 return {
357 flete: $scope.notaPedido.fob ? 'FOB' : 350 flete: $scope.notaPedido.fob ? 'FOB' :
358 ( $scope.notaPedido.flete ? '1' : 351 ( $scope.notaPedido.flete ? '1' :
359 ($scope.notaPedido.flete === undefined ? 352 ($scope.notaPedido.flete === undefined ?
360 null : '0')), 353 null : '0')),
361 bomba: $scope.notaPedido.bomba ? '1' : 354 bomba: $scope.notaPedido.bomba ? '1' :
362 ($scope.notaPedido.bomba === undefined ? 355 ($scope.notaPedido.bomba === undefined ?
363 null : '0'), 356 null : '0'),
364 kilometros: $scope.notaPedido.kilometros 357 kilometros: $scope.notaPedido.kilometros
365 }; 358 };
366 } 359 }
367 } 360 }
368 } 361 }
369 ); 362 );
370 modalInstance.result.then( 363 modalInstance.result.then(
371 function(datos) { 364 function(datos) {
372 $scope.notaPedido.flete = datos.flete; 365 $scope.notaPedido.flete = datos.flete;
373 $scope.notaPedido.fob = datos.FOB; 366 $scope.notaPedido.fob = datos.FOB;
374 $scope.notaPedido.bomba = datos.bomba; 367 $scope.notaPedido.bomba = datos.bomba;
375 $scope.notaPedido.kilometros = datos.kilometros; 368 $scope.notaPedido.kilometros = datos.kilometros;
376 $scope.$broadcast('addCabecera', { 369 $scope.$broadcast('addCabecera', {
377 label: 'Flete:', 370 label: 'Flete:',
378 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No') 371 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No')
379 }); 372 });
380 if (datos.flete) { 373 if (datos.flete) {
381 $scope.$broadcast('addCabecera', { 374 $scope.$broadcast('addCabecera', {
382 label: 'Bomba:', 375 label: 'Bomba:',
383 valor: datos.bomba ? 'Si' : 'No' 376 valor: datos.bomba ? 'Si' : 'No'
384 }); 377 });
385 $scope.$broadcast('addCabecera', { 378 $scope.$broadcast('addCabecera', {
386 label: 'Kilometros:', 379 label: 'Kilometros:',
387 valor: datos.kilometros 380 valor: datos.kilometros
388 }); 381 });
389 } else { 382 } else {
390 $scope.$broadcast('removeCabecera', 'Bomba:'); 383 $scope.$broadcast('removeCabecera', 'Bomba:');
391 $scope.$broadcast('removeCabecera', 'Kilometros:'); 384 $scope.$broadcast('removeCabecera', 'Kilometros:');
392 $scope.notaPedido.bomba = false; 385 $scope.notaPedido.bomba = false;
393 $scope.notaPedido.kilometros = null; 386 $scope.notaPedido.kilometros = null;
394 } 387 }
395 }, function() { 388 }, function() {
396 $scope.seleccionarTransportista(); 389 $scope.seleccionarTransportista();
397 } 390 }
398 ); 391 );
399 } 392 }
400 }); 393 });
401 }; 394 };
402 395
403 $scope.seleccionarVendedor = function(callback, ocultarVendedor) { 396 $scope.seleccionarVendedor = function(callback, ocultarVendedor) {
404 if (APP === 'distribuidor' || ocultarVendedor) { 397 if (APP === 'distribuidor' || ocultarVendedor) {
405 callback(); 398 callback();
406 return; 399 return;
407 } 400 }
408 401
409 if (validarNotaRemitada()) { 402 if (validarNotaRemitada()) {
410 var parametrosModal = { 403 var parametrosModal = {
411 titulo: 'Búsqueda vendedores', 404 titulo: 'Búsqueda vendedores',
412 query: '/vendedor', 405 query: '/vendedor',
413 columnas: [ 406 columnas: [
414 { 407 {
415 propiedad: 'NUM', 408 propiedad: 'NUM',
416 nombre: 'Código', 409 nombre: 'Código',
417 filtro: { 410 filtro: {
418 nombre: 'rellenarDigitos', 411 nombre: 'rellenarDigitos',
419 parametro: 3 412 parametro: 3
420 } 413 }
421 }, 414 },
422 { 415 {
423 propiedad: 'NOM', 416 propiedad: 'NOM',
424 nombre: 'Nombre' 417 nombre: 'Nombre'
425 } 418 }
426 ], 419 ],
427 size: 'md' 420 size: 'md'
428 }; 421 };
429 focaModalService.modal(parametrosModal).then( 422 focaModalService.modal(parametrosModal).then(
430 function(vendedor) { 423 function(vendedor) {
431 $scope.$broadcast('addCabecera', { 424 $scope.$broadcast('addCabecera', {
432 label: 'Vendedor:', 425 label: 'Vendedor:',
433 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' + 426 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' +
434 vendedor.NOM 427 vendedor.NOM
435 }); 428 });
436 $scope.notaPedido.vendedor = vendedor; 429 $scope.notaPedido.vendedor = vendedor;
437 deleteCliente(); 430 deleteCliente();
438 callback(); 431 callback();
439 }, function() {} 432 }, function() {}
440 ); 433 );
441 } 434 }
442 }; 435 };
443 436
444 $scope.seleccionarCliente = function(ocultarVendedor) { 437 $scope.seleccionarCliente = function(ocultarVendedor) {
445 $scope.seleccionarVendedor(function() { 438 $scope.seleccionarVendedor(function() {
446 if (validarNotaRemitada()) { 439 if (validarNotaRemitada()) {
447 var modalInstance = $uibModal.open( 440 var modalInstance = $uibModal.open(
448 { 441 {
449 ariaLabelledBy: 'Busqueda de Cliente', 442 ariaLabelledBy: 'Busqueda de Cliente',
450 templateUrl: 'foca-busqueda-cliente-modal.html', 443 templateUrl: 'foca-busqueda-cliente-modal.html',
451 controller: 'focaBusquedaClienteModalController', 444 controller: 'focaBusquedaClienteModalController',
452 resolve: { 445 resolve: {
453 vendedor: function() { return $scope.notaPedido.vendedor; }, 446 vendedor: function() { return $scope.notaPedido.vendedor; },
454 cobrador: function() { return null; } 447 cobrador: function() { return null; }
455 }, 448 },
456 size: 'lg' 449 size: 'lg'
457 } 450 }
458 ); 451 );
459 modalInstance.result.then( 452 modalInstance.result.then(
460 function(cliente) { 453 function(cliente) {
461 $scope.abrirModalDomicilios(cliente); 454 $scope.abrirModalDomicilios(cliente);
462 $scope.cliente = cliente; 455 $scope.cliente = cliente;
463 }, function() { 456 }, function() {
464 if (APP !== 'distribuidor') $scope.seleccionarCliente(); 457 if (APP !== 'distribuidor') $scope.seleccionarCliente();
465 } 458 }
466 ); 459 );
467 } 460 }
468 }, ocultarVendedor); 461 }, ocultarVendedor);
469 }; 462 };
470 463
471 $scope.seleccionarProveedor = function(callback) { 464 $scope.abrirModalProveedores = function(callback) {
472 if (validarNotaRemitada()) { 465 if (validarNotaRemitada()) {
473 var parametrosModal = { 466 var parametrosModal = {
474 titulo: 'Búsqueda de Proveedor', 467 titulo: 'Búsqueda de Proveedor',
475 query: '/proveedor', 468 query: '/proveedor',
476 columnas: [ 469 columnas: [
477 { 470 {
478 nombre: 'Código', 471 nombre: 'Código',
479 propiedad: 'COD', 472 propiedad: 'COD',
480 filtro: { 473 filtro: {
481 nombre: 'rellenarDigitos', 474 nombre: 'rellenarDigitos',
482 parametro: 5 475 parametro: 5
483 } 476 }
484 }, 477 },
485 { 478 {
486 nombre: 'Nombre', 479 nombre: 'Nombre',
487 propiedad: 'NOM' 480 propiedad: 'NOM'
488 }, 481 },
489 { 482 {
490 nombre: 'CUIT', 483 nombre: 'CUIT',
491 propiedad: 'CUIT' 484 propiedad: 'CUIT'
492 } 485 }
493 ], 486 ],
494 tipo: 'POST', 487 tipo: 'POST',
495 json: {razonCuitCod: ''} 488 json: {razonCuitCod: ''}
496 }; 489 };
497 focaModalService.modal(parametrosModal).then( 490 focaModalService.modal(parametrosModal).then(
498 function(proveedor) { 491 function(proveedor) {
499 $scope.notaPedido.proveedor = proveedor; 492 $scope.notaPedido.proveedor = proveedor;
500 $scope.$broadcast('addCabecera', { 493 $scope.$broadcast('addCabecera', {
501 label: 'Proveedor:', 494 label: 'Proveedor:',
502 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' + 495 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' +
503 proveedor.NOM 496 proveedor.NOM
504 }); 497 });
505 callback(); 498 callback();
506 }, function() { 499 }, function() {
507 500
508 } 501 }
509 ); 502 );
510 } 503 }
511 }; 504 };
512 505
513 $scope.abrirModalDomicilios = function(cliente) { 506 $scope.abrirModalDomicilios = function(cliente) {
514 var modalInstanceDomicilio = $uibModal.open( 507 var modalInstanceDomicilio = $uibModal.open(
515 { 508 {
516 ariaLabelledBy: 'Busqueda de Domicilios', 509 ariaLabelledBy: 'Busqueda de Domicilios',
517 templateUrl: 'modal-domicilio.html', 510 templateUrl: 'modal-domicilio.html',
518 controller: 'focaModalDomicilioController', 511 controller: 'focaModalDomicilioController',
519 resolve: { 512 resolve: {
520 idCliente: function() { return cliente.cod; }, 513 idCliente: function() { return cliente.cod; },
521 esNuevo: function() { return cliente.esNuevo; } 514 esNuevo: function() { return cliente.esNuevo; }
522 }, 515 },
523 size: 'lg', 516 size: 'lg',
524 } 517 }
525 ); 518 );
526 modalInstanceDomicilio.result.then( 519 modalInstanceDomicilio.result.then(
527 function(domicilio) { 520 function(domicilio) {
528 $scope.notaPedido.domicilio = domicilio; 521 $scope.notaPedido.domicilio = domicilio;
529 $scope.notaPedido.cliente = { 522 $scope.notaPedido.cliente = {
530 COD: cliente.cod, 523 COD: cliente.cod,
531 CUIT: cliente.cuit, 524 CUIT: cliente.cuit,
532 NOM: cliente.nom, 525 NOM: cliente.nom,
533 MOD: cliente.mod 526 MOD: cliente.mod
534 }; 527 };
535 var domicilioStamp = 528 var domicilioStamp =
536 domicilio.Calle + ' ' + domicilio.Numero + ', ' + 529 domicilio.Calle + ' ' + domicilio.Numero + ', ' +
537 domicilio.Localidad + ', ' + domicilio.Provincia; 530 domicilio.Localidad + ', ' + domicilio.Provincia;
538 $scope.notaPedido.domicilioStamp = domicilioStamp; 531 $scope.notaPedido.domicilioStamp = domicilioStamp;
539 532
540 $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntosDescarga; 533 $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntosDescarga;
541 534
542 $scope.$broadcast('addCabecera', { 535 $scope.$broadcast('addCabecera', {
543 label: 'Cliente:', 536 label: 'Cliente:',
544 valor: $filter('rellenarDigitos')(cliente.cod, 5) + ' - ' + cliente.nom 537 valor: $filter('rellenarDigitos')(cliente.cod, 5) + ' - ' + cliente.nom
545 }); 538 });
546 $scope.$broadcast('addCabecera', { 539 $scope.$broadcast('addCabecera', {
547 label: 'Domicilio:', 540 label: 'Domicilio:',
548 valor: domicilioStamp 541 valor: domicilioStamp
549 }); 542 });
550 if (domicilio.verPuntos) { 543 if (domicilio.verPuntos) {
551 delete $scope.notaPedido.domicilio.verPuntos; 544 delete $scope.notaPedido.domicilio.verPuntos;
552 $scope.seleccionarPuntosDeDescarga(); 545 $scope.seleccionarPuntosDeDescarga();
553 } else { 546 } else {
554 crearNotaPedidoService 547 crearNotaPedidoService
555 .getPuntosDescargaByClienDom(domicilio.id, cliente.cod) 548 .getPuntosDescargaByClienDom(domicilio.id, cliente.cod)
556 .then(function(res) { 549 .then(function(res) {
557 if (res.data.length) $scope.seleccionarPuntosDeDescarga(); 550 if (res.data.length) $scope.seleccionarPuntosDeDescarga();
558 }); 551 });
559 } 552 }
560 }, function() { 553 }, function() {
561 $scope.seleccionarCliente(true); 554 $scope.seleccionarCliente(true);
562 return; 555 return;
563 } 556 }
564 ); 557 );
565 }; 558 };
566 559
567 $scope.getTotal = function() { 560 $scope.getTotal = function() {
568 var total = 0; 561 var total = 0;
569 if ($scope.notaPedido.articulosNotaPedido) { 562 if ($scope.notaPedido.articulosNotaPedido) {
570 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido; 563 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido;
571 for (var i = 0; i < arrayTempArticulos.length; i++) { 564 for (var i = 0; i < arrayTempArticulos.length; i++) {
572 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 565 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
573 } 566 }
574 } 567 }
575
576 return parseFloat(total.toFixed(2)); 568 return parseFloat(total.toFixed(2));
577 }; 569 };
578 570
579 $scope.getSubTotal = function() { 571 $scope.getSubTotal = function() {
580 if ($scope.articuloACargar) { 572 if ($scope.articuloACargar) {
581 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 573 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
582 } 574 }
583 }; 575 };
584 576
585 $scope.seleccionarPreciosYCondiciones = function() { 577 $scope.seleccionarPreciosYCondiciones = function() {
586 if (!$scope.notaPedido.cliente.COD) { 578 if (!$scope.notaPedido.cliente.COD) {
587 focaModalService.alert('Primero seleccione un cliente'); 579 focaModalService.alert('Primero seleccione un cliente');
588 return; 580 return;
589 } 581 }
590 if(validarNotaRemitada()) { 582 if (validarNotaRemitada()) {
591 var modalInstance = $uibModal.open( 583 var modalInstance = $uibModal.open(
592 { 584 {
593 ariaLabelledBy: 'Busqueda de Precio Condición', 585 ariaLabelledBy: 'Busqueda de Precio Condición',
594 templateUrl: 'modal-precio-condicion.html', 586 templateUrl: 'modal-precio-condicion.html',
595 controller: 'focaModalPrecioCondicionController', 587 controller: 'focaModalPrecioCondicionController',
596 size: 'lg', 588 size: 'lg',
597 resolve: { 589 resolve: {
598 idListaPrecio: function() { 590 idListaPrecio: function() {
599 return $scope.notaPedido.cliente.MOD || null; 591 return $scope.notaPedido.cliente.MOD || null;
600 } 592 }
601 } 593 }
602 } 594 }
603 ); 595 );
604 modalInstance.result.then( 596 modalInstance.result.then(
605 function(precioCondicion) { 597 function(precioCondicion) {
606 var cabecera = ''; 598 var cabecera = '';
607 var plazosConcat = ''; 599 var plazosConcat = '';
608 if (!Array.isArray(precioCondicion)) { 600 if (!Array.isArray(precioCondicion)) {
609 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago; 601 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago;
610 $scope.notaPedido.precioCondicion = precioCondicion; 602 $scope.notaPedido.precioCondicion = precioCondicion;
611 $scope.notaPedido.idPrecioCondicion = precioCondicion.id; 603 $scope.notaPedido.idPrecioCondicion = precioCondicion.id;
612 $scope.idLista = precioCondicion.idListaPrecio; 604 $scope.idLista = precioCondicion.idListaPrecio;
613 for (var i = 0; i < precioCondicion.plazoPago.length; i++) { 605 for (var i = 0; i < precioCondicion.plazoPago.length; i++) {
614 plazosConcat += precioCondicion.plazoPago[i].dias + ' '; 606 plazosConcat += precioCondicion.plazoPago[i].dias + ' ';
615 } 607 }
616 cabecera = $filter('rellenarDigitos')(precioCondicion.id, 4) + 608 cabecera = $filter('rellenarDigitos')(precioCondicion.id, 4) +
617 ' - ' + precioCondicion.nombre + ' ' + plazosConcat.trim(); 609 ' - ' + precioCondicion.nombre + ' ' + plazosConcat.trim();
618 } else { //Cuando se ingresan los plazos manualmente 610 } else { //Cuando se ingresan los plazos manualmente
619 $scope.notaPedido.idPrecioCondicion = 0; 611 $scope.notaPedido.idPrecioCondicion = 0;
620 //-1, el modal productos busca todos los productos 612 //-1, el modal productos busca todos los productos
621 $scope.idLista = -1; 613 $scope.idLista = -1;
622 $scope.notaPedido.notaPedidoPlazo = precioCondicion; 614 $scope.notaPedido.notaPedidoPlazo = precioCondicion;
623 for (var j = 0; j < precioCondicion.length; j++) { 615 for (var j = 0; j < precioCondicion.length; j++) {
624 plazosConcat += precioCondicion[j].dias + ' '; 616 plazosConcat += precioCondicion[j].dias + ' ';
625 } 617 }
626 cabecera = 'Ingreso manual ' + plazosConcat.trim(); 618 cabecera = 'Ingreso manual ' + plazosConcat.trim();
627 } 619 }
628 $scope.notaPedido.articulosNotaPedido = []; 620 $scope.notaPedido.articulosNotaPedido = [];
629 $scope.$broadcast('addCabecera', { 621 $scope.$broadcast('addCabecera', {
630 label: 'Precios y condiciones:', 622 label: 'Precios y condiciones:',
631 valor: cabecera 623 valor: cabecera
632 }); 624 });
633 }, function() { 625 }, function() {
634 626
635 } 627 }
636 ); 628 );
637 } 629 }
638 }; 630 };
639 631
640 $scope.seleccionarMoneda = function() { 632 $scope.seleccionarMoneda = function() {
641 if (validarNotaRemitada()) { 633 if (validarNotaRemitada()) {
642 var parametrosModal = { 634 var parametrosModal = {
643 titulo: 'Búsqueda de monedas', 635 titulo: 'Búsqueda de monedas',
644 query: '/moneda', 636 query: '/moneda',
645 columnas: [ 637 columnas: [
646 { 638 {
647 propiedad: 'DETALLE', 639 propiedad: 'DETALLE',
648 nombre: 'Nombre' 640 nombre: 'Nombre'
649 }, 641 },
650 { 642 {
651 propiedad: 'SIMBOLO', 643 propiedad: 'SIMBOLO',
652 nombre: 'Símbolo' 644 nombre: 'Símbolo'
653 } 645 }
654 ], 646 ],
655 size: 'md' 647 size: 'md'
656 }; 648 };
657 focaModalService.modal(parametrosModal).then( 649 focaModalService.modal(parametrosModal).then(
658 function(moneda) { 650 function(moneda) {
659 $scope.abrirModalCotizacion(moneda); 651 $scope.abrirModalCotizacion(moneda);
660 }, function() { 652 }, function() {
661 653
662 } 654 }
663 ); 655 );
664 } 656 }
665 }; 657 };
666 658
667 $scope.seleccionarObservaciones = function() { 659 $scope.seleccionarObservaciones = function() {
668 var observacion = { 660 var observacion = {
669 titulo: 'Ingrese Observaciones', 661 titulo: 'Ingrese Observaciones',
670 value: $scope.notaPedido.observaciones, 662 value: $scope.notaPedido.observaciones,
671 maxlength: 155, 663 maxlength: 155,
672 textarea: true 664 textarea: true
673 }; 665 };
674 666
675 focaModalService 667 focaModalService
676 .prompt(observacion) 668 .prompt(observacion)
677 .then(function(observaciones) { 669 .then(function(observaciones) {
678 $scope.$broadcast('addCabecera', {
679 label: 'Observaciones:',
680 valor: observaciones
681 });
682 $scope.notaPedido.observaciones = observaciones; 670 $scope.notaPedido.observaciones = observaciones;
683 }); 671 });
684 }; 672 };
685 673
686 $scope.abrirModalCotizacion = function(moneda) { 674 $scope.abrirModalCotizacion = function(moneda) {
687 var modalInstance = $uibModal.open( 675 var modalInstance = $uibModal.open(
688 { 676 {
689 ariaLabelledBy: 'Busqueda de Cotización', 677 ariaLabelledBy: 'Busqueda de Cotización',
690 templateUrl: 'modal-cotizacion.html', 678 templateUrl: 'modal-cotizacion.html',
691 controller: 'focaModalCotizacionController', 679 controller: 'focaModalCotizacionController',
692 size: 'lg', 680 size: 'lg',
693 resolve: { 681 resolve: {
694 idMoneda: function() { 682 idMoneda: function() {
695 return moneda.ID; 683 return moneda.ID;
696 } 684 }
697 } 685 }
698 } 686 }
699 ); 687 );
700 modalInstance.result.then( 688 modalInstance.result.then(
701 function(cotizacion) { 689 function(cotizacion) {
702 var articulosTablaTemp = $scope.notaPedido.articulosNotaPedido || []; 690 var articulosTablaTemp = $scope.notaPedido.articulosNotaPedido || [];
703 for (var i = 0; i < articulosTablaTemp.length; i++) { 691 for (var i = 0; i < articulosTablaTemp.length; i++) {
704 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio * 692 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio *
705 $scope.notaPedido.cotizacion.VENDEDOR; 693 $scope.notaPedido.cotizacion.VENDEDOR;
706 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio / 694 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio /
707 cotizacion.VENDEDOR; 695 cotizacion.VENDEDOR;
708 } 696 }
709 $scope.notaPedido.articulosNotaPedido = articulosTablaTemp; 697 $scope.notaPedido.articulosNotaPedido = articulosTablaTemp;
710 $scope.notaPedido.cotizacion = cotizacion; 698 $scope.notaPedido.cotizacion = cotizacion;
711 $scope.notaPedido.cotizacion.moneda = moneda; 699 $scope.notaPedido.cotizacion.moneda = moneda;
712 if (moneda.DETALLE === 'PESOS ARGENTINOS') { 700 if (moneda.DETALLE === 'PESOS ARGENTINOS') {
713 $scope.$broadcast('removeCabecera', 'Moneda:'); 701 $scope.$broadcast('removeCabecera', 'Moneda:');
714 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 702 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
715 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 703 $scope.$broadcast('removeCabecera', 'Cotizacion:');
716 } else { 704 } else {
717 $scope.$broadcast('addCabecera', { 705 $scope.$broadcast('addCabecera', {
718 label: 'Moneda:', 706 label: 'Moneda:',
719 valor: moneda.DETALLE 707 valor: moneda.DETALLE
720 }); 708 });
721 $scope.$broadcast('addCabecera', { 709 $scope.$broadcast('addCabecera', {
722 label: 'Fecha cotizacion:', 710 label: 'Fecha cotizacion:',
723 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy') 711 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy')
724 }); 712 });
725 $scope.$broadcast('addCabecera', { 713 $scope.$broadcast('addCabecera', {
726 label: 'Cotizacion:', 714 label: 'Cotizacion:',
727 valor: $filter('number')(cotizacion.VENDEDOR, '2') 715 valor: $filter('number')(cotizacion.VENDEDOR, '2')
728 }); 716 });
729 } 717 }
730 }, function() { 718 }, function() {
731 719
732 } 720 }
733 ); 721 );
734 }; 722 };
735 723
736 $scope.agregarATabla = function(key) { 724 $scope.agregarATabla = function(key) {
737 if (key === 13) { 725 if (key === 13) {
738 if ($scope.articuloACargar.cantidad === undefined || 726 if ($scope.articuloACargar.cantidad === undefined ||
739 $scope.articuloACargar.cantidad === 0 || 727 $scope.articuloACargar.cantidad === 0 ||
740 $scope.articuloACargar.cantidad === null ) { 728 $scope.articuloACargar.cantidad === null ) {
741 focaModalService.alert('El valor debe ser al menos 1'); 729 focaModalService.alert('El valor debe ser al menos 1');
742 return; 730 return;
743 } 731 }
744 delete $scope.articuloACargar.sectorCodigo; 732 delete $scope.articuloACargar.sectorCodigo;
745 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar); 733 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar);
746 $scope.cargando = true; 734 $scope.cargando = true;
747 } 735 }
748 }; 736 };
749 737
750 $scope.quitarArticulo = function(key) { 738 $scope.quitarArticulo = function(key) {
751 $scope.notaPedido.articulosNotaPedido.splice(key, 1); 739 $scope.notaPedido.articulosNotaPedido.splice(key, 1);
752 }; 740 };
753 741
754 $scope.editarArticulo = function(key, articulo) { 742 $scope.editarArticulo = function(key, articulo) {
755 if (key === 13) { 743 if (key === 13) {
756 if (articulo.cantidad === null || articulo.cantidad === 0 || 744 if (articulo.cantidad === null || articulo.cantidad === 0 ||
757 articulo.cantidad === undefined) { 745 articulo.cantidad === undefined) {
758 focaModalService.alert('El valor debe ser al menos 1'); 746 focaModalService.alert('El valor debe ser al menos 1');
759 return; 747 return;
760 } 748 }
761 articulo.editCantidad = false; 749 articulo.editCantidad = false;
762 articulo.editPrecio = false; 750 articulo.editPrecio = false;
763 } 751 }
764 }; 752 };
765 753
766 $scope.cambioEdit = function(articulo, propiedad) { 754 $scope.cambioEdit = function(articulo, propiedad) {
767 if (propiedad === 'cantidad') { 755 if (propiedad === 'cantidad') {
768 articulo.editCantidad = true; 756 articulo.editCantidad = true;
769 } else if (propiedad === 'precio') { 757 } else if (propiedad === 'precio') {
770 articulo.editPrecio = true; 758 articulo.editPrecio = true;
771 } 759 }
772 }; 760 };
773 761
774 $scope.resetFilter = function() { 762 $scope.resetFilter = function() {
775 $scope.articuloACargar = {}; 763 $scope.articuloACargar = {};
776 $scope.cargando = true; 764 $scope.cargando = true;
777 }; 765 };
778 //Recibe aviso si el teclado está en uso 766 //Recibe aviso si el teclado está en uso
779 $rootScope.$on('usarTeclado', function(event, data) { 767 $rootScope.$on('usarTeclado', function(event, data) {
780 if (data) { 768 if (data) {
781 $scope.mostrarTeclado = true; 769 $scope.mostrarTeclado = true;
782 return; 770 return;
783 } 771 }
784 $scope.mostrarTeclado = false; 772 $scope.mostrarTeclado = false;
785 }); 773 });
786 774
787 $scope.selectFocus = function($event) { 775 $scope.selectFocus = function($event) {
788 // Si el teclado esta en uso no selecciona el valor 776 // Si el teclado esta en uso no selecciona el valor
789 if ($scope.mostrarTeclado) { 777 if ($scope.mostrarTeclado) {
790 return; 778 return;
791 } 779 }
792 $event.target.select(); 780 $event.target.select();
793 }; 781 };
794 782
795 $scope.salir = function() { 783 $scope.salir = function() {
796 $location.path('/'); 784 $location.path('/');
797 }; 785 };
798 786
799 $scope.parsearATexto = function(articulo) { 787 $scope.parsearATexto = function(articulo) {
800 articulo.cantidad = parseFloat(articulo.cantidad); 788 articulo.cantidad = parseFloat(articulo.cantidad);
801 articulo.precio = parseFloat(articulo.precio); 789 articulo.precio = parseFloat(articulo.precio);
802 }; 790 };
803 791
804 function setearNotaPedido(notaPedido) { 792 function setearNotaPedido(notaPedido) {
805 //añado cabeceras 793 //añado cabeceras
806 $scope.notaPedido = notaPedido; 794 $scope.notaPedido = notaPedido;
795 if (!$scope.notaPedido.domicilio) {
796 $scope.notaPedido.domicilio = {
797 id: $scope.notaPedido.idDomicilio
798 };
799 }
807 $scope.$broadcast('removeCabecera', 'Bomba:'); 800 $scope.$broadcast('removeCabecera', 'Bomba:');
808 $scope.$broadcast('removeCabecera', 'Kilometros:'); 801 $scope.$broadcast('removeCabecera', 'Kilometros:');
802 $scope.$broadcast('cleanCabecera');
809 803
810 var cabeceras = []; 804 var cabeceras = [];
811 805
812 if (notaPedido.cotizacion) { 806 if (notaPedido.cotizacion.moneda.CODIGO_AFIP !== 'PES') {
813 cabeceras.push({ 807 cabeceras.push({
814 label: 'Moneda:', 808 label: 'Moneda:',
815 valor: notaPedido.cotizacion.moneda.DETALLE 809 valor: notaPedido.cotizacion.moneda.DETALLE
816 }); 810 });
817 cabeceras.push({ 811 cabeceras.push({
818 label: 'Fecha cotizacion:', 812 label: 'Fecha cotizacion:',
819 valor: $filter('date')(notaPedido.cotizacion.FECHA, 813 valor: $filter('date')(notaPedido.cotizacion.FECHA,
820 'dd/MM/yyyy') 814 'dd/MM/yyyy')
821 }); 815 });
822 cabeceras.push({ 816 cabeceras.push({
823 label: 'Cotizacion:', 817 label: 'Cotizacion:',
824 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR, 818 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR,
825 '2') 819 '2')
826 }); 820 });
827 } 821 }
828 822
823 if (notaPedido.vendedor.NUM) {
824 cabeceras.push({
825 label: 'Vendedor:',
826 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) +
827 ' - ' + notaPedido.vendedor.NOM
828 });
829 }
830
829 if (notaPedido.cliente.COD) { 831 if (notaPedido.cliente.COD) {
830 cabeceras.push({ 832 cabeceras.push({
831 label: 'Cliente:', 833 label: 'Cliente:',
832 valor: notaPedido.cliente.NOM 834 valor: notaPedido.cliente.NOM
833 }); 835 });
834 cabeceras.push({ 836 cabeceras.push({
835 label: 'Domicilio:', 837 label: 'Domicilio:',
836 valor: notaPedido.domicilioStamp 838 valor: notaPedido.domicilioStamp
837 }); 839 });
838 } 840 }
839
840 if (notaPedido.vendedor.NUM) {
841 cabeceras.push({
842 label: 'Vendedor:',
843 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) +
844 ' - ' + notaPedido.vendedor.NOM
845 });
846 }
847 841
848 if (notaPedido.proveedor.COD) { 842 if (notaPedido.proveedor.COD) {
849 cabeceras.push({ 843 cabeceras.push({
850 label: 'Proveedor:', 844 label: 'Proveedor:',
851 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) + 845 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) +
852 ' - ' + notaPedido.proveedor.NOM 846 ' - ' + notaPedido.proveedor.NOM
853 }); 847 });
854 } 848 }
855 849
856 if (notaPedido.notaPedidoPlazo.length) { 850 if (notaPedido.notaPedidoPlazo.length) {
857 cabeceras.push({ 851 cabeceras.push({
858 label: 'Precios y condiciones:', 852 label: 'Precios y condiciones:',
859 valor: valorPrecioCondicion() + ' ' + 853 valor: valorPrecioCondicion() + ' ' +
860 notaPedidoBusinessService 854 notaPedidoBusinessService
861 .plazoToString(notaPedido.notaPedidoPlazo) 855 .plazoToString(notaPedido.notaPedidoPlazo)
862 }); 856 });
863 } 857 }
864 858
865 if (notaPedido.flete !== undefined) { 859 if (notaPedido.flete !== undefined) {
866 cabeceras.push({ 860 cabeceras.push({
867 label: 'Flete:', 861 label: 'Flete:',
868 valor: notaPedido.fob === 1 ? 'FOB' : ( 862 valor: notaPedido.fob === 1 ? 'FOB' : (
869 notaPedido.flete === 1 ? 'Si' : 'No') 863 notaPedido.flete === 1 ? 'Si' : 'No')
870 }); 864 });
871 } 865 }
872 866
873 function valorPrecioCondicion() { 867 function valorPrecioCondicion() {
874 if (notaPedido.idPrecioCondicion > 0) { 868 if (notaPedido.idPrecioCondicion > 0) {
875 return notaPedido.precioCondicion.nombre; 869 return notaPedido.precioCondicion.nombre;
876 } else { 870 } else {
877 return 'Ingreso Manual'; 871 return 'Ingreso Manual';
878 } 872 }
879 } 873 }
880 874
881 if (notaPedido.flete === 1) { 875 if (notaPedido.flete === 1) {
882 var cabeceraBomba = { 876 var cabeceraBomba = {
883 label: 'Bomba:', 877 label: 'Bomba:',
884 valor: notaPedido.bomba === 1 ? 'Si' : 'No' 878 valor: notaPedido.bomba === 1 ? 'Si' : 'No'
885 }; 879 };
886 if (notaPedido.kilometros) { 880 if (notaPedido.kilometros) {
887 var cabeceraKilometros = { 881 var cabeceraKilometros = {
888 label: 'Kilometros:', 882 label: 'Kilometros:',
889 valor: notaPedido.kilometros 883 valor: notaPedido.kilometros
890 }; 884 };
891 cabeceras.push(cabeceraKilometros); 885 cabeceras.push(cabeceraKilometros);
892 } 886 }
893 cabeceras.push(cabeceraBomba); 887 cabeceras.push(cabeceraBomba);
894 } 888 }
895 889
896 notaPedidoBusinessService.calcularArticulos($scope.notaPedido.articulosNotaPedido,
897 notaPedido.cotizacion.VENDEDOR);
898
899 if (notaPedido.idPrecioCondicion > 0) { 890 if (notaPedido.idPrecioCondicion > 0) {
900 $scope.idLista = notaPedido.precioCondicion.idListaPrecio; 891 $scope.idLista = notaPedido.precioCondicion.idListaPrecio;
901 } else { 892 } else {
902 $scope.idLista = -1; 893 $scope.idLista = -1;
903 } 894 }
904 895
905 $scope.puntoVenta = $filter('rellenarDigitos')( 896 $scope.puntoVenta = $filter('rellenarDigitos')(
906 notaPedido.sucursal, 4 897 notaPedido.sucursal, 4
907 ); 898 );
908 899
909 $scope.comprobante = $filter('rellenarDigitos')( 900 $scope.comprobante = $filter('rellenarDigitos')(
910 notaPedido.numeroNotaPedido, 8 901 notaPedido.numeroNotaPedido, 8
911 ); 902 );
912 903
913 $scope.notaPedido.notaPedidoPuntoDescarga = 904 if (notaPedido.notaPedidoPuntoDescarga) {
914 formatearPuntosDescarga(notaPedido.notaPedidoPuntoDescarga || []); 905 var puntosDescarga = notaPedido.notaPedidoPuntoDescarga
906 cabeceras.push({
907 label: 'Puntos de descarga: ',
908 valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntosDescarga))
909 });
910 }
911
915 addArrayCabecera(cabeceras); 912 addArrayCabecera(cabeceras);
916 } 913 }
917 914
915 function getCabeceraPuntoDescarga(puntosDescarga){
916 var puntosStamp = '';
917 puntosDescarga.forEach(function(punto, idx, arr) {
918 puntosStamp += punto.descripcion;
919 if ((idx + 1) !== arr.length) puntosStamp += ', ';
920 });
921 return puntosStamp;
922 }
923
918 function addArrayCabecera(array) { 924 function addArrayCabecera(array) {
919 for (var i = 0; i < array.length; i++) { 925 for (var i = 0; i < array.length; i++) {
920 $scope.$broadcast('addCabecera', { 926 $scope.$broadcast('addCabecera', {
921 label: array[i].label, 927 label: array[i].label,
922 valor: array[i].valor 928 valor: array[i].valor
923 }); 929 });
924 } 930 }
925 } 931 }
926 932
927 function validarNotaRemitada() { 933 function validarNotaRemitada() {
928 if (!$scope.notaPedido.idRemito) { 934 if (!$scope.notaPedido.idRemito) {
929 return true; 935 return true;
930 } else { 936 } else {
931 focaModalService.alert('No se puede editar una nota de pedido remitada'); 937 focaModalService.alert('No se puede editar una nota de pedido remitada');
932 return false; 938 return false;
933 } 939 }
934 } 940 }
935 941
936 function formatearPuntosDescarga(puntosDescarga) {
937 var result = [];
938
939 puntosDescarga.forEach(function(el) {
940 var puntoDescarga = result.filter(function(resultPunto) {
941 return resultPunto.id === el.idPuntoDescarga;
942 });
943
944 if (puntoDescarga.length) {
945 puntoDescarga[0].articulosAgregados.push({
946 cantidad: el.cantidad,
947 descripcion: el.producto.descripcion,
948 id: el.producto.id
949 });
950 } else {
951 result.push({
952 id: el.puntoDescarga.id,
953 id_cliente: el.puntoDescarga.id_cliente,
954 id_da_config_0: el.puntoDescarga.id_da_config_0,
955 latitud: el.puntoDescarga.latitud,
956 longitud: el.puntoDescarga.longitud,
957 descripcion: el.puntoDescarga.descripcion,
958 articulosAgregados: [
959 {
960 cantidad: el.cantidad,
961 descripcion: el.producto.descripcion,
962 id: el.producto.id
963 }
964 ]
965 });
966 }
967 });
968 return result;
969 }
970
971 function salir() { 942 function salir() {
972 var confirmacion = false; 943 var confirmacion = false;
973 944
974 if (!angular.equals($scope.notaPedido, $scope.inicial)) { 945 if (!angular.equals($scope.notaPedido, $scope.inicial)) {
975 confirmacion = true; 946 confirmacion = true;
976 } 947 }
977 948
978 if (confirmacion) { 949 if (confirmacion) {
979 focaModalService.confirm( 950 focaModalService.confirm(
1 angular.module('focaCrearNotaPedido') 1 angular.module('focaCrearNotaPedido')
2 .factory('crearNotaPedidoService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) { 2 .factory('crearNotaPedidoService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) {
3 var route = API_ENDPOINT.URL; 3 var route = API_ENDPOINT.URL;
4 return { 4 return {
5 crearNotaPedido: function(notaPedido) { 5 crearNotaPedido: function(notaPedido) {
6 return $http.post(route + '/nota-pedido', {notaPedido: notaPedido}); 6 return $http.post(route + '/nota-pedido', {notaPedido: notaPedido});
7 }, 7 },
8 obtenerNotaPedido: function() { 8 obtenerNotaPedido: function() {
9 return $http.get(route +'/nota-pedido'); 9 return $http.get(route +'/nota-pedido');
10 }, 10 },
11 setNotaPedido: function(notaPedido) { 11 setNotaPedido: function(notaPedido) {
12 this.notaPedido = notaPedido; 12 this.notaPedido = notaPedido;
13 }, 13 },
14 clearNotaPedido: function() { 14 clearNotaPedido: function() {
15 this.notaPedido = undefined; 15 this.notaPedido = undefined;
16 }, 16 },
17 getNotaPedido: function() { 17 getNotaPedido: function() {
18 return this.notaPedido; 18 return this.notaPedido;
19 }, 19 },
20 getArticulosByIdNotaPedido: function(id) { 20 getArticulosByIdNotaPedido: function(id) {
21 return $http.get(route+'/articulos/nota-pedido/'+id); 21 return $http.get(route+'/articulos/nota-pedido/'+id);
22 }, 22 },
23 crearArticulosParaNotaPedido: function(articuloNotaPedido) { 23 crearArticulosParaNotaPedido: function(articuloNotaPedido) {
24 return $http.post(route + '/articulos/nota-pedido', 24 return $http.post(route + '/articulos/nota-pedido',
25 {articuloNotaPedido: articuloNotaPedido}); 25 {articuloNotaPedido: articuloNotaPedido});
26 }, 26 },
27 getDomiciliosByIdNotaPedido: function(id) { 27 getDomiciliosByIdNotaPedido: function(id) {
28 return $http.get(route +'/nota-pedido/'+id+'/domicilios'); 28 return $http.get(route +'/nota-pedido/'+id+'/domicilios');
29 }, 29 },
30 getDomiciliosByIdCliente: function(id) { 30 getDomiciliosByIdCliente: function(id) {
31 var idTipoEntrega = 2;//Solo traigo los domicilios que tienen tipo 2 (tipo entrega) 31 var idTipoEntrega = 2;//Solo traigo los domicilios que tienen tipo 2 (tipo entrega)
32 return $http.get(route + '/domicilio/tipo/' + idTipoEntrega + '/cliente/' + id ); 32 return $http.get(route + '/domicilio/tipo/' + idTipoEntrega + '/cliente/' + id );
33 }, 33 },
34 getPrecioCondicion: function() { 34 getPrecioCondicion: function() {
35 return $http.get(route + '/precio-condicion'); 35 return $http.get(route + '/precio-condicion');
36 }, 36 },
37 getPrecioCondicionById: function(id) { 37 getPrecioCondicionById: function(id) {
38 return $http.get(route + '/precio-condicion/' + id); 38 return $http.get(route + '/precio-condicion/' + id);
39 }, 39 },
40 getPlazoPagoByPrecioCondicion: function(id) { 40 getPlazoPagoByPrecioCondicion: function(id) {
41 return $http.get(route + '/plazo-pago/precio-condicion/'+ id); 41 return $http.get(route + '/plazo-pago/precio-condicion/'+ id);
42 }, 42 },
43 crearFlete: function(flete) { 43 crearFlete: function(flete) {
44 return $http.post(route + '/flete', {flete : flete}); 44 return $http.post(route + '/flete', {flete : flete});
45 }, 45 },
46 crearPlazosParaNotaPedido: function(plazos) { 46 crearPlazosParaNotaPedido: function(plazos) {
47 return $http.post(route + '/plazo-pago/nota-pedido', {plazos: plazos}); 47 return $http.post(route + '/plazo-pago/nota-pedido', {plazos: plazos});
48 }, 48 },
49 getCotizacionByIdMoneda: function(id) { 49 getCotizacionByIdMoneda: function(id) {
50 return $http.get(route + '/moneda/' + id); 50 return $http.get(route + '/moneda/' + id);
51 }, 51 },
52 crearEstadoParaNotaPedido: function(estado) { 52 crearEstadoParaNotaPedido: function(estado) {
53 return $http.post(route + '/estado', {estado: estado}); 53 return $http.post(route + '/estado', {estado: estado});
54 }, 54 },
55 getNumeroNotaPedido: function() { 55 getNumeroNotaPedido: function() {
56 return $http.get(route + '/nota-pedido/numero-siguiente'); 56 return $http.get(route + '/nota-pedido/numero-siguiente');
57 }, 57 },
58 getBotonera: function() { 58 getBotonera: function() {
59 var result = [ 59 var result = [
60 { 60 {
61 label: 'Cliente', 61 label: 'Cliente',
62 image: 'cliente.png' 62 image: 'cliente.png'
63 }, 63 },
64 { 64 {
65 label: 'Transportista', 65 label: 'Proveedor',
66 image: 'proveedor.png' 66 image: 'proveedor.png'
67 }, 67 },
68 { 68 {
69 label: 'Moneda', 69 label: 'Moneda',
70 image: 'moneda.png' 70 image: 'moneda.png'
71 }, 71 },
72 { 72 {
73 label: 'Precios y condiciones', 73 label: 'Precios y condiciones',
74 image: 'precios-condiciones.png' 74 image: 'precios-condiciones.png'
75 }, 75 },
76 { 76 {
77 label: 'Productos', 77 label: 'Productos',
78 image: 'productos.png' 78 image: 'productos.png'
79 }, 79 },
80 { 80 {
81 label: 'Observaciones', 81 label: 'Observaciones',
82 image: 'botonObservaciones.png' 82 image: 'botonObservaciones.png'
83 } 83 }
84 ]; 84 ];
85 return result; 85 return result;
86 }, 86 },
87 crearPuntosDescarga: function(puntosDescarga) { 87 crearPuntosDescarga: function(puntosDescarga) {
88 return $http.post(route + '/puntos-descarga/nota-pedido', 88 return $http.post(route + '/puntos-descarga/nota-pedido',
89 {puntosDescarga: puntosDescarga}); 89 {puntosDescarga: puntosDescarga});
90 }, 90 },
91 getPuntosDescargaByClienDom: function(idDomicilio, idCliente) { 91 getPuntosDescargaByClienDom: function(idDomicilio, idCliente) {
92 return $http.get(API_ENDPOINT.URL + '/punto-descarga/' + 92 return $http.get(API_ENDPOINT.URL + '/punto-descarga/' +
93 idDomicilio + '/' + idCliente); 93 idDomicilio + '/' + idCliente);
94 }, 94 },
95 getVendedorById: function(id) { 95 getVendedorById: function(id) {
96 return $http.get(API_ENDPOINT.URL + '/vendedor-cobrador/' + id); 96 return $http.get(API_ENDPOINT.URL + '/vendedor-cobrador/' + id);
97 } 97 }
98 }; 98 };
99 }]); 99 }]);
100 100
src/views/nota-pedido.html
1 <div class="crear-nota-pedido foca-crear row"> 1 <div class="crear-nota-pedido foca-crear row">
2 <foca-cabecera-facturador 2 <foca-cabecera-facturador
3 titulo="'Nota de pedido'" 3 titulo="'Nota de pedido'"
4 numero="puntoVenta + '-' + comprobante" 4 numero="puntoVenta + '-' + comprobante"
5 fecha="notaPedido.fechaCarga" 5 fecha="notaPedido.fechaCarga"
6 class="mb-0 col-lg-12" 6 class="mb-0 col-lg-12"
7 busqueda="seleccionarNotaPedido" 7 busqueda="seleccionarNotaPedido"
8 ></foca-cabecera-facturador> 8 ></foca-cabecera-facturador>
9 <marquee
10 bgcolor="#FF9900"
11 behavior="scroll"
12 direction="left"
13 ng-bind="notaPedido.observaciones"
14 ></marquee>
9 <div class="col-lg-12"> 15 <div class="col-lg-12">
10 <div class="row"> 16 <div class="row">
11 <div class="col-12 col-md-10 col-lg-10 border border-light rounded"> 17 <div class="col-12 col-md-10 col-lg-10 border border-light rounded">
12 <div class="row py-2 botonera-secundaria"> 18 <div class="row py-2 botonera-secundaria">
13 <div class="col-12 foca-facturador-px"> 19 <div class="col-12 foca-facturador-px">
14 <foca-botonera-facturador botones="botonera" extra="5" class="row"></foca-botonera-facturador> 20 <foca-botonera-facturador botones="botonera" extra="5" class="row"></foca-botonera-facturador>
15 </div> 21 </div>
16 </div> 22 </div>
17 <!-- PC --> 23 <!-- PC -->
18 <div class="row grilla-articulo align-items-end d-none d-sm-flex"> 24 <div class="row grilla-articulo align-items-end d-none d-sm-flex">
19 <table class="table tabla-articulo table-striped table-sm mb-0 rounded-bottom"> 25 <table class="table tabla-articulo table-striped table-sm mb-0 rounded-bottom">
20 <thead> 26 <thead>
21 <tr class="d-flex"> 27 <tr class="d-flex">
22 <th valign="middle" class="">#</th> 28 <th valign="middle" class="">#</th>
23 <th valign="middle" class="col">Código</th> 29 <th valign="middle" class="col">Código</th>
24 <th valign="middle" class="col-4">Descripción</th> 30 <th valign="middle" class="col-4">Descripción</th>
25 <th valign="middle" class="col text-right">Cantidad</th> 31 <th valign="middle" class="col text-right">Cantidad</th>
26 <th valign="middle" class="col text-right">Precio Unitario</th> 32 <th valign="middle" class="col text-right">Precio Unitario</th>
27 <th valign="middle" class="col text-right">SubTotal</th> 33 <th valign="middle" class="col text-right">SubTotal</th>
28 <th valign="middle" class="text-right"> 34 <th valign="middle" class="text-right">
29 <button 35 <button
30 class="btn btn-outline-light selectable" 36 class="btn btn-outline-light selectable"
31 ng-click="show = !show; masMenos()" 37 ng-click="show = !show; masMenos()"
32 > 38 >
33 <i 39 <i
34 class="fa fa-chevron-down" 40 class="fa fa-chevron-down"
35 ng-show="show" 41 ng-show="show"
36 aria-hidden="true" 42 aria-hidden="true"
37 > 43 >
38 </i> 44 </i>
39 <i 45 <i
40 class="fa fa-chevron-up" 46 class="fa fa-chevron-up"
41 ng-hide="show" 47 ng-hide="show"
42 aria-hidden="true"> 48 aria-hidden="true">
43 </i> 49 </i>
44 </button> 50 </button>
45 </th> 51 </th>
46 </tr> 52 </tr>
47 </thead> 53 </thead>
48 <tbody class="tabla-articulo-body"> 54 <tbody class="tabla-articulo-body">
49 <tr 55 <tr
50 ng-repeat="(key, articulo) in notaPedido.articulosNotaPedido" 56 ng-repeat="(key, articulo) in notaPedido.articulosNotaPedido"
51 ng-show="show || key == (notaPedido.articulosNotaPedido.length - 1)" 57 ng-show="show || key == (notaPedido.articulosNotaPedido.length - 1)"
52 class="d-flex" 58 class="d-flex"
53 > 59 >
54 <td ng-bind="key + 1"></td> 60 <td ng-bind="key + 1"></td>
55 <td 61 <td
56 class="col" 62 class="col"
57 ng-bind="articulo.sector + '-' + articulo.codigo" 63 ng-bind="articulo.sector + '-' + articulo.codigo"
58 ></td> 64 ></td>
59 <td 65 <td
60 class="col-4" 66 class="col-4"
61 ng-bind="articulo.descripcion" 67 ng-bind="articulo.descripcion"
62 ></td> 68 ></td>
63 <td class="col text-right"> 69 <td class="col text-right">
64 <input 70 <input
65 ng-show="articulo.editCantidad" 71 ng-show="articulo.editCantidad"
66 ng-model="articulo.cantidad" 72 ng-model="articulo.cantidad"
67 class="form-control" 73 class="form-control"
68 foca-tipo-input 74 foca-tipo-input
69 min="1" 75 min="1"
70 step="0.001" 76 step="0.001"
71 foca-focus="articulo.editCantidad" 77 foca-focus="articulo.editCantidad"
72 ng-keypress="editarArticulo($event.keyCode, articulo)" 78 ng-keypress="editarArticulo($event.keyCode, articulo)"
73 ng-focus="selectFocus($event)" 79 ng-focus="selectFocus($event)"
74 teclado-virtual 80 teclado-virtual
75 > 81 >
76 <i 82 <i
77 class="selectable" 83 class="selectable"
78 ng-click="cambioEdit(articulo, 'cantidad')" 84 ng-click="cambioEdit(articulo, 'cantidad')"
79 ng-hide="articulo.editCantidad" 85 ng-hide="articulo.editCantidad"
80 ng-bind="articulo.cantidad"> 86 ng-bind="articulo.cantidad">
81 </i> 87 </i>
82 </td> 88 </td>
83 <td class="col text-right"> 89 <td class="col text-right">
84 <input 90 <input
85 ng-show="articulo.editPrecio" 91 ng-show="articulo.editPrecio"
86 ng-model="articulo.precio" 92 ng-model="articulo.precio"
87 class="form-control" 93 class="form-control"
88 foca-tipo-input 94 foca-tipo-input
89 min="0" 95 min="0"
90 step="0.0001" 96 step="0.0001"
91 foca-focus="articulo.editPrecio" 97 foca-focus="articulo.editPrecio"
92 ng-keypress="editarArticulo($event.keyCode, articulo)" 98 ng-keypress="editarArticulo($event.keyCode, articulo)"
93 ng-focus="selectFocus($event)" 99 ng-focus="selectFocus($event)"
94 teclado-virtual 100 teclado-virtual
95 > 101 >
96 <i 102 <i
97 class="selectable" 103 class="selectable"
98 ng-click="idLista == -1 && cambioEdit(articulo, 'precio')" 104 ng-click="idLista == -1 && cambioEdit(articulo, 'precio')"
99 ng-hide="articulo.editPrecio" 105 ng-hide="articulo.editPrecio"
100 ng-bind="articulo.precio | 106 ng-bind="articulo.precio |
101 number: 4"> 107 number: 4">
102 </i> 108 </i>
103 </td> 109 </td>
104 <td 110 <td
105 class="col text-right" 111 class="col text-right"
106 ng-bind="(articulo.precio * articulo.cantidad) | 112 ng-bind="(articulo.precio * articulo.cantidad) |
107 number: 2"> 113 number: 2">
108 </td> 114 </td>
109 <td class="text-center"> 115 <td class="text-center">
110 <button 116 <button
111 ng-show="articulo.editCantidad || articulo.editPrecio" 117 ng-show="articulo.editCantidad || articulo.editPrecio"
112 class="btn btn-outline-light" 118 class="btn btn-outline-light"
113 ng-click="editarArticulo(13, articulo)" 119 ng-click="editarArticulo(13, articulo)"
114 > 120 >
115 <i class="fa fa-save"></i> 121 <i class="fa fa-save"></i>
116 </button> 122 </button>
117 <button 123 <button
118 class="btn btn-outline-light" 124 class="btn btn-outline-light"
119 ng-click="quitarArticulo(key)" 125 ng-click="quitarArticulo(key)"
120 > 126 >
121 <i class="fa fa-trash"></i> 127 <i class="fa fa-trash"></i>
122 </button> 128 </button>
123 </td> 129 </td>
124 </tr> 130 </tr>
125 </tbody> 131 </tbody>
126 <tfoot> 132 <tfoot>
127 <tr ng-show="!cargando" class="d-flex"> 133 <tr ng-show="!cargando" class="d-flex">
128 <td 134 <td
129 class="align-middle" 135 class="align-middle"
130 ng-bind="notaPedido.articulosNotaPedido.length + 1" 136 ng-bind="notaPedido.articulosNotaPedido.length + 1"
131 ></td> 137 ></td>
132 <td class="col"> 138 <td class="col">
133 <input 139 <input
134 class="form-control" 140 class="form-control"
135 ng-model="articuloACargar.sectorCodigo" 141 ng-model="articuloACargar.sectorCodigo"
136 readonly 142 readonly
137 > 143 >
138 </td> 144 </td>
139 <td class="col-4 tabla-articulo-descripcion"> 145 <td class="col-4 tabla-articulo-descripcion">
140 <input 146 <input
141 class="form-control" 147 class="form-control"
142 ng-model="articuloACargar.descripcion" 148 ng-model="articuloACargar.descripcion"
143 readonly 149 readonly
144 > 150 >
145 </td> 151 </td>
146 <td class="col text-right"> 152 <td class="col text-right">
147 <input 153 <input
148 class="form-control" 154 class="form-control"
149 foca-tipo-input 155 foca-tipo-input
150 min="1" 156 min="1"
151 step="0.001" 157 step="0.001"
152 ng-model="articuloACargar.cantidad" 158 ng-model="articuloACargar.cantidad"
153 foca-focus="!cargando" 159 foca-focus="!cargando"
154 esc-key="resetFilter()" 160 esc-key="resetFilter()"
155 ng-keypress="agregarATabla($event.keyCode)" 161 ng-keypress="agregarATabla($event.keyCode)"
156 teclado-virtual 162 teclado-virtual
157 > 163 >
158 </td> 164 </td>
159 <td class="col text-right"> 165 <td class="col text-right">
160 <input 166 <input
161 class="form-control" 167 class="form-control"
162 ng-value="articuloACargar.precio | number: 2" 168 ng-value="articuloACargar.precio | number: 2"
163 ng-show="idLista != -1" 169 ng-show="idLista != -1"
164 readonly 170 readonly
165 > 171 >
166 <input 172 <input
167 class="form-control" 173 class="form-control"
168 foca-tipo-input 174 foca-tipo-input
169 min="0" 175 min="0"
170 step="0.0001" 176 step="0.0001"
171 ng-model="articuloACargar.precio" 177 ng-model="articuloACargar.precio"
172 esc-key="resetFilter()" 178 esc-key="resetFilter()"
173 ng-keypress="agregarATabla($event.keyCode)" 179 ng-keypress="agregarATabla($event.keyCode)"
174 ng-show="idLista == -1" 180 ng-show="idLista == -1"
175 teclado-virtual 181 teclado-virtual
176 > 182 >
177 </td> 183 </td>
178 <td class="col text-right"> 184 <td class="col text-right">
179 <input 185 <input
180 class="form-control" 186 class="form-control"
181 ng-value="getSubTotal() | number: 2" 187 ng-value="getSubTotal() | number: 2"
182 readonly 188 readonly
183 ></td> 189 ></td>
184 <td class="text-center align-middle"> 190 <td class="text-center align-middle">
185 <button 191 <button
186 class="btn btn-outline-light" 192 class="btn btn-outline-light"
187 ng-click="agregarATabla(13)" 193 ng-click="agregarATabla(13)"
188 > 194 >
189 <i class="fa fa-save"></i> 195 <i class="fa fa-save"></i>
190 </button> 196 </button>
191 </td> 197 </td>
192 </tr> 198 </tr>
193 <tr class="d-flex"> 199 <tr class="d-flex">
194 <td colspan="4" class="no-border-top"> 200 <td colspan="4" class="no-border-top">
195 <strong>Items:</strong> 201 <strong>Items:</strong>
196 <a ng-bind="notaPedido.articulosNotaPedido.length"></a> 202 <a ng-bind="notaPedido.articulosNotaPedido.length"></a>
197 </td> 203 </td>
198 <td class="text-right ml-auto table-celda-total no-border-top"> 204 <td class="text-right ml-auto table-celda-total no-border-top">
199 <h3>Total:</h3> 205 <h3>Total:</h3>
200 </td> 206 </td>
201 <td class="table-celda-total text-right no-border-top" colspan="1"> 207 <td class="table-celda-total text-right no-border-top" colspan="1">
202 <h3>{{getTotal() | currency: notaPedido.moneda.SIMBOLO}}</h3> 208 <h3>{{getTotal() | currency: notaPedido.cotizacion.moneda.SIMBOLO}}</h3>
203 </td> 209 </td>
204 <td class="text-right no-border-top"> 210 <td class="text-right no-border-top">
205 <button 211 <button
206 type="button" 212 type="button"
207 class="btn btn-default btn-sm" 213 class="btn btn-default btn-sm"
208 > 214 >
209 Totales 215 Totales
210 </button> 216 </button>
211 </td> 217 </td>
212 </tr> 218 </tr>
213 </tfoot> 219 </tfoot>
214 </table> 220 </table>
215 </div> 221 </div>
216 <!-- MOBILE --> 222 <!-- MOBILE -->
217 <div class="row d-sm-none"> 223 <div class="row d-sm-none">
218 <table class="table table-sm table-striped tabla-articulo margin-bottom-mobile"> 224 <table class="table table-sm table-striped tabla-articulo margin-bottom-mobile">
219 <thead> 225 <thead>
220 <tr class="d-flex"> 226 <tr class="d-flex">
221 <th class="">#</th> 227 <th class="">#</th>
222 <th class="col px-0"> 228 <th class="col px-0">
223 <div class="d-flex"> 229 <div class="d-flex">
224 <div class="col-4 px-1">Código</div> 230 <div class="col-4 px-1">Código</div>
225 <div class="col-8 px-1">Descripción</div> 231 <div class="col-8 px-1">Descripción</div>
226 </div> 232 </div>
227 <div class="d-flex"> 233 <div class="d-flex">
228 <div class="col-3 px-1">Cantidad</div> 234 <div class="col-3 px-1">Cantidad</div>
229 <div class="col px-1 text-right">P. Uni.</div> 235 <div class="col px-1 text-right">P. Uni.</div>
230 <div class="col px-1 text-right">Subtotal</div> 236 <div class="col px-1 text-right">Subtotal</div>
231 </div> 237 </div>
232 </th> 238 </th>
233 <th class="text-center tamaño-boton"> 239 <th class="text-center tamaño-boton">
234 &nbsp; 240 &nbsp;
235 </th> 241 </th>
236 </tr> 242 </tr>
237 </thead> 243 </thead>
238 <tbody> 244 <tbody>
239 <tr 245 <tr
240 ng-repeat="(key, articulo) in notaPedido.articulosNotaPedido" 246 ng-repeat="(key, articulo) in notaPedido.articulosNotaPedido"
241 ng-show="show || key == notaPedido.articulosNotaPedido.length - 1" 247 ng-show="show || key == notaPedido.articulosNotaPedido.length - 1"
242 > 248 >
243 <td class="w-100 align-middle d-flex p-0"> 249 <td class="w-100 align-middle d-flex p-0">
244 <div class="align-middle p-1"> 250 <div class="align-middle p-1">
245 <span ng-bind="key+1" class="align-middle"></span> 251 <span ng-bind="key+1" class="align-middle"></span>
246 </div> 252 </div>
247 <div class="col px-0"> 253 <div class="col px-0">
248 <div class="d-flex"> 254 <div class="d-flex">
249 <div class="col-4 px-1"> 255 <div class="col-4 px-1">
250 <span 256 <span
251 ng-bind="articulo.sector + '-' + articulo.codigo" 257 ng-bind="articulo.sector + '-' + articulo.codigo"
252 ></span> 258 ></span>
253 </div> 259 </div>
254 <div class="col-8 px-1"> 260 <div class="col-8 px-1">
255 <span ng-bind="articulo.descripcion"></span> 261 <span ng-bind="articulo.descripcion"></span>
256 </div> 262 </div>
257 </div> 263 </div>
258 <div class="d-flex"> 264 <div class="d-flex">
259 <div class="col-3 px-1"> 265 <div class="col-3 px-1">
260 <span 266 <span
261 ng-bind="'x' + articulo.cantidad" 267 ng-bind="'x' + articulo.cantidad"
262 ng-hide="articulo.editCantidad" 268 ng-hide="articulo.editCantidad"
263 ></span> 269 ></span>
264 <i 270 <i
265 class="fa fa-pencil text-white-50" 271 class="fa fa-pencil text-white-50"
266 aria-hidden="true" 272 aria-hidden="true"
267 ng-hide="articulo.editCantidad" 273 ng-hide="articulo.editCantidad"
268 ng-click="articulo.editCantidad = true" 274 ng-click="articulo.editCantidad = true"
269 ></i> 275 ></i>
270 <input 276 <input
271 ng-show="articulo.editCantidad" 277 ng-show="articulo.editCantidad"
272 ng-model="articulo.cantidad" 278 ng-model="articulo.cantidad"
273 class="form-control" 279 class="form-control"
274 foca-tipo-input 280 foca-tipo-input
275 min="1" 281 min="1"
276 step="0.001" 282 step="0.001"
277 foca-focus="articulo.editCantidad" 283 foca-focus="articulo.editCantidad"
278 ng-keypress="editarArticulo($event.keyCode, articulo)" 284 ng-keypress="editarArticulo($event.keyCode, articulo)"
279 ng-focus="selectFocus($event)" 285 ng-focus="selectFocus($event)"
280 > 286 >
281 </div> 287 </div>
282 <div class="col px-1 text-right"> 288 <div class="col px-1 text-right">
283 <span ng-bind="articulo.precio | 289 <span ng-bind="articulo.precio |
284 currency: notaPedido.moneda.SIMBOLO : 4"></span> 290 currency: notaPedido.moneda.SIMBOLO : 4"></span>
285 ></span> 291 ></span>
286 </div> 292 </div>
287 <div class="col px-1 text-right"> 293 <div class="col px-1 text-right">
288 <span 294 <span
289 ng-bind="(articulo.precio * articulo.cantidad) | 295 ng-bind="(articulo.precio * articulo.cantidad) |
290 currency: notaPedido.moneda.SIMBOLO" 296 currency: notaPedido.moneda.SIMBOLO"
291 > 297 >
292 </span> 298 </span>
293 </div> 299 </div>
294 </div> 300 </div>
295 </div> 301 </div>
296 <div class="align-middle p-1"> 302 <div class="align-middle p-1">
297 <button 303 <button
298 class="btn btn-outline-light" 304 class="btn btn-outline-light"
299 ng-click="quitarArticulo(key)" 305 ng-click="quitarArticulo(key)"
300 > 306 >
301 <i class="fa fa-trash"></i> 307 <i class="fa fa-trash"></i>
302 </button> 308 </button>
303 </div> 309 </div>
304 </td> 310 </td>
305 </tr> 311 </tr>
306 </tbody> 312 </tbody>
307 <tfoot> 313 <tfoot>
308 <!-- CARGANDO ITEM --> 314 <!-- CARGANDO ITEM -->
309 <tr ng-show="!cargando" class="d-flex"> 315 <tr ng-show="!cargando" class="d-flex">
310 <td 316 <td
311 class="align-middle p-1" 317 class="align-middle p-1"
312 ng-bind="notaPedido.articulosNotaPedido.length + 1" 318 ng-bind="notaPedido.articulosNotaPedido.length + 1"
313 ></td> 319 ></td>
314 <td class="col p-0"> 320 <td class="col p-0">
315 <div class="d-flex"> 321 <div class="d-flex">
316 <div class="col-4 px-1"> 322 <div class="col-4 px-1">
317 <span 323 <span
318 ng-bind="articuloACargar.sectorCodigo" 324 ng-bind="articuloACargar.sectorCodigo"
319 ></span> 325 ></span>
320 </div> 326 </div>
321 <div class="col-8 px-1"> 327 <div class="col-8 px-1">
322 <span ng-bind="articuloACargar.descripcion"></span> 328 <span ng-bind="articuloACargar.descripcion"></span>
323 </div> 329 </div>
324 </div> 330 </div>
325 <div class="d-flex"> 331 <div class="d-flex">
326 <div class="col-3 px-1 m-1"> 332 <div class="col-3 px-1 m-1">
327 <input 333 <input
328 class="form-control p-1" 334 class="form-control p-1"
329 foca-tipo-input 335 foca-tipo-input
330 min="1" 336 min="1"
331 ng-model="articuloACargar.cantidad" 337 ng-model="articuloACargar.cantidad"
332 foca-focus="!cargando" 338 foca-focus="!cargando"
333 ng-keypress="agregarATabla($event.keyCode)" 339 ng-keypress="agregarATabla($event.keyCode)"
334 style="height: auto; line-height: 1.1em" 340 style="height: auto; line-height: 1.1em"
335 > 341 >
336 </div> 342 </div>
337 <div class="col px-1 text-right"> 343 <div class="col px-1 text-right">
338 <span ng-bind="articuloACargar.precio | 344 <span ng-bind="articuloACargar.precio |
339 currency: notaPedido.moneda.SIMBOLO : 4" 345 currency: notaPedido.moneda.SIMBOLO : 4"
340 ></span> 346 ></span>
341 </div> 347 </div>
342 <div class="col px-1 text-right"> 348 <div class="col px-1 text-right">
343 <span 349 <span
344 ng-bind="getSubTotal() | 350 ng-bind="getSubTotal() |
345 currency: notaPedido.moneda.SIMBOLO" 351 currency: notaPedido.moneda.SIMBOLO"
346 > 352 >
347 </span> 353 </span>
348 </div> 354 </div>
349 </div> 355 </div>
350 </td> 356 </td>
351 <td class="text-center align-middle"> 357 <td class="text-center align-middle">
352 <button 358 <button
353 class="btn btn-outline-light" 359 class="btn btn-outline-light"
354 ng-click="agregarATabla(13)" 360 ng-click="agregarATabla(13)"
355 > 361 >
356 <i class="fa fa-save"></i> 362 <i class="fa fa-save"></i>
357 </button> 363 </button>
358 </td> 364 </td>
359 </tr> 365 </tr>
360 <!-- TOOGLE EXPANDIR --> 366 <!-- TOOGLE EXPANDIR -->
361 <tr> 367 <tr>
362 <td class="col"> 368 <td class="col">
363 <button 369 <button
364 class="btn btn-outline-light selectable w-100" 370 class="btn btn-outline-light selectable w-100"
365 ng-click="show = !show; masMenos()" 371 ng-click="show = !show; masMenos()"
366 ng-show="notaPedido.articulosNotaPedido.length > 0" 372 ng-show="notaPedido.articulosNotaPedido.length > 0"
367 > 373 >
368 <i 374 <i
369 class="fa fa-chevron-down" 375 class="fa fa-chevron-down"
370 ng-hide="show" 376 ng-hide="show"
371 aria-hidden="true" 377 aria-hidden="true"
372 > 378 >
373 </i> 379 </i>
374 <i 380 <i
375 class="fa fa-chevron-up" 381 class="fa fa-chevron-up"
376 ng-show="show" 382 ng-show="show"
377 aria-hidden="true"> 383 aria-hidden="true">
378 </i> 384 </i>
379 </button> 385 </button>
380 </td> 386 </td>
381 </tr> 387 </tr>
382 <!-- FOOTER --> 388 <!-- FOOTER -->
383 <tr class="d-flex"> 389 <tr class="d-flex">
384 <td class="align-middle no-border-top" colspan="2"> 390 <td class="align-middle no-border-top" colspan="2">
385 <strong>Cantidad Items:</strong> 391 <strong>Cantidad Items:</strong>
386 <a ng-bind="notaPedido.articulosNotaPedido.length"></a> 392 <a ng-bind="notaPedido.articulosNotaPedido.length"></a>
387 </td> 393 </td>
388 <td class="text-right ml-auto table-celda-total no-border-top"> 394 <td class="text-right ml-auto table-celda-total no-border-top">
389 <h3>Total:</h3> 395 <h3>Total:</h3>
390 </td> 396 </td>
391 <td class="table-celda-total text-right no-border-top"> 397 <td class="table-celda-total text-right no-border-top">
392 <h3>{{getTotal() | currency: notaPedido.moneda.SIMBOLO}}</h3> 398 <h3>{{getTotal() | currency: notaPedido.cotizacion.moneda.SIMBOLO}}</h3>
393 </td> 399 </td>
394 </tr> 400 </tr>
395 </tfoot> 401 </tfoot>
396 </table> 402 </table>
397 </div> 403 </div>
398 </div> 404 </div>
399 </div> 405 </div>
400 </div> 406 </div>
401 <div class="row d-md-none fixed-bottom"> 407 <div class="row d-md-none fixed-bottom">
402 <div class="w-100 bg-dark d-flex px-3 acciones-mobile"> 408 <div class="w-100 bg-dark d-flex px-3 acciones-mobile">
403 <span class="ml-3 text-muted" ng-click="salir()">Salir</span> 409 <span class="ml-3 text-muted" ng-click="salir()">Salir</span>
404 <span 410 <span
405 class="mr-3 ml-auto" 411 class="mr-3 ml-auto"
406 ng-class="saveLoading ? 'text-muted' : ''" 412 ng-class="saveLoading ? 'text-muted' : ''"
407 ng-click="crearNotaPedido()" 413 ng-click="crearNotaPedido()"
408 ladda="saveLoading" 414 ladda="saveLoading"
409 data-style="expand-left" 415 data-style="expand-left"
410 >Guardar</span> 416 >Guardar</span>
411 </div> 417 </div>
412 </div> 418 </div>
413 </div> 419 </div>
414 420