Commit 2561b18c56283d8102d96bf718e511e210f34f44

Authored by Eric Fernandez
1 parent 2b95972827
Exists in master

First commit

... ... @@ -0,0 +1,3 @@
  1 +/node_modules
  2 +/dist
  3 +package-lock\.json
... ... @@ -0,0 +1,25 @@
  1 +<html ng-app="focaCrearNotaPedido">
  2 + <head>
  3 + <meta charset="UTF-8"/>
  4 + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  5 +
  6 + <!--CSS-->
  7 + <link href="node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/>
  8 + <link href="node_modules/font-awesome/css/font-awesome.min.css" rel="stylesheet"/>
  9 +
  10 + <!--VENDOR JS-->
  11 + <script src="node_modules/jquery/dist/jquery.min.js"></script>
  12 + <script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
  13 + <script src="node_modules/angular/angular.min.js"></script>
  14 + <script src="node_modules/angular-route/angular-route.min.js"></script>
  15 + <script src="node_modules/ui-bootstrap4/dist/ui-bootstrap-tpls.js"></script>
  16 +
  17 + <script src="src/js/app.js"></script>
  18 + <script src="src/js/controller.js"></script>
  19 + <script src="src/js/service.js"></script>
  20 +
  21 + </head>
  22 + <body ng-view>
  23 +
  24 + </body>
  25 +</html>
... ... @@ -0,0 +1,38 @@
  1 +{
  2 + "name": "foca-crear-nota-pedido",
  3 + "version": "0.0.2",
  4 + "description": "Módulo foca",
  5 + "main": "index.js",
  6 + "scripts": {
  7 + "test": "echo \"Error: no test specified\" && exit 1",
  8 + "compile": "gulp uglify && gulp html",
  9 + "postinstall": "npm run compile && rm -R src && rm index.html && rm .jshintrc && rm gulpfile.js"
  10 + },
  11 + "repository": {
  12 + "type": "git",
  13 + "url": "https://192.168.0.11/modulos-npm/foca-crear-nota-pedido.git"
  14 + },
  15 + "author": "Foca Software",
  16 + "license": "ISC",
  17 + "dependencies": {
  18 + "angular": "^1.7.x",
  19 + "angular-route": "^1.7.4",
  20 + "bootstrap": "^4.1.x",
  21 + "font-awesome": "^4.7.x",
  22 + "gulp": "^3.9.x",
  23 + "gulp-concat": "2.6.x",
  24 + "gulp-jshint": "^2.1.x",
  25 + "gulp-rename": "^1.4.x",
  26 + "gulp-replace": "^1.0.x",
  27 + "gulp-uglify-es": "^1.0.x",
  28 + "jquery": "^3.3.x",
  29 + "jshint": "^2.9.x",
  30 + "pump": "^3.0.x",
  31 + "ui-bootstrap4": "^3.0.5"
  32 + },
  33 + "devDependencies": {
  34 + "gulp-connect": "^5.6.1",
  35 + "jasmine-core": "3.2.1",
  36 + "pre-commit": "^1.2.2"
  37 + }
  38 +}
... ... @@ -0,0 +1,13 @@
  1 +angular.module('focaCrearNotaPedido', ['ngRoute', 'ui.bootstrap'])
  2 + .config(['$routeProvider', function($routeProvider) {
  3 + $routeProvider.when('/venta-nota-pedido', {
  4 + controller: 'notaPedidoListaCtrl',
  5 + templateUrl: 'src/views/nota-pedido-lista.html'
  6 + });
  7 + }])
  8 + .config(['$routeProvider', function($routeProvider) {
  9 + $routeProvider.when('/venta-nota-pedido/abm', {
  10 + controller: 'notaPedidoCtrl',
  11 + templateUrl: 'src/views/nota-pedido.html'
  12 + });
  13 + }]);
