Commit 38b25c9d8e646ed4f947793bd9041bcbc70417b3

Authored by Nicolás Guarnieri
Exists in master

merge from upstream

... ... @@ -45,7 +45,7 @@ gulp.task('uglify', ['templates'], function() {
45 45 uglify(),
46 46 replace('"ngRoute","ui.bootstrap","focaModalVendedores","focaBusquedaProductos",'+
47 47 '"focaModalPetroleras","focaBusquedaCliente","focaModalPrecioCondicion",'+
48   - '"focaModalFlete","focaDirectivas","focaModal"', ''),
  48 + '"focaModalFlete","focaDirectivas","focaModal","focaModalDomicilio"', ''),
49 49 gulp.dest(paths.dist)
50 50 ]
51 51 );
... ... @@ -82,3 +82,7 @@ gulp.task('clean-post-install', function() {
82 82 });
83 83  
84 84 gulp.task('default', ['webserver']);
  85 +
  86 +gulp.task('watch', function() {
  87 + gulp.watch([paths.srcJS, paths.srcViews], ['uglify']);
  88 +});
... ... @@ -22,6 +22,7 @@
22 22 <script src="node_modules/foca-modal-precio-condiciones/dist/foca-modal-precio-condiciones.min.js"></script>
23 23 <script src="node_modules/foca-modal-flete/dist/foca-modal-flete.min.js"></script>
24 24 <script src="node_modules/foca-modal/dist/foca-modal.min.js"></script>
  25 + <script src="node_modules/foca-modal-domicilio/dist/foca-modal-domicilios.min.js"></script>
25 26  
26 27 <script src="src/js/app.js"></script>
27 28 <script src="src/js/controller.js"></script>
... ... @@ -8,7 +8,7 @@
8 8 "compile": "gulp uglify",
9 9 "gulp-pre-commit": "gulp pre-commit",
10 10 "postinstall": "npm run compile && gulp clean-post-install",
11   - "install-dev": "npm install -D jasmine-core pre-commit angular angular-route bootstrap ui-bootstrap4 font-awesome gulp gulp-angular-templatecache gulp-connect gulp-clean gulp-htmlmin gulp-jshint gulp-rename gulp-replace gulp-sequence gulp-uglify-es gulp-uglify jquery jshint pump git+https://debo.suite.repo/modulos-npm/foca-directivas.git git+https://debo.suite.repo/modulos-npm/foca-modal-vendedores.git git+https://debo.suite.repo/modulos-npm/foca-modal-petroleras.git git+https://debo.suite.repo/modulos-npm/foca-modal-busqueda-productos git+https://debo.suite.repo/modulos-npm/foca-busqueda-cliente.git git+https://debo.suite.repo/modulos-npm/foca-modal-precio-condiciones.git git+https://debo.suite.repo/modulos-npm/foca-modal-flete git+https://debo.suite.repo/modulos-npm/foca-modal.git"
  11 + "install-dev": "npm install -D jasmine-core pre-commit angular angular-route bootstrap ui-bootstrap4 font-awesome gulp gulp-angular-templatecache gulp-connect gulp-clean gulp-htmlmin gulp-jshint gulp-rename gulp-replace gulp-sequence gulp-uglify-es gulp-uglify jquery jshint pump git+https://debo.suite.repo/modulos-npm/foca-directivas.git git+https://debo.suite.repo/modulos-npm/foca-modal-vendedores.git git+https://debo.suite.repo/modulos-npm/foca-modal-petroleras.git git+https://debo.suite.repo/modulos-npm/foca-modal-busqueda-productos git+https://debo.suite.repo/modulos-npm/foca-busqueda-cliente.git git+https://debo.suite.repo/modulos-npm/foca-modal-precio-condiciones.git git+https://debo.suite.repo/modulos-npm/foca-modal-flete git+https://debo.suite.repo/modulos-npm/foca-modal.git git+https://debo.suite.repo/modulos-npm/foca-modal-domicilio.git"
