Commit 315b873b919a964ddc22d0055f3eca5708c74ec4

Authored by Nicolás Guarnieri
Exists in master

Merge branch 'master' into 'master'

Master

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