src/js/controller.js
... ... @@ -0,0 +1,123 @@
  1 +angular.module('focaCrearNotaPedido')
  2 + .controller('notaPedidoCtrl',
  3 + [
  4 + '$scope',
  5 + '$uibModal',
  6 + 'crearNotaPedidoService',
  7 + function ($scope, $uibModal, crearNotaPedidoService) {
  8 + $scope.notaPedido = {};
  9 + var notaPedidoTemp = crearNotaPedidoService.getNotaPedido();
  10 + var domiciliosCliente = [
  11 + {
  12 + dom: 'sanjuan',
  13 + id: 3
  14 + },
  15 + {
  16 + dom: 'mendoza',
  17 + id: 2
  18 + }
  19 + ]
  20 + if (notaPedidoTemp != undefined) {
  21 + notaPedidoTemp.fechaCarga = new Date(notaPedidoTemp.fechaCarga);
  22 + $scope.notaPedido = notaPedidoTemp;
  23 + $scope.notaPedido.domicilio = domiciliosCliente;
  24 + } else {
  25 + $scope.notaPedido.fechaCarga = new Date();
  26 +
  27 + $scope.notaPedido.domicilio = domiciliosCliente;
  28 + }
  29 + $scope.precioCondiciones = [
  30 + { nombre: 'Precio y condicion 1' },
  31 + { nombre: 'Precio y condicion 2' },
  32 + { nombre: 'Precio y condicion 3' }
  33 + ]
  34 + $scope.articulosTabla = [
  35 + {
  36 + codigo: '1',
  37 + item: 1,
  38 + nombre: 'naftaaskdahsñodaskdjhañslkdjahslñkjdhalskjdhaksjdhkasjhasddddddddddddddddddddddddddddddddddddddddddddddddd',
  39 + precio: '14,50',
  40 + costoUnitario: '14',
  41 + cantidad: 1,
  42 + subtotal: '19,22'
  43 + }
  44 + ]
  45 + $scope.notaPedido.bomba = '1';
  46 + $scope.notaPedido.flete = '1';
  47 + $scope.addNewDom = function () {
  48 + $scope.notaPedido.domicilio.push({ 'id': 0 });
  49 + }
  50 + $scope.removeNewChoice = function (choice) {
  51 + if ($scope.notaPedido.domicilio.length > 1) {
  52 + $scope.notaPedido.domicilio.splice($scope.notaPedido.domicilio.findIndex(c => c.$$hashKey == choice.$$hashKey), 1)
  53 + }
  54 + }
  55 + $scope.crearNotaPedido = function () {
  56 + var notaPedido = {
  57 + idNotaPedido: 0,
  58 + precioCondicion: $scope.notaPedido.precioCondicion,
  59 + fechaCarga: $scope.notaPedido.clientefechaCarga,
  60 + vendedor: $scope.notaPedido.vendedor,
  61 + cliente: $scope.notaPedido.cliente,
  62 + producto: $scope.notaPedido.producto,
  63 + bomba: $scope.notaPedido.bomba,
  64 + petrolera: $scope.notaPedido.petrolera,
  65 + domicilio: $scope.notaPedido.domicilio,
  66 + kilometros: $scope.notaPedido.kilometros,
  67 + jurisdiccionIIBB: $scope.notaPedido.jurisdiccion,
  68 + costoFinanciacion: $scope.notaPedido.costoFinanciacion,
  69 + flete: $scope.notaPedido.flete,
  70 + costoUnitarioKmFlete: $scope.costoUnitarioKmFlete
  71 + }
  72 + crearNotaPedidoService.crearNotaPedido(notaPedido).then(
  73 + function (res) {
  74 + alert('Nota pedido creada')
  75 + }
  76 + )
  77 + }
  78 + $scope.siguienteTab = function () {
  79 + $scope.active = 1;
  80 + }
  81 + $scope.seleccionarArticulo = function () {
  82 + var modalIntance = $uibModal.open(
  83 + {
  84 + ariaLabelledBy: 'Busqueda de Productos',
  85 + templateUrl: 'modal-busqueda-productos.html',
  86 + controller: 'modalBusquedaProductosCtrl',
  87 + size: 'md'
  88 + }
  89 + )
  90 + modalInstance.result.then(
  91 + function (producto) {
  92 + console.info(producto);
  93 + // variable producto tiene el producto seleccionado en el modal
  94 + }, function () {
  95 + // funcion ejecutada cuando se cancela el modal
  96 + }
  97 + );
  98 + }
  99 + $scope.obtenerDomicilios = function (id) {
  100 + crearNotaPedidoService.getDomicilios(id).then(
  101 + function (res) {
  102 + $scope.notaPedido.domicilio = res.data;
  103 + }
  104 + )
  105 + }
  106 + }
  107 + ]
  108 + )
  109 + .controller('notaPedidoListaCtrl', [
  110 + '$scope',
  111 + 'crearNotaPedidoService',
  112 + '$location',
  113 + function ($scope, crearNotaPedidoService, $location) {
  114 + crearNotaPedidoService.obtenerNotaPedido().then(function (datos) {
  115 + $scope.notaPedidos = datos.data;
  116 + });
  117 + $scope.editar = function (notaPedido) {
  118 + crearNotaPedidoService.setNotaPedido(notaPedido);
  119 + $location.path('/venta-nota-pedido/abm/');
  120 + };
  121 + }
  122 + ])
  123 +
