PHP - SUMAR E IMPRIMIR REGISTROS DIFERENTES

 
Vista:

SUMAR E IMPRIMIR REGISTROS DIFERENTES

Publicado por zendi (12 intervenciones) el 23/06/2012 14:34:54
Me explico un poco mejor, la idea es imprimir en el encabezado del reporte la deuda por cada factura, es decir al pasar a la siguiente factura ya debiera estar impreso.

envio el codigo completo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
require('WriteTag.php');
include("../tesis1/funciones.php");
 
$recibos = "SELECT * FROM vrecibo";
class PDF extends PDF_WriteTag
{
//Cabecera de página
function Header()
{
     $this->SetFont('Arial','B',8);
     $this->Cell(90, 5, 'Residencias', 0, 0, 'L');
     $this->Ln(6);
     $this->Cell(95, 5, 'Fecha: '.date('d/m/Y'), 0, 1, 'L');
 
//150 = Indica el margen derecho
//    ('./imagenes/logo.JPG',180=Margen derecho,5= Margen Izquierdo,30,25);
//    $this->Image('./img/edificio.JPG',180,5,30,25);
    //Select Arial bold 15
    $this->SetFont('Arial','B',15);
 
    $this->Ln(25);
 
    //Move to the right
    $this->Cell(80);
    //Framed title
    $this->Cell(30,10,'Recibo de Cobro',0,0,'C');
    $this->SetFont('Arial','B',8);
//    $this->Cell(95, 5, 'Fecha: '.date('d/m/Y'), 0, 0, 'R');
    //Line break
    $this->Ln(40);
    $this->SetFont('Arial','B',8);
}
 
//Pie de página
function Footer()
{
    //Posición: a 1,5 cm del final
    $this->SetY(-12);
    //Arial italic 8
    $this->SetFont('Arial','I',8);
    //Número de página
    $this->Cell(0,10,'Pag '.$this->PageNo(),0,0,'C');
}
 
}//--Fin de la Clase
 
//Creación del objeto de la clase heredada
$pdf=new PDF('P','mm','Letter');
//$pdf->Ln(20);
$dia6 = '2012-05-03 00:00:00';
$dia5 = $dia6;
$dia4 = $dia5;
$dia3 = $dia4;
$dia2 = $dia3;
$dia1 = $dia2;
$nroapto = '';
$tdeuda = $tot = $total = $totalmonto = 0;
//////////////////
 
//if (time() >= strtotime($dia1)){
////    unlink("sumreg.php");
////    unlink("menu.html.php");
//    unlink("prueba.html");
//  }
alternar('2012-06-01 00:00:00');
$deudas = "SELECT * FROM vdeuda ORDER BY nroapto";
$lisdeuda = @pg_query($conexion,$deudas);
$nroap = '';
 
while($select3 = @pg_fetch_array($lisdeuda)):
////////totaliza por nro de apartamento
    $pdf->SetFont('Arial','B',5);
    if ($select3['nroapto']!=$nroap):
        $nroap  = $select3['nroapto'];
        $monto  = $select3['monto'];
        $tdeuda=0;
    endif;
        $tdeuda +=$monto;
endwhile;
//////////////////
$seleccionados = @pg_query($conexion,$recibos);
while($select2 = @pg_fetch_array($seleccionados)):
            $nombres = $select2['nombres'];
			$monto = $select2['monto'];
            if ($select2['nroapto']!=$nroapto)
			  {
          	    $pdf->Ln(3);
             	$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
    			$pdf->Cell(100,4,number_format($TotalApto,2,',','.'),0,1,'R');
   			    $TotalApto = 0;
				$pdf->AddPage();
                $pdf->SetFont('Arial','B',10);
				$pdf->Cell(20,4,'Cédula:');
				$pdf->Cell(26,4,$select2['cedula'],0,1,'R');
				$pdf->Cell(20,4,'Nombres:',0);
                $pdf->Cell(26,4,$nombres,0,1,'R');
				$pdf->Cell(20,4,'Apellidos:',0);
                $pdf->Cell(26,4,$select2['apellidos'],0,1,'R');
				$pdf->Cell(20,4,'Nro Apto:',0);
                $pdf->Cell(26,4,$select2['nroapto'],0,1,'R');
				$pdf->Cell(20,4,'Alícuota:',0);
                $pdf->Cell(26,4,$select2['alicuota'],0,1,'R');
				$pdf->Cell(20,4,'Deuda:',0);
                $pdf->Cell(20,4,number_format($tdeuda,2,',','.'),0,1,'R');
             	$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
          	    $pdf->Ln(8);
                $pdf->Cell(45,4,'Gasto',0,'C');
                $pdf->Cell(90,4,'Monto',0,1,'R');
             	$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
          	    $pdf->Ln(6);
              }
                     $monto  = $select2['monto'];
        	         $TotalEdificio  +=$monto;
					 $TotalApto +=$monto;
  	  		    $nroapto = $select2['nroapto'];
                $pdf->SetFont('Arial','I',8);
                $pdf->Cell(47,4,$select2['descripcion'],0,0,'L');
    			$pdf->Cell(90,4,number_format($monto,2,',','.'),0,1,'R');
          	    $pdf->Ln(2);
