martes, 20 de febrero de 2018

C# - JQGRID con eventos (edicion in line)

--------------------------------------------------------------------------------------------------------------------
Producto de una migracion de DEVEXPRESS a JQUERY, manejo los calculos en session, y se
van actualizando tanto en pantalla como en sesión.-
--------------------------------------------------------------------------------------------------------------------



--------------------------------------------------------------------------------------------------------------------
.aspx
--------------------------------------------------------------------------------------------------------------------
<%@ Page Title="Evaluador de Pagos" Language="C#" MasterPageFile="~/Site.Master"
    AutoEventWireup="true" CodeBehind="EvaluadorPagos.aspx.cs" Inherits="LeaseOperWeb.Paginas.Cobranza.EvaluarPagos.EvaluadorPagos" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    <script src="../../../Scripts/JSValidadores.js" type="text/javascript"></script>
    <%-- <link href="../../../css/style-css.css" rel="stylesheet" type="text/css" />--%>
    <!--#include file="../../../Scripts/jquery.includes.htm"-->
    <script type="text/javascript" language="javascript">
        var alert = 0;
        $(document).ready(function () {
            defineGvEvaluador();
            defineFormato();
        });
        var lastsel;
        function defineGvEvaluador() {
            try {
                $("#grid").jqGrid({
                    datatype: "local",
                    colNames: ['Rut''Operación''T.C''Cta.''Descrip.Concepto''Descrip.Estado Pago''Concepto''Tipo Pago''Fecha Vcto.''Fecha Pago''Cuota Mo.''Cuota $''Mora Mo''Interes Mora $''Gast Cobr M.O''Gasto Cob.$''Total a Pagar $''Monto Pagado $''corre_cons''num_consulta'],
                    colModel: [
                        { name: 'rut', index: 'rut', align: 'center', width: '100px', editable: false, hidden: true },
                        { name: 'operacion', index: 'operacion', align: 'center', width: '100px', editable: false, hidden: false },
                        { name: 'cod_tipo_cuota', index: 'cod_tipo_cuota', align: 'center', width: '100px', editable: false, hidden: false },
                        { name: 'num_cuota', index: 'num_cuota', align: 'center', width: '100px', editable: false, hidden: false },
                        { name: 'descripcion_concepto', index: 'descripcion_concepto', align: 'center', width: '100px', editable: false, hidden: false },
                        { name: 'desc_est_pago', index: 'desc_est_pago', align: 'center', width: '100px', editable: false, hidden: false },
                        { name: 'concepto_norenta', index: 'concepto_norenta', align: 'center', width: '100px', editable: false, hidden: true },
                        { name: 'cod_estado_pago', index: 'cod_estado_pago', align: 'center', width: '100px', editable: false, hidden: true },
                        { name: 'fecha_vencimiento', index: 'fecha_vencimiento', align: 'center', width: '100px', editable: false, hidden: false },
                        { name: 'fecha_pago', index: 'fecha_pago', align: 'center', width: '100px', editable: true, hidden: false },
                        { name: 'valor_cuota_mo', index: 'valor_cuota_mo', align: 'center', width: '100px', formatter: 'number', formatoptions: { decimalPlaces: 2 }, editable: false, hidden: false },
                        { name: 'paridad', index: 'paridad', align: 'center', width: '100px', formatter: 'number', formatoptions: { decimalPlaces: 0 }, editable: false, hidden: false },
                        { name: 'interes_mora_mo', index: 'interes_mora_mo', align: 'center', width: '100px', formatter: 'number', formatoptions: { decimalPlaces: 2 }, editable: false, hidden: false },
                        { name: 'interes_mora_pe', index: 'interes_mora_pe', align: 'center', width: '100px', formatter: 'number', formatoptions: { decimalPlaces: 0 }, editable: true, hidden: false },
                        { name: 'gastos_cobranza_mo', index: 'gastos_cobranza_mo', align: 'center', width: '100px', formatter: 'number', formatoptions: { decimalPlaces: 2 }, editable: false, hidden: false },
                        { name: 'gastos_cobranza', index: 'gastos_cobranza', align: 'center', width: '100px', formatter: 'number', formatoptions: { decimalPlaces: 0 }, editable: true, hidden: false },
                        { name: 'valor_total_pesos', index: 'valor_total_pesos', align: 'center', width: '100px', formatter: 'number', formatoptions: { decimalPlaces: 0 }, editable: false, hidden: false },
                        { name: 'monto_cancelado', index: 'monto_cancelado', align: 'center', width: '100px', formatter: 'number', formatoptions: { decimalPlaces: 0 }, editable: false, hidden: false },
                        { name: 'corre_cons', index: 'corre_cons', align: 'center', width: '100px', editable: false, hidden: true },
                        { name: 'num_consulta', index: 'num_consulta', align: 'center', width: '100px', editable: false, hidden: true }
                    ],
                    multiselect: false,
                    rowNum: -1,
                    footerrow: true,
                    pgbuttons: true,
                    viewrecords: true,
                    width: 980,
                    shrinkToFit: false,
                    autowidth: false,
                    forceFit: true,
                    height: 300,
                    editurl: jutils.pageName(),
                    cellEdit: true//PERMITEN LA EDICION POR CELDA
                    cellsubmit: 'clientArray'//PERMITEN LA EDICION POR CELDA
                    onSelectRow: function (id, status) {
                        if (id && id !== lastsel) {
                            $('#grid').jqGrid('restoreRow', lastsel);
                        } jQuery("#grid").jqGrid('editRow', id, true);
                    }
                    , afterEditCell: function (id, name, val, iRow, iCol) {
                        if (name === 'fecha_pago') {
                            jQuery("#" + iRow + "_fecha_pago""#grid").datepicker({
                                changeMonth: true,
                                changeYear: true,
                                dateFormat: 'dd/mm/yy',
                                firstDay: 1,
                                yearSuffix: '',
                                dayNamesMin: ['Dom''Lun''Mar''Mier''jue''Vie''Sab'],
                                monthNamesShort: ["Ene""Feb""Mar""Abr",
                                    "May""Jun""Jul""Ago""Sep",
                                    "Oct""Nov""Dic"]
                            });
                            jQuery("#" + iRow + "_fecha_pago""#grid").attr('readonly'true);
                        }
                        if (name === 'interes_mora_pe') {
                            jQuery("#" + iRow + "_interes_mora_pe""#grid").keyup(function () {
                                this.value = this.value.replace(/[^0-9\.]/g, '');
                            });
                        }
                        if (name === 'gastos_cobranza') {
                            jQuery("#" + iRow + "_gastos_cobranza""#grid").keyup(function () {
                                this.value = this.value.replace(/[^0-9\.]/g, '');
                            });
                        }
                    },
                    beforeSubmitCell: function (id, name, val, iRow, iCol) {
                        RefreshChangeValueCell(id, name, val, iRow - 1, iCol);
                    },
                    gridComplete: function () {
                        var colSumTotalPesos = jQuery("#grid").jqGrid('getCol''valor_total_pesos'false'sum');
                        var colSumToTalPagado = jQuery("#grid").jqGrid('getCol''monto_cancelado'false'sum');
                        jQuery("#grid").jqGrid('footerData''set', { 'valor_total_pesos': colSumTotalPesos, 'monto_cancelado': colSumToTalPagado });
                    }
                });
            } catch (e) {
                jutils.showError(e, arguments.callee.name);
            }
        }
 
        function RefreshChangeValueCell(id, name, val, iRow, iCol) {
            try {
                if (name === 'fecha_pago' || name === 'monto_cancelado') {
                    var paramsVal = "{'type':'" + name + "','value':'" + val + "','index':'" + iRow + "'}";
                    var data = jutils.ajax.serverCall("ChangeDateOrAmountToPay", paramsVal, arguments.callee.name);
                    if (data !== 'OK') {
                        showMessage(data);
                        return;
                    }
                }
                var params = "{'type':'" + name + "','value':'" + val + "','index':'" + iRow + "'}";
                jutils.ajax.getJsonData_Async("RefreshChangeValueCell", params, arguments.callee.name, DataBindRefresh);
 
                var paramsMsg = "{}";
                var msg = jutils.ajax.serverCall("ReviewMsgDet", paramsMsg, arguments.callee.name);
                msg = msg.replace(/['"]+/g, '');
                if (msg !== 'OK') {
                    showMessage(msg);
                    return;
                }
 
            } catch (e) {
                jutils.showError(e, arguments.callee.name);
            }
        }
 
        function defineFormato() {
            $("#textOperacion").keyup(function () {
                this.value = this.value.replace(/[^0-9\.]/g, '');
            });
 
            $("#txtNumConsulta").keyup(function () {
                this.value = this.value.replace(/[^0-9\.]/g, '');
            });
 
            $("#textNumFactura").keyup(function () {
                this.value = this.value.replace(/[^0-9\.]/g, '');
            });
 
            $('#textRut').Rut({
                on_error: function () { showMessage('El RUT ingresado no es válido'); },
                format_on: 'keyup'
            });
 
            var currentDate = new Date();
            $("#textFecha").datepicker({
                changeMonth: true,
                changeYear: true,
                dateFormat: 'dd/mm/yy',
                firstDay: 1,
                yearSuffix: '',
                dayNamesMin: ['Dom''Lun''Mar''Mier''jue''Vie''Sab'],
                monthNamesShort: [
                    "Ene""Feb""Mar""Abr",
                    "May""Jun""Jul""Ago""Sep",
                    "Oct""Nov""Dic"
                ]
            });
            $.datepicker.setDefaults($.datepicker.regional['es']);
            $("#textFecha").datepicker("setDate", currentDate);
        }
 
        function OperacionBlur() {
            $('#grid').clearGridData(true);
            if ($("#textOperacion").val() === '') {
                showMessage('Debe indicar la operación');
                return;
            }
            CargaGrillaEvaluarPagos('operacion');
        }
 
        function NumConsultaBlur() {
            $('#grid').clearGridData(true);
            if ($("#txtNumConsulta").val() === '') {
                showMessage('Debe indicar n° Consulta');
                return;
            }
            CargaGrillaEvaluarPagos('numConsulta');
        }
 
        function RutBlur() {
            $('#grid').clearGridData(true);
            if ($("#textRut").val() === '') {
                showMessage('Debe indicar Rut');
                return;
            }
            if ($.Rut.validar($("#textRut").val()) === false) {
                showMessage('El RUT ingresado no es válido');
                return;
            }
            CargaGrillaEvaluarPagos('rut');
        }
 
        function TipoFacturaChange() {
            if ($("#cmbTipoFactura").val() === '0') {
                return;
            }
            if ($("#textNumFactura").val() === '') {
                showMessage('Debe indicar n° Factura');
                return;
            }
            CargaGrillaEvaluarPagos('factura');
        }
 
        function CargaGrillaEvaluarPagos(value) {
            try {
                var sinCosto = 0;
                if ($("#checkSinCost").is(":checked") === true)
                    sinCosto = 1;
                var params;
                if (value === 'operacion') {
                    var operacion = $("#textOperacion").val();
                    params = "{'operacion':'" + operacion + "','rut':'" + 0 + "','tipo':'" + 0 + "','numFact':'" + 0 + "','numConsulta':'" + 0 + "','tipoConsulta':'" + 'operacion' + "','sinCosto':'" + sinCosto + "'}";
                    jutils.ajax.getJsonData_Async("LoadJqGrid", params, arguments.callee.name, DataBind);
                }
                if (value === 'numConsulta') {
                    var numConsulta = $("#txtNumConsulta").val();
                    params = "{'operacion':'" + 0 + "','rut':'" + 0 + "','tipo':'" + 0 + "','numFact':'" + 0 + "','numConsulta':'" + numConsulta + "','tipoConsulta':'" + 'numConsulta' + "','sinCosto':'" + sinCosto + "'}";
                    jutils.ajax.getJsonData_Async("LoadJqGrid", params, arguments.callee.name, DataBind);
                }
                if (value === 'rut') {
                    var rut = $("#textRut").val();
                    rut = rut.replace(".""").replace(".""").replace(".""");
                    rut = rut.split("-")[0];
                    params = "{'operacion':'" + 0 + "','rut':'" + rut + "','tipo':'" + 0 + "','numFact':'" + 0 + "','numConsulta':'" + 0 + "','tipoConsulta':'" + 'rut' + "','sinCosto':'" + sinCosto + "'}";
                    jutils.ajax.getJsonData_Async("LoadJqGrid", params, arguments.callee.name, DataBind);
                }
                if (value === 'factura') {
                    var factura = $("#textNumFactura").val();
                    params = "{'operacion':'" + 0 + "','rut':'" + 0 + "','tipo':'" + 0 + "','numFact':'" + factura + "','numConsulta':'" + 0 + "','tipoConsulta':'" + 'factura' + "','sinCosto':'" + sinCosto + "'}";
                    jutils.ajax.getJsonData_Async("LoadJqGrid", params, arguments.callee.name, DataBind);
                }
                var paramsMsg = "{}";
                var msg = jutils.ajax.serverCall("ReviewMsgDet", paramsMsg, arguments.callee.name);
                msg = msg.replace(/['"]+/g, '');
                if (msg !== 'OK') {
                    showMessage(msg);
                    return;
                }
 
                msg = jutils.ajax.serverCall("ReviewMsgNec", paramsMsg, arguments.callee.name);
                msg = msg.replace(/['"]+/g, '');
                if (msg !== 'OK') {
                    showMessage(msg);
                    return;
                }
                //                var rowCount = $("#grid").getGridParam("reccount"); // JC : Eliminar en proxima revision
                //                if (rowCount > 0) {
                CargaEncabezado();
                //                }
            }
            catch (e) {
                jutils.showError(e, arguments.callee.name);
            }
        }
 
        function DataBind(data) {
            if (data != null && data.substring(0, 1) === '*') {
                showMessage(data, 'Atención');
                return;
            }
            var jsondata = $.parseJSON(data);
            $('#grid').clearGridData(true);
            $(jsondata).each(function (e) {
                $("#grid").addRowData(e, this);
            });
        }
 
        function CargaEncabezado() {
            try {
                var paramsEnc = "{}";
                var data = jutils.ajax.serverCall("LoadHead", paramsEnc, arguments.callee.name);
 
                //                if (data.substring(0, 1) === '*') {
                //                    showMessage(data, 'Atención');
                //                    return;
                //                }
                $("#txtNumConsulta").val(data[0]['num_consulta']);
                $("#textOperacion").val(data[0]['operacion']);
                if (data[0]['numero_factura'] === null)
                    $("#textNumFactura").val('0');
                else
                    $("#textNumFactura").val(data[0]['numero_factura']);
                $("#textRut").val(formatNumber(data[0]['rut_cliente']) + '-' + data[0]['dv'].toString());
                $("#textNombre").val(data[0]['nombre_cliente']);
                if (data[0]['tipo'] === null)
                    $("#cmbTipoFactura").val('0');
                else
                    $("#cmbTipoFactura").val(data[0]['tipo']);
            } catch (e) {
                jutils.showError(e, arguments.callee.name);
            }
        }
 
        function formatNumber(value) {
            var retorno = value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
            return retorno;
        }
 
        function ClearTexts() {
            $("#txtNumConsulta").val('');
            $("#textOperacion").val('');
            $("#textNumFactura").val('');
            $("#textRut").val('');
            $("#textNombre").val('');
            //$("#textFecha").val('');
            $("#cmbTipoFactura").val('0');
            $('#grid').clearGridData(true);
 
            var params = "{}";
            jutils.ajax.serverCall("ClearSession", params, arguments.callee.name);
        }
 
        //Borrado desde abajo hacia arriba automático
        //        function BorrarFila() {
        //            try {
        //                var rowid = $("#grid").getGridParam("reccount") - 1;
        //                if (rowid >= 0) {
 
        //                    $('#grid').jqGrid('delRowData', rowid);
 
        //                    var params = "{'rowCount':'" + rowid + "'}";
        //                    jutils.ajax.serverCall("DelRow", params, arguments.callee.name);
        //                }
        //            } catch (e) {
        //                jutils.showError(e, arguments.callee.name);
        //            }
        //        }
 
        //Borrado selectivo por Row
        function BorrarFila() {
            try {
                var rowid = $("#grid").jqGrid('getGridParam''selrow');
                var rowData = jQuery("#grid").getRowData(rowid);
                var colData = rowData['concepto_norenta'];
                var correlativoInConsulta = rowData['corre_cons'];
                var rowCount = $("#grid").getGridParam("reccount") - 1;
 
                if (rowid >= 0) {
                    if (colData !== '1') {
                        $('#grid').jqGrid('delRowData', rowid);
 
                        var params = "{'correlativoInConsulta':'" + correlativoInConsulta + "','rowCount':'" + rowCount + "'}";
                        jutils.ajax.serverCall("DelRow", params, arguments.callee.name);
 
                    } else {
                        jutils.confirmMessage("Se eliminarán todas las rentas hacia abajo""Eliminar Rentas", EliminarRentas);
                    }
                } else {
                    showMessage('Debe seleccionar una fila para Eliminar''Atención');
                    return;
 
                }
            } catch (e) {
                jutils.showError(e, arguments.callee.name);
            }
        }
 
        function EliminarRentas() {
            //OBTENGO EL ID ROW A ELIMINAR
            var rowidToDelete = $("#grid").jqGrid('getGridParam''selrow');
            //OBTENGO EL INDICE PARA ELIMNAR EN SESSION EN .CS
            var rowIndex = $('#' + $.jgrid.jqID(rowidToDelete))[0].rowIndex;
            //OBTENGO LA CANTIDAD DE REGISTROS PARA ELIMINAR EN SESSION EN .CS
            var rowCount = $("#grid").getGridParam("reccount");
 
 
            if (rowidToDelete >= 0) {
                //1.OBTENGO TODOS LOS IDS DE LA GRILLA
                var rows = jQuery("#grid").getDataIDs();
                //2.LOS RECORRO
                for (var a = 0; a < rows.length; a++) {
                    //OBTENGO EL IDROW DESDE MI ARREGLO "rows"
                    var rowFor = rows[a];
                    //3.SI EL IDROW ES MENOR AL ID A ELIMINAR NO HAGO NADA, DE LO CONTRARIO ELIMINO LA FILA DE LA GRILLA
                    if (parseInt(rowFor) >= parseInt(rowidToDelete)) {
                        var row1 = jQuery("#grid").getRowData(rowFor);
                        var colDataFor1 = row1['concepto_norenta'];
                        if (colDataFor1 === '1') {
                            $('#grid').jqGrid('delRowData', rowFor);
                        }
                    }
                }
                var params = "{'rowId':'" + rowIndex + "','rowCount':'" + rowCount + "'}";
                jutils.ajax.serverCall("DelRowMassive", params, arguments.callee.name);
            }
        }
 
        function Grabar() {
            try {
                var rowCount = $("#grid").getGridParam("reccount");
                if (rowCount > 0) {
                    var params = "{}";
                    var data = jutils.ajax.serverCall("Save", params, arguments.callee.name);
                    data = data.replace(/['"]+/g, '');
                    if (data === 'Grabación efectuada OK.') {
                        RefreshBeforeSave();
                        showMessage(data, 'Atención');
                    } else {
                        showMessage(data, 'Atención');
                        return;
                    }
                } else {
                    showMessage('No hay registros para Guardar''Atención');
                    return;
                }
            } catch (e) {
                jutils.showError(e, arguments.callee.name);
            }
        }
 
        function RefreshBeforeSave() {
            var params = "{}";
            jutils.ajax.getJsonData_Async("RefreshBeforeSave", params, arguments.callee.name, DataBindRefresh);
        }
 
        function DataBindRefresh(data) {
            if (data != null && data.substring(0, 1) === '*') {
                showMessage(data, 'Atención');
                return;
            } else {
                var jsondata = $.parseJSON(data);
                $('#grid').clearGridData(true);
                $(jsondata).each(function (e) {
                    $("#grid").addRowData(e, this);
                });
            }
        }
 
        function PreExcel() {
            jutils.confirmMessage("Se generará Excel en base a últimos registros Guardados""Atención", Excel);
        }
 
        var flag = 0;
        function Excel() {
 
            var id = '325';
            var wsdata = "{'iddocx':'" + id + "'}";
            var hoja = jutils.ajax.getJsonData("RecuperaNomDoc", wsdata, arguments.callee.name);
            var url;
            var downloadWindow;
            var opciones = "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=1, height=1, top=1, left=1 ";
 
            var numConsulta = $("#txtNumConsulta").val();
            if (numConsulta == '') {
                showMessage('No hay número de consulta para realizar exportación''Atención');
                return;
            }
            var wsdataXls = "{'num_consulta':'" + numConsulta + "','hoja':'" + hoja + "'}";
            jutils.ajax.getJsonData_Async("ReporteXls", wsdataXls, arguments.callee.name, showReportExcel);
 
        }
 
        function showReportExcel(data) {
            if (data != null && data !== "" && data.substring(0, 1) !== "*") {
                if (data === 'SD') {
                    showMessage('No se encontraron Registros''Atención');
                    return;
                } else {
                    var wsdata = "{}";
                    var url = jutils.ajax.getJsonData("GetRutaCargaExcel", wsdata, arguments.callee.name);
                    url = url + data;
                    var opciones = "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, width=100, height=100, top=0, left=2500";
                    window.open(url, '', opciones);
                }
            }
            else {
                showMessage('Ha ocurrido un error. ' + data, 'Atención');
            }
        }
 
        function PreVer() {
            jutils.confirmMessage("Se generará Informe en base a últimos registros Guardados""Atención", Ver);
        }
 
        function Ver() {
            var numConsulta = $("#txtNumConsulta").val();
            if (numConsulta === '') {
                showMessage('No hay número de consulta para realizar exportación''Atención');
                return;
            }
            var wsdata = "{'num_consulta':'" + numConsulta + "'}";
            jutils.ajax.getJsonData_Async("DownloadPDF", wsdata, arguments.callee.name, showReport);
 
        }
 
        function showReport(data) {
            if (data != null && data !== "" && data.substring(0, 1) !== "*")
                if (data !== 'SD') {
                    document.getElementById('FrameDialog').src = data;
                } else {
                    showMessage('No se encontraron Registros''Atención');
                    return;
                }
 
            else {
                var wsdata = "{}";
                var url = jutils.ajax.getJsonData("GetRutaCRError", wsdata, arguments.callee.name);
                url = url + data;
                document.getElementById('FrameDialog').src = url;
            }
 
            $("#frmPdf").dialog({
                title: 'Informe Informe Evaluar Pagos',
                height: 800,
                width: 900,
                resizable: false,
                modal: true,
                open: function () {  //para que funcione correctamente en emulación IE8
                    $(".ui-dialog-titlebar-close").show();
                    $('.ui-dialog').css('z-index', 103);
                    $('.ui-widget-overlay').css('z-index', 102);
                }
 
            });
        }
    </script>
    <form id="frmPdf" style="displaynone">
    <table width="100%">
        <tr>
            <td>
                <iframe id="FrameDialog" height="800px" width="100%" scrolling="yes" style="z-index-1;">
                </iframe>
            </td>
        </tr>
    </table>
    </form>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="HeaderContent" runat="server">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <td valign="top" id="td-descrip" class="style21">
                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                        <td>
                            &nbsp;
                        </td>
                    </tr>
                    <tr>
                        <td class="td-titulos">
                            Evaluar Pagos
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                <tr>
                                    <td width="40">
                                        &nbsp;
                                    </td>
                                    <td class="lin-borde">
                                        &nbsp;
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                    <tr>
                        <td class="mig">
                            Cobranza / Cobranza / Evaluar Pagos
                        </td>
                    </tr>
                </table>
                <!-------------------------------------------------------------titulo y miga de pan-------------------------------------------------------------------------------------------->
            </td>
        </tr>
        <tr>
            <td valign="top">
                &nbsp;
            </td>
        </tr>
        <tr>
            <td valign="top">
            </td>
        </tr>
        <tr>
            <td valign="top">
                &nbsp;
            </td>
        </tr>
        <tr>
            <td valign="top">
                <!---------------------------------Tabla de ejecutivo-------------------------------->
                <table width="100%" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                        <td width="10">
                            &nbsp;
                        </td>
                        <td>
                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                <tr>
                                    <td>
                                        <table width="100%" border="0" cellspacing="0" cellpadding="0" class="borde">
                                            <tr>
                                                <td>
                                                    <div class="modul">
                                                        <div class="modul_top">
                                                            <div class="modul_top_right">
                                                                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                                    <tr>
                                                                        <td width="9">
                                                                        </td>
                                                                        <td class="modul_fd">
                                                                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                                                <tr>
                                                                                    <td class="modul_fd_tit">
                                                                                        PARAMETROS DE CONSULTA
                                                                                    </td>
                                                                                </tr>
                                                                            </table>
                                                                        </td>
                                                                        <td width="9">
                                                                        </td>
                                                                    </tr>
                                                                </table>
                                                            </div>
                                                        </div>
                                                        <div class="modul_content">
                                                        </div>
                                                    </div>
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="modul_bordes">
                                        <table width="100%" border="0" cellspacing="0" cellpadding="0" class="caja-datos">
                                            <tr>
                                                <td width="10">
                                                </td>
                                                <td height="10">
                                                </td>
                                                <td>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td width="10" rowspan="3">
                                                </td>
                                                <td>
                                                    <table class="style1">
                                                        <tr>
                                                            <td class="style8" colspan="12">
                                                                <table width="100%">
                                                                    <tr>
                                                                        <td class="style17">
                                                                            Rut
                                                                        </td>
                                                                        <td class="style16" align="left">
                                                                            <input id="textRut" type="text" maxlength="13" class="caja-datos" onblur="RutBlur()" />
                                                                        </td>
                                                                        <td class="style18">
                                                                            Nombre Cliente
                                                                        </td>
                                                                        <td align="left" class="style19">
                                                                            <input id="textNombre" type="text" maxlength="100" class="caja-datos" readonly="readonly"
                                                                                style="width250px" />
                                                                        </td>
                                                                        <td align="left" class="style20">
                                                                            <input id="checkSinCost" type="checkbox" maxlength="100" class="caja-datos" />
                                                                            Sin Costo Cob.
                                                                        </td>
                                                                        <td align="left" class="style23">
                                                                        </td>
                                                                        <td align="left">
                                                                            <input id="btnLimpiar" type="button" value="Limpiar" class="btn_limpiar" onclick="ClearTexts()"
                                                                                title="Limpiar" />
                                                                        </td>
                                                                    </tr>
                                                                </table>
                                                            </td>
                                                        </tr>
                                                        <tr>
                                                            <td class="style24">
                                                                Operación
                                                            </td>
                                                            <td class="style9">
                                                                <input id="textOperacion" type="text" maxlength="20" class="caja-datos" onblur="OperacionBlur()" />
                                                            </td>
                                                            <td class="style10">
                                                                N° Consulta
                                                            </td>
                                                            <td align="left" class="style7">
                                                                <input id="txtNumConsulta" type="text" maxlength="20" class="caja-datos" style="width100px;
                                                                    horiz-alignright" onblur="NumConsultaBlur()" />
                                                            </td>
                                                            <td class="style8">
                                                                N° Factura
                                                            </td>
                                                            <td align="left" class="style12">
                                                                <input id="textNumFactura" type="text" maxlength="20" class="caja-datos" style="width100px;
                                                                    horiz-alignright" />
                                                            </td>
                                                            <td class="style13" align="left">
                                                                <select id="cmbTipoFactura" class="caja-datos" style="width150px;" onchange="TipoFacturaChange()">
                                                                    <option value="0" selected="selected">Sin Filtro</option>
                                                                    <option value="1">FA AF-Afecta</option>
                                                                    <option value="2">FA EX-Exenta</option>
                                                                    <option value="2">FA AEL-Afecta Electrónica</option>
                                                                    <option value="2">FA EEL-Exenta Electrónica</option>
                                                                </select>
                                                            </td>
                                                            <td class="style11">
                                                                Fecha
                                                            </td>
                                                            <td class="style11" align="left">
                                                                <input id="textFecha" readonly="readonly" width="100px" class="FormElement ui-widget-content " />
                                                                <td class="style11">
                                                                </td>
                                                                <td class="style11">
                                                                </td>
                                                                <td class="style11">
                                                                </td>
                                                        </tr>
                                                    </table>
                                                </td>
                                                <td width="10" rowspan="3">
                                                </td>
                                            </tr>
                                            <tr>
                                                <td height="10">
                                                </td>
                                            </tr>
                                            <tr>
                                                <td height="10" align="right">
                                                    &nbsp;
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        <div class="modul_bottom">
                                            <div class="modul_bottom_right">
                                                <div class="modul_borde-bottom">
                                                </div>
                                            </div>
                                        </div>
                                    </td>
                                </tr>
                            </table>
                        </td>
                        <td width="10">
                            &nbsp;
                        </td>
                    </tr>
                </table>
                <!---------------------------------Fin  de ejecutivo-------------------------------->
            </td>
        </tr>
        <tr>
            <td valign="top">
                &nbsp;
            </td>
        </tr>
        <tr>
            <td valign="top">
                <!---------------------------------Inicio tabla alternativa-------------------------------->
                <table width="100%" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                        <td width="10">
                            &nbsp;
                        </td>
                        <td>
                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                <tr>
                                    <td>
                                        <table width="100%" border="0" cellspacing="0" cellpadding="0" class="borde">
                                            <tr>
                                                <td>
                                                    <div class="modul">
                                                        <div class="modul_top">
                                                            <div class="modul_top_right">
                                                                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                                    <tr>
                                                                        <td width="9">
                                                                        </td>
                                                                        <td class="modul_fd">
                                                                            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                                                                <tr>
                                                                                    <td class="modul_fd_tit">
                                                                                        EVALUAR PAGOS
                                                                                    </td>
                                                                                </tr>
                                                                            </table>
                                                                        </td>
                                                                        <td width="9">
                                                                        </td>
                                                                    </tr>
                                                                </table>
                                                            </div>
                                                        </div>
                                                        <div class="modul_content">
                                                        </div>
                                                    </div>
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="modul_bordes">
                                        <table width="100%" border="0" cellspacing="0" cellpadding="0" class="caja-datos">
                                            <tr>
                                                <td width="10">
                                                </td>
                                                <td height="10">
                                                </td>
                                                <td>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td width="10" rowspan="3">
                                                </td>
                                                <td align="center" valign="top">
                                                    <div id="printerElement">
                                                        <table id="grid">
                                                            <tr>
                                                                <td>
                                                                </td>
                                                            </tr>
                                                        </table>
                                                    </div>
                                                    <div id="pager">
                                                    </div>
                                                </td>
                                                <td width="10" rowspan="3">
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        <div class="modul_bottom">
                                            <div class="modul_bottom_right">
                                                <div class="modul_borde-bottom">
                                                </div>
                                            </div>
                                        </div>
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </table>
                <!---------------------------------Fin Inicio tabla alternativa-------------------------------->
            </td>
        </tr>
    </table>
    <br />
    <asp:UpdatePanel ID="UpdPanel1" runat="server">
        <ContentTemplate>
            <table width="450" border="0" align="right" cellpadding="0" cellspacing="0">
                <tr>
                    <td align="right">
                        <input id="btnGuardar" type="button" value="Grabar" title="Guardar Registros" class="btn_guardar"
                            onclick="Grabar()" />
                    </td>
                    <td align="right">
                        <input id="btnBorrarFila" type="button" value="Borrar" title="Borrar fila" class="btn_eliminar"
                            onclick="BorrarFila()" />
                    </td>
                    <td align="right">
                        <input id="btnPdf" type="button" value="PDF" class="btn_generar_pdf" onclick="PreVer()" />
                    </td>
                    <td align="right">
                        <input id="btnExcel" type="button" value="Excel" class="btn_excel" onclick="PreExcel()" />
                    </td>
                </tr>
            </table>
        </ContentTemplate>
    </asp:UpdatePanel>
    <br />
</asp:Content>



--------------------------------------------------------------------------------------------------------------------
.cs
--------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using Newtonsoft.Json;
using System.Data;
using LeaOperBussinesLayer.BussinesComponents.Cobranza.EvaluarPagos;
using LeaOperBussinesLayer.BussinesComponents.Contabilidad.InforContables;
using LeaOperBussinesLayer.Util;
using LeaseOperWeb.Negocio.Cobranza.EvaluarPagos;
using LeaseOperWeb.Negocio.Comun;
using LeaseOperWeb.Utils;
 
namespace LeaseOperWeb.Paginas.Cobranza.EvaluarPagos
{
    public partial class EvaluadorPagos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["dtDwDet"] = null;
                Session["dt_old"] = null;
                Session["dt_encabezado"] = null;
                Session["rutCliente"] = null;
                Session["msgDet"] = null;
                Session["msgNec"] = null;
            }
        }
 
        [WebMethod]public static string LoadJqGrid(string operacion, string rut, string tipo, string numFact, string numConsulta, string tipoConsulta, string sinCosto)
        {
            HttpContext.Current.Session["msgDet"] = null;
            HttpContext.Current.Session["msgNec"] = null;
            DataTable dw_det = null, dw_nec = null;
            string msgNec, msgDet;
            try
            {
                new EvaluarPagosWebBc().recupera_detalle_evaluador(Convert.ToDecimal(operacion),
                    Convert.ToInt32(rut), Convert.ToInt16(tipo), Convert.ToDecimal(numFact),
                    Convert.ToInt32(numConsulta),
                    DateTime.Now, tipoConsulta, Convert.ToInt32(sinCosto), out dw_nec, out dw_det, out msgNec,
                    out msgDet);
                HttpContext.Current.Session["dtDwDet"] = dw_det;
                HttpContext.Current.Session["dt_old"] = dw_det;
                HttpContext.Current.Session["dt_encabezado"] = dw_nec;
 
                if (msgNec != "OK")
                {
                    HttpContext.Current.Session["msgNec"] = msgNec;
                }
                if (msgDet != "OK")
                {
                    HttpContext.Current.Session["msgDet"] = msgDet;
                }
 
                string result = JsonConvert.SerializeObject(dw_det).Replace("ö""o");
                return JsonConvert.SerializeObject(result);
            }
            catch (Exception ex)
            {
                dw_det = null;
                string result = JsonConvert.SerializeObject(dw_det).Replace("ö""o");
                return JsonConvert.SerializeObject(result);
            }
        }
 
        [WebMethod]
        public static string LoadHead()
        {
            try
            {
                var dt = (DataTable)HttpContext.Current.Session["dt_encabezado"];
                HttpContext.Current.Session["rutCliente"] = dt.Rows[0]["rut_cliente"];
                return JsonConvert.SerializeObject(dt);
            }
            catch (Exception ex)
            {
                return JsonConvert.SerializeObject("*" + "Se ha perdido la sesión, reingrese al sistema");
            }
        }
 
        [WebMethod]
        public static void ClearSession()
        {
            HttpContext.Current.Session["dtDwDet"] = null;
            HttpContext.Current.Session["dt_old"] = null;
            HttpContext.Current.Session["dt_encabezado"] = null;
            HttpContext.Current.Session["rutCliente"] = null;
            HttpContext.Current.Session["msgDet"] = null;
            HttpContext.Current.Session["msgNec"] = null;
        }
 
 
        [WebMethod]
        public static void DelRow(string correlativoInConsulta, string rowCount)
        {
            var gridRowCount = Convert.ToInt32(rowCount);
            var dt = (DataTable)HttpContext.Current.Session["dtDwDet"];
            for (int i = 0; i <= gridRowCount; i++)
            {
                DataRow dr = dt.Rows[i]; 
                if (dr["corre_cons"].ToString().Trim() == correlativoInConsulta.Trim())
                    dr.Delete();
            }
            dt.AcceptChanges();
            HttpContext.Current.Session["dtDwDet"] = dt;
 
        }
 
        [WebMethod]
        public static void DelRowMassive(string rowId, string rowCount)
        {
            var index = Convert.ToInt32(rowId)-1;
            var gridRowCount = Convert.ToInt32(rowCount)-1;
            if (index >= 0)
            {
                var dt = (DataTable)HttpContext.Current.Session["dtDwDet"];
                for (int i = index; i <= gridRowCount; i++)
                {
                    DataRow dr = dt.Rows[i];
                    if (dr["concepto_norenta"].ToString() == "1")
                        dr.Delete();
                }
                dt.AcceptChanges();
                HttpContext.Current.Session["dtDwDet"] = dt;
            }
        }
 
        [WebMethod]
        public static string RefreshChangeValueCell(string type, string value, string index)
        {
            var msgDet = string.Empty;
            HttpContext.Current.Session["msgDet"] = null;
            DataTable dt_DwDet = nulltry
            {
                switch (type)
                {
                    case "fecha_pago":
                        new EvaluarPagosWebBc().CambioFechaPagoOMontoCancelado(0, "fecha", (DataTable)HttpContext.Current.Session["dtDwDet"], Convert.ToInt32(index), out dt_DwDet, out msgDet);
                        break;
 
                    case "interes_mora_pe":
                        if (value.Trim() == string.Empty)
                            value = "0"new EvaluarPagosWebBc().CambioFechaPagoOMontoCancelado(Convert.ToDecimal(value), "interes_mora_pe", (DataTable)HttpContext.Current.Session["dtDwDet"], Convert.ToInt32(index), out dt_DwDet, out msgDet);
                        break;
 
                    case "gastos_cobranza":
                        if (value.Trim() == string.Empty)
                            value = "0";
                        new EvaluarPagosWebBc().CambioFechaPagoOMontoCancelado(Convert.ToDecimal(value), "gastos_cobranza", (DataTable)HttpContext.Current.Session["dtDwDet"], Convert.ToInt32(index), out dt_DwDet, out msgDet);
                        //Representación del método CargarGastosCobranzaMO existente en evaluador DXpress
                        for (int i = 0; i < dt_DwDet.Rows.Count; i++)
                        {
                            dt_DwDet.Rows[i]["gastos_cobranza_mo"] = (Convert.ToDecimal(dt_DwDet.Rows[i]["gastos_cobranza"]) / Convert.ToDecimal(dt_DwDet.Rows[i]["paridad_fecha_pago"]));
                        }
                        break;
                    case "monto_cancelado"//JC:Este metodo no está en uso en el Evaluador de origen, pero se programa por si en el futuro lo desean habilitar.-
                        new EvaluarPagosWebBc().CambioFechaPagoOMontoCancelado(0, "monto_cancelado", (DataTable)HttpContext.Current.Session["dtDwDet"], Convert.ToInt32(index), out dt_DwDet, out msgDet);
                        break;
                }
 
                if (msgDet != "OK")
                {
                    HttpContext.Current.Session["msgDet"] = msgDet;
                }
 
                HttpContext.Current.Session["dtDwDet"] = dt_DwDet;
                string result = JsonConvert.SerializeObject(dt_DwDet).Replace("ö""o");
                return JsonConvert.SerializeObject(result);
            }
            catch (Exception ex)
            {
                string result = JsonConvert.SerializeObject(ex.Message).Replace("ö""o");
                return JsonConvert.SerializeObject(result);
            }
        }
 
        [WebMethod]
        public static string ReviewMsgDet()
        {
            var msg = HttpContext.Current.Session["msgDet"] ?? "OK";
            string result = JsonConvert.SerializeObject(msg).Replace("ö""o");
            return JsonConvert.SerializeObject(result);
        }
 
        [WebMethod]
        public static string ReviewMsgNec()
        {
            var msg = HttpContext.Current.Session["msgNec"] ?? "OK";
            string result = JsonConvert.SerializeObject(msg).Replace("ö""o");
            return JsonConvert.SerializeObject(result);
        }
 
        [WebMethod]
        public static string ChangeDateOrAmountToPay(string type, string value, string index)
        {
            var msg = "OK";
            var dt = (DataTable)HttpContext.Current.Session["dtDwDet"];
            if (type == "fecha_pago")
            {
                if (value.Trim() == string.Empty)
                {
                    msg = "Fecha Pago no puede estar vacía";
                    return JsonConvert.SerializeObject(msg);
                }
                dt.Rows[Convert.ToInt32(index)]["fecha_pago"] = value;
            }
            else //JC: monto cancelado no está editable, pero se programa por si lo habilitan en el futuro.-
            {
                if (value.Trim() == string.Empty)
                {
                    msg = "Monto cancelado no puede estar vacío";
                    return JsonConvert.SerializeObject(msg);
                }
                dt.Rows[Convert.ToInt32(index)]["monto_cancelado"] = value;
            }
            HttpContext.Current.Session["dtDwDet"] = dt;
            return JsonConvert.SerializeObject(msg);
        }
 
        [WebMethod]
        public static string Save()
        {
            try
            {
                var user = (UserSessionObjectBc)HttpContext.Current.Session["UserSessionObjectBc"];
                string msgDet;
                string msg;
                string result;
                if (user == null)
                {
                    msg = "Se ha perdido la sesión, vuelva a conectarse al sistema.";
                    result = JsonConvert.SerializeObject(msg).Replace("ö""o");
                    return JsonConvert.SerializeObject(result);
                }
 
                DataTable dtDwDetOld = (DataTable)HttpContext.Current.Session["dt_old"];
                string msgNe2, msgNe3;
 
                var rutCliente = Convert.ToInt32(HttpContext.Current.Session["rutCliente"]);
                var dtDwDet = (DataTable)HttpContext.Current.Session["dtDwDet"];
                DataTable dt_DwDet;
 
                new EvaluarPagosWebBc().ValidaYGrabaEvaluoPago(user.CodPersonal, rutCliente, dtDwDet,
                                                               out dt_DwDet,
                                                               out msgDet, ref  dtDwDetOld);
 
                HttpContext.Current.Session["dtDwDet"] = dt_DwDet;
 
                if (msgDet.Contains("OK"))
                    msgDet = "Grabación efectuada OK.";
 
                result = JsonConvert.SerializeObject(msgDet).Replace("ö""o").Replace(@"\""");
                return JsonConvert.SerializeObject(result);
            }
            catch (Exception ex)
            {
                string result = JsonConvert.SerializeObject(ex.Message).Replace("ö""o");
                return JsonConvert.SerializeObject(result);
 
            }
        }
 
        [WebMethod]
        public static string RefreshBeforeSave()
        {
            try
            {
                var dw_det = (DataTable)HttpContext.Current.Session["dtDwDet"];
                string result = JsonConvert.SerializeObject(dw_det).Replace("ö""o");
                return JsonConvert.SerializeObject(result);
            }
            catch (Exception ex)
            {
                string result = JsonConvert.SerializeObject(ex.Message).Replace("ö""o");
                return JsonConvert.SerializeObject(result);
            }
        }
 
        #region Exportación
        [WebMethod]
        public static string ReporteXls(string num_consulta, string hoja)
        {
            string salida = string.Empty;
            DataSet ds = new DataSet();
            try
            {
                ds = new BcEvaluarPagos().EvaluarPago_NumConsulta_Excel(Convert.ToInt32(num_consulta));
 
                if (ds != null && ds.Tables[0].Rows.Count == 0)
                {
                    return JsonConvert.SerializeObject("SD");
                }
                else
                {
                    salida = FuncionesGenericasWebBc.bajarExcel(ds.Tables[0], hoja);
                }
 
            }
            catch (Exception exc)
            {
                salida = "*" + exc.Message.ToString().Replace("'"" ").Replace("\"""").Replace(@"\r""").Replace("\r\n""") + "*";
            }
 
            return JsonConvert.SerializeObject(salida);
        }
 
        [WebMethod]
        public static string DownloadPDF(string num_consulta)
        {
            string filename = string.Empty;
            DataSet ds = new DataSet();
            try
            {
                ds = new BcEvaluarPagos().EvaluarPago_NumConsulta(Convert.ToInt32(num_consulta));
                //ds.WriteXml(@"C:\CR\InformeEvaluarPagos.xml");
 
                DataTable reporte = new CR().RecuperaReporte(325);
                if (reporte != null && reporte.Rows.Count > 0)
                {
                    if (ds != null)
                    {
                        if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                        {
                            filename = "SD";
                        }
                        else
                        {
                            filename = new FuncionesGenericas().GeneraPdf(ds, reporte);
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                filename = "*" + new Exception(exc.Message.ToString().Replace("'"" ").Replace("\"""").Replace(@"\r""").Replace("\r\n""")) + "*";
            }
            return JsonConvert.SerializeObject(filename);
        }
 
        [WebMethod]
        public static string GetRutaCRError()
        {
            return JsonConvert.SerializeObject(new FuncionesGenericas().MapPathURLCRError());
        }
        [WebMethod]
        public static string GetRutaCargaExcel()
        {
            return JsonConvert.SerializeObject(new FuncionesGenericas().MapPathURLExcelDownLoad());
        }
 
        [WebMethod]
        public static string RecuperaNomDoc(string iddocx)
        {
            int iddoc = Convert.ToInt32(iddocx);
            var dt = new InforContablesBc().RecuperaNomDoc(iddoc);
            return JsonConvert.SerializeObject(dt);
        }
 
        #endregion
    }
}

No hay comentarios:

Publicar un comentario