Commit e84a664b9afe447d9991435146a407b225e715ab

Authored by Pablo Marco del Pont
Exists in master

Merge branch 'master' into 'master'

Master (pmarco)

See merge request modulos-npm/foca-crear-nota-pedido!21
src/js/controller.js
1 angular.module('focaCrearNotaPedido') 1 angular.module('focaCrearNotaPedido')
2 .controller('notaPedidoCtrl', 2 .controller('notaPedidoCtrl',
3 ['$scope', '$uibModal', 'crearNotaPedidoService', 'focaModalService', 3 ['$scope', '$uibModal', '$location', 'crearNotaPedidoService', 'focaModalService',
4 function($scope, $uibModal, crearNotaPedidoService, focaModalService) { 4 function($scope, $uibModal, $location, crearNotaPedidoService, focaModalService) {
5 $scope.botonera = [ 5 $scope.botonera = [
6 {texto: 'Vendedor', accion: function() {$scope.seleccionarVendedor();}}, 6 {texto: 'Vendedor', accion: function() {$scope.seleccionarVendedor();}},
7 {texto: 'Cliente', accion: function() {$scope.seleccionarCliente();}}, 7 {texto: 'Cliente', accion: function() {$scope.seleccionarCliente();}},
8 {texto: 'Moneda', accion: function() {$scope.abrirModalMoneda();}}, 8 {texto: 'Moneda', accion: function() {$scope.abrirModalMoneda();}},
9 { 9 {
10 texto: 'Precios y condiciones', 10 texto: 'Precios y condiciones',
11 accion: function() {$scope.abrirModalListaPrecio();}}, 11 accion: function() {$scope.abrirModalListaPrecio();}},
12 {texto: 'Flete', accion: function() {$scope.abrirModalFlete();}}, 12 {texto: 'Flete', accion: function() {$scope.abrirModalFlete();}},
13 {texto: 'Bomba', accion: function() {}}, 13 {texto: 'Bomba', accion: function() {}},
14 {texto: 'Detalle', accion: function() {}}, 14 {texto: 'Detalle', accion: function() {}},
15 {texto: 'Totales', accion: function() {}} 15 {texto: 'Totales', accion: function() {}}
16 ]; 16 ];
17 $scope.show = false; 17 $scope.show = false;
18 $scope.cargando = true; 18 $scope.cargando = true;
19 $scope.dateOptions = { 19 $scope.dateOptions = {
20 maxDate: new Date(), 20 maxDate: new Date(),
21 minDate: new Date(2010, 0, 1) 21 minDate: new Date(2010, 0, 1)
22 }; 22 };
23 $scope.notaPedido = { 23 $scope.notaPedido = {
24 vendedor: {}, 24 vendedor: {},
25 cliente: {}, 25 cliente: {},
26 domicilio: {dom: ''}, 26 domicilio: {dom: ''},
27 moneda: {detalle: ''} 27 moneda: {detalle: ''}
28 }; 28 };
29 $scope.articulosTabla = []; 29 $scope.articulosTabla = [];
30 var idLista; 30 var idLista;
31 var notaPedidoTemp = crearNotaPedidoService.getNotaPedido(); 31 var notaPedidoTemp = crearNotaPedidoService.getNotaPedido();
32 crearNotaPedidoService.getPrecioCondicion().then( 32 crearNotaPedidoService.getPrecioCondicion().then(
33 function(res) { 33 function(res) {
34 $scope.precioCondiciones = res.data; 34 $scope.precioCondiciones = res.data;
35 } 35 }
36 ); 36 );
37 if (notaPedidoTemp !== undefined) { 37 if (notaPedidoTemp !== undefined) {
38 notaPedidoTemp.fechaCarga = new Date(notaPedidoTemp.fechaCarga); 38 notaPedidoTemp.fechaCarga = new Date(notaPedidoTemp.fechaCarga);
39 $scope.notaPedido = notaPedidoTemp; 39 $scope.notaPedido = notaPedidoTemp;
40 $scope.notaPedido.flete = ($scope.notaPedido.flete).toString(); 40 $scope.notaPedido.flete = ($scope.notaPedido.flete).toString();
41 $scope.notaPedido.bomba = ($scope.notaPedido.bomba).toString(); 41 $scope.notaPedido.bomba = ($scope.notaPedido.bomba).toString();
42 idLista = $scope.notaPedido.precioCondicion; 42 idLista = $scope.notaPedido.precioCondicion;
43 crearNotaPedidoService 43 crearNotaPedidoService
44 .getArticulosByIdNotaPedido($scope.notaPedido.id).then( 44 .getArticulosByIdNotaPedido($scope.notaPedido.id).then(
45 function(res) { 45 function(res) {
46 $scope.articulosTabla = res.data; 46 $scope.articulosTabla = res.data;
47 } 47 }
48 ); 48 );
49 //TODO DOMICILIOS QUE SE CARGAN AL EDITAR NOTA DE PEDIDO 49 //TODO DOMICILIOS QUE SE CARGAN AL EDITAR NOTA DE PEDIDO
50 //(NO REQUERIDO EN ESTA VERSION) 50 //(NO REQUERIDO EN ESTA VERSION)
51 // crearNotaPedidoService.getDomiciliosByIdNotaPedido($scope.notaPedido.id).then( 51 // crearNotaPedidoService.getDomiciliosByIdNotaPedido($scope.notaPedido.id).then(
52 // function(res) { 52 // function(res) {
53 // $scope.notaPedido.domicilio = res.data; 53 // $scope.notaPedido.domicilio = res.data;
54 // } 54 // }
55 // ); 55 // );
56 } else { 56 } else {
57 $scope.notaPedido.fechaCarga = new Date(); 57 $scope.notaPedido.fechaCarga = new Date();
58 $scope.notaPedido.bomba = '0'; 58 $scope.notaPedido.bomba = '0';
59 $scope.notaPedido.flete = '0'; 59 $scope.notaPedido.flete = '0';
60 idLista = undefined; 60 idLista = undefined;
61 } 61 }
62 //TO DO - FUNCIONES PARA MULTIPLES DOMICILIOS NO IMPLEMENTADAS EN ESTA DEMO 62 //TO DO - FUNCIONES PARA MULTIPLES DOMICILIOS NO IMPLEMENTADAS EN ESTA DEMO
63 // $scope.addNewDom = function() { 63 // $scope.addNewDom = function() {
64 // $scope.notaPedido.domicilio.push({ 'id': 0 }); 64 // $scope.notaPedido.domicilio.push({ 'id': 0 });
65 // }; 65 // };
66 // $scope.removeNewChoice = function(choice) { 66 // $scope.removeNewChoice = function(choice) {
67 // if ($scope.notaPedido.domicilio.length > 1) { 67 // if ($scope.notaPedido.domicilio.length > 1) {
68 // $scope.notaPedido.domicilio.splice($scope.notaPedido.domicilio.findIndex( 68 // $scope.notaPedido.domicilio.splice($scope.notaPedido.domicilio.findIndex(
69 // function(c) { 69 // function(c) {
70 // return c.$$hashKey === choice.$$hashKey; 70 // return c.$$hashKey === choice.$$hashKey;
71 // } 71 // }
72 // ), 1); 72 // ), 1);
73 // } 73 // }
74 // }; 74 // };
75 $scope.crearNotaPedido = function() { 75 $scope.crearNotaPedido = function() {
76 if($scope.articulosTabla.length === 0) { 76 if($scope.articulosTabla.length === 0) {
77 focaModalService.alert('Debe cargar almenos un articulo'); 77 focaModalService.alert('Debe cargar almenos un articulo');
78 return; 78 return;
79 } 79 }
80 if($scope.notaPedido.domicilio.id === undefined) { 80 if($scope.notaPedido.domicilio.id === undefined) {
81 $scope.notaPedido.domicilio.id = 0; 81 $scope.notaPedido.domicilio.id = 0;
82 } 82 }
83 var date = new Date(); 83 var date = new Date();
84 var notaPedido = { 84 var notaPedido = {
85 id: 0, 85 id: 0,
86 fechaCarga: new Date(date.getTime() - (date.getTimezoneOffset() * 60000)) 86 fechaCarga: new Date(date.getTime() - (date.getTimezoneOffset() * 60000))
87 .toISOString().slice(0, 19).replace('T', ' '), 87 .toISOString().slice(0, 19).replace('T', ' '),
88 vendedor: $scope.notaPedido.vendedor.nombre, 88 vendedor: $scope.notaPedido.vendedor.nombre,
89 idCliente: $scope.notaPedido.cliente.id, 89 idCliente: $scope.notaPedido.cliente.id,
90 domicilio: $scope.notaPedido.domicilio, 90 domicilio: $scope.notaPedido.domicilio,
91 precioCondicion: $scope.notaPedido.precioCondicion, 91 precioCondicion: $scope.notaPedido.precioCondicion,
92 bomba: $scope.notaPedido.bomba, 92 bomba: $scope.notaPedido.bomba,
93 flete: $scope.notaPedido.flete, 93 flete: $scope.notaPedido.flete,
94 total: $scope.getTotal() 94 total: $scope.getTotal()
95 }; 95 };
96 crearNotaPedidoService.crearNotaPedido(notaPedido).then( 96 crearNotaPedidoService.crearNotaPedido(notaPedido).then(
97 function(data) { 97 function(data) {
98 focaModalService.alert('Nota pedido creada'); 98 focaModalService.alert('Nota pedido creada');
99 if($scope.notaPedido.flete === 1) { 99 if($scope.notaPedido.flete === 1) {
100 var flete = { 100 var flete = {
101 idNotaPedido: data.data.id, 101 idNotaPedido: data.data.id,
102 idTransportista: $scope.notaPedido.fleteId, 102 idTransportista: $scope.notaPedido.fleteId,
103 idChofer: $scope.notaPedido.chofer.id, 103 idChofer: $scope.notaPedido.chofer.id,
104 idVehiculo: $scope.notaPedido.vehiculo.id, 104 idVehiculo: $scope.notaPedido.vehiculo.id,
105 kilometros: $scope.notaPedido.kilometros, 105 kilometros: $scope.notaPedido.kilometros,
106 costoKilometro: $scope.notaPedido.costoUnitarioKmFlete 106 costoKilometro: $scope.notaPedido.costoUnitarioKmFlete
107 }; 107 };
108 crearNotaPedidoService.crearFlete(flete); 108 crearNotaPedidoService.crearFlete(flete);
109 } 109 }
110 var articulosNotaPedido = $scope.articulosTabla; 110 var articulosNotaPedido = $scope.articulosTabla;
111 for(var i = 0; i < articulosNotaPedido.length; i++) { 111 for(var i = 0; i < articulosNotaPedido.length; i++) {
112 delete articulosNotaPedido[i].edit; 112 delete articulosNotaPedido[i].edit;
113 articulosNotaPedido[i].idNotaPedido = data.data.id; 113 articulosNotaPedido[i].idNotaPedido = data.data.id;
114 crearNotaPedidoService 114 crearNotaPedidoService
115 .crearArticulosParaNotaPedido(articulosNotaPedido[i]); 115 .crearArticulosParaNotaPedido(articulosNotaPedido[i]);
116 } 116 }
117 $scope.limpiarPantalla(); 117 $scope.limpiarPantalla();
118 } 118 }
119 ); 119 );
120 }; 120 };
121 $scope.seleccionarArticulo = function() { 121 $scope.seleccionarArticulo = function() {
122 if (idLista === undefined) { 122 if (idLista === undefined) {
123 focaModalService.alert( 123 focaModalService.alert(
124 'Primero seleccione una lista de precio y condicion'); 124 'Primero seleccione una lista de precio y condicion');
125 return; 125 return;
126 } 126 }
127 var modalInstance = $uibModal.open( 127 var modalInstance = $uibModal.open(
128 { 128 {
129 ariaLabelledBy: 'Busqueda de Productos', 129 ariaLabelledBy: 'Busqueda de Productos',
130 templateUrl: 'modal-busqueda-productos.html', 130 templateUrl: 'modal-busqueda-productos.html',
131 controller: 'modalBusquedaProductosCtrl', 131 controller: 'modalBusquedaProductosCtrl',
132 resolve: { idLista: function() { return idLista; } }, 132 resolve: { idLista: function() { return idLista; } },
133 size: 'lg' 133 size: 'lg'
134 } 134 }
135 ); 135 );
136 modalInstance.result.then( 136 modalInstance.result.then(
137 function(producto) { 137 function(producto) {
138 var newArt = 138 var newArt =
139 { 139 {
140 id: 0, 140 id: 0,
141 codigo: producto.codigo, 141 codigo: producto.codigo,
142 sector: producto.sector, 142 sector: producto.sector,
143 descripcion: producto.descripcion, 143 descripcion: producto.descripcion,
144 item: $scope.articulosTabla.length + 1, 144 item: $scope.articulosTabla.length + 1,
145 nombre: producto.descripcion, 145 nombre: producto.descripcion,
146 precio: producto.precio.toFixed(2), 146 precio: producto.precio.toFixed(2),
147 costoUnitario: producto.costo, 147 costoUnitario: producto.costo,
148 edit: false 148 edit: false
149 }; 149 };
150 $scope.articuloACargar = newArt; 150 $scope.articuloACargar = newArt;
151 $scope.cargando = false; 151 $scope.cargando = false;
152 }, function() { 152 }, function() {
153 // funcion ejecutada cuando se cancela el modal 153 // funcion ejecutada cuando se cancela el modal
154 } 154 }
155 ); 155 );
156 }; 156 };
157 $scope.seleccionarVendedor = function() { 157 $scope.seleccionarVendedor = function() {
158 var modalInstance = $uibModal.open( 158 var modalInstance = $uibModal.open(
159 { 159 {
160 ariaLabelledBy: 'Busqueda de Vendedores', 160 ariaLabelledBy: 'Busqueda de Vendedores',
161 templateUrl: 'modal-vendedores.html', 161 templateUrl: 'modal-vendedores.html',
162 controller: 'modalVendedoresCtrl', 162 controller: 'modalVendedoresCtrl',
163 size: 'lg' 163 size: 'lg'
164 } 164 }
165 ); 165 );
166 modalInstance.result.then( 166 modalInstance.result.then(
167 function(vendedor) { 167 function(vendedor) {
168 $scope.notaPedido.vendedor.nombre = vendedor.NomVen; 168 $scope.notaPedido.vendedor.nombre = vendedor.NomVen;
169 }, function() { 169 }, function() {
170 170
171 } 171 }
172 ); 172 );
173 }; 173 };
174 $scope.seleccionarPetrolera = function() { 174 $scope.seleccionarPetrolera = function() {
175 var modalInstance = $uibModal.open( 175 var modalInstance = $uibModal.open(
176 { 176 {
177 ariaLabelledBy: 'Busqueda de Petrolera', 177 ariaLabelledBy: 'Busqueda de Petrolera',
178 templateUrl: 'modal-petroleras.html', 178 templateUrl: 'modal-petroleras.html',
179 controller: 'modalPetrolerasCtrl', 179 controller: 'modalPetrolerasCtrl',
180 size: 'lg' 180 size: 'lg'
181 } 181 }
182 ); 182 );
183 modalInstance.result.then( 183 modalInstance.result.then(
184 function(petrolera) { 184 function(petrolera) {
185 $scope.notaPedido.petrolera = petrolera.NOM; 185 $scope.notaPedido.petrolera = petrolera.NOM;
186 }, function() { 186 }, function() {
187 187
188 } 188 }
189 ); 189 );
190 }; 190 };
191 $scope.seleccionarCliente = function() { 191 $scope.seleccionarCliente = function() {
192 var modalInstance = $uibModal.open( 192 var modalInstance = $uibModal.open(
193 { 193 {
194 ariaLabelledBy: 'Busqueda de Cliente', 194 ariaLabelledBy: 'Busqueda de Cliente',
195 templateUrl: 'foca-busqueda-cliente-modal.html', 195 templateUrl: 'foca-busqueda-cliente-modal.html',
196 controller: 'focaBusquedaClienteModalController', 196 controller: 'focaBusquedaClienteModalController',
197 size: 'lg' 197 size: 'lg'
198 } 198 }
199 ); 199 );
200 modalInstance.result.then( 200 modalInstance.result.then(
201 function(cliente) { 201 function(cliente) {
202 $scope.notaPedido.cliente.nombre = cliente.nom; 202 $scope.notaPedido.cliente.nombre = cliente.nom;
203 $scope.notaPedido.cliente.id = cliente.cod; 203 $scope.notaPedido.cliente.id = cliente.cod;
204 crearNotaPedidoService.getDomiciliosByIdCliente(cliente.cod).then( 204 crearNotaPedidoService.getDomiciliosByIdCliente(cliente.cod).then(
205 function(data) { 205 function(data) {
206 if(data.data.length === 0){ 206 if(data.data.length === 0){
207 focaModalService 207 focaModalService
208 .alert('El cliente no tienen domicilios de entrega') 208 .alert('El cliente no tienen domicilios de entrega')
209 .then( 209 .then(
210 function() { 210 function() {
211 $scope.seleccionarCliente(); 211 $scope.seleccionarCliente();
212 $scope.notaPedido.cliente = {nombre: ''}; 212 $scope.notaPedido.cliente = {nombre: ''};
213 } 213 }
214 ); 214 );
215 return; 215 return;
216 } 216 }
217 $scope.domiciliosCliente = data.data; 217 $scope.domiciliosCliente = data.data;
218 } 218 }
219 ); 219 );
220 }, function() { 220 }, function() {
221 221
222 } 222 }
223 ); 223 );
224 }; 224 };
225 $scope.mostrarFichaCliente = function() { 225 $scope.mostrarFichaCliente = function() {
226 $uibModal.open( 226 $uibModal.open(
227 { 227 {
228 ariaLabelledBy: 'Datos del Cliente', 228 ariaLabelledBy: 'Datos del Cliente',
229 templateUrl: 'foca-crear-nota-pedido-ficha-cliente.html', 229 templateUrl: 'foca-crear-nota-pedido-ficha-cliente.html',
230 controller: 'focaCrearNotaPedidoFichaClienteController', 230 controller: 'focaCrearNotaPedidoFichaClienteController',
231 size: 'lg' 231 size: 'lg'
232 } 232 }
233 ); 233 );
234 }; 234 };
235 $scope.getTotal = function() { 235 $scope.getTotal = function() {
236 var total = 0; 236 var total = 0;
237 var arrayTempArticulos = $scope.articulosTabla; 237 var arrayTempArticulos = $scope.articulosTabla;
238 for (var i = 0; i < arrayTempArticulos.length; i++) { 238 for (var i = 0; i < arrayTempArticulos.length; i++) {
239 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 239 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
240 } 240 }
241 return total.toFixed(2); 241 return total.toFixed(2);
242 }; 242 };
243 $scope.getSubTotal = function() { 243 $scope.getSubTotal = function() {
244 if($scope.articuloACargar) { 244 if($scope.articuloACargar) {
245 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 245 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
246 } 246 }
247 }; 247 };
248 $scope.abrirModalListaPrecio = function() { 248 $scope.abrirModalListaPrecio = function() {
249 var modalInstance = $uibModal.open( 249 var modalInstance = $uibModal.open(
250 { 250 {
251 ariaLabelledBy: 'Busqueda de Precio Condición', 251 ariaLabelledBy: 'Busqueda de Precio Condición',
252 templateUrl: 'modal-precio-condicion.html', 252 templateUrl: 'modal-precio-condicion.html',
253 controller: 'focaModalPrecioCondicionController', 253 controller: 'focaModalPrecioCondicionController',
254 size: 'lg' 254 size: 'lg'
255 } 255 }
256 ); 256 );
257 modalInstance.result.then( 257 modalInstance.result.then(
258 function(precioCondicion) { 258 function(precioCondicion) {
259 $scope.notaPedido.precioCondicion = precioCondicion.nombre; 259 $scope.notaPedido.precioCondicion = precioCondicion.nombre;
260 idLista = precioCondicion.idListaPrecio; 260 idLista = precioCondicion.idListaPrecio;
261 $scope.articulosTabla = []; 261 $scope.articulosTabla = [];
262 }, function() { 262 }, function() {
263 263
264 } 264 }
265 ); 265 );
266 }; 266 };
267 $scope.abrirModalFlete = function() { 267 $scope.abrirModalFlete = function() {
268 var modalInstance = $uibModal.open( 268 var modalInstance = $uibModal.open(
269 { 269 {
270 ariaLabelledBy: 'Busqueda de Flete', 270 ariaLabelledBy: 'Busqueda de Flete',
271 templateUrl: 'modal-flete.html', 271 templateUrl: 'modal-flete.html',
272 controller: 'focaModalFleteController', 272 controller: 'focaModalFleteController',
273 size: 'lg' 273 size: 'lg'
274 } 274 }
275 ); 275 );
276 modalInstance.result.then( 276 modalInstance.result.then(
277 function(flete) { 277 function(flete) {
278 $scope.limpiarFlete(); 278 $scope.limpiarFlete();
279 $scope.notaPedido.fleteNombre = flete.nombre; 279 $scope.notaPedido.fleteNombre = flete.nombre;
280 $scope.notaPedido.fleteId = flete.id; 280 $scope.notaPedido.fleteId = flete.id;
281 $scope.choferes = flete.chofer; 281 $scope.choferes = flete.chofer;
282 $scope.vehiculos = flete.vehiculo; 282 $scope.vehiculos = flete.vehiculo;
283 }, function() { 283 }, function() {
284 284
285 } 285 }
286 ); 286 );
287 }; 287 };
288 $scope.abrirModalMoneda = function() { 288 $scope.abrirModalMoneda = function() {
289 var modalInstance = $uibModal.open( 289 var modalInstance = $uibModal.open(
290 { 290 {
291 ariaLabelledBy: 'Busqueda de Moneda', 291 ariaLabelledBy: 'Busqueda de Moneda',
292 templateUrl: 'modal-moneda.html', 292 templateUrl: 'modal-moneda.html',
293 controller: 'focaModalMonedaController', 293 controller: 'focaModalMonedaController',
294 size: 'lg' 294 size: 'lg'
295 } 295 }
296 ); 296 );
297 modalInstance.result.then( 297 modalInstance.result.then(
298 function(moneda) { 298 function(moneda) {
299 $scope.notaPedido.moneda = { 299 $scope.notaPedido.moneda = {
300 id: moneda.ID, 300 id: moneda.ID,
301 detalle: moneda.DETALLE, 301 detalle: moneda.DETALLE,
302 simbolo: moneda.SIMBOLO 302 simbolo: moneda.SIMBOLO
303 }; 303 };
304 }, function() { 304 }, function() {
305 305
306 } 306 }
307 ); 307 );
308 }; 308 };
309 $scope.agregarATabla = function(key) { 309 $scope.agregarATabla = function(key) {
310 if(key === 13) { 310 if(key === 13) {
311 if($scope.articuloACargar.cantidad === undefined || 311 if($scope.articuloACargar.cantidad === undefined ||
312 $scope.articuloACargar.cantidad === 0 || 312 $scope.articuloACargar.cantidad === 0 ||
313 $scope.articuloACargar.cantidad === null ){ 313 $scope.articuloACargar.cantidad === null ){
314 focaModalService.alert('El valor debe ser al menos 1'); 314 focaModalService.alert('El valor debe ser al menos 1');
315 return; 315 return;
316 } 316 }
317 $scope.articulosTabla.unshift($scope.articuloACargar); 317 $scope.articulosTabla.unshift($scope.articuloACargar);
318 $scope.cargando = true; 318 $scope.cargando = true;
319 } 319 }
320 }; 320 };
321 $scope.quitarArticulo = function(key) { 321 $scope.quitarArticulo = function(key) {
322 $scope.articulosTabla.splice(key, 1); 322 $scope.articulosTabla.splice(key, 1);
323 }; 323 };
324 $scope.editarArticulo = function(key, articulo) { 324 $scope.editarArticulo = function(key, articulo) {
325 if(key === 13) { 325 if(key === 13) {
326 if(articulo.cantidad === null || articulo.cantidad === 0 || 326 if(articulo.cantidad === null || articulo.cantidad === 0 ||
327 articulo.cantidad === undefined){ 327 articulo.cantidad === undefined){
328 focaModalService.alert('El valor debe ser al menos 1'); 328 focaModalService.alert('El valor debe ser al menos 1');
329 return; 329 return;
330 } 330 }
331 articulo.edit = false; 331 articulo.edit = false;
332 } 332 }
333 }; 333 };
334 $scope.cambioEdit = function(articulo) { 334 $scope.cambioEdit = function(articulo) {
335 articulo.edit = true; 335 articulo.edit = true;
336 }; 336 };
337 $scope.limpiarFlete = function() { 337 $scope.limpiarFlete = function() {
338 $scope.notaPedido.fleteNombre = ''; 338 $scope.notaPedido.fleteNombre = '';
339 $scope.notaPedido.chofer = ''; 339 $scope.notaPedido.chofer = '';
340 $scope.notaPedido.vehiculo = ''; 340 $scope.notaPedido.vehiculo = '';
341 $scope.notaPedido.kilometros = ''; 341 $scope.notaPedido.kilometros = '';
342 $scope.notaPedido.costoUnitarioKmFlete = ''; 342 $scope.notaPedido.costoUnitarioKmFlete = '';
343 $scope.choferes = ''; 343 $scope.choferes = '';
344 $scope.vehiculos = ''; 344 $scope.vehiculos = '';
345 }; 345 };
346 $scope.limpiarPantalla = function() { 346 $scope.limpiarPantalla = function() {
347 $scope.limpiarFlete(); 347 $scope.limpiarFlete();
348 $scope.notaPedido.flete = '0'; 348 $scope.notaPedido.flete = '0';
349 $scope.notaPedido.bomba = '0'; 349 $scope.notaPedido.bomba = '0';
350 $scope.notaPedido.precioCondicion = ''; 350 $scope.notaPedido.precioCondicion = '';
351 $scope.articulosTabla = []; 351 $scope.articulosTabla = [];
352 $scope.notaPedido.vendedor.nombre = ''; 352 $scope.notaPedido.vendedor.nombre = '';
353 $scope.notaPedido.cliente = {nombre: ''}; 353 $scope.notaPedido.cliente = {nombre: ''};
354 $scope.notaPedido.domicilio = {dom: ''}; 354 $scope.notaPedido.domicilio = {dom: ''};
355 $scope.domiciliosCliente = []; 355 $scope.domiciliosCliente = [];
356 }; 356 };
357 $scope.resetFilter = function() { 357 $scope.resetFilter = function() {
358 $scope.articuloACargar = {}; 358 $scope.articuloACargar = {};
359 $scope.cargando = true; 359 $scope.cargando = true;
360 }; 360 };
361 $scope.selectFocus = function($event) { 361 $scope.selectFocus = function($event) {
362 $event.target.select(); 362 $event.target.select();
363 }; 363 };
364 $scope.salir = function() {
365 $location.path('/');
366 }
364 } 367 }
365 ] 368 ]
366 ) 369 )
367 .controller('notaPedidoListaCtrl', [ 370 .controller('notaPedidoListaCtrl', [
368 '$scope', 371 '$scope',
369 'crearNotaPedidoService', 372 'crearNotaPedidoService',
370 '$location', 373 '$location',
371 function($scope, crearNotaPedidoService, $location) { 374 function($scope, crearNotaPedidoService, $location) {
372 crearNotaPedidoService.obtenerNotaPedido().then(function(datos) { 375 crearNotaPedidoService.obtenerNotaPedido().then(function(datos) {
373 $scope.notaPedidos = datos.data; 376 $scope.notaPedidos = datos.data;
374 }); 377 });
375 $scope.editar = function(notaPedido) { 378 $scope.editar = function(notaPedido) {
376 crearNotaPedidoService.setNotaPedido(notaPedido); 379 crearNotaPedidoService.setNotaPedido(notaPedido);
377 $location.path('/venta-nota-pedido/abm/'); 380 $location.path('/venta-nota-pedido/abm/');
378 }; 381 };
379 $scope.crearPedido = function() { 382 $scope.crearPedido = function() {
380 crearNotaPedidoService.clearNotaPedido(); 383 crearNotaPedidoService.clearNotaPedido();
381 $location.path('/venta-nota-pedido/abm/'); 384 $location.path('/venta-nota-pedido/abm/');
382 }; 385 };
383 } 386 }
384 ]) 387 ])
385 .controller('focaCrearNotaPedidoFichaClienteController', [ 388 .controller('focaCrearNotaPedidoFichaClienteController', [
386 '$scope', 389 '$scope',
387 'crearNotaPedidoService', 390 'crearNotaPedidoService',
388 '$location', 391 '$location',
389 function($scope, crearNotaPedidoService, $location) { 392 function($scope, crearNotaPedidoService, $location) {
390 crearNotaPedidoService.obtenerNotaPedido().then(function(datos) { 393 crearNotaPedidoService.obtenerNotaPedido().then(function(datos) {
391 $scope.notaPedidos = datos.data; 394 $scope.notaPedidos = datos.data;
392 }); 395 });
393 $scope.editar = function(notaPedido) { 396 $scope.editar = function(notaPedido) {
394 crearNotaPedidoService.setNotaPedido(notaPedido); 397 crearNotaPedidoService.setNotaPedido(notaPedido);
395 $location.path('/venta-nota-pedido/abm/'); 398 $location.path('/venta-nota-pedido/abm/');
396 }; 399 };
397 $scope.crearPedido = function() { 400 $scope.crearPedido = function() {
398 crearNotaPedidoService.clearNotaPedido(); 401 crearNotaPedidoService.clearNotaPedido();
399 $location.path('/venta-nota-pedido/abm/'); 402 $location.path('/venta-nota-pedido/abm/');
400 }; 403 };
401 } 404 }
402 ]); 405 ]);
403 406
src/views/nota-pedido.html
1 <div class="crear-nota-pedido"> 1 <div class="crear-nota-pedido">
2 <form name="formCrearNota" ng-submit="crearNotaPedido()"> 2 <form name="formCrearNota" ng-submit="crearNotaPedido()">
3 <div class="row"> 3 <div class="row">
4 <div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2"> 4 <div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2">
5 <div class="row p-1 panel-informativo"> 5 <div class="row p-1 panel-informativo">
6 <div class="col-12"> 6 <div class="col-12">
7 <div class="row"> 7 <div class="row">
8 <div class="col-5"> 8 <div class="col-5">
9 <span class="label">Vendedor:</span> 9 <span class="label">Vendedor:</span>
10 <span class="valor" ng-bind="notaPedido.vendedor.nombre"></span> 10 <span class="valor" ng-bind="notaPedido.vendedor.nombre"></span>
11 </div> 11 </div>
12 <div class="col-5"> 12 <div class="col-5">
13 <span class="label">Moneda:</span> 13 <span class="label">Moneda:</span>
14 <span class="valor" ng-bind="notaPedido.moneda.detalle"></span> 14 <span class="valor" ng-bind="notaPedido.moneda.detalle"></span>
15 </div> 15 </div>
16 <div class="col-2"> 16 <div class="col-2">
17 <span class="label">Flete:</span> 17 <span class="label">Flete:</span>
18 <span class="valor" ng-bind="notaPedido.flete"></span> 18 <span class="valor" ng-bind="notaPedido.flete"></span>
19 </div> 19 </div>
20 </div> 20 </div>
21 <div class="row"> 21 <div class="row">
22 <div class="col-5"> 22 <div class="col-5">
23 <span class="label">Cliente:</span> 23 <span class="label">Cliente:</span>
24 <span class="valor" ng-bind="notaPedido.cliente.nombre"></span> 24 <span class="valor" ng-bind="notaPedido.cliente.nombre"></span>
25 </div> 25 </div>
26 <div class="col-5"> 26 <div class="col-5">
27 <span class="label">Precios y condiciones:</span> 27 <span class="label">Precios y condiciones:</span>
28 <span class="valor" ng-bind="notaPedido.precioCondicion"></span> 28 <span class="valor" ng-bind="notaPedido.precioCondicion"></span>
29 </div> 29 </div>
30 <div class="col-2"> 30 <div class="col-2">
31 <span class="label">Bomba:</span> 31 <span class="label">Bomba:</span>
32 <span class="valor" ng-bind="notaPedido.bomba"></span> 32 <span class="valor" ng-bind="notaPedido.bomba"></span>
33 </div> 33 </div>
34 </div> 34 </div>
35 </div> 35 </div>
36 </div> 36 </div>
37 <div class="row p-1 botonera-secundaria"> 37 <div class="row p-1 botonera-secundaria">
38 <div class=" col-12 col-sm-6 col-md-3 botonera" ng-repeat="boton in botonera"> 38 <div class=" col-12 col-sm-6 col-md-3 botonera" ng-repeat="boton in botonera">
39 <button 39 <button
40 type="button" 40 type="button"
41 class="btn btn-default btn-block btn-xs" 41 class="btn btn-default btn-block btn-xs"
42 ng-bind="boton.texto" 42 ng-bind="boton.texto"
43 ng-click="boton.accion()" 43 ng-click="boton.accion()"
44 ></button> 44 ></button>
45 </div> 45 </div>
46 </div> 46 </div>
47 </div> 47 </div>
48 </div> 48 </div>
49 </form> 49 </form>
50 <div class="row"> 50 <div class="row">
51 <div class="col-md-10 col-lg-8 offset-md-1 offset-lg-2"> 51 <div class="col-md-10 col-lg-8 offset-md-1 offset-lg-2">
52 <div class="row grilla-articulos align-items-end"> 52 <div class="row grilla-articulos align-items-end">
53 <table class="table table-striped table-sm table-dark"> 53 <table class="table table-striped table-sm table-dark">
54 <thead> 54 <thead>
55 <tr> 55 <tr>
56 <th>Sector</th> 56 <th>Sector</th>
57 <th>Código</th> 57 <th>Código</th>
58 <th>Descripción</th> 58 <th>Descripción</th>
59 <th>Precio Unitario</th> 59 <th>Precio Unitario</th>
60 <th>Cantidad</th> 60 <th>Cantidad</th>
61 <th>SubTotal</th> 61 <th>SubTotal</th>
62 <th> 62 <th>
63 <button 63 <button
64 class="btn btn-outline-secondary selectable" 64 class="btn btn-outline-secondary selectable"
65 style="float: right;" 65 style="float: right;"
66 ng-click="show = !show; masMenos()" 66 ng-click="show = !show; masMenos()"
67 > 67 >
68 <i 68 <i
69 class="fa fa-chevron-down" 69 class="fa fa-chevron-down"
70 ng-hide="show" 70 ng-hide="show"
71 aria-hidden="true" 71 aria-hidden="true"
72 > 72 >
73 </i> 73 </i>
74 <i 74 <i
75 class="fa fa-chevron-up" 75 class="fa fa-chevron-up"
76 ng-show="show" 76 ng-show="show"
77 aria-hidden="true"> 77 aria-hidden="true">
78 </i> 78 </i>
79 </button> 79 </button>
80 </th> 80 </th>
81 </tr> 81 </tr>
82 </thead> 82 </thead>
83 <tbody> 83 <tbody>
84 <tr ng-show="!cargando"> 84 <tr ng-show="!cargando">
85 <td><input 85 <td><input
86 class="form-control" 86 class="form-control"
87 ng-model="articuloACargar.sector" 87 ng-model="articuloACargar.sector"
88 readonly></td> 88 readonly></td>
89 <td><input 89 <td><input
90 class="form-control" 90 class="form-control"
91 ng-model="articuloACargar.codigo" 91 ng-model="articuloACargar.codigo"
92 readonly></td> 92 readonly></td>
93 <td><input 93 <td><input
94 class="form-control" 94 class="form-control"
95 ng-model="articuloACargar.descripcion" 95 ng-model="articuloACargar.descripcion"
96 readonly></td> 96 readonly></td>
97 <td><input 97 <td><input
98 class="form-control" 98 class="form-control"
99 ng-value="articuloACargar.precio | currency: '$'" 99 ng-value="articuloACargar.precio | currency: '$'"
100 readonly></td> 100 readonly></td>
101 <td><input 101 <td><input
102 class="form-control" 102 class="form-control"
103 type="number" 103 type="number"
104 min="1" 104 min="1"
105 ng-model="articuloACargar.cantidad" 105 ng-model="articuloACargar.cantidad"
106 foca-focus="!cargando" 106 foca-focus="!cargando"
107 esc-key="resetFilter()" 107 esc-key="resetFilter()"
108 ng-keypress="agregarATabla($event.keyCode)"></td> 108 ng-keypress="agregarATabla($event.keyCode)"></td>
109 <td><input 109 <td><input
110 class="form-control" 110 class="form-control"
111 ng-value="getSubTotal() | currency: '$'" 111 ng-value="getSubTotal() | currency: '$'"
112 readonly></td> 112 readonly></td>
113 <td class="text-center"><button 113 <td class="text-center"><button
114 class="btn btn-outline-secondary btn-sm" 114 class="btn btn-outline-secondary btn-sm"
115 ng-click="agregarATabla(13)"> 115 ng-click="agregarATabla(13)">
116 <i class="fa fa-save"></i> 116 <i class="fa fa-save"></i>
117 </button></td> 117 </button></td>
118 </tr> 118 </tr>
119 <tr 119 <tr
120 ng-repeat="(key, articulo) in articulosTabla" 120 ng-repeat="(key, articulo) in articulosTabla"
121 ng-show="show || key == 0" 121 ng-show="show || key == 0"
122 > 122 >
123 <td ng-bind="articulo.sector"></td> 123 <td ng-bind="articulo.sector"></td>
124 <td ng-bind="articulo.codigo"></td> 124 <td ng-bind="articulo.codigo"></td>
125 <td ng-bind="articulo.descripcion"></td> 125 <td ng-bind="articulo.descripcion"></td>
126 <td ng-bind="articulo.precio | currency: '$'"></td> 126 <td ng-bind="articulo.precio | currency: '$'"></td>
127 <td><input 127 <td><input
128 ng-show="articulo.edit" 128 ng-show="articulo.edit"
129 ng-model="articulo.cantidad" 129 ng-model="articulo.cantidad"
130 class="form-control" 130 class="form-control"
131 type="number" 131 type="number"
132 min="1" 132 min="1"
133 foca-focus="articulo.edit" 133 foca-focus="articulo.edit"
134 ng-keypress="editarArticulo($event.keyCode, articulo)" 134 ng-keypress="editarArticulo($event.keyCode, articulo)"
135 ng-focus="selectFocus($event)" 135 ng-focus="selectFocus($event)"
136 > 136 >
137 <i 137 <i
138 class="selectable" 138 class="selectable"
139 ng-click="cambioEdit(articulo)" 139 ng-click="cambioEdit(articulo)"
140 ng-hide="articulo.edit" 140 ng-hide="articulo.edit"
141 ng-bind="articulo.cantidad"> 141 ng-bind="articulo.cantidad">
142 </i> 142 </i>
143 </td> 143 </td>
144 <td 144 <td
145 ng-bind="(articulo.precio * articulo.cantidad) | currency: '$'"> 145 ng-bind="(articulo.precio * articulo.cantidad) | currency: '$'">
146 </td> 146 </td>
147 <td class="text-center"> 147 <td class="text-center">
148 <button 148 <button
149 class="btn btn-outline-secondary btn-sm" 149 class="btn btn-outline-secondary btn-sm"
150 ng-click="quitarArticulo(key)" 150 ng-click="quitarArticulo(key)"
151 > 151 >
152 <i class="fa fa-trash"></i> 152 <i class="fa fa-trash"></i>
153 </button> 153 </button>
154 </td> 154 </td>
155 </tr> 155 </tr>
156 <tr ng-show="cargando"> 156 <tr ng-show="cargando">
157 <td colspan="7"> 157 <td colspan="7">
158 <input 158 <input
159 placeholder="Seleccione Articulo" 159 placeholder="Seleccione Articulo"
160 class="form-control form-control-sm" 160 class="form-control form-control-sm"
161 readonly 161 readonly
162 ng-click="seleccionarArticulo()" 162 ng-click="seleccionarArticulo()"
163 /> 163 />
164 </td> 164 </td>
165 </tr> 165 </tr>
166 </tbody> 166 </tbody>
167 <tfoot> 167 <tfoot>
168 <tr class=""> 168 <tr class="">
169 <td colspan="4"> 169 <td colspan="4">
170 <strong>Cantidad Items:</strong> 170 <strong>Cantidad Items:</strong>
171 <a ng-bind="articulosTabla.length"></a> 171 <a ng-bind="articulosTabla.length"></a>
172 </td> 172 </td>
173 <td class="text-right table-celda-total"><h3>Total:</h3></td> 173 <td class="text-right table-celda-total"><h3>Total:</h3></td>
174 <td class="table-celda-total text-right" colspan="1"> 174 <td class="table-celda-total text-right" colspan="1">
175 <h3>{{getTotal() | currency: '$'}}</h3> 175 <h3>{{getTotal() | currency: '$'}}</h3>
176 </td> 176 </td>
177 <td colspan="2"></td> 177 <td colspan="2"></td>
178 </tr> 178 </tr>
179 </tfoot> 179 </tfoot>
180 </table> 180 </table>
181 </div> 181 </div>
182 </div> 182 </div>
183 <div class="col-auto my-2"> 183 <div class="col-auto my-2">
184 <button 184 <button
185 ng-click="crearNotaPedido()" 185 ng-click="crearNotaPedido()"
186 type="submit" 186 type="submit"
187 title="Crear nota pedido" 187 title="Crear nota pedido"
188 class="btn btn-primary float-right"> 188 class="btn btn-default">
189 Guardar 189 Guardar
190 </button> 190 </button>
191 <br/>
192 <br/>
193 <button
194 ng-click="salir()"
195 type="button"
196 title="Salir"
197 class="btn btn-default">
198 Salir
199 </button>
191 </div> 200 </div>
192 </div> 201 </div>
193 </div> 202 </div>
194 <!-- 203 <!--
195 <form name="formCrearNota"> 204 <form name="formCrearNota">
196 <uib-tabset active="active"> 205 <uib-tabset active="active">
197 <uib-tab index="0" heading="General"> 206 <uib-tab index="0" heading="General">
198 <input type="hidden" name="id" ng-model="notaPedido.id" /> 207 <input type="hidden" name="id" ng-model="notaPedido.id" />
199 <div> 208 <div>
200 <div class="col-auto my-2"> 209 <div class="col-auto my-2">
201 <button type="submit" title="Siguiente" class="btn btn-primary float-right">Siguiente</button> 210 <button type="submit" title="Siguiente" class="btn btn-primary float-right">Siguiente</button>
202 </div> 211 </div>
203 </div> 212 </div>
204 <br> 213 <br>
205 <br> 214 <br>
206 <div class="row"> 215 <div class="row">
207 <div class="col-md-2"> 216 <div class="col-md-2">
208 <div class="col-auto"> 217 <div class="col-auto">
209 <label>Fecha de carga</label> 218 <label>Fecha de carga</label>
210 </div> 219 </div>
211 </div> 220 </div>
212 <div class="col-md-3"> 221 <div class="col-md-3">
213 <div class="col-auto"> 222 <div class="col-auto">
214 <input type="date" class="form-control" ng-model="notaPedido.fechaCarga" ng-required="true"> 223 <input type="date" class="form-control" ng-model="notaPedido.fechaCarga" ng-required="true">
215 </div> 224 </div>
216 </div> 225 </div>
217 <div class="col-md-2"> 226 <div class="col-md-2">
218 <div class="col-auto"> 227 <div class="col-auto">
219 <label>Kilómetros</label> 228 <label>Kilómetros</label>
220 </div> 229 </div>
221 </div> 230 </div>
222 <div class="col-md-3"> 231 <div class="col-md-3">
223 <div class="col-auto"> 232 <div class="col-auto">
224 <input type="number" min="0" step="0.01" class="form-control" placeholder="Kilómetros recorridos para la entrega en el cliente" 233 <input type="number" min="0" step="0.01" class="form-control" placeholder="Kilómetros recorridos para la entrega en el cliente"
225 ng-model="notaPedido.kilometros" ng-required="true"> 234 ng-model="notaPedido.kilometros" ng-required="true">
226 </div> 235 </div>
227 </div> 236 </div>
228 </div> 237 </div>
229 <div class="row my-3"> 238 <div class="row my-3">
230 <div class="col-md-2"> 239 <div class="col-md-2">
231 <div class="col-auto"> 240 <div class="col-auto">
232 <label>Jurisdicción de IIBB</label> 241 <label>Jurisdicción de IIBB</label>
233 </div> 242 </div>
234 </div> 243 </div>
235 <div class="col-md-3"> 244 <div class="col-md-3">
236 <div class="col-auto"> 245 <div class="col-auto">
237 <input type="text" class="form-control" placeholder="Jurisdicción de IIBB donde se realiza la entrega" 246 <input type="text" class="form-control" placeholder="Jurisdicción de IIBB donde se realiza la entrega"
238 ng-model="notaPedido.jurisdiccionIIBB" ng-required="true"> 247 ng-model="notaPedido.jurisdiccionIIBB" ng-required="true">
239 </div> 248 </div>
240 </div> 249 </div>
241 <div class="col-md-2"> 250 <div class="col-md-2">
242 <div class="col-auto"> 251 <div class="col-auto">
243 <label>Costo de financiación</label> 252 <label>Costo de financiación</label>
244 </div> 253 </div>
245 </div> 254 </div>
246 <div class="col-md-3"> 255 <div class="col-md-3">
247 <div class="col-auto"> 256 <div class="col-auto">
248 <div class="input-group mb-2"> 257 <div class="input-group mb-2">
249 <div class="input-group-prepend"> 258 <div class="input-group-prepend">
250 <div class="input-group-text">$</div> 259 <div class="input-group-text">$</div>
251 </div> 260 </div>
252 <input type="number" min="0" step="0.01" class="form-control" placeholder="Costo de financiación" 261 <input type="number" min="0" step="0.01" class="form-control" placeholder="Costo de financiación"
253 ng-model="notaPedido.costoFinanciacion"> 262 ng-model="notaPedido.costoFinanciacion">
254 </div> 263 </div>
255 </div> 264 </div>
256 </div> 265 </div>
257 </div> 266 </div>
258 <div class="row"> 267 <div class="row">
259 <div class="col-md-2"> 268 <div class="col-md-2">
260 <div class="col-auto"> 269 <div class="col-auto">
261 <label>Bomba</label> 270 <label>Bomba</label>
262 </div> 271 </div>
263 </div> 272 </div>
264 <div class="col-md-1"> 273 <div class="col-md-1">
265 <div class="col-auto"> 274 <div class="col-auto">
266 <div class="form-check custom-radio custom-control-inline"> 275 <div class="form-check custom-radio custom-control-inline">
267 <input class="form-check-input" type="radio" name="radioBomba" value="1" ng-model="notaPedido.bomba"> 276 <input class="form-check-input" type="radio" name="radioBomba" value="1" ng-model="notaPedido.bomba">
268 <label class="form-check-label"> 277 <label class="form-check-label">
269 Si 278 Si
270 </label> 279 </label>
271 </div> 280 </div>
272 <div class="form-check custom-radio custom-control-inline"> 281 <div class="form-check custom-radio custom-control-inline">
273 <input class="form-check-input" type="radio" name="radioBomba" value="0" ng-model="notaPedido.bomba"> 282 <input class="form-check-input" type="radio" name="radioBomba" value="0" ng-model="notaPedido.bomba">
274 <label class="form-check-label"> 283 <label class="form-check-label">
275 No 284 No
276 </label> 285 </label>
277 </div> 286 </div>
278 </div> 287 </div>
279 </div> 288 </div>
280 <div class="col-md-1"> 289 <div class="col-md-1">
281 <div class="col-auto"> 290 <div class="col-auto">
282 <label>Flete</label> 291 <label>Flete</label>
283 </div> 292 </div>
284 </div> 293 </div>
285 <div class="col-md-1"> 294 <div class="col-md-1">
286 <div class="col-auto"> 295 <div class="col-auto">
287 <div class="form-check custom-radio custom-control-inline"> 296 <div class="form-check custom-radio custom-control-inline">
288 <input class="form-check-input" type="radio" name="radioFlete" value="1" ng-model="notaPedido.flete"> 297 <input class="form-check-input" type="radio" name="radioFlete" value="1" ng-model="notaPedido.flete">
289 <label class="form-check-label"> 298 <label class="form-check-label">
290 Si 299 Si
291 </label> 300 </label>
292 </div> 301 </div>
293 <div class="form-check custom-radio custom-control-inline"> 302 <div class="form-check custom-radio custom-control-inline">
294 <input class="form-check-input" type="radio" name="radioFlete" value="0" ng-model="notaPedido.flete"> 303 <input class="form-check-input" type="radio" name="radioFlete" value="0" ng-model="notaPedido.flete">
295 <label class="form-check-label"> 304 <label class="form-check-label">
296 FOB 305 FOB
297 </label> 306 </label>
298 </div> 307 </div>
299 </div> 308 </div>
300 </div> 309 </div>
301 <div class="col-md-2"> 310 <div class="col-md-2">
302 <div class="col-auto"> 311 <div class="col-auto">
303 <label>Costo unitario kilometro flete</label> 312 <label>Costo unitario kilometro flete</label>
304 </div> 313 </div>
305 </div> 314 </div>
306 <div class="col-md-3"> 315 <div class="col-md-3">
307 <div class="col-auto"> 316 <div class="col-auto">
308 <div class="input-group mb-2"> 317 <div class="input-group mb-2">
309 <div class="input-group-prepend"> 318 <div class="input-group-prepend">
310 <div class="input-group-text">$</div> 319 <div class="input-group-text">$</div>
311 </div> 320 </div>
312 <input type="number" min="0" step="0.01" class="form-control" placeholder="Costo unitario del kilometro del flete" 321 <input type="number" min="0" step="0.01" class="form-control" placeholder="Costo unitario del kilometro del flete"
313 ng-model="notaPedido.costoUnitarioKmFlete" ng-required="true"> 322 ng-model="notaPedido.costoUnitarioKmFlete" ng-required="true">
314 </div> 323 </div>
315 </div> 324 </div>
316 </div> 325 </div>
317 </div> 326 </div>
318 <div class="row my-3"> 327 <div class="row my-3">
319 <div class="col-md-2"> 328 <div class="col-md-2">
320 <div class="col-auto"> 329 <div class="col-auto">
321 <label>Vendedor</label> 330 <label>Vendedor</label>
322 </div> 331 </div>
323 </div> 332 </div>
324 <div class="col-md-3"> 333 <div class="col-md-3">
325 <div class="col-auto"> 334 <div class="col-auto">
326 <input type="text" class="form-control" placeholder="Seleccione vendedor" ng-model="notaPedido.vendedor" 335 <input type="text" class="form-control" placeholder="Seleccione vendedor" ng-model="notaPedido.vendedor"
327 ng-click="seleccionarVendedor()" readonly> 336 ng-click="seleccionarVendedor()" readonly>
328 </div> 337 </div>
329 </div> 338 </div>
330 <div class="col-md-2"> 339 <div class="col-md-2">
331 <div class="col-auto"> 340 <div class="col-auto">
332 <label>Petrolera</label> 341 <label>Petrolera</label>
333 </div> 342 </div>
334 </div> 343 </div>
335 <div class="col-md-3"> 344 <div class="col-md-3">
336 <div class="col-auto"> 345 <div class="col-auto">
337 <input type="text" class="form-control" placeholder="Seleccione petrolera" ng-model="notaPedido.petrolera" 346 <input type="text" class="form-control" placeholder="Seleccione petrolera" ng-model="notaPedido.petrolera"
338 ng-click="seleccionarPetrolera()" readonly> 347 ng-click="seleccionarPetrolera()" readonly>
339 </div> 348 </div>
340 </div> 349 </div>
341 </div> 350 </div>
342 </div> 351 </div>
343 <div class="row"> 352 <div class="row">
344 <div class="col-md-2"> 353 <div class="col-md-2">
345 <div class="col-auto"> 354 <div class="col-auto">
346 <label>Cliente</label> 355 <label>Cliente</label>
347 </div> 356 </div>
348 </div> 357 </div>
349 <div class="col-md-3"> 358 <div class="col-md-3">
350 <div class="col-auto"> 359 <div class="col-auto">
351 <input type="text" class="form-control" placeholder="Seleccione cliente" ng-model="notaPedido.cliente" 360 <input type="text" class="form-control" placeholder="Seleccione cliente" ng-model="notaPedido.cliente"
352 ng-click="seleccionarCliente()" ng-change="obtenerDomicilios()" readonly> 361 ng-click="seleccionarCliente()" ng-change="obtenerDomicilios()" readonly>
353 </div> 362 </div>
354 </div> 363 </div>
355 <div class="col-md-2"> 364 <div class="col-md-2">
356 <div class="col-auto"> 365 <div class="col-auto">
357 <label>Domicilio</label> 366 <label>Domicilio</label>
358 </div> 367 </div>
359 </div> 368 </div>
360 <div class="col-md-4"> 369 <div class="col-md-4">
361 <div class="col-md-12 row" ng-repeat="domicilio in notaPedido.domicilio"> 370 <div class="col-md-12 row" ng-repeat="domicilio in notaPedido.domicilio">
362 <div class="col-auto"> 371 <div class="col-auto">
363 <input type="text" ng-model="domicilio.dom" placeholder="Domicilio" uib-typeahead=" 372 <input type="text" ng-model="domicilio.dom" placeholder="Domicilio" uib-typeahead="
364 domi.dom 373 domi.dom
365 for domi 374 for domi
366 in domiciliosCliente 375 in domiciliosCliente
367 " 376 "
368 typeahead-no-results="sinResultados" typeahead-min-length="0" typeahead-on-select="seleccionar($item)" 377 typeahead-no-results="sinResultados" typeahead-min-length="0" typeahead-on-select="seleccionar($item)"
369 class="form-control mb-2" ng-disabled="domicilio.id > 0" ng-required="true"> 378 class="form-control mb-2" ng-disabled="domicilio.id > 0" ng-required="true">
370 <i ng-show="cargandoClientes" class="fas fa-sync"></i> 379 <i ng-show="cargandoClientes" class="fas fa-sync"></i>
371 <div ng-show="sinResultados"> 380 <div ng-show="sinResultados">
372 No se encontraron resultados. 381 No se encontraron resultados.
373 </div> 382 </div>
374 </div> 383 </div>
375 <a class="btn" ng-click="removeNewChoice(domicilio)" ng-if="domicilio.id==0">-</a> 384 <a class="btn" ng-click="removeNewChoice(domicilio)" ng-if="domicilio.id==0">-</a>
376 <a class="btn" ng-click="addNewDom()">+</a> 385 <a class="btn" ng-click="addNewDom()">+</a>
377 </div> 386 </div>
378 </div> 387 </div>
379 </div> 388 </div>
380 </uib-tab> 389 </uib-tab>
381 <uib-tab index="1" heading="Producto" disable="formCrearNota.$invalid"> 390 <uib-tab index="1" heading="Producto" disable="formCrearNota.$invalid">
382 <div> 391 <div>
383 <div class="col-auto my-2"> 392 <div class="col-auto my-2">
384 <button ng-click="crearNotaPedido()" type="button" title="Crear nota pedido" class="btn btn-primary float-right">Crear</button> 393 <button ng-click="crearNotaPedido()" type="button" title="Crear nota pedido" class="btn btn-primary float-right">Crear</button>
385 </div> 394 </div>
386 </div> 395 </div>
387 <br> 396 <br>
388 <br> 397 <br>
389 <div class="row"> 398 <div class="row">
390 <div class="col-md-2"> 399 <div class="col-md-2">
391 <div class="col-auto"> 400 <div class="col-auto">
392 <label>Precios y condiciones</label> 401 <label>Precios y condiciones</label>
393 </div> 402 </div>
394 </div> 403 </div>
395 <div class="col-md-4"> 404 <div class="col-md-4">
396 <div class="col-auto"> 405 <div class="col-auto">
397 <select class="form-control" ng-change="cargarArticulos()" ng-model="notaPedido.precioCondicion" ng-options="preCond.id as preCond.nombre for preCond in precioCondiciones"> 406 <select class="form-control" ng-change="cargarArticulos()" ng-model="notaPedido.precioCondicion" ng-options="preCond.id as preCond.nombre for preCond in precioCondiciones">
398 </select> 407 </select>
399 </div> 408 </div>
400 </div> 409 </div>
401 <div class="col-md-2"> 410 <div class="col-md-2">
402 <div class="col-auto"> 411 <div class="col-auto">
403 <label>Producto</label> 412 <label>Producto</label>
404 </div> 413 </div>
405 </div> 414 </div>
406 <div class="col-md-4"> 415 <div class="col-md-4">
407 <div class="col-auto"> 416 <div class="col-auto">
408 <input type="text" class="form-control" placeholder="Seleccione producto" ng-model="notaPedido.producto" 417 <input type="text" class="form-control" placeholder="Seleccione producto" ng-model="notaPedido.producto"
409 ng-click="seleccionarArticulo()" readonly> 418 ng-click="seleccionarArticulo()" readonly>
410 </div> 419 </div>
411 </div> 420 </div>
412 </div> 421 </div>
413 <div class="col-md-12"> 422 <div class="col-md-12">
414 <table class="table my-3 table-hover table-nonfluid"> 423 <table class="table my-3 table-hover table-nonfluid">
415 <thead> 424 <thead>
416 <tr> 425 <tr>
417 <th>Código</th> 426 <th>Código</th>
418 <th>Nombre</th> 427 <th>Nombre</th>
419 <th>Precio unitario</th> 428 <th>Precio unitario</th>
420 <th>Costo unitario bruto</th> 429 <th>Costo unitario bruto</th>
421 <th>Cantidad</th> 430 <th>Cantidad</th>
422 <th>Subtotal</th> 431 <th>Subtotal</th>
423 </tr> 432 </tr>
424 </thead> 433 </thead>
425 <tbody> 434 <tbody>
426 <tr ng-repeat="articulo in articulosTabla"> 435 <tr ng-repeat="articulo in articulosTabla">
427 <td ng-bind="articulo.codigo"></td> 436 <td ng-bind="articulo.codigo"></td>
428 <td ng-bind="articulo.nombre"></td> 437 <td ng-bind="articulo.nombre"></td>
429 <td ng-bind="articulo.precio"></td> 438 <td ng-bind="articulo.precio"></td>
430 <td ng-bind="articulo.costoUnitario"></td> 439 <td ng-bind="articulo.costoUnitario"></td>
431 <td><input ng-model="articulo.cantidad" class="form-control" type="number" min="0" value="1"></td> 440 <td><input ng-model="articulo.cantidad" class="form-control" type="number" min="0" value="1"></td>
432 <td ng-bind="getSubTotal(articulo.item)"></td> 441 <td ng-bind="getSubTotal(articulo.item)"></td>
433 </tr> 442 </tr>
434 </tbody> 443 </tbody>
435 </table> 444 </table>
436 </div> 445 </div>
437 </uib-tab> 446 </uib-tab>
438 </uib-tabset> 447 </uib-tabset>
439 </form>--> 448 </form>-->