12 12 },
13 13 "pre-commit": [
14 14 "gulp-pre-commit"
... ... @@ -34,6 +34,7 @@
34 34 "foca-directivas": "git+https://debo.suite.repo/modulos-npm/foca-directivas.git",
35 35 "foca-modal": "git+https://debo.suite.repo/modulos-npm/foca-modal.git",
36 36 "foca-modal-busqueda-productos": "git+https://debo.suite.repo/modulos-npm/foca-modal-busqueda-productos",
  37 + "foca-modal-domicilio": "git+https://debo.suite.repo/modulos-npm/foca-modal-domicilio.git",
37 38 "foca-modal-flete": "git+https://debo.suite.repo/modulos-npm/foca-modal-flete",
38 39 "foca-modal-petroleras": "git+https://debo.suite.repo/modulos-npm/foca-modal-petroleras.git",
39 40 "foca-modal-precio-condiciones": "git+https://debo.suite.repo/modulos-npm/foca-modal-precio-condiciones.git",
... ... @@ -8,5 +8,6 @@ angular.module(&#39;focaCrearNotaPedido&#39;, [
8 8 'focaModalPrecioCondicion',
9 9 'focaModalFlete',
10 10 'focaDirectivas',
11   - 'focaModal'
  11 + 'focaModal',
  12 + 'focaModalDomicilio'
12 13 ]);
src/js/controller.js
1 1 angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
2 2 [
3   - '$scope', '$uibModal', '$location', 'crearNotaPedidoService', 'focaModalService',
4   - function($scope, $uibModal, $location, crearNotaPedidoService, focaModalService) {
  3 + '$scope', '$uibModal', '$location', '$filter', 'crearNotaPedidoService',
  4 + 'focaModalService',
  5 + function(
  6 + $scope, $uibModal, $location, $filter, crearNotaPedidoService, focaModalService
  7 + ) {
5 8 $scope.botonera = [
6 9 {texto: 'Vendedor', accion: function() {$scope.seleccionarVendedor();}},
7 10 {texto: 'Cliente', accion: function() {$scope.seleccionarCliente();}},
  11 + {texto: 'Proveedor', accion: function() {}},
8 12 {texto: 'Moneda', accion: function() {$scope.abrirModalMoneda();}},
9 13 {
10 14 texto: 'Precios y condiciones',
11 15 accion: function() {$scope.abrirModalListaPrecio();}},
12 16 {texto: 'Flete', accion: function() {$scope.abrirModalFlete();}},
13   - {texto: 'Bomba', accion: function() {}},
14   - {texto: 'Detalle', accion: function() {}},
15   - {texto: 'Totales', accion: function() {}}
  17 + {texto: '', accion: function() {}},
  18 + {texto: '', accion: function() {}}
16 19 ];
17 20  
18 21 $scope.show = false;
... ... @@ -228,10 +231,29 @@ angular.module(&#39;focaCrearNotaPedido&#39;) .controller(&#39;notaPedidoCtrl&#39;,
228 231 );
229 232 return;
230 233 }
231   - $scope.domiciliosCliente = data.data;
  234 + var modalInstanceDomicilio = $uibModal.open(
  235 + {
  236 + ariaLabelledBy: 'Busqueda de Domicilios',
  237 + templateUrl: 'modal-domicilio.html',
  238 + controller: 'focaModalDomicilioController',
  239 + resolve: { idCliente: function() { return cliente.cod; }},
  240 + size: 'lg',
  241 + backdrop: 'static',
  242 + }
  243 + );
  244 + modalInstanceDomicilio.result.then(
  245 + function(domicilio) {
  246 + focaModalService.alert('Domicilio elegido' + domicilio.dom);
  247 + }, function() {
  248 + $scope.notaPedido.cliente.nombre = '';
  249 + $scope.notaPedido.cliente.id = '';
  250 + removeCabecera('Cliente:');
  251 + $scope.seleccionarCliente();
  252 + return;
  253 + }
  254 + );
232 255 }
233 256 );
234   -
235 257 addCabecera('Cliente:', cliente.nom);
236 258 }, function() {
237 259  
... ... @@ -293,18 +315,33 @@ angular.module(&#39;focaCrearNotaPedido&#39;) .controller(&#39;notaPedidoCtrl&#39;,
293 315 ariaLabelledBy: 'Busqueda de Flete',
294 316 templateUrl: 'modal-flete.html',
295 317 controller: 'focaModalFleteController',
296   - size: 'lg'
  318 + size: 'lg',
  319 + resolve: {
  320 + parametrosFlete:
  321 + function() {
  322 + return {
  323 + flete: $scope.notaPedido.flete,
  324 + bomba: $scope.notaPedido.bomba,
  325 + kilometros: $scope.notaPedido.kilometros
  326 + };
  327 + }
  328 + }
297 329 }
298 330 );
299 331 modalInstance.result.then(
300   - function(flete) {
301   - $scope.limpiarFlete();
302   - $scope.notaPedido.fleteNombre = flete.nombre;
303   - $scope.notaPedido.fleteId = flete.id;
304   - $scope.choferes = flete.chofer;
305   - $scope.vehiculos = flete.vehiculo;
306   -
307   - addCabecera('Flete:', flete.nombre);
  332 + function(datos) {
  333 + $scope.notaPedido.flete = datos.flete;
  334 + $scope.notaPedido.bomba = datos.bomba;
  335 + $scope.notaPedido.kilometros = datos.kilometros;
  336 +
  337 + addCabecera('Flete:', datos.flete);
  338 + if(datos.flete === 'si') {
  339 + addCabecera('Bomba:', datos.bomba);
  340 + addCabecera('Kilometros:', datos.kilometros);
  341 + } else {
  342 + removeCabecera('Bomba:');
  343 + removeCabecera('Kilometros:');
  344 + }
308 345 }, function() {
309 346  
310 347 }
... ... @@ -403,22 +440,18 @@ angular.module(&#39;focaCrearNotaPedido&#39;) .controller(&#39;notaPedidoCtrl&#39;,
403 440 };
404 441  
405 442 function addCabecera(label, valor) {
406   - let existe = false;
407   -
408   - for (var i = $scope.cabecera.length - 1; i >= 0; i--) {
409   - if ($scope.cabecera[i].label === label) {
410   - $scope.cabecera[i].valor = valor;
411   - existe = true;
412   - break;
413   - }
414   -
  443 + var propiedad = $filter('filter')($scope.cabecera, {label: label});
  444 + if(propiedad.length === 1) {
  445 + propiedad[0].valor = valor;
  446 + } else {
  447 + $scope.cabecera.push({label: label, valor: valor});
415 448 }
416   -
417   - if (!existe) {
418   - $scope.cabecera.push({
419   - label: label,
420   - valor: valor
421   - });
  449 + }
  450 +
  451 + function removeCabecera(label) {
  452 + var propiedad = $filter('filter')($scope.cabecera, {label: label});
  453 + if(propiedad.length === 1){
  454 + $scope.cabecera.splice($scope.cabecera.indexOf(propiedad[0]), 1);
422 455 }
423 456 }
424 457 }
src/views/nota-pedido.html
... ... @@ -5,13 +5,13 @@
5 5 <div class="row p-1 panel-informativo">
6 6 <div class="col-12">
7 7 <div class="row">
8   - <div class="col-3">
9   - {{ now | date:'dd/MM/yyyy HH:mm'}}
  8 + <div class="col-5">
  9 + <div class="h4">NOTA DE PEDIDO</div>
10 10 </div>
11   - <div class="col-6 text-center">
12   - <div class="h2">NOTA DE PEDIDO</div>
  11 + <div class="col-3">Nº {{puntoVenta}}-{{comprobante}}</div>
  12 + <div class="col-4 text-right">
  13 + Fecha: {{ now | date:'dd/MM/yyyy HH:mm'}}
13 14 </div>
14   - <div class="col-3 text-right">{{puntoVenta}}-{{comprobante}}</div>
15 15 </div>
16 16 <div class="row">
17 17 <div class="col-auto" ng-repeat="cab in cabecera">
... ... @@ -22,13 +22,23 @@
22 22 </div>
23 23 </div>
24 24 <div class="row p-1 botonera-secundaria">
25   - <div class=" col-12 col-sm-6 col-md-3 botonera" ng-repeat="boton in botonera">
26   - <button
27   - type="button"
28   - class="btn btn-default btn-block btn-xs"
29   - ng-bind="boton.texto"
30   - ng-click="boton.accion()"
31   - ></button>
  25 + <div class="col-12">
  26 + <div class="row">
  27 + <div class="col-3 px-0 py-0" ng-repeat="boton in botonera">
  28 + <button
  29 + type="button"
  30 + class="btn btn-default btn-block btn-xs text-left py-2"
  31 + ng-click="boton.accion()"
  32 + >
  33 + <i
  34 + class="fa fa-arrow-circle-right"
  35 + ng-show="boton.texto != ''"
  36 + ></i>
  37 + &nbsp;
  38 + {{boton.texto}}
  39 + </button>
  40 + </div>
  41 + </div>
32 42 </div>
33 43 </div>
34 44 </div>
... ... @@ -40,11 +50,10 @@
40 50 <table class="table table-striped table-sm table-dark">
41 51 <thead>
42 52 <tr>
43   - <th>Sector</th>
44 53 <th>Código</th>
45 54 <th>Descripción</th>
46   - <th>Precio Unitario</th>
47 55 <th>Cantidad</th>
  56 + <th>Precio Unitario</th>
48 57 <th>SubTotal</th>
49 58 <th>
50 59 <button
... ... @@ -71,21 +80,13 @@
71 80 <tr ng-show="!cargando">
72 81 <td><input
73 82 class="form-control"
74   - ng-model="articuloACargar.sector"
75   - readonly></td>
76   - <td><input
77   - class="form-control"
78   - ng-model="articuloACargar.codigo"
  83 + ng-model="articuloACargar.sector + '-' + articuloACargar.codigo"
79 84 readonly></td>
80 85 <td><input
81 86 class="form-control"
82 87 ng-model="articuloACargar.descripcion"
83 88 readonly></td>
84   - <td><input
85   - class="form-control"
86   - ng-value="articuloACargar.precio | currency: '$'"
87   - readonly></td>
88   - <td><input
  89 + <td class="text-right"><input
89 90 class="form-control"
90 91 type="number"
91 92 min="1"
... ... @@ -93,7 +94,11 @@
93 94 foca-focus="!cargando"
94 95 esc-key="resetFilter()"
95 96 ng-keypress="agregarATabla($event.keyCode)"></td>
96   - <td><input
  97 + <td class="text-right"><input
  98 + class="form-control"
  99 + ng-value="articuloACargar.precio | currency: '$'"
  100 + readonly></td>
  101 + <td class="text-right"><input
97 102 class="form-control"
98 103 ng-value="getSubTotal() | currency: '$'"
99 104 readonly></td>
... ... @@ -107,11 +112,9 @@
107 112 ng-repeat="(key, articulo) in articulosTabla"
108 113 ng-show="show || key == 0"
109 114 >
110   - <td ng-bind="articulo.sector"></td>
111   - <td ng-bind="articulo.codigo"></td>
  115 + <td ng-bind="articulo.sector + '-' + articulo.codigo"></td>
112 116 <td ng-bind="articulo.descripcion"></td>
113   - <td ng-bind="articulo.precio | currency: '$'"></td>
114   - <td><input
  117 + <td class="text-right"><input
115 118 ng-show="articulo.edit"
116 119 ng-model="articulo.cantidad"
117 120 class="form-control"
... ... @@ -128,7 +131,9 @@
128 131 ng-bind="articulo.cantidad">
129 132 </i>
130 133 </td>
  134 + <td class="text-right" ng-bind="articulo.precio | currency: '$'"></td>
131 135 <td
  136 + class="text-right"
132 137 ng-bind="(articulo.precio * articulo.cantidad) | currency: '$'">
133 138 </td>
134 139 <td class="text-center">
... ... @@ -141,7 +146,7 @@
141 146 </td>
142 147 </tr>
143 148 <tr ng-show="cargando">
144   - <td colspan="7">
  149 + <td colspan="6">
145 150 <input
146 151 placeholder="Seleccione Articulo"
147 152 class="form-control form-control-sm"
... ... @@ -153,7 +158,7 @@
153 158 </tbody>
154 159 <tfoot>
155 160 <tr class="">
156   - <td colspan="4">
  161 + <td colspan="3">
157 162 <strong>Cantidad Items:</strong>
158 163 <a ng-bind="articulosTabla.length"></a>
159 164 </td>
... ... @@ -161,29 +166,38 @@
161 166 <td class="table-celda-total text-right" colspan="1">
162 167 <h3>{{getTotal() | currency: '$'}}</h3>
163 168 </td>
164   - <td colspan="2"></td>
  169 + <td colspan="2" class="text-right">
  170 + <button
  171 + type="button"
  172 + class="btn btn-default btn-sm"
  173 + >
  174 + Totales
  175 + </button>
  176 + </td>
165 177 </tr>
166 178 </tfoot>
167 179 </table>
168 180 </div>
169 181 </div>
170   - <div class="col-auto my-2">
171   - <button
172   - ng-click="crearNotaPedido()"
173   - type="submit"
174   - title="Crear nota pedido"
175   - class="btn btn-default">
176   - Guardar
177   - </button>
178   - <br/>
179   - <br/>
180   - <button
181   - ng-click="salir()"
182   - type="button"
183   - title="Salir"
184   - class="btn btn-default">
185   - Salir
186   - </button>
  182 + <div class="col-auto my-2 col-lg-2 botonera-lateral">
  183 + <div class="row align-items-end">
  184 + <div class="col-12">
  185 + <button
  186 + ng-click="crearNotaPedido()"
  187 + type="submit"
  188 + title="Crear nota pedido"
  189 + class="btn btn-default btn-block mb-2">
  190 + Guardar
  191 + </button>
  192 + <button
  193 + ng-click="salir()"
  194 + type="button"
  195 + title="Salir"
  196 + class="btn btn-default btn-block">
  197 + Salir
  198 + </button>
  199 + </div>
  200 + </div>
187 201 </div>
188 202 </div>
189 203 </div>