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> '; }