Commit 1083a8005ec0d5cd5b826b73d56ec55ea495c9e8

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

Merge branch 'master' into 'develop'

Master

See merge request !59
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/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 55
56 $scope.notaPedido.cotizacion = Object.assign( 56 $scope.notaPedido.cotizacion = Object.assign(
57 {moneda: monedaPorDefecto}, 57 {moneda: monedaPorDefecto},
58 monedaPorDefecto.cotizaciones[0] 58 monedaPorDefecto.cotizaciones[0]
59 ); 59 );
60 $scope.inicial.cotizacion = $scope.notaPedido.cotizacion; 60 $scope.inicial.cotizacion = $scope.notaPedido.cotizacion;
61 }); 61 });
62 62
63 init(); 63 init();
64 $timeout(function() {getLSNotaPedido();}); 64 $timeout(function() {getLSNotaPedido();});
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 } 110 }
111 ); 111 );
112 } 112 }
113 113
114 $scope.inicial = angular.copy($scope.notaPedido); 114 $scope.inicial = angular.copy($scope.notaPedido);
115 } 115 }
116 116
117 $scope.$watch('notaPedido', function(newValue) { 117 $scope.$watch('notaPedido', function(newValue) {
118 focaBotoneraLateralService.setPausarData({ 118 focaBotoneraLateralService.setPausarData({
119 label: 'notaPedido', 119 label: 'notaPedido',
120 val: newValue 120 val: newValue
121 }); 121 });
122 }, true); 122 }, true);
123 123
124 $scope.crearNotaPedido = function() { 124 $scope.crearNotaPedido = function() {
125 if (!$scope.notaPedido.cliente.COD) { 125 if (!$scope.notaPedido.cliente.COD) {
126 focaModalService.alert('Ingrese Cliente'); 126 focaModalService.alert('Ingrese Cliente');
127 return; 127 return;
128 } else if (!$scope.notaPedido.proveedor.COD) { 128 } else if (!$scope.notaPedido.proveedor.COD) {
129 focaModalService.alert('Ingrese Proveedor'); 129 focaModalService.alert('Ingrese Proveedor');
130 return; 130 return;
131 } else if (!$scope.notaPedido.cotizacion.ID) { 131 } else if (!$scope.notaPedido.cotizacion.ID) {
132 focaModalService.alert('Ingrese Cotización'); 132 focaModalService.alert('Ingrese Cotización');
133 return; 133 return;
134 } else if (!$scope.notaPedido.cotizacion.moneda.ID) { 134 } else if (!$scope.notaPedido.cotizacion.moneda.ID) {
135 focaModalService.alert('Ingrese Moneda'); 135 focaModalService.alert('Ingrese Moneda');
136 return; 136 return;
137 } else if (!$scope.notaPedido.notaPedidoPlazo) { 137 } else if (!$scope.notaPedido.notaPedidoPlazo) {
138 focaModalService.alert('Ingrese Precios y Condiciones'); 138 focaModalService.alert('Ingrese Precios y Condiciones');
139 return; 139 return;
140 } else if ( 140 } else if (
141 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null) 141 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null)
142 { 142 {
143 focaModalService.alert('Ingrese Flete'); 143 focaModalService.alert('Ingrese Flete');
144 return; 144 return;
145 } else if (!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto 145 } else if (!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto
146 focaModalService.alert('Ingrese Domicilio'); 146 focaModalService.alert('Ingrese Domicilio');
147 return; 147 return;
148 } else if ($scope.notaPedido.articulosNotaPedido.length === 0) { 148 } else if ($scope.notaPedido.articulosNotaPedido.length === 0) {
149 focaModalService.alert('Debe cargar al menos un articulo'); 149 focaModalService.alert('Debe cargar al menos un articulo');
150 return; 150 return;
151 } 151 }
152 focaBotoneraLateralService.startGuardar(); 152 focaBotoneraLateralService.startGuardar();
153 $scope.saveLoading = true; 153 $scope.saveLoading = true;
154 var notaPedido = { 154 var notaPedido = {
155 id: $scope.notaPedido.id, 155 id: $scope.notaPedido.id,
156 fechaCarga: new Date($scope.notaPedido.fechaCarga) 156 fechaCarga: new Date($scope.notaPedido.fechaCarga)
157 .toISOString().slice(0, 19).replace('T', ' '), 157 .toISOString().slice(0, 19).replace('T', ' '),
158 idVendedor: $scope.notaPedido.vendedor.id, 158 idVendedor: $scope.notaPedido.vendedor.id,
159 idCliente: $scope.notaPedido.cliente.COD, 159 idCliente: $scope.notaPedido.cliente.COD,
160 nombreCliente: $scope.notaPedido.cliente.NOM, 160 nombreCliente: $scope.notaPedido.cliente.NOM,
161 cuitCliente: $scope.notaPedido.cliente.CUIT, 161 cuitCliente: $scope.notaPedido.cliente.CUIT,
162 idProveedor: $scope.notaPedido.proveedor.COD, 162 idProveedor: $scope.notaPedido.proveedor.COD,
163 idDomicilio: $scope.notaPedido.domicilio.id, 163 idDomicilio: $scope.notaPedido.domicilio.id,
164 idCotizacion: $scope.notaPedido.cotizacion.ID, 164 idCotizacion: $scope.notaPedido.cotizacion.ID,
165 idPrecioCondicion: $scope.notaPedido.idPrecioCondicion, 165 idPrecioCondicion: $scope.notaPedido.idPrecioCondicion,
166 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 166 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
167 flete: $scope.notaPedido.flete, 167 flete: $scope.notaPedido.flete,
168 fob: $scope.notaPedido.fob, 168 fob: $scope.notaPedido.fob,
169 bomba: $scope.notaPedido.bomba, 169 bomba: $scope.notaPedido.bomba,
170 kilometros: $scope.notaPedido.kilometros, 170 kilometros: $scope.notaPedido.kilometros,
171 domicilioStamp: $scope.notaPedido.domicilioStamp, 171 domicilioStamp: $scope.notaPedido.domicilioStamp,
172 observaciones: $scope.notaPedido.observaciones, 172 observaciones: $scope.notaPedido.observaciones,
173 estado: 0, 173 estado: 0,
174 total: $scope.getTotal() 174 total: $scope.getTotal()
175 }; 175 };
176 crearNotaPedidoService.crearNotaPedido(notaPedido).then( 176 crearNotaPedidoService.crearNotaPedido(notaPedido).then(
177 function(data) { 177 function(data) {
178 // Al guardar los datos de la nota de pedido logueamos la 178 // Al guardar los datos de la nota de pedido logueamos la
179 // actividad para su seguimiento. 179 // actividad para su seguimiento.
180 //TODO: GUARDAR POSISIONAMIENTO AL EDITAR? 180 //TODO: GUARDAR POSISIONAMIENTO AL EDITAR?
181 focaSeguimientoService.guardarPosicion( 181 focaSeguimientoService.guardarPosicion(
182 'Nota de pedido', 182 'Nota de pedido',
183 data.data.id, 183 data.data.id,
184 '' 184 ''
185 ); 185 );
186 notaPedidoBusinessService.addArticulos( 186 notaPedidoBusinessService.addArticulos(
187 $scope.notaPedido.articulosNotaPedido, 187 $scope.notaPedido.articulosNotaPedido,
188 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR); 188 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR);
189 189
190 if ($scope.notaPedido.notaPedidoPuntoDescarga) { 190 if ($scope.notaPedido.notaPedidoPuntoDescarga) {
191 notaPedidoBusinessService.addPuntosDescarga(data.data.id, 191 notaPedidoBusinessService.addPuntosDescarga(data.data.id,
192 $scope.notaPedido.notaPedidoPuntoDescarga); 192 $scope.notaPedido.notaPedidoPuntoDescarga);
193 } 193 }
194 194
195 var plazos = $scope.notaPedido.notaPedidoPlazo; 195 var plazos = $scope.notaPedido.notaPedidoPlazo;
196 var plazosACrear = []; 196 var plazosACrear = [];
197 plazos.forEach(function(plazo) { 197 plazos.forEach(function(plazo) {
198 plazosACrear.push({ 198 plazosACrear.push({
199 idNotaPedido: data.data.id, 199 idNotaPedido: data.data.id,
200 dias: plazo.dias 200 dias: plazo.dias
201 }); 201 });
202 }); 202 });
203 203
204 if (plazosACrear.length) { 204 if (plazosACrear.length) {
205 crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear); 205 crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear);
206 } 206 }
207 207
208 notaPedidoBusinessService.addEstado(data.data.id, 208 notaPedidoBusinessService.addEstado(data.data.id,
209 $scope.notaPedido.vendedor.id); 209 $scope.notaPedido.vendedor.id);
210 210
211 focaBotoneraLateralService.endGuardar(true); 211 focaBotoneraLateralService.endGuardar(true);
212 $scope.saveLoading = false; 212 $scope.saveLoading = false;
213 213
214 init(); 214 init();
215 }, function(error) { 215 }, function(error) {
216 focaModalService.alert('Hubo un error al crear la nota de pedido'); 216 focaModalService.alert('Hubo un error al crear la nota de pedido');
217 focaBotoneraLateralService.endGuardar(); 217 focaBotoneraLateralService.endGuardar();
218 $scope.saveLoading = false; 218 $scope.saveLoading = false;
219 console.info(error); 219 console.info(error);
220 } 220 }
221 ); 221 );
222 }; 222 };
223 223
224 $scope.seleccionarNotaPedido = function() { 224 $scope.seleccionarNotaPedido = function() {
225 var modalInstance = $uibModal.open( 225 var modalInstance = $uibModal.open(
226 { 226 {
227 ariaLabelledBy: 'Busqueda de Nota de Pedido', 227 ariaLabelledBy: 'Busqueda de Nota de Pedido',
228 templateUrl: 'foca-modal-nota-pedido.html', 228 templateUrl: 'foca-modal-nota-pedido.html',
229 controller: 'focaModalNotaPedidoController', 229 controller: 'focaModalNotaPedidoController',
230 size: 'lg', 230 size: 'lg',
231 resolve: { 231 resolve: {
232 usadoPor: function() {return 'notaPedido';}, 232 usadoPor: function() {return 'notaPedido';},
233 idVendedor: function() { 233 idVendedor: function() {
234 if (APP === 'distribuidor') 234 if (APP === 'distribuidor')
235 return $scope.notaPedido.vendedor.id; 235 return $scope.notaPedido.vendedor.id;
236 else 236 else
237 return null; 237 return null;
238 } 238 }
239 } 239 }
240 } 240 }
241 ); 241 );
242 modalInstance.result.then(setearNotaPedido); 242 modalInstance.result.then(setearNotaPedido);
243 }; 243 };
244 244
245 $scope.seleccionarProductos = function() { 245 $scope.seleccionarProductos = function() {
246 if ($scope.idLista === undefined) { 246 if ($scope.idLista === undefined) {
247 focaModalService.alert( 247 focaModalService.alert(
248 'Primero seleccione una lista de precio y condicion'); 248 'Primero seleccione una lista de precio y condicion');
249 return; 249 return;
250 } 250 }
251 var modalInstance = $uibModal.open( 251 var modalInstance = $uibModal.open(
252 { 252 {
253 ariaLabelledBy: 'Busqueda de Productos', 253 ariaLabelledBy: 'Busqueda de Productos',
254 templateUrl: 'modal-busqueda-productos.html', 254 templateUrl: 'modal-busqueda-productos.html',
255 controller: 'modalBusquedaProductosCtrl', 255 controller: 'modalBusquedaProductosCtrl',
256 resolve: { 256 resolve: {
257 parametroProducto: { 257 parametroProducto: {
258 idLista: $scope.idLista, 258 idLista: $scope.idLista,
259 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 259 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
260 simbolo: $scope.notaPedido.cotizacion.moneda.SIMBOLO 260 simbolo: $scope.notaPedido.cotizacion.moneda.SIMBOLO
261 } 261 }
262 }, 262 },
263 size: 'lg' 263 size: 'lg'
264 } 264 }
265 ); 265 );
266 modalInstance.result.then( 266 modalInstance.result.then(
267 function(producto) { 267 function(producto) {
268 var newArt = 268 var newArt =
269 { 269 {
270 id: 0, 270 id: 0,
271 codigo: producto.codigo, 271 codigo: producto.codigo,
272 sector: producto.sector, 272 sector: producto.sector,
273 sectorCodigo: producto.sector + '-' + producto.codigo, 273 sectorCodigo: producto.sector + '-' + producto.codigo,
274 descripcion: producto.descripcion, 274 descripcion: producto.descripcion,
275 item: $scope.notaPedido.articulosNotaPedido.length + 1, 275 item: $scope.notaPedido.articulosNotaPedido.length + 1,
276 nombre: producto.descripcion, 276 nombre: producto.descripcion,
277 precio: parseFloat(producto.precio.toFixed(4)), 277 precio: parseFloat(producto.precio.toFixed(4)),
278 costoUnitario: producto.costo, 278 costoUnitario: producto.costo,
279 editCantidad: false, 279 editCantidad: false,
280 editPrecio: false, 280 editPrecio: false,
281 rubro: producto.CodRub, 281 rubro: producto.CodRub,
282 exentoUnitario: producto.precio, 282 exentoUnitario: producto.precio,
283 ivaUnitario: producto.IMPIVA, 283 ivaUnitario: producto.IMPIVA,
284 impuestoInternoUnitario: producto.ImpInt, 284 impuestoInternoUnitario: producto.ImpInt,
285 impuestoInterno1Unitario: producto.ImpInt2, 285 impuestoInterno1Unitario: producto.ImpInt2,
286 impuestoInterno2Unitario: producto.ImpInt3, 286 impuestoInterno2Unitario: producto.ImpInt3,
287 precioLista: producto.precio, 287 precioLista: producto.precio,
288 combustible: 1, 288 combustible: 1,
289 facturado: 0, 289 facturado: 0,
290 idArticulo: producto.id 290 idArticulo: producto.id
291 }; 291 };
292 $scope.articuloACargar = newArt; 292 $scope.articuloACargar = newArt;
293 $scope.cargando = false; 293 $scope.cargando = false;
294 }, function() { 294 }, function() {
295 // funcion ejecutada cuando se cancela el modal 295 // funcion ejecutada cuando se cancela el modal
296 } 296 }
297 ); 297 );
298 }; 298 };
299 299
300 $scope.seleccionarPuntosDeDescarga = function() { 300 $scope.seleccionarPuntosDeDescarga = function() {
301 if (!$scope.notaPedido.cliente.COD || !$scope.notaPedido.domicilio.id) { 301 if (!$scope.notaPedido.cliente.COD || !$scope.notaPedido.domicilio.id) {
302 focaModalService.alert('Primero seleccione un cliente y un domicilio'); 302 focaModalService.alert('Primero seleccione un cliente y un domicilio');
303 return; 303 return;
304 } else { 304 } else {
305 var modalInstance = $uibModal.open( 305 var modalInstance = $uibModal.open(
306 { 306 {
307 ariaLabelledBy: 'Búsqueda de Puntos de descarga', 307 ariaLabelledBy: 'Búsqueda de Puntos de descarga',
308 templateUrl: 'modal-punto-descarga.html', 308 templateUrl: 'modal-punto-descarga.html',
309 controller: 'focaModalPuntoDescargaController', 309 controller: 'focaModalPuntoDescargaController',
310 size: 'lg', 310 size: 'lg',
311 resolve: { 311 resolve: {
312 filters: { 312 filters: {
313 idDomicilio: $scope.notaPedido.domicilio.id, 313 idDomicilio: $scope.notaPedido.domicilio.id,
314 idCliente: $scope.notaPedido.cliente.COD, 314 idCliente: $scope.notaPedido.cliente.COD,
315 articulos: $scope.notaPedido.articulosNotaPedido, 315 articulos: $scope.notaPedido.articulosNotaPedido,
316 puntosDescarga: $scope.notaPedido.notaPedidoPuntoDescarga 316 puntosDescarga: $scope.notaPedido.notaPedidoPuntoDescarga
317 } 317 }
318 } 318 }
319 } 319 }
320 ); 320 );
321 modalInstance.result.then( 321 modalInstance.result.then(
322 function(puntosDescarga) { 322 function(puntosDescarga) {
323 $scope.notaPedido.notaPedidoPuntoDescarga = puntosDescarga; 323 $scope.notaPedido.notaPedidoPuntoDescarga = puntosDescarga;
324 324
325 //AGREGO PUNTOS DE DESCARGA A CABECERA 325 //AGREGO PUNTOS DE DESCARGA A CABECERA
326 var puntosStamp = ''; 326 var puntosStamp = '';
327 puntosDescarga.forEach(function(punto, idx, arr) { 327 puntosDescarga.forEach(function(punto, idx, arr) {
328 puntosStamp += punto.descripcion; 328 puntosStamp += punto.descripcion;
329 if ((idx + 1) !== arr.length) puntosStamp += ', '; 329 if ((idx + 1) !== arr.length) puntosStamp += ', ';
330 }); 330 });
331 331
332 $scope.$broadcast('addCabecera', { 332 $scope.$broadcast('addCabecera', {
333 label: 'Puntos de descarga:', 333 label: 'Puntos de descarga:',
334 valor: puntosStamp 334 valor: puntosStamp
335 }); 335 });
336 }, function() { 336 }, function() {
337 $scope.abrirModalDomicilios($scope.cliente); 337 $scope.abrirModalDomicilios($scope.cliente);
338 } 338 }
339 ); 339 );
340 } 340 }
341 }; 341 };
342 342
343 $scope.seleccionarTransportista = function() { 343 $scope.seleccionarProveedor = function() {
344 $scope.seleccionarProveedor(function() { 344 $scope.abrirModalProveedores(function() {
345 if (validarNotaRemitada()) { 345 if (validarNotaRemitada()) {
346 var modalInstance = $uibModal.open( 346 var modalInstance = $uibModal.open(
347 { 347 {
348 ariaLabelledBy: 'Busqueda de Flete', 348 ariaLabelledBy: 'Busqueda de Flete',
349 templateUrl: 'modal-flete.html', 349 templateUrl: 'modal-flete.html',
350 controller: 'focaModalFleteController', 350 controller: 'focaModalFleteController',
351 size: 'lg', 351 size: 'lg',
352 resolve: { 352 resolve: {
353 parametrosFlete: 353 parametrosFlete:
354 function() { 354 function() {
355 return { 355 return {
356 flete: $scope.notaPedido.fob ? 'FOB' : 356 flete: $scope.notaPedido.fob ? 'FOB' :
357 ( $scope.notaPedido.flete ? '1' : 357 ( $scope.notaPedido.flete ? '1' :
358 ($scope.notaPedido.flete === undefined ? 358 ($scope.notaPedido.flete === undefined ?
359 null : '0')), 359 null : '0')),
360 bomba: $scope.notaPedido.bomba ? '1' : 360 bomba: $scope.notaPedido.bomba ? '1' :
361 ($scope.notaPedido.bomba === undefined ? 361 ($scope.notaPedido.bomba === undefined ?
362 null : '0'), 362 null : '0'),
363 kilometros: $scope.notaPedido.kilometros 363 kilometros: $scope.notaPedido.kilometros
364 }; 364 };
365 } 365 }
366 } 366 }
367 } 367 }
368 ); 368 );
369 modalInstance.result.then( 369 modalInstance.result.then(
370 function(datos) { 370 function(datos) {
371 $scope.notaPedido.flete = datos.flete; 371 $scope.notaPedido.flete = datos.flete;
372 $scope.notaPedido.fob = datos.FOB; 372 $scope.notaPedido.fob = datos.FOB;
373 $scope.notaPedido.bomba = datos.bomba; 373 $scope.notaPedido.bomba = datos.bomba;
374 $scope.notaPedido.kilometros = datos.kilometros; 374 $scope.notaPedido.kilometros = datos.kilometros;
375 $scope.$broadcast('addCabecera', { 375 $scope.$broadcast('addCabecera', {
376 label: 'Flete:', 376 label: 'Flete:',
377 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No') 377 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No')
378 }); 378 });
379 if (datos.flete) { 379 if (datos.flete) {
380 $scope.$broadcast('addCabecera', { 380 $scope.$broadcast('addCabecera', {
381 label: 'Bomba:', 381 label: 'Bomba:',
382 valor: datos.bomba ? 'Si' : 'No' 382 valor: datos.bomba ? 'Si' : 'No'
383 }); 383 });
384 $scope.$broadcast('addCabecera', { 384 $scope.$broadcast('addCabecera', {
385 label: 'Kilometros:', 385 label: 'Kilometros:',
386 valor: datos.kilometros 386 valor: datos.kilometros
387 }); 387 });
388 } else { 388 } else {
389 $scope.$broadcast('removeCabecera', 'Bomba:'); 389 $scope.$broadcast('removeCabecera', 'Bomba:');
390 $scope.$broadcast('removeCabecera', 'Kilometros:'); 390 $scope.$broadcast('removeCabecera', 'Kilometros:');
391 $scope.notaPedido.bomba = false; 391 $scope.notaPedido.bomba = false;
392 $scope.notaPedido.kilometros = null; 392 $scope.notaPedido.kilometros = null;
393 } 393 }
394 }, function() { 394 }, function() {
395 $scope.seleccionarTransportista(); 395 $scope.seleccionarTransportista();
396 } 396 }
397 ); 397 );
398 } 398 }
399 }); 399 });
400 }; 400 };
401 401
402 $scope.seleccionarVendedor = function(callback, ocultarVendedor) { 402 $scope.seleccionarVendedor = function(callback, ocultarVendedor) {
403 if (APP === 'distribuidor' || ocultarVendedor) { 403 if (APP === 'distribuidor' || ocultarVendedor) {
404 callback(); 404 callback();
405 return; 405 return;
406 } 406 }
407 407
408 if (validarNotaRemitada()) { 408 if (validarNotaRemitada()) {
409 var parametrosModal = { 409 var parametrosModal = {
410 titulo: 'Búsqueda vendedores', 410 titulo: 'Búsqueda vendedores',
411 query: '/vendedor', 411 query: '/vendedor',
412 columnas: [ 412 columnas: [
413 { 413 {
414 propiedad: 'NUM', 414 propiedad: 'NUM',
415 nombre: 'Código', 415 nombre: 'Código',
416 filtro: { 416 filtro: {
417 nombre: 'rellenarDigitos', 417 nombre: 'rellenarDigitos',
418 parametro: 3 418 parametro: 3
419 } 419 }
420 }, 420 },
421 { 421 {
422 propiedad: 'NOM', 422 propiedad: 'NOM',
423 nombre: 'Nombre' 423 nombre: 'Nombre'
424 } 424 }
425 ], 425 ],
426 size: 'md' 426 size: 'md'
427 }; 427 };
428 focaModalService.modal(parametrosModal).then( 428 focaModalService.modal(parametrosModal).then(
429 function(vendedor) { 429 function(vendedor) {
430 $scope.$broadcast('addCabecera', { 430 $scope.$broadcast('addCabecera', {
431 label: 'Vendedor:', 431 label: 'Vendedor:',
432 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' + 432 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' +
433 vendedor.NOM 433 vendedor.NOM
434 }); 434 });
435 $scope.notaPedido.vendedor = vendedor; 435 $scope.notaPedido.vendedor = vendedor;
436 deleteCliente(); 436 deleteCliente();
437 callback(); 437 callback();
438 }, function() {} 438 }, function() {}
439 ); 439 );
440 } 440 }
441 }; 441 };
442 442
443 $scope.seleccionarCliente = function(ocultarVendedor) { 443 $scope.seleccionarCliente = function(ocultarVendedor) {
444 $scope.seleccionarVendedor(function() { 444 $scope.seleccionarVendedor(function() {
445 if (validarNotaRemitada()) { 445 if (validarNotaRemitada()) {
446 var modalInstance = $uibModal.open( 446 var modalInstance = $uibModal.open(
447 { 447 {
448 ariaLabelledBy: 'Busqueda de Cliente', 448 ariaLabelledBy: 'Busqueda de Cliente',
449 templateUrl: 'foca-busqueda-cliente-modal.html', 449 templateUrl: 'foca-busqueda-cliente-modal.html',
450 controller: 'focaBusquedaClienteModalController', 450 controller: 'focaBusquedaClienteModalController',
451 resolve: { 451 resolve: {
452 vendedor: function() { return $scope.notaPedido.vendedor; }, 452 vendedor: function() { return $scope.notaPedido.vendedor; },
453 cobrador: function() { return null; } 453 cobrador: function() { return null; }
454 }, 454 },
455 size: 'lg' 455 size: 'lg'
456 } 456 }
457 ); 457 );
458 modalInstance.result.then( 458 modalInstance.result.then(
459 function(cliente) { 459 function(cliente) {
460 $scope.abrirModalDomicilios(cliente); 460 $scope.abrirModalDomicilios(cliente);
461 $scope.cliente = cliente; 461 $scope.cliente = cliente;
462 }, function() { 462 }, function() {
463 if (APP !== 'distribuidor') $scope.seleccionarCliente(); 463 if (APP !== 'distribuidor') $scope.seleccionarCliente();
464 } 464 }
465 ); 465 );
466 } 466 }
467 }, ocultarVendedor); 467 }, ocultarVendedor);
468 }; 468 };
469 469
470 $scope.seleccionarProveedor = function(callback) { 470 $scope.abrirModalProveedores = function(callback) {
471 if (validarNotaRemitada()) { 471 if (validarNotaRemitada()) {
472 var parametrosModal = { 472 var parametrosModal = {
473 titulo: 'Búsqueda de Proveedor', 473 titulo: 'Búsqueda de Proveedor',
474 query: '/proveedor', 474 query: '/proveedor',
475 columnas: [ 475 columnas: [
476 { 476 {
477 nombre: 'Código', 477 nombre: 'Código',
478 propiedad: 'COD', 478 propiedad: 'COD',
479 filtro: { 479 filtro: {
480 nombre: 'rellenarDigitos', 480 nombre: 'rellenarDigitos',
481 parametro: 5 481 parametro: 5
482 } 482 }
483 }, 483 },
484 { 484 {
485 nombre: 'Nombre', 485 nombre: 'Nombre',
486 propiedad: 'NOM' 486 propiedad: 'NOM'
487 }, 487 },
488 { 488 {
489 nombre: 'CUIT', 489 nombre: 'CUIT',
490 propiedad: 'CUIT' 490 propiedad: 'CUIT'
491 } 491 }
492 ], 492 ],
493 tipo: 'POST', 493 tipo: 'POST',
494 json: {razonCuitCod: ''} 494 json: {razonCuitCod: ''}
495 }; 495 };
496 focaModalService.modal(parametrosModal).then( 496 focaModalService.modal(parametrosModal).then(
497 function(proveedor) { 497 function(proveedor) {
498 $scope.notaPedido.proveedor = proveedor; 498 $scope.notaPedido.proveedor = proveedor;
499 $scope.$broadcast('addCabecera', { 499 $scope.$broadcast('addCabecera', {
500 label: 'Proveedor:', 500 label: 'Proveedor:',
501 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' + 501 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' +
502 proveedor.NOM 502 proveedor.NOM
503 }); 503 });
504 callback(); 504 callback();
505 }, function() { 505 }, function() {
506 506
507 } 507 }
508 ); 508 );
509 } 509 }
510 }; 510 };
511 511
512 $scope.abrirModalDomicilios = function(cliente) { 512 $scope.abrirModalDomicilios = function(cliente) {
513 var modalInstanceDomicilio = $uibModal.open( 513 var modalInstanceDomicilio = $uibModal.open(
514 { 514 {
515 ariaLabelledBy: 'Busqueda de Domicilios', 515 ariaLabelledBy: 'Busqueda de Domicilios',
516 templateUrl: 'modal-domicilio.html', 516 templateUrl: 'modal-domicilio.html',
517 controller: 'focaModalDomicilioController', 517 controller: 'focaModalDomicilioController',
518 resolve: { 518 resolve: {
519 idCliente: function() { return cliente.cod; }, 519 idCliente: function() { return cliente.cod; },
520 esNuevo: function() { return cliente.esNuevo; } 520 esNuevo: function() { return cliente.esNuevo; }
521 }, 521 },
522 size: 'lg', 522 size: 'lg',
523 } 523 }
524 ); 524 );
525 modalInstanceDomicilio.result.then( 525 modalInstanceDomicilio.result.then(
526 function(domicilio) { 526 function(domicilio) {
527 $scope.notaPedido.domicilio = domicilio; 527 $scope.notaPedido.domicilio = domicilio;
528 $scope.notaPedido.cliente = { 528 $scope.notaPedido.cliente = {
529 COD: cliente.cod, 529 COD: cliente.cod,
530 CUIT: cliente.cuit, 530 CUIT: cliente.cuit,
531 NOM: cliente.nom, 531 NOM: cliente.nom,
532 MOD: cliente.mod 532 MOD: cliente.mod
533 }; 533 };
534 var domicilioStamp = 534 var domicilioStamp =
535 domicilio.Calle + ' ' + domicilio.Numero + ', ' + 535 domicilio.Calle + ' ' + domicilio.Numero + ', ' +
536 domicilio.Localidad + ', ' + domicilio.Provincia; 536 domicilio.Localidad + ', ' + domicilio.Provincia;
537 $scope.notaPedido.domicilioStamp = domicilioStamp; 537 $scope.notaPedido.domicilioStamp = domicilioStamp;
538 538
539 $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntosDescarga; 539 $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntosDescarga;
540 540
541 $scope.$broadcast('addCabecera', { 541 $scope.$broadcast('addCabecera', {
542 label: 'Cliente:', 542 label: 'Cliente:',
543 valor: $filter('rellenarDigitos')(cliente.cod, 5) + ' - ' + cliente.nom 543 valor: $filter('rellenarDigitos')(cliente.cod, 5) + ' - ' + cliente.nom
544 }); 544 });
545 $scope.$broadcast('addCabecera', { 545 $scope.$broadcast('addCabecera', {
546 label: 'Domicilio:', 546 label: 'Domicilio:',
547 valor: domicilioStamp 547 valor: domicilioStamp
548 }); 548 });
549 if (domicilio.verPuntos) { 549 if (domicilio.verPuntos) {
550 delete $scope.notaPedido.domicilio.verPuntos; 550 delete $scope.notaPedido.domicilio.verPuntos;
551 $scope.seleccionarPuntosDeDescarga(); 551 $scope.seleccionarPuntosDeDescarga();
552 } else { 552 } else {
553 crearNotaPedidoService 553 crearNotaPedidoService
554 .getPuntosDescargaByClienDom(domicilio.id, cliente.cod) 554 .getPuntosDescargaByClienDom(domicilio.id, cliente.cod)
555 .then(function(res) { 555 .then(function(res) {
556 if (res.data.length) $scope.seleccionarPuntosDeDescarga(); 556 if (res.data.length) $scope.seleccionarPuntosDeDescarga();
557 }); 557 });
558 } 558 }
559 }, function() { 559 }, function() {
560 $scope.seleccionarCliente(true); 560 $scope.seleccionarCliente(true);
561 return; 561 return;
562 } 562 }
563 ); 563 );
564 }; 564 };
565 565
566 $scope.getTotal = function() { 566 $scope.getTotal = function() {
567 var total = 0; 567 var total = 0;
568 if ($scope.notaPedido.articulosNotaPedido) { 568 if ($scope.notaPedido.articulosNotaPedido) {
569 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido; 569 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido;
570 for (var i = 0; i < arrayTempArticulos.length; i++) { 570 for (var i = 0; i < arrayTempArticulos.length; i++) {
571 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 571 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
572 } 572 }
573 } 573 }
574 574
575 return parseFloat(total.toFixed(2)); 575 return parseFloat(total.toFixed(2));
576 }; 576 };
577 577
578 $scope.getSubTotal = function() { 578 $scope.getSubTotal = function() {
579 if ($scope.articuloACargar) { 579 if ($scope.articuloACargar) {
580 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 580 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
581 } 581 }
582 }; 582 };
583 583
584 $scope.seleccionarPreciosYCondiciones = function() { 584 $scope.seleccionarPreciosYCondiciones = function() {
585 if (!$scope.notaPedido.cliente.COD) { 585 if (!$scope.notaPedido.cliente.COD) {
586 focaModalService.alert('Primero seleccione un cliente'); 586 focaModalService.alert('Primero seleccione un cliente');
587 return; 587 return;
588 } 588 }
589 if(validarNotaRemitada()) { 589 if (validarNotaRemitada()) {
590 var modalInstance = $uibModal.open( 590 var modalInstance = $uibModal.open(
591 { 591 {
592 ariaLabelledBy: 'Busqueda de Precio Condición', 592 ariaLabelledBy: 'Busqueda de Precio Condición',
593 templateUrl: 'modal-precio-condicion.html', 593 templateUrl: 'modal-precio-condicion.html',
594 controller: 'focaModalPrecioCondicionController', 594 controller: 'focaModalPrecioCondicionController',
595 size: 'lg', 595 size: 'lg',
596 resolve: { 596 resolve: {
597 idListaPrecio: function() { 597 idListaPrecio: function() {
598 return $scope.notaPedido.cliente.MOD || null; 598 return $scope.notaPedido.cliente.MOD || null;
599 } 599 }
600 } 600 }
601 } 601 }
602 ); 602 );
603 modalInstance.result.then( 603 modalInstance.result.then(
604 function(precioCondicion) { 604 function(precioCondicion) {
605 var cabecera = ''; 605 var cabecera = '';
606 var plazosConcat = ''; 606 var plazosConcat = '';
607 if (!Array.isArray(precioCondicion)) { 607 if (!Array.isArray(precioCondicion)) {
608 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago; 608 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago;
609 $scope.notaPedido.precioCondicion = precioCondicion; 609 $scope.notaPedido.precioCondicion = precioCondicion;
610 $scope.notaPedido.idPrecioCondicion = precioCondicion.id; 610 $scope.notaPedido.idPrecioCondicion = precioCondicion.id;
611 $scope.idLista = precioCondicion.idListaPrecio; 611 $scope.idLista = precioCondicion.idListaPrecio;
612 for (var i = 0; i < precioCondicion.plazoPago.length; i++) { 612 for (var i = 0; i < precioCondicion.plazoPago.length; i++) {
613 plazosConcat += precioCondicion.plazoPago[i].dias + ' '; 613 plazosConcat += precioCondicion.plazoPago[i].dias + ' ';
614 } 614 }
615 cabecera = $filter('rellenarDigitos')(precioCondicion.id, 4) + 615 cabecera = $filter('rellenarDigitos')(precioCondicion.id, 4) +
616 ' - ' + precioCondicion.nombre + ' ' + plazosConcat.trim(); 616 ' - ' + precioCondicion.nombre + ' ' + plazosConcat.trim();
617 } else { //Cuando se ingresan los plazos manualmente 617 } else { //Cuando se ingresan los plazos manualmente
618 $scope.notaPedido.idPrecioCondicion = 0; 618 $scope.notaPedido.idPrecioCondicion = 0;
619 //-1, el modal productos busca todos los productos 619 //-1, el modal productos busca todos los productos
620 $scope.idLista = -1; 620 $scope.idLista = -1;
621 $scope.notaPedido.notaPedidoPlazo = precioCondicion; 621 $scope.notaPedido.notaPedidoPlazo = precioCondicion;
622 for (var j = 0; j < precioCondicion.length; j++) { 622 for (var j = 0; j < precioCondicion.length; j++) {
623 plazosConcat += precioCondicion[j].dias + ' '; 623 plazosConcat += precioCondicion[j].dias + ' ';
624 } 624 }
625 cabecera = 'Ingreso manual ' + plazosConcat.trim(); 625 cabecera = 'Ingreso manual ' + plazosConcat.trim();
626 } 626 }
627 $scope.notaPedido.articulosNotaPedido = []; 627 $scope.notaPedido.articulosNotaPedido = [];
628 $scope.$broadcast('addCabecera', { 628 $scope.$broadcast('addCabecera', {
629 label: 'Precios y condiciones:', 629 label: 'Precios y condiciones:',
630 valor: cabecera 630 valor: cabecera
631 }); 631 });
632 }, function() { 632 }, function() {
633 633
634 } 634 }
635 ); 635 );
636 } 636 }
637 }; 637 };
638 638
639 $scope.seleccionarMoneda = function() { 639 $scope.seleccionarMoneda = function() {
640 if (validarNotaRemitada()) { 640 if (validarNotaRemitada()) {
641 var parametrosModal = { 641 var parametrosModal = {
642 titulo: 'Búsqueda de monedas', 642 titulo: 'Búsqueda de monedas',
643 query: '/moneda', 643 query: '/moneda',
644 columnas: [ 644 columnas: [
645 { 645 {
646 propiedad: 'DETALLE', 646 propiedad: 'DETALLE',
647 nombre: 'Nombre' 647 nombre: 'Nombre'
648 }, 648 },
649 { 649 {
650 propiedad: 'SIMBOLO', 650 propiedad: 'SIMBOLO',
651 nombre: 'Símbolo' 651 nombre: 'Símbolo'
652 } 652 }
653 ], 653 ],
654 size: 'md' 654 size: 'md'
655 }; 655 };
656 focaModalService.modal(parametrosModal).then( 656 focaModalService.modal(parametrosModal).then(
657 function(moneda) { 657 function(moneda) {
658 $scope.abrirModalCotizacion(moneda); 658 $scope.abrirModalCotizacion(moneda);
659 }, function() { 659 }, function() {
660 660
661 } 661 }
662 ); 662 );
663 } 663 }
664 }; 664 };
665 665
666 $scope.seleccionarObservaciones = function() { 666 $scope.seleccionarObservaciones = function() {
667 var observacion = { 667 var observacion = {
668 titulo: 'Ingrese Observaciones', 668 titulo: 'Ingrese Observaciones',
669 value: $scope.notaPedido.observaciones, 669 value: $scope.notaPedido.observaciones,
670 maxlength: 155, 670 maxlength: 155,
671 textarea: true 671 textarea: true
672 }; 672 };
673 673
674 focaModalService 674 focaModalService
675 .prompt(observacion) 675 .prompt(observacion)
676 .then(function(observaciones) { 676 .then(function(observaciones) {
677 $scope.$broadcast('addCabecera', { 677 $scope.$broadcast('addCabecera', {
678 label: 'Observaciones:', 678 label: 'Observaciones:',
679 valor: observaciones 679 valor: observaciones
680 }); 680 });
681 $scope.notaPedido.observaciones = observaciones; 681 $scope.notaPedido.observaciones = observaciones;
682 }); 682 });
683 }; 683 };
684 684
685 $scope.abrirModalCotizacion = function(moneda) { 685 $scope.abrirModalCotizacion = function(moneda) {
686 var modalInstance = $uibModal.open( 686 var modalInstance = $uibModal.open(
687 { 687 {
688 ariaLabelledBy: 'Busqueda de Cotización', 688 ariaLabelledBy: 'Busqueda de Cotización',
689 templateUrl: 'modal-cotizacion.html', 689 templateUrl: 'modal-cotizacion.html',
690 controller: 'focaModalCotizacionController', 690 controller: 'focaModalCotizacionController',
691 size: 'lg', 691 size: 'lg',
692 resolve: { 692 resolve: {
693 idMoneda: function() { 693 idMoneda: function() {
694 return moneda.ID; 694 return moneda.ID;
695 } 695 }
696 } 696 }
697 } 697 }
698 ); 698 );
699 modalInstance.result.then( 699 modalInstance.result.then(
700 function(cotizacion) { 700 function(cotizacion) {
701 var articulosTablaTemp = $scope.notaPedido.articulosNotaPedido || []; 701 var articulosTablaTemp = $scope.notaPedido.articulosNotaPedido || [];
702 for (var i = 0; i < articulosTablaTemp.length; i++) { 702 for (var i = 0; i < articulosTablaTemp.length; i++) {
703 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio * 703 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio *
704 $scope.notaPedido.cotizacion.VENDEDOR; 704 $scope.notaPedido.cotizacion.VENDEDOR;
705 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio / 705 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio /
706 cotizacion.VENDEDOR; 706 cotizacion.VENDEDOR;
707 } 707 }
708 $scope.notaPedido.articulosNotaPedido = articulosTablaTemp; 708 $scope.notaPedido.articulosNotaPedido = articulosTablaTemp;
709 $scope.notaPedido.cotizacion = cotizacion; 709 $scope.notaPedido.cotizacion = cotizacion;
710 $scope.notaPedido.cotizacion.moneda = moneda; 710 $scope.notaPedido.cotizacion.moneda = moneda;
711 if (moneda.DETALLE === 'PESOS ARGENTINOS') { 711 if (moneda.DETALLE === 'PESOS ARGENTINOS') {
712 $scope.$broadcast('removeCabecera', 'Moneda:'); 712 $scope.$broadcast('removeCabecera', 'Moneda:');
713 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 713 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
714 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 714 $scope.$broadcast('removeCabecera', 'Cotizacion:');
715 } else { 715 } else {
716 $scope.$broadcast('addCabecera', { 716 $scope.$broadcast('addCabecera', {
717 label: 'Moneda:', 717 label: 'Moneda:',
718 valor: moneda.DETALLE 718 valor: moneda.DETALLE
719 }); 719 });
720 $scope.$broadcast('addCabecera', { 720 $scope.$broadcast('addCabecera', {
721 label: 'Fecha cotizacion:', 721 label: 'Fecha cotizacion:',
722 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy') 722 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy')
723 }); 723 });
724 $scope.$broadcast('addCabecera', { 724 $scope.$broadcast('addCabecera', {
725 label: 'Cotizacion:', 725 label: 'Cotizacion:',
726 valor: $filter('number')(cotizacion.VENDEDOR, '2') 726 valor: $filter('number')(cotizacion.VENDEDOR, '2')
727 }); 727 });
728 } 728 }
729 }, function() { 729 }, function() {
730 730
731 } 731 }
732 ); 732 );
733 }; 733 };
734 734
735 $scope.agregarATabla = function(key) { 735 $scope.agregarATabla = function(key) {
736 if (key === 13) { 736 if (key === 13) {
737 if ($scope.articuloACargar.cantidad === undefined || 737 if ($scope.articuloACargar.cantidad === undefined ||
738 $scope.articuloACargar.cantidad === 0 || 738 $scope.articuloACargar.cantidad === 0 ||
739 $scope.articuloACargar.cantidad === null ) { 739 $scope.articuloACargar.cantidad === null ) {
740 focaModalService.alert('El valor debe ser al menos 1'); 740 focaModalService.alert('El valor debe ser al menos 1');
741 return; 741 return;
742 } 742 }
743 delete $scope.articuloACargar.sectorCodigo; 743 delete $scope.articuloACargar.sectorCodigo;
744 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar); 744 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar);
745 $scope.cargando = true; 745 $scope.cargando = true;
746 } 746 }
747 }; 747 };
748 748
749 $scope.quitarArticulo = function(key) { 749 $scope.quitarArticulo = function(key) {
750 $scope.notaPedido.articulosNotaPedido.splice(key, 1); 750 $scope.notaPedido.articulosNotaPedido.splice(key, 1);
751 }; 751 };
752 752
753 $scope.editarArticulo = function(key, articulo) { 753 $scope.editarArticulo = function(key, articulo) {
754 if (key === 13) { 754 if (key === 13) {
755 if (articulo.cantidad === null || articulo.cantidad === 0 || 755 if (articulo.cantidad === null || articulo.cantidad === 0 ||
756 articulo.cantidad === undefined) { 756 articulo.cantidad === undefined) {
757 focaModalService.alert('El valor debe ser al menos 1'); 757 focaModalService.alert('El valor debe ser al menos 1');
758 return; 758 return;
759 } 759 }
760 articulo.editCantidad = false; 760 articulo.editCantidad = false;
761 articulo.editPrecio = false; 761 articulo.editPrecio = false;
762 } 762 }
763 }; 763 };
764 764
765 $scope.cambioEdit = function(articulo, propiedad) { 765 $scope.cambioEdit = function(articulo, propiedad) {
766 if (propiedad === 'cantidad') { 766 if (propiedad === 'cantidad') {
767 articulo.editCantidad = true; 767 articulo.editCantidad = true;
768 } else if (propiedad === 'precio') { 768 } else if (propiedad === 'precio') {
769 articulo.editPrecio = true; 769 articulo.editPrecio = true;
770 } 770 }
771 }; 771 };
772 772
773 $scope.resetFilter = function() { 773 $scope.resetFilter = function() {
774 $scope.articuloACargar = {}; 774 $scope.articuloACargar = {};
775 $scope.cargando = true; 775 $scope.cargando = true;
776 }; 776 };
777 //Recibe aviso si el teclado está en uso 777 //Recibe aviso si el teclado está en uso
778 $rootScope.$on('usarTeclado', function(event, data) { 778 $rootScope.$on('usarTeclado', function(event, data) {
779 if (data) { 779 if (data) {
780 $scope.mostrarTeclado = true; 780 $scope.mostrarTeclado = true;
781 return; 781 return;
782 } 782 }
783 $scope.mostrarTeclado = false; 783 $scope.mostrarTeclado = false;
784 }); 784 });
785 785
786 $scope.selectFocus = function($event) { 786 $scope.selectFocus = function($event) {
787 // Si el teclado esta en uso no selecciona el valor 787 // Si el teclado esta en uso no selecciona el valor
788 if ($scope.mostrarTeclado) { 788 if ($scope.mostrarTeclado) {
789 return; 789 return;
790 } 790 }
791 $event.target.select(); 791 $event.target.select();
792 }; 792 };
793 793
794 $scope.salir = function() { 794 $scope.salir = function() {
795 $location.path('/'); 795 $location.path('/');
796 }; 796 };
797 797
798 $scope.parsearATexto = function(articulo) { 798 $scope.parsearATexto = function(articulo) {
799 articulo.cantidad = parseFloat(articulo.cantidad); 799 articulo.cantidad = parseFloat(articulo.cantidad);
800 articulo.precio = parseFloat(articulo.precio); 800 articulo.precio = parseFloat(articulo.precio);
801 }; 801 };
802 802
803 function setearNotaPedido(notaPedido) { 803 function setearNotaPedido(notaPedido) {
804 //añado cabeceras 804 //añado cabeceras
805 $scope.notaPedido = notaPedido; 805 $scope.notaPedido = notaPedido;
806 $scope.$broadcast('removeCabecera', 'Bomba:'); 806 $scope.$broadcast('removeCabecera', 'Bomba:');
807 $scope.$broadcast('removeCabecera', 'Kilometros:'); 807 $scope.$broadcast('removeCabecera', 'Kilometros:');
808 808
809 var cabeceras = []; 809 var cabeceras = [];
810 810
811 if (notaPedido.cotizacion) { 811 if (notaPedido.cotizacion) {
812 cabeceras.push({ 812 cabeceras.push({
813 label: 'Moneda:', 813 label: 'Moneda:',
814 valor: notaPedido.cotizacion.moneda.DETALLE 814 valor: notaPedido.cotizacion.moneda.DETALLE
815 }); 815 });
816 cabeceras.push({ 816 cabeceras.push({
817 label: 'Fecha cotizacion:', 817 label: 'Fecha cotizacion:',
818 valor: $filter('date')(notaPedido.cotizacion.FECHA, 818 valor: $filter('date')(notaPedido.cotizacion.FECHA,
819 'dd/MM/yyyy') 819 'dd/MM/yyyy')
820 }); 820 });
821 cabeceras.push({ 821 cabeceras.push({
822 label: 'Cotizacion:', 822 label: 'Cotizacion:',
823 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR, 823 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR,
824 '2') 824 '2')
825 }); 825 });
826 } 826 }
827 827
828 if (notaPedido.cliente.COD) { 828 if (notaPedido.cliente.COD) {
829 cabeceras.push({ 829 cabeceras.push({
830 label: 'Cliente:', 830 label: 'Cliente:',
831 valor: notaPedido.cliente.NOM 831 valor: notaPedido.cliente.NOM
832 }); 832 });
833 cabeceras.push({ 833 cabeceras.push({
834 label: 'Domicilio:', 834 label: 'Domicilio:',
835 valor: notaPedido.domicilioStamp 835 valor: notaPedido.domicilioStamp
836 }); 836 });
837 } 837 }
838 838
839 if (notaPedido.vendedor.NUM) { 839 if (notaPedido.vendedor.NUM) {
840 cabeceras.push({ 840 cabeceras.push({
841 label: 'Vendedor:', 841 label: 'Vendedor:',
842 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) + 842 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) +
843 ' - ' + notaPedido.vendedor.NOM 843 ' - ' + notaPedido.vendedor.NOM
844 }); 844 });
845 } 845 }
846 846
847 if (notaPedido.proveedor.COD) { 847 if (notaPedido.proveedor.COD) {
848 cabeceras.push({ 848 cabeceras.push({
849 label: 'Proveedor:', 849 label: 'Proveedor:',
850 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) + 850 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) +
851 ' - ' + notaPedido.proveedor.NOM 851 ' - ' + notaPedido.proveedor.NOM
852 }); 852 });
853 } 853 }
854 854
855 if (notaPedido.notaPedidoPlazo.length) { 855 if (notaPedido.notaPedidoPlazo.length) {
856 cabeceras.push({ 856 cabeceras.push({
857 label: 'Precios y condiciones:', 857 label: 'Precios y condiciones:',
858 valor: valorPrecioCondicion() + ' ' + 858 valor: valorPrecioCondicion() + ' ' +
859 notaPedidoBusinessService 859 notaPedidoBusinessService
860 .plazoToString(notaPedido.notaPedidoPlazo) 860 .plazoToString(notaPedido.notaPedidoPlazo)
861 }); 861 });
862 } 862 }
863 863
864 if (notaPedido.flete !== undefined) { 864 if (notaPedido.flete !== undefined) {
865 cabeceras.push({ 865 cabeceras.push({
866 label: 'Flete:', 866 label: 'Flete:',
867 valor: notaPedido.fob === 1 ? 'FOB' : ( 867 valor: notaPedido.fob === 1 ? 'FOB' : (
868 notaPedido.flete === 1 ? 'Si' : 'No') 868 notaPedido.flete === 1 ? 'Si' : 'No')
869 }); 869 });
870 } 870 }
871 871
872 function valorPrecioCondicion() { 872 function valorPrecioCondicion() {
873 if (notaPedido.idPrecioCondicion > 0) { 873 if (notaPedido.idPrecioCondicion > 0) {
874 return notaPedido.precioCondicion.nombre; 874 return notaPedido.precioCondicion.nombre;
875 } else { 875 } else {
876 return 'Ingreso Manual'; 876 return 'Ingreso Manual';
877 } 877 }
878 } 878 }
879 879
880 if (notaPedido.flete === 1) { 880 if (notaPedido.flete === 1) {
881 var cabeceraBomba = { 881 var cabeceraBomba = {
882 label: 'Bomba:', 882 label: 'Bomba:',
883 valor: notaPedido.bomba === 1 ? 'Si' : 'No' 883 valor: notaPedido.bomba === 1 ? 'Si' : 'No'
884 }; 884 };
885 if (notaPedido.kilometros) { 885 if (notaPedido.kilometros) {
886 var cabeceraKilometros = { 886 var cabeceraKilometros = {
887 label: 'Kilometros:', 887 label: 'Kilometros:',
888 valor: notaPedido.kilometros 888 valor: notaPedido.kilometros
889 }; 889 };
890 cabeceras.push(cabeceraKilometros); 890 cabeceras.push(cabeceraKilometros);
891 } 891 }
892 cabeceras.push(cabeceraBomba); 892 cabeceras.push(cabeceraBomba);
893 } 893 }
894 894
895 notaPedidoBusinessService.calcularArticulos($scope.notaPedido.articulosNotaPedido, 895 notaPedidoBusinessService.calcularArticulos($scope.notaPedido.articulosNotaPedido,
896 notaPedido.cotizacion.VENDEDOR); 896 notaPedido.cotizacion.VENDEDOR);
897 897
898 if (notaPedido.idPrecioCondicion > 0) { 898 if (notaPedido.idPrecioCondicion > 0) {
899 $scope.idLista = notaPedido.precioCondicion.idListaPrecio; 899 $scope.idLista = notaPedido.precioCondicion.idListaPrecio;
900 } else { 900 } else {
901 $scope.idLista = -1; 901 $scope.idLista = -1;
902 } 902 }
903 903
904 $scope.puntoVenta = $filter('rellenarDigitos')( 904 $scope.puntoVenta = $filter('rellenarDigitos')(
905 notaPedido.sucursal, 4 905 notaPedido.sucursal, 4
906 ); 906 );
907 907
908 $scope.comprobante = $filter('rellenarDigitos')( 908 $scope.comprobante = $filter('rellenarDigitos')(
909 notaPedido.numeroNotaPedido, 8 909 notaPedido.numeroNotaPedido, 8
910 ); 910 );
911 911
912 $scope.notaPedido.notaPedidoPuntoDescarga = 912 $scope.notaPedido.notaPedidoPuntoDescarga =
913 formatearPuntosDescarga(notaPedido.notaPedidoPuntoDescarga || []); 913 formatearPuntosDescarga(notaPedido.notaPedidoPuntoDescarga || []);
914 addArrayCabecera(cabeceras); 914 addArrayCabecera(cabeceras);
915 } 915 }
916 916
917 function addArrayCabecera(array) { 917 function addArrayCabecera(array) {
918 for (var i = 0; i < array.length; i++) { 918 for (var i = 0; i < array.length; i++) {
919 $scope.$broadcast('addCabecera', { 919 $scope.$broadcast('addCabecera', {
920 label: array[i].label, 920 label: array[i].label,
921 valor: array[i].valor 921 valor: array[i].valor
922 }); 922 });
923 } 923 }
924 } 924 }
925 925
926 function validarNotaRemitada() { 926 function validarNotaRemitada() {
927 if (!$scope.notaPedido.idRemito) { 927 if (!$scope.notaPedido.idRemito) {
928 return true; 928 return true;
929 } else { 929 } else {
930 focaModalService.alert('No se puede editar una nota de pedido remitada'); 930 focaModalService.alert('No se puede editar una nota de pedido remitada');
931 return false; 931 return false;
932 } 932 }
933 } 933 }
934 934
935 function formatearPuntosDescarga(puntosDescarga) { 935 function formatearPuntosDescarga(puntosDescarga) {
936 var result = []; 936 var result = [];
937 937
938 puntosDescarga.forEach(function(el) { 938 puntosDescarga.forEach(function(el) {
939 var puntoDescarga = result.filter(function(resultPunto) { 939 var puntoDescarga = result.filter(function(resultPunto) {
940 return resultPunto.id === el.idPuntoDescarga; 940 return resultPunto.id === el.idPuntoDescarga;
941 }); 941 });
942 942
943 if (puntoDescarga.length) { 943 if (puntoDescarga.length) {
944 puntoDescarga[0].articulosAgregados.push({ 944 puntoDescarga[0].articulosAgregados.push({
945 cantidad: el.cantidad, 945 cantidad: el.cantidad,
946 descripcion: el.producto.descripcion, 946 descripcion: el.producto.descripcion,
947 id: el.producto.id 947 id: el.producto.id
948 }); 948 });
949 } else { 949 } else {
950 result.push({ 950 result.push({
951 id: el.puntoDescarga.id, 951 id: el.puntoDescarga.id,
952 id_cliente: el.puntoDescarga.id_cliente, 952 id_cliente: el.puntoDescarga.id_cliente,
953 id_da_config_0: el.puntoDescarga.id_da_config_0, 953 id_da_config_0: el.puntoDescarga.id_da_config_0,
954 latitud: el.puntoDescarga.latitud, 954 latitud: el.puntoDescarga.latitud,
955 longitud: el.puntoDescarga.longitud, 955 longitud: el.puntoDescarga.longitud,
956 descripcion: el.puntoDescarga.descripcion, 956 descripcion: el.puntoDescarga.descripcion,
957 articulosAgregados: [ 957 articulosAgregados: [
958 { 958 {
959 cantidad: el.cantidad, 959 cantidad: el.cantidad,
960 descripcion: el.producto.descripcion, 960 descripcion: el.producto.descripcion,
961 id: el.producto.id 961 id: el.producto.id
962 } 962 }
963 ] 963 ]
964 }); 964 });
965 } 965 }
966 }); 966 });
967 return result; 967 return result;
968 } 968 }
969 969
970 function salir() { 970 function salir() {
971 var confirmacion = false; 971 var confirmacion = false;
972 972
973 if (!angular.equals($scope.notaPedido, $scope.inicial)) { 973 if (!angular.equals($scope.notaPedido, $scope.inicial)) {
974 confirmacion = true; 974 confirmacion = true;
975 } 975 }
976 976
977 if (confirmacion) { 977 if (confirmacion) {
978 focaModalService.confirm( 978 focaModalService.confirm(
979 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.' 979 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
980 ).then(function(data) { 980 ).then(function(data) {
981 if (data) { 981 if (data) {
982 $location.path('/'); 982 $location.path('/');
983 } 983 }
984 }); 984 });
985 } else { 985 } else {
986 $location.path('/'); 986 $location.path('/');
987 } 987 }
988 } 988 }
989 989
990 function getLSNotaPedido() { 990 function getLSNotaPedido() {
991 var notaPedido = JSON.parse($localStorage.notaPedido || null); 991 var notaPedido = JSON.parse($localStorage.notaPedido || null);
992 if (notaPedido) { 992 if (notaPedido) {
993 setearNotaPedido(notaPedido); 993 setearNotaPedido(notaPedido);
994 delete $localStorage.notaPedido; 994 delete $localStorage.notaPedido;
995 } 995 }
996 } 996 }
997 997
998 function deleteCliente() { 998 function deleteCliente() {
999 delete $scope.notaPedido.domicilioStamp; 999 delete $scope.notaPedido.domicilioStamp;
1000 delete $scope.notaPedido.notaPedidoPuntoDescarga; 1000 delete $scope.notaPedido.notaPedidoPuntoDescarga;
1001 $scope.notaPedido.domicilio = {dom: ''}; 1001 $scope.notaPedido.domicilio = {dom: ''};
1002 $scope.notaPedido.cliente = {}; 1002 $scope.notaPedido.cliente = {};
1003 $scope.$broadcast('removeCabecera', 'Cliente:'); 1003 $scope.$broadcast('removeCabecera', 'Cliente:');
1004 $scope.$broadcast('removeCabecera', 'Domicilio:'); 1004 $scope.$broadcast('removeCabecera', 'Domicilio:');
1005 $scope.$broadcast('removeCabecera', 'Puntos de descarga:'); 1005 $scope.$broadcast('removeCabecera', 'Puntos de descarga:');
1006 } 1006 }
1007 } 1007 }
1008 ]); 1008 ]);
1009 1009
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