angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', ['$scope', '$uibModal', '$location', 'crearNotaPedidoService', 'focaModalService', function($scope, $uibModal, $location, crearNotaPedidoService, focaModalService) { $scope.show = false; $scope.cargando = true; $scope.dateOptions = { maxDate: new Date(), minDate: new Date(2010, 0, 1) }; $scope.notaPedido = { vendedor: {}, cliente: {} }; $scope.articulosTabla = []; var idLista; var notaPedidoTemp = crearNotaPedidoService.getNotaPedido(); $scope.domiciliosCliente = crearNotaPedidoService.getDomicilios(1); crearNotaPedidoService.getPrecioCondicion().then( function(res) { $scope.precioCondiciones = res.data; } ); if (notaPedidoTemp !== undefined) { notaPedidoTemp.fechaCarga = new Date(notaPedidoTemp.fechaCarga); $scope.notaPedido = notaPedidoTemp; $scope.notaPedido.flete = ($scope.notaPedido.flete).toString(); $scope.notaPedido.bomba = ($scope.notaPedido.bomba).toString(); idLista = $scope.notaPedido.precioCondicion; crearNotaPedidoService .getArticulosByIdNotaPedido($scope.notaPedido.id).then( function(res) { $scope.articulosTabla = res.data; } ); crearNotaPedidoService.getDomiciliosByIdNotaPedido($scope.notaPedido.id).then( function(res) { $scope.notaPedido.domicilio = res.data; } ); } else { $scope.notaPedido.fechaCarga = new Date(); $scope.notaPedido.domicilio = [{ id: 0 }]; $scope.notaPedido.bomba = '1'; $scope.notaPedido.flete = '0'; idLista = undefined; } $scope.addNewDom = function() { $scope.notaPedido.domicilio.push({ 'id': 0 }); }; $scope.removeNewChoice = function(choice) { if ($scope.notaPedido.domicilio.length > 1) { $scope.notaPedido.domicilio.splice($scope.notaPedido.domicilio.findIndex( function(c) { return c.$$hashKey === choice.$$hashKey; } ), 1); } }; $scope.crearNotaPedido = function() { var notaPedido = { id: 0, fechaCarga: $scope.notaPedido.fechaCarga, vendedor: $scope.notaPedido.vendedor.nombre, cliente: $scope.notaPedido.cliente.nombre, domicilio: $scope.notaPedido.domicilio.id, precioCondicion: $scope.notaPedido.precioCondicion, bomba: $scope.notaPedido.bomba, flete: $scope.notaPedido.flete, total: $scope.getTotal() }; crearNotaPedidoService.crearNotaPedido(notaPedido).then( function() { focaModalService.alert('Nota pedido creada'); // $location.path('/venta-nota-pedido'); // var flete = { // idNotaPedido: data.data.id, // idTransportista: $scope.notaPedido.fleteId, // idChofer: $scope.chofer.id, // idVehiculo: $scope.vehiculo.id, // kilometros: $scope.notaPedido.kilometros, // costoKilometro: $scope.notaPedido.costoUnitarioKmFlete // }; //TO DO - Insert de flete } ); var articulosNotaPedido = $scope.articulosTabla; for(var i = 0; i< articulosNotaPedido.length;i++) { delete articulosNotaPedido[i].edit; crearNotaPedidoService .crearArticulosParaNotaPedido(articulosNotaPedido[i]).then( function() { return; } ); } $scope.notaPedido.precioCondicion = ''; $scope.articulosTabla = []; $scope.notaPedido.fleteNombre = ''; $scope.notaPedido.chofer = ''; $scope.notaPedido.vehiculo = ''; $scope.notaPedido.kilometros = ''; $scope.notaPedido.costoUnitarioKmFlete = ''; $scope.notaPedido.vendedor.nombre = ''; $scope.notaPedido.cliente.nombre = ''; $scope.domicilio = ''; $scope.notaPedido.flete = 0; }; $scope.siguienteTab = function() { $scope.active = 1; }; $scope.seleccionarArticulo = function() { if (idLista === undefined) { focaModalService.alert( 'primero seleccione una lista de precio y condicion'); return; } var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Productos', templateUrl: 'modal-busqueda-productos.html', controller: 'modalBusquedaProductosCtrl', resolve: { idLista: function() { return idLista; } }, size: 'lg' } ); modalInstance.result.then( function(producto) { var newArt = { id: 0, codigo: producto.codigo, sector: producto.sector, descripcion: producto.descripcion, item: $scope.articulosTabla.length + 1, nombre: producto.descripcion, precio: producto.precio.toFixed(2), costoUnitario: producto.costo, edit: false }; $scope.articuloACargar = newArt; $scope.cargando = false; }, function() { // funcion ejecutada cuando se cancela el modal } ); }; $scope.seleccionarVendedor = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Vendedores', templateUrl: 'modal-vendedores.html', controller: 'modalVendedoresCtrl', size: 'lg' } ); modalInstance.result.then( function(vendedor) { $scope.notaPedido.vendedor.nombre = vendedor.NomVen; }, function() { } ); }; $scope.seleccionarPetrolera = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Petrolera', templateUrl: 'modal-petroleras.html', controller: 'modalPetrolerasCtrl', size: 'lg' } ); modalInstance.result.then( function(petrolera) { $scope.notaPedido.petrolera = petrolera.NOM; }, function() { } ); }; $scope.seleccionarCliente = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Cliente', templateUrl: 'foca-busqueda-cliente-modal.html', controller: 'focaBusquedaClienteModalController', size: 'lg' } ); modalInstance.result.then( function(cliente) { $scope.notaPedido.cliente.nombre = cliente.nom; }, function() { } ); }; $scope.mostrarFichaCliente = function() { $uibModal.open( { ariaLabelledBy: 'Datos del Cliente', templateUrl: 'foca-crear-nota-pedido-ficha-cliente.html', controller: 'focaCrearNotaPedidoFichaClienteController', size: 'lg' } ); }; $scope.obtenerDomicilios = function(id) { crearNotaPedidoService.getDomicilios(id).then( function(res) { $scope.notaPedido.domicilio = res.data; } ); }; $scope.getTotal = function() { var total = 0; var array = $scope.articulosTabla; for (var i = 0; i < array.length; i++) { total += array[i].precio * array[i].cantidad; } return total.toFixed(2); }; $scope.getSubTotal = function() { if($scope.articuloACargar) { return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; } }; $scope.cargarArticulos = function() { idLista = $scope.notaPedido.precioCondicion; $scope.articulosTabla = []; }; $scope.abrirModalListaPrecio = function() { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Precio Condición', templateUrl: 'modal-precio-condicion.html', controller: 'focaModalPrecioCondicionController', size: 'lg' } ); modalInstance.result.then( function(precioCondicion) { $scope.notaPedido.precioCondicion = precioCondicion.nombre; idLista = precioCondicion.idListaPrecio; $scope.articulosTabla = []; }, function() { } ); }; $scope.abrirModalFlete = function() { if($scope.notaPedido.flete === '1') { var modalInstance = $uibModal.open( { ariaLabelledBy: 'Busqueda de Flete', templateUrl: 'modal-flete.html', controller: 'focaModalFleteController', size: 'lg' } ); modalInstance.result.then( function(flete) { $scope.choferes = ''; $scope.vehiculos = ''; $scope.notaPedido.chofer = ''; $scope.notaPedido.vehiculo = ''; $scope.notaPedido.costoUnitarioKmFlete = ''; $scope.notaPedido.fleteNombre = flete.nombre; $scope.notaPedido.fleteId = flete.id; $scope.choferes = flete.chofer; $scope.vehiculos = flete.vehiculo; }, function() { } ); } }; $scope.agregarATabla = function(key) { if(key === 13) { if($scope.articuloACargar.cantidad === undefined || $scope.articuloACargar.cantidad === 0 || $scope.articuloACargar.cantidad === null ){ focaModalService.alert('El valor debe ser al menos 1'); return; } $scope.articulosTabla.unshift($scope.articuloACargar); $scope.cargando = true; } }; $scope.quitarArticulo = function(key) { $scope.articulosTabla.splice(key, 1); }; $scope.editarArticulo = function(key, articulo) { if(key === 13) { if(articulo.cantidad === null || articulo.cantidad === 0 || articulo.cantidad === undefined){ focaModalService.alert('El valor debe ser al menos 1'); return; } articulo.edit = false; } }; $scope.cambioEdit = function(articulo) { articulo.edit = true; }; $scope.limpiarFlete = function() { $scope.notaPedido.fleteNombre = ''; $scope.notaPedido.chofer = ''; $scope.notaPedido.vehiculo = ''; $scope.notaPedido.kilometros = ''; $scope.notaPedido.costoUnitarioKmFlete = ''; }; $scope.crearPedidoDemo = function() { focaModalService.alert('Pedido Creado'); $scope.notaPedido.precioCondicion = ''; $scope.articulosTabla = []; $scope.notaPedido.fleteNombre = ''; $scope.notaPedido.chofer = ''; $scope.notaPedido.vehiculo = ''; $scope.notaPedido.kilometros = ''; $scope.notaPedido.costoUnitarioKmFlete = ''; $scope.notaPedido.vendedor.nombre = ''; $scope.notaPedido.cliente.nombre = ''; $scope.domicilio.dom = ''; $scope.notaPedido.flete = 0; }; $scope.resetFilter = function() { $scope.articuloACargar = {}; $scope.cargando = true; }; } ] ) .controller('notaPedidoListaCtrl', [ '$scope', 'crearNotaPedidoService', '$location', function($scope, crearNotaPedidoService, $location) { crearNotaPedidoService.obtenerNotaPedido().then(function(datos) { $scope.notaPedidos = datos.data; }); $scope.editar = function(notaPedido) { crearNotaPedidoService.setNotaPedido(notaPedido); $location.path('/venta-nota-pedido/abm/'); }; $scope.crearPedido = function() { crearNotaPedidoService.clearNotaPedido(); $location.path('/venta-nota-pedido/abm/'); }; } ]) .controller('focaCrearNotaPedidoFichaClienteController', [ '$scope', 'crearNotaPedidoService', '$location', function($scope, crearNotaPedidoService, $location) { crearNotaPedidoService.obtenerNotaPedido().then(function(datos) { $scope.notaPedidos = datos.data; }); $scope.editar = function(notaPedido) { crearNotaPedidoService.setNotaPedido(notaPedido); $location.path('/venta-nota-pedido/abm/'); }; $scope.crearPedido = function() { crearNotaPedidoService.clearNotaPedido(); $location.path('/venta-nota-pedido/abm/'); }; } ]);