public function cobrarpago($cad, $efectivo)
    {
        $func = new Libreria_Pintar();
        $url = $this->view->util()->getPath();
        //obtenemos el codigo del cajero
        $ddatosuserlog = new Zend_Session_Namespace('datosuserlog');
        $cidpers = $ddatosuserlog->cidpers;
        $codcajero = $ddatosuserlog->codcajero;
        $userlogin = $ddatosuserlog->userlogin;
        $cidapertura = $ddatosuserlog->cidapertura;
        //convertimos la cadena en un array
        $dat = explode("~", $cad);
        $arraydatos = null;
        for ($i = 0; $i < count($dat); $i++) {
            $datos = explode("@", $dat[$i]);
            $cad = trim($datos[0]);
            $codpre = trim($datos[1]);
            $tributo = trim($datos[2]);
            $anio = trim($datos[3]);
            $total = trim($datos[4]);
            if ($arraydatos == '' || $arraydatos == null || count($arraydatos) == 0) {
                $arraydatos[0][0] = $cad;
                //cadena
                $arraydatos[0][1] = $codpre;
                //predio
                $arraydatos[0][2] = $tributo;
                //tributo
                $arraydatos[0][3] = $anio;
                //anio
                $arraydatos[0][4] = $total;
                //total
            } else {
                $b = '99999';
                //contador de posicion de $arraydatos
                for ($k = 0; $k < count($arraydatos); $k++) {
                    if ($arraydatos[$k][1] === $codpre && $arraydatos[$k][2] === $tributo && $arraydatos[$k][3] === $anio) {
                        $b = $k;
                        break;
                    } else {
                        $b = '99999';
                    }
                }
                if ($b != '99999') {
                    $arraydatos[$b][0] .= '~' . $cad;
                    $arraydatos[$b][4] = $arraydatos[$b][4] + $total;
                } else {
                    $c = count($arraydatos);
                    $arraydatos[$c][0] = $cad;
                    //cadena
                    $arraydatos[$c][1] = $codpre;
                    //predio
                    $arraydatos[$c][2] = $tributo;
                    //tributo
                    $arraydatos[$c][3] = $anio;
                    //anio
                    $arraydatos[$c][4] = $total;
                    //total
                }
            }
        }
        $cadrecibos = '';
        $contarecibos = 0;
        $arraydatos = $func->ordenar_array($arraydatos, '3', SORT_ASC);
        // ordenar el array resultante por el anio y esta de manera ascendente...
        $correlativorecibos = 0;
        $nuevacadgrab = '';
        for ($i = 0; $i < count($arraydatos); $i++) {
            //echo '---------------->'.$efectivo .' ->'. $arraydatos[$i][4].'<br><br>';
            if (number_format($arraydatos[$i][4], '2', '.', '') != 0.0) {
                if (number_format($efectivo, '2', '.', '') >= number_format($arraydatos[$i][4], '2', '.', '')) {
                    $datoscad = explode("~", $arraydatos[$i][0]);
                    //$nuevacadgrab = '<d>';
                    for ($j = 0; $j < count($datoscad); $j++) {
                        $datossubcad = explode("^", $datoscad[$j]);
                        //										$nuevacadgrab .= '<r Id="" cnumcom="'.$correlativorecibos.'" ';
                        //										$nuevacadgrab .= 'cidecta="'.$datossubcad [0] .'" '; //idsigma de estcta//0
                        //										$nuevacadgrab .= 'ctiprec="'.$datossubcad [1] . '" '; //ctiprec//1
                        //										$nuevacadgrab .= 'ninsolu="'.number_format ( $datossubcad [2], '2', '.', '' ) . '" '; //imp. insoluto//2
                        //										$nuevacadgrab .= 'nfacrea="'.number_format ( $datossubcad [3], '2', '.', '' ) . '" '; //factor de reajuste//3
                        //										$nuevacadgrab .= 'nimprea="'.number_format ( $datossubcad [4], '2', '.', '' ) . '" '; //imp. reajuste//4
                        //										$nuevacadgrab .= 'nfacmor="'.number_format ( $datossubcad [5], '2', '.', '' ) . '" '; //fact. mora//5
                        //										$nuevacadgrab .= 'nimpmor="'.number_format ( $datossubcad [6], '2', '.', '' ) . '" '; //imp. mora//6
                        //										$nuevacadgrab .= 'ncosemi="'.number_format ( $datossubcad [7], '2', '.', '' ) . '" '; //costo de emision//7
                        //										$nuevacadgrab .= 'nmontot="'.number_format ( $datossubcad [8], '2', '.', '' ) . '" '; // total//8
                        //										$nuevacadgrab .= 'dfecpag="'.$datossubcad [9] . '" '; //9
                        //										$nuevacadgrab .= 'vobserv="'.$datossubcad [10] . '" '; //10
                        //										$nuevacadgrab .= 'nestado="'.$datossubcad [11] . '" '; // estado//11
                        //										$nuevacadgrab .= 'vusernm="'.$datossubcad [12] . '" ';
                        //										$nuevacadgrab .= 'moraacum="0" ></r>';
                        $nuevacadgrab .= '|';
                        $nuevacadgrab .= $correlativorecibos . '|';
                        $nuevacadgrab .= $datossubcad[0] . '|';
                        //idsigma de estcta//0
                        $nuevacadgrab .= $datossubcad[1] . '|';
                        //ctiprec//1
                        $nuevacadgrab .= number_format($datossubcad[2], '2', '.', '') . '|';
                        //imp. insoluto//2
                        $nuevacadgrab .= number_format($datossubcad[3], '2', '.', '') . '|';
                        //factor de reajuste//3
                        $nuevacadgrab .= number_format($datossubcad[4], '2', '.', '') . '|';
                        //imp. reajuste//4
                        $nuevacadgrab .= number_format($datossubcad[5], '2', '.', '') . '|';
                        //fact. mora//5
                        $nuevacadgrab .= number_format($datossubcad[6], '2', '.', '') . '|';
                        //imp. mora//6
                        $nuevacadgrab .= number_format($datossubcad[7], '2', '.', '') . '|';
                        //costo de emision//7
                        $nuevacadgrab .= number_format($datossubcad[8], '2', '.', '') . '|';
                        // total//8
                        $nuevacadgrab .= $datossubcad[9] . '|';
                        //9
                        $nuevacadgrab .= $datossubcad[10] . '|';
                        //10
                        $nuevacadgrab .= $datossubcad[11] . '|';
                        // estado//11
                        $nuevacadgrab .= $datossubcad[12] . '|';
                        $nuevacadgrab .= '0^';
                    }
                    $efectivo = number_format($efectivo - $arraydatos[$i][4], '2', '.', '');
                } else {
                    $datoscad = explode("~", $arraydatos[$i][0]);
                    //$nuevacadgrab = '<d>';
                    for ($j = 0; $j < count($datoscad); $j++) {
                        $datossubcad = explode("^", $datoscad[$j]);
                        $montoxsubcad = $datossubcad[8];
                        $nttal = 0;
                        if ($efectivo >= $montoxsubcad) {
                            $nuevacadgrab .= '|';
                            $nuevacadgrab .= $correlativorecibos . '|';
                            $nuevacadgrab .= $datossubcad[0] . '|';
                            //idsigma de estcta//0
                            $nuevacadgrab .= $datossubcad[1] . '|';
                            //ctiprec//1
                            $nuevacadgrab .= number_format($datossubcad[2], '2', '.', '') . '|';
                            //imp. insoluto//2
                            $nuevacadgrab .= number_format($datossubcad[3], '2', '.', '') . '|';
                            //factor de reajuste//3
                            $nuevacadgrab .= number_format($datossubcad[4], '2', '.', '') . '|';
                            //imp. reajuste//4
                            $nuevacadgrab .= number_format($datossubcad[5], '2', '.', '') . '|';
                            //fact. mora//5
                            $nuevacadgrab .= number_format($datossubcad[6], '2', '.', '') . '|';
                            //imp. mora//6
                            $nuevacadgrab .= number_format($datossubcad[7], '2', '.', '') . '|';
                            //costo de emision//7
                            $nuevacadgrab .= number_format($datossubcad[8], '2', '.', '') . '|';
                            // total//8
                            $nuevacadgrab .= $datossubcad[9] . '|';
                            //9
                            $nuevacadgrab .= $datossubcad[10] . '|';
                            //10
                            $nuevacadgrab .= $datossubcad[11] . '|';
                            // estado//11
                            $nuevacadgrab .= $datossubcad[12] . '|';
                            $nuevacadgrab .= '0^';
                            $efectivo = number_format($efectivo - $montoxsubcad, '2', '.', '');
                        } else {
                            //if($efectivo>0){
                            $porcinso = number_format($datossubcad[2] / $montoxsubcad, '8', '.', '');
                            $porcreaj = number_format(($datossubcad[4] - $datossubcad[2]) / $montoxsubcad, '8', '.', '');
                            $porcmora = number_format($datossubcad[6] / $montoxsubcad, '8', '.', '');
                            $porcgast = number_format($datossubcad[7] / $montoxsubcad, '8', '.', '');
                            $ninso = number_format($efectivo * $porcinso, '2', '.', '');
                            $nreaj = number_format($efectivo * $porcreaj, '2', '.', '');
                            $nmora = number_format($efectivo * $porcmora, '2', '.', '');
                            $ngast = number_format($efectivo * $porcgast, '2', '.', '');
                            $moraacum = number_format($datossubcad[6] - $nmora, '2', '.', '');
                            $subtotal = $ninso + $nreaj + $nmora + $ngast;
                            //$nttal = $nttal + $subtotal;
                            //ajuste
                            if ($subtotal != $efectivo) {
                                $diff = $efectivo - $subtotal;
                                $nmora = $nmora + $diff;
                                $subtotal = $ninso + $nreaj + $nmora + $ngast;
                            }
                            $nuevacadgrab .= '|' . $correlativorecibos . '|';
                            $nuevacadgrab .= $datossubcad[0] . '|';
                            //idsigma de estcta//0
                            $nuevacadgrab .= $datossubcad[1] . '|';
                            //ctiprec//1
                            $nuevacadgrab .= number_format($ninso, '2', '.', '') . '|';
                            //imp. insoluto//2
                            $nuevacadgrab .= number_format($datossubcad[3], '2', '.', '') . '|';
                            //factor de reajuste//3
                            $nuevacadgrab .= number_format($nreaj + $ninso, '2', '.', '') . '|';
                            //imp. reajuste//4
                            $nuevacadgrab .= number_format($datossubcad[5], '2', '.', '') . '|';
                            //fact. mora//5
                            $nuevacadgrab .= number_format($nmora, '2', '.', '') . '|';
                            //imp. mora//6
                            $nuevacadgrab .= number_format($ngast, '2', '.', '') . '|';
                            //costo de emision//7
                            $nuevacadgrab .= number_format($subtotal, '2', '.', '') . '|';
                            // total//8
                            $nuevacadgrab .= $datossubcad[9] . '|';
                            //9
                            $nuevacadgrab .= $datossubcad[10] . '|';
                            //10
                            $nuevacadgrab .= 'I' . '|';
                            // estado//11
                            $nuevacadgrab .= $datossubcad[12] . '|';
                            $nuevacadgrab .= number_format($moraacum, '2', '.', '') . '^';
                            $efectivo = number_format($efectivo - $subtotal, '2', '.', '');
                        }
                    }
                }
                $correlativorecibos++;
            }
        }
        $ddetallepago = new Zend_Session_Namespace('detallepago');
        $detallepago = $ddetallepago->data;
        $xmldetallepago = '';
        /* 
        			  	0 - ctippag=''0000007831'' 
        1 - dnrodoc=''1234********5678'' 
        2 - nnroope=''123456''
        3 - nmontot=''300.00''
        */
        for ($i = 0; $i < count($detallepago); $i++) {
            //$xmldetallepago .= '<r tfp="'.$detallepago[$i][0].'" monto="'.number_format ($detallepago[$i][3], '2', '.', '' ).'" nrodoc="'.$detallepago[$i][1].'" nroope="'.$detallepago[$i][2].'"></r>';
            $xmldetallepago .= $detallepago[$i][0] . '|' . number_format($detallepago[$i][3], '2', '.', '') . '|' . $detallepago[$i][1] . '|' . $detallepago[$i][2] . '^';
        }
        $nuevacadgrab = substr($nuevacadgrab, 0, strlen($nuevacadgrab) - 1);
        $xmldetallepago = substr($xmldetallepago, 0, strlen($xmldetallepago) - 1);
        //echo "<textarea>".$nuevacadgrab."</textarea>";
        //echo "<textarea>".$xmldetallepago."</textarea>";
        $dcidpers = new Zend_Session_Namespace('cidpers');
        $cidpers = $dcidpers->data;
        $nombrestore = 'tesoreria.cobrar_arbitriospredios';
        $arrayd[0] = $cidpers;
        $arrayd[1] = $nuevacadgrab;
        $arrayd[2] = $xmldetallepago;
        $arrayd[3] = '^';
        $arrayd[4] = '|';
        $arrayd[5] = $codcajero;
        #$userlogin ;
        $arrayd[6] = $cidapertura;
        //echo $nuevacadgrab.'<br><br><br>';
        $cn = new Model_DataAdapter();
        $respd = $cn->ejec_store_procedura_sql($nombrestore, $arrayd);
        //echo "<textarea>".$nuevacadgrab.$xmldetallepago."</textarea>";
        //echo 'tfp->'.$xmldetallepago;
        for ($i = 0; $i < count($respd); $i++) {
            echo 'Se genero el recibo nro. <b>' . str_pad($respd[$i][0], 12, "0", STR_PAD_LEFT) . '</b><br />';
            //print_r($respd);
        }
        echo '<script language=\'javascript\'>';
        for ($i = 0; $i < count($respd); $i++) {
            echo 'window.open(\'' . $url . 'index.php/pagosarbitriospredios/imprimirrecibopagosarbitriospredios/?nrorecibo=' . str_pad($respd[$i][0], 12, "0", STR_PAD_LEFT) . '\',"_blank","width=570, height=500, scrollbars=no, menubar=no, location=no, resizable=no,status =no,directories=no"); ';
        }
        echo 'function ventanaSecundaria(){ ';
        for ($i = 0; $i < count($respd); $i++) {
            echo 'ventana=window.open(\'' . $url . 'index.php/pagosarbitriospredios/imprimirrecibopagosarbitriospredios/?nrorecibo=' . str_pad($respd[$i][0], 12, "0", STR_PAD_LEFT) . '\',"_blank","width=570, height=500, scrollbars=no, menubar=no, location=no, resizable=no,status =no,directories=no");ventana.focus();';
        }
        echo '}
				</script>
				<input type="button" name="imprimir" id="imprimir" value="Imprimir recibo" onClick="ventanaSecundaria()" />
				<script>$("#imprimir").button();</script>	
			';
    }