Commit 8862ecdfd96fc9373f96b7419b989603e18d5e04
Exists in
master
and in
1 other branch
Merge branch 'develop' into 'master'
Develop See merge request !77
Showing
3 changed files
Show diff stats
src/js/controller.js
... | ... | @@ -23,6 +23,8 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
23 | 23 | |
24 | 24 | function config() { |
25 | 25 | // PARAMETROS INICIALES PARA FUNCIONAMIENTO DEL PROGRAMA |
26 | + $scope.tmpCantidad = Number; | |
27 | + $scope.tmpPrecio = Number; | |
26 | 28 | $scope.notaPedido = {}; |
27 | 29 | $scope.isNumber = angular.isNumber; |
28 | 30 | $scope.datepickerAbierto = false; |
... | ... | @@ -48,20 +50,30 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
48 | 50 | if (APP === 'distribuidor') { |
49 | 51 | $scope.idVendedor = focaLoginService.getLoginData().vendedorCobrador; |
50 | 52 | } |
51 | - | |
52 | 53 | //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' |
53 | - crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) { | |
54 | - var monedaPorDefecto = res.data[0]; | |
54 | + //Trabajo con el proveedor YPF, por eso uso siempre la primera | |
55 | + | |
56 | + var promiseMoneda = crearNotaPedidoService.getCotizacionByIdMoneda(1); | |
57 | + var promiseProveedor = crearNotaPedidoService.getProveedorById(1); | |
58 | + | |
59 | + Promise.all([promiseMoneda, promiseProveedor]).then(function(res) { | |
60 | + var monedaPorDefecto = res[0].data[0]; | |
55 | 61 | $scope.notaPedido.cotizacion = Object.assign( |
56 | 62 | {moneda: monedaPorDefecto}, |
57 | 63 | monedaPorDefecto.cotizaciones[0] |
58 | 64 | ); |
59 | 65 | $scope.inicial.cotizacion = $scope.notaPedido.cotizacion; |
66 | + var proveedorPorDefecto = res[1].data[0]; | |
67 | + $scope.notaPedido.proveedor = Object.assign( | |
68 | + {proveedor: proveedorPorDefecto} | |
69 | + ); | |
70 | + $scope.inicial.proveedor = $scope.notaPedido.proveedor; | |
71 | + | |
60 | 72 | $timeout(function() {getLSNotaPedido();}); |
61 | 73 | }); |
62 | 74 | |
63 | 75 | init(); |
64 | - | |
76 | + | |
65 | 77 | } |
66 | 78 | |
67 | 79 | function init() { |
... | ... | @@ -76,7 +88,10 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
76 | 88 | fechaCarga: new Date(), |
77 | 89 | cotizacion: {}, |
78 | 90 | articulosNotaPedido: [], |
79 | - notaPedidoPlazo: [] | |
91 | + notaPedidoPlazo: [], | |
92 | + notaPedidoPuntoDescarga: { | |
93 | + puntoDescarga: {} | |
94 | + } | |
80 | 95 | }; |
81 | 96 | $scope.idLista = undefined; |
82 | 97 | |
... | ... | @@ -125,6 +140,9 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
125 | 140 | if (!$scope.notaPedido.cliente.COD) { |
126 | 141 | focaModalService.alert('Ingrese Cliente'); |
127 | 142 | return; |
143 | + } else if ($scope.notaPedido.idRemito === -1) { | |
144 | + focaBotoneraLateralService.alert('No se puede modificar esta nota de pedido'); | |
145 | + return; | |
128 | 146 | } else if (!$scope.notaPedido.proveedor.COD) { |
129 | 147 | focaModalService.alert('Ingrese Proveedor'); |
130 | 148 | return; |
... | ... | @@ -149,6 +167,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
149 | 167 | focaModalService.alert('Debe cargar al menos un articulo'); |
150 | 168 | return; |
151 | 169 | } |
170 | + | |
152 | 171 | focaBotoneraLateralService.startGuardar(); |
153 | 172 | $scope.saveLoading = true; |
154 | 173 | var notaPedido = { |
... | ... | @@ -217,8 +236,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
217 | 236 | focaBotoneraLateralService.endGuardar(); |
218 | 237 | $scope.saveLoading = false; |
219 | 238 | console.info(error); |
220 | - } | |
221 | - ); | |
239 | + }); | |
222 | 240 | }; |
223 | 241 | |
224 | 242 | $scope.seleccionarNotaPedido = function() { |
... | ... | @@ -313,19 +331,19 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
313 | 331 | idDomicilio: $scope.notaPedido.domicilio.id, |
314 | 332 | idCliente: $scope.notaPedido.cliente.COD, |
315 | 333 | articulos: $scope.notaPedido.articulosNotaPedido, |
316 | - puntosDescarga: $scope.notaPedido.notaPedidoPuntoDescarga, | |
334 | + puntoDescarga: $scope.notaPedido.notaPedidoPuntoDescarga, | |
317 | 335 | domicilio: $scope.notaPedido.domicilio |
318 | 336 | } |
319 | 337 | } |
320 | 338 | } |
321 | 339 | ); |
322 | 340 | modalInstance.result.then( |
323 | - function(puntosDescarga) { | |
324 | - $scope.notaPedido.notaPedidoPuntoDescarga = puntosDescarga; | |
341 | + function(puntoDescarga) { | |
342 | + $scope.notaPedido.notaPedidoPuntoDescarga = puntoDescarga; | |
325 | 343 | |
326 | 344 | $scope.$broadcast('addCabecera', { |
327 | 345 | label: 'Puntos de descarga:', |
328 | - valor: getCabeceraPuntoDescarga(puntosDescarga) | |
346 | + valor: getCabeceraPuntoDescarga(puntoDescarga) | |
329 | 347 | }); |
330 | 348 | }, function() { |
331 | 349 | $scope.abrirModalDomicilios($scope.cliente); |
... | ... | @@ -530,7 +548,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
530 | 548 | domicilio.Localidad + ', ' + domicilio.Provincia; |
531 | 549 | $scope.notaPedido.domicilioStamp = domicilioStamp; |
532 | 550 | |
533 | - $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntosDescarga; | |
551 | + $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntoDescarga; | |
534 | 552 | |
535 | 553 | $scope.$broadcast('addCabecera', { |
536 | 554 | label: 'Cliente:', |
... | ... | @@ -579,7 +597,16 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
579 | 597 | focaModalService.alert('Primero seleccione un cliente'); |
580 | 598 | return; |
581 | 599 | } |
582 | - if (validarNotaRemitada()) { | |
600 | + if ($scope.notaPedido.articulosNotaPedido.length !== 0) { | |
601 | + focaModalService.confirm('Se perderan los productos ingresados').then(function(data) { | |
602 | + if (data) { | |
603 | + abrirModal(); | |
604 | + } | |
605 | + }); | |
606 | + } else if (validarNotaRemitada()) { | |
607 | + abrirModal(); | |
608 | + } | |
609 | + function abrirModal() { | |
583 | 610 | var modalInstance = $uibModal.open( |
584 | 611 | { |
585 | 612 | ariaLabelledBy: 'Busqueda de Precio Condición', |
... | ... | @@ -593,6 +620,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
593 | 620 | } |
594 | 621 | } |
595 | 622 | ); |
623 | + | |
596 | 624 | modalInstance.result.then( |
597 | 625 | function(precioCondicion) { |
598 | 626 | var cabecera = ''; |
... | ... | @@ -739,18 +767,28 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
739 | 767 | $scope.notaPedido.articulosNotaPedido.splice(key, 1); |
740 | 768 | }; |
741 | 769 | |
742 | - $scope.editarArticulo = function(key, articulo) { | |
770 | + $scope.editarArticulo = function(key, articulo, tmpCantidad, tmpPrecio) { | |
743 | 771 | if (key === 13) { |
744 | - if (articulo.cantidad === null || articulo.cantidad === 0 || | |
745 | - articulo.cantidad === undefined) { | |
746 | - focaModalService.alert('El valor debe ser al menos 1'); | |
772 | + if (!articulo.cantidad || !articulo.precio) { | |
773 | + focaModalService.alert('Los valores deben ser al menos 1'); | |
774 | + return; | |
775 | + } else if (articulo.cantidad < 0 || articulo.precio < 0) { | |
776 | + focaModalService.alert('Los valores no pueden ser negativos'); | |
747 | 777 | return; |
748 | 778 | } |
749 | - articulo.editCantidad = false; | |
750 | - articulo.editPrecio = false; | |
779 | + articulo.cantidad = tmpCantidad; | |
780 | + articulo.precio = tmpPrecio; | |
781 | + $scope.getTotal(); | |
782 | + articulo.editCantidad = articulo.editPrecio = false; | |
751 | 783 | } |
752 | 784 | }; |
753 | 785 | |
786 | + $scope.cancelarEditar = function(articulo) { | |
787 | + $scope.tmpCantidad = articulo.cantidad; | |
788 | + $scope.tmpPrecio = articulo.precio; | |
789 | + articulo.editCantidad = articulo.editPrecio = false; | |
790 | + }; | |
791 | + | |
754 | 792 | $scope.cambioEdit = function(articulo, propiedad) { |
755 | 793 | if (propiedad === 'cantidad') { |
756 | 794 | articulo.editCantidad = true; |
... | ... | @@ -902,19 +940,22 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', |
902 | 940 | ); |
903 | 941 | |
904 | 942 | if (notaPedido.notaPedidoPuntoDescarga) { |
905 | - var puntosDescarga = notaPedido.notaPedidoPuntoDescarga | |
943 | + var puntos = []; | |
944 | + notaPedido.notaPedidoPuntoDescarga.forEach(function(notaPedidoPuntoDescarga, idx, arr) { | |
945 | + puntos.push(notaPedidoPuntoDescarga.puntoDescarga); | |
946 | + }); | |
906 | 947 | cabeceras.push({ |
907 | 948 | label: 'Puntos de descarga: ', |
908 | - valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntosDescarga)) | |
949 | + valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntos)) | |
909 | 950 | }); |
910 | 951 | } |
911 | 952 | |
912 | 953 | addArrayCabecera(cabeceras); |
913 | 954 | } |
914 | 955 | |
915 | - function getCabeceraPuntoDescarga(puntosDescarga){ | |
956 | + function getCabeceraPuntoDescarga(puntoDescarga){ | |
916 | 957 | var puntosStamp = ''; |
917 | - puntosDescarga.forEach(function(punto, idx, arr) { | |
958 | + puntoDescarga.forEach(function(punto, idx, arr) { | |
918 | 959 | puntosStamp += punto.descripcion; |
919 | 960 | if ((idx + 1) !== arr.length) puntosStamp += ', '; |
920 | 961 | }); |
src/js/service.js
... | ... | @@ -94,6 +94,10 @@ angular.module('focaCrearNotaPedido') |
94 | 94 | }, |
95 | 95 | getVendedorById: function(id) { |
96 | 96 | return $http.get(API_ENDPOINT.URL + '/vendedor-cobrador/' + id); |
97 | + }, | |
98 | + getProveedorById: function(id) { | |
99 | + return $http.get(API_ENDPOINT.URL + '/proveedor/' + id); | |
97 | 100 | } |
101 | + | |
98 | 102 | }; |
99 | 103 | }]); |
src/views/nota-pedido.html
... | ... | @@ -68,43 +68,48 @@ |
68 | 68 | ></td> |
69 | 69 | <td class="col text-right"> |
70 | 70 | <input |
71 | - ng-show="articulo.editCantidad" | |
72 | - ng-model="articulo.cantidad" | |
71 | + ng-show="articulo.editCantidad && notaPedido.idRemito !== -1" | |
72 | + ng-model="tmpCantidad" | |
73 | 73 | class="form-control" |
74 | 74 | foca-tipo-input |
75 | 75 | min="1" |
76 | - step="0.001" | |
77 | 76 | foca-focus="articulo.editCantidad" |
78 | - ng-keypress="editarArticulo($event.keyCode, articulo)" | |
79 | - ng-focus="selectFocus($event)" | |
77 | + ng-keypress="editarArticulo($event.keyCode, articulo, tmpCantidad, tmpPrecio);" | |
78 | + esc-key="cancelarEditar(articulo)" | |
79 | + ng-focus="selectFocus($event); | |
80 | + tmpCantidad = articulo.cantidad; | |
81 | + tmpPrecio = articulo.precio" | |
80 | 82 | teclado-virtual |
81 | 83 | > |
82 | 84 | <i |
83 | 85 | class="selectable" |
84 | 86 | ng-click="cambioEdit(articulo, 'cantidad')" |
85 | - ng-hide="articulo.editCantidad" | |
87 | + ng-hide="articulo.editCantidad && notaPedido.idRemito !== -1" | |
86 | 88 | ng-bind="articulo.cantidad"> |
87 | 89 | </i> |
88 | 90 | </td> |
89 | 91 | <td class="col text-right"> |
90 | 92 | <input |
91 | - ng-show="articulo.editPrecio" | |
92 | - ng-model="articulo.precio" | |
93 | + ng-show="articulo.editPrecio && notaPedido.idRemito !== -1" | |
94 | + ng-model="tmpPrecio" | |
93 | 95 | class="form-control" |
94 | 96 | foca-tipo-input |
95 | - min="0" | |
97 | + min="1" | |
96 | 98 | step="0.0001" |
97 | 99 | foca-focus="articulo.editPrecio" |
98 | - ng-keypress="editarArticulo($event.keyCode, articulo)" | |
99 | - ng-focus="selectFocus($event)" | |
100 | + ng-keypress="editarArticulo($event.keyCode, articulo, tmpCantidad, tmpPrecio);" | |
101 | + esc-key="cancelarEditar(articulo)" | |
102 | + ng-focus="selectFocus($event); | |
103 | + tmpCantidad = articulo.cantidad; | |
104 | + tmpPrecio = articulo.precio" | |
100 | 105 | teclado-virtual |
101 | 106 | > |
102 | 107 | <i |
103 | 108 | class="selectable" |
104 | - ng-click="idLista == -1 && cambioEdit(articulo, 'precio')" | |
105 | - ng-hide="articulo.editPrecio" | |
106 | - ng-bind="articulo.precio | | |
107 | - number: 4"> | |
109 | + ng-click="cambioEdit(articulo, 'precio')" | |
110 | + ng-hide="articulo.editPrecio && notaPedido.idRemito !== -1" | |
111 | + ng-bind="articulo.precio | number: 4" | |
112 | + > | |
108 | 113 | </i> |
109 | 114 | </td> |
110 | 115 | <td |