Commit 68d481eac1dbf29227fc1c4572a1d8d95e511c18

Authored by Pablo Marco del Pont
Exists in master and in 1 other branch develop

Merge branch 'master' of https://debo.suite.repo/modulos-npm/foca-crear-nota-pedido

# Conflicts:
#	src/js/controller.js
src/js/controller.js
... ... @@ -7,17 +7,22 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
7 7 notaPedidoBusinessService, $rootScope, focaSeguimientoService
8 8 ) {
9 9 $scope.botonera = [
10   - {texto: 'Vendedor', accion: function() {$scope.seleccionarVendedor();}},
11   - {texto: 'Cliente', accion: function() {$scope.seleccionarCliente();}},
12   - {texto: 'Proveedor', accion: function() {$scope.seleccionarProveedor();}},
13   - {texto: 'Moneda', accion: function() {$scope.abrirModalMoneda();}},
14   - {
15   - texto: 'Precios y condiciones',
16   - accion: function() {$scope.abrirModalListaPrecio();}},
17   - {texto: 'Flete', accion: function() {$scope.abrirModalFlete();}},
  10 + {texto: 'Vendedor', accion: function() {
  11 + validarNotaRemitada($scope.seleccionarVendedor);}},
  12 + {texto: 'Cliente', accion: function() {
  13 + validarNotaRemitada($scope.seleccionarCliente);}},
  14 + {texto: 'Proveedor', accion: function() {
  15 + validarNotaRemitada($scope.seleccionarProveedor);}},
  16 + {texto: 'Moneda', accion: function() {
  17 + validarNotaRemitada($scope.abrirModalMoneda);}},
  18 + {texto: 'Precios y condiciones', accion: function() {
  19 + validarNotaRemitada($scope.abrirModalListaPrecio);}},
  20 + {texto: 'Flete', accion: function() {
  21 + validarNotaRemitada($scope.abrirModalFlete);}},
18 22 {texto: '', accion: function() {}},
19 23 {texto: '', accion: function() {}}
20 24 ];
  25 +
21 26 $scope.datepickerAbierto = false;
22 27  
23 28 $scope.show = false;
... ... @@ -28,6 +33,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
28 33 };
29 34  
30 35 $scope.notaPedido = {
  36 + id: 0,
31 37 vendedor: {},
32 38 cliente: {},
33 39 proveedor: {},
... ... @@ -38,13 +44,8 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
38 44 var monedaPorDefecto;
39 45 //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]'
40 46 crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) {
41   - monedaPorDefecto = {
42   - id: res.data[0].ID,
43   - detalle: res.data[0].DETALLE,
44   - simbolo: res.data[0].SIMBOLO,
45   - cotizaciones: res.data[0].cotizaciones
46   - };
47   - addCabecera('Moneda:', monedaPorDefecto.detalle);
  47 + monedaPorDefecto = res.data[0];
  48 + addCabecera('Moneda:', monedaPorDefecto.DETALLE);
48 49 addCabecera('Fecha cotizacion:',
49 50 new Date(monedaPorDefecto.cotizaciones[0].FECHA).toLocaleDateString());
50 51 addCabecera('Cotizacion:', monedaPorDefecto.cotizaciones[0].VENDEDOR);
... ... @@ -120,16 +121,16 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
120 121 // };
121 122  
122 123 $scope.crearNotaPedido = function() {
123   - if(!$scope.notaPedido.vendedor.codigo) {
  124 + if(!$scope.notaPedido.vendedor.CodVen) {
124 125 focaModalService.alert('Ingrese Vendedor');
125 126 return;
126   - } else if(!$scope.notaPedido.cliente.cod) {
  127 + } else if(!$scope.notaPedido.cliente.COD) {
127 128 focaModalService.alert('Ingrese Cliente');
128 129 return;
129   - } else if(!$scope.notaPedido.proveedor.codigo) {
  130 + } else if(!$scope.notaPedido.proveedor.COD) {
130 131 focaModalService.alert('Ingrese Proveedor');
131 132 return;
132   - } else if(!$scope.notaPedido.moneda.id) {
  133 + } else if(!$scope.notaPedido.moneda.ID) {
133 134 focaModalService.alert('Ingrese Moneda');
134 135 return;
135 136 } else if(!$scope.notaPedido.cotizacion.ID) {
... ... @@ -143,7 +144,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
143 144 {
144 145 focaModalService.alert('Ingrese Flete');
145 146 return;
146   - } else if(!$scope.notaPedido.domicilio.id) {
  147 + } else if(!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto
147 148 focaModalService.alert('Ingrese Domicilio');
148 149 return;
149 150 } else if($scope.articulosTabla.length === 0) {
... ... @@ -152,14 +153,14 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
152 153 }
153 154 var date = new Date();
154 155 var notaPedido = {
155   - id: 0,
  156 + id: $scope.notaPedido.id,
156 157 fechaCarga: new Date(date.getTime() - (date.getTimezoneOffset() * 60000))
157 158 .toISOString().slice(0, 19).replace('T', ' '),
158   - idVendedor: $scope.notaPedido.vendedor.codigo,
159   - idCliente: $scope.notaPedido.cliente.cod,
160   - nombreCliente: $scope.notaPedido.cliente.nom,
161   - cuitCliente: $scope.notaPedido.cliente.cuit,
162   - idProveedor: $scope.notaPedido.proveedor.codigo,
  159 + idVendedor: $scope.notaPedido.vendedor.CodVen,
  160 + idCliente: $scope.notaPedido.cliente.COD,
  161 + nombreCliente: $scope.notaPedido.cliente.NOM,
  162 + cuitCliente: $scope.notaPedido.cliente.CUIT,
  163 + idProveedor: $scope.notaPedido.proveedor.COD,
163 164 idDomicilio: $scope.notaPedido.domicilio.id,
164 165 idCotizacion: $scope.notaPedido.cotizacion.ID,
165 166 idPrecioCondicion: $scope.notaPedido.idPrecioCondicion,
... ... @@ -206,6 +207,16 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
206 207 $filter('date')($scope.notaPedido.cotizacion.FECHA, 'dd/MM/yyyy')
207 208 );
208 209 addCabecera('Cotizacion:', $scope.notaPedido.cotizacion.VENDEDOR);
  210 + crearNotaPedidoService.getNumeroNotaPedido().then(
  211 + function(res) {
  212 + $scope.puntoVenta = rellenar(res.data.sucursal, 4);
  213 + $scope.comprobante = rellenar(res.data.numeroNotaPedido, 8);
  214 + },
  215 + function(err) {
  216 + focaModalService.alert('La terminal no esta configurada correctamente');
  217 + console.info(err);
  218 + }
  219 + );
209 220 $scope.notaPedido.vendedor = {};
210 221 $scope.notaPedido.cliente = {};
211 222 $scope.notaPedido.proveedor = {};
... ... @@ -222,7 +233,112 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
222 233 }
223 234 );
224 235 };
  236 +
  237 + $scope.seleccionarNotaPedido = function() {
  238 + var modalInstance = $uibModal.open(
  239 + {
  240 + ariaLabelledBy: 'Busqueda de Nota de Pedido',
  241 + templateUrl: 'foca-modal-nota-pedido.html',
  242 + controller: 'focaModalNotaPedidoController',
  243 + size: 'lg',
  244 + resolve: {usadoPor: 'notaPedido'}
  245 + }
  246 + );
  247 + modalInstance.result.then(
  248 + function(notaPedido) {
  249 + //añado cabeceras
  250 + $scope.notaPedido.id = notaPedido.id;
  251 + removeCabecera('Moneda:');
  252 + removeCabecera('Fecha cotizacion:');
  253 + removeCabecera('Cotizacion:');
  254 + var cabeceras = [
  255 + {
  256 + label: 'Moneda',
  257 + valor: notaPedido.cotizacion[0].moneda[0].DETALLE
  258 + },
  259 + {
  260 + label: 'Fecha cotizacion',
  261 + valor: $filter('date')(notaPedido.cotizacion[0].FECHA,
  262 + 'dd/MM/yyyy')
  263 + },
  264 + {
  265 + label: 'Cotizacion',
  266 + valor: notaPedido.cotizacion[0].VENDEDOR
  267 + },
  268 + {
  269 + label: 'Cliente:',
  270 + valor: notaPedido.cliente[0].NOM
  271 + },
  272 + {
  273 + label: 'Domicilio:',
  274 + valor: notaPedido.domicilioStamp
  275 + },
  276 + {
  277 + label: 'Vendedor:',
  278 + valor: notaPedido.vendedor[0].NomVen
  279 + },
  280 + {
  281 + label: 'Proveedor:',
  282 + valor: notaPedido.proveedor[0].NOM
  283 + },
  284 + {
  285 + label: 'Flete:',
  286 + valor: notaPedido.flete === 1 ? 'Si' : 'No'
  287 + },
  288 + {
  289 + label: 'FOB:',
  290 + valor: notaPedido.fob === 1 ? 'Si' : 'No'
  291 + },
  292 + {
  293 + label: 'Precio condicion:',
  294 + valor: valorPrecioCondicion()
  295 + }
  296 + ];
  297 + //TODO MOSTRAR PLAZOS
  298 + function valorPrecioCondicion() {
  299 + if(notaPedido.idPrecioCondicion > 0) {
  300 + return notaPedido.precioCondicion[0].nombre;
  301 + } else {
  302 + return 'Ingreso Manual';
  303 + }
  304 + }
  305 +
  306 + if(notaPedido.flete === 1) {
  307 + var cabeceraBomba = {
  308 + label: 'Bomba',
  309 + valor: notaPedido.bomba === 1 ? 'Si' : 'No'
  310 + };
  311 + if(notaPedido.kilometros) {
  312 + var cabeceraKilometros = {
  313 + label: 'Kilometros',
  314 + valor: notaPedido.kilometros
  315 + };
  316 + cabeceras.push(cabeceraKilometros);
  317 + }
  318 + cabeceras.push(cabeceraBomba);
  319 + }
  320 + $scope.articulosTabla = notaPedido.articulosNotaPedido;
  321 + if(notaPedido.precioCondicion.length > 0) {
  322 + $scope.idLista = notaPedido.precioCondicion[0].idListaPrecio;
  323 + } else {
  324 + $scope.idLista = -1;
  325 + }
  326 + $scope.comprobante = rellenar(notaPedido.numeroNotaPedido, 8);
  327 + $scope.notaPedido = notaPedido;
  328 + $scope.notaPedido.vendedor = notaPedido.vendedor[0];
  329 + $scope.notaPedido.cliente = notaPedido.cliente[0];
  330 + $scope.notaPedido.proveedor = notaPedido.proveedor[0];
  331 + $scope.notaPedido.moneda = notaPedido.cotizacion[0].moneda[0];
  332 + $scope.notaPedido.cotizacion = notaPedido.cotizacion[0];
  333 + $scope.plazosPagos = notaPedido.plazoPago;
  334 + addArrayCabecera(cabeceras);
225 335  
  336 + }, function() {
  337 + // funcion ejecutada cuando se cancela el modal
  338 + }
  339 + );
  340 + }
  341 +
226 342 $scope.seleccionarArticulo = function() {
227 343 if ($scope.idLista === undefined) {
228 344 focaModalService.alert(
... ... @@ -289,7 +405,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
289 405 modalInstance.result.then(
290 406 function(vendedor) {
291 407 addCabecera('Vendedor:', vendedor.NomVen);
292   - $scope.notaPedido.vendedor.codigo = vendedor.CodVen;
  408 + $scope.notaPedido.vendedor = vendedor;
293 409 }, function() {
294 410  
295 411 }
... ... @@ -312,7 +428,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
312 428 );
313 429 modalInstance.result.then(
314 430 function(proveedor) {
315   - $scope.notaPedido.proveedor.codigo = proveedor.COD;
  431 + $scope.notaPedido.proveedor = proveedor;
316 432 addCabecera('Proveedor:', proveedor.NOM);
317 433 }, function() {
318 434  
... ... @@ -351,8 +467,12 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
351 467 );
352 468 modalInstanceDomicilio.result.then(
353 469 function(domicilio) {
354   - $scope.notaPedido.domicilio.id = domicilio.id;
355   - $scope.notaPedido.cliente = cliente;
  470 + $scope.notaPedido.domicilio = domicilio;
  471 + $scope.notaPedido.cliente = {
  472 + COD: cliente.cod,
  473 + CUIT: cliente.cuit,
  474 + NOM: cliente.nom
  475 + };
356 476 addCabecera('Cliente:', cliente.nom);
357 477 var domicilioStamp =
358 478 domicilio.Calle + ' ' + domicilio.Numero + ', ' +
... ... @@ -515,11 +635,7 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
515 635 cotizacion.VENDEDOR;
516 636 }
517 637 $scope.articulosTabla = articulosTablaTemp;
518   - $scope.notaPedido.moneda = {
519   - id: moneda.ID,
520   - detalle: moneda.DETALLE,
521   - simbolo: moneda.SIMBOLO
522   - };
  638 + $scope.notaPedido.moneda = moneda;
523 639 $scope.notaPedido.cotizacion = cotizacion;
524 640 addCabecera('Moneda:', moneda.DETALLE);
525 641 addCabecera(
... ... @@ -622,6 +738,12 @@ angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
622 738 articulo.cantidad = parseFloat(articulo.cantidad);
623 739 articulo.precio = parseFloat(articulo.precio);
624 740 };
  741 +
  742 + function addArrayCabecera(array) {
  743 + for(var i = 0; i < array.length; i++) {
  744 + addCabecera(array[i].label, array[i].valor);
  745 + }
  746 + }
625 747  
626 748 function addCabecera(label, valor) {
627 749 var propiedad = $filter('filter')($scope.cabecera, {label: label}, true);
... ... @@ -647,6 +769,15 @@ angular.module(&#39;focaCrearNotaPedido&#39;) .controller(&#39;notaPedidoCtrl&#39;,
647 769  
648 770 return relleno;
649 771 }
  772 +
  773 + function validarNotaRemitada(funcion) {
  774 + if($scope.notaPedido.idRemito) {
  775 + focaModalService.alert('No se puede editar una nota de pedido remitada');
  776 + }
  777 + else {
  778 + funcion();
  779 + }
  780 + }
650 781 }
651 782 ]
652 783 )
src/views/nota-pedido.html
... ... @@ -10,6 +10,13 @@
10 10 </div>
11 11 <div class="col-5 col-sm-4 numero-pedido"
12 12 >Nº {{puntoVenta}}-{{comprobante}}
  13 + <button
  14 + class="btn btn-xs btn-outline-dark"
  15 + type="button"
  16 + ng-click="seleccionarNotaPedido()"
  17 + >
  18 + <i class="fa fa-search"></i>
  19 + </button>
13 20 </div>
14 21 <div class="col-7 col-sm-4 text-right">
15 22 Fecha: