Commit 39d9e5d4408fddb39f90c08cdcf6a58e36e5796f

Authored by Luigi
Exists in master

Merge remote-tracking branch 'upstream/develop'

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