Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //(function(window, $) {
- /*
- * :::: CONTAINERS :::: START
- */
- var $containerPago = $("#form-pagos");
- var $table = $containerPago.find("#table-pagos");
- var $_rowTpl = $("#row-template");
- var $modalPago = $("#modal-pago");
- var $modalPrompt = $("#modal-prompt");
- var _MODO102 = false;
- /*
- * :::: CONTAINERS :::: / END
- */
- /*
- * :::: ELEMENTOS CRUCIALES (mas que todo, form-controls) :::: START
- */
- var _mediosPago = {};
- var _mediosPagoArray = [];
- var _registros = [];
- var _registrosIniciales = 0;
- var _currentEditId = -1;
- var _currMax = Infinity;
- var _autoMax = false;
- var _FLAGS = {
- editado: 'M',
- original: 'P',
- eliminado: 'E',
- nuevo: 'N'
- };
- var $tipoPago = $containerPago.find('#tipo');
- var $maxPago = $containerPago.find('#max');
- var $retencionRecibo = $containerPago.find('#monto_retencion_recibo');
- var $netoPago = $containerPago.find('#neto_nc');
- var $retencion10 = $containerPago.find('#monto_retencion_10');
- var $retencion8 = $containerPago.find('#monto_retencion_8');
- var $anioRecibo = $containerPago.find('#anio_recibo');
- var $pago_ret01 = $containerPago.find('#pago_ret01');
- var $spanPorcentajeRetencion = $containerPago.find('#porcentaje_retencion_actual');
- var $btnValidarPagos = $containerPago.find("#validar-datos");
- var $btnEnviarDatos = $containerPago.find("#enviar-datos");
- var $btnSeleccionaPorcentaje = $containerPago.find("#seleccionar-porcentaje");
- /* esto es lo que calcula el max en el modal*/
- var _maxPagable = function(){
- var maxStr = $maxPago.val();
- /*
- * :::: CASO 10X - Variacion de MAX en base a Retencion ::::
- */
- if(numberVal($retencionRecibo.val()) > 0){
- /*
- * :::: CASO 101 - 2015 en adelante ::::
- */
- if(numberVal($anioRecibo.val()) >= 2015 && _registrosIniciales == 0){
- $spanPorcentajeRetencion.text('8.00');
- maxStr = $retencion8.val();
- }
- /*
- * :::: CASO 101 - 2015 en adelante :::: END
- */
- /*
- * :::: CASO 102 - 2014 pa atras ::::
- */
- if(numberVal($anioRecibo.val()) < 2015 && _registrosIniciales == 0){
- console.log('no valido max en modal')
- return Infinity;
- }
- /*
- * :::: CASO 102 - 2015 pa atras :::: END
- */
- }
- /*
- * :::: CASO 10X - Variacion de MAX en base a Retencion :::: / END
- */
- var max = numberVal(maxStr) || 0;
- var neto = numberVal($netoPago.val()) || 0;
- var total = max-neto + Number.MIN_VALUE;
- return total;
- };
- var $medioPago = $modalPago.find("#selMediopago");
- var $montoPago = $modalPago.find("#txtMontopagado");
- var $fechaPago = $modalPago.find("#txtFecpag");
- var $numPago = $modalPago.find("#numPago");
- var $idPago = $modalPago.find("#idPago");
- /*
- * :::: ELEMENTOS CRUCIALES (mas que todo, form-controls) :::: / END
- */
- /*
- * :::: FUNCIONES :::: START
- */
- var renderTabla = function(data, $table){
- var $tbody = $table.find('tbody');
- $tbody.empty();
- _.each(data, function (e) {
- var row = _.clone(e);
- if(row.estado == _FLAGS.eliminado)
- return;
- var template = _.template($_rowTpl.html());
- row["mediosPago"] = _mediosPago;
- row["mto_pag_neto"] = $.number(row["mto_pag_neto"], 2);
- $tbody.append(template(row));
- });
- $table.data('footable').redraw();
- }
- var popularSelect = function(data, $element){
- $element.empty();
- $element.append($('<option/>').text('Seleccione...'));
- _.each(data, function (row) {
- $element.append($('<option/>').val(row.codigo).text(row.descripcion));
- })
- }
- function buscarPago (id) {
- return _.find(_registros, function (e) {
- return e._id == id
- });
- }
- function eliminarPago (id) {
- for(var i in _registros)
- if(_registros[i]._id == id){
- _registros[i].estado = _FLAGS.eliminado;
- }
- }
- function agregarPago (row) {
- var obj = {}
- // mapeo a mano
- obj.cod_mediopago = row.selMediopago;
- obj.mto_pag_neto = row.txtMontopagado;
- obj.fec_pago = row.txtFecpag;
- obj.num_pago = row.numPago;
- obj._id = _.uniqueId();
- obj.estado = _FLAGS.nuevo;
- _registros.push(obj);
- }
- function editarPago (row) {
- for(var i in _registros){
- var obj = _registros[i];
- if(obj._id == row.idPago){
- obj.cod_mediopago = row.selMediopago;
- obj.mto_pag_neto = row.txtMontopagado;
- obj.fec_pago = row.txtFecpag;
- obj.num_pago = row.numPago;
- obj.estado = !row.numPago ? _FLAGS.nuevo : _FLAGS.editado;
- }
- }
- }
- function validarPago (row) {
- return true;
- }
- function inyectar_data_form ($form, data) {
- for(var i in data){
- var row = data[i];
- for(var col in row) {
- var name = +['registros[',i,'][',col,']'].join('');
- $('<input/>', {type: 'hidden', name: name}).val(row[col]).appendTo($form);
- }
- }
- }
- function calcularMaximoDisponible () {
- var registros_validos = _.filter(_registros, function ( e ) {
- return e.estado != _FLAGS.eliminado && e._id != _currentEditId;
- });
- var total_registros = 0;
- if(registros_validos.length > 0)
- _.each(registros_validos, function(curr){
- total_registros += numberVal(curr.mto_pag_neto) || 0;
- })
- return _maxPagable() - total_registros;
- }
- function validacionManualPagos () {
- var total = _.chain(_registros).map(function ( e ) {
- return numberVal(e.mto_pag_neto);
- }).reduce(function (curr, next) {
- return curr+next;
- }, 0).value();
- if(total > _currMax){
- alert('Monto maximo excedido');
- }else{
- $btnEnviarDatos.removeClass('hidden');
- }
- }
- /*
- * :::: FUNCIONES :::: / END
- */
- /*
- * :::: HANDLERS :::: START
- */
- $containerPago.find('.crear-pago').on('click', function (e) {
- // tipoPago = cuarta, caso restrictivo
- var registrosValidos = _.filter(_registros, function (e) {
- return e.estado != _FLAGS.eliminado
- }).length;
- if($tipoPago.val() == '03' && registrosValidos > 0){
- alert("Solo se permite UN REGISTRO");
- return;
- }
- $modalPago.find('.operacion').text('Registrar');
- $modalPago.find('.modal-info-registro').removeClass('hidden');
- $medioPago.val('');
- $montoPago.val('');
- $fechaPago.val('');
- $numPago.val('');
- $modalPago.modal('show');
- if(_MODO102)
- $btnEnviarDatos.addClass('hidden');
- });
- $containerPago.on('click', '.editar-pago', function (e) {
- var $closest = $(e.target).closest('.editar-pago');
- if($closest.hasClass('hidden'))
- return;
- var id = $closest.data('target-id');
- $modalPago.find('.operacion').text('Editar');
- $modalPago.find('.modal-info-registro').addClass('hidden');
- var row = buscarPago(id);
- $medioPago.val(row.cod_mediopago);
- $montoPago.val(row.mto_pag_neto);
- $fechaPago.val(row.fec_pago);
- $numPago.val(row.num_pago);
- $idPago.val(id);
- _currentEditId = id;
- $modalPago.modal('show');
- if(_MODO102)
- $btnEnviarDatos.addClass('hidden');
- });
- $containerPago.on('click', '.eliminar-pago', function (e) {
- var id = $(e.target).closest('.eliminar-pago').data('target-id');
- eliminarPago(id);
- renderTabla(_registros, $table);
- if(_MODO102)
- $btnEnviarDatos.addClass('hidden');
- });
- $fechaPago.on('click', function (e) {
- $fechaPago.data('datepicker').show();
- });
- /*
- * :::: CASO 10X - Variacion de MAX en base a Retencion ::::
- */
- $btnValidarPagos.on('click', function (e) {
- if(_registros.length == 0){
- alert('Por favor, registre un pago antes de validar.');
- return;
- }
- // Fecha esta guardado en formato dd/mm/yyyy
- // aprovechare la conveniencia y cortare la parte del yyyy para comparar.
- // (substr(6, 4))
- $btnEnviarDatos.addClass('hidden');
- var tiene2014 = _.chain(_registros).filter(function (e) {
- return e.estado != _FLAGS.eliminado
- }).map(function (e) {
- return e.fec_pago.substr(6,4)
- }).contains('2014').value();
- if(tiene2014){
- _currMax = numberVal($retencion8.val());
- $spanPorcentajeRetencion.text('8.00');
- _autoMax = true;
- $modalPrompt.modal('hide');
- }else{
- _autoMax = false;
- $modalPrompt.modal('show');
- }
- });
- $modalPrompt.find('form').on('submit', function (e) {
- e.preventDefault();
- var data = $(e.target).serializeObject();
- if(data.tipoRetencion == "8"){
- _currMax = numberVal($retencion8.val());
- $spanPorcentajeRetencion.text('8.00');
- }else{
- _currMax = numberVal($retencion10.val());
- $spanPorcentajeRetencion.text('10.00');
- }
- $modalPrompt.modal('hide');
- })
- $modalPrompt.on('hidden.bs.modal', function (e) {
- if(!_autoMax)
- validacionManualPagos();
- });
- /*
- * :::: CASO 10X - Variacion de MAX en base a Retencion :::: / END
- */
- $btnEnviarDatos.on('click', function (e) {
- var url = 'regpagorhe.do?action=capturaCriterioPagoParcialRecibo3';
- $.ajax({
- url: url,
- method: 'post',
- dataType: 'json',
- data: {
- registros: JSON.stringify(_registros)
- },
- success: function () {
- // body...
- //alert('redirecting');
- window.location.href= 'regpagorhe.do?action=capturaCriterioPagoParcialRecibo4';
- },
- error: function () {
- // body...
- alert('e');
- window.location.href= 'regpagorhe.do?action=capturaCriterioPagoParcialRecibo4';
- }
- });
- });
- /*
- * :::: HANDLERS :::: / END
- */
- /*
- * :::: FORM VALIDATE :::: START
- */
- function preparePagos (data) {
- _registrosIniciales = data.registros.length;
- _.each(data.registros, function(row){
- row["_id"] = _.uniqueId();
- row["estado"] = _FLAGS.original;
- })
- _registros = data.registros;
- $table.footable();
- renderTabla(data.registros, $table);
- }
- $.ajax({
- url: '/a/json/medios-de-pago.json',
- success: function(data) {
- _mediosPagoArray = data;
- _.each(_mediosPagoArray, function (medio) {
- _mediosPago[medio.codigo] = medio.descripcion;
- })
- popularSelect(data, $medioPago);
- },
- method: 'post'
- })
- $modalPago.find('form').validate(_.extend(window._validatorWallSettings, {
- rules: {
- selMediopago: {
- required: true,
- min: 0 + Number.MIN_VALUE
- },
- txtMontopagado: {
- required: true,
- number: true,
- min: 0 + Number.MIN_VALUE,
- max: {
- param: calcularMaximoDisponible
- },
- equal: {
- depends: function () {
- return $tipoPago.val() == '03';
- },
- param: calcularMaximoDisponible
- }
- },
- txtFecpag: {
- required: true
- }
- },
- messages :{
- txtMontopagado: {
- max: function () {
- return "el monto no puede superar " + $.number(calcularMaximoDisponible(), 2);
- },
- equal: function () {
- return "el monto debe ser igual a " + $.number(calcularMaximoDisponible(), 2);
- }
- }
- },
- debug: true,
- submitHandler: function (form) {
- var $form = $(form)
- var formData = $form.serializeObject();
- var result = validarPago(formData);
- if(result == true){
- if($form.find('.operacion').text() == 'Editar'){
- editarPago(formData);
- _currentEditId = -1;
- }
- else
- agregarPago(formData);
- if(_MODO102 && formData.txtFecpag.substr(6,4) == '2014'){
- $spanPorcentajeRetencion.text('10.00');
- }
- renderTabla(_registros, $table);
- $modalPago.modal('hide');
- }
- }
- }));
- /*
- * :::: FORM VALIDATE :::: END
- */
- /*
- * :::: SETUP :::: START
- */
- $fechaPago.datepicker({
- appendTo: $modalPago.find('.modal-body')
- });
- $(".number").number(true, 2);
- var url = 'regpagorhe.do?action=getListaPagos';
- $.ajax({
- url: url,
- success: function(data) {
- preparePagos(data);
- },
- method: 'post',
- dataType: 'json'
- });
- $btnValidarPagos.addClass('hidden');
- if(
- _registrosIniciales == 0
- && numberVal($retencionRecibo.val()) > 0
- && numberVal($anioRecibo.val()) == 2014
- ){
- _MODO102 = true;
- $btnValidarPagos.removeClass('hidden');
- $btnEnviarDatos.addClass('hidden');
- $btnSeleccionaPorcentaje.addClass('hidden');
- }
- $spanPorcentajeRetencion.text('0.00');
- /*
- * :::: SETUP :::: / END
- */
- //})(window, jQuery)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement