PHP - sumar deuda

   
Vista:

sumar deuda

Publicado por zendi (824 intervenciones) el 23/02/2014 20:35:36
estoy tratando de sumar con este codigo el campo $deudag = $select2['deudag'];
pero no lo esta realizando, ahora bien mi idea es sumar la deuda por cada registro y asignarle la deuda a cada uno de los propietarios de un condominio.
estoy utilizando el operador
1
+=
pero no se que pasa en realidad.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=1234");
$recibos = "SELECT * FROM vrecibo";
$seleccionados = @pg_query($conexion,$recibos);
while($select2 = @pg_fetch_array($seleccionados)):
            $nombres   = $select2['nombres'];
            $apellidos = $select2['apellidos'];
   	    $monto     = $select2['monto'];
	    $alicuota  = $select2['alicuota'];
	    $deudag    = $select2['deudag'];
 
	    echo $deudag += $deudag;
		echo "</br>";
//echo "$deudag </br>";
endwhile;
?>

, pero no se si seria mejor de esta manera o con un query, este es el query, por supuesto en postgresql:
SELECT propietarios.nroapto, propietarios.nombres, propietarios.apellidos, propietarios.cedula, gastos.descripcion, gastos.monto, SUM(deuda.monto) AS deudag
FROM propietarios, deuda, gastos
WHERE propietarios.nroapto = deuda.nroapto AND deuda.codigo_gasto = gastos.codigo
GROUP BY propietarios.nombres, propietarios.nroapto, propietarios.cedula, gastos.descripcion, gastos.monto, propietarios.apellidos, deuda.monto
ORDER BY propietarios.nombres;


el cual esta hecho con una vista en postgresql.
Ayudenme en este caso, mientras yo tambien busco la solucion por aqui.
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

sumar deuda

Publicado por xve (5519 intervenciones) el 24/02/2014 07:44:26
En tu código no estas sumando, solo asignas... tendría que ser algo así para que la variable $deudag vaya aumentando de valor:
1
$deudag    += $select2['deudag'];

Pero si lo único que quieres es obtener el total, lo suyo es hacerlo con la consulta sql, y te olvidas del bucle (while).

Coméntanos si te sirve, 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 deuda

Publicado por zendi (824 intervenciones) el 25/02/2014 02:11:10
Que tal Xve. Con el anterior codigo que me indicaste ($deudag += $select2['deudag'];) no lo hace tampoco.

Bueno aqui esta el codigo completo con la consulta en negrilla donde intento sumar la deuda para cada dueño de apartamento:

