controllerDetalles.js 6.18 KB
angular.module('focaCrearHojaRuta')
    .controller('focaModalDetalleController', [
        '$scope', '$timeout', '$uibModalInstance', 'focaModalService',
        'focaCrearHojaRutaService', 'hojasRutas', '$uibModal', '$filter',
        function ($scope, $timeout, $uibModalInstance, focaModalService,
            focaCrearHojaRutaService, hojasRutas, $uibModal, $filter) {

            $scope.mostrar = false;
            $scope.articulos = [];
            $scope.cisternaMovimientos = [];

            init();
            function init() {
                $scope.hojasRutas = hojasRutas;

                $scope.hojasRutas.vehiculo.cisternas = $scope.hojasRutas.vehiculo.cisternas.filter(
                    function (cisterna) {
                        return !cisterna.desactivado;
                    }
                );
                focaCrearHojaRutaService.getArticulos()
                    .then(function (articulos) {
                        $scope.articulos = articulos.data;
                    });
            }

            $scope.validarCisternaDisponible = function (cisterna) {
                if (parseInt(cisterna.disponible) > cisterna.capacidad) {
                    focaModalService.alert('No se puede ingresar una capacidad disponible ' +
                        'superior a la ' + 'capacidad del vehiculo ');
                    cisterna.disponible = cisterna.capacidad;
                    return;
                }
            };

            $scope.seleccionarProductos = function (cisterna) {
                focaModalService.modal({
                    titulo: 'Productos',
                    data: $scope.articulos,
                    size: 'md',
                    columnas: [
                        {
                            propiedad: 'CodRub',
                            nombre: 'Codigo'
                        },
                        {
                            propiedad: 'descripcion',
                            nombre: 'Nombre'
                        },
                    ],
                }).then(function (res) {
                    console.log('Res: ', res);

                    var newArt =
                    {
                        id: 0,
                        idRemito: 0,
                        codigo: res.codigo,
                        sector: res.sector,
                        sectorCodigo: res.sector + '-' + res.codigo,
                        descripcion: res.descripcion,
                        item: 1,
                        nombre: res.descripcion,
                        precio: parseFloat(res.precio.toFixed(4)),
                        costoUnitario: res.costo,
                        editCantidad: false,
                        editPrecio: false,
                        rubro: res.CodRub,
                        ivaUnitario: res.IMPIVA,
                        impuestoInternoUnitario: res.ImpInt,
                        impuestoInterno1Unitario: res.ImpInt2,
                        impuestoInterno2Unitario: res.ImpInt3,
                        precioLista: res.precio,
                        combustible: 1,
                        facturado: 0,
                        idArticulo: res.id,
                        tasaIva: res.tasaIVA
                    };

                    newArt.exentoUnitario = newArt.ivaUnitario ? 0 : res.neto;
                    newArt.netoUnitario = newArt.ivaUnitario ? res.neto : 0;

                    cisterna.articuloSeleccionado = newArt;
                    cisterna.nombreArticulo = res.descripcion;
                }).catch(function (e) {
                    console.log(e);
                });
            };

            $scope.guardar = function () {

                var cisternasFilter  = $scope.hojasRutas.vehiculo.cisternas.filter(function (cisterna) {
                    return parseInt(cisterna.disponible) > 0;
                });

                var articulos = [];

                cisternasFilter.forEach(function (cisterna) {

                    var fechaReparto = $scope.hojasRutas.fechaReparto;

                    var filtroCisternaCarga = cisterna.cisternasCarga.filter(function(carga) {
                        return carga.fechaReparto === fechaReparto;
                    });

                    if (filtroCisternaCarga.length) {
                        cisterna.cisternaCarga = filtroCisternaCarga[0];
                    } else {
                        cisterna.cisternaCarga = {
                            confirmado: null,
                            fechaReparto: fechaReparto,
                            idCisterna: cisterna.id,
                        };
                    }

                    if (!cisterna.articuloSeleccionado) {
                        focaModalService.alert('Seleccione Articulo');

                        return;
                    }

                    //cargar
                    if (cisterna.cisternaCarga.cantidad) {
                        cisterna.cisternaCarga.cantidad += cisterna.disponible;
                    } else {
                        cisterna.cisternaCarga.cantidad = cisterna.disponible;
                        cisterna.cisternaCarga.idProducto =
                            cisterna.articuloSeleccionado.idArticulo;
                    }

                    //Guardar
                    var now = new Date();
                    var cisternaMovimiento = {
                        fecha: now.toISOString().slice(0, 19).replace('T', ' '),
                        cantidad: cisterna.disponible,
                        metodo: 'carga',
                        idCisternaCarga: cisterna.cisternaCarga.id,
                    };

                    cisterna.cisternaCarga.fechaReparto = fechaReparto;
                    cisterna.articuloSeleccionado.cantidad = cisterna.disponible;
                    articulos.push(cisterna.articuloSeleccionado);
                    $scope.cisternaMovimientos.push(cisternaMovimiento);
                });

                $uibModalInstance.close({
                    cisternas: cisternasFilter,
                    movimientos: $scope.cisternaMovimientos,
                    articulos: articulos
                });
            };

            $scope.cancel = function () {
                $uibModalInstance.close(null);
            };
        }
    ]);