Commit 159e4967dfc63cf6213db87db09a8da2089613c5

Authored by Jose Pinto
Exists in master

Merge branch 'master' into 'master'

Nuevo diseño, muestra puntos cargados anteriormente

See merge request !3
1   -angular.module('focaModalPuntoDescarga', ['ui.bootstrap', 'focaDirectivas', 'angular-ladda']);
  1 +angular.module('focaModalPuntoDescarga', [
  2 + 'ui.bootstrap',
  3 + 'focaModal',
  4 + 'focaDirectivas',
  5 + 'angular-ladda'
  6 +]);
src/js/controller.js
... ... @@ -6,8 +6,9 @@ angular.module('focaModalPuntoDescarga')
6 6 '$uibModalInstance',
7 7 'focaModalPuntoDescargaService',
8 8 'filters',
  9 + 'focaModalService',
9 10 function($timeout, $filter, $scope, $uibModalInstance,
10   - focaModalPuntoDescargaService, filters) {
  11 + focaModalPuntoDescargaService, filters, focaModalService) {
11 12  
12 13 $scope.cantidadArticulo = 0;
13 14 $scope.articuloSeleccionado = 0;
... ... @@ -19,10 +20,14 @@ angular.module('focaModalPuntoDescarga')
19 20 id_da_config_0: filters.idDomicilio
20 21 };
21 22 $scope.articulos = angular.copy(filters.articulos);
  23 + $scope.articulos.map(function(articulo) {
  24 + articulo.restante = articulo.cantidad;
  25 + });
22 26 actualizarTabla();
  27 + cargarPuntos(filters.puntosDescarga);
