Compare View

switch
from
...
to
 
Commits (14)
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 });
678 $scope.remito.cliente = cliente; 679 };
679 $scope.$broadcast('addCabecera', { 680
680 label: 'Cliente:', 681 $scope.getTotal = function () {
681 valor: $filter('rellenarDigitos')(cliente.COD, 5) + 682 var total = 0;
682 ' - ' + cliente.NOM 683 var arrayTempArticulos = $scope.articulosFiltro();
683 }); 684 for (var i = 0; i < arrayTempArticulos.length; i++) {
684 $filter('filter')($scope.botonera, 685 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
685 { label: 'Cliente' })[0].checked = true; 686 }
686 }); 687 $scope.comprobarTotal(parseFloat(total.toFixed(2)));
687 }; 688 return parseFloat(total.toFixed(2));
688 689 };
689 $scope.getTotal = function () { 690
690 var total = 0; 691 $scope.getSubTotal = function () {
691 var arrayTempArticulos = $scope.articulosFiltro(); 692 if ($scope.articuloACargar) {
692 for (var i = 0; i < arrayTempArticulos.length; i++) { 693 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
693 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 694 }
694 } 695 };
695 $scope.comprobarTotal(parseFloat(total.toFixed(2))); 696
696 return parseFloat(total.toFixed(2)); 697 $scope.seleccionarPreciosYCondiciones = function () {
697 }; 698 if (!$scope.remito.cliente.COD) {
698 699 focaModalService.alert('Primero seleccione un cliente');
699 $scope.getSubTotal = function () { 700 return;
700 if ($scope.articuloACargar) { 701 }
701 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 702 if ($scope.remito.articulosRemito.length !== 0) {
702 } 703 if (varlidarRemitoFacturado() && varlidarRemitoAbierto()) {
703 }; 704 abrirModal();
704 705 }
705 $scope.seleccionarPreciosYCondiciones = function () { 706 } else {
706 if (!$scope.remito.cliente.COD) { 707 abrirModal();
707 focaModalService.alert('Primero seleccione un cliente'); 708 }
708 return; 709
709 } 710 function abrirModal() {
710 if ($scope.remito.articulosRemito.length !== 0) { 711 var parametros = {
711 if (varlidarRemitoFacturado() && varlidarRemitoAbierto()) { 712 idCliente: $scope.remito.cliente.COD,
712 abrirModal(); 713 idListaPrecio: $scope.remito.cliente.MOD
713 } 714 };
714 } else { 715 var modalInstance = $uibModal.open(
715 abrirModal(); 716 {
716 } 717 ariaLabelledBy: 'Busqueda de Precio Condición',
717 718 templateUrl: 'modal-precio-condicion.html',
718 function abrirModal() { 719 controller: 'focaModalPrecioCondicionController',
719 var parametros = { 720 size: 'lg',
720 idCliente: $scope.remito.cliente.COD, 721 resolve: {
721 idListaPrecio: $scope.remito.cliente.MOD 722 parametros: function () { return parametros; }
722 }; 723 }
723 var modalInstance = $uibModal.open( 724 }
724 { 725 );
725 ariaLabelledBy: 'Busqueda de Precio Condición', 726 modalInstance.result.then(
726 templateUrl: 'modal-precio-condicion.html', 727 function (precioCondicion) {
727 controller: 'focaModalPrecioCondicionController', 728 var cabecera = '';
728 size: 'lg', 729 var plazosConcat = '';
729 resolve: { 730 if (!Array.isArray(precioCondicion)) {
730 parametros: function () { return parametros; } 731 $scope.remito.idPrecioCondicion = precioCondicion.listaPrecio.ID;
731 } 732 $scope.remito.remitoPlazo = precioCondicion.plazoPago;
732 } 733 $scope.idLista = parseInt(precioCondicion.listaPrecio.ID) ?
733 ); 734 parseInt(precioCondicion.listaPrecio.ID) : -1;
734 modalInstance.result.then( 735 $scope.remito.cliente.MOD = precioCondicion.listaPrecio.ID;
735 function (precioCondicion) { 736 for (var i = 0; i < precioCondicion.plazoPago.length; i++) {
736 var cabecera = ''; 737 plazosConcat += precioCondicion.plazoPago[i].dias + ', ';
737 var plazosConcat = ''; 738 }
738 if (!Array.isArray(precioCondicion)) { 739 plazosConcat = plazosConcat.substring(0, plazosConcat.length - 2);
739 $scope.remito.idPrecioCondicion = precioCondicion.listaPrecio.ID; 740 cabecera = $filter('rellenarDigitos')
740 $scope.remito.remitoPlazo = precioCondicion.plazoPago; 741 (parseInt(precioCondicion.listaPrecio.ID), 4) +
741 $scope.idLista = parseInt(precioCondicion.listaPrecio.ID) ? 742 ' - ' + precioCondicion.listaPrecio.DES + ' ' +
742 parseInt(precioCondicion.listaPrecio.ID) : -1; 743 plazosConcat.trim();
743 $scope.remito.cliente.MOD = precioCondicion.listaPrecio.ID; 744 } else { //Cuando se ingresan los plazos manualmente
744 for (var i = 0; i < precioCondicion.plazoPago.length; i++) { 745 $scope.remito.idPrecioCondicion = 0;
745 plazosConcat += precioCondicion.plazoPago[i].dias + ', '; 746 //-1, el modal productos busca todos los productos
746 } 747 $scope.idLista = -1;
747 plazosConcat = plazosConcat.substring(0, plazosConcat.length - 2); 748 $scope.remito.remitoPlazo = precioCondicion;
748 cabecera = $filter('rellenarDigitos') 749 for (var j = 0; j < precioCondicion.length; j++) {
749 (parseInt(precioCondicion.listaPrecio.ID), 4) + 750 plazosConcat += precioCondicion[j].dias + ' ';
750 ' - ' + precioCondicion.listaPrecio.DES + ' ' + 751 }
751 plazosConcat.trim(); 752 cabecera = plazosConcat.trim();
752 } else { //Cuando se ingresan los plazos manualmente 753 }
753 $scope.remito.idPrecioCondicion = 0; 754 var cabecerasFilter = !$filter('filter')($scope.cabeceras,
754 //-1, el modal productos busca todos los productos 755 { label: 'Precios y Condiciones' });
755 $scope.idLista = -1; 756 if (!cabecerasFilter) {
756 $scope.remito.remitoPlazo = precioCondicion; 757 $scope.cabeceras.push({
757 for (var j = 0; j < precioCondicion.length; j++) { 758 label: 'Precios y Condiciones:',
758 plazosConcat += precioCondicion[j].dias + ' '; 759 valor: parseInt(precioCondicion.listaPrecio.ID) + ' - ' +
759 } 760 precioCondicion.listaPrecio.DES + ' ' +
760 cabecera = plazosConcat.trim(); 761 remitoBusinessService
761 } 762 .plazoToString(precioCondicion.plazoPago)
762 var cabecerasFilter = !$filter('filter')($scope.cabeceras, 763 });
763 { label: 'Precios y Condiciones' }); 764
764 if (!cabecerasFilter) { 765 $scope.remito.idListaPrecio = parseInt(
765 $scope.cabeceras.push({ 766 precioCondicion.listaPrecio.ID);
766 label: 'Precios y Condiciones:', 767 }
767 valor: parseInt(precioCondicion.listaPrecio.ID) + ' - ' + 768 $filter('filter')($scope.cabeceras,
768 precioCondicion.listaPrecio.DES + ' ' + 769 { label: 'Precios y Condiciones' })[0].valor = cabecera;
769 remitoBusinessService 770
770 .plazoToString(precioCondicion.plazoPago) 771 $scope.remito.precioCondicion = precioCondicion;
771 }); 772 $filter('filter')($scope.botonera,
772 773 { label: 'Precios y Condiciones' })[0].checked = true;
773 $scope.remito.idListaPrecio = parseInt( 774 addArrayCabecera($scope.cabeceras);
774 precioCondicion.listaPrecio.ID); 775 }, function () {
775 } 776
776 $filter('filter')($scope.cabeceras, 777 }
777 { label: 'Precios y Condiciones' })[0].valor = cabecera; 778 );
778 779 }
779 $scope.remito.precioCondicion = precioCondicion; 780 };
780 $filter('filter')($scope.botonera, 781
781 { label: 'Precios y Condiciones' })[0].checked = true; 782 $scope.seleccionarFlete = function (proveedor) {
782 addArrayCabecera($scope.cabeceras); 783 if (!varlidarRemitoFacturado()) return;
783 }, function () { 784 if (!varlidarRemitoAbierto()) return;
784 785 var modalInstance = $uibModal.open(
785 } 786 {
786 ); 787 ariaLabelledBy: 'Busqueda de Flete',
787 } 788 templateUrl: 'modal-flete.html',
788 }; 789 controller: 'focaModalFleteController',
789 790 size: 'lg',
790 $scope.seleccionarFlete = function (proveedor) { 791 resolve: {
791 if (!varlidarRemitoFacturado()) return; 792 parametrosFlete:
792 if (!varlidarRemitoAbierto()) return; 793 function () {
793 var modalInstance = $uibModal.open( 794 return {
794 { 795 flete: $scope.remito.flete ? '1' :
795 ariaLabelledBy: 'Busqueda de Flete', 796 ($scope.remito.fob ? 'FOB' :
796 templateUrl: 'modal-flete.html', 797 ($scope.remito.flete === undefined ?
797 controller: 'focaModalFleteController', 798 null : '0')),
798 size: 'lg', 799 bomba: $scope.remito.bomba ? '1' :
799 resolve: { 800 ($scope.remito.bomba === undefined ?
800 parametrosFlete: 801 null : '0'),
801 function () { 802 kilometros: $scope.remito.kilometros
802 return { 803 };
803 flete: $scope.remito.flete ? '1' : 804 }
804 ($scope.remito.fob ? 'FOB' : 805 }
805 ($scope.remito.flete === undefined ? 806 }
806 null : '0')), 807 );
807 bomba: $scope.remito.bomba ? '1' : 808 modalInstance.result.then(
808 ($scope.remito.bomba === undefined ? 809 function (datos) {
809 null : '0'), 810 $scope.remitoIsDirty = true;
810 kilometros: $scope.remito.kilometros 811 $scope.remito.proveedor = proveedor;
811 }; 812 $scope.remito.idProveedor = proveedor.COD;
812 } 813 $scope.$broadcast('addCabecera', {
813 } 814 label: 'Proveedor:',
814 } 815 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' +
815 ); 816 proveedor.NOM
816 modalInstance.result.then( 817 });
817 function (datos) { 818
818 $scope.remitoIsDirty = true; 819 $scope.remito.flete = datos.flete;
819 $scope.remito.proveedor = proveedor; 820 $scope.remito.fob = datos.FOB;
820 $scope.remito.idProveedor = proveedor.COD; 821 $scope.remito.bomba = datos.bomba;
821 $scope.$broadcast('addCabecera', { 822 $scope.remito.kilometros = datos.kilometros;
822 label: 'Proveedor:', 823
823 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' + 824 $scope.$broadcast('addCabecera', {
824 proveedor.NOM 825 label: 'Flete:',
825 }); 826 valor: datos.flete ? 'Si' : ($scope.remito.fob ? 'FOB' : 'No')
826 827 });
827 $scope.remito.flete = datos.flete; 828 if (datos.flete) {
828 $scope.remito.fob = datos.FOB; 829 $scope.$broadcast('addCabecera', {
829 $scope.remito.bomba = datos.bomba; 830 label: 'Bomba:',
830 $scope.remito.kilometros = datos.kilometros; 831 valor: datos.bomba ? 'Si' : 'No'
831 832 });
832 $scope.$broadcast('addCabecera', { 833 $scope.$broadcast('addCabecera', {
833 label: 'Flete:', 834 label: 'Kilometros:',
834 valor: datos.flete ? 'Si' : ($scope.remito.fob ? 'FOB' : 'No') 835 valor: datos.kilometros
835 }); 836 });
836 if (datos.flete) { 837 } else {
837 $scope.$broadcast('addCabecera', { 838 $scope.$broadcast('removeCabecera', 'Bomba:');
838 label: 'Bomba:', 839 $scope.$broadcast('removeCabecera', 'Kilometros:');
839 valor: datos.bomba ? 'Si' : 'No' 840 $scope.remito.bomba = false;
840 }); 841 $scope.remito.kilometros = null;
841 $scope.$broadcast('addCabecera', { 842 }
842 label: 'Kilometros:', 843
843 valor: datos.kilometros 844 $filter('filter')($scope.botonera,
844 }); 845 { label: 'Proveedor' })[0].checked = true;
845 } else { 846 }, function () {
846 $scope.$broadcast('removeCabecera', 'Bomba:'); 847 $scope.seleccionarTransportista();
847 $scope.$broadcast('removeCabecera', 'Kilometros:'); 848 }
848 $scope.remito.bomba = false; 849 );
849 $scope.remito.kilometros = null; 850 };
850 } 851
851 852 $scope.seleccionarMoneda = function () {
852 $filter('filter')($scope.botonera, 853 if (!varlidarRemitoFacturado()) return;
853 { label: 'Proveedor' })[0].checked = true; 854 if (!varlidarRemitoAbierto()) return;
854 }, function () { 855 var parametrosModal = {
855 $scope.seleccionarTransportista(); 856 titulo: 'Búsqueda de monedas',
856 } 857 query: '/moneda',
857 ); 858 columnas: [
858 }; 859 {
859 860 propiedad: 'DETALLE',
860 $scope.seleccionarMoneda = function () { 861 nombre: 'Nombre'
861 if (!varlidarRemitoFacturado()) return; 862 },
862 if (!varlidarRemitoAbierto()) return; 863 {
863 var parametrosModal = { 864 propiedad: 'SIMBOLO',
864 titulo: 'Búsqueda de monedas', 865 nombre: 'Símbolo'
865 query: '/moneda', 866 }
866 columnas: [ 867 ],
867 { 868 size: 'md'
868 propiedad: 'DETALLE', 869 };
869 nombre: 'Nombre' 870 focaModalService.modal(parametrosModal).then(
870 }, 871 function (moneda) {
871 { 872
872 propiedad: 'SIMBOLO', 873 if (moneda.ID !== 1) {
873 nombre: 'Símbolo' 874 $scope.abrirModalCotizacion(moneda);
874 } 875 return;
875 ], 876 }
876 size: 'md' 877
877 }; 878 crearRemitoService.getCotizacionByIdMoneda(1)
878 focaModalService.modal(parametrosModal).then( 879 .then(function (res) {
879 function (moneda) { 880
880 881 cotizacionPArgentino = res.data[0].cotizaciones[0];
881 if (moneda.ID !== 1) { 882 cotizacionPArgentino.moneda = moneda;
882 $scope.abrirModalCotizacion(moneda); 883
883 return; 884 actualizarCabeceraMoneda(cotizacionPArgentino);
884 } 885 $filter('filter')($scope.botonera,
885 886 { label: 'Moneda' })[0].checked = true;
886 crearRemitoService.getCotizacionByIdMoneda(1) 887 $scope.remito.cotizacion = cotizacionPArgentino;
887 .then(function (res) { 888 });
888 889 }, function () {
889 cotizacionPArgentino = res.data[0].cotizaciones[0]; 890
890 cotizacionPArgentino.moneda = moneda; 891 }
891 892 );
892 actualizarCabeceraMoneda(cotizacionPArgentino); 893 };
893 $filter('filter')($scope.botonera, 894
894 { label: 'Moneda' })[0].checked = true; 895 $scope.seleccionarObservaciones = function () {
895 $scope.remito.cotizacion = cotizacionPArgentino; 896 focaModalService
896 }); 897 .prompt({
897 }, function () { 898 titulo: 'Observaciones',
898 899 value: $scope.remito.observaciones,
899 } 900 textarea: true,
900 ); 901 readonly: false
901 }; 902 })
902 903 .then(function (observaciones) {
903 $scope.seleccionarObservaciones = function () { 904 $scope.remito.observaciones = observaciones;
904 focaModalService 905 });
905 .prompt({ 906 };
906 titulo: 'Observaciones', 907
907 value: $scope.remito.observaciones, 908 $scope.abrirModalCotizacion = function (moneda) {
908 textarea: true, 909 var modalInstance = $uibModal.open(
909 readonly: false 910 {
910 }) 911 ariaLabelledBy: 'Busqueda de Cotización',
911 .then(function (observaciones) { 912 templateUrl: 'modal-cotizacion.html',
912 $scope.remito.observaciones = observaciones; 913 controller: 'focaModalCotizacionController',
913 }); 914 size: 'lg',
914 }; 915 resolve: { idMoneda: function () { return moneda.ID; } }
915 916 }
916 $scope.abrirModalCotizacion = function (moneda) { 917 );
917 var modalInstance = $uibModal.open( 918 modalInstance.result.then(
918 { 919 function (cotizacion) {
919 ariaLabelledBy: 'Busqueda de Cotización', 920 cotizacion.moneda = moneda;
920 templateUrl: 'modal-cotizacion.html', 921 $scope.remitoIsDirty = true;
921 controller: 'focaModalCotizacionController', 922 actualizarCabeceraMoneda(cotizacion);
922 size: 'lg', 923 $filter('filter')($scope.botonera,
923 resolve: { idMoneda: function () { return moneda.ID; } } 924 { label: 'Moneda' })[0].checked = true;
924 } 925 $scope.remito.cotizacion = cotizacion;
925 ); 926 }, function () {
926 modalInstance.result.then( 927
927 function (cotizacion) { 928 }
928 cotizacion.moneda = moneda; 929 );
929 $scope.remitoIsDirty = true; 930 };
930 actualizarCabeceraMoneda(cotizacion); 931
931 $filter('filter')($scope.botonera, 932 function actualizarCabeceraMoneda(cotizacion) {
932 { label: 'Moneda' })[0].checked = true; 933
933 $scope.remito.cotizacion = cotizacion; 934 $scope.remito.articulosRemito.forEach(function (art) {
934 }, function () { 935 art.precio = (art.precio * $scope.remito.cotizacion.VENDEDOR).toFixed(4);
935 936 art.precio = (art.precio / cotizacion.VENDEDOR).toFixed(4);
936 } 937 });
937 ); 938
938 }; 939 if (cotizacion.moneda.DETALLE === 'PESOS ARGENTINOS') {
939 940 $scope.$broadcast('removeCabecera', 'Moneda:');
940 function actualizarCabeceraMoneda(cotizacion) { 941 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
941 942 $scope.$broadcast('removeCabecera', 'Cotizacion:');
942 $scope.remito.articulosRemito.forEach(function (art) { 943 } else {
943 art.precio = (art.precio * $scope.remito.cotizacion.VENDEDOR).toFixed(4); 944 $scope.$broadcast('addCabecera', {
944 art.precio = (art.precio / cotizacion.VENDEDOR).toFixed(4); 945 label: 'Moneda:',
945 }); 946 valor: cotizacion.moneda.DETALLE
946 947 });
947 if (cotizacion.moneda.DETALLE === 'PESOS ARGENTINOS') { 948 $scope.$broadcast('addCabecera', {
948 $scope.$broadcast('removeCabecera', 'Moneda:'); 949 label: 'Fecha cotizacion:',
949 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 950 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy')
950 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 951 });
951 } else { 952 $scope.$broadcast('addCabecera', {
952 $scope.$broadcast('addCabecera', { 953 label: 'Cotizacion:',
953 label: 'Moneda:', 954 valor: $filter('number')(cotizacion.VENDEDOR, '2')
954 valor: cotizacion.moneda.DETALLE 955 });
955 }); 956 }
956 $scope.$broadcast('addCabecera', { 957 }
957 label: 'Fecha cotizacion:', 958
958 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy') 959 $scope.agregarATabla = function (key) {
959 }); 960 if (key === 13) {
960 $scope.$broadcast('addCabecera', { 961 if (!$scope.articuloACargar.cantidad || !$scope.articuloACargar.precio) {
961 label: 'Cotizacion:', 962 focaModalService.alert('Debes introducir algún valor');
962 valor: $filter('number')(cotizacion.VENDEDOR, '2') 963 return;
963 }); 964 } else if ($scope.articuloACargar.cantidad === '0' || $scope.articuloACargar.precio === '0') {
964 } 965 focaModalService.alert('Esta ingresando un producto con valor 0');
965 } 966 return;
966 967 } else if ($scope.articuloACargar.cantidad < 0 || $scope.articuloACargar.precio < 0) {
967 $scope.agregarATabla = function (key) { 968 focaModalService.alert('Los valores no pueden ser negativos');
968 if (key === 13) { 969 return;
969 if (!$scope.articuloACargar.cantidad || !$scope.articuloACargar.precio) { 970 } else if (!Number.isInteger(+$scope.articuloACargar.cantidad)) {
970 focaModalService.alert('Debes introducir algún valor'); 971 focaModalService.alert('La cantidad debe ser un número entero');
971 return; 972 return;
972 } else if ($scope.articuloACargar.cantidad === '0' || $scope.articuloACargar.precio === '0') { 973 } else if ($scope.articuloACargar.cantidad > 100000) {
973 focaModalService.alert('Esta ingresando un producto con valor 0'); 974 focaModalService.alert('La cantidad máxima permitida es 100.000');
974 return; 975 return
975 } else if ($scope.articuloACargar.cantidad < 0 || $scope.articuloACargar.precio < 0) { 976 } else {
976 focaModalService.alert('Los valores no pueden ser negativos'); 977 delete $scope.articuloACargar.sectorCodigo;
977 return; 978 $scope.remito.articulosRemito.push($scope.articuloACargar);
978 } else if (!Number.isInteger(+$scope.articuloACargar.cantidad)) { 979 $scope.cargando = true;
979 focaModalService.alert('La cantidad debe ser un número entero'); 980 }
980 return; 981 }
981 } else if ($scope.articuloACargar.cantidad > 100000) { 982 };
982 focaModalService.alert('La cantidad máxima permitida es 100.000'); 983
983 return 984 $scope.quitarArticulo = function (articulo) {
984 } else { 985 articulo.idRemito = -1;
985 delete $scope.articuloACargar.sectorCodigo; 986 };
986 $scope.remito.articulosRemito.push($scope.articuloACargar); 987
987 $scope.cargando = true; 988 $scope.articulosFiltro = function () {
988 } 989
989 } 990 var result = $scope.remito.articulosRemito.filter(function (articulo) {
990 }; 991 return articulo.idRemito >= 0;
991 992 });
992 $scope.quitarArticulo = function (articulo) { 993
993 articulo.idRemito = -1; 994 // Agrego checked en cabecera si hay datos
994 }; 995 if (result.length) {
995 996 $filter('filter')($scope.botonera, { label: 'Productos' })[0].checked = true;
996 $scope.articulosFiltro = function () { 997 } else {
997 998 $filter('filter')($scope.botonera, { label: 'Productos' })[0].checked = false;
998 var result = $scope.remito.articulosRemito.filter(function (articulo) { 999 }
999 return articulo.idRemito >= 0; 1000 return result;
1000 }); 1001 };
1001 1002
1002 // Agrego checked en cabecera si hay datos 1003 $scope.editarArticulo = function (key, articulo, tmpCantidad, tmpPrecio) {
1003 if (result.length) { 1004 if (key === 13) {
1004 $filter('filter')($scope.botonera, { label: 'Productos' })[0].checked = true; 1005 if (!articulo.cantidad || !articulo.precio || !tmpCantidad || !tmpPrecio) {
1005 } else { 1006 focaModalService.alert('Debes introducir algún valor');
1006 $filter('filter')($scope.botonera, { label: 'Productos' })[0].checked = false; 1007 return;
1007 } 1008 } else if (tmpCantidad === '0' || tmpPrecio === '0') {
1008 return result; 1009 focaModalService.alert('Esta ingresando un producto con valor 0');
1009 }; 1010 return;
1010 1011 } else if (tmpCantidad < 0 || tmpPrecio < 0) {
1011 $scope.editarArticulo = function (key, articulo, tmpCantidad, tmpPrecio) { 1012 focaModalService.alert('Los valores no pueden ser negativos');
1012 if (key === 13) { 1013 return;
1013 if (!articulo.cantidad || !articulo.precio || !tmpCantidad || !tmpPrecio) { 1014 } else if (!Number.isInteger(+tmpCantidad)) {
1014 focaModalService.alert('Debes introducir algún valor'); 1015 focaModalService.alert('Debes introducir un número entero');
1015 return; 1016 return;
1016 } else if (tmpCantidad === '0' || tmpPrecio === '0') { 1017 } else if (tmpCantidad > 100000) {
1017 focaModalService.alert('Esta ingresando un producto con valor 0'); 1018 focaModalService.alert('La cantidad máxima permitida es 100.000');
1018 return; 1019 return
1019 } else if (tmpCantidad < 0 || tmpPrecio < 0) { 1020 } else {
1020 focaModalService.alert('Los valores no pueden ser negativos'); 1021 articulo.cantidad = tmpCantidad;
1021 return; 1022 articulo.precio = tmpPrecio;
1022 } else if (!Number.isInteger(+tmpCantidad)) { 1023 $scope.getTotal();
1023 focaModalService.alert('Debes introducir un número entero'); 1024 articulo.editCantidad = articulo.editPrecio = false;
1024 return; 1025 }
1025 } else if (tmpCantidad > 100000) { 1026 }
1026 focaModalService.alert('La cantidad máxima permitida es 100.000'); 1027 };
1027 return 1028 //Si el monto Total es superior a $10.000.000.000,00 desactivo el botón Guardar
1028 } else { 1029 $scope.comprobarTotal = function(total) {
1029 articulo.cantidad = tmpCantidad; 1030 if (total >= 10000000000) {
1030 articulo.precio = tmpPrecio; 1031 $scope.auxComprobar = true;
1031 $scope.getTotal(); 1032 $( "#guardar" ).prop( "disabled", true );
1032 articulo.editCantidad = articulo.editPrecio = false; 1033 } else {
1033 } 1034 $scope.auxComprobar = false;
1034 } 1035 $( "#guardar" ).prop( "disabled", false );
1035 }; 1036 }
1036 //Si el monto Total es superior a $10.000.000.000,00 desactivo el botón Guardar 1037 };
1037 $scope.comprobarTotal = function(total) { 1038
1038 if (total >= 10000000000) { 1039 $scope.cancelarEditar = function (articulo) {
1039 $scope.auxComprobar = true; 1040 $scope.tmpCantidad = articulo.cantidad;
1040 $( "#guardar" ).prop( "disabled", true ); 1041 $scope.tmpPrecio = articulo.precio;
1041 } else { 1042 articulo.editCantidad = articulo.editPrecio = false;
1042 $scope.auxComprobar = false; 1043 };
1043 $( "#guardar" ).prop( "disabled", false ); 1044
1044 } 1045 $scope.cambioEdit = function (articulo, propiedad) {
1045 }; 1046 if (propiedad === 'cantidad') {
1046 1047 articulo.editCantidad = true;
1047 $scope.cancelarEditar = function (articulo) { 1048 } else if (propiedad === 'precio') {
1048 $scope.tmpCantidad = articulo.cantidad; 1049 articulo.editPrecio = true;
1049 $scope.tmpPrecio = articulo.precio; 1050 }
1050 articulo.editCantidad = articulo.editPrecio = false; 1051 };
1051 }; 1052
1052 1053 $scope.resetFilter = function () {
1053 $scope.cambioEdit = function (articulo, propiedad) { 1054 $scope.articuloACargar = {};
1054 if (propiedad === 'cantidad') { 1055 $scope.cargando = true;
1055 articulo.editCantidad = true; 1056 };
1056 } else if (propiedad === 'precio') { 1057 //Recibe aviso si el teclado está en uso
1057 articulo.editPrecio = true; 1058 $rootScope.$on('usarTeclado', function (event, data) {
1058 } 1059 if (data) {
1059 }; 1060 $scope.mostrarTeclado = true;
1060 1061 return;
1061 $scope.resetFilter = function () { 1062 }
1062 $scope.articuloACargar = {}; 1063 $scope.mostrarTeclado = false;
1063 $scope.cargando = true; 1064 });
1064 }; 1065
1065 //Recibe aviso si el teclado está en uso 1066 $scope.selectFocus = function ($event) {
1066 $rootScope.$on('usarTeclado', function (event, data) { 1067 // Si el teclado esta en uso no selecciona el valor
1067 if (data) { 1068 if ($scope.mostrarTeclado) {
1068 $scope.mostrarTeclado = true; 1069 return;
1069 return; 1070 }
1070 } 1071 $event.target.select();
1071 $scope.mostrarTeclado = false; 1072 };
1072 }); 1073
1073 1074 function addArrayCabecera(array) {
1074 $scope.selectFocus = function ($event) { 1075 for (var i = 0; i < array.length; i++) {
1075 // Si el teclado esta en uso no selecciona el valor 1076 $scope.$broadcast('addCabecera', {
1076 if ($scope.mostrarTeclado) { 1077 label: array[i].label,
1077 return; 1078 valor: array[i].valor
1078 } 1079 });
1079 $event.target.select(); 1080 }
1080 }; 1081 }
1081 1082
1082 function addArrayCabecera(array) { 1083 function rellenar(relleno, longitud) {
1083 for (var i = 0; i < array.length; i++) { 1084 relleno = '' + relleno;
1084 $scope.$broadcast('addCabecera', { 1085 while (relleno.length < longitud) {
1085 label: array[i].label, 1086 relleno = '0' + relleno;
1086 valor: array[i].valor 1087 }
1087 }); 1088 return relleno;
1088 } 1089 }
1089 } 1090
1090 1091 function varlidarRemitoFacturado() {
1091 function rellenar(relleno, longitud) { 1092 if ($scope.remito.estado !== 5) {
1092 relleno = '' + relleno; 1093 return true;
1093 while (relleno.length < longitud) { 1094 } else {
1094 relleno = '0' + relleno; 1095 focaModalService.alert('No se puede editar un remito facturado');
1095 } 1096 return false;
1096 return relleno; 1097 }
1097 } 1098 }
1098 1099
1099 function varlidarRemitoFacturado() { 1100 function varlidarRemitoAbierto() {
1100 if ($scope.remito.estado !== 5) { 1101 if (!$scope.remito.hojaRuta) return true;
1101 return true; 1102 if ($scope.remito.hojaRuta.abierta !== '1') {
1102 } else { 1103 return true;
1103 focaModalService.alert('No se puede editar un remito facturado'); 1104 } else {
1104 return false; 1105 focaModalService.alert('No se puede editar un remito abierto');
1105 } 1106 return false;
1106 } 1107 }
1107 1108 }
1108 function varlidarRemitoAbierto() { 1109
1109 if (!$scope.remito.hojaRuta) return true; 1110 function removeItemFromArr(arr, item) {
1110 if ($scope.remito.hojaRuta.abierta !== '1') { 1111 var i = arr.indexOf(item);
1111 return true; 1112
1112 } else { 1113 if (i !== -1) {
1113 focaModalService.alert('No se puede editar un remito abierto'); 1114 arr.splice(i, 1);
1114 return false; 1115 }
1115 } 1116 }
1116 } 1117
1117 1118 function salir() {
1118 function removeItemFromArr(arr, item) { 1119 var confirmacion = false;
1119 var i = arr.indexOf(item); 1120
1120 1121 if (!angular.equals($scope.remito, $scope.inicial)) {
1121 if (i !== -1) { 1122 confirmacion = true;
1122 arr.splice(i, 1); 1123 }
1123 } 1124
1124 } 1125 if (confirmacion) {
1125 1126 focaModalService.confirm(
1126 function salir() { 1127 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
1127 var confirmacion = false; 1128 ).then(function (data) {
1128 1129 if (data) {
1129 if (!angular.equals($scope.remito, $scope.inicial)) { 1130 $location.path('/');
1130 confirmacion = true; 1131 var rutaJson = JSON.parse($localStorage.rutas);
1131 } 1132 removeItemFromArr(rutaJson, 'venta-remito/crear');
1132 1133 $localStorage.rutas = JSON.stringify(rutaJson);
1133 if (confirmacion) { 1134 }
1134 focaModalService.confirm( 1135 });
1135 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.' 1136 } else {
1136 ).then(function (data) { 1137 $location.path('/');
1137 if (data) { 1138 }
1138 $location.path('/'); 1139 }
1139 var rutaJson = JSON.parse($localStorage.rutas); 1140
1140 removeItemFromArr(rutaJson, 'venta-remito/crear'); 1141 function enableObservaciones(val) {
1141 $localStorage.rutas = JSON.stringify(rutaJson); 1142 var boton = $scope.botonera.filter(function (botonObs) {
1142 } 1143 return botonObs.label === 'Observaciones';
1143 }); 1144 });
1144 } else { 1145 boton[0].disable = !val;
1145 $location.path('/'); 1146 }
1146 } 1147
1147 } 1148 function setearRemito(remito) {
1148 1149 //añado cabeceras
1149 function enableObservaciones(val) { 1150 var esAbierto = remito.hojaRuta ?
1150 var boton = $scope.botonera.filter(function (botonObs) { 1151 (remito.hojaRuta.abierta === '1') : false;
1151 return botonObs.label === 'Observaciones'; 1152 if (remito.estado !== 5 && remito.id && !esAbierto) {
1152 }); 1153
1153 boton[0].disable = !val; 1154 $scope.botonera.forEach(function (boton) {
1154 } 1155
1155 1156 if (boton.label === 'Eliminar Remito') {
1156 function setearRemito(remito) { 1157 boton.disable = false;
1157 //añado cabeceras 1158 }
1158 var esAbierto = remito.hojaRuta ? 1159 });
1159 (remito.hojaRuta.abierta === '1') : false; 1160 }
1160 if (remito.estado !== 5 && remito.id && !esAbierto) { 1161 $scope.$broadcast('removeCabecera', 'Moneda:');
1161 1162 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
1162 $scope.botonera.forEach(function (boton) { 1163 $scope.$broadcast('removeCabecera', 'Cotizacion:');
1163 1164 // $scope.$broadcast('removeCabecera', 'Vendedor:');
1164 if (boton.label === 'Eliminar Remito') { 1165
1165 boton.disable = false; 1166 $scope.cabeceras = [];
1166 } 1167
1167 }); 1168 if (remito.cotizacion && remito.cotizacion.moneda.CODIGO_AFIP !== 'PES') {
1168 } 1169 $scope.cabeceras.push({
1169 $scope.$broadcast('removeCabecera', 'Moneda:'); 1170 label: 'Moneda:',
1170 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 1171 valor: remito.cotizacion.moneda.DETALLE
1171 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 1172 });
1172 // $scope.$broadcast('removeCabecera', 'Vendedor:'); 1173 $scope.cabeceras.push({
1173 1174 label: 'Fecha cotizacion:',
1174 $scope.cabeceras = []; 1175 valor: $filter('date')(remito.cotizacion.FECHA,
1175 1176 'dd/MM/yyyy')
1176 if (remito.cotizacion && remito.cotizacion.moneda.CODIGO_AFIP !== 'PES') { 1177 });
1177 $scope.cabeceras.push({ 1178 $scope.cabeceras.push({
1178 label: 'Moneda:', 1179 label: 'Cotizacion:',
1179 valor: remito.cotizacion.moneda.DETALLE 1180 valor: $filter('number')(remito.cotizacion.VENDEDOR,
1180 }); 1181 '2')
1181 $scope.cabeceras.push({ 1182 });
1182 label: 'Fecha cotizacion:', 1183 }
1183 valor: $filter('date')(remito.cotizacion.FECHA, 1184
1184 'dd/MM/yyyy') 1185 if (remito.cotizacion && remito.cotizacion.moneda) {
1185 }); 1186 $filter('filter')($scope.botonera, { label: 'Moneda' })[0].checked = true;
1186 $scope.cabeceras.push({ 1187 }
1187 label: 'Cotizacion:', 1188
1188 valor: $filter('number')(remito.cotizacion.VENDEDOR, 1189 if (remito.cliente && remito.cliente.COD) {
1189 '2') 1190 $scope.cabeceras.push({
1190 }); 1191 label: 'Cliente:',
1191 } 1192 valor: $filter('rellenarDigitos')(remito.cliente.COD, 3) + ' - ' +
1192 1193 remito.cliente.NOM
1193 if (remito.cotizacion && remito.cotizacion.moneda) { 1194 });
1194 $filter('filter')($scope.botonera, { label: 'Moneda' })[0].checked = true; 1195 $scope.cabeceras.push({
1195 } 1196 label: 'Domicilio:',
1196 1197 valor: remito.domicilioStamp
1197 if (remito.cliente && remito.cliente.COD) { 1198 });
1198 $scope.cabeceras.push({ 1199
1199 label: 'Cliente:', 1200 $filter('filter')($scope.botonera,
1200 valor: $filter('rellenarDigitos')(remito.cliente.COD, 3) + ' - ' + 1201 { label: 'Domicilio de Entrega' })[0].checked = true;
1201 remito.cliente.NOM 1202 $filter('filter')($scope.botonera, { label: 'Cliente' })[0].checked = true;
1202 }); 1203 }
1203 $scope.cabeceras.push({ 1204 // if (remito.vendedor && remito.vendedor.NUM) {
1204 label: 'Domicilio:', 1205 // $scope.cabeceras.push({
1205 valor: remito.domicilioStamp 1206 // label: 'Vendedor:',
1206 }); 1207 // valor: $filter('rellenarDigitos')(remito.vendedor.NUM, 3) +
1207 1208 // ' - ' + remito.vendedor.NOM
1208 $filter('filter')($scope.botonera, 1209 // });
1209 { label: 'Domicilio de Entrega' })[0].checked = true; 1210 // }
1210 $filter('filter')($scope.botonera, { label: 'Cliente' })[0].checked = true; 1211 if (remito.proveedor && remito.proveedor.COD) {
1211 } 1212 $scope.cabeceras.push({
1212 // if (remito.vendedor && remito.vendedor.NUM) { 1213 label: 'Proveedor:',
1213 // $scope.cabeceras.push({ 1214 valor: $filter('rellenarDigitos')(remito.proveedor.COD, 5) +
1214 // label: 'Vendedor:', 1215 ' - ' + remito.proveedor.NOM
1215 // valor: $filter('rellenarDigitos')(remito.vendedor.NUM, 3) + 1216 });
1216 // ' - ' + remito.vendedor.NOM 1217
1217 // }); 1218 $filter('filter')($scope.botonera, { label: 'Proveedor' })[0].checked = true;
1218 // } 1219 }
1219 if (remito.proveedor && remito.proveedor.COD) { 1220 if (remito.flete !== undefined && remito.fob !== undefined) {
1220 $scope.cabeceras.push({ 1221 $scope.cabeceras.push({
1221 label: 'Proveedor:', 1222 label: 'Flete:',
1222 valor: $filter('rellenarDigitos')(remito.proveedor.COD, 5) + 1223 valor: remito.fob ? 'FOB' : (
1223 ' - ' + remito.proveedor.NOM 1224 remito.flete ? 'Si' : 'No')
1224 }); 1225 });
1225 1226 }
1226 $filter('filter')($scope.botonera, { label: 'Proveedor' })[0].checked = true; 1227 if (remito.remitoPlazo) {
1227 } 1228 valorPrecioCondicion();
1228 if (remito.flete !== undefined && remito.fob !== undefined) { 1229 $filter('filter')($scope.botonera,
1229 $scope.cabeceras.push({ 1230 { label: 'Precios y condiciones' })[0].checked = true;
1230 label: 'Flete:', 1231 }
1231 valor: remito.fob ? 'FOB' : ( 1232
1232 remito.flete ? 'Si' : 'No') 1233 function valorPrecioCondicion() {
1233 }); 1234 if (parseInt(remito.idListaPrecio)) {
1234 } 1235 crearRemitoService.getListaPrecioById(parseInt(remito.idListaPrecio))
1235 if (remito.remitoPlazo) { 1236 .then(function (res) {
1236 valorPrecioCondicion(); 1237 $timeout(function () {
1237 $filter('filter')($scope.botonera, 1238 $scope.cabeceras.push({
1238 { label: 'Precios y condiciones' })[0].checked = true; 1239 label: 'Precios y Condiciones:',
1239 } 1240 valor: parseInt(res.data[0].ID) + ' - ' +
1240 1241 res.data[0].DES + ' ' +
1241 function valorPrecioCondicion() { 1242 remitoBusinessService
1242 if (parseInt(remito.idListaPrecio)) { 1243 .plazoToString(remito.remitoPlazo)
1243 crearRemitoService.getListaPrecioById(parseInt(remito.idListaPrecio)) 1244 });
1244 .then(function (res) { 1245 addArrayCabecera($scope.cabeceras);
1245 $timeout(function () { 1246 }, true);
1246 $scope.cabeceras.push({ 1247
1247 label: 'Precios y Condiciones:', 1248 });
1248 valor: parseInt(res.data[0].ID) + ' - ' + 1249 $scope.idLista = parseInt(remito.idListaPrecio);
1249 res.data[0].DES + ' ' + 1250 }
1250 remitoBusinessService 1251 }
1251 .plazoToString(remito.remitoPlazo) 1252
1252 }); 1253 if (remito.flete === 1) {
1253 addArrayCabecera($scope.cabeceras); 1254 var cabeceraBomba = {
1254 }, true); 1255 label: 'Bomba',
1255 1256 valor: remito.bomba === 1 ? 'Si' : 'No'
1256 }); 1257 };
1257 $scope.idLista = parseInt(remito.idListaPrecio); 1258 if (remito.kilometros) {
1258 } 1259 var cabeceraKilometros = {
1259 } 1260 label: 'Kilometros',
1260 1261 valor: remito.kilometros
1261 if (remito.flete === 1) { 1262 };
1262 var cabeceraBomba = { 1263 $scope.cabeceras.push(cabeceraKilometros);
1263 label: 'Bomba', 1264 }
1264 valor: remito.bomba === 1 ? 'Si' : 'No' 1265 $scope.cabeceras.push(cabeceraBomba);
1265 }; 1266 }
1266 if (remito.kilometros) { 1267
1267 var cabeceraKilometros = { 1268 if (remito.idPrecioCondicion > 0) {
1268 label: 'Kilometros', 1269 $scope.idLista = remito.precioCondicion.idListaPrecio;
1269 valor: remito.kilometros 1270 } else if (remito.idPrecioCondicion) {
1270 }; 1271 $scope.idLista = -1;
1271 $scope.cabeceras.push(cabeceraKilometros); 1272 }
1272 } 1273 $scope.puntoVenta = rellenar(remito.sucursal, 4);
1273 $scope.cabeceras.push(cabeceraBomba); 1274 $scope.comprobante = rellenar(remito.numeroRemito, 8);
1274 } 1275 $scope.remito = remito;
1275 1276 if ($scope.remito.remitoPuntoDescarga.length) {
1276 if (remito.idPrecioCondicion > 0) { 1277 var puntoDescarga = [];
1277 $scope.idLista = remito.precioCondicion.idListaPrecio; 1278
1278 } else if (remito.idPrecioCondicion) { 1279 $scope.remito.remitoPuntoDescarga.forEach(function (remitoPuntoDescarga) {
1279 $scope.idLista = -1; 1280 puntoDescarga.push(remitoPuntoDescarga.puntoDescarga);
1280 } 1281 });
1281 $scope.puntoVenta = rellenar(remito.sucursal, 4); 1282
1282 $scope.comprobante = rellenar(remito.numeroRemito, 8); 1283 $scope.cabeceras.push({
1283 $scope.remito = remito; 1284 label: 'Puntos de descarga: ',
1284 if ($scope.remito.remitoPuntoDescarga.length) { 1285 valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntoDescarga))
1285 var puntoDescarga = []; 1286 });
1286 1287 }
1287 $scope.remito.remitoPuntoDescarga.forEach(function (remitoPuntoDescarga) { 1288 $scope.remitoIsDirty = false;
1288 puntoDescarga.push(remitoPuntoDescarga.puntoDescarga); 1289
1289 }); 1290
1290 1291 addArrayCabecera($scope.cabeceras);
1291 $scope.cabeceras.push({ 1292 }
1292 label: 'Puntos de descarga: ', 1293
1293 valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntoDescarga)) 1294 function getLSRemito() {
1294 }); 1295 var remito = JSON.parse($localStorage.remito || null);
1295 } 1296 if (remito) {
1296 $scope.remitoIsDirty = false; 1297 setearRemito(remito);
1297 1298 delete $localStorage.remito;
1298 1299 }
1299 addArrayCabecera($scope.cabeceras); 1300 }
1300 } 1301
1301 1302 function getCabeceraPuntoDescarga(puntosDescarga) {
1302 function getLSRemito() { 1303 var puntosStamp = '';
1303 var remito = JSON.parse($localStorage.remito || null); 1304 puntosDescarga.forEach(function (punto, idx, arr) {
1304 if (remito) { 1305 puntosStamp += punto.descripcion;
1305 setearRemito(remito); 1306 if ((idx + 1) !== arr.length) puntosStamp += ', ';
1306 delete $localStorage.remito; 1307 });
1307 } 1308 return puntosStamp;
1308 } 1309 }
1309 1310
1310 function getCabeceraPuntoDescarga(puntosDescarga) { 1311 function abrirModalMail(id, cliente, numeroRemito) {
1311 var puntosStamp = ''; 1312 focaModalService.mail(
1312 puntosDescarga.forEach(function (punto, idx, arr) { 1313 {
1313 puntosStamp += punto.descripcion; 1314 titulo: 'Comprobante de remito Nº ' + numeroRemito,
1314 if ((idx + 1) !== arr.length) puntosStamp += ', '; 1315 descarga: {
1315 }); 1316 nombre: numeroRemito + '.pdf',
1316 return puntosStamp; 1317 url: '/remito/comprobante',
1317 } 1318 },
1318 1319 descargaSinValorizar: {
1319 function abrirModalMail(id, cliente, numeroRemito) { 1320 nombre: numeroRemito + '.pdf',
1320 focaModalService.mail( 1321 url: '/remito/comprobante-sin-valorizar',
1321 { 1322 },
1322 titulo: 'Comprobante de remito Nº ' + numeroRemito, 1323 envio: {
1323 descarga: { 1324 mailCliente: cliente.MAIL,
1324 nombre: numeroRemito + '.pdf', 1325 url: '/remito/mail',
1325 url: '/remito/comprobante', 1326 },
1326 }, 1327 envioSinValorizar: {
1327 descargaSinValorizar: { 1328 mailCliente: cliente.MAIL,
1328 nombre: numeroRemito + '.pdf', 1329 url: '/remito/mail-sin-valorizar'
1329 url: '/remito/comprobante-sin-valorizar', 1330 },
1330 }, 1331 options: {
1331 envio: { 1332 idRemito: id
1332 mailCliente: cliente.MAIL, 1333 }
1333 url: '/remito/mail', 1334 }
1334 }, 1335 )
1335 envioSinValorizar: { 1336 .then(function (res) {
1336 mailCliente: cliente.MAIL, 1337 if (res === false) {
1337 url: '/remito/mail-sin-valorizar' 1338 abrirModalMail(id);
1338 }, 1339 focaModalService.alert('Descarga o envíe su remito ' +
1339 options: { 1340 'antes de cerrar esta ventana');
1340 idRemito: id 1341 }
1341 } 1342 });
1342 } 1343 }
1343 ) 1344 //recibo la propiedad por la cual quiero obtener el valor
1344 .then(function (res) { 1345 function getImporte(propiedad) {
1345 if (res === false) { 1346 var importe = 0;
1346 abrirModalMail(id); 1347
1347 focaModalService.alert('Descarga o envíe su remito ' + 1348 $scope.articulosFiltro().forEach(function (articulo) {
1348 'antes de cerrar esta ventana'); 1349
1349 } 1350 if (articulo[propiedad]) {
1350 }); 1351 importe += articulo[propiedad] * articulo.cantidad;
1351 } 1352 }
1352 //recibo la propiedad por la cual quiero obtener el valor 1353 return;
1353 function getImporte(propiedad) { 1354
1354 var importe = 0; 1355 });
1355 1356
1356 $scope.articulosFiltro().forEach(function (articulo) { 1357 return importe;
1357 1358 }
1358 if (articulo[propiedad]) { 1359 }
1359 importe += articulo[propiedad] * articulo.cantidad; 1360 ]);
1360 } 1361
1361 return;
1362
1363 });
1364
1365 return importe;
1366 }
1367 }
1368 ]);