... ... @@ -0,0 +1,38 @@
  1 +angular.module('focaCrearNotaPedido')
  2 + .service('crearNotaPedidoService', ['$http',function($http) {
  3 + var route = 'http://192.168.0.23:9900';
  4 + var notaPedido;
  5 + return {
  6 + crearNotaPedido: function(obj) {
  7 + return;
  8 + },
  9 + obtenerNotaPedido: function() {
  10 + return $http.get(route +'/nota-pedido');
  11 + },
  12 + setNotaPedido: function(notaPedido) {
  13 + this.notaPedido = notaPedido;
  14 + },
  15 + getNotaPedido: function() {
  16 + return this.notaPedido;
  17 + },
  18 + getDomicilios: function(id) {
  19 + // return $http.get(route + '/'+id)
  20 + var domicilio = [
  21 + {
  22 + id: 1,
  23 + nombre: 'godoy Cruz'
  24 + },
  25 + {
  26 + id: 2,
  27 + nombre: 'capital'
  28 + },
  29 + {
  30 + id: 3,
  31 + nombre: 'mendoza'
  32 + }
  33 + ]
  34 + return
  35 + }
  36 + }
  37 + }])
  38 +
0 39 \ No newline at end of file
src/views/nota-pedido-lista.html
... ... @@ -0,0 +1,23 @@
  1 +<table class="table table-sm table-hover table-nonfluid">
  2 + <thead>
  3 + <tr>
  4 + <th>Código</th>
  5 + <th>Vendedor</th>
  6 + <th>Cliente</th>
  7 + <th>Petrolera</th>
  8 + <th></th>
  9 + </tr>
  10 + </thead>
  11 + <tbody>
  12 + <tr ng-repeat="item in notaPedidos">
  13 + <td ng-bind="item.id"></td>
  14 + <td ng-bind="item.vendedor"></td>
  15 + <td ng-bind="item.cliente"></td>
  16 + <td ng-bind="item.petrolera"></td>
  17 + <td>
  18 + <button ng-click="editar(item)"><i class="glyphicon glyphicon-pencil"></i></button>
  19 + <button ng-click="borrar(item.id)"><i class="glyphicon glyphicon-trash"></i></button>
  20 + </td>
  21 + </tr>
  22 + </tbody>
  23 +</table>
