Commit 188a500a9b502791a972aea139d3ac4524b904e4

Authored by Eric Fernandez
Exists in master

Merge branch 'develop' into 'master'

Develop

See merge request !119
src/js/controller.js
1 angular.module('focaCrearNotaPedido').controller('notaPedidoCtrl', 1 angular.module('focaCrearNotaPedido').controller('notaPedidoCtrl',
2 [ 2 [
3 '$scope', 3 '$scope',
4 '$uibModal', 4 '$uibModal',
5 '$location', 5 '$location',
6 '$filter', 6 '$filter',
7 '$timeout', 7 '$timeout',
8 'crearNotaPedidoService', 8 'crearNotaPedidoService',
9 'focaBotoneraLateralService', 9 'focaBotoneraLateralService',
10 'focaModalService', 10 'focaModalService',
11 'notaPedidoBusinessService', 11 'notaPedidoBusinessService',
12 '$rootScope', 12 '$rootScope',
13 'focaSeguimientoService', 13 'focaSeguimientoService',
14 'APP', 14 'APP',
15 'focaLoginService', 15 'focaLoginService',
16 '$localStorage', 16 '$localStorage',
17 function ( 17 function (
18 $scope, $uibModal, $location, $filter, $timeout, crearNotaPedidoService, 18 $scope, $uibModal, $location, $filter, $timeout, crearNotaPedidoService,
19 focaBotoneraLateralService, focaModalService, notaPedidoBusinessService, 19 focaBotoneraLateralService, focaModalService, notaPedidoBusinessService,
20 $rootScope, focaSeguimientoService, APP, focaLoginService, $localStorage) { 20 $rootScope, focaSeguimientoService, APP, focaLoginService, $localStorage) {
21 config(); 21 config();
22 var cotizacionPArgentino = {}; 22 var cotizacionPArgentino = {};
23 23
24 function config() { 24 function config() {
25 // PARAMETROS INICIALES PARA FUNCIONAMIENTO DEL PROGRAMA 25 // PARAMETROS INICIALES PARA FUNCIONAMIENTO DEL PROGRAMA
26 $scope.tmpCantidad = Number; 26 $scope.tmpCantidad = Number;
27 $scope.tmpPrecio = Number; 27 $scope.tmpPrecio = Number;
28 $scope.notaPedido = {}; 28 $scope.notaPedido = {};
29 $scope.isNumber = angular.isNumber; 29 $scope.isNumber = angular.isNumber;
30 $scope.datepickerAbierto = false; 30 $scope.datepickerAbierto = false;
31 $scope.show = false; 31 $scope.show = false;
32 $scope.cargando = true; 32 $scope.cargando = true;
33 $scope.cabeceras = [];
33 $scope.botonera = crearNotaPedidoService.getBotonera(); 34 $scope.botonera = crearNotaPedidoService.getBotonera();
34 $scope.puntoVenta = $filter('rellenarDigitos')(0, 4); 35 $scope.puntoVenta = $filter('rellenarDigitos')(0, 4);
35 $scope.comprobante = $filter('rellenarDigitos')(0, 8); 36 $scope.comprobante = $filter('rellenarDigitos')(0, 8);
36 $scope.dateOptions = { 37 $scope.dateOptions = {
37 maxDate: new Date(), 38 maxDate: new Date(),
38 minDate: new Date(2010, 0, 1) 39 minDate: new Date(2010, 0, 1)
39 }; 40 };
40 41
41 //SETEO BOTONERA LATERAL 42 //SETEO BOTONERA LATERAL
42 $timeout(function () { 43 $timeout(function () {
43 focaBotoneraLateralService.showSalir(false); 44 focaBotoneraLateralService.showSalir(false);
44 focaBotoneraLateralService.showPausar(true); 45 focaBotoneraLateralService.showPausar(true);
45 focaBotoneraLateralService.showGuardar(true, $scope.crearNotaPedido); 46 focaBotoneraLateralService.showGuardar(true, $scope.crearNotaPedido);
46 focaBotoneraLateralService.addCustomButton('Salir', salir); 47 focaBotoneraLateralService.addCustomButton('Salir', salir);
47 }); 48 });
48 49
49 // SETEA BOTONERA DE FACTURADOR TENIENDO EN CUENTA SI ESTA SETEADO EL VENDEDOR 50 // SETEA BOTONERA DE FACTURADOR TENIENDO EN CUENTA SI ESTA SETEADO EL VENDEDOR
50 if (APP === 'distribuidor') { 51 if (APP === 'distribuidor') {
51 $scope.idVendedor = focaLoginService.getLoginData().vendedorCobrador; 52 $scope.idVendedor = focaLoginService.getLoginData().vendedorCobrador;
52 } 53 }
53 54
54 crearNotaPedidoService.getParametros().then(function (res) { 55 crearNotaPedidoService.getParametros().then(function (res) {
55 var parametros = JSON.parse(res.data[0].jsonText); 56 var parametros = JSON.parse(res.data[0].jsonText);
56 if ($localStorage.notaPedido) { 57 if ($localStorage.notaPedido) {
57 $timeout(function () { getLSNotaPedido(); }); 58 $timeout(function () { getLSNotaPedido(); });
58 } else { 59 } else {
59 for (var property in parametros) { 60 for (var property in parametros) {
60 $scope.notaPedido[property] = parametros[property]; 61 $scope.notaPedido[property] = parametros[property];
61 $scope.inicial[property] = parametros[property]; 62 $scope.inicial[property] = parametros[property];
62 } 63 }
63 setearNotaPedido($scope.notaPedido); 64 setearNotaPedido($scope.notaPedido);
64 } 65 }
65 }); 66 });
66 67
67 init(); 68 init();
68 69
69 } 70 }
70 71
71 function init() { 72 function init() {
72 $scope.$broadcast('cleanCabecera'); 73 $scope.$broadcast('cleanCabecera');
73 74
74 $scope.notaPedido = { 75 $scope.notaPedido = {
75 id: 0, 76 id: 0,
76 cliente: {}, 77 cliente: {},
77 proveedor: {}, 78 proveedor: {},
78 domicilio: { dom: '' }, 79 domicilio: { dom: '' },
79 vendedor: {}, 80 vendedor: {},
80 fechaCarga: new Date(), 81 fechaCarga: new Date(),
81 cotizacion: {}, 82 cotizacion: {},
82 articulosNotaPedido: [], 83 articulosNotaPedido: [],
83 notaPedidoPlazo: [], 84 notaPedidoPlazo: [],
84 notaPedidoPuntoDescarga: [] 85 notaPedidoPuntoDescarga: []
85 }; 86 };
86 $scope.idLista = undefined; 87 $scope.idLista = undefined;
87 88
88 crearNotaPedidoService.getNumeroNotaPedido().then( 89 crearNotaPedidoService.getNumeroNotaPedido().then(
89 function (res) { 90 function (res) {
90 $scope.puntoVenta = $filter('rellenarDigitos')( 91 $scope.puntoVenta = $filter('rellenarDigitos')(
91 res.data.sucursal, 4 92 res.data.sucursal, 4
92 ); 93 );
93 94
94 $scope.comprobante = $filter('rellenarDigitos')( 95 $scope.comprobante = $filter('rellenarDigitos')(
95 res.data.numeroNotaPedido, 8 96 res.data.numeroNotaPedido, 8
96 ); 97 );
97 }, 98 },
98 function (err) { 99 function (err) {
99 focaModalService.alert('La terminal no esta configurada correctamente'); 100 focaModalService.alert('La terminal no esta configurada correctamente');
100 console.info(err); 101 console.info(err);
101 } 102 }
102 ); 103 );
103 104
104 if (APP === 'distribuidor') { 105 if (APP === 'distribuidor') {
105 crearNotaPedidoService.getVendedorById($scope.idVendedor).then( 106 crearNotaPedidoService.getVendedorById($scope.idVendedor).then(
106 function (res) { 107 function (res) {
107 var vendedor = res.data; 108 var vendedor = res.data;
108 $scope.$broadcast('addCabecera', { 109 $scope.$broadcast('addCabecera', {
109 label: 'Vendedor:', 110 label: 'Vendedor:',
110 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' + 111 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' +
111 vendedor.NOM 112 vendedor.NOM
112 }); 113 });
113 114
114 $scope.notaPedido.vendedor = vendedor; 115 $scope.notaPedido.vendedor = vendedor;
115 $scope.inicial.vendedor = $scope.notaPedido.vendedor; 116 $scope.inicial.vendedor = $scope.notaPedido.vendedor;
116 } 117 }
117 ); 118 );
118 } 119 }
119 120
120 $scope.inicial = angular.copy($scope.notaPedido); 121 $scope.inicial = angular.copy($scope.notaPedido);
121 } 122 }
122 123
123 $scope.$watch('notaPedido', function (newValue) { 124 $scope.$watch('notaPedido', function (newValue) {
124 focaBotoneraLateralService.setPausarData({ 125 focaBotoneraLateralService.setPausarData({
125 label: 'notaPedido', 126 label: 'notaPedido',
126 val: newValue 127 val: newValue
127 }); 128 });
128 }, true); 129 }, true);
129 130
130 $scope.crearNotaPedido = function () { 131 $scope.crearNotaPedido = function () {
131 if (!$scope.notaPedido.cliente.COD) { 132 if (!$scope.notaPedido.cliente.COD) {
132 focaModalService.alert('Ingrese Cliente'); 133 focaModalService.alert('Ingrese Cliente');
133 return; 134 return;
134 } else if ($scope.notaPedido.idRemito === -1) { 135 } else if ($scope.notaPedido.idRemito === -1) {
135 focaBotoneraLateralService.alert('No se puede modificar esta nota de pedido'); 136 focaBotoneraLateralService.alert('No se puede modificar esta nota de pedido');
136 return; 137 return;
137 } else if (!$scope.notaPedido.proveedor.COD) { 138 } else if (!$scope.notaPedido.proveedor.COD) {
138 focaModalService.alert('Ingrese Proveedor'); 139 focaModalService.alert('Ingrese Proveedor');
139 return; 140 return;
140 } else if (!$scope.notaPedido.cotizacion.ID) { 141 } else if (!$scope.notaPedido.cotizacion.ID) {
141 focaModalService.alert('Ingrese Cotización'); 142 focaModalService.alert('Ingrese Cotización');
142 return; 143 return;
143 } else if (!$scope.notaPedido.cotizacion.moneda.ID) { 144 } else if (!$scope.notaPedido.cotizacion.moneda.ID) {
144 focaModalService.alert('Ingrese Moneda'); 145 focaModalService.alert('Ingrese Moneda');
145 return; 146 return;
146 } else if (!$scope.notaPedido.notaPedidoPlazo) { 147 } else if (!$scope.notaPedido.notaPedidoPlazo) {
147 focaModalService.alert('Ingrese Precios y Condiciones'); 148 focaModalService.alert('Ingrese Precios y Condiciones');
148 return; 149 return;
149 } else if ( 150 } else if (
150 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null) { 151 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null) {
151 focaModalService.alert('Ingrese Flete'); 152 focaModalService.alert('Ingrese Flete');
152 return; 153 return;
153 } else if (!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto 154 } else if (!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto
154 focaModalService.alert('Ingrese Domicilio'); 155 focaModalService.alert('Ingrese Domicilio');
155 return; 156 return;
156 } else if ($scope.notaPedido.articulosNotaPedido.length === 0) { 157 } else if ($scope.notaPedido.articulosNotaPedido.length === 0) {
157 focaModalService.alert('Debe cargar al menos un articulo'); 158 focaModalService.alert('Debe cargar al menos un articulo');
158 return; 159 return;
159 } 160 }
160 161
161 focaBotoneraLateralService.startGuardar(); 162 focaBotoneraLateralService.startGuardar();
162 $scope.saveLoading = true; 163 $scope.saveLoading = true;
163 var notaPedido = { 164 var notaPedido = {
164 id: $scope.notaPedido.id, 165 id: $scope.notaPedido.id,
165 fechaCarga: new Date($scope.notaPedido.fechaCarga) 166 fechaCarga: new Date($scope.notaPedido.fechaCarga)
166 .toISOString().slice(0, 19).replace('T', ' '), 167 .toISOString().slice(0, 19).replace('T', ' '),
167 idVendedor: $scope.notaPedido.vendedor.id, 168 idVendedor: $scope.notaPedido.vendedor.id,
168 idCliente: $scope.notaPedido.cliente.COD, 169 idCliente: $scope.notaPedido.cliente.COD,
169 nombreCliente: $scope.notaPedido.cliente.NOM, 170 nombreCliente: $scope.notaPedido.cliente.NOM,
170 cuitCliente: $scope.notaPedido.cliente.CUIT, 171 cuitCliente: $scope.notaPedido.cliente.CUIT,
171 idProveedor: $scope.notaPedido.proveedor.COD, 172 idProveedor: $scope.notaPedido.proveedor.COD,
172 idDomicilio: $scope.notaPedido.domicilio.id, 173 idDomicilio: $scope.notaPedido.domicilio.id,
173 idCotizacion: $scope.notaPedido.cotizacion.ID, 174 idCotizacion: $scope.notaPedido.cotizacion.ID,
174 idListaPrecio: $scope.notaPedido.idPrecioCondicion, 175 idListaPrecio: $scope.idLista,
175 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 176 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
176 flete: $scope.notaPedido.flete, 177 flete: $scope.notaPedido.flete,
177 fob: $scope.notaPedido.fob, 178 fob: $scope.notaPedido.fob,
178 bomba: $scope.notaPedido.bomba, 179 bomba: $scope.notaPedido.bomba,
179 kilometros: $scope.notaPedido.kilometros, 180 kilometros: $scope.notaPedido.kilometros,
180 domicilioStamp: $scope.notaPedido.domicilioStamp, 181 domicilioStamp: $scope.notaPedido.domicilioStamp,
181 observaciones: $scope.notaPedido.observaciones, 182 observaciones: $scope.notaPedido.observaciones,
182 estado: 0, 183 estado: 0,
183 total: $scope.getTotal() 184 total: $scope.getTotal()
184 }; 185 };
185 crearNotaPedidoService.crearNotaPedido(notaPedido).then( 186 crearNotaPedidoService.crearNotaPedido(notaPedido).then(
186 function (data) { 187 function (data) {
187 // Al guardar los datos de la nota de pedido logueamos la 188 // Al guardar los datos de la nota de pedido logueamos la
188 // actividad para su seguimiento. 189 // actividad para su seguimiento.
189 //TODO: GUARDAR POSISIONAMIENTO AL EDITAR? 190 //TODO: GUARDAR POSISIONAMIENTO AL EDITAR?
190 focaSeguimientoService.guardarPosicion( 191 focaSeguimientoService.guardarPosicion(
191 'Nota de pedido', 192 'Nota de pedido',
192 data.data.id, 193 data.data.id,
193 '' 194 ''
194 ); 195 );
195 notaPedidoBusinessService.addArticulos( 196 notaPedidoBusinessService.addArticulos(
196 $scope.notaPedido.articulosNotaPedido, 197 $scope.notaPedido.articulosNotaPedido,
197 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR); 198 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR);
198 199
199 if ($scope.notaPedido.notaPedidoPuntoDescarga.length > 0) { 200 if ($scope.notaPedido.notaPedidoPuntoDescarga.length > 0) {
200 notaPedidoBusinessService.addPuntosDescarga(data.data.id, 201 notaPedidoBusinessService.addPuntosDescarga(data.data.id,
201 $scope.notaPedido.notaPedidoPuntoDescarga); 202 $scope.notaPedido.notaPedidoPuntoDescarga);
202 } 203 }
203 204
204 var plazos = $scope.notaPedido.notaPedidoPlazo; 205 var plazos = $scope.notaPedido.notaPedidoPlazo;
205 var plazosACrear = []; 206 var plazosACrear = [];
206 plazos.forEach(function (plazo) { 207 plazos.forEach(function (plazo) {
207 plazosACrear.push({ 208 plazosACrear.push({
208 idNotaPedido: data.data.id, 209 idNotaPedido: data.data.id,
209 dias: plazo.dias 210 dias: plazo.dias
210 }); 211 });
211 }); 212 });
212 213
213 if (plazosACrear.length) { 214 if (plazosACrear.length) {
214 crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear); 215 crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear);
215 } 216 }
216 217
217 notaPedidoBusinessService.addEstado(data.data.id, 218 notaPedidoBusinessService.addEstado(data.data.id,
218 $scope.notaPedido.vendedor.id); 219 $scope.notaPedido.vendedor.id);
219 220
220 focaBotoneraLateralService.endGuardar(true); 221 focaBotoneraLateralService.endGuardar(true);
221 $scope.saveLoading = false; 222 $scope.saveLoading = false;
222 223
223 config(); 224 config();
224 }, function (error) { 225 }, function (error) {
225 focaModalService.alert('Hubo un error al crear la nota de pedido'); 226 focaModalService.alert('Hubo un error al crear la nota de pedido');
226 focaBotoneraLateralService.endGuardar(); 227 focaBotoneraLateralService.endGuardar();
227 $scope.saveLoading = false; 228 $scope.saveLoading = false;
228 console.info(error); 229 console.info(error);
229 }); 230 });
230 }; 231 };
231 232
232 $scope.seleccionarNotaPedido = function () { 233 $scope.seleccionarNotaPedido = function () {
233 var modalInstance = $uibModal.open( 234 var modalInstance = $uibModal.open(
234 { 235 {
235 ariaLabelledBy: 'Busqueda de Nota de Pedido', 236 ariaLabelledBy: 'Busqueda de Nota de Pedido',
236 templateUrl: 'foca-modal-nota-pedido.html', 237 templateUrl: 'foca-modal-nota-pedido.html',
237 controller: 'focaModalNotaPedidoController', 238 controller: 'focaModalNotaPedidoController',
238 size: 'lg', 239 size: 'lg',
239 resolve: { 240 resolve: {
240 usadoPor: function () { return 'notaPedido'; }, 241 usadoPor: function () { return 'notaPedido'; },
241 idVendedor: function () { 242 idVendedor: function () {
242 if (APP === 'distribuidor') 243 if (APP === 'distribuidor')
243 return $scope.notaPedido.vendedor.id; 244 return $scope.notaPedido.vendedor.id;
244 else 245 else
245 return null; 246 return null;
246 } 247 }
247 } 248 }
248 } 249 }
249 ); 250 );
250 modalInstance.result.then(function(notaPedido) { 251 modalInstance.result.then(function (notaPedido) {
251 252
252 notaPedido.articulosNotaPedido.forEach(function (articulo) { 253 notaPedido.articulosNotaPedido.forEach(function (articulo) {
253 articulo.precio = 254 articulo.precio =
254 (articulo.precio / notaPedido.cotizacion.VENDEDOR).toFixed(4); 255 (articulo.precio / notaPedido.cotizacion.VENDEDOR).toFixed(4);
255 }); 256 });
256 257
257 setearNotaPedido(notaPedido); 258 setearNotaPedido(notaPedido);
258 }); 259 });
259 }; 260 };
260 261
261 $scope.seleccionarProductos = function () { 262 $scope.seleccionarProductos = function () {
262
263 if ($scope.idLista === undefined) { 263 if ($scope.idLista === undefined) {
264 focaModalService.alert('Primero seleccione una lista de precio y condición'); 264 focaModalService.alert('Primero seleccione una lista de precio y condición');
265 return; 265 return;
266 } else if (!validarNotaRemitada()) { 266 } else if (!validarNotaRemitada()) {
267 return; 267 return;
268 } 268 }
269 269
270 var modalInstance = $uibModal.open( 270 var modalInstance = $uibModal.open(
271 { 271 {
272 ariaLabelledBy: 'Busqueda de Productos', 272 ariaLabelledBy: 'Busqueda de Productos',
273 templateUrl: 'modal-busqueda-productos.html', 273 templateUrl: 'modal-busqueda-productos.html',
274 controller: 'modalBusquedaProductosCtrl', 274 controller: 'modalBusquedaProductosCtrl',
275 resolve: { 275 resolve: {
276 parametroProducto: { 276 parametroProducto: {
277 idLista: $scope.idLista, 277 idLista: $scope.idLista,
278 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 278 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
279 simbolo: $scope.notaPedido.cotizacion.moneda.SIMBOLO 279 simbolo: $scope.notaPedido.cotizacion.moneda.SIMBOLO
280 } 280 }
281 }, 281 },
282 size: 'lg' 282 size: 'lg'
283 } 283 }
284 ); 284 );
285 modalInstance.result.then( 285 modalInstance.result.then(
286 function (producto) { 286 function (producto) {
287 var newArt = 287 var newArt =
288 { 288 {
289 id: 0, 289 id: 0,
290 codigo: producto.codigo, 290 codigo: producto.codigo,
291 sector: producto.sector, 291 sector: producto.sector,
292 sectorCodigo: producto.sector + '-' + producto.codigo, 292 sectorCodigo: producto.sector + '-' + producto.codigo,
293 descripcion: producto.descripcionLarga, 293 descripcion: producto.descripcionLarga,
294 item: $scope.notaPedido.articulosNotaPedido.length + 1, 294 item: $scope.notaPedido.articulosNotaPedido.length + 1,
295 nombre: producto.descripcion, 295 nombre: producto.descripcion,
296 precio: parseFloat(producto.precio.toFixed(4)), 296 precio: parseFloat(producto.precio.toFixed(4)),
297 costoUnitario: producto.costo, 297 costoUnitario: producto.costo,
298 editCantidad: false, 298 editCantidad: false,
299 editPrecio: false, 299 editPrecio: false,
300 rubro: producto.CodRub, 300 rubro: producto.CodRub,
301 ivaUnitario: producto.IMPIVA, 301 ivaUnitario: producto.IMPIVA,
302 impuestoInternoUnitario: producto.ImpInt, 302 impuestoInternoUnitario: producto.ImpInt,
303 impuestoInterno1Unitario: producto.ImpInt2, 303 impuestoInterno1Unitario: producto.ImpInt2,
304 impuestoInterno2Unitario: producto.ImpInt3, 304 impuestoInterno2Unitario: producto.ImpInt3,
305 precioLista: producto.precio, 305 precioLista: producto.precio,
306 combustible: 1, 306 combustible: 1,
307 facturado: 0, 307 facturado: 0,
308 idArticulo: producto.id, 308 idArticulo: producto.id,
309 tasaIva: producto.tasaIVA 309 tasaIva: producto.tasaIVA
310 }; 310 };
311 311
312 newArt.exentoUnitario = newArt.ivaUnitario ? 0 : producto.neto; 312 newArt.exentoUnitario = newArt.ivaUnitario ? 0 : producto.neto;
313 newArt.netoUnitario = newArt.ivaUnitario ? producto.neto : 0; 313 newArt.netoUnitario = newArt.ivaUnitario ? producto.neto : 0;
314 314
315 $scope.articuloACargar = newArt; 315 $scope.articuloACargar = newArt;
316 $scope.cargando = false; 316 $scope.cargando = false;
317 }, function () { 317 }, function () {
318 // funcion ejecutada cuando se cancela el modal 318 // funcion ejecutada cuando se cancela el modal
319 } 319 }
320 ); 320 );
321 }; 321 };
322 322
323 $scope.seleccionarPuntosDeDescarga = function () { 323 $scope.seleccionarPuntosDeDescarga = function () {
324 if (!$scope.notaPedido.cliente.COD || !$scope.notaPedido.domicilio.id) { 324 if (!$scope.notaPedido.cliente.COD || !$scope.notaPedido.domicilio.id) {
325 focaModalService.alert('Primero seleccione un cliente y un domicilio'); 325 focaModalService.alert('Primero seleccione un cliente y un domicilio');
326 return; 326 return;
327 } else { 327 } else {
328 var modalInstance = $uibModal.open( 328 var modalInstance = $uibModal.open(
329 { 329 {
330 ariaLabelledBy: 'Búsqueda de Puntos de descarga', 330 ariaLabelledBy: 'Búsqueda de Puntos de descarga',
331 templateUrl: 'modal-punto-descarga.html', 331 templateUrl: 'modal-punto-descarga.html',
332 controller: 'focaModalPuntoDescargaController', 332 controller: 'focaModalPuntoDescargaController',
333 size: 'lg', 333 size: 'lg',
334 resolve: { 334 resolve: {
335 filters: { 335 filters: {
336 idDomicilio: $scope.notaPedido.domicilio.id, 336 idDomicilio: $scope.notaPedido.domicilio.id,
337 idCliente: $scope.notaPedido.cliente.COD, 337 idCliente: $scope.notaPedido.cliente.COD,
338 articulos: $scope.notaPedido.articulosNotaPedido, 338 articulos: $scope.notaPedido.articulosNotaPedido,
339 puntoDescarga: $scope.notaPedido.notaPedidoPuntoDescarga, 339 puntoDescarga: $scope.notaPedido.notaPedidoPuntoDescarga,
340 domicilio: $scope.notaPedido.domicilio 340 domicilio: $scope.notaPedido.domicilio
341 } 341 }
342 } 342 }
343 } 343 }
344 ); 344 );
345 modalInstance.result.then( 345 modalInstance.result.then(
346 function (puntoDescarga) { 346 function (puntoDescarga) {
347 347
348 puntoDescarga.forEach(function (punto) { 348 puntoDescarga.forEach(function (punto) {
349 $scope.notaPedido.notaPedidoPuntoDescarga.push( 349 $scope.notaPedido.notaPedidoPuntoDescarga.push(
350 { 350 {
351 puntoDescarga: punto 351 puntoDescarga: punto
352 } 352 }
353 ); 353 );
354 }); 354 });
355 355
356 $scope.$broadcast('addCabecera', { 356 $scope.$broadcast('addCabecera', {
357 label: 'Puntos de descarga:', 357 label: 'Puntos de descarga:',
358 valor: getCabeceraPuntoDescarga(puntoDescarga) 358 valor: getCabeceraPuntoDescarga(puntoDescarga)
359 }); 359 });
360 }, function () { 360 }, function () {
361 $scope.abrirModalDomicilios($scope.cliente); 361 $scope.abrirModalDomicilios($scope.cliente);
362 } 362 }
363 ); 363 );
364 } 364 }
365 }; 365 };
366 366
367 $scope.seleccionarDomicilioDeEntrega = function () { 367 $scope.seleccionarDomicilioDeEntrega = function () {
368 if (!$scope.notaPedido.cliente.COD) { 368 if (!$scope.notaPedido.cliente.COD) {
369 focaModalService.alert('Seleccione un Cliente'); 369 focaModalService.alert('Seleccione un Cliente');
370 return; 370 return;
371 } else { 371 } else {
372 $scope.abrirModalDomicilios($scope.cliente); 372 $scope.abrirModalDomicilios($scope.cliente);
373 } 373 }
374 }; 374 };
375 $scope.seleccionarProveedor = function () { 375 $scope.seleccionarProveedor = function () {
376 $scope.abrirModalProveedores(function () { 376 $scope.abrirModalProveedores(function () {
377 if (validarNotaRemitada()) { 377 if (validarNotaRemitada()) {
378 var modalInstance = $uibModal.open( 378 var modalInstance = $uibModal.open(
379 { 379 {
380 ariaLabelledBy: 'Busqueda de Flete', 380 ariaLabelledBy: 'Busqueda de Flete',
381 templateUrl: 'modal-flete.html', 381 templateUrl: 'modal-flete.html',
382 controller: 'focaModalFleteController', 382 controller: 'focaModalFleteController',
383 size: 'lg', 383 size: 'lg',
384 resolve: { 384 resolve: {
385 parametrosFlete: 385 parametrosFlete:
386 function () { 386 function () {
387 return { 387 return {
388 flete: $scope.notaPedido.fob ? 'FOB' : 388 flete: $scope.notaPedido.fob ? 'FOB' :
389 ($scope.notaPedido.flete ? '1' : 389 ($scope.notaPedido.flete ? '1' :
390 ($scope.notaPedido.flete === undefined ? 390 ($scope.notaPedido.flete === undefined ?
391 null : '0')), 391 null : '0')),
392 bomba: $scope.notaPedido.bomba ? '1' : 392 bomba: $scope.notaPedido.bomba ? '1' :
393 ($scope.notaPedido.bomba === undefined ? 393 ($scope.notaPedido.bomba === undefined ?
394 null : '0'), 394 null : '0'),
395 kilometros: $scope.notaPedido.kilometros 395 kilometros: $scope.notaPedido.kilometros
396 }; 396 };
397 } 397 }
398 } 398 }
399 } 399 }
400 ); 400 );
401 modalInstance.result.then( 401 modalInstance.result.then(
402 function (datos) { 402 function (datos) {
403 $scope.notaPedido.flete = datos.flete; 403 $scope.notaPedido.flete = datos.flete;
404 $scope.notaPedido.fob = datos.FOB; 404 $scope.notaPedido.fob = datos.FOB;
405 $scope.notaPedido.bomba = datos.bomba; 405 $scope.notaPedido.bomba = datos.bomba;
406 $scope.notaPedido.kilometros = datos.kilometros; 406 $scope.notaPedido.kilometros = datos.kilometros;
407 $scope.$broadcast('addCabecera', { 407 $scope.$broadcast('addCabecera', {
408 label: 'Flete:', 408 label: 'Flete:',
409 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No') 409 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No')
410 }); 410 });
411 if (datos.flete) { 411 if (datos.flete) {
412 $scope.$broadcast('addCabecera', { 412 $scope.$broadcast('addCabecera', {
413 label: 'Bomba:', 413 label: 'Bomba:',
414 valor: datos.bomba ? 'Si' : 'No' 414 valor: datos.bomba ? 'Si' : 'No'
415 }); 415 });
416 $scope.$broadcast('addCabecera', { 416 $scope.$broadcast('addCabecera', {
417 label: 'Kilometros:', 417 label: 'Kilometros:',
418 valor: datos.kilometros 418 valor: datos.kilometros
419 }); 419 });
420 } else { 420 } else {
421 $scope.$broadcast('removeCabecera', 'Bomba:'); 421 $scope.$broadcast('removeCabecera', 'Bomba:');
422 $scope.$broadcast('removeCabecera', 'Kilometros:'); 422 $scope.$broadcast('removeCabecera', 'Kilometros:');
423 $scope.notaPedido.bomba = false; 423 $scope.notaPedido.bomba = false;
424 $scope.notaPedido.kilometros = null; 424 $scope.notaPedido.kilometros = null;
425 } 425 }
426 426
427 $filter('filter')($scope.botonera, 427 $filter('filter')($scope.botonera,
428 { label: 'Proveedor' })[0].checked = true; 428 { label: 'Proveedor' })[0].checked = true;
429 }, function () { 429 }, function () {
430 $scope.seleccionarTransportista(); 430 $scope.seleccionarTransportista();
431 } 431 }
432 ); 432 );
433 } 433 }
434 }); 434 });
435 }; 435 };
436 436
437 $scope.seleccionarVendedor = function (callback, ocultarVendedor) { 437 $scope.seleccionarVendedor = function (callback, ocultarVendedor) {
438 if (APP === 'distribuidor' || ocultarVendedor) { 438 if (APP === 'distribuidor' || ocultarVendedor) {
439 callback(); 439 callback();
440 return; 440 return;
441 } 441 }
442 442
443 if (validarNotaRemitada()) { 443 if (validarNotaRemitada()) {
444 var parametrosModal = { 444 var parametrosModal = {
445 titulo: 'Búsqueda vendedores', 445 titulo: 'Búsqueda vendedores',
446 query: '/vendedor', 446 query: '/vendedor',
447 columnas: [ 447 columnas: [
448 { 448 {
449 propiedad: 'NUM', 449 propiedad: 'NUM',
450 nombre: 'Código', 450 nombre: 'Código',
451 filtro: { 451 filtro: {
452 nombre: 'rellenarDigitos', 452 nombre: 'rellenarDigitos',
453 parametro: 3 453 parametro: 3
454 } 454 }
455 }, 455 },
456 { 456 {
457 propiedad: 'NOM', 457 propiedad: 'NOM',
458 nombre: 'Nombre' 458 nombre: 'Nombre'
459 } 459 }
460 ], 460 ],
461 size: 'md' 461 size: 'md'
462 }; 462 };
463 focaModalService.modal(parametrosModal).then( 463 focaModalService.modal(parametrosModal).then(
464 function (vendedor) { 464 function (vendedor) {
465 $scope.$broadcast('addCabecera', { 465 $scope.$broadcast('addCabecera', {
466 label: 'Vendedor:', 466 label: 'Vendedor:',
467 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' + 467 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' +
468 vendedor.NOM 468 vendedor.NOM
469 }); 469 });
470 $scope.notaPedido.vendedor = vendedor; 470 $scope.notaPedido.vendedor = vendedor;
471 deleteCliente(); 471 deleteCliente();
472 callback(); 472 callback();
473 }, function () { } 473 }, function () { }
474 ); 474 );
475 } 475 }
476 }; 476 };
477 477
478 $scope.seleccionarCliente = function () { 478 $scope.seleccionarCliente = function () {
479 if (validarNotaRemitada()) { 479 if (validarNotaRemitada()) {
480 480
481 var modalInstance = $uibModal.open( 481 var modalInstance = $uibModal.open(
482 { 482 {
483 ariaLabelledBy: 'Busqueda de Cliente', 483 ariaLabelledBy: 'Busqueda de Cliente',
484 templateUrl: 'foca-busqueda-cliente-modal.html', 484 templateUrl: 'foca-busqueda-cliente-modal.html',
485 controller: 'focaBusquedaClienteModalController', 485 controller: 'focaBusquedaClienteModalController',
486 resolve: { 486 resolve: {
487 vendedor: function () { return { id: $scope.idVendedor} }, 487 vendedor: function () { return { id: $scope.idVendedor }; },
488 cobrador: function () { return null; } 488 cobrador: function () { return null; }
489 }, 489 },
490 size: 'lg' 490 size: 'lg'
491 } 491 }
492 ); 492 );
493 modalInstance.result.then( 493 modalInstance.result.then(
494 function (cliente) { 494 function (cliente) {
495 cliente.mod = cliente.mod; 495 cliente.mod = cliente.mod;
496 $scope.abrirModalDomicilios(cliente); 496 $scope.abrirModalDomicilios(cliente);
497 $scope.cliente = cliente; 497 $scope.cliente = cliente;
498 }, function () { } 498 }, function () { }
499 ); 499 );
500 } 500 }
501 }; 501 };
502 502
503 $scope.abrirModalProveedores = function (callback) { 503 $scope.abrirModalProveedores = function (callback) {
504 if (validarNotaRemitada()) { 504 if (validarNotaRemitada()) {
505 var parametrosModal = { 505 var parametrosModal = {
506 titulo: 'Búsqueda de Proveedor', 506 titulo: 'Búsqueda de Proveedor',
507 query: '/proveedor', 507 query: '/proveedor',
508 columnas: [ 508 columnas: [
509 { 509 {
510 nombre: 'Código', 510 nombre: 'Código',
511 propiedad: 'COD', 511 propiedad: 'COD',
512 filtro: { 512 filtro: {
513 nombre: 'rellenarDigitos', 513 nombre: 'rellenarDigitos',
514 parametro: 5 514 parametro: 5
515 } 515 }
516 }, 516 },
517 { 517 {
518 nombre: 'Nombre', 518 nombre: 'Nombre',
519 propiedad: 'NOM' 519 propiedad: 'NOM'
520 }, 520 },
521 { 521 {
522 nombre: 'CUIT', 522 nombre: 'CUIT',
523 propiedad: 'CUIT' 523 propiedad: 'CUIT'
524 } 524 }
525 ], 525 ],
526 tipo: 'POST', 526 tipo: 'POST',
527 json: { razonCuitCod: '' } 527 json: { razonCuitCod: '' }
528 }; 528 };
529 focaModalService.modal(parametrosModal).then( 529 focaModalService.modal(parametrosModal).then(
530 function (proveedor) { 530 function (proveedor) {
531 $scope.notaPedido.proveedor = proveedor; 531 $scope.notaPedido.proveedor = proveedor;
532 $scope.$broadcast('addCabecera', { 532 $scope.$broadcast('addCabecera', {
533 label: 'Proveedor:', 533 label: 'Proveedor:',
534 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' + 534 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' +
535 proveedor.NOM 535 proveedor.NOM
536 }); 536 });
537 callback(); 537 callback();
538 }, function () { 538 }, function () {
539 539
540 } 540 }
541 ); 541 );
542 } 542 }
543 }; 543 };
544 544
545 $scope.abrirModalDomicilios = function (cliente) { 545 $scope.abrirModalDomicilios = function (cliente) {
546 var modalInstanceDomicilio = $uibModal.open( 546 var modalInstanceDomicilio = $uibModal.open(
547 { 547 {
548 ariaLabelledBy: 'Busqueda de Domicilios', 548 ariaLabelledBy: 'Busqueda de Domicilios',
549 templateUrl: 'modal-domicilio.html', 549 templateUrl: 'modal-domicilio.html',
550 controller: 'focaModalDomicilioController', 550 controller: 'focaModalDomicilioController',
551 resolve: { 551 resolve: {
552 idCliente: function () { return cliente.cod; }, 552 idCliente: function () { return cliente.cod; },
553 esNuevo: function () { return cliente.esNuevo; } 553 esNuevo: function () { return cliente.esNuevo; }
554 }, 554 },
555 size: 'lg', 555 size: 'lg',
556 } 556 }
557 ); 557 );
558 modalInstanceDomicilio.result.then( 558 modalInstanceDomicilio.result.then(
559 function (domicilio) { 559 function (domicilio) {
560 $scope.notaPedido.domicilio = domicilio; 560 $scope.notaPedido.domicilio = domicilio;
561 $scope.notaPedido.cliente = { 561 $scope.notaPedido.cliente = {
562 COD: cliente.cod, 562 COD: cliente.cod,
563 CUIT: cliente.cuit, 563 CUIT: cliente.cuit,
564 NOM: cliente.nom, 564 NOM: cliente.nom,
565 MOD: cliente.mod, 565 MOD: cliente.mod,
566 VEN: cliente.ven 566 VEN: cliente.ven
567 }; 567 };
568 crearNotaPedidoService.getVendedorById($scope.notaPedido.cliente.VEN) 568 crearNotaPedidoService.getVendedorById($scope.notaPedido.cliente.VEN)
569 .then(function (res) { 569 .then(function (res) {
570 if (res.data !== '') { 570 if (res.data !== '') {
571 $scope.notaPedido.vendedor = res.data; 571 $scope.notaPedido.vendedor = res.data;
572 $scope.$broadcast('addCabecera', { 572 $scope.$broadcast('addCabecera', {
573 label: 'Vendedor:', 573 label: 'Vendedor:',
574 valor: $filter('rellenarDigitos') 574 valor: $filter('rellenarDigitos')
575 ($scope.notaPedido.vendedor.NUM, 3) + 575 ($scope.notaPedido.vendedor.NUM, 3) +
576 ' - ' + $scope.notaPedido.vendedor.NOM 576 ' - ' + $scope.notaPedido.vendedor.NOM
577 }); 577 });
578 } 578 }
579 var domicilioStamp = 579 var domicilioStamp =
580 domicilio.Calle + ' ' + domicilio.Numero + ', ' + 580 domicilio.Calle + ' ' + domicilio.Numero + ', ' +
581 domicilio.Localidad + ', ' + domicilio.Provincia; 581 domicilio.Localidad + ', ' + domicilio.Provincia;
582 $scope.notaPedido.domicilioStamp = domicilioStamp; 582 $scope.notaPedido.domicilioStamp = domicilioStamp;
583 583
584 $scope.$broadcast('addCabecera', { 584 $scope.$broadcast('addCabecera', {
585 label: 'Cliente:', 585 label: 'Cliente:',
586 valor: $filter('rellenarDigitos')(cliente.cod, 5) + 586 valor: $filter('rellenarDigitos')(cliente.cod, 5) +
587 ' - ' + cliente.nom 587 ' - ' + cliente.nom
588 }); 588 });
589 589
590 $scope.$broadcast('addCabecera', { 590 $scope.$broadcast('addCabecera', {
591 label: 'Domicilio:', 591 label: 'Domicilio:',
592 valor: domicilioStamp 592 valor: domicilioStamp
593 }); 593 });
594 594
595 if (domicilio.verPuntos) { 595 if (domicilio.verPuntos) {
596 delete $scope.notaPedido.domicilio.verPuntos; 596 delete $scope.notaPedido.domicilio.verPuntos;
597 $scope.seleccionarPuntosDeDescarga(); 597 $scope.seleccionarPuntosDeDescarga();
598 } 598 }
599 599
600 // Seteo checked en botonera 600 // Seteo checked en botonera
601 $filter('filter')($scope.botonera, 601 $filter('filter')($scope.botonera,
602 { label: 'Cliente' })[0].checked = true; 602 { label: 'Cliente' })[0].checked = true;
603 $filter('filter')($scope.botonera, 603 $filter('filter')($scope.botonera,
604 { label: 'Domicilio de Entrega' })[0].checked = true; 604 { label: 'Domicilio de Entrega' })[0].checked = true;
605 }) 605 })
606 .catch(function (e) { console.log(e); }); 606 .catch(function (e) { console.log(e); });
607 }, function () { 607 }, function () {
608 $scope.seleccionarCliente(true); 608 $scope.seleccionarCliente(true);
609 return; 609 return;
610 } 610 }
611 ); 611 );
612 }; 612 };
613 613
614 $scope.getTotal = function () { 614 $scope.getTotal = function () {
615 var total = 0; 615 var total = 0;
616 if ($scope.notaPedido.articulosNotaPedido) { 616 if ($scope.notaPedido.articulosNotaPedido) {
617 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido; 617 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido;
618 for (var i = 0; i < arrayTempArticulos.length; i++) { 618 for (var i = 0; i < arrayTempArticulos.length; i++) {
619 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 619 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
620 } 620 }
621 } 621 }
622 return parseFloat(total.toFixed(2)); 622 return parseFloat(total.toFixed(2));
623 }; 623 };
624 624
625 $scope.getSubTotal = function () { 625 $scope.getSubTotal = function () {
626 if ($scope.articuloACargar) { 626 if ($scope.articuloACargar) {
627 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 627 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
628 } 628 }
629 }; 629 };
630 630
631 $scope.seleccionarPreciosYCondiciones = function () { 631 $scope.seleccionarPreciosYCondiciones = function () {
632 632
633 if (!validarNotaRemitada()) { 633 if (!validarNotaRemitada()) return;
634 return;
635 }
636 634
637 if (!$scope.notaPedido.cliente.COD) { 635 if (!$scope.notaPedido.cliente.COD) {
638 focaModalService.alert('Primero seleccione un cliente'); 636 focaModalService.alert('Primero seleccione un cliente');
639 return; 637 return;
640 } 638 } else {
641 if ($scope.notaPedido.articulosNotaPedido.length !== 0) {
642 focaModalService.confirm('Se perderan los productos ingresados')
643 .then(function (data) {
644 if (data) {
645 abrirModal();
646 }
647 });
648 } else if (validarNotaRemitada()) {
649 abrirModal(); 639 abrirModal();
650 } 640 }
641
651 function abrirModal() { 642 function abrirModal() {
652 var parametros = { idCliente: $scope.notaPedido.cliente.COD, idListaPrecio : $scope.notaPedido.cliente.MOD}; 643 var parametros = {
644 idCliente: $scope.notaPedido.cliente.COD,
645 idListaPrecio: $scope.notaPedido.cliente.MOD,
646 notaPedido: $scope.notaPedido
647 };
653 var modalInstance = $uibModal.open( 648 var modalInstance = $uibModal.open(
654 { 649 {
655 ariaLabelledBy: 'Busqueda de Precio Condición', 650 ariaLabelledBy: 'Busqueda de Precio Condición',
656 templateUrl: 'modal-precio-condicion.html', 651 templateUrl: 'modal-precio-condicion.html',
657 controller: 'focaModalPrecioCondicionController', 652 controller: 'focaModalPrecioCondicionController',
658 size: 'lg', 653 size: 'lg',
659 resolve: { 654 resolve: {
660 parametros: function () { return parametros; }, 655 parametros: function () { return parametros; },
661 } 656 }
662 } 657 }
663 ); 658 );
664 659
665 modalInstance.result 660 modalInstance.result.then(function (precioCondicion) {
666 .then(function (precioCondicion) { 661 var cabecera = '';
667 var cabecera = ''; 662 var plazosConcat = '';
668 var plazosConcat = ''; 663 if (!Array.isArray(precioCondicion)) {
669 if (!Array.isArray(precioCondicion)) { 664 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago;
670 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago; 665 $scope.notaPedido.precioCondicion = precioCondicion;
671 $scope.notaPedido.precioCondicion = precioCondicion; 666 $scope.notaPedido.cliente.MOD = precioCondicion.listaPrecio.ID;
672 $scope.notaPedido.idPrecioCondicion = precioCondicion.listaPrecio.ID; 667 $scope.idLista = parseInt(precioCondicion.listaPrecio.ID) ?
673 $scope.notaPedido.cliente.MOD = precioCondicion.listaPrecio.ID; 668 parseInt(precioCondicion.listaPrecio.ID) : -1;
674 $scope.idLista = parseInt(precioCondicion.listaPrecio.ID) ? 669 for (var i = 0; i < precioCondicion.plazoPago.length; i++) {
675 parseInt(precioCondicion.listaPrecio.ID) : -1; 670 plazosConcat += precioCondicion.plazoPago[i].dias + ', ';
676 for (var i = 0; i < precioCondicion.plazoPago.length; i++) {
677 plazosConcat += precioCondicion.plazoPago[i].dias + ', ';
678 }
679 plazosConcat = plazosConcat.substring(0, plazosConcat.length - 2);
680 cabecera = $filter('rellenarDigitos')($scope.idLista, 4) +
681 ' - ' + precioCondicion.listaPrecio.DES + ' ' + plazosConcat.trim();
682 } else { //Cuando se ingresan los plazos manualmente
683 $scope.notaPedido.idPrecioCondicion = 0;
684 //-1, el modal productos busca todos los productos
685 $scope.idLista = -1;
686 $scope.notaPedido.notaPedidoPlazo = precioCondicion;
687 for (var j = 0; j < precioCondicion.length; j++) {
688 plazosConcat += precioCondicion[j].dias + ' ';
689 }
690 cabecera = 'Ingreso manual ' + plazosConcat.trim();
691 } 671 }
692 $scope.notaPedido.articulosNotaPedido = []; 672 plazosConcat = plazosConcat.substring(0, plazosConcat.length - 2);
693 $scope.$broadcast('addCabecera', { 673 cabecera = $filter('rellenarDigitos')($scope.idLista, 4) +
694 label: 'Precios y condiciones:', 674 ' - ' + precioCondicion.listaPrecio.DES +
695 valor: cabecera 675 ' ' + plazosConcat.trim();
696 }); 676 } else { //Cuando se ingresan los plazos manualmente
677 //-1, el modal productos busca todos los productos
678 $scope.idLista = -1;
679 $scope.notaPedido.notaPedidoPlazo = precioCondicion;
680 for (var j = 0; j < precioCondicion.length; j++) {
681 plazosConcat += precioCondicion[j].dias + ' ';
682 }
683 cabecera = 'Ingreso manual ' + plazosConcat.trim();
684 }
685 $scope.cabeceras.push({
686 label: 'Precios y Condiciones:',
687 valor: $scope.idLista + ' - ' + precioCondicion.listaPrecio.DES + ' ' +
688 notaPedidoBusinessService.plazoToString(precioCondicion.plazoPago)
689 });
697 690
698 $filter('filter')($scope.botonera, 691 $filter('filter')($scope.botonera,
699 { label: 'Precios y Condiciones' })[0].checked = true; 692 { label: 'Precios y Condiciones' })[0].checked = true;
700 }) 693
694 addArrayCabecera($scope.cabeceras);
695
696 })
701 .catch(function (e) { 697 .catch(function (e) {
702 console.log(e); 698 console.log(e);
703 }) 699 });
704 700
705 } 701 }
706 }; 702 };
707 703
708 $scope.seleccionarMoneda = function () { 704 $scope.seleccionarMoneda = function () {
709 if (validarNotaRemitada()) { 705 if (validarNotaRemitada()) {
710 var parametrosModal = { 706 var parametrosModal = {
711 titulo: 'Búsqueda de monedas', 707 titulo: 'Búsqueda de monedas',
712 query: '/moneda', 708 query: '/moneda',
713 columnas: [ 709 columnas: [
714 { 710 {
715 propiedad: 'DETALLE', 711 propiedad: 'DETALLE',
716 nombre: 'Nombre' 712 nombre: 'Nombre'
717 }, 713 },
718 { 714 {
719 propiedad: 'SIMBOLO', 715 propiedad: 'SIMBOLO',
720 nombre: 'Símbolo' 716 nombre: 'Símbolo'
721 } 717 }
722 ], 718 ],
723 size: 'md' 719 size: 'md'
724 }; 720 };
725 focaModalService.modal(parametrosModal).then( 721 focaModalService.modal(parametrosModal).then(
726 function (moneda) { 722 function (moneda) {
727 723
728 if (moneda.ID !== 1) { 724 if (moneda.ID !== 1) {
729 $scope.abrirModalCotizacion(moneda); 725 $scope.abrirModalCotizacion(moneda);
730 return; 726 return;
731 } 727 }
732 728
733 crearNotaPedidoService.getCotizacionByIdMoneda(1) 729 crearNotaPedidoService.getCotizacionByIdMoneda(1)
734 .then(function (res) { 730 .then(function (res) {
735 731
736 cotizacionPArgentino = res.data[0].cotizaciones[0]; 732 cotizacionPArgentino = res.data[0].cotizaciones[0];
737 cotizacionPArgentino.moneda = moneda; 733 cotizacionPArgentino.moneda = moneda;
738 734
739 actualizarCabeceraMoneda(cotizacionPArgentino); 735 actualizarCabeceraMoneda(cotizacionPArgentino);
740 $scope.notaPedido.cotizacion = cotizacionPArgentino; 736 $scope.notaPedido.cotizacion = cotizacionPArgentino;
741 }); 737 });
742 } 738 }
743 ); 739 );
744 } 740 }
745 }; 741 };
746 742
747 $scope.seleccionarObservaciones = function () { 743 $scope.seleccionarObservaciones = function () {
748 var observacion = { 744 var observacion = {
749 titulo: 'Ingrese Observaciones', 745 titulo: 'Ingrese Observaciones',
750 value: $scope.notaPedido.observaciones, 746 value: $scope.notaPedido.observaciones,
751 maxlength: 155, 747 maxlength: 155,
752 textarea: true 748 textarea: true
753 }; 749 };
754 750
755 focaModalService 751 focaModalService
756 .prompt(observacion) 752 .prompt(observacion)
757 .then(function (observaciones) { 753 .then(function (observaciones) {
758 $scope.notaPedido.observaciones = observaciones; 754 $scope.notaPedido.observaciones = observaciones;
759 }); 755 });
760 }; 756 };
761 757
762 $scope.abrirModalCotizacion = function (moneda) { 758 $scope.abrirModalCotizacion = function (moneda) {
763 var modalInstance = $uibModal.open( 759 var modalInstance = $uibModal.open(
764 { 760 {
765 ariaLabelledBy: 'Busqueda de Cotización', 761 ariaLabelledBy: 'Busqueda de Cotización',
766 templateUrl: 'modal-cotizacion.html', 762 templateUrl: 'modal-cotizacion.html',
767 controller: 'focaModalCotizacionController', 763 controller: 'focaModalCotizacionController',
768 size: 'lg', 764 size: 'lg',
769 resolve: { 765 resolve: {
770 idMoneda: function () { 766 idMoneda: function () {
771 return moneda.ID; 767 return moneda.ID;
772 } 768 }
773 } 769 }
774 } 770 }
775 ); 771 );
776 modalInstance.result.then( 772 modalInstance.result.then(
777 function (cotizacion) { 773 function (cotizacion) {
778 774
779 cotizacion.moneda = moneda; 775 cotizacion.moneda = moneda;
780 actualizarCabeceraMoneda(cotizacion); 776 actualizarCabeceraMoneda(cotizacion);
781 777
782 $scope.notaPedido.cotizacion = cotizacion; 778 $scope.notaPedido.cotizacion = cotizacion;
783 $filter('filter')($scope.botonera, { label: 'Moneda' })[0].checked = true; 779 $filter('filter')($scope.botonera, { label: 'Moneda' })[0].checked = true;
784 }, function () { 780 }, function () {
785 781
786 } 782 }
787 ); 783 );
788 }; 784 };
789 785
790 function actualizarCabeceraMoneda(cotizacion) { 786 function actualizarCabeceraMoneda(cotizacion) {
791 787
792 $scope.notaPedido.articulosNotaPedido.forEach(function (art) { 788 $scope.notaPedido.articulosNotaPedido.forEach(function (art) {
793 art.precio = (art.precio * $scope.notaPedido.cotizacion.VENDEDOR).toFixed(4); 789 art.precio = (art.precio * $scope.notaPedido.cotizacion.VENDEDOR).toFixed(4);
794 art.precio = (art.precio / cotizacion.VENDEDOR).toFixed(4); 790 art.precio = (art.precio / cotizacion.VENDEDOR).toFixed(4);
795 }); 791 });
796 792
797 if (cotizacion.moneda.DETALLE === 'PESOS ARGENTINOS') { 793 if (cotizacion.moneda.DETALLE === 'PESOS ARGENTINOS') {
798 $scope.$broadcast('removeCabecera', 'Moneda:'); 794 $scope.$broadcast('removeCabecera', 'Moneda:');
799 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 795 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
800 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 796 $scope.$broadcast('removeCabecera', 'Cotizacion:');
801 } else { 797 } else {
802 $scope.$broadcast('addCabecera', { 798 $scope.$broadcast('addCabecera', {
803 label: 'Moneda:', 799 label: 'Moneda:',
804 valor: cotizacion.moneda.DETALLE 800 valor: cotizacion.moneda.DETALLE
805 }); 801 });
806 $scope.$broadcast('addCabecera', { 802 $scope.$broadcast('addCabecera', {
807 label: 'Fecha cotizacion:', 803 label: 'Fecha cotizacion:',
808 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy') 804 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy')
809 }); 805 });
810 $scope.$broadcast('addCabecera', { 806 $scope.$broadcast('addCabecera', {
811 label: 'Cotizacion:', 807 label: 'Cotizacion:',
812 valor: $filter('number')(cotizacion.VENDEDOR, '2') 808 valor: $filter('number')(cotizacion.VENDEDOR, '2')
813 }); 809 });
814 } 810 }
815 } 811 }
816 812
817 $scope.agregarATabla = function (key) { 813 $scope.agregarATabla = function (key) {
818 if (key === 13) { 814 if (key === 13) {
819 if (!$scope.articuloACargar.cantidad || !$scope.articuloACargar.precio) { 815 if (!$scope.articuloACargar.cantidad || !$scope.articuloACargar.precio) {
820 focaModalService.alert('El valor debe ser al menos 1'); 816 focaModalService.alert('El valor debe ser al menos 1');
821 return; 817 return;
822 } 818 }
823 delete $scope.articuloACargar.sectorCodigo; 819 delete $scope.articuloACargar.sectorCodigo;
824 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar); 820 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar);
825 $scope.cargando = true; 821 $scope.cargando = true;
826 } 822 }
827 }; 823 };
828 824
829 $scope.quitarArticulo = function (key) { 825 $scope.quitarArticulo = function (key) {
830 if (validarNotaRemitada()) { 826 if (validarNotaRemitada()) {
831 $scope.notaPedido.articulosNotaPedido.splice(key, 1); 827 $scope.notaPedido.articulosNotaPedido.splice(key, 1);
832 } 828 }
833 }; 829 };
834 830
835 $scope.editarArticulo = function (key, articulo, tmpCantidad, tmpPrecio) { 831 $scope.editarArticulo = function (key, articulo, tmpCantidad, tmpPrecio) {
836 if (key === 13) { 832 if (key === 13) {
837 if (!articulo.cantidad || !articulo.precio || !tmpCantidad || !tmpPrecio) { 833 if (!articulo.cantidad || !articulo.precio || !tmpCantidad || !tmpPrecio) {
838 focaModalService.alert('Los valores deben ser al menos 1'); 834 focaModalService.alert('Los valores deben ser al menos 1');
839 return; 835 return;
840 } else if (articulo.cantidad < 0 || articulo.precio < 0) { 836 } else if (articulo.cantidad < 0 || articulo.precio < 0) {
841 focaModalService.alert('Los valores no pueden ser negativos'); 837 focaModalService.alert('Los valores no pueden ser negativos');
842 return; 838 return;
843 } 839 }
844 articulo.cantidad = tmpCantidad; 840 articulo.cantidad = tmpCantidad;
845 articulo.precio = tmpPrecio; 841 articulo.precio = tmpPrecio;
846 $scope.getTotal(); 842 $scope.getTotal();
847 articulo.editCantidad = articulo.editPrecio = false; 843 articulo.editCantidad = articulo.editPrecio = false;
848 } 844 }
849 }; 845 };
850 846
851 $scope.cancelarEditar = function (articulo) { 847 $scope.cancelarEditar = function (articulo) {
852 $scope.tmpCantidad = articulo.cantidad; 848 $scope.tmpCantidad = articulo.cantidad;
853 $scope.tmpPrecio = articulo.precio; 849 $scope.tmpPrecio = articulo.precio;
854 articulo.editCantidad = articulo.editPrecio = false; 850 articulo.editCantidad = articulo.editPrecio = false;
855 }; 851 };
856 852
857 $scope.cambioEdit = function (articulo, propiedad) { 853 $scope.cambioEdit = function (articulo, propiedad) {
858 if (propiedad === 'cantidad') { 854 if (propiedad === 'cantidad') {
859 articulo.editCantidad = true; 855 articulo.editCantidad = true;
860 } else if (propiedad === 'precio') { 856 } else if (propiedad === 'precio') {
861 articulo.editPrecio = true; 857 articulo.editPrecio = true;
862 } 858 }
863 }; 859 };
864 860
865 $scope.resetFilter = function () { 861 $scope.resetFilter = function () {
866 $scope.articuloACargar = {}; 862 $scope.articuloACargar = {};
867 $scope.cargando = true; 863 $scope.cargando = true;
868 }; 864 };
869 //Recibe aviso si el teclado está en uso 865 //Recibe aviso si el teclado está en uso
870 $rootScope.$on('usarTeclado', function (event, data) { 866 $rootScope.$on('usarTeclado', function (event, data) {
871 if (data) { 867 if (data) {
872 $scope.mostrarTeclado = true; 868 $scope.mostrarTeclado = true;
873 return; 869 return;
874 } 870 }
875 $scope.mostrarTeclado = false; 871 $scope.mostrarTeclado = false;
876 }); 872 });
877 873
878 $scope.selectFocus = function ($event) { 874 $scope.selectFocus = function ($event) {
879 // Si el teclado esta en uso no selecciona el valor 875 // Si el teclado esta en uso no selecciona el valor
880 if ($scope.mostrarTeclado) { 876 if ($scope.mostrarTeclado) {
881 return; 877 return;
882 } 878 }
883 $event.target.select(); 879 $event.target.select();
884 }; 880 };
885 881
886 $scope.salir = function () { 882 $scope.salir = function () {
887 $location.path('/'); 883 $location.path('/');
888 }; 884 };
889 885
890 $scope.parsearATexto = function (articulo) { 886 $scope.parsearATexto = function (articulo) {
891 articulo.cantidad = parseFloat(articulo.cantidad); 887 articulo.cantidad = parseFloat(articulo.cantidad);
892 articulo.precio = parseFloat(articulo.precio); 888 articulo.precio = parseFloat(articulo.precio);
893 }; 889 };
894 890
895 // TODO: quitar watch usar función de articulos pedido cuando se haga 891 // TODO: quitar watch usar función de articulos pedido cuando se haga
896 $scope.$watch('notaPedido.articulosNotaPedido', function () { 892 $scope.$watch('notaPedido.articulosNotaPedido', function () {
897 if ($scope.notaPedido.articulosNotaPedido.length) { 893 if ($scope.notaPedido.articulosNotaPedido.length) {
898 $filter('filter')($scope.botonera, 894 $filter('filter')($scope.botonera,
899 { label: 'Productos' })[0].checked = true; 895 { label: 'Productos' })[0].checked = true;
900 } else { 896 } else {
901 $filter('filter')($scope.botonera, 897 $filter('filter')($scope.botonera,
902 { label: 'Productos' })[0].checked = false; 898 { label: 'Productos' })[0].checked = false;
903 } 899 }
904 }, true); 900 }, true);
905 901
906 function setearNotaPedido(notaPedido) { 902 function setearNotaPedido(notaPedido) {
907 //añado cabeceras 903 //añado cabeceras
908 $scope.notaPedido = notaPedido; 904 $scope.notaPedido = notaPedido;
909 if (!$scope.notaPedido.domicilio) { 905 if (!$scope.notaPedido.domicilio) {
910 $scope.notaPedido.domicilio = { 906 $scope.notaPedido.domicilio = {
911 id: $scope.notaPedido.idDomicilio 907 id: $scope.notaPedido.idDomicilio
912 }; 908 };
913 } 909 }
914 $scope.$broadcast('removeCabecera', 'Bomba:'); 910 $scope.$broadcast('removeCabecera', 'Bomba:');
915 $scope.$broadcast('removeCabecera', 'Kilometros:'); 911 $scope.$broadcast('removeCabecera', 'Kilometros:');
916 $scope.$broadcast('cleanCabecera'); 912 $scope.$broadcast('cleanCabecera');
917 913
918 var cabeceras = []; 914 $scope.cabeceras = [];
919 915
920 if (notaPedido.cotizacion.moneda.CODIGO_AFIP !== 'PES') { 916 if (notaPedido.cotizacion.moneda.CODIGO_AFIP !== 'PES') {
921 cabeceras.push({ 917 $scope.cabeceras.push({
922 label: 'Moneda:', 918 label: 'Moneda:',
923 valor: notaPedido.cotizacion.moneda.DETALLE 919 valor: notaPedido.cotizacion.moneda.DETALLE
924 }); 920 });
925 cabeceras.push({ 921 $scope.cabeceras.push({
926 label: 'Fecha cotizacion:', 922 label: 'Fecha cotizacion:',
927 valor: $filter('date')(notaPedido.cotizacion.FECHA, 923 valor: $filter('date')(notaPedido.cotizacion.FECHA,
928 'dd/MM/yyyy') 924 'dd/MM/yyyy')
929 }); 925 });
930 cabeceras.push({ 926 $scope.cabeceras.push({
931 label: 'Cotizacion:', 927 label: 'Cotizacion:',
932 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR, 928 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR,
933 '2') 929 '2')
934 }); 930 });
935 } 931 }
936 932
937 if (notaPedido.cotizacion.moneda) { 933 if (notaPedido.cotizacion.moneda) {
938 $filter('filter')($scope.botonera, { label: 'Moneda' })[0].checked = true; 934 $filter('filter')($scope.botonera, { label: 'Moneda' })[0].checked = true;
939 } 935 }
940 936
941 if (notaPedido.vendedor.NUM) { 937 if (notaPedido.vendedor.NUM) {
942 cabeceras.push({ 938 $scope.cabeceras.push({
943 label: 'Vendedor:', 939 label: 'Vendedor:',
944 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) + 940 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) +
945 ' - ' + notaPedido.vendedor.NOM 941 ' - ' + notaPedido.vendedor.NOM
946 }); 942 });
947 } 943 }
948 944
949 if (notaPedido.cliente.COD) { 945 if (notaPedido.cliente.COD) {
950 cabeceras.push({ 946 $scope.cabeceras.push({
951 label: 'Cliente:', 947 label: 'Cliente:',
952 valor: notaPedido.cliente.NOM 948 valor: notaPedido.cliente.NOM
953 }); 949 });
954 cabeceras.push({ 950 $scope.cabeceras.push({
955 label: 'Domicilio:', 951 label: 'Domicilio:',
956 valor: notaPedido.domicilioStamp 952 valor: notaPedido.domicilioStamp
957 }); 953 });
958 954
959 $filter('filter')($scope.botonera, { label: 'Cliente' })[0].checked = true; 955 $filter('filter')($scope.botonera, { label: 'Cliente' })[0].checked = true;
960 } 956 }
961 957
962 if (notaPedido.proveedor.COD) { 958 if (notaPedido.proveedor.COD) {
963 cabeceras.push({ 959 $scope.cabeceras.push({
964 label: 'Proveedor:', 960 label: 'Proveedor:',
965 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) + 961 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) +
966 ' - ' + notaPedido.proveedor.NOM 962 ' - ' + notaPedido.proveedor.NOM
967 }); 963 });
968 964
969 $filter('filter')($scope.botonera, { label: 'Proveedor' })[0].checked = true; 965 $filter('filter')($scope.botonera, { label: 'Proveedor' })[0].checked = true;
970 } 966 }
971 967
972 if (notaPedido.notaPedidoPlazo.length) { 968 if (notaPedido.notaPedidoPlazo.length) {
973 cabeceras.push({ 969 valorPrecioCondicion();
974 label: 'Precios y condiciones:',
975 valor: valorPrecioCondicion() + ' ' +
976 notaPedidoBusinessService
977 .plazoToString(notaPedido.notaPedidoPlazo)
978 });
979
980 $filter('filter')($scope.botonera, 970 $filter('filter')($scope.botonera,
981 { label: 'Precios y condiciones' })[0].checked = true; 971 { label: 'Precios y condiciones' })[0].checked = true;
982 } 972 }
983 973
984 if (notaPedido.flete !== undefined) { 974 if (notaPedido.flete !== undefined) {
985 cabeceras.push({ 975 $scope.cabeceras.push({
986 label: 'Flete:', 976 label: 'Flete:',
987 valor: notaPedido.fob === 1 ? 'FOB' : ( 977 valor: notaPedido.fob === 1 ? 'FOB' : (
988 notaPedido.flete === 1 ? 'Si' : 'No') 978 notaPedido.flete === 1 ? 'Si' : 'No')
989 }); 979 });
990 } 980 }
991 981
992 function valorPrecioCondicion() { 982 function valorPrecioCondicion() {
993 if (notaPedido.idPrecioCondicion > 0) { 983 if (notaPedido.idListaPrecio > 0) {
994 return notaPedido.precioCondicion.nombre; 984 crearNotaPedidoService
995 } else { 985 .getPrecioCondicionById(parseInt(notaPedido.idListaPrecio))
996 return 'Ingreso Manual'; 986 .then(function (res) {
987 $scope.cabeceras.push({
988 label: 'Precios y Condiciones:',
989 valor: parseInt(res.data[0].ID) + ' - ' +
990 res.data[0].DES + ' ' +
991 notaPedidoBusinessService
992 .plazoToString(notaPedido.notaPedidoPlazo)
993 });
994 addArrayCabecera($scope.cabeceras);
995 });
997 } 996 }
997 $scope.idLista = parseInt(notaPedido.idListaPrecio);
998 } 998 }
999 999
1000 if (notaPedido.flete === 1) { 1000 if (notaPedido.flete === 1) {
1001 var cabeceraBomba = { 1001 var cabeceraBomba = {
1002 label: 'Bomba:', 1002 label: 'Bomba:',
1003 valor: notaPedido.bomba === 1 ? 'Si' : 'No' 1003 valor: notaPedido.bomba === 1 ? 'Si' : 'No'
1004 }; 1004 };
1005 if (notaPedido.kilometros) { 1005 if (notaPedido.kilometros) {
1006 var cabeceraKilometros = { 1006 var cabeceraKilometros = {
1007 label: 'Kilometros:', 1007 label: 'Kilometros:',
1008 valor: notaPedido.kilometros 1008 valor: notaPedido.kilometros
1009 }; 1009 };
1010 cabeceras.push(cabeceraKilometros); 1010 $scope.cabeceras.push(cabeceraKilometros);
1011 } 1011 }
1012 cabeceras.push(cabeceraBomba); 1012 $scope.cabeceras.push(cabeceraBomba);
1013 } 1013 }
1014 1014
1015 if (notaPedido.idPrecioCondicion > 0) { 1015 if (notaPedido.idPrecioCondicion > 0) {
1016 $scope.idLista = notaPedido.precioCondicion.idListaPrecio; 1016 $scope.idLista = notaPedido.precioCondicion.idListaPrecio;
1017 } else if (notaPedido.idPrecioCondicion) { 1017 } else if (notaPedido.idPrecioCondicion) {
1018 $scope.idLista = -1; 1018 $scope.idLista = -1;
1019 } 1019 }
1020 1020
1021 $scope.puntoVenta = $filter('rellenarDigitos')( 1021 $scope.puntoVenta = $filter('rellenarDigitos')(
1022 notaPedido.sucursal, 4 1022 notaPedido.sucursal, 4
1023 ); 1023 );
1024 1024
1025 $scope.comprobante = $filter('rellenarDigitos')( 1025 $scope.comprobante = $filter('rellenarDigitos')(
1026 notaPedido.numeroNotaPedido, 8 1026 notaPedido.numeroNotaPedido, 8
1027 ); 1027 );
1028 1028
1029 if (notaPedido.notaPedidoPuntoDescarga.length) { 1029 if (notaPedido.notaPedidoPuntoDescarga.length) {
1030 var puntos = []; 1030 var puntos = [];
1031 notaPedido.notaPedidoPuntoDescarga.forEach(function (notaPedidoPuntoDescarga) { 1031 notaPedido.notaPedidoPuntoDescarga.forEach(function (notaPedidoPuntoDescarga) {
1032 puntos.push(notaPedidoPuntoDescarga.puntoDescarga); 1032 puntos.push(notaPedidoPuntoDescarga.puntoDescarga);
1033 }); 1033 });
1034 cabeceras.push({ 1034 $scope.cabeceras.push({
1035 label: 'Puntos de descarga: ', 1035 label: 'Puntos de descarga: ',
1036 valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntos)) 1036 valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntos))
1037 }); 1037 });
1038 } 1038 }
1039 1039
1040 addArrayCabecera(cabeceras); 1040 addArrayCabecera($scope.cabeceras);
1041 } 1041 }
1042 1042
1043 function getCabeceraPuntoDescarga(puntoDescarga) { 1043 function getCabeceraPuntoDescarga(puntoDescarga) {
1044 var puntosStamp = ''; 1044 var puntosStamp = '';
1045 puntoDescarga.forEach(function (punto, idx, arr) { 1045 puntoDescarga.forEach(function (punto, idx, arr) {
1046 puntosStamp += punto.descripcion; 1046 puntosStamp += punto.descripcion;
1047 if ((idx + 1) !== arr.length) puntosStamp += ', '; 1047 if ((idx + 1) !== arr.length) puntosStamp += ', ';
1048 }); 1048 });
1049 return puntosStamp; 1049 return puntosStamp;
1050 } 1050 }
1051 1051
1052 function addArrayCabecera(array) { 1052 function addArrayCabecera(array) {
1053 for (var i = 0; i < array.length; i++) { 1053 for (var i = 0; i < array.length; i++) {
1054 $scope.$broadcast('addCabecera', { 1054 $scope.$broadcast('addCabecera', {
1055 label: array[i].label, 1055 label: array[i].label,
1056 valor: array[i].valor 1056 valor: array[i].valor
1057 }); 1057 });
1058 } 1058 }
1059 } 1059 }
1060 1060
1061 function validarNotaRemitada() { 1061 function validarNotaRemitada() {
1062 if (!$scope.notaPedido.idRemito) { 1062 if (!$scope.notaPedido.idRemito) {
1063 return true; 1063 return true;
1064 } else { 1064 } else {
1065 focaModalService.alert('No se puede editar una nota de pedido remitada'); 1065 focaModalService.alert('No se puede editar una nota de pedido remitada');
1066 return false; 1066 return false;
1067 } 1067 }
1068 } 1068 }
1069 1069
1070 function salir() { 1070 function salir() {
1071 var confirmacion = false; 1071 var confirmacion = false;
1072 1072
1073 if (!angular.equals($scope.notaPedido, $scope.inicial)) { 1073 if (!angular.equals($scope.notaPedido, $scope.inicial)) {
1074 confirmacion = true; 1074 confirmacion = true;
1075 } 1075 }
1076 1076
1077 if (confirmacion) { 1077 if (confirmacion) {
1078 focaModalService.confirm( 1078 focaModalService.confirm(
1 angular.module('focaCrearNotaPedido') 1 angular.module('focaCrearNotaPedido')
2 .factory('crearNotaPedidoService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) { 2 .factory('crearNotaPedidoService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) {
3 var route = API_ENDPOINT.URL; 3 var route = API_ENDPOINT.URL;
4 return { 4 return {
5 crearNotaPedido: function(notaPedido) { 5 crearNotaPedido: function(notaPedido) {
6 return $http.post(route + '/nota-pedido', {notaPedido: notaPedido}); 6 return $http.post(route + '/nota-pedido', {notaPedido: notaPedido});
7 }, 7 },
8 obtenerNotaPedido: function() { 8 obtenerNotaPedido: function() {
9 return $http.get(route +'/nota-pedido'); 9 return $http.get(route +'/nota-pedido');
10 }, 10 },
11 setNotaPedido: function(notaPedido) { 11 setNotaPedido: function(notaPedido) {
12 this.notaPedido = notaPedido; 12 this.notaPedido = notaPedido;
13 }, 13 },
14 clearNotaPedido: function() { 14 clearNotaPedido: function() {
15 this.notaPedido = undefined; 15 this.notaPedido = undefined;
16 }, 16 },
17 getNotaPedido: function() { 17 getNotaPedido: function() {
18 return this.notaPedido; 18 return this.notaPedido;
19 }, 19 },
20 getArticulosByIdNotaPedido: function(id) { 20 getArticulosByIdNotaPedido: function(id) {
21 return $http.get(route+'/articulos/nota-pedido/'+id); 21 return $http.get(route+'/articulos/nota-pedido/'+id);
22 }, 22 },
23 crearArticulosParaNotaPedido: function(articuloNotaPedido) { 23 crearArticulosParaNotaPedido: function(articuloNotaPedido) {
24 return $http.post(route + '/articulos/nota-pedido', 24 return $http.post(route + '/articulos/nota-pedido',
25 {articuloNotaPedido: articuloNotaPedido}); 25 {articuloNotaPedido: articuloNotaPedido});
26 }, 26 },
27 getDomiciliosByIdNotaPedido: function(id) { 27 getDomiciliosByIdNotaPedido: function(id) {
28 return $http.get(route +'/nota-pedido/'+id+'/domicilios'); 28 return $http.get(route +'/nota-pedido/'+id+'/domicilios');
29 }, 29 },
30 getDomiciliosByIdCliente: function(id) { 30 getDomiciliosByIdCliente: function(id) {
31 var idTipoEntrega = 2;//Solo traigo los domicilios que tienen tipo 2 (tipo entrega) 31 var idTipoEntrega = 2;//Solo traigo los domicilios que tienen tipo 2 (tipo entrega)
32 return $http.get(route + '/domicilio/tipo/' + idTipoEntrega + '/cliente/' + id ); 32 return $http.get(route + '/domicilio/tipo/' + idTipoEntrega + '/cliente/' + id );
33 }, 33 },
34 getPrecioCondicion: function() { 34 getPrecioCondicion: function() {
35 return $http.get(route + '/precio-condicion'); 35 return $http.get(route + '/precio-condicion');
36 }, 36 },
37 getPrecioCondicionById: function(id) { 37 getPrecioCondicionById: function(id) {
38 return $http.get(route + '/precio-condicion/' + id); 38 return $http.get(route + '/lista-precio/' + id);
39 }, 39 },
40 getPlazoPagoByPrecioCondicion: function(id) { 40 getPlazoPagoByPrecioCondicion: function(id) {
41 return $http.get(route + '/plazo-pago/precio-condicion/'+ id); 41 return $http.get(route + '/plazo-pago/precio-condicion/'+ id);
42 }, 42 },
43 crearFlete: function(flete) { 43 crearFlete: function(flete) {
44 return $http.post(route + '/flete', {flete : flete}); 44 return $http.post(route + '/flete', {flete : flete});
45 }, 45 },
46 crearPlazosParaNotaPedido: function(plazos) { 46 crearPlazosParaNotaPedido: function(plazos) {
47 return $http.post(route + '/plazo-pago/nota-pedido', {plazos: plazos}); 47 return $http.post(route + '/plazo-pago/nota-pedido', {plazos: plazos});
48 }, 48 },
49 getCotizacionByIdMoneda: function(id) { 49 getCotizacionByIdMoneda: function(id) {
50 return $http.get(route + '/moneda/' + id); 50 return $http.get(route + '/moneda/' + id);
51 }, 51 },
52 crearEstadoParaNotaPedido: function(estado) { 52 crearEstadoParaNotaPedido: function(estado) {
53 return $http.post(route + '/estado', {estado: estado}); 53 return $http.post(route + '/estado', {estado: estado});
54 }, 54 },
55 getNumeroNotaPedido: function() { 55 getNumeroNotaPedido: function() {
56 return $http.get(route + '/nota-pedido/numero-siguiente'); 56 return $http.get(route + '/nota-pedido/numero-siguiente');
57 }, 57 },
58 getBotonera: function() { 58 getBotonera: function() {
59 var result = [ 59 var result = [
60 { 60 {
61 label: 'Cliente', 61 label: 'Cliente',
62 image: 'cliente.png' 62 image: 'cliente.png'
63 }, 63 },
64 { 64 {
65 label: 'Proveedor', 65 label: 'Proveedor',
66 image: 'proveedor.png' 66 image: 'proveedor.png'
67 }, 67 },
68 { 68 {
69 label: 'Moneda', 69 label: 'Moneda',
70 image: 'moneda.png' 70 image: 'moneda.png'
71 }, 71 },
72 { 72 {
73 label: 'Precios y condiciones', 73 label: 'Precios y condiciones',
74 image: 'precios-condiciones.png' 74 image: 'precios-condiciones.png'
75 }, 75 },
76 { 76 {
77 label: 'Productos', 77 label: 'Productos',
78 image: 'productos.png' 78 image: 'productos.png'
79 }, 79 },
80 { 80 {
81 label: 'Domicilio de Entrega', 81 label: 'Domicilio de Entrega',
82 image: 'domicilioDeEntrega.png' 82 image: 'domicilioDeEntrega.png'
83 }, 83 },
84 { 84 {
85 label: 'Observaciones', 85 label: 'Observaciones',
86 image: 'botonObservaciones.png' 86 image: 'botonObservaciones.png'
87 } 87 }
88 ]; 88 ];
89 return result; 89 return result;
90 }, 90 },
91 crearPuntosDescarga: function(puntosDescarga) { 91 crearPuntosDescarga: function(puntosDescarga) {
92 return $http.post(route + '/puntos-descarga/nota-pedido', 92 return $http.post(route + '/puntos-descarga/nota-pedido',
93 {puntosDescarga: puntosDescarga}); 93 {puntosDescarga: puntosDescarga});
94 }, 94 },
95 getPuntosDescargaByClienDom: function(idDomicilio, idCliente) { 95 getPuntosDescargaByClienDom: function(idDomicilio, idCliente) {
96 return $http.get(API_ENDPOINT.URL + '/punto-descarga/' + 96 return $http.get(API_ENDPOINT.URL + '/punto-descarga/' +
97 idDomicilio + '/' + idCliente); 97 idDomicilio + '/' + idCliente);
98 }, 98 },
99 getVendedorById: function(id) { 99 getVendedorById: function(id) {
100 return $http.get(API_ENDPOINT.URL + '/vendedor-cobrador/' + id); 100 return $http.get(API_ENDPOINT.URL + '/vendedor-cobrador/' + id);
101 }, 101 },
102 getProveedorById: function(id) { 102 getProveedorById: function(id) {
103 return $http.get(API_ENDPOINT.URL + '/proveedor/' + id); 103 return $http.get(API_ENDPOINT.URL + '/proveedor/' + id);
104 }, 104 },
105 getParametros: function() { 105 getParametros: function() {
106 return $http.get(API_ENDPOINT.URL + '/parametros/' + 'notaPedido'); 106 return $http.get(API_ENDPOINT.URL + '/parametros/' + 'notaPedido');
107 } 107 }
108 }; 108 };
109 }]); 109 }]);
110 110