23 28  
24 29 $scope.cancel = function() {
25   - if($scope.ingreso){
  30 + if($scope.ingreso) {
26 31 $scope.ingreso = false;
27 32 }else {
28 33 $uibModalInstance.dismiss('cancel');
... ... @@ -60,33 +65,56 @@ angular.module('focaModalPuntoDescarga')
60 65 };
61 66  
62 67 $scope.seleccionarPunto = function(idx) {
63   - $scope.puntosSeleccionados.push(idx);
  68 + var indexPunto = $scope.puntosSeleccionados.indexOf(idx);
  69 + if(indexPunto !== -1) {
  70 + $scope.puntosSeleccionados.splice(indexPunto, 1);
  71 + }else {
  72 + $scope.puntosSeleccionados.push(idx);
  73 + }
64 74 };
65 75  
66 76 $scope.agregarArticulo = function(punto) {
67 77 var articulo = $scope.articulos[$scope.articuloSeleccionado],
68   - cantidadRestante = articulo.cantidad - $scope.cantidadArticulo;
  78 + cantidadRestante = articulo.restante - punto.cantidadACargar;
69 79  
70 80 if(cantidadRestante < 0) {
71   - alert('La cantidad a cargar debe ser menor o igual al restante');
72   - }else if($scope.cantidadArticulo <= 0) {
73   - alert('La cantidad a cargar debe ser mayor que cero');
  81 + focaModalService.alert('La cantidad a cargar debe ser menor o igual al restante');
  82 + }else if(punto.cantidadACargar <= 0) {
  83 + focaModalService.alert('La cantidad a cargar debe ser mayor que cero');
74 84 }else {
75   - articulo.cantidad = cantidadRestante;
76   - punto.articulosAgregados.push({
77   - id: articulo.id,
78   - descripcion: articulo.descripcion,
79   - cantidad: $scope.cantidadArticulo,
80   - index: $scope.articuloSeleccionado
81   - });
82   - $scope.cantidadArticulo = 0;
  85 + punto.cargado += parseInt(punto.cantidadACargar);
  86 + articulo.restante = cantidadRestante;
  87 + var existeArticulo = punto.articulosAgregados.filter(
  88 + function (articuloAAgregar) {
  89 + return articuloAAgregar.id === articulo.id;
  90 + });
  91 + //Si el articulo ya fue agregado
  92 + if(existeArticulo.length) {
  93 + //Solo sumo cantidad
  94 + var total = parseInt(existeArticulo[0].cantidad) + parseInt(punto.cantidadACargar);
  95 + existeArticulo[0].cantidad = total;
  96 + }else {
  97 + //Agrego el articulo con la cantidad
  98 + punto.articulosAgregados.push({
  99 + id: articulo.id,
  100 + descripcion: articulo.descripcion,
  101 + cantidad: punto.cantidadACargar,
  102 + index: $scope.articuloSeleccionado
  103 + });
  104 + }
  105 + punto.cantidadACargar = 0;
83 106 }
84 107 };
85 108  
86 109 $scope.quitarArticulo = function(articulo, idx, punto) {
87   - var restante = parseInt($scope.articulos[articulo.index].cantidad);
  110 + var articuloAEliminar = $scope.articulos.filter(function(art) {
  111 + return art.id == articulo.id;
  112 + });
  113 + var restante = parseInt(articuloAEliminar[0].restante);
88 114 restante += parseInt(articulo.cantidad);
89   - $scope.articulos[articulo.index].cantidad = restante;
  115 + articuloAEliminar[0].restante = restante;
  116 +
  117 + punto.cargado -= parseInt(punto.articulosAgregados[idx].cantidad);
90 118 punto.articulosAgregados.splice(idx, 1);
91 119 };
92 120  
... ... @@ -106,10 +134,44 @@ angular.module(&#39;focaModalPuntoDescarga&#39;)
106 134  
107 135 $scope.puntosACargar.map(function(punto) {
108 136 punto.articulosAgregados = [];
  137 + punto.cantidadACargar = 0;
  138 + punto.cargado = 0;
109 139 });
110 140 }
111 141 function cargarArticulos() {
112 142 $uibModalInstance.close($scope.puntosACargar);
113 143 }
  144 + function cargarPuntos(puntosDescarga) {
  145 + //Si existen puntos ya cargados
  146 + if(puntosDescarga) {
  147 + if(!puntosDescarga[0].cargado) {
  148 + agregarTotalCargado(puntosDescarga);
  149 + }
  150 + $scope.puntosACargar = puntosDescarga;
  151 + $scope.cargaArticulos = true;
  152 + //Recorro los puntos
  153 + puntosDescarga.forEach(function(punto) {
  154 + //Recorro los articulos cargados en cada punto
  155 + punto.articulosAgregados.forEach(function(articulo) {
  156 + var articuloARestar = $scope.articulos.filter(function(art) {
  157 + return art.id == articulo.id;
  158 + });
  159 + articuloARestar[0].restante -= articulo.cantidad;
  160 + });
  161 + });
  162 + }
  163 + }
  164 + function agregarTotalCargado(puntosDescarga) {
  165 + puntosDescarga.map(function(punto) {
  166 + punto.cantidadACargar = 0;
  167 + punto.cargado = 0;
  168 + });
  169 + //Agrego cantidad de combustible cargada en los puntos de descarga
  170 + puntosDescarga.forEach(function(punto) {
  171 + punto.articulosAgregados.forEach(function(articulo) {
  172 + punto.cargado += articulo.cantidad;
  173 + });
  174 + });
  175 + }
114 176 }]
115 177 );
src/views/modal-punto-descarga.html
... ... @@ -50,13 +50,15 @@
50 50 <button
51 51 type="button"
52 52 class="btn btn-xs p-1 float-right mr-5"
53   - ng-click="eliminar(key, puntoDescarga.id)">
  53 + ng-click="eliminar(key, puntoDescarga.id)"
  54 + title="Eliminar">
54 55 <i class="fa fa-trash" aria-hidden="true"></i>
55 56 </button>
56 57 <button
57 58 type="button"
58 59 class="btn btn-xs p-1 float-right mr-1"
59   - ng-click="editar(puntoDescarga.id)">
  60 + ng-click="editar(puntoDescarga.id)"
  61 + title="Editar">
60 62 <i class="fa fa-pencil" aria-hidden="true"></i>
61 63 </button>
62 64 </td>
... ... @@ -88,10 +90,11 @@
88 90 <div class="col-12">
89 91 <label>Descripción</label>
90 92 <textarea
91   - class="form-control form-control-sm"
  93 + class="form-control form-control-sm text-uppercase"
92 94 cols="30"
93 95 rows="5"
94   - ng-model="puntoDescarga.descripcion"></textarea>
  96 + ng-model="puntoDescarga.descripcion">
  97 + </textarea>
95 98 </div>
96 99 </div>
97 100 </form>
... ... @@ -101,61 +104,90 @@
101 104 </div>
102 105 <div ng-show="articulos.length > 0">
103 106 <div class="row">
104   - <div class="form-check ml-4" ng-repeat="(key, articulo) in articulos">
105   - <input
106   - class="form-check-input"
107   - type="radio"
108   - name="exampleRadios"
109   - id="inputRadio{{key}}"
110   - ng-value="key"
111   - ng-model="$parent.articuloSeleccionado"
112   - >
113   - <label class="form-check-label" for="inputRadio{{key}}">
114   - {{articulo.descripcion}} <strong>Cantidad:</strong> {{articulo.cantidad}}
115   - </label>
116   - </div>
117   - </div>
118   - <div class="row">
119   - <div class="form-group col-3 mt-3">
120   - <label for="inputCantidad">Cantidad</label>
121   - <input
122   - type="text"
123   - class="form-control"
124   - id="inputCantidad"
125   - placeholder="Cantidad"
126   - ng-model="cantidadArticulo"
127   - >
  107 + <div class="col-12">
  108 + <table class="table table-sm">
  109 + <thead>
  110 + <tr>
  111 + <th></th>
  112 + <th>Articulo</th>
  113 + <th>Total</th>
  114 + <th>Restante</th>
  115 + </tr>
  116 + </thead>
  117 + <tbody>
  118 + <tr ng-repeat="(key, articulo) in articulos">
  119 + <td>
  120 + <input
  121 + type="radio"
  122 + ng-value="key"
  123 + ng-model="$parent.articuloSeleccionado"
  124 + >
  125 + </td>
  126 + <td ng-bind="articulo.descripcion"></td>
  127 + <td ng-bind="articulo.cantidad"></td>
  128 + <td ng-bind="articulo.restante"></td>
  129 + </tr>
  130 + </tbody>
  131 + </table>
128 132 </div>
129 133 </div>
130 134 <div class="row">
131   - <div class="col-6" ng-repeat="punto in puntosACargar">
132   - <div class="d-flex">
133   - <h6>{{punto.descripcion}}</h6>
134   - <button
135   - class="btn btn-sm btn-outline-primary ml-auto"
136   - type="button"
137   - ng-click="agregarArticulo(punto)"
138   - >
139   - Agregar
140   - </button>
141   - </div>
  135 + <div class="col-12">
  136 + <h5 class="col-12 my-3">Puntos de descarga</h5>
142 137 <table class="table table-sm">
143 138 <thead>
144 139 <tr>
145   - <th>Articulo</th>
  140 + <th>Lugar</th>
  141 + <th class="text-right">Total cargado</th>
146 142 <th class="text-right">Cantidad</th>
147 143 <th></th>
148 144 </tr>
149 145 </thead>
150 146 <tbody>
  147 + <tr ng-repeat="punto in puntosACargar">
  148 + <td ng-bind="punto.descripcion"></td>
  149 + <td ng-bind="punto.cargado" class="text-right"></td>
  150 + <td>
  151 + <input
  152 + type="text"
  153 + class="form-control col-4 float-right"
  154 + id="inputCantidad"
  155 + placeholder="A cargar"
  156 + ng-model="punto.cantidadACargar"
  157 + >
  158 + </td>
  159 + <td>
  160 + <button
  161 + class="btn btn-sm btn-outline-primary ml-auto"
  162 + type="button"
  163 + ng-click="agregarArticulo(punto)"
  164 + >
  165 + Agregar
  166 + </button>
  167 + </td>
  168 + </tr>
  169 + </tbody>
  170 + </table>
  171 + <table class="table table-sm">
  172 + <thead>
  173 + <tr>
  174 + <th>Lugar</th>
  175 + <th>Articulo</th>
  176 + <th class="text-right">Cantidad</th>
  177 + <th></th>
  178 + </tr>
  179 + </thead>
  180 + <tbody ng-repeat="punto in puntosACargar">
151 181 <tr ng-repeat="(key, articulo) in punto.articulosAgregados">
  182 + <td ng-bind="punto.descripcion"></td>
152 183 <td ng-bind="articulo.descripcion" class="p-2"></td>
153 184 <td ng-bind="articulo.cantidad" class="text-right p-2"></td>
154 185 <td class="p-2">
155 186 <button
156 187 type="button"
157 188 class="btn btn-xs p-1 float-right mr-5"
158   - ng-click="quitarArticulo(articulo, key, punto)">
  189 + ng-click="quitarArticulo(articulo, key, punto)"
  190 + title="Eliminar">
159 191 <i class="fa fa-trash" aria-hidden="true"></i>
160 192 </button>
161 193 </td>