diff --git a/package.json b/package.json index 1b37340..bf0e492 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "foca-modal-descarga", "main": "index.js", "scripts": { + "refresh": "gulp uglify && cp tmp/foca-modal-descarga.js ../wrapper-demo/node_modules/foca-modal-descarga/dist/foca-modal-descarga.min.js", "test": "echo \"Error: no test specified\" && exit 1", "compile": "gulp uglify", "gulp-pre-commit": "gulp pre-commit", diff --git a/src/js/controller.js b/src/js/controller.js index 8aa8270..e9fd67e 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -7,29 +7,50 @@ angular.module('focaModalDescarga') '$timeout', '$uibModalInstance', '$uibModal', - function($scope, focaModalDescargasService, $filter, - focaModalService, $timeout, $uibModalInstance, $uibModal) - { + 'remito', + 'focaModalDetalleHojaRutaService', + 'focaSeguimientoService', + function ($scope, focaModalDescargasService, $filter, + focaModalService, $timeout, $uibModalInstance, $uibModal, remito, + focaModalDetalleHojaRutaService, focaSeguimientoService) { //#region variables $scope.remito = {}; - //#endregion + $scope.remito = remito; + $scope.nroRecibo = 0; + $scope.cisternas = remito.cisternas; + $scope.nroRemito = "00" + remito.sucursal + "-000000000" + remito.numeroRemito; - $scope.crearRemito = function() { + console.log(remito); + //#endregion + $scope.crearRemito = function () { + if (!$scope.remito.cliente) { + focaModalService.alert("No has seleccionado cliente"); + return; + } + // if (!validarDescarga()) { + // focaModalService.alert("Cantidad de descarga ingresada erronea"); + // return; + // } + if (!$scope.nroRecibo) { + focaModalService.alert("No ingresaste nro de recibo"); + return; + } + //#region OBJETO REMITO var remito = { - id: $scope.remito.id, - fechaRemito: $scope.now.toISOString().slice(0, 19).replace('T', ' '), - idCliente: $scope.remito.cliente.COD, - nombreCliente: $scope.remito.cliente.NOM, - cuitCliente: $scope.remito.cliente.CUIT, + id: 0, + fechaRemito: new Date().toISOString().slice(0, 19).replace('T', ' '), + idCliente: $scope.remito.cliente.cod, + nombreCliente: $scope.remito.cliente.nom, + cuitCliente: $scope.remito.cliente.cuit, total: $scope.getTotal() * $scope.remito.cotizacion.VENDEDOR, numeroNotaPedido: $scope.remito.numeroNotaPedido, idVendedor: $scope.remito.vendedor.NUM, idProveedor: $scope.remito.proveedor.COD, idDomicilio: $scope.remito.idDomicilio || $scope.remito.domicilio.id, idCotizacion: $scope.remito.cotizacion.ID, - idListaPrecio: $scope.idLista, + idListaPrecio: $scope.remito.cliente.mod, flete: $scope.remito.flete, fob: $scope.remito.fob, bomba: $scope.remito.bomba, @@ -38,7 +59,7 @@ angular.module('focaModalDescarga') observaciones: $scope.remito.observaciones, numeroRemito: parseInt($scope.comprobante), sucursal: parseInt($scope.puntoVenta), - responsabilidadIvaCliente: $scope.remito.cliente.IVA, + responsabilidadIvaCliente: $scope.remito.cliente.iva, descuento: 0,//TODO, importeNeto: getImporte('netoUnitario'), importeExento: getImporte('exentoUnitario'), @@ -62,10 +83,108 @@ angular.module('focaModalDescarga') estado: 0, destinoVenta: 0,//TODO operacionTipo: 0, //TODO + idHojaRuta: $scope.remito.idHojaRuta } - } + //#endregionc + focaModalDescargasService.crearRemito({remito: remito, notaPedido: {id:0}}) + .then(function (res) { + console.log(res); + remitoId = res.data.id + descargar(remitoId); + focaModalDescargasService.addArticulos($scope.remito.articulosRemito, remitoId, 1); + focaModalService.alert("Descarga realizada") + .then(function(){ + $uibModalInstance.dismiss(); + }) + }) + .catch(function (e) { console.log(e); }) - $scope.seleccionarCliente = function() { + }; + $scope.getTotal = function () { + var total = 0; + var arrayTempArticulos = $scope.remito.articulosRemito; + for (var i = 0; i < arrayTempArticulos.length; i++) { + total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; + } + return parseFloat(total.toFixed(2)); + }; + function descargar(idRemito) { + for (var i = 0; i < $scope.cisternas.length; i++) { + var descarga = $scope.cisternas[i].cisternaCarga.descargar; + var hojaRutaMovimientos = []; + var cisternaMovimientos = []; + var cisternaCargas = []; + var cisternaCarga = $scope.cisternas[i].cisternaCarga; + if (!descarga) continue; + // if (descarga > cisternaCarga.cantidad) { + // focaModalService.alert('La cantidad a descargar no debe ser ' + + // 'mayor a la cantidad de la cisterna'); + // $scope.cargando = false; + // return; + // } + cisternaCarga.cantidad -= descarga; + + //Guardar + var now = new Date(); + var cisternaMovimiento = { + fecha: now.toISOString().slice(0, 19).replace('T', ' '), + cantidad: descarga, + metodo: 'descarga', + idCisternaCarga: cisternaCarga.id, + idRemito: idRemito + }; + var hojaRutaMovimiento = { + reciboDescarga: $scope.nroRecibo, + idRemito: idRemito + }; + delete cisternaCarga.articulo; + delete cisternaCarga.descargar; + cisternaCargas.push(cisternaCarga); + cisternaMovimientos.push(cisternaMovimiento); + hojaRutaMovimientos.push(hojaRutaMovimiento); + } + var save = { + cisternaCargas: cisternaCargas, + cisternaMovimientos: cisternaMovimientos, + hojaRutaMovimientos: hojaRutaMovimientos, + articulo: $scope.articuloSeleccionado + }; + focaModalDetalleHojaRutaService + .postMovimientoHojaRuta(save) + .then(guardarSeguimiento) + .catch(function() {}); + function guardarSeguimiento(res) { + focaSeguimientoService + .guardarPosicion( + 'Entrega de producto', + res.data[0].id, + $scope.remito.observaciones); + $scope.aDescargar = []; + }; + }; + function getImporte(propiedad) { + var importe = 0; + + $scope.remito.articulosRemito.forEach(function (articulo) { + + if (articulo[propiedad]) { + importe += articulo[propiedad] * articulo.cantidad; + } + return; + + }); + + return importe; + }; + function validarDescarga() { + hasDisponible = $scope.cisternas.find(function (cisterna) { + return parseInt(cisterna.cisternaCarga.descargar) > 0 && + parseInt(cisterna.cisternaCarga.descargar) <= + cisterna.cisternaCarga.cantidad + }); + return hasDisponible; + }; + $scope.seleccionarCliente = function () { var modalInstance = $uibModal.open( { @@ -79,14 +198,13 @@ angular.module('focaModalDescarga') size: 'lg' } ); - modalInstance.result.then(function(cliente) { + modalInstance.result.then(function (cliente) { $scope.remito.cliente = cliente; - }, function() { + }, function () { //funcion ejecutada al cancelar modal }); }; - - $scope.cancelar = function() { + $scope.cancelar = function () { $uibModalInstance.dismiss(); } } diff --git a/src/js/service.js b/src/js/service.js index f51e124..3e4c44a 100644 --- a/src/js/service.js +++ b/src/js/service.js @@ -1,6 +1,21 @@ angular.module('focaModalDescarga') - .factory('focaModalDescargasService', ['$http', 'API_ENDPOINT', function ($http, API_ENDPOINT) { - return { - - }; - }]); + .factory('focaModalDescargasService', ['$http', 'API_ENDPOINT', 'crearRemitoService', + function ($http, API_ENDPOINT, crearRemitoService) { + var route = API_ENDPOINT.URL; + return { + crearRemito: function (remito) { + return $http.post(route + '/remito', remito); + }, + addArticulos: function (articulosRemito, idRemito, cotizacion) { + for (var i = 0; i < articulosRemito.length; i++) { + delete articulosRemito[i].editCantidad; + delete articulosRemito[i].editPrecio; + articulosRemito[i].idRemito = articulosRemito[i].idRemito !== -1 ? + idRemito : articulosRemito[i].idRemito; + articulosRemito[i].precio = articulosRemito[i].precio * cotizacion; + delete articulosRemito[i].idNotaPedido; + crearRemitoService.crearArticulosParaRemito(articulosRemito[i]); + } + } + }; + }]); diff --git a/src/views/foca-modal-descarga.html b/src/views/foca-modal-descarga.html index 51dd059..5cc5638 100644 --- a/src/views/foca-modal-descarga.html +++ b/src/views/foca-modal-descarga.html @@ -2,8 +2,8 @@
Detalle de descarga