0 24 \ No newline at end of file
src/views/nota-pedido.html
... ... @@ -0,0 +1,237 @@
  1 +<form name="formCrearNota" ng-submit="siguienteTab()">
  2 + <uib-tabset active="active">
  3 + <uib-tab index="0" heading="General">
  4 + <input type="hidden" name="id" ng-model="notaPedido.id" />
  5 + <div>
  6 + <div class="col-auto my-2">
  7 + <button type="submit" title="Siguiente" class="btn btn-primary float-right">Siguiente</button>
  8 + </div>
  9 + </div>
  10 + <br>
  11 + <br>
  12 + <div class="row">
  13 + <div class="col-md-2">
  14 + <div class="col-auto">
  15 + <label>Fecha de carga</label>
  16 + </div>
  17 + </div>
  18 + <div class="col-md-3">
  19 + <div class="col-auto">
  20 + <input type="date" class="form-control" ng-model="notaPedido.fechaCarga" ng-required="true">
  21 + </div>
  22 + </div>
  23 + <div class="col-md-2">
  24 + <div class="col-auto">
  25 + <label>Kilómetros</label>
  26 + </div>
  27 + </div>
  28 + <div class="col-md-3">
  29 + <div class="col-auto">
  30 + <input type="number" min="0" step="0.01" class="form-control" placeholder="Kilómetros recorridos para la entrega en el cliente"
  31 + ng-model="notaPedido.kilometros" ng-required="true">
  32 + </div>
  33 + </div>
  34 + </div>
  35 + <div class="row my-3">
  36 + <div class="col-md-2">
  37 + <div class="col-auto">
  38 + <label>Jurisdicción de IIBB</label>
  39 + </div>
  40 + </div>
  41 + <div class="col-md-3">
  42 + <div class="col-auto">
  43 + <input type="text" class="form-control" placeholder="Jurisdicción de IIBB donde se realiza la entrega"
  44 + ng-model="notaPedido.jurisdiccion" ng-required="true">
  45 + </div>
  46 + </div>
  47 + <div class="col-md-2">
  48 + <div class="col-auto">
  49 + <label>Costo de financiación</label>
  50 + </div>
  51 + </div>
  52 + <div class="col-md-3">
  53 + <div class="col-auto">
  54 + <div class="input-group mb-2">
  55 + <div class="input-group-prepend">
  56 + <div class="input-group-text">$</div>
  57 + </div>
  58 + <input type="number" min="0" step="0.01" class="form-control" placeholder="Costo de financiación"
  59 + ng-model="notaPedido.costoFinanciacion">
  60 + </div>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + <div class="row">
  65 + <div class="col-md-2">
  66 + <div class="col-auto">
  67 + <label>Bomba</label>
  68 + </div>
  69 + </div>
  70 + <div class="col-md-1">
  71 + <div class="col-auto">
  72 + <div class="form-check custom-radio custom-control-inline">
  73 + <input class="form-check-input" type="radio" name="radioBomba" value="1" ng-model="notaPedido.bomba">
  74 + <label class="form-check-label">
  75 + Si
  76 + </label>
  77 + </div>
  78 + <div class="form-check custom-radio custom-control-inline">
  79 + <input class="form-check-input" type="radio" name="radioBomba" value="0" ng-model="notaPedido.bomba">
  80 + <label class="form-check-label">
  81 + No
  82 + </label>
  83 + </div>
  84 + </div>
  85 + </div>
  86 + <div class="col-md-1">
  87 + <div class="col-auto">
  88 + <label>Flete</label>
  89 + </div>
  90 + </div>
  91 + <div class="col-md-1">
  92 + <div class="col-auto">
  93 + <div class="form-check custom-radio custom-control-inline">
  94 + <input class="form-check-input" type="radio" name="radioFlete" value="1" ng-model="notaPedido.flete">
  95 + <label class="form-check-label">
  96 + Si
  97 + </label>
  98 + </div>
  99 + <div class="form-check custom-radio custom-control-inline">
  100 + <input class="form-check-input" type="radio" name="radioFlete" value="0" ng-model="notaPedido.flete">
  101 + <label class="form-check-label">
  102 + FOB
  103 + </label>
  104 + </div>
  105 + </div>
  106 + </div>
  107 + <div class="col-md-2">
  108 + <div class="col-auto">
  109 + <label>Costo unitario kilometro flete</label>
  110 + </div>
  111 + </div>
  112 + <div class="col-md-3">
  113 + <div class="col-auto">
  114 + <div class="input-group mb-2">
  115 + <div class="input-group-prepend">
  116 + <div class="input-group-text">$</div>
  117 + </div>
  118 + <input type="number" min="0" step="0.01" class="form-control" placeholder="Costo unitario del kilometro del flete"
  119 + ng-model="notaPedido.costoUnitarioKmFlete" ng-required="true">
  120 + </div>
  121 + </div>
  122 + </div>
  123 + </div>
  124 + <div class="row my-3">
  125 + <div class="col-md-2">
  126 + <div class="col-auto">
  127 + <label>Vendedor</label>
  128 + </div>
  129 + </div>
  130 + <div class="col-md-3">
  131 + <div class="col-auto">
  132 + <input type="text" class="form-control" placeholder="Seleccione vendedor" ng-model="notaPedido.vendedor"
  133 + readonly>
  134 + </div>
  135 + </div>
  136 + <div class="col-md-2">
  137 + <div class="col-auto">
  138 + <label>Petrolera</label>
  139 + </div>
  140 + </div>
  141 + <div class="col-md-3">
  142 + <div class="col-auto">
  143 + <input type="text" class="form-control" placeholder="Seleccione petrolera" ng-model="notaPedido.petrolera"
  144 + readonly>
  145 + </div>
  146 + </div>
  147 + </div>
  148 + </div>
  149 + <div class="row">
  150 + <div class="col-md-2">
  151 + <div class="col-auto">
  152 + <label>Cliente</label>
  153 + </div>
  154 + </div>
  155 + <div class="col-md-3">
  156 + <div class="col-auto">
  157 + <input type="text" class="form-control" placeholder="Seleccione cliente" ng-model="notaPedido.cliente"
  158 + ng-change="obtenerDomicilios()" readonly>
  159 + </div>
  160 + </div>
  161 + <div class="col-md-2">
  162 + <div class="col-auto">
  163 + <label>Domicilio</label>
  164 + </div>
  165 + </div>
  166 + <div class="col-md-4">
  167 + <div class="col-md-12 row" ng-repeat="domicilio in notaPedido.domicilio">
  168 + <div class="col-auto">
  169 + <select class="form-control" ng-options="domi as domi.dom for domi in domiciliosCliente"
  170 + ng-model="domicilio.id" ng-required="true">
  171 + </select>
  172 + </div>
  173 + <a class="btn" ng-click="removeNewChoice(domicilio)" ng-if="domicilio.id==0">-</a>
  174 + <a class="btn" ng-click="addNewDom()">+</a>
  175 + </div>
  176 + </div>
  177 + </div>
  178 + </uib-tab>
  179 + <uib-tab index="1" heading="Producto" disable="formCrearNota.$invalid">
  180 + <div>
  181 + <div class="col-auto my-2">
  182 + <button type="submit" title="Siguiente" class="btn btn-primary float-right">Abrir</button>
  183 + </div>
  184 + </div>
  185 + <br>
  186 + <br>
  187 + <div class="row">
  188 + <div class="col-md-2">
  189 + <div class="col-auto">
  190 + <label>Precios y condiciones</label>
  191 + </div>
  192 + </div>
  193 + <div class="col-md-4">
  194 + <div class="col-auto">
  195 + <select class="form-control" ng-model="notaPedido.precioCondicion" ng-options="preCond.nombre for preCond in precioCondiciones">
  196 + </select>
  197 + </div>
  198 + </div>
  199 + <div class="col-md-2">
  200 + <div class="col-auto">
  201 + <label>Producto</label>
  202 + </div>
  203 + </div>
  204 + <div class="col-md-4">
  205 + <div class="col-auto">
  206 + <input type="text" class="form-control" placeholder="Seleccione producto" ng-model="notaPedido.producto"
  207 + ng-click="seleccionarArticulo()" readonly>
  208 + </div>
  209 + </div>
  210 + </div>
  211 + <div class="row">
  212 + <table class="table my-3 table-hover table-nonfluid">
  213 + <thead>
  214 + <tr>
  215 + <th>Código</th>
  216 + <th>Nombre</th>
  217 + <th>Precio unitario</th>
  218 + <th>Costo unitario bruto</th>
  219 + <th>Cantidad</th>
  220 + <th>Subtotal</th>
  221 + </tr>
  222 + </thead>
  223 + <tbody>
  224 + <tr ng-repeat="articulo in articulosTabla">
  225 + <td ng-bind="articulo.codigo"></td>
  226 + <td ng-bind="articulo.nombre"></td>
  227 + <td ng-bind="articulo.precio"></td>
  228 + <td ng-bind="articulo.costoUnitario"></td>
  229 + <td ng-bind="articulo.cantidad"></td>
  230 + <td ng-bind="articulo.subtotal"></td>
  231 + </tr>
  232 + </tbody>
  233 + </table>
  234 + </div>
  235 + </uib-tab>
  236 + </uib-tabset>
  237 +</form>
0 238 \ No newline at end of file