Aun con esta consulta no realiza la suma por cada registro.

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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?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 Valle Alto', 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 = '2013-09-30 00:00:00';
$dia5 = $dia6;
$dia4 = $dia5;
$dia3 = $dia4;
$dia2 = $dia3;
$dia1 = $dia2;
$nroapto = '';
$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'];
            $apellidos = $select2['apellidos'];
			$monto     = $select2['monto'];
			$alicuota  = $select2['alicuota'];
			

            if ($select2['nroapto']!=$nroapto)
			  {
			  
          	    $pdf->Ln(3);
             	$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
          	    $pdf->Ln(3);
       	        $pdf->Cell(45,1,"Total Apartamento--->",0,0);
    			$pdf->Cell(90,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,$apellidos,0,1,'R');
				$pdf->Cell(20,4,'Nro Apto:',0);
                $pdf->Cell(26,4,$select2['nroapto'],0,1,'R');
				$pdf->Cell(20,4,'Deuda:',0);
				
				
//////////////////
/////////////
$listbina = "SELECT propietarios.apellidos,
                    propietarios.nombres,
                    propietarios.cedula, 
                    sum(deuda.monto) AS deuda,
                    deuda.fecha
               FROM propietarios, deuda
              WHERE propietarios.nroapto = deuda.nroapto
           GROUP BY propietarios.apellidos, 
                    propietarios.nombres, 
                    propietarios.cedula, 
                    deuda.fecha;";
$listbina = @pg_query($conexion,$listbina);
$select3 = @pg_fetch_array($listbina);
/////////////////
      $pdf->Cell(30,4,$select3['deuda'],0,1,'R');
				
//////////totaliza por nro de apartamento
             	$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(45,4,$select2['descripcion'],0,0,'L');
    			$pdf->Cell(90,4,number_format($monto,2,',','.'),0,1,'R');
          	    $pdf->Ln(2);
endwhile;

       	        $pdf->Cell(45,1,"Total Apartamento--->",0,0);
    			$pdf->Cell(100,4,number_format($TotalApto,2,',','.'),0,1,'R');
/*                $pdf->Cell(100,4,number_format($tdeuda2,2,',','.'),0,1,'C');
*/				
       	        $pdf->Cell(45,1,"Total Edificio--->",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

sumar deuda

Publicado por xve (5519 intervenciones) el 25/02/2014 12:18:51
Hola Zendi, nos puedes mostrar los registros que te devuelve la consulta?
Hay algo que veo un poco extraño, ya que agrupas incluso por fecha... eso quiere decir, que te devolverá un total por cada nombre,apellido, cedula y fecha que sean diferentes.
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 deuda

Publicado por zendi (824 intervenciones) el 25/02/2014 15:05:06
Hola Xve. Os envio la consulta. Mientras tanto yo tambien sigo buscando la solucion.
Nota: estos son los primero registros apenas, lo que paso fue que no los copie todos, pero asi tambien sirve.
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

sumar deuda

Publicado por xve (5519 intervenciones) el 25/02/2014 19:47:05
Hola Zendi, haz una prueba, agrupa únicamente por nroapto haber que te sale...

Yo también utilizaría left join para vincular las tablas, de la manera que lo haces, no se muy bien como se vinculan.
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 deuda

Publicado por zendi (824 intervenciones) el 28/02/2014 04:50:23
Bueno primeramente disculpen la tardanza para responder, pero ya halle la solucion para este codigo:
aqui esta la parte del codigo señalado en negrilla :
Nota: y tambien la consulta:
1
2
3
4
5
SELECT propietarios.nroapto, propietarios.apellidos, propietarios.nombres, propietarios.cedula, sum(deuda.monto) AS total, gastos.monto, gastos.descripcion
   FROM propietarios, deuda, gastos
  WHERE propietarios.nroapto = deuda.nroapto
  GROUP BY propietarios.nroapto, propietarios.apellidos, propietarios.nombres, propietarios.cedula, gastos.monto, gastos.descripcion
  ORDER BY propietarios.nroapto;
de nombre vrecibo1
El asunto es que debo colocar la suma dentro del
1
if ($select2['nroapto']!=$nroapto)
cuando pregunto si el nroapto es diferente.
contestenme si les parece bien
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');
$recibos = "SELECT * FROM vrecibo1";
 
class PDF extends PDF_WriteTag
{
//Cabecera de página
function Header()
{
     $this->SetFont('Arial','B',8);
     $this->Cell(90, 5, 'Residencias Valle Alto', 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 = '2013-09-30 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'];
            $apellidos = $select2['apellidos'];
			$monto     = $select2['monto'];
			$alicuota  = $select2['alicuota'];
            if ($select2['nroapto']!=$nroapto)
			  {
 			    $deuda  = $select2['total'];
            	$deuda += $deuda;
          	    $pdf->Ln(3);
             	$pdf->Line($pdf->GetX(), $pdf->GetY(), 205, $pdf->GetY());
          	    $pdf->Ln(3);
       	        $pdf->Cell(45,1,"Total Apartamento--->",0,0);
    			$pdf->Cell(90,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,$apellidos,0,1,'R');
				$pdf->Cell(20,4,'Nro Apto:',0);
                $pdf->Cell(26,4,$select2['nroapto'],0,1,'R');
				$pdf->Cell(20,4,'Deuda:',0);
    			$pdf->Cell(26,4,number_format($deuda,2,',','.'),0,1,'R');
   			    $deuda = 0;
 
//////////totaliza por nro de apartamento
             	$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(45,4,$select2['descripcion'],0,0,'L');
    			$pdf->Cell(90,4,number_format($monto,2,',','.'),0,1,'R');
          	    $pdf->Ln(2);
 
endwhile;
 
       	        $pdf->Cell(45,1,"Total Apartamento--->",0,0);
    			$pdf->Cell(100,4,number_format($TotalApto,2,',','.'),0,1,'R');
/*                $pdf->Cell(100,4,number_format($tdeuda2,2,',','.'),0,1,'C');
*/				
       	        $pdf->Cell(45,1,"Total Edificio--->",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

sumar deuda

Publicado por zendi (824 intervenciones) el 28/02/2014 19:35:23
Que tal a todos. Que les parece la solucion? Si pueden contestar. Tal vez pudiera servir para cuando alguien en un reporte quiera imprimir por subtotales.

Saludos
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