Commit aae6047799d8ca4db9240065fe3a7ef96673d4b7
1 parent
0598143049
Exists in
master
Agregado metodo para consultar los plazos con el id del cliente.
Showing
3 changed files
with
117 additions
and
96 deletions
Show diff stats
src/js/controller.js
| 1 | angular.module('focaModalPrecioCondicion') | 1 | angular.module('focaModalPrecioCondicion') |
| 2 | .controller('focaModalPrecioCondicionController', | 2 | .controller('focaModalPrecioCondicionController', |
| 3 | [ | 3 | [ |
| 4 | '$timeout', | 4 | '$timeout', |
| 5 | '$filter', | 5 | '$filter', |
| 6 | '$scope', | 6 | '$scope', |
| 7 | '$uibModal', | 7 | '$uibModal', |
| 8 | '$uibModalInstance', | 8 | '$uibModalInstance', |
| 9 | 'focaModalService', | 9 | 'focaModalService', |
| 10 | 'focaModalPrecioCondicionService', | 10 | 'focaModalPrecioCondicionService', |
| 11 | 'idListaPrecio', | 11 | 'idListaPrecio', |
| 12 | 'idCliente', | ||
| 12 | function ( | 13 | function ( |
| 13 | $timeout, $filter, $scope, $uibModal, $uibModalInstance, | 14 | $timeout, $filter, $scope, $uibModal, $uibModalInstance, |
| 14 | focaModalService, focaModalPrecioCondicionService, idListaPrecio | 15 | focaModalService, focaModalPrecioCondicionService, idListaPrecio, idCliente |
| 15 | ) { | 16 | ) { |
| 16 | $scope.plazos = [{ dias: 0 }]; | 17 | $scope.plazos = [{ dias: 0 }]; |
| 17 | $scope.editingPlazo = false; | 18 | $scope.editingPlazo = false; |
| 18 | $scope.openModalListaDePrecios = false; | 19 | $scope.openModalListaDePrecios = false; |
| 19 | $scope.chosenClientList = true; | 20 | $scope.associatedList = true; |
| 20 | $scope.listaDePreciosAlternativa = null; | 21 | $scope.listaDePreciosAlternativa = null; |
| 21 | 22 | ||
| 22 | onInit(); | 23 | onInit(); |
| 23 | 24 | ||
| 24 | function onInit() { | 25 | function onInit() { |
| 25 | //Metodo para traer la lista de precio asociada al cliente | 26 | //Metodo para traer la lista de precio asociada al cliente |
| 26 | focaModalPrecioCondicionService.getListaPrecio(idListaPrecio) | 27 | focaModalPrecioCondicionService.getListaPrecio(idListaPrecio) |
| 27 | .then(function (res) { | 28 | .then(function (res) { |
| 28 | console.log("Lista de precios", res); | 29 | console.log("Lista de precios", res); |
| 29 | $scope.listaDePreciosAsociada = res.data[0]; | 30 | $scope.listaDePreciosAsociada = res.data[0]; |
| 30 | }); | 31 | }) |
| 32 | .catch(function (e) { console.log(e) }); | ||
| 33 | focaModalPrecioCondicionService.getPlazosByIdCliente(idCliente) | ||
| 34 | .then(function (res) { | ||
| 35 | console.log(res); | ||
| 36 | $scope.plazos = res.data; | ||
| 37 | }) | ||
| 38 | .catch(function (e) { console.log(e) }); | ||
| 31 | } | 39 | } |
| 32 | 40 | ||
| 33 | //#region Metodos para la lista de precios | 41 | //#region Metodos para la lista de precios |
| 34 | $scope.openListaDePrecios = function () { | 42 | $scope.openListaDePrecios = function () { |
| 35 | var datos = null; | 43 | var datos = null; |
| 36 | focaModalPrecioCondicionService.getAllListaPrecio() | 44 | focaModalPrecioCondicionService.getAllListaPrecio() |
| 37 | .then(function (res) { | 45 | .then(function (res) { |
| 38 | datos = res.data; | 46 | datos = res.data; |
| 39 | focaModalService.modal({ | 47 | focaModalService.modal({ |
| 40 | titulo: 'Lista de precios', | 48 | titulo: 'Lista de precios', |
| 41 | data: datos, | 49 | data: datos, |
| 42 | size: 'md', | 50 | size: 'md', |
| 43 | columnas: [ | 51 | columnas: [ |
| 44 | { | 52 | { |
| 45 | propiedad: 'ID', | 53 | propiedad: 'ID', |
| 46 | nombre: 'Codigo' | 54 | nombre: 'Codigo' |
| 47 | }, | 55 | }, |
| 48 | { | 56 | { |
| 49 | propiedad: 'DES', | 57 | propiedad: 'DES', |
| 50 | NOMBRE: 'Nombre' | 58 | NOMBRE: 'Nombre' |
| 51 | } | 59 | } |
| 52 | ], | 60 | ], |
| 53 | }).then(function (res) { | 61 | }).then(function (res) { |
| 54 | $scope.chosenClientList = false; | 62 | $scope.associatedList = false; |
| 55 | $scope.listaDePreciosAlternativa = res; | 63 | $scope.listaDePreciosAlternativa = res; |
| 56 | console.log(res); | 64 | console.log(res); |
| 57 | }).catch(function (e) { | 65 | }).catch(function (e) { |
| 58 | console.log(e); | 66 | console.log(e); |
| 59 | }); | 67 | }); |
| 60 | }); | 68 | }); |
| 61 | }; | 69 | }; |
| 62 | $scope.selectListaDePrecios = function (listaDePrecios) { | 70 | $scope.selectListaDePrecios = function (listaDePrecios) { |
| 63 | $scope.chosenClientList = true; | 71 | $scope.associatedList = true; |
| 64 | }; | 72 | }; |
| 65 | $scope.verListaProductos = function (id) { | 73 | $scope.verListaProductos = function (id) { |
| 66 | var modalInstance = $uibModal.open( | 74 | var modalInstance = $uibModal.open( |
| 67 | { | 75 | { |
| 68 | ariaLabelledBy: 'Busqueda de Productos', | 76 | ariaLabelledBy: 'Busqueda de Productos', |
| 69 | templateUrl: 'modal-busqueda-productos.html', | 77 | templateUrl: 'modal-busqueda-productos.html', |
| 70 | controller: 'modalBusquedaProductosCtrl', | 78 | controller: 'modalBusquedaProductosCtrl', |
| 71 | resolve: { | 79 | resolve: { |
| 72 | parametroProducto: { | 80 | parametroProducto: { |
| 73 | idLista: parseInt(id), | 81 | idLista: parseInt(id), |
| 74 | cotizacion: 1, | 82 | cotizacion: 1, |
| 75 | simbolo: '$', | 83 | simbolo: '$', |
| 76 | soloMostrar: true | 84 | soloMostrar: true |
| 77 | } | 85 | } |
| 78 | }, | 86 | }, |
| 79 | size: 'md' | 87 | size: 'md' |
| 80 | } | 88 | } |
| 81 | ); | 89 | ); |
| 82 | modalInstance.result | 90 | modalInstance.result |
| 83 | .then(function (res) { | 91 | .then(function (res) { |
| 84 | console.log("Producto => ", res); | 92 | console.log("Producto => ", res); |
| 85 | }) | 93 | }) |
| 86 | .catch(function (e) { console.log(e) }); | 94 | .catch(function (e) { console.log(e) }); |
| 87 | }; | 95 | }; |
| 88 | $scope.closeModalPrecioCondicion = function () { | 96 | $scope.closeModalPrecioCondicion = function () { |
| 89 | $uibModalInstance.dismiss('cancel'); | 97 | $uibModalInstance.dismiss('cancel'); |
| 90 | }; | 98 | }; |
| 99 | $scope.guardarPrecioCondicion = function () { | ||
| 100 | $uibModalInstance.close(!$scope.associatedList ? $scope.listaDePreciosAsociada : $scope.listaDePreciosAlternativa); | ||
| 101 | } | ||
| 91 | //#endregion | 102 | //#endregion |
| 92 | 103 | ||
| 93 | //#region Metodos para los plazos | 104 | //#region Metodos para los plazos |
| 94 | $scope.addMorePlazos = function () { | 105 | $scope.addMorePlazos = function () { |
| 95 | if ($scope.plazos.length < 4) { | 106 | if ($scope.plazos.length < 4) { |
| 96 | $scope.plazos.unshift({ dias: 0 }); | 107 | $scope.plazos.unshift({ dias: 0 }); |
| 97 | } | 108 | } |
| 98 | }; | 109 | }; |
| 99 | $scope.editPlazo = function () { | 110 | $scope.editPlazo = function () { |
| 100 | $scope.editingPlazo = true; | 111 | $scope.editingPlazo = true; |
| 101 | }; | 112 | }; |
| 102 | $scope.validateMinMax = function (plazo, min, max) { | 113 | $scope.validateMinMax = function (plazo, min, max) { |
| 103 | plazo.dias = parseInt(plazo.dias); | 114 | plazo.dias = parseInt(plazo.dias); |
| 104 | if (plazo.dias === null || plazo.dias === undefined || isNaN(plazo.dias)) { | 115 | if (plazo.dias === null || plazo.dias === undefined || isNaN(plazo.dias)) { |
| 105 | plazo.dias = '0'; | 116 | plazo.dias = '0'; |
| 106 | return; | 117 | return; |
| 107 | } | 118 | } |
| 108 | if (parseInt(plazo.dias) < min) { | 119 | if (parseInt(plazo.dias) < min) { |
| 109 | plazo.dias = '0'; | 120 | plazo.dias = '0'; |
| 110 | return; | 121 | return; |
| 111 | } | 122 | } |
| 112 | if (parseInt(plazo.dias) > max) { | 123 | if (parseInt(plazo.dias) > max) { |
| 113 | plazo.dias = '365'; | 124 | plazo.dias = '365'; |
| 114 | return; | 125 | return; |
| 115 | } | 126 | } |
| 116 | }; | 127 | }; |
| 117 | //#endregion | 128 | //#endregion |
| 118 | } | 129 | } |
| 119 | ] | 130 | ] |
| 120 | ); | 131 | ); |
| 121 | 132 |
src/js/service.js
| 1 | angular.module('focaModalPrecioCondicion') | 1 | angular.module('focaModalPrecioCondicion') |
| 2 | .service('focaModalPrecioCondicionService', [ | 2 | .service('focaModalPrecioCondicionService', [ |
| 3 | '$http', | 3 | '$http', |
| 4 | 'API_ENDPOINT', | 4 | 'API_ENDPOINT', |
| 5 | function ($http, API_ENDPOINT) { | 5 | function ($http, API_ENDPOINT) { |
| 6 | return { | 6 | return { |
| 7 | getPlazosByIdPrecioCondicion: function (id) { | 7 | getPlazosByIdPrecioCondicion: function (id) { |
| 8 | return $http.get(API_ENDPOINT.URL + '/plazo-pago/precio-condicion/' + id); | 8 | return $http.get(API_ENDPOINT.URL + '/plazo-pago/precio-condicion/' + id); |
| 9 | }, | 9 | }, |
| 10 | getPreciosCondiciones: function () { | 10 | getPreciosCondiciones: function () { |
| 11 | return $http.get(API_ENDPOINT.URL + '/precio-condicion/plazo-pago'); | 11 | return $http.get(API_ENDPOINT.URL + '/precio-condicion/plazo-pago'); |
| 12 | }, | 12 | }, |
| 13 | getPreciosCondicionesByIdListaPrecio: function (idListaPrecio) { | 13 | getPreciosCondicionesByIdListaPrecio: function (idListaPrecio) { |
| 14 | return $http.get(API_ENDPOINT.URL + '/precio-condicion/plazo-pago/' + | 14 | return $http.get(API_ENDPOINT.URL + '/precio-condicion/plazo-pago/' + |
| 15 | idListaPrecio); | 15 | idListaPrecio); |
| 16 | }, | 16 | }, |
| 17 | getListaPrecio: function (idListaPrecio) { | 17 | getListaPrecio: function (idListaPrecio) { |
| 18 | return $http.get(API_ENDPOINT.URL + '/lista-precio/' + | 18 | return $http.get(API_ENDPOINT.URL + '/lista-precio/' + |
| 19 | idListaPrecio); | 19 | idListaPrecio); |
| 20 | }, | 20 | }, |
| 21 | getAllListaPrecio: function () { | 21 | getAllListaPrecio: function () { |
| 22 | return $http.get(API_ENDPOINT.URL + '/lista-precio'); | 22 | return $http.get(API_ENDPOINT.URL + '/lista-precio'); |
| 23 | }, | ||
| 24 | getPlazosByIdCliente: function (id) { | ||
| 25 | return $http.get(API_ENDPOINT.URL + '/plazo-pago/cliente/' + id); | ||
| 23 | } | 26 | } |
| 24 | }; | 27 | }; |
| 25 | } | 28 | } |
| 26 | ]); | 29 | ]); |
| 27 | 30 |
src/views/modal-precio-condicion.html
| 1 | <div> | 1 | <div class="modal-header py-1"> |
| 2 | <div class="modal-header py-1"> | 2 | <div class="row w-100"> |
| 3 | <div class="row w-100"> | 3 | <div class="col-lg-6"> |
| 4 | <div class="col-lg-6"> | 4 | <h5 class="modal-title my-1">Precio-Condición</h5> |
| 5 | <h5 class="modal-title my-1">Precio-Condición</h5> | ||
| 6 | </div> | ||
| 7 | </div> | 5 | </div> |
| 8 | </div> | 6 | </div> |
| 9 | <div class="modal-body" id="modal-body"> | 7 | </div> |
| 10 | <div ng-show="!ingreso"> | 8 | <div class="modal-body" id="modal-body"> |
| 11 | <div class="row" ng-show="listaDePreciosAsociada.length == 0"> | 9 | <div ng-show="!ingreso"> |
| 12 | <div class="col"> | 10 | <div class="row" ng-show="listaDePreciosAsociada.length == 0"> |
| 13 | No se encontraron resultados. | 11 | <div class="col"> |
| 14 | </div> | 12 | No se encontraron resultados. |
| 15 | </div> | 13 | </div> |
| 16 | <div class="row px-2"> | 14 | </div> |
| 17 | <div class="col-lg-6"> | 15 | <div class="row px-2"> |
| 18 | <div class="row border-top py-2"> | 16 | <div class="col-lg-6"> |
| 19 | <div class="col-lg-9 col-9">Lista asociada al cliente</div> | 17 | <div class="row border-top py-2"> |
| 20 | <div class="col-lg-3 col-3 text-center"> | 18 | <div class="col-lg-9 col-9">Lista asociada al cliente</div> |
| 21 | <button | 19 | <div class="col-lg-3 col-3 text-center"> |
| 22 | ng-class="{'btn-primary': chosenClientList, 'btn-default': !chosenClientList}" | 20 | <button |
| 23 | class="btn btn-sm p-1" | 21 | ng-class="{'btn-primary': associatedList, 'btn-default': !associatedList}" |
| 24 | ng-click="selectListaDePrecios(listaDePreciosAsociada)"> | 22 | class="btn btn-sm p-1" |
| 25 | <span class="fa fa-circle-thin"></span> | 23 | ng-click="selectListaDePrecios(listaDePreciosAsociada)"> |
| 26 | </button> | 24 | <span class="fa fa-circle-thin"></span> |
| 27 | </div> | 25 | </button> |
| 28 | </div> | 26 | </div> |
| 29 | <div class="row align-items-center pb-2"> | 27 | </div> |
| 30 | <div class="col-lg-2 col-2 text-center" ng-bind="listaDePreciosAsociada.ID"></div> | 28 | <div class="row align-items-center pb-2"> |
| 31 | <div class="col-lg-7 col-7" ng-bind="listaDePreciosAsociada.DES"></div> | 29 | <div class="col-lg-2 col-2 text-center" ng-bind="listaDePreciosAsociada.ID"></div> |
| 32 | <div class="col-lg-3 col-3 text-center"> | 30 | <div class="col-lg-7 col-7" ng-bind="listaDePreciosAsociada.DES"></div> |
| 33 | <button ng-click="verListaProductos(listaDePreciosAsociada.ID)" class="btn btn-sm p-1"> | 31 | <div class="col-lg-3 col-3 text-center"> |
| 34 | <span class="fa fa-eye"></span> | 32 | <button ng-click="verListaProductos(listaDePreciosAsociada.ID)" class="btn btn-sm p-1"> |
| 35 | </button> | 33 | <span class="fa fa-eye"></span> |
| 36 | </div> | 34 | </button> |
| 37 | </div> | 35 | </div> |
| 38 | <div class="row border-top py-2"> | 36 | </div> |
| 39 | <div class="col-lg-9 col-9">Trabajar con otra lista</div> | 37 | <div class="row border-top py-2"> |
| 40 | <div class="col-lg-3 col-3 text-center"> | 38 | <div class="col-lg-9 col-9">Trabajar con otra lista</div> |
| 41 | <button | 39 | <div class="col-lg-3 col-3 text-center"> |
| 42 | ng-class="{'btn-primary': !chosenClientList, 'btn-default': chosenClientList}" | 40 | <button |
| 43 | class="btn btn-sm btn-default p-1" | 41 | ng-class="{'btn-primary': !associatedList, 'btn-default': associatedList}" |
| 44 | ng-click="openListaDePrecios()"> | 42 | class="btn btn-sm btn-default p-1" |
| 45 | <span class="fa fa-circle-thin"></span> | 43 | ng-click="openListaDePrecios()"> |
| 46 | </button> | 44 | <span class="fa fa-circle-thin"></span> |
| 47 | </div> | 45 | </button> |
| 48 | </div> | 46 | </div> |
| 49 | <div ng-show="listaDePreciosAlternativa != null" class="row align-items-center pb-1"> | 47 | </div> |
| 50 | <div class="col-lg-2 col-2 text-center" ng-bind="listaDePreciosAlternativa.ID"></div> | 48 | <div ng-show="listaDePreciosAlternativa != null" class="row align-items-center pb-1"> |
| 51 | <div class="col-lg-7 col-7" ng-bind="listaDePreciosAlternativa.DES"></div> | 49 | <div class="col-lg-2 col-2 text-center" ng-bind="listaDePreciosAlternativa.ID"></div> |
| 52 | <div class="col-lg-3 col-3 text-center"> | 50 | <div class="col-lg-7 col-7" ng-bind="listaDePreciosAlternativa.DES"></div> |
| 53 | <button ng-click="verListaProductos(listaDePreciosAlternativa.ID)" class="btn btn-sm p-1"> | 51 | <div class="col-lg-3 col-3 text-center"> |
| 54 | <span class="fa fa-eye"></span> | 52 | <button ng-click="verListaProductos(listaDePreciosAlternativa.ID)" class="btn btn-sm p-1"> |
| 55 | </button> | 53 | <span class="fa fa-eye"></span> |
| 56 | </div> | 54 | </button> |
| 57 | </div> | 55 | </div> |
| 58 | </div> | 56 | </div> |
| 59 | <div class="col"> | 57 | </div> |
| 60 | <div class="row border-bottom py-1"> | 58 | <div class="col"> |
| 61 | <div class="col text-center font-weight-bold">Plazos</div> | 59 | <div class="row border-bottom py-1"> |
| 60 | <div class="col text-center font-weight-bold">Plazos</div> | ||
| 61 | </div> | ||
| 62 | <div ng-if="!editingPlazo" class="row align-items-center justify-content-end py-2"> | ||
| 63 | <div | ||
| 64 | class="col-lg-9 col-9 text-center" | ||
| 65 | ng-repeat="plazo in plazos"> | ||
| 66 | {{plazo.dias}}, | ||
| 62 | </div> | 67 | </div> |
| 63 | <div ng-if="!editingPlazo" class="row align-items-center justify-content-end py-2"> | 68 | <div class="col-lg-9 col-9 text-center" ng-if="plazos.length == 0"> |
| 64 | <div class="col-lg-9 col-9 text-center">300, 254, 215, 265, 300, 300</div> | 69 | No hay plazos cargados. |
| 65 | <div class="col-lg-3 col-3"> | ||
| 66 | <button class="btn btn-sm text-center" ng-click="editPlazo()"> | ||
| 67 | <span class="fa fa-pencil"></span> | ||
| 68 | </button> | ||
| 69 | </div> | ||
| 70 | </div> | 70 | </div> |
| 71 | <div ng-if="editingPlazo" class="row align-items-center justify-content-end py-2"> | 71 | <div class="col-lg-3 col-3"> |
| 72 | <div class="col-2 col-sm-2 px-2" ng-repeat="plazo in plazos" ng-show="plazos.length > 0"> | 72 | <button class="btn btn-sm text-center" ng-click="editPlazo()"> |
| 73 | <input | 73 | <span ng-class="{'fa-pencil': plazos.length > 0, 'fa-plus': plazos.length == 0}" class="fa"></span> |
| 74 | type="text" | 74 | </button> |
| 75 | class="form-control form-control-sm text-center" | 75 | </div> |
| 76 | ng-model="plazo.dias" | 76 | </div> |
| 77 | limite-numeros-max="3" | 77 | <div ng-if="editingPlazo" class="row align-items-center justify-content-end py-2"> |
| 78 | ng-keyup="validateMinMax(plazo, 0, 365)" | 78 | <div class="col-2 col-sm-2 px-2" ng-repeat="plazo in plazos" ng-show="plazos.length > 0"> |
| 79 | select-on-click | 79 | <input |
| 80 | teclado-virtual | 80 | type="text" |
| 81 | foca-tipo-input | 81 | class="form-control form-control-sm text-center" |
| 82 | solo-positivos> | 82 | ng-model="plazo.dias" |
| 83 | </div> | 83 | limite-numeros-max="3" |
| 84 | <div class="col-lg-2 col-2 text-center"> | 84 | ng-keyup="validateMinMax(plazo, 0, 365)" |
| 85 | <button | 85 | select-on-click |
| 86 | class="btn btn-outline-debo" | 86 | teclado-virtual |
| 87 | ng-click="addMorePlazos()" | 87 | foca-tipo-input |
| 88 | ng-disabled="plazos.length == 4"> | 88 | solo-positivos> |
| 89 | <span class="fa fa-plus"></span> | 89 | </div> |
| 90 | </button> | 90 | <div class="col-lg-2 col-2 text-center"> |
| 91 | </div> | 91 | <button |
| 92 | <div class="col-lg-2 col-2 text-center"> | 92 | class="btn btn-outline-debo" |
| 93 | <button class="btn btn-primary"> | 93 | ng-click="addMorePlazos()" |
| 94 | <span class="fa fa-save"></span> | 94 | ng-disabled="plazos.length == 4"> |
| 95 | </button> | 95 | <span class="fa fa-plus"></span> |
| 96 | </div> | 96 | </button> |
| 97 | </div> | ||
| 98 | <div class="col-lg-2 col-2 text-center"> | ||
| 99 | <button class="btn btn-primary"> | ||
| 100 | <span class="fa fa-save"></span> | ||
| 101 | </button> | ||
| 97 | </div> | 102 | </div> |
| 98 | </div> | 103 | </div> |
| 99 | </div> | 104 | </div> |
| 100 | </div> | 105 | </div> |
| 101 | </div> | 106 | </div> |
| 102 | <div class="modal-footer py-2"> |