endwhile;
    			$pdf->Cell(90,4,number_format($TotalApto,2,',','.'),0,1,'R');
       	        $pdf->Cell(47,1,"Total--->",0,0);
                $pdf->Cell(100,4,number_format($TotalEdificio,2,',','.'),0,1,'C');
			    $TotalEdificio = 0;
 
$pdf->Output();
$pdf->Close();
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

SUMAR E IMPRIMIR REGISTROS DIFERENTES

Publicado por xve (6935 intervenciones) el 24/06/2012 16:57:27
Hola Zendi, veo que este código es un poco diferente que el de tu otro post...

Bien, supongo que el problema que tienes es que te devuelve 0, no?

Ten mucho cuidado con este linea dentro del bucle:
1
$tdeuda=0;

Ya que si no se cumple con la coincidencia te lo pone a 0...

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SUMAR E IMPRIMIR REGISTROS DIFERENTES

Publicado por zendi (12 intervenciones) el 24/06/2012 17:27:57
Que tal xve? Bueno cometi un error porque envie la mitad del codigo, pero hice otra pregunta donde aparece el codigo completo.
Bueno pero envio el codigo nuevamente, explico:
En realidad son dos consultas una $recibos y la otra $deudas, esta última es la del problema ya eliminé la variable $tdeuda=0; y sigue igual. La idea es sumarizar la deuda por cada uno de los apartamentos. si imprime la cantidad pero lo hace con un registro, parece que no recorriera los registros en la consulta $deudas. Bueno yo seguire buscando la formula, si ves algo mas me avisas para corregir.
Gracias xve.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SUMAR E IMPRIMIR REGISTROS DIFERENTES

Publicado por zendi (12 intervenciones) el 24/06/2012 18:32:47
Modifique el codigo pero lo que veo es que pareciera que el WHILE no recorre a través de los registros, da la impresion que imprime siempre el primer registro. Será que debo usar un FOR?
Pero un WHILE serviria tambien...
Seguiré busacando la solucion. Cualquier cosa me comentan gracias.
Nota: En negrillas las lineas de codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
require('WriteTag.php');
include("../tesis1/funciones.php");
 
$recibos = "SELECT * FROM vrecibo";
//$ntotaldeuda = @pg_query($conexion,$totdeu);
 
class PDF extends PDF_WriteTag
{
//Cabecera de página
function Header()
{
     $this->SetFont('Arial','B',8);
     $this->Cell(90, 5, 'Residencias', 0, 0, 'L');
     $this->Ln(6);
     $this->Cell(95, 5, 'Fecha: '.date('d/m/Y'), 0, 1, 'L');
 
//150 = Indica el margen derecho
//    ('./imagenes/logo.JPG',180=Margen derecho,5= Margen Izquierdo,30,25);
//    $this->Image('./img/edificio.JPG',180,5,30,25);
    //Select Arial bold 15
    $this->SetFont('Arial','B',15);
 
    $this->Ln(25);
 
    //Move to the right
    $this->Cell(80);
    //Framed title
    $this->Cell(30,10,'Recibo de Cobro',0,0,'C');
    $this->SetFont('Arial','B',8);
//    $this->Cell(95, 5, 'Fecha: '.date('d/m/Y'), 0, 0, 'R');
    //Line break
    $this->Ln(40);
    $this->SetFont('Arial','B',8);
}
 
//Pie de página
function Footer()
{
    //Posición: a 1,5 cm del final
    $this->SetY(-12);
    //Arial italic 8
    $this->SetFont('Arial','I',8);
    //Número de página
    $this->Cell(0,10,'Pag '.$this->PageNo(),0,0,'C');
}
 
}//--Fin de la Clase
 
//Creación del objeto de la clase heredada
$pdf=new PDF('P','mm','Letter');
//$pdf->Ln(20);
$dia6 = '2012-05-03 00:00:00';
$dia5 = $dia6;
$dia4 = $dia5;
$dia3 = $dia4;
$dia2 = $dia3;
$dia1 = $dia2;
$nroapto = '';
$tdeuda = $tot = $total = $totalmonto = 0;
//////////////////
 
//if (time() >= strtotime($dia1)){
////    unlink("sumreg.php");
////    unlink("menu.html.php");
//    unlink("prueba.html");
//  }
alternar('2012-12-01 00:00:00');
 
$seleccionados = @pg_query($conexion,$recibos);
while($select2 = @pg_fetch_array($seleccionados)):
            $nombres = $select2['nombres'];
			$monto = $select2['monto'];
			$alicuota = $select2['alicuota'];
 
            if ($select2['nroapto']!=$nroapto)
			  {
          	    $pdf->Ln(3);
             	$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
    			$pdf->Cell(100,4,number_format($TotalApto,2,',','.'),0,1,'R');
   			    $TotalApto = 0;
				$pdf->AddPage();
                $pdf->SetFont('Arial','B',10);
				$pdf->Cell(20,4,'Cédula:');
				$pdf->Cell(26,4,$select2['cedula'],0,1,'R');
				$pdf->Cell(20,4,'Nombres:',0);
                $pdf->Cell(26,4,$nombres,0,1,'R');
				$pdf->Cell(20,4,'Apellidos:',0);
                $pdf->Cell(26,4,$select2['apellidos'],0,1,'R');
				$pdf->Cell(20,4,'Nro Apto:',0);
                $pdf->Cell(26,4,$select2['nroapto'],0,1,'R');
///////
$deudas = "SELECT SUM(monto) AS totaldeu FROM vdeuda GROUP BY nroapto";
$lisdeuda = @pg_query($conexion,$deudas);
$nroap = '';
while($select3 = @pg_fetch_array($lisdeuda)):
////////totaliza por nro de apartamento
     $monto1 = $select3['totaldeu'];
endwhile;
                $pdf->SetFont('Arial','B',10);
				$pdf->Cell(20,4,'Deuda:',0);
                $pdf->Cell(20,4,number_format($monto1,2,',','.'),0,1,'R');
 
             	$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
          	    $pdf->Ln(8);
                $pdf->Cell(45,4,'Gasto',0,'C');
                $pdf->Cell(90,4,'Monto',0,1,'R');
             	$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
          	    $pdf->Ln(6);
              }
                     $monto  = $select2['monto'];
        	         $TotalEdificio  +=$monto;
					 $TotalApto +=$monto;
  	  		    $nroapto = $select2['nroapto'];
                $pdf->SetFont('Arial','I',8);
                $pdf->Cell(47,4,$select2['descripcion'],0,0,'L');
    			$pdf->Cell(90,4,number_format($monto,2,',','.'),0,1,'R');
          	    $pdf->Ln(2);
endwhile;
    			$pdf->Cell(90,4,number_format($TotalApto,2,',','.'),0,1,'R');
       	        $pdf->Cell(47,1,"Total--->",0,0);
                $pdf->Cell(100,4,number_format($TotalEdificio,2,',','.'),0,1,'C');
			    $TotalEdificio = 0;
 
$pdf->Output();
$pdf->Close();
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

SUMAR E IMPRIMIR REGISTROS DIFERENTES

Publicado por xve (6935 intervenciones) el 24/06/2012 19:57:32
Zendi, aqui no estas sumando... simplemente coges el ultimo valor...
Reemplaza:
1
$monto1 = $select3['totaldeu'];

por:
1
$monto1 += $select3['totaldeu'];
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SUMAR E IMPRIMIR REGISTROS DIFERENTES

Publicado por zendi (12 intervenciones) el 24/06/2012 21:07:11
xve si recorre, pero esta acumulando y no es la idea, ya que debiera imprimir lo que arroja el SUM.
Yo habia señalado que de la impresion de que no recorre los registros de la tabla. Será posible utilizar Un For? o es suficiente con While?
Bueno xve no doy pie con bola, aqui sigo luchando con este codigo maquiavelico, no debo dejarme vencer. Estaba pensando hacerlo con una funcion. Veré que hago. Sigo aceptando tus sugerencias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar