Commit cc734eb3e750dc6260a7a70f595dd44f99e73208

Authored by Marcelo Puebla
Exists in develop

Merge branch 'develop' into 'develop'

Develop

See merge request !150
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 '$localStorage', 5 '$localStorage',
6 function ( 6 function (
7 $scope, $uibModal, $location, $filter, crearRemitoService, $timeout, focaModalService, 7 $scope, $uibModal, $location, $filter, crearRemitoService, $timeout, focaModalService,
8 remitoBusinessService, $rootScope, focaBotoneraLateralService, $localStorage) { 8 remitoBusinessService, $rootScope, focaBotoneraLateralService, $localStorage) {
9 config(); 9 config();
10 10
11 var cotizacionPArgentino = {}; 11 var cotizacionPArgentino = {};
12 12
13 function config() { 13 function config() {
14 $scope.tmpCantidad = Number; 14 $scope.tmpCantidad = Number;
15 $scope.tmpPrecio = Number; 15 $scope.tmpPrecio = Number;
16 $scope.botonera = crearRemitoService.getBotonera(); 16 $scope.botonera = crearRemitoService.getBotonera();
17 $scope.isNumber = angular.isNumber; 17 $scope.isNumber = angular.isNumber;
18 $scope.datepickerAbierto = false; 18 $scope.datepickerAbierto = false;
19 $scope.show = false; 19 $scope.show = false;
20 $scope.cargando = true; 20 $scope.cargando = true;
21 $scope.now = new Date(); 21 $scope.now = new Date();
22 $scope.puntoVenta = rellenar(0, 4); 22 $scope.puntoVenta = rellenar(0, 4);
23 $scope.comprobante = rellenar(0, 8); 23 $scope.comprobante = rellenar(0, 8);
24 $scope.dateOptions = { 24 $scope.dateOptions = {
25 maxDate: new Date(), 25 maxDate: new Date(),
26 minDate: new Date(2010, 0, 1) 26 minDate: new Date(2010, 0, 1)
27 }; 27 };
28 $scope.cabeceras = []; 28 $scope.cabeceras = [];
29 crearRemitoService.getParametros().then(function (res) { 29 crearRemitoService.getParametros().then(function (res) {
30 var parametros = JSON.parse(res.data[0].jsonText); 30 var parametros = JSON.parse(res.data[0].jsonText);
31 if ($localStorage.remito) { 31 if ($localStorage.remito) {
32 $timeout(function () { getLSRemito(); }); 32 $timeout(function () { getLSRemito(); });
33 } else { 33 } else {
34 for (var property in parametros) { 34 for (var property in parametros) {
35 $scope.remito[property] = parametros[property]; 35 $scope.remito[property] = parametros[property];
36 $scope.inicial[property] = parametros[property]; 36 $scope.inicial[property] = parametros[property];
37 } 37 }
38 setearRemito($scope.remito); 38 setearRemito($scope.remito);
39 } 39 }
40 }); 40 });
41 41
42 //SETEO BOTONERA LATERAL 42 //SETEO BOTONERA LATERAL
43 $timeout(function () { 43 $timeout(function () {
44 focaBotoneraLateralService.showSalir(false); 44 focaBotoneraLateralService.showSalir(false);
45 focaBotoneraLateralService.showPausar(true); 45 focaBotoneraLateralService.showPausar(true);
46 focaBotoneraLateralService.showGuardar(true, $scope.crearRemito); 46 focaBotoneraLateralService.showGuardar(true, $scope.crearRemito);
47 focaBotoneraLateralService.addCustomButton('Salir', salir); 47 focaBotoneraLateralService.addCustomButton('Salir', salir);
48 }); 48 });
49 49
50 init(); 50 init();
51 } 51 }
52 52
53 function init() { 53 function init() {
54 $scope.$broadcast('cleanCabecera'); 54 $scope.$broadcast('cleanCabecera');
55 $scope.remito = { 55 $scope.remito = {
56 id: 0, 56 id: 0,
57 estado: 0, 57 estado: 0,
58 // vendedor: {}, 58 // vendedor: {},
59 cliente: {}, 59 cliente: {},
60 proveedor: {}, 60 proveedor: {},
61 domicilio: { dom: '' }, 61 domicilio: { dom: '' },
62 moneda: {}, 62 moneda: {},
63 cotizacion: $scope.cotizacionPorDefecto || {}, 63 cotizacion: $scope.cotizacionPorDefecto || {},
64 articulosRemito: [], 64 articulosRemito: [],
65 remitoPuntoDescarga: [] 65 remitoPuntoDescarga: []
66 }; 66 };
67 $scope.notaPedido = { 67 $scope.notaPedido = {
68 id: 0 68 id: 0
69 }; 69 };
70 70
71 $scope.remito.articulosRemito = []; 71 $scope.remito.articulosRemito = [];
72 $scope.idLista = undefined; 72 $scope.idLista = undefined;
73 73
74 crearRemitoService.getNumeroRemito().then( 74 crearRemitoService.getNumeroRemito().then(
75 function (res) { 75 function (res) {
76 $scope.puntoVenta = rellenar(res.data.sucursal, 4); 76 $scope.puntoVenta = rellenar(res.data.sucursal, 4);
77 $scope.comprobante = rellenar(res.data.numeroRemito, 8); 77 $scope.comprobante = rellenar(res.data.numeroRemito, 8);
78 }, 78 },
79 function (err) { 79 function (err) {
80 focaModalService.alert('La terminal no esta configurada correctamente'); 80 focaModalService.alert('La terminal no esta configurada correctamente');
81 console.info(err); 81 console.info(err);
82 } 82 }
83 ); 83 );
84 84
85 $scope.inicial = angular.copy($scope.remito); 85 $scope.inicial = angular.copy($scope.remito);
86 } 86 }
87 87
88 $scope.$watch('remito', function (newValue) { 88 $scope.$watch('remito', function (newValue) {
89 focaBotoneraLateralService.setPausarData({ 89 focaBotoneraLateralService.setPausarData({
90 label: 'remito', 90 label: 'remito',
91 val: newValue 91 val: newValue
92 }); 92 });
93 focaBotoneraLateralService.setRutasPausadas({ 93 focaBotoneraLateralService.setRutasPausadas({
94 label: 'rutas', 94 label: 'rutas',
95 val: 'venta-remito/crear' 95 val: 'venta-remito/crear'
96 }); 96 });
97 }, true); 97 }, true);
98 98
99 $scope.seleccionarNotaPedido = function () { 99 $scope.seleccionarNotaPedido = function () {
100 if ($scope.remitoIsDirty) { 100 if ($scope.remitoIsDirty) {
101 focaModalService.confirm('¿Desea continuar? Se perderan los cambios') 101 focaModalService.confirm('¿Desea continuar? Se perderan los cambios')
102 .then(function () { 102 .then(function () {
103 $scope.getNotaPedidoModal(); 103 $scope.getNotaPedidoModal();
104 }); 104 });
105 } else { 105 } else {
106 $scope.getNotaPedidoModal(); 106 $scope.getNotaPedidoModal();
107 } 107 }
108 }; 108 };
109 109
110 $scope.getNotaPedidoModal = function () { 110 $scope.getNotaPedidoModal = function () {
111 if (!varlidarRemitoFacturado()) return; 111 if (!varlidarRemitoFacturado()) return;
112 if (!varlidarRemitoAbierto()) return; 112 if (!varlidarRemitoAbierto()) return;
113 var modalInstance = $uibModal.open( 113 var modalInstance = $uibModal.open(
114 { 114 {
115 ariaLabelledBy: 'Busqueda de Nota de Pedido', 115 ariaLabelledBy: 'Busqueda de Nota de Pedido',
116 templateUrl: 'foca-modal-nota-pedido.html', 116 templateUrl: 'foca-modal-nota-pedido.html',
117 controller: 'focaModalNotaPedidoController', 117 controller: 'focaModalNotaPedidoController',
118 size: 'lg', 118 size: 'lg',
119 resolve: { 119 resolve: {
120 usadoPor: function () { return 'remito'; }, 120 usadoPor: function () { return 'remito'; },
121 idVendedor: function () { return null; } 121 idVendedor: function () { return null; }
122 } 122 }
123 } 123 }
124 ); 124 );
125 modalInstance.result.then( 125 modalInstance.result.then(
126 function (notaPedido) { 126 function (notaPedido) {
127 //añado cabeceras 127 //añado cabeceras
128 $scope.remitoIsDirty = true; 128 $scope.remitoIsDirty = true;
129 $scope.notaPedido = notaPedido; 129 $scope.notaPedido = notaPedido;
130 $scope.remito.cliente = notaPedido.cliente; 130 $scope.remito.cliente = notaPedido.cliente;
131 $scope.$broadcast('removeCabecera', 'Bomba:'); 131 $scope.$broadcast('removeCabecera', 'Bomba:');
132 $scope.$broadcast('removeCabecera', 'Kilometros:'); 132 $scope.$broadcast('removeCabecera', 'Kilometros:');
133 var puntosDescarga = []; 133 var puntosDescarga = [];
134 notaPedido.notaPedidoPuntoDescarga.forEach(function (notaPedido) { 134 notaPedido.notaPedidoPuntoDescarga.forEach(function (notaPedido) {
135 puntosDescarga.push(notaPedido.puntoDescarga); 135 puntosDescarga.push(notaPedido.puntoDescarga);
136 }); 136 });
137 $scope.cabeceras = [ 137 $scope.cabeceras = [
138 { 138 {
139 label: 'Cliente:', 139 label: 'Cliente:',
140 valor: $filter('rellenarDigitos')(notaPedido.cliente.COD, 3) + 140 valor: $filter('rellenarDigitos')(notaPedido.cliente.COD, 3) +
141 ' - ' + notaPedido.cliente.NOM 141 ' - ' + notaPedido.cliente.NOM
142 }, 142 },
143 { 143 {
144 label: 'Domicilio:', 144 label: 'Domicilio:',
145 valor: notaPedido.domicilioStamp 145 valor: notaPedido.domicilioStamp
146 }, 146 },
147 // { 147 // {
148 // label: 'Vendedor:', 148 // label: 'Vendedor:',
149 // valor: $filter('rellenarDigitos')( 149 // valor: $filter('rellenarDigitos')(
150 // notaPedido.vendedor.NUM, 3 150 // notaPedido.vendedor.NUM, 3
151 // ) + ' - ' + notaPedido.vendedor.NOM 151 // ) + ' - ' + notaPedido.vendedor.NOM
152 // }, 152 // },
153 153
154 { 154 {
155 label: 'Proveedor:', 155 label: 'Proveedor:',
156 valor: $filter('rellenarDigitos') 156 valor: $filter('rellenarDigitos')
157 (notaPedido.proveedor.COD, 5) + ' - ' + 157 (notaPedido.proveedor.COD, 5) + ' - ' +
158 notaPedido.proveedor.NOM 158 notaPedido.proveedor.NOM
159 }, 159 },
160 160
161 { 161 {
162 label: 'Flete:', 162 label: 'Flete:',
163 valor: notaPedido.fob === 1 ? 'FOB' : ( 163 valor: notaPedido.fob === 1 ? 'FOB' : (
164 notaPedido.flete === 1 ? 'Si' : 'No') 164 notaPedido.flete === 1 ? 'Si' : 'No')
165 }, 165 },
166 { 166 {
167 label: 'Puntos de descarga: ', 167 label: 'Puntos de descarga: ',
168 valor: $filter('rellenarDigitos')( 168 valor: $filter('rellenarDigitos')(
169 getCabeceraPuntoDescarga(puntosDescarga)) 169 getCabeceraPuntoDescarga(puntosDescarga))
170 } 170 }
171 ]; 171 ];
172 actualizarCabeceraMoneda(notaPedido.cotizacion); 172 actualizarCabeceraMoneda(notaPedido.cotizacion);
173 valorPrecioCondicion(); 173 valorPrecioCondicion();
174 // Seteo checked en cabeceras 174 // Seteo checked en cabeceras
175 $filter('filter')($scope.botonera, 175 $filter('filter')($scope.botonera,
176 { label: 'Cliente' })[0].checked = true; 176 { label: 'Cliente' })[0].checked = true;
177 $filter('filter')($scope.botonera, 177 $filter('filter')($scope.botonera,
178 { label: 'Proveedor' })[0].checked = true; 178 { label: 'Proveedor' })[0].checked = true;
179 $filter('filter')($scope.botonera, 179 $filter('filter')($scope.botonera,
180 { label: 'Moneda' })[0].checked = true; 180 { label: 'Moneda' })[0].checked = true;
181 $filter('filter')($scope.botonera, 181 $filter('filter')($scope.botonera,
182 { label: 'Nota pedido' })[0].checked = true; 182 { label: 'Nota pedido' })[0].checked = true;
183 $filter('filter')($scope.botonera, 183 $filter('filter')($scope.botonera,
184 { label: 'Precios y condiciones' })[0].checked = true; 184 { label: 'Precios y condiciones' })[0].checked = true;
185 $filter('filter')($scope.botonera, 185 $filter('filter')($scope.botonera,
186 { label: 'Domicilio de Entrega' })[0].checked = true; 186 { label: 'Domicilio de Entrega' })[0].checked = true;
187 187
188 if (notaPedido.observaciones) { 188 if (notaPedido.observaciones) {
189 $filter('filter')($scope.botonera, 189 $filter('filter')($scope.botonera,
190 { label: 'Observaciones' })[0].checked = true; 190 { label: 'Observaciones' })[0].checked = true;
191 } 191 }
192 192
193 function valorPrecioCondicion() { 193 function valorPrecioCondicion() {
194 if (parseInt(notaPedido.idListaPrecio) > 0) { 194 if (parseInt(notaPedido.idListaPrecio) > 0) {
195 crearRemitoService 195 crearRemitoService
196 .getListaPrecioById(parseInt(notaPedido.idListaPrecio)) 196 .getListaPrecioById(parseInt(notaPedido.idListaPrecio))
197 .then(function (res) { 197 .then(function (res) {
198 $scope.cabeceras.push({ 198 $scope.cabeceras.push({
199 label: 'Precios y Condiciones:', 199 label: 'Precios y Condiciones:',
200 valor: 200 valor:
201 parseInt(res.data[0].ID) + ' - ' + 201 parseInt(res.data[0].ID) + ' - ' +
202 res.data[0].DES + ' ' + 202 res.data[0].DES + ' ' +
203 remitoBusinessService 203 remitoBusinessService
204 .plazoToString(notaPedido.notaPedidoPlazo) 204 .plazoToString(notaPedido.notaPedidoPlazo)
205 }); 205 });
206 addArrayCabecera($scope.cabeceras); 206 addArrayCabecera($scope.cabeceras);
207 }); 207 });
208 } 208 }
209 } 209 }
210 210
211 if (notaPedido.flete === 1) { 211 if (notaPedido.flete === 1) {
212 var cabeceraBomba = { 212 var cabeceraBomba = {
213 label: 'Bomba:', 213 label: 'Bomba:',
214 valor: notaPedido.bomba === 1 ? 'Si' : 'No' 214 valor: notaPedido.bomba === 1 ? 'Si' : 'No'
215 }; 215 };
216 if (notaPedido.kilometros) { 216 if (notaPedido.kilometros) {
217 var cabeceraKilometros = { 217 var cabeceraKilometros = {
218 label: 'Kilometros:', 218 label: 'Kilometros:',
219 valor: notaPedido.kilometros 219 valor: notaPedido.kilometros
220 }; 220 };
221 $scope.cabeceras.push(cabeceraKilometros); 221 $scope.cabeceras.push(cabeceraKilometros);
222 } 222 }
223 $scope.cabeceras.push(cabeceraBomba); 223 $scope.cabeceras.push(cabeceraBomba);
224 } 224 }
225 225
226 $scope.remito = angular.copy(notaPedido); 226 $scope.remito = angular.copy(notaPedido);
227 $scope.remito.id = 0; 227 $scope.remito.id = 0;
228 $scope.remito.remitoPlazo = notaPedido.notaPedidoPlazo; 228 $scope.remito.remitoPlazo = notaPedido.notaPedidoPlazo;
229 $scope.remito.remitoPuntoDescarga = notaPedido.notaPedidoPuntoDescarga; 229 $scope.remito.remitoPuntoDescarga = notaPedido.notaPedidoPuntoDescarga;
230 230
231 notaPedido.articulosNotaPedido.forEach(function (articulo) { 231 notaPedido.articulosNotaPedido.forEach(function (articulo) {
232 articulo.id = 0; 232 articulo.id = 0;
233 articulo.idRemito = 0; 233 articulo.idRemito = 0;
234 articulo.precio = 234 articulo.precio =
235 (articulo.precio / notaPedido.cotizacion.VENDEDOR).toFixed(4); 235 (articulo.precio / notaPedido.cotizacion.VENDEDOR).toFixed(4);
236 }); 236 });
237 237
238 $scope.remito.articulosRemito = notaPedido.articulosNotaPedido; 238 $scope.remito.articulosRemito = notaPedido.articulosNotaPedido;
239 239
240 if (notaPedido.idPrecioCondicion > 0) { 240 if (notaPedido.idPrecioCondicion > 0) {
241 $scope.idLista = notaPedido.precioCondicion.idListaPrecio; 241 $scope.idLista = notaPedido.precioCondicion.idListaPrecio;
242 } else { 242 } else {
243 $scope.idLista = -1; 243 $scope.idLista = -1;
244 } 244 }
245 245
246 enableObservaciones(notaPedido.observaciones ? true : false); 246 enableObservaciones(notaPedido.observaciones ? true : false);
247 addArrayCabecera($scope.cabeceras); 247 addArrayCabecera($scope.cabeceras);
248 248
249 }, function () { 249 }, function () {
250 // funcion ejecutada cuando se cancela el modal 250 // funcion ejecutada cuando se cancela el modal
251 } 251 }
252 ); 252 );
253 }; 253 };
254 254
255 $scope.seleccionarRemito = function () { 255 $scope.seleccionarRemito = function () {
256 if ($scope.remitoIsDirty) { 256 if ($scope.remitoIsDirty) {
257 focaModalService.confirm('¿Desea continuar? Se perderan los cambios') 257 focaModalService.confirm('¿Desea continuar? Se perderan los cambios')
258 .then(function () { 258 .then(function () {
259 $scope.getRemitoModal(); 259 $scope.getRemitoModal();
260 }); 260 });
261 } else { 261 } else {
262 $scope.getRemitoModal(); 262 $scope.getRemitoModal();
263 } 263 }
264 }; 264 };
265 $scope.getRemitoModal = function () { 265 $scope.getRemitoModal = function () {
266 var modalInstance = $uibModal.open( 266 var modalInstance = $uibModal.open(
267 { 267 {
268 ariaLabelledBy: 'Busqueda de Remito', 268 ariaLabelledBy: 'Busqueda de Remito',
269 templateUrl: 'foca-modal-remito.html', 269 templateUrl: 'foca-modal-remito.html',
270 controller: 'focaModalRemitoController', 270 controller: 'focaModalRemitoController',
271 size: 'lg', 271 size: 'lg',
272 resolve: { usadoPor: function () { return 'remito'; } } 272 resolve: { usadoPor: function () { return 'remito'; } }
273 } 273 }
274 ); 274 );
275 modalInstance.result.then(function (remito) { 275 modalInstance.result.then(function (remito) {
276 276
277 remito.articulosRemito.forEach(function (articulo) { 277 remito.articulosRemito.forEach(function (articulo) {
278 articulo.precio = 278 articulo.precio =
279 (articulo.precio / remito.cotizacion.VENDEDOR).toFixed(4); 279 (articulo.precio / remito.cotizacion.VENDEDOR).toFixed(4);
280 }); 280 });
281 281
282 setearRemito(remito); 282 setearRemito(remito);
283 283
284 }, function () { 284 }, function () {
285 // funcion ejecutada cuando se cancela el modal 285 // funcion ejecutada cuando se cancela el modal
286 } 286 }
287 ); 287 );
288 }; 288 };
289 //validacion por domicilio y por plazo pago 289 //validacion por domicilio y por plazo pago
290 $scope.crearRemito = function () { 290 $scope.crearRemito = function () {
291 291
292 if (!remitoBusinessService.validarRemito($scope.remito, $scope.articulosFiltro())) { 292 if (!remitoBusinessService.validarRemito($scope.remito, $scope.articulosFiltro())) {
293 return; 293 return;
294 } 294 }
295 295
296 focaBotoneraLateralService.startGuardar(); 296 focaBotoneraLateralService.startGuardar();
297 $scope.saveLoading = true; 297 $scope.saveLoading = true;
298 if ($localStorage.rutas) { 298 if ($localStorage.rutas) {
299 var rutaJson = JSON.parse($localStorage.rutas); 299 var rutaJson = JSON.parse($localStorage.rutas);
300 removeItemFromArr(rutaJson, 'venta-remito/crear'); 300 removeItemFromArr(rutaJson, 'venta-remito/crear');
301 $localStorage.rutas = JSON.stringify(rutaJson); 301 $localStorage.rutas = JSON.stringify(rutaJson);
302 } 302 }
303 303
304 var save = { 304 var save = {
305 remito: { 305 remito: {
306 id: $scope.remito.id, 306 id: $scope.remito.id,
307 fechaRemito: $scope.now.toISOString().slice(0, 19).replace('T', ' '), 307 fechaRemito: $scope.now.toISOString().slice(0, 19).replace('T', ' '),
308 idCliente: $scope.remito.cliente.COD, 308 idCliente: $scope.remito.cliente.COD,
309 nombreCliente: $scope.remito.cliente.NOM, 309 nombreCliente: $scope.remito.cliente.NOM,
310 cuitCliente: $scope.remito.cliente.CUIT, 310 cuitCliente: $scope.remito.cliente.CUIT,
311 total: $scope.getTotal() * $scope.remito.cotizacion.VENDEDOR, 311 total: $scope.getTotal() * $scope.remito.cotizacion.VENDEDOR,
312 numeroNotaPedido: $scope.remito.numeroNotaPedido, 312 numeroNotaPedido: $scope.remito.numeroNotaPedido,
313 idVendedor: parseInt($scope.remito.cliente.VEN), 313 idVendedor: parseInt($scope.remito.cliente.VEN),
314 idProveedor: $scope.remito.proveedor.COD, 314 idProveedor: $scope.remito.proveedor.COD,
315 idDomicilio: $scope.remito.idDomicilio || $scope.remito.domicilio.id, 315 idDomicilio: $scope.remito.idDomicilio || $scope.remito.domicilio.id,
316 idCotizacion: $scope.remito.cotizacion.ID, 316 idCotizacion: $scope.remito.cotizacion.ID,
317 idListaPrecio: $scope.idLista, 317 idListaPrecio: $scope.idLista,
318 flete: $scope.remito.flete, 318 flete: $scope.remito.flete,
319 fob: $scope.remito.fob, 319 fob: $scope.remito.fob,
320 bomba: $scope.remito.bomba, 320 bomba: $scope.remito.bomba,
321 kilometros: $scope.remito.kilometros, 321 kilometros: $scope.remito.kilometros,
322 domicilioStamp: $scope.remito.domicilioStamp, 322 domicilioStamp: $scope.remito.domicilioStamp,
323 observaciones: $scope.remito.observaciones, 323 observaciones: $scope.remito.observaciones,
324 numeroRemito: parseInt($scope.comprobante), 324 numeroRemito: parseInt($scope.comprobante),
325 sucursal: parseInt($scope.puntoVenta), 325 sucursal: parseInt($scope.puntoVenta),
326 responsabilidadIvaCliente: $scope.remito.cliente.IVA, 326 responsabilidadIvaCliente: $scope.remito.cliente.IVA,
327 descuento: 0,//TODO, 327 descuento: 0,//TODO,
328 importeNeto: getImporte('netoUnitario'), 328 importeNeto: getImporte('netoUnitario'),
329 importeExento: getImporte('exentoUnitario'), 329 importeExento: getImporte('exentoUnitario'),
330 importeIva: getImporte('ivaUnitario'), 330 importeIva: getImporte('ivaUnitario'),
331 importeIvaServicios: 0,//TODO 331 importeIvaServicios: 0,//TODO
332 importeImpuestoInterno: getImporte('impuestoInternoUnitario'), 332 importeImpuestoInterno: getImporte('impuestoInternoUnitario'),
333 importeImpuestoInterno1: getImporte('impuestoInterno1Unitario'), 333 importeImpuestoInterno1: getImporte('impuestoInterno1Unitario'),
334 importeImpuestoInterno2: getImporte('impuestoInterno2Unitario'), 334 importeImpuestoInterno2: getImporte('impuestoInterno2Unitario'),
335 percepcion: 0,//TODO 335 percepcion: 0,//TODO
336 percepcionIva: 0,//TODO 336 percepcionIva: 0,//TODO
337 redondeo: 0,//TODO 337 redondeo: 0,//TODO
338 anulado: false, 338 anulado: false,
339 planilla: $filter('date')($scope.now, 'ddMMyyyy'), 339 planilla: $filter('date')($scope.now, 'ddMMyyyy'),
340 lugar: parseInt($scope.puntoVenta), 340 lugar: parseInt($scope.puntoVenta),
341 cuentaMadre: 0,//TODO 341 cuentaMadre: 0,//TODO
342 cuentaContable: 0,//TODO 342 cuentaContable: 0,//TODO
343 asiento: 0,//TODO 343 asiento: 0,//TODO
344 e_hd: '',//TODO 344 e_hd: '',//TODO
345 c_hd: '', 345 c_hd: '',
346 numeroLiquidoProducto: 0,//TODO 346 numeroLiquidoProducto: 0,//TODO
347 estado: $scope.remito.estado, 347 estado: $scope.remito.estado,
348 destinoVenta: 0,//TODO 348 destinoVenta: 0,//TODO
349 operacionTipo: 0, //TODO 349 operacionTipo: 0, //TODO
350 }, 350 },
351 notaPedido: $scope.notaPedido, 351 notaPedido: $scope.notaPedido,
352 articulos: remitoBusinessService.quitarCotizacion($scope.articulosFiltro(), 352 articulos: remitoBusinessService.quitarCotizacion($scope.articulosFiltro(),
353 $scope.remito.cotizacion.VENDEDOR), 353 $scope.remito.cotizacion.VENDEDOR),
354 puntosDescarga: remitoBusinessService.addPuntosDescarga( 354 puntosDescarga: remitoBusinessService.addPuntosDescarga(
355 $scope.remito.remitoPuntoDescarga), 355 $scope.remito.remitoPuntoDescarga),
356 plazos: $scope.remito.remitoPlazo 356 plazos: $scope.remito.remitoPlazo
357 }; 357 };
358 crearRemitoService.crearRemito(save).then( 358 crearRemitoService.crearRemito(save).then(
359 function (data) { 359 function (data) {
360 360
361 focaBotoneraLateralService.endGuardar(true); 361 focaBotoneraLateralService.endGuardar(true);
362 $scope.saveLoading = false; 362 $scope.saveLoading = false;
363 363
364 if (data.status === 500) { 364 if (data.status === 500) {
365 focaModalService.alert(data.data); 365 focaModalService.alert(data.data);
366 return; 366 return;
367 } 367 }
368 368
369 abrirModalMail(data.data.id, 369 abrirModalMail(data.data.id,
370 $scope.remito.cliente, 370 $scope.remito.cliente,
371 $filter('comprobante')([ 371 $filter('comprobante')([
372 $scope.puntoVenta, 372 $scope.puntoVenta,
373 data.data.numero 373 data.data.numero
374 ]) 374 ])
375 ); 375 );
376 376
377 config(); 377 config();
378 378
379 }, function (error) { 379 }, function (error) {
380 focaModalService.alert(error.data || 'Hubo un error al crear el remito'); 380 focaModalService.alert(error.data || 'Hubo un error al crear el remito');
381 focaBotoneraLateralService.endGuardar(); 381 focaBotoneraLateralService.endGuardar();
382 $scope.saveLoading = false; 382 $scope.saveLoading = false;
383 console.info(error); 383 console.info(error);
384 } 384 }
385 ); 385 );
386 }; 386 };
387 387
388 $scope.seleccionarProductos = function () { 388 $scope.seleccionarProductos = function () {
389 if (!varlidarRemitoFacturado()) return; 389 if (!varlidarRemitoFacturado()) return;
390 if (!varlidarRemitoAbierto()) return; 390 if (!varlidarRemitoAbierto()) return;
391 if ($scope.notaPedido.id !== 0) { 391 if ($scope.notaPedido.id !== 0) {
392 $scope.idLista = parseInt($scope.notaPedido.idListaPrecio); 392 $scope.idLista = parseInt($scope.notaPedido.idListaPrecio);
393 } 393 }
394 if ($scope.idLista === undefined) { 394 if ($scope.idLista === undefined) {
395 focaModalService.alert( 395 focaModalService.alert(
396 'Primero seleccione una lista de precio y condicion'); 396 'Primero seleccione una lista de precio y condicion');
397 return; 397 return;
398 } 398 }
399 var modalInstance = $uibModal.open( 399 var modalInstance = $uibModal.open(
400 { 400 {
401 ariaLabelledBy: 'Busqueda de Productos', 401 ariaLabelledBy: 'Busqueda de Productos',
402 templateUrl: 'modal-busqueda-productos.html', 402 templateUrl: 'modal-busqueda-productos.html',
403 controller: 'modalBusquedaProductosCtrl', 403 controller: 'modalBusquedaProductosCtrl',
404 resolve: { 404 resolve: {
405 parametroProducto: { 405 parametroProducto: {
406 idLista: $scope.idLista, 406 idLista: $scope.idLista,
407 cotizacion: $scope.remito.cotizacion.VENDEDOR, 407 cotizacion: $scope.remito.cotizacion.VENDEDOR,
408 simbolo: $scope.remito.cotizacion.moneda.SIMBOLO 408 simbolo: $scope.remito.cotizacion.moneda.SIMBOLO
409 } 409 }
410 }, 410 },
411 size: 'lg' 411 size: 'lg'
412 } 412 }
413 ); 413 );
414 modalInstance.result.then( 414 modalInstance.result.then(
415 function (producto) { 415 function (producto) {
416 var newArt = 416 var newArt =
417 { 417 {
418 id: 0, 418 id: 0,
419 idRemito: 0, 419 idRemito: 0,
420 codigo: producto.codigo, 420 codigo: producto.codigo,
421 sector: producto.sector, 421 sector: producto.sector,
422 sectorCodigo: producto.sector + '-' + producto.codigo, 422 sectorCodigo: producto.sector + '-' + producto.codigo,
423 descripcion: producto.descripcionLarga, 423 descripcion: producto.descripcionLarga,
424 item: $scope.remito.articulosRemito.length + 1, 424 item: $scope.remito.articulosRemito.length + 1,
425 nombre: producto.descripcion, 425 nombre: producto.descripcion,
426 precio: parseFloat(producto.precio.toFixed(4)), 426 precio: parseFloat(producto.precio.toFixed(4)),
427 costoUnitario: producto.costo, 427 costoUnitario: producto.costo,
428 editCantidad: false, 428 editCantidad: false,
429 editPrecio: false, 429 editPrecio: false,
430 rubro: producto.CodRub, 430 rubro: producto.CodRub,
431 ivaUnitario: producto.IMPIVA, 431 ivaUnitario: producto.IMPIVA,
432 impuestoInternoUnitario: producto.ImpInt, 432 impuestoInternoUnitario: producto.ImpInt,
433 impuestoInterno1Unitario: producto.ImpInt2, 433 impuestoInterno1Unitario: producto.ImpInt2,
434 impuestoInterno2Unitario: producto.ImpInt3, 434 impuestoInterno2Unitario: producto.ImpInt3,
435 precioLista: producto.precio, 435 precioLista: producto.precio,
436 combustible: 1, 436 combustible: 1,
437 facturado: 0, 437 facturado: 0,
438 idArticulo: producto.id, 438 idArticulo: producto.id,
439 tasaIva: producto.tasaIVA 439 tasaIva: producto.tasaIVA
440 }; 440 };
441 441
442 newArt.exentoUnitario = newArt.ivaUnitario ? 0 : producto.neto; 442 newArt.exentoUnitario = newArt.ivaUnitario ? 0 : producto.neto;
443 newArt.netoUnitario = newArt.ivaUnitario ? producto.neto : 0; 443 newArt.netoUnitario = newArt.ivaUnitario ? producto.neto : 0;
444 444
445 $scope.articuloACargar = newArt; 445 $scope.articuloACargar = newArt;
446 $scope.cargando = false; 446 $scope.cargando = false;
447 }, function () { 447 }, function () {
448 // funcion ejecutada cuando se cancela el modal 448 // funcion ejecutada cuando se cancela el modal
449 } 449 }
450 ); 450 );
451 }; 451 };
452 452
453 $scope.seleccionarPuntosDeDescarga = function () { 453 $scope.seleccionarPuntosDeDescarga = function () {
454 if (!$scope.remito.cliente.COD || !$scope.remito.domicilio.id) { 454 if (!$scope.remito.cliente.COD || !$scope.remito.domicilio.id) {
455 focaModalService.alert('Primero seleccione un cliente y un domicilio'); 455 focaModalService.alert('Primero seleccione un cliente y un domicilio');
456 return; 456 return;
457 } else { 457 } else {
458 var modalInstance = $uibModal.open( 458 var modalInstance = $uibModal.open(
459 { 459 {
460 ariaLabelledBy: 'Búsqueda de Puntos de descarga', 460 ariaLabelledBy: 'Búsqueda de Puntos de descarga',
461 templateUrl: 'modal-punto-descarga.html', 461 templateUrl: 'modal-punto-descarga.html',
462 controller: 'focaModalPuntoDescargaController', 462 controller: 'focaModalPuntoDescargaController',
463 size: 'lg', 463 size: 'lg',
464 resolve: { 464 resolve: {
465 filters: { 465 filters: {
466 idDomicilio: $scope.remito.domicilio.id, 466 idDomicilio: $scope.remito.domicilio.id,
467 idCliente: $scope.remito.cliente.COD, 467 idCliente: $scope.remito.cliente.COD,
468 articulos: $scope.remito.articulosRemito, 468 articulos: $scope.remito.articulosRemito,
469 puntosDescarga: $scope.remito.remitoPuntoDescarga, 469 puntosDescarga: $scope.remito.remitoPuntoDescarga,
470 domicilio: $scope.remito.domicilio 470 domicilio: $scope.remito.domicilio
471 } 471 }
472 } 472 }
473 } 473 }
474 ); 474 );
475 modalInstance.result.then( 475 modalInstance.result.then(
476 function (puntosDescarga) { 476 function (puntosDescarga) {
477 477
478 puntosDescarga.forEach(function (punto) { 478 puntosDescarga.forEach(function (punto) {
479 $scope.remito.remitoPuntoDescarga.push( 479 $scope.remito.remitoPuntoDescarga.push(
480 { 480 {
481 puntoDescarga: punto 481 puntoDescarga: punto
482 } 482 }
483 ); 483 );
484 }); 484 });
485 485
486 $scope.$broadcast('addCabecera', { 486 $scope.$broadcast('addCabecera', {
487 label: 'Puntos de descarga:', 487 label: 'Puntos de descarga:',
488 valor: getCabeceraPuntoDescarga(puntosDescarga) 488 valor: getCabeceraPuntoDescarga(puntosDescarga)
489 }); 489 });
490 }, function () { 490 }, function () {
491 $scope.abrirModalDomicilios($scope.cliente); 491 $scope.abrirModalDomicilios($scope.cliente);
492 } 492 }
493 ); 493 );
494 } 494 }
495 }; 495 };
496 496
497 $scope.seleccionarCliente = function () { 497 $scope.seleccionarCliente = function () {
498 if (!varlidarRemitoFacturado()) return; 498 if (!varlidarRemitoFacturado()) return;
499 if (!varlidarRemitoAbierto()) return; 499 if (!varlidarRemitoAbierto()) return;
500 var modalInstance = $uibModal.open( 500 var modalInstance = $uibModal.open(
501 { 501 {
502 ariaLabelledBy: 'Busqueda de Cliente', 502 ariaLabelledBy: 'Busqueda de Cliente',
503 templateUrl: 'foca-busqueda-cliente-modal.html', 503 templateUrl: 'foca-busqueda-cliente-modal.html',
504 controller: 'focaBusquedaClienteModalController', 504 controller: 'focaBusquedaClienteModalController',
505 resolve: { 505 resolve: {
506 parametros: function () { 506 parametros: function () {
507 return { 507 return {
508 // vendedor: $scope.idVendedor, 508 // vendedor: $scope.idVendedor,
509 cobrador: null, 509 cobrador: null,
510 searchText: $scope.cliente ? $scope.cliente.nom : '' 510 searchText: $scope.cliente ? $scope.cliente.nom : ''
511 }; 511 };
512 }, 512 },
513 }, 513 },
514 backdrop: false, 514 backdrop: false,
515 size: 'lg' 515 size: 'lg'
516 } 516 }
517 ); 517 );
518 modalInstance.result.then( 518 modalInstance.result.then(
519 function (cliente) { 519 function (cliente) {
520 520
521 if ($scope.remito.precioCondicion !== undefined) { 521 if ($scope.remito.precioCondicion !== undefined) {
522 focaModalService 522 focaModalService
523 .alert('Debe agregar lista de precio de cliente actual') 523 .alert('Debe agregar lista de precio de cliente actual')
524 .then(function () { 524 .then(function () {
525 $scope.remito.precioCondicion = undefined; 525 $scope.remito.precioCondicion = undefined;
526 $scope.$broadcast('removeCabecera', 'Precios y Condiciones:'); 526 $scope.$broadcast('removeCabecera', 'Precios y Condiciones:');
527 $filter('filter')($scope.botonera, 527 $filter('filter')($scope.botonera,
528 { label: 'Precios y Condiciones' })[0].checked = false; 528 { label: 'Precios y Condiciones' })[0].checked = false;
529 }) 529 })
530 .catch(function () { 530 .catch(function () {
531 }) 531 })
532 } 532 }
533 533
534 // if (angular.equals({}, cliente.vendedor)) { 534 // if (angular.equals({}, cliente.vendedor)) {
535 535
536 // focaModalService 536 // focaModalService
537 // .alert('El cliente seleccionado no tiene tiene ' + 537 // .alert('El cliente seleccionado no tiene tiene ' +
538 // 'vendedor asignado.') 538 // 'vendedor asignado.')
539 // .then($scope.seleccionarCliente); 539 // .then($scope.seleccionarCliente);
540 540
541 // return; 541 // return;
542 // } 542 // }
543 543
544 $scope.cliente = cliente; 544 $scope.cliente = cliente;
545 $scope.abrirModalDomicilios(cliente); 545 $scope.abrirModalDomicilios(cliente);
546 }, function () { 546 }, function () {
547 } 547 }
548 ); 548 );
549 }; 549 };
550 550
551 $scope.seleccionarEliminarRemito = function () { 551 $scope.seleccionarEliminarRemito = function () {
552 focaModalService.confirm('¿Desea eliminar este remito?').then(function (data) { 552 focaModalService.confirm('¿Desea eliminar este remito?').then(function (data) {
553 if (data) { 553 if (data) {
554 $scope.remito.anulado = true; 554 $scope.remito.anulado = true;
555 delete $scope.remito.remitoPlazo; 555 delete $scope.remito.remitoPlazo;
556 // delete $scope.remito.vendedor; 556 // delete $scope.remito.vendedor;
557 delete $scope.remito.proveedor; 557 delete $scope.remito.proveedor;
558 delete $scope.remito.cliente; 558 delete $scope.remito.cliente;
559 delete $scope.remito.cotizacion; 559 delete $scope.remito.cotizacion;
560 delete $scope.remito.remitoPuntoDescarga; 560 delete $scope.remito.remitoPuntoDescarga;
561 delete $scope.remito.articulosRemito; 561 delete $scope.remito.articulosRemito;
562 delete $scope.remito.fechaRemito; 562 delete $scope.remito.fechaRemito;
563 crearRemitoService.eliminarRemito($scope.remito); 563 crearRemitoService.eliminarRemito($scope.remito);
564 } 564 }
565 config(); 565 config();
566 }); 566 });
567 }; 567 };
568 568
569 $scope.seleccionarProveedor = function () { 569 $scope.seleccionarProveedor = function () {
570 if (!varlidarRemitoFacturado()) return; 570 if (!varlidarRemitoFacturado()) return;
571 if (!varlidarRemitoAbierto()) return; 571 if (!varlidarRemitoAbierto()) return;
572 var parametrosModal = { 572 var parametrosModal = {
573 titulo: 'Búsqueda de Proveedor', 573 titulo: 'Búsqueda de Proveedor',
574 query: '/proveedor', 574 query: '/proveedor',
575 columnas: [ 575 columnas: [
576 { 576 {
577 nombre: 'Código', 577 nombre: 'Código',
578 propiedad: 'COD', 578 propiedad: 'COD',
579 filtro: { 579 filtro: {
580 nombre: 'rellenarDigitos', 580 nombre: 'rellenarDigitos',
581 parametro: 5 581 parametro: 5
582 } 582 }
583 }, 583 },
584 { 584 {
585 nombre: 'Nombre', 585 nombre: 'Nombre',
586 propiedad: 'NOM' 586 propiedad: 'NOM'
587 }, 587 },
588 { 588 {
589 nombre: 'CUIT', 589 nombre: 'CUIT',
590 propiedad: 'CUIT' 590 propiedad: 'CUIT'
591 } 591 }
592 ], 592 ],
593 tipo: 'POST', 593 tipo: 'POST',
594 json: { razonCuitCod: '' } 594 json: { razonCuitCod: '' }
595 }; 595 };
596 focaModalService.modal(parametrosModal).then( 596 focaModalService.modal(parametrosModal).then(
597 function (proveedor) { 597 function (proveedor) {
598 $scope.seleccionarFlete(proveedor); 598 $scope.seleccionarFlete(proveedor);
599 }, function () { } 599 }, function () { }
600 ); 600 );
601 }; 601 };
602 602
603 $scope.seleccionarDomicilioDeEntrega = function () { 603 $scope.seleccionarDomicilioDeEntrega = function () {
604 if (!varlidarRemitoFacturado()) return; 604 if (!varlidarRemitoFacturado()) return;
605 if (!varlidarRemitoAbierto()) return; 605 if (!varlidarRemitoAbierto()) return;
606 if (!$scope.remito.cliente.COD && !$scope.cliente) { 606 if (!$scope.remito.cliente.COD && !$scope.cliente) {
607 focaModalService.alert('Seleccione un Cliente'); 607 focaModalService.alert('Seleccione un Cliente');
608 return; 608 return;
609 } else { 609 } else {
610 $scope.abrirModalDomicilios($scope.remito.cliente.COD ? 610 $scope.abrirModalDomicilios($scope.remito.cliente.COD ?
611 $scope.remito.cliente.COD : $scope.cliente); 611 $scope.remito.cliente.COD : $scope.cliente);
612 } 612 }
613 }; 613 };
614 614
615 $scope.abrirModalDomicilios = function (cliente) { 615 $scope.abrirModalDomicilios = function (cliente) {
616 var modalInstanceDomicilio = $uibModal.open( 616 var modalInstanceDomicilio = $uibModal.open(
617 { 617 {
618 ariaLabelledBy: 'Busqueda de Domicilios', 618 ariaLabelledBy: 'Busqueda de Domicilios',
619 templateUrl: 'modal-domicilio.html', 619 templateUrl: 'modal-domicilio.html',
620 controller: 'focaModalDomicilioController', 620 controller: 'focaModalDomicilioController',
621 backdrop: false, 621 backdrop: false,
622 size: 'lg', 622 size: 'lg',
623 resolve: { 623 resolve: {
624 idCliente: function () { 624 idCliente: function () {
625 return $scope.remito.cliente.COD ? $scope.remito.cliente.COD : 625 return $scope.remito.cliente.COD ? $scope.remito.cliente.COD :
626 cliente.COD; 626 cliente.COD;
627 }, 627 },
628 esNuevo: function () { 628 esNuevo: function () {
629 return ($scope.remito.cliente.COD ? false : cliente.esNuevo); 629 return ($scope.remito.cliente.COD ? false : cliente.esNuevo);
630 } 630 }
631 } 631 }
632 } 632 }
633 ); 633 );
634 modalInstanceDomicilio.result 634 modalInstanceDomicilio.result
635 .then(function (domicilio) { 635 .then(function (domicilio) {
636 $scope.remito.domicilio = domicilio; 636 $scope.remito.domicilio = domicilio;
637 $scope.remito.cliente = cliente; 637 $scope.remito.cliente = cliente;
638 // $scope.remito.vendedor = cliente.vendedor; 638 // $scope.remito.vendedor = cliente.vendedor;
639 639
640 var domicilioStamp = 640 var domicilioStamp =
641 domicilio.Calle + ' ' + domicilio.Numero + ', ' + 641 domicilio.Calle + ' ' + domicilio.Numero + ', ' +
642 domicilio.Localidad + ', ' + domicilio.Provincia; 642 domicilio.Localidad + ', ' + domicilio.Provincia;
643 643
644 $scope.remito.domicilioStamp = domicilioStamp; 644 $scope.remito.domicilioStamp = domicilioStamp;
645 645
646 // $scope.$broadcast('addCabecera', { 646 // $scope.$broadcast('addCabecera', {
647 // label: 'Vendedor:', 647 // label: 'Vendedor:',
648 // valor: $filter('rellenarDigitos')($scope.remito.vendedor 648 // valor: $filter('rellenarDigitos')($scope.remito.vendedor
649 // .NUM, 3) + ' - ' + $scope.remito.vendedor.NOM 649 // .NUM, 3) + ' - ' + $scope.remito.vendedor.NOM
650 // }); 650 // });
651 $scope.$broadcast('addCabecera', { 651 $scope.$broadcast('addCabecera', {
652 label: 'Cliente:', 652 label: 'Cliente:',
653 valor: $filter('rellenarDigitos') 653 valor: $filter('rellenarDigitos')
654 ($scope.remito.cliente.COD, 3) + 654 ($scope.remito.cliente.COD, 3) +
655 ' - ' + $scope.remito.cliente.NOM 655 ' - ' + $scope.remito.cliente.NOM
656 }); 656 });
657 $scope.$broadcast('addCabecera', { 657 $scope.$broadcast('addCabecera', {
658 label: 'Domicilio:', 658 label: 'Domicilio:',
659 valor: domicilioStamp 659 valor: domicilioStamp
660 }); 660 });
661 661
662 if (domicilio.verPuntos) { 662 if (domicilio.verPuntos) {
663 delete $scope.remito.domicilio.verPuntos; 663 delete $scope.remito.domicilio.verPuntos;
664 $scope.seleccionarPuntosDeDescarga(); 664 $scope.seleccionarPuntosDeDescarga();
665 } 665 }
666 666
667 $filter('filter')($scope.botonera, 667 $filter('filter')($scope.botonera,
668 { label: 'Cliente' })[0].checked = true; 668 { label: 'Cliente' })[0].checked = true;
669 $filter('filter')($scope.botonera, 669 $filter('filter')($scope.botonera,
670 { label: 'Domicilio de Entrega' })[0].checked = true; 670 { label: 'Domicilio de Entrega' })[0].checked = true;
671 671
672 }) 672 })
673 .catch(function (e) { 673 .catch(function (e) {
674 if (!cliente) { 674 if (!cliente) {
675 $scope.seleccionarCliente(true); 675 $scope.seleccionarCliente(true);
676 return; 676 return;
677 } 677 }
678 $scope.remito.cliente = cliente;
679 $scope.$broadcast('addCabecera', {
680 label: 'Cliente:',
681 valor: $filter('rellenarDigitos')(cliente.COD, 5) +
682 ' - ' + cliente.NOM
683 });
684 $filter('filter')($scope.botonera,
685 { label: 'Cliente' })[0].checked = true;
686 }); 678 });
687 }; 679 };
688 680
689 $scope.getTotal = function () { 681 $scope.getTotal = function () {
690 var total = 0; 682 var total = 0;
691 var arrayTempArticulos = $scope.articulosFiltro(); 683 var arrayTempArticulos = $scope.articulosFiltro();
692 for (var i = 0; i < arrayTempArticulos.length; i++) { 684 for (var i = 0; i < arrayTempArticulos.length; i++) {
693 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 685 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
694 } 686 }
695 $scope.comprobarTotal(parseFloat(total.toFixed(2))); 687 $scope.comprobarTotal(parseFloat(total.toFixed(2)));
696 return parseFloat(total.toFixed(2)); 688 return parseFloat(total.toFixed(2));
697 }; 689 };
698 690
699 $scope.getSubTotal = function () { 691 $scope.getSubTotal = function () {
700 if ($scope.articuloACargar) { 692 if ($scope.articuloACargar) {
701 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 693 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
702 } 694 }
703 }; 695 };
704 696
705 $scope.seleccionarPreciosYCondiciones = function () { 697 $scope.seleccionarPreciosYCondiciones = function () {
706 if (!$scope.remito.cliente.COD) { 698 if (!$scope.remito.cliente.COD) {
707 focaModalService.alert('Primero seleccione un cliente'); 699 focaModalService.alert('Primero seleccione un cliente');
708 return; 700 return;
709 } 701 }
710 if ($scope.remito.articulosRemito.length !== 0) { 702 if ($scope.remito.articulosRemito.length !== 0) {
711 if (varlidarRemitoFacturado() && varlidarRemitoAbierto()) { 703 if (varlidarRemitoFacturado() && varlidarRemitoAbierto()) {
712 abrirModal(); 704 abrirModal();
713 } 705 }
714 } else { 706 } else {
715 abrirModal(); 707 abrirModal();
716 } 708 }
717 709
718 function abrirModal() { 710 function abrirModal() {
719 var parametros = { 711 var parametros = {
720 idCliente: $scope.remito.cliente.COD, 712 idCliente: $scope.remito.cliente.COD,
721 idListaPrecio: $scope.remito.cliente.MOD 713 idListaPrecio: $scope.remito.cliente.MOD
722 }; 714 };
723 var modalInstance = $uibModal.open( 715 var modalInstance = $uibModal.open(
724 { 716 {
725 ariaLabelledBy: 'Busqueda de Precio Condición', 717 ariaLabelledBy: 'Busqueda de Precio Condición',
726 templateUrl: 'modal-precio-condicion.html', 718 templateUrl: 'modal-precio-condicion.html',
727 controller: 'focaModalPrecioCondicionController', 719 controller: 'focaModalPrecioCondicionController',
728 size: 'lg', 720 size: 'lg',
729 resolve: { 721 resolve: {
730 parametros: function () { return parametros; } 722 parametros: function () { return parametros; }
731 } 723 }
732 } 724 }
733 ); 725 );
734 modalInstance.result.then( 726 modalInstance.result.then(
735 function (precioCondicion) { 727 function (precioCondicion) {
736 var cabecera = ''; 728 var cabecera = '';
737 var plazosConcat = ''; 729 var plazosConcat = '';
738 if (!Array.isArray(precioCondicion)) { 730 if (!Array.isArray(precioCondicion)) {
739 $scope.remito.idPrecioCondicion = precioCondicion.listaPrecio.ID; 731 $scope.remito.idPrecioCondicion = precioCondicion.listaPrecio.ID;
740 $scope.remito.remitoPlazo = precioCondicion.plazoPago; 732 $scope.remito.remitoPlazo = precioCondicion.plazoPago;
741 $scope.idLista = parseInt(precioCondicion.listaPrecio.ID) ? 733 $scope.idLista = parseInt(precioCondicion.listaPrecio.ID) ?
742 parseInt(precioCondicion.listaPrecio.ID) : -1; 734 parseInt(precioCondicion.listaPrecio.ID) : -1;
743 $scope.remito.cliente.MOD = precioCondicion.listaPrecio.ID; 735 $scope.remito.cliente.MOD = precioCondicion.listaPrecio.ID;
744 for (var i = 0; i < precioCondicion.plazoPago.length; i++) { 736 for (var i = 0; i < precioCondicion.plazoPago.length; i++) {
745 plazosConcat += precioCondicion.plazoPago[i].dias + ', '; 737 plazosConcat += precioCondicion.plazoPago[i].dias + ', ';
746 } 738 }
747 plazosConcat = plazosConcat.substring(0, plazosConcat.length - 2); 739 plazosConcat = plazosConcat.substring(0, plazosConcat.length - 2);
748 cabecera = $filter('rellenarDigitos') 740 cabecera = $filter('rellenarDigitos')
749 (parseInt(precioCondicion.listaPrecio.ID), 4) + 741 (parseInt(precioCondicion.listaPrecio.ID), 4) +
750 ' - ' + precioCondicion.listaPrecio.DES + ' ' + 742 ' - ' + precioCondicion.listaPrecio.DES + ' ' +
751 plazosConcat.trim(); 743 plazosConcat.trim();
752 } else { //Cuando se ingresan los plazos manualmente 744 } else { //Cuando se ingresan los plazos manualmente
753 $scope.remito.idPrecioCondicion = 0; 745 $scope.remito.idPrecioCondicion = 0;
754 //-1, el modal productos busca todos los productos 746 //-1, el modal productos busca todos los productos
755 $scope.idLista = -1; 747 $scope.idLista = -1;
756 $scope.remito.remitoPlazo = precioCondicion; 748 $scope.remito.remitoPlazo = precioCondicion;
757 for (var j = 0; j < precioCondicion.length; j++) { 749 for (var j = 0; j < precioCondicion.length; j++) {
758 plazosConcat += precioCondicion[j].dias + ' '; 750 plazosConcat += precioCondicion[j].dias + ' ';
759 } 751 }
760 cabecera = plazosConcat.trim(); 752 cabecera = plazosConcat.trim();
761 } 753 }
762 var cabecerasFilter = !$filter('filter')($scope.cabeceras, 754 var cabecerasFilter = !$filter('filter')($scope.cabeceras,
763 { label: 'Precios y Condiciones' }); 755 { label: 'Precios y Condiciones' });
764 if (!cabecerasFilter) { 756 if (!cabecerasFilter) {
765 $scope.cabeceras.push({ 757 $scope.cabeceras.push({
766 label: 'Precios y Condiciones:', 758 label: 'Precios y Condiciones:',
767 valor: parseInt(precioCondicion.listaPrecio.ID) + ' - ' + 759 valor: parseInt(precioCondicion.listaPrecio.ID) + ' - ' +
768 precioCondicion.listaPrecio.DES + ' ' + 760 precioCondicion.listaPrecio.DES + ' ' +
769 remitoBusinessService 761 remitoBusinessService
770 .plazoToString(precioCondicion.plazoPago) 762 .plazoToString(precioCondicion.plazoPago)
771 }); 763 });
772 764
773 $scope.remito.idListaPrecio = parseInt( 765 $scope.remito.idListaPrecio = parseInt(
774 precioCondicion.listaPrecio.ID); 766 precioCondicion.listaPrecio.ID);
775 } 767 }
776 $filter('filter')($scope.cabeceras, 768 $filter('filter')($scope.cabeceras,
777 { label: 'Precios y Condiciones' })[0].valor = cabecera; 769 { label: 'Precios y Condiciones' })[0].valor = cabecera;
778 770
779 $scope.remito.precioCondicion = precioCondicion; 771 $scope.remito.precioCondicion = precioCondicion;
780 $filter('filter')($scope.botonera, 772 $filter('filter')($scope.botonera,
781 { label: 'Precios y Condiciones' })[0].checked = true; 773 { label: 'Precios y Condiciones' })[0].checked = true;
782 addArrayCabecera($scope.cabeceras); 774 addArrayCabecera($scope.cabeceras);
783 }, function () { 775 }, function () {
784 776
785 } 777 }
786 ); 778 );
787 } 779 }
788 }; 780 };
789 781
790 $scope.seleccionarFlete = function (proveedor) { 782 $scope.seleccionarFlete = function (proveedor) {
791 if (!varlidarRemitoFacturado()) return; 783 if (!varlidarRemitoFacturado()) return;
792 if (!varlidarRemitoAbierto()) return; 784 if (!varlidarRemitoAbierto()) return;
793 var modalInstance = $uibModal.open( 785 var modalInstance = $uibModal.open(
794 { 786 {
795 ariaLabelledBy: 'Busqueda de Flete', 787 ariaLabelledBy: 'Busqueda de Flete',
796 templateUrl: 'modal-flete.html', 788 templateUrl: 'modal-flete.html',
797 controller: 'focaModalFleteController', 789 controller: 'focaModalFleteController',
798 size: 'lg', 790 size: 'lg',
799 resolve: { 791 resolve: {
800 parametrosFlete: 792 parametrosFlete:
801 function () { 793 function () {
802 return { 794 return {
803 flete: $scope.remito.flete ? '1' : 795 flete: $scope.remito.flete ? '1' :
804 ($scope.remito.fob ? 'FOB' : 796 ($scope.remito.fob ? 'FOB' :
805 ($scope.remito.flete === undefined ? 797 ($scope.remito.flete === undefined ?
806 null : '0')), 798 null : '0')),
807 bomba: $scope.remito.bomba ? '1' : 799 bomba: $scope.remito.bomba ? '1' :
808 ($scope.remito.bomba === undefined ? 800 ($scope.remito.bomba === undefined ?
809 null : '0'), 801 null : '0'),
810 kilometros: $scope.remito.kilometros 802 kilometros: $scope.remito.kilometros
811 }; 803 };
812 } 804 }
813 } 805 }
814 } 806 }
815 ); 807 );
816 modalInstance.result.then( 808 modalInstance.result.then(
817 function (datos) { 809 function (datos) {
818 $scope.remitoIsDirty = true; 810 $scope.remitoIsDirty = true;
819 $scope.remito.proveedor = proveedor; 811 $scope.remito.proveedor = proveedor;
820 $scope.remito.idProveedor = proveedor.COD; 812 $scope.remito.idProveedor = proveedor.COD;
821 $scope.$broadcast('addCabecera', { 813 $scope.$broadcast('addCabecera', {
822 label: 'Proveedor:', 814 label: 'Proveedor:',
823 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' + 815 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' +
824 proveedor.NOM 816 proveedor.NOM
825 }); 817 });
826 818
827 $scope.remito.flete = datos.flete; 819 $scope.remito.flete = datos.flete;
828 $scope.remito.fob = datos.FOB; 820 $scope.remito.fob = datos.FOB;
829 $scope.remito.bomba = datos.bomba; 821 $scope.remito.bomba = datos.bomba;
830 $scope.remito.kilometros = datos.kilometros; 822 $scope.remito.kilometros = datos.kilometros;
831 823
832 $scope.$broadcast('addCabecera', { 824 $scope.$broadcast('addCabecera', {
833 label: 'Flete:', 825 label: 'Flete:',
834 valor: datos.flete ? 'Si' : ($scope.remito.fob ? 'FOB' : 'No') 826 valor: datos.flete ? 'Si' : ($scope.remito.fob ? 'FOB' : 'No')
835 }); 827 });
836 if (datos.flete) { 828 if (datos.flete) {
837 $scope.$broadcast('addCabecera', { 829 $scope.$broadcast('addCabecera', {
838 label: 'Bomba:', 830 label: 'Bomba:',
839 valor: datos.bomba ? 'Si' : 'No' 831 valor: datos.bomba ? 'Si' : 'No'
840 }); 832 });
841 $scope.$broadcast('addCabecera', { 833 $scope.$broadcast('addCabecera', {
842 label: 'Kilometros:', 834 label: 'Kilometros:',
843 valor: datos.kilometros 835 valor: datos.kilometros
844 }); 836 });
845 } else { 837 } else {
846 $scope.$broadcast('removeCabecera', 'Bomba:'); 838 $scope.$broadcast('removeCabecera', 'Bomba:');
847 $scope.$broadcast('removeCabecera', 'Kilometros:'); 839 $scope.$broadcast('removeCabecera', 'Kilometros:');
848 $scope.remito.bomba = false; 840 $scope.remito.bomba = false;
849 $scope.remito.kilometros = null; 841 $scope.remito.kilometros = null;
850 } 842 }
851 843
852 $filter('filter')($scope.botonera, 844 $filter('filter')($scope.botonera,
853 { label: 'Proveedor' })[0].checked = true; 845 { label: 'Proveedor' })[0].checked = true;
854 }, function () { 846 }, function () {
855 $scope.seleccionarTransportista(); 847 $scope.seleccionarTransportista();
856 } 848 }
857 ); 849 );
858 }; 850 };
859 851
860 $scope.seleccionarMoneda = function () { 852 $scope.seleccionarMoneda = function () {
861 if (!varlidarRemitoFacturado()) return; 853 if (!varlidarRemitoFacturado()) return;
862 if (!varlidarRemitoAbierto()) return; 854 if (!varlidarRemitoAbierto()) return;
863 var parametrosModal = { 855 var parametrosModal = {
864 titulo: 'Búsqueda de monedas', 856 titulo: 'Búsqueda de monedas',
865 query: '/moneda', 857 query: '/moneda',
866 columnas: [ 858 columnas: [
867 { 859 {
868 propiedad: 'DETALLE', 860 propiedad: 'DETALLE',
869 nombre: 'Nombre' 861 nombre: 'Nombre'
870 }, 862 },
871 { 863 {
872 propiedad: 'SIMBOLO', 864 propiedad: 'SIMBOLO',
873 nombre: 'Símbolo' 865 nombre: 'Símbolo'
874 } 866 }
875 ], 867 ],
876 size: 'md' 868 size: 'md'
877 }; 869 };
878 focaModalService.modal(parametrosModal).then( 870 focaModalService.modal(parametrosModal).then(
879 function (moneda) { 871 function (moneda) {
880 872
881 if (moneda.ID !== 1) { 873 if (moneda.ID !== 1) {
882 $scope.abrirModalCotizacion(moneda); 874 $scope.abrirModalCotizacion(moneda);
883 return; 875 return;
884 } 876 }
885 877
886 crearRemitoService.getCotizacionByIdMoneda(1) 878 crearRemitoService.getCotizacionByIdMoneda(1)
887 .then(function (res) { 879 .then(function (res) {
888 880
889 cotizacionPArgentino = res.data[0].cotizaciones[0]; 881 cotizacionPArgentino = res.data[0].cotizaciones[0];
890 cotizacionPArgentino.moneda = moneda; 882 cotizacionPArgentino.moneda = moneda;
891 883
892 actualizarCabeceraMoneda(cotizacionPArgentino); 884 actualizarCabeceraMoneda(cotizacionPArgentino);
893 $filter('filter')($scope.botonera, 885 $filter('filter')($scope.botonera,
894 { label: 'Moneda' })[0].checked = true; 886 { label: 'Moneda' })[0].checked = true;
895 $scope.remito.cotizacion = cotizacionPArgentino; 887 $scope.remito.cotizacion = cotizacionPArgentino;
896 }); 888 });
897 }, function () { 889 }, function () {
898 890
899 } 891 }
900 ); 892 );
901 }; 893 };
902 894
903 $scope.seleccionarObservaciones = function () { 895 $scope.seleccionarObservaciones = function () {
904 focaModalService 896 focaModalService
905 .prompt({ 897 .prompt({
906 titulo: 'Observaciones', 898 titulo: 'Observaciones',
907 value: $scope.remito.observaciones, 899 value: $scope.remito.observaciones,
908 textarea: true, 900 textarea: true,
909 readonly: false 901 readonly: false
910 }) 902 })
911 .then(function (observaciones) { 903 .then(function (observaciones) {
912 $scope.remito.observaciones = observaciones; 904 $scope.remito.observaciones = observaciones;
913 }); 905 });
914 }; 906 };
915 907
916 $scope.abrirModalCotizacion = function (moneda) { 908 $scope.abrirModalCotizacion = function (moneda) {
917 var modalInstance = $uibModal.open( 909 var modalInstance = $uibModal.open(
918 { 910 {
919 ariaLabelledBy: 'Busqueda de Cotización', 911 ariaLabelledBy: 'Busqueda de Cotización',
920 templateUrl: 'modal-cotizacion.html', 912 templateUrl: 'modal-cotizacion.html',
921 controller: 'focaModalCotizacionController', 913 controller: 'focaModalCotizacionController',
922 size: 'lg', 914 size: 'lg',
923 resolve: { idMoneda: function () { return moneda.ID; } } 915 resolve: { idMoneda: function () { return moneda.ID; } }
924 } 916 }
925 ); 917 );
926 modalInstance.result.then( 918 modalInstance.result.then(
927 function (cotizacion) { 919 function (cotizacion) {
928 cotizacion.moneda = moneda; 920 cotizacion.moneda = moneda;
929 $scope.remitoIsDirty = true; 921 $scope.remitoIsDirty = true;
930 actualizarCabeceraMoneda(cotizacion); 922 actualizarCabeceraMoneda(cotizacion);
931 $filter('filter')($scope.botonera, 923 $filter('filter')($scope.botonera,
932 { label: 'Moneda' })[0].checked = true; 924 { label: 'Moneda' })[0].checked = true;
933 $scope.remito.cotizacion = cotizacion; 925 $scope.remito.cotizacion = cotizacion;
934 }, function () { 926 }, function () {
935 927
936 } 928 }
937 ); 929 );
938 }; 930 };
939 931
940 function actualizarCabeceraMoneda(cotizacion) { 932 function actualizarCabeceraMoneda(cotizacion) {
941 933
942 $scope.remito.articulosRemito.forEach(function (art) { 934 $scope.remito.articulosRemito.forEach(function (art) {
943 art.precio = (art.precio * $scope.remito.cotizacion.VENDEDOR).toFixed(4); 935 art.precio = (art.precio * $scope.remito.cotizacion.VENDEDOR).toFixed(4);
944 art.precio = (art.precio / cotizacion.VENDEDOR).toFixed(4); 936 art.precio = (art.precio / cotizacion.VENDEDOR).toFixed(4);
945 }); 937 });
946 938
947 if (cotizacion.moneda.DETALLE === 'PESOS ARGENTINOS') { 939 if (cotizacion.moneda.DETALLE === 'PESOS ARGENTINOS') {
948 $scope.$broadcast('removeCabecera', 'Moneda:'); 940 $scope.$broadcast('removeCabecera', 'Moneda:');
949 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 941 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
950 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 942 $scope.$broadcast('removeCabecera', 'Cotizacion:');
951 } else { 943 } else {
952 $scope.$broadcast('addCabecera', { 944 $scope.$broadcast('addCabecera', {
953 label: 'Moneda:', 945 label: 'Moneda:',
954 valor: cotizacion.moneda.DETALLE 946 valor: cotizacion.moneda.DETALLE
955 }); 947 });
956 $scope.$broadcast('addCabecera', { 948 $scope.$broadcast('addCabecera', {
957 label: 'Fecha cotizacion:', 949 label: 'Fecha cotizacion:',
958 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy') 950 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy')
959 }); 951 });
960 $scope.$broadcast('addCabecera', { 952 $scope.$broadcast('addCabecera', {
961 label: 'Cotizacion:', 953 label: 'Cotizacion:',
962 valor: $filter('number')(cotizacion.VENDEDOR, '2') 954 valor: $filter('number')(cotizacion.VENDEDOR, '2')
963 }); 955 });
964 } 956 }
965 } 957 }
966 958
967 $scope.agregarATabla = function (key) { 959 $scope.agregarATabla = function (key) {
968 if (key === 13) { 960 if (key === 13) {
969 if (!$scope.articuloACargar.cantidad || !$scope.articuloACargar.precio) { 961 if (!$scope.articuloACargar.cantidad || !$scope.articuloACargar.precio) {
970 focaModalService.alert('Debes introducir algún valor'); 962 focaModalService.alert('Debes introducir algún valor');
971 return; 963 return;
972 } else if ($scope.articuloACargar.cantidad === '0' || $scope.articuloACargar.precio === '0') { 964 } else if ($scope.articuloACargar.cantidad === '0' || $scope.articuloACargar.precio === '0') {
973 focaModalService.alert('Esta ingresando un producto con valor 0'); 965 focaModalService.alert('Esta ingresando un producto con valor 0');
974 return; 966 return;
975 } else if ($scope.articuloACargar.cantidad < 0 || $scope.articuloACargar.precio < 0) { 967 } else if ($scope.articuloACargar.cantidad < 0 || $scope.articuloACargar.precio < 0) {
976 focaModalService.alert('Los valores no pueden ser negativos'); 968 focaModalService.alert('Los valores no pueden ser negativos');
977 return; 969 return;
978 } else if (!Number.isInteger(+$scope.articuloACargar.cantidad)) { 970 } else if (!Number.isInteger(+$scope.articuloACargar.cantidad)) {
979 focaModalService.alert('La cantidad debe ser un número entero'); 971 focaModalService.alert('La cantidad debe ser un número entero');
980 return; 972 return;
981 } else if ($scope.articuloACargar.cantidad > 100000) { 973 } else if ($scope.articuloACargar.cantidad > 100000) {
982 focaModalService.alert('La cantidad máxima permitida es 100.000'); 974 focaModalService.alert('La cantidad máxima permitida es 100.000');
983 return 975 return
984 } else { 976 } else {
985 delete $scope.articuloACargar.sectorCodigo; 977 delete $scope.articuloACargar.sectorCodigo;
986 $scope.remito.articulosRemito.push($scope.articuloACargar); 978 $scope.remito.articulosRemito.push($scope.articuloACargar);
987 $scope.cargando = true; 979 $scope.cargando = true;
988 } 980 }
989 } 981 }
990 }; 982 };
991 983
992 $scope.quitarArticulo = function (articulo) { 984 $scope.quitarArticulo = function (articulo) {
993 articulo.idRemito = -1; 985 articulo.idRemito = -1;
994 }; 986 };
995 987
996 $scope.articulosFiltro = function () { 988 $scope.articulosFiltro = function () {
997 989
998 var result = $scope.remito.articulosRemito.filter(function (articulo) { 990 var result = $scope.remito.articulosRemito.filter(function (articulo) {
999 return articulo.idRemito >= 0; 991 return articulo.idRemito >= 0;
1000 }); 992 });
1001 993
1002 // Agrego checked en cabecera si hay datos 994 // Agrego checked en cabecera si hay datos
1003 if (result.length) { 995 if (result.length) {
1004 $filter('filter')($scope.botonera, { label: 'Productos' })[0].checked = true; 996 $filter('filter')($scope.botonera, { label: 'Productos' })[0].checked = true;
1005 } else { 997 } else {
1006 $filter('filter')($scope.botonera, { label: 'Productos' })[0].checked = false; 998 $filter('filter')($scope.botonera, { label: 'Productos' })[0].checked = false;
1007 } 999 }
1008 return result; 1000 return result;
1009 }; 1001 };
1010 1002
1011 $scope.editarArticulo = function (key, articulo, tmpCantidad, tmpPrecio) { 1003 $scope.editarArticulo = function (key, articulo, tmpCantidad, tmpPrecio) {
1012 if (key === 13) { 1004 if (key === 13) {
1013 if (!articulo.cantidad || !articulo.precio || !tmpCantidad || !tmpPrecio) { 1005 if (!articulo.cantidad || !articulo.precio || !tmpCantidad || !tmpPrecio) {
1014 focaModalService.alert('Debes introducir algún valor'); 1006 focaModalService.alert('Debes introducir algún valor');
1015 return; 1007 return;
1016 } else if (tmpCantidad === '0' || tmpPrecio === '0') { 1008 } else if (tmpCantidad === '0' || tmpPrecio === '0') {
1017 focaModalService.alert('Esta ingresando un producto con valor 0'); 1009 focaModalService.alert('Esta ingresando un producto con valor 0');
1018 return; 1010 return;
1019 } else if (tmpCantidad < 0 || tmpPrecio < 0) { 1011 } else if (tmpCantidad < 0 || tmpPrecio < 0) {
1020 focaModalService.alert('Los valores no pueden ser negativos'); 1012 focaModalService.alert('Los valores no pueden ser negativos');
1021 return; 1013 return;
1022 } else if (!Number.isInteger(+tmpCantidad)) { 1014 } else if (!Number.isInteger(+tmpCantidad)) {
1023 focaModalService.alert('Debes introducir un número entero'); 1015 focaModalService.alert('Debes introducir un número entero');
1024 return; 1016 return;
1025 } else if (tmpCantidad > 100000) { 1017 } else if (tmpCantidad > 100000) {
1026 focaModalService.alert('La cantidad máxima permitida es 100.000'); 1018 focaModalService.alert('La cantidad máxima permitida es 100.000');
1027 return 1019 return
1028 } else { 1020 } else {
1029 articulo.cantidad = tmpCantidad; 1021 articulo.cantidad = tmpCantidad;
1030 articulo.precio = tmpPrecio; 1022 articulo.precio = tmpPrecio;
1031 $scope.getTotal(); 1023 $scope.getTotal();
1032 articulo.editCantidad = articulo.editPrecio = false; 1024 articulo.editCantidad = articulo.editPrecio = false;
1033 } 1025 }
1034 } 1026 }
1035 }; 1027 };
1036 //Si el monto Total es superior a $10.000.000.000,00 desactivo el botón Guardar 1028 //Si el monto Total es superior a $10.000.000.000,00 desactivo el botón Guardar
1037 $scope.comprobarTotal = function(total) { 1029 $scope.comprobarTotal = function(total) {
1038 if (total >= 10000000000) { 1030 if (total >= 10000000000) {
1039 $scope.auxComprobar = true; 1031 $scope.auxComprobar = true;
1040 $( "#guardar" ).prop( "disabled", true ); 1032 $( "#guardar" ).prop( "disabled", true );
1041 } else { 1033 } else {
1042 $scope.auxComprobar = false; 1034 $scope.auxComprobar = false;
1043 $( "#guardar" ).prop( "disabled", false ); 1035 $( "#guardar" ).prop( "disabled", false );
1044 } 1036 }
1045 }; 1037 };
1046 1038
1047 $scope.cancelarEditar = function (articulo) { 1039 $scope.cancelarEditar = function (articulo) {
1048 $scope.tmpCantidad = articulo.cantidad; 1040 $scope.tmpCantidad = articulo.cantidad;
1049 $scope.tmpPrecio = articulo.precio; 1041 $scope.tmpPrecio = articulo.precio;
1050 articulo.editCantidad = articulo.editPrecio = false; 1042 articulo.editCantidad = articulo.editPrecio = false;
1051 }; 1043 };
1052 1044
1053 $scope.cambioEdit = function (articulo, propiedad) { 1045 $scope.cambioEdit = function (articulo, propiedad) {
1054 if (propiedad === 'cantidad') { 1046 if (propiedad === 'cantidad') {
1055 articulo.editCantidad = true; 1047 articulo.editCantidad = true;
1056 } else if (propiedad === 'precio') { 1048 } else if (propiedad === 'precio') {
1057 articulo.editPrecio = true; 1049 articulo.editPrecio = true;
1058 } 1050 }
1059 }; 1051 };
1060 1052
1061 $scope.resetFilter = function () { 1053 $scope.resetFilter = function () {
1062 $scope.articuloACargar = {}; 1054 $scope.articuloACargar = {};
1063 $scope.cargando = true; 1055 $scope.cargando = true;
1064 }; 1056 };
1065 //Recibe aviso si el teclado está en uso 1057 //Recibe aviso si el teclado está en uso
1066 $rootScope.$on('usarTeclado', function (event, data) { 1058 $rootScope.$on('usarTeclado', function (event, data) {
1067 if (data) { 1059 if (data) {
1068 $scope.mostrarTeclado = true; 1060 $scope.mostrarTeclado = true;
1069 return; 1061 return;
1070 } 1062 }
1071 $scope.mostrarTeclado = false; 1063 $scope.mostrarTeclado = false;
1072 }); 1064 });
1073 1065
1074 $scope.selectFocus = function ($event) { 1066 $scope.selectFocus = function ($event) {
1075 // Si el teclado esta en uso no selecciona el valor 1067 // Si el teclado esta en uso no selecciona el valor
1076 if ($scope.mostrarTeclado) { 1068 if ($scope.mostrarTeclado) {
1077 return; 1069 return;
1078 } 1070 }
1079 $event.target.select(); 1071 $event.target.select();
1080 }; 1072 };
1081 1073
1082 function addArrayCabecera(array) { 1074 function addArrayCabecera(array) {
1083 for (var i = 0; i < array.length; i++) { 1075 for (var i = 0; i < array.length; i++) {
1084 $scope.$broadcast('addCabecera', { 1076 $scope.$broadcast('addCabecera', {
1085 label: array[i].label, 1077 label: array[i].label,
1086 valor: array[i].valor 1078 valor: array[i].valor
1087 }); 1079 });
1088 } 1080 }
1089 } 1081 }
1090 1082
1091 function rellenar(relleno, longitud) { 1083 function rellenar(relleno, longitud) {
1092 relleno = '' + relleno; 1084 relleno = '' + relleno;
1093 while (relleno.length < longitud) { 1085 while (relleno.length < longitud) {
1094 relleno = '0' + relleno; 1086 relleno = '0' + relleno;
1095 } 1087 }
1096 return relleno; 1088 return relleno;
1097 } 1089 }
1098 1090
1099 function varlidarRemitoFacturado() { 1091 function varlidarRemitoFacturado() {
1100 if ($scope.remito.estado !== 5) { 1092 if ($scope.remito.estado !== 5) {
1101 return true; 1093 return true;
1102 } else { 1094 } else {
1103 focaModalService.alert('No se puede editar un remito facturado'); 1095 focaModalService.alert('No se puede editar un remito facturado');
1104 return false; 1096 return false;
1105 } 1097 }
1106 } 1098 }
1107 1099
1108 function varlidarRemitoAbierto() { 1100 function varlidarRemitoAbierto() {
1109 if (!$scope.remito.hojaRuta) return true; 1101 if (!$scope.remito.hojaRuta) return true;
1110 if ($scope.remito.hojaRuta.abierta !== '1') { 1102 if ($scope.remito.hojaRuta.abierta !== '1') {
1111 return true; 1103 return true;
1112 } else { 1104 } else {
1113 focaModalService.alert('No se puede editar un remito abierto'); 1105 focaModalService.alert('No se puede editar un remito abierto');
1114 return false; 1106 return false;
1115 } 1107 }
1116 } 1108 }
1117 1109
1118 function removeItemFromArr(arr, item) { 1110 function removeItemFromArr(arr, item) {
1119 var i = arr.indexOf(item); 1111 var i = arr.indexOf(item);
1120 1112
1121 if (i !== -1) { 1113 if (i !== -1) {
1122 arr.splice(i, 1); 1114 arr.splice(i, 1);
1123 } 1115 }
1124 } 1116 }
1125 1117
1126 function salir() { 1118 function salir() {
1127 var confirmacion = false; 1119 var confirmacion = false;
1128 1120
1129 if (!angular.equals($scope.remito, $scope.inicial)) { 1121 if (!angular.equals($scope.remito, $scope.inicial)) {
1130 confirmacion = true; 1122 confirmacion = true;
1131 } 1123 }
1132 1124
1133 if (confirmacion) { 1125 if (confirmacion) {
1134 focaModalService.confirm( 1126 focaModalService.confirm(
1135 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.' 1127 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
1136 ).then(function (data) { 1128 ).then(function (data) {
1137 if (data) { 1129 if (data) {
1138 $location.path('/'); 1130 $location.path('/');
1139 var rutaJson = JSON.parse($localStorage.rutas); 1131 var rutaJson = JSON.parse($localStorage.rutas);
1140 removeItemFromArr(rutaJson, 'venta-remito/crear'); 1132 removeItemFromArr(rutaJson, 'venta-remito/crear');
1141 $localStorage.rutas = JSON.stringify(rutaJson); 1133 $localStorage.rutas = JSON.stringify(rutaJson);
1142 } 1134 }
1143 }); 1135 });
1144 } else { 1136 } else {
1145 $location.path('/'); 1137 $location.path('/');
1146 } 1138 }
1147 } 1139 }
1148 1140
1149 function enableObservaciones(val) { 1141 function enableObservaciones(val) {
1150 var boton = $scope.botonera.filter(function (botonObs) { 1142 var boton = $scope.botonera.filter(function (botonObs) {
1151 return botonObs.label === 'Observaciones'; 1143 return botonObs.label === 'Observaciones';
1152 }); 1144 });
1153 boton[0].disable = !val; 1145 boton[0].disable = !val;
1154 } 1146 }
1155 1147
1156 function setearRemito(remito) { 1148 function setearRemito(remito) {
1157 //añado cabeceras 1149 //añado cabeceras
1158 var esAbierto = remito.hojaRuta ? 1150 var esAbierto = remito.hojaRuta ?
1159 (remito.hojaRuta.abierta === '1') : false; 1151 (remito.hojaRuta.abierta === '1') : false;
1160 if (remito.estado !== 5 && remito.id && !esAbierto) { 1152 if (remito.estado !== 5 && remito.id && !esAbierto) {
1161 1153
1162 $scope.botonera.forEach(function (boton) { 1154 $scope.botonera.forEach(function (boton) {
1163 1155
1164 if (boton.label === 'Eliminar Remito') { 1156 if (boton.label === 'Eliminar Remito') {
1165 boton.disable = false; 1157 boton.disable = false;
1166 } 1158 }
1167 }); 1159 });
1168 } 1160 }
1169 $scope.$broadcast('removeCabecera', 'Moneda:'); 1161 $scope.$broadcast('removeCabecera', 'Moneda:');
1170 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 1162 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
1171 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 1163 $scope.$broadcast('removeCabecera', 'Cotizacion:');
1172 // $scope.$broadcast('removeCabecera', 'Vendedor:'); 1164 // $scope.$broadcast('removeCabecera', 'Vendedor:');
1173 1165
1174 $scope.cabeceras = []; 1166 $scope.cabeceras = [];
1175 1167
1176 if (remito.cotizacion && remito.cotizacion.moneda.CODIGO_AFIP !== 'PES') { 1168 if (remito.cotizacion && remito.cotizacion.moneda.CODIGO_AFIP !== 'PES') {
1177 $scope.cabeceras.push({ 1169 $scope.cabeceras.push({
1178 label: 'Moneda:', 1170 label: 'Moneda:',
1179 valor: remito.cotizacion.moneda.DETALLE 1171 valor: remito.cotizacion.moneda.DETALLE
1180 }); 1172 });
1181 $scope.cabeceras.push({ 1173 $scope.cabeceras.push({
1182 label: 'Fecha cotizacion:', 1174 label: 'Fecha cotizacion:',
1183 valor: $filter('date')(remito.cotizacion.FECHA, 1175 valor: $filter('date')(remito.cotizacion.FECHA,
1184 'dd/MM/yyyy') 1176 'dd/MM/yyyy')
1185 }); 1177 });
1186 $scope.cabeceras.push({ 1178 $scope.cabeceras.push({
1187 label: 'Cotizacion:', 1179 label: 'Cotizacion:',
1188 valor: $filter('number')(remito.cotizacion.VENDEDOR, 1180 valor: $filter('number')(remito.cotizacion.VENDEDOR,
1189 '2') 1181 '2')
1190 }); 1182 });
1191 } 1183 }
1192 1184
1193 if (remito.cotizacion && remito.cotizacion.moneda) { 1185 if (remito.cotizacion && remito.cotizacion.moneda) {
1194 $filter('filter')($scope.botonera, { label: 'Moneda' })[0].checked = true; 1186 $filter('filter')($scope.botonera, { label: 'Moneda' })[0].checked = true;
1195 } 1187 }
1196 1188
1197 if (remito.cliente && remito.cliente.COD) { 1189 if (remito.cliente && remito.cliente.COD) {
1198 $scope.cabeceras.push({ 1190 $scope.cabeceras.push({
1199 label: 'Cliente:', 1191 label: 'Cliente:',
1200 valor: $filter('rellenarDigitos')(remito.cliente.COD, 3) + ' - ' + 1192 valor: $filter('rellenarDigitos')(remito.cliente.COD, 3) + ' - ' +
1201 remito.cliente.NOM 1193 remito.cliente.NOM
1202 }); 1194 });
1203 $scope.cabeceras.push({ 1195 $scope.cabeceras.push({
1204 label: 'Domicilio:', 1196 label: 'Domicilio:',
1205 valor: remito.domicilioStamp 1197 valor: remito.domicilioStamp
1206 }); 1198 });
1207 1199
1208 $filter('filter')($scope.botonera, 1200 $filter('filter')($scope.botonera,
1209 { label: 'Domicilio de Entrega' })[0].checked = true; 1201 { label: 'Domicilio de Entrega' })[0].checked = true;
1210 $filter('filter')($scope.botonera, { label: 'Cliente' })[0].checked = true; 1202 $filter('filter')($scope.botonera, { label: 'Cliente' })[0].checked = true;
1211 } 1203 }
1212 // if (remito.vendedor && remito.vendedor.NUM) { 1204 // if (remito.vendedor && remito.vendedor.NUM) {
1213 // $scope.cabeceras.push({ 1205 // $scope.cabeceras.push({
1214 // label: 'Vendedor:', 1206 // label: 'Vendedor:',
1215 // valor: $filter('rellenarDigitos')(remito.vendedor.NUM, 3) + 1207 // valor: $filter('rellenarDigitos')(remito.vendedor.NUM, 3) +
1216 // ' - ' + remito.vendedor.NOM 1208 // ' - ' + remito.vendedor.NOM
1217 // }); 1209 // });
1218 // } 1210 // }
1219 if (remito.proveedor && remito.proveedor.COD) { 1211 if (remito.proveedor && remito.proveedor.COD) {
1220 $scope.cabeceras.push({ 1212 $scope.cabeceras.push({
1221 label: 'Proveedor:', 1213 label: 'Proveedor:',
1222 valor: $filter('rellenarDigitos')(remito.proveedor.COD, 5) + 1214 valor: $filter('rellenarDigitos')(remito.proveedor.COD, 5) +
1223 ' - ' + remito.proveedor.NOM 1215 ' - ' + remito.proveedor.NOM
1224 }); 1216 });
1225 1217
1226 $filter('filter')($scope.botonera, { label: 'Proveedor' })[0].checked = true; 1218 $filter('filter')($scope.botonera, { label: 'Proveedor' })[0].checked = true;
1227 } 1219 }
1228 if (remito.flete !== undefined && remito.fob !== undefined) { 1220 if (remito.flete !== undefined && remito.fob !== undefined) {
1229 $scope.cabeceras.push({ 1221 $scope.cabeceras.push({
1230 label: 'Flete:', 1222 label: 'Flete:',
1231 valor: remito.fob ? 'FOB' : ( 1223 valor: remito.fob ? 'FOB' : (
1232 remito.flete ? 'Si' : 'No') 1224 remito.flete ? 'Si' : 'No')
1233 }); 1225 });
1234 } 1226 }
1235 if (remito.remitoPlazo) { 1227 if (remito.remitoPlazo) {
1236 valorPrecioCondicion(); 1228 valorPrecioCondicion();
1237 $filter('filter')($scope.botonera, 1229 $filter('filter')($scope.botonera,
1238 { label: 'Precios y condiciones' })[0].checked = true; 1230 { label: 'Precios y condiciones' })[0].checked = true;
1239 } 1231 }
1240 1232
1241 function valorPrecioCondicion() { 1233 function valorPrecioCondicion() {
1242 if (parseInt(remito.idListaPrecio)) { 1234 if (parseInt(remito.idListaPrecio)) {
1243 crearRemitoService.getListaPrecioById(parseInt(remito.idListaPrecio)) 1235 crearRemitoService.getListaPrecioById(parseInt(remito.idListaPrecio))
1244 .then(function (res) { 1236 .then(function (res) {
1245 $timeout(function () { 1237 $timeout(function () {
1246 $scope.cabeceras.push({ 1238 $scope.cabeceras.push({
1247 label: 'Precios y Condiciones:', 1239 label: 'Precios y Condiciones:',
1248 valor: parseInt(res.data[0].ID) + ' - ' + 1240 valor: parseInt(res.data[0].ID) + ' - ' +
1249 res.data[0].DES + ' ' + 1241 res.data[0].DES + ' ' +
1250 remitoBusinessService 1242 remitoBusinessService
1251 .plazoToString(remito.remitoPlazo) 1243 .plazoToString(remito.remitoPlazo)
1252 }); 1244 });
1253 addArrayCabecera($scope.cabeceras); 1245 addArrayCabecera($scope.cabeceras);
1254 }, true); 1246 }, true);
1255 1247
1256 }); 1248 });
1257 $scope.idLista = parseInt(remito.idListaPrecio); 1249 $scope.idLista = parseInt(remito.idListaPrecio);
1258 } 1250 }
1259 } 1251 }
1260 1252
1261 if (remito.flete === 1) { 1253 if (remito.flete === 1) {
1262 var cabeceraBomba = { 1254 var cabeceraBomba = {
1263 label: 'Bomba', 1255 label: 'Bomba',
1264 valor: remito.bomba === 1 ? 'Si' : 'No' 1256 valor: remito.bomba === 1 ? 'Si' : 'No'
1265 }; 1257 };
1266 if (remito.kilometros) { 1258 if (remito.kilometros) {
1267 var cabeceraKilometros = { 1259 var cabeceraKilometros = {
1268 label: 'Kilometros', 1260 label: 'Kilometros',
1269 valor: remito.kilometros 1261 valor: remito.kilometros
1270 }; 1262 };
1271 $scope.cabeceras.push(cabeceraKilometros); 1263 $scope.cabeceras.push(cabeceraKilometros);
1272 } 1264 }
1273 $scope.cabeceras.push(cabeceraBomba); 1265 $scope.cabeceras.push(cabeceraBomba);
1274 } 1266 }
1275 1267
1276 if (remito.idPrecioCondicion > 0) { 1268 if (remito.idPrecioCondicion > 0) {
1277 $scope.idLista = remito.precioCondicion.idListaPrecio; 1269 $scope.idLista = remito.precioCondicion.idListaPrecio;
1278 } else if (remito.idPrecioCondicion) { 1270 } else if (remito.idPrecioCondicion) {
1279 $scope.idLista = -1; 1271 $scope.idLista = -1;
1280 } 1272 }
1281 $scope.puntoVenta = rellenar(remito.sucursal, 4); 1273 $scope.puntoVenta = rellenar(remito.sucursal, 4);
1282 $scope.comprobante = rellenar(remito.numeroRemito, 8); 1274 $scope.comprobante = rellenar(remito.numeroRemito, 8);
1283 $scope.remito = remito; 1275 $scope.remito = remito;
1284 if ($scope.remito.remitoPuntoDescarga.length) { 1276 if ($scope.remito.remitoPuntoDescarga.length) {
1285 var puntoDescarga = []; 1277 var puntoDescarga = [];
1286 1278
1287 $scope.remito.remitoPuntoDescarga.forEach(function (remitoPuntoDescarga) { 1279 $scope.remito.remitoPuntoDescarga.forEach(function (remitoPuntoDescarga) {
1288 puntoDescarga.push(remitoPuntoDescarga.puntoDescarga); 1280 puntoDescarga.push(remitoPuntoDescarga.puntoDescarga);
1289 }); 1281 });
1290 1282
1291 $scope.cabeceras.push({ 1283 $scope.cabeceras.push({
1292 label: 'Puntos de descarga: ', 1284 label: 'Puntos de descarga: ',
1293 valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntoDescarga)) 1285 valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntoDescarga))
1294 }); 1286 });
1295 } 1287 }
1296 $scope.remitoIsDirty = false; 1288 $scope.remitoIsDirty = false;
1297 1289
1298 1290
1299 addArrayCabecera($scope.cabeceras); 1291 addArrayCabecera($scope.cabeceras);
1300 } 1292 }
1301 1293
1302 function getLSRemito() { 1294 function getLSRemito() {
1303 var remito = JSON.parse($localStorage.remito || null); 1295 var remito = JSON.parse($localStorage.remito || null);
1304 if (remito) { 1296 if (remito) {
1305 setearRemito(remito); 1297 setearRemito(remito);
1306 delete $localStorage.remito; 1298 delete $localStorage.remito;
1307 } 1299 }
1308 } 1300 }
1309 1301
1310 function getCabeceraPuntoDescarga(puntosDescarga) { 1302 function getCabeceraPuntoDescarga(puntosDescarga) {
1311 var puntosStamp = ''; 1303 var puntosStamp = '';
1312 puntosDescarga.forEach(function (punto, idx, arr) { 1304 puntosDescarga.forEach(function (punto, idx, arr) {
1313 puntosStamp += punto.descripcion; 1305 puntosStamp += punto.descripcion;
1314 if ((idx + 1) !== arr.length) puntosStamp += ', '; 1306 if ((idx + 1) !== arr.length) puntosStamp += ', ';
1315 }); 1307 });
1316 return puntosStamp; 1308 return puntosStamp;
1317 } 1309 }
1318 1310
1319 function abrirModalMail(id, cliente, numeroRemito) { 1311 function abrirModalMail(id, cliente, numeroRemito) {
1320 focaModalService.mail( 1312 focaModalService.mail(
1321 { 1313 {
1322 titulo: 'Comprobante de remito Nº ' + numeroRemito, 1314 titulo: 'Comprobante de remito Nº ' + numeroRemito,
1323 descarga: { 1315 descarga: {
1324 nombre: numeroRemito + '.pdf', 1316 nombre: numeroRemito + '.pdf',
1325 url: '/remito/comprobante', 1317 url: '/remito/comprobante',
1326 }, 1318 },
1327 descargaSinValorizar: { 1319 descargaSinValorizar: {
1328 nombre: numeroRemito + '.pdf', 1320 nombre: numeroRemito + '.pdf',
1329 url: '/remito/comprobante-sin-valorizar', 1321 url: '/remito/comprobante-sin-valorizar',
1330 }, 1322 },
1331 envio: { 1323 envio: {
1332 mailCliente: cliente.MAIL, 1324 mailCliente: cliente.MAIL,
1333 url: '/remito/mail', 1325 url: '/remito/mail',
1334 }, 1326 },
1335 envioSinValorizar: { 1327 envioSinValorizar: {
1336 mailCliente: cliente.MAIL, 1328 mailCliente: cliente.MAIL,
1337 url: '/remito/mail-sin-valorizar' 1329 url: '/remito/mail-sin-valorizar'
1338 }, 1330 },
1339 options: { 1331 options: {
1340 idRemito: id 1332 idRemito: id
1341 } 1333 }
1342 } 1334 }
1343 ) 1335 )
1344 .then(function (res) { 1336 .then(function (res) {
1345 if (res === false) { 1337 if (res === false) {
1346 abrirModalMail(id); 1338 abrirModalMail(id);
1347 focaModalService.alert('Descarga o envíe su remito ' + 1339 focaModalService.alert('Descarga o envíe su remito ' +
1348 'antes de cerrar esta ventana'); 1340 'antes de cerrar esta ventana');
1349 } 1341 }
1350 }); 1342 });
1351 } 1343 }
1352 //recibo la propiedad por la cual quiero obtener el valor 1344 //recibo la propiedad por la cual quiero obtener el valor
1353 function getImporte(propiedad) { 1345 function getImporte(propiedad) {
1354 var importe = 0; 1346 var importe = 0;
1355 1347
1356 $scope.articulosFiltro().forEach(function (articulo) { 1348 $scope.articulosFiltro().forEach(function (articulo) {
1357 1349
1358 if (articulo[propiedad]) { 1350 if (articulo[propiedad]) {
1359 importe += articulo[propiedad] * articulo.cantidad; 1351 importe += articulo[propiedad] * articulo.cantidad;
1360 } 1352 }
1361 return; 1353 return;
1362 1354
1363 }); 1355 });
1364 1356
1365 return importe; 1357 return importe;
1366 } 1358 }
1367 } 1359 }
1368 ]); 1360 ]);
1369 1361