PHP - Reporte php

 
Vista:
sin imagen de perfil

Reporte php

Publicado por Lrz (26 intervenciones) el 14/03/2017 00:10:01
Hola Buen dia,

He estado trabajando con Reportes ne PHP y la Libreria FPDF, ya he logrado realizarlos de diferentes formas y con ciertos datos , el problema es ahora que me piden un reporte Anual , pero de la siguiente manera:

CURP RFC PROVEEDOR1
registro 1----------------------------
registro 2--------------------------
registro 3---------------------------
CURP RFC PROVEEDOR2
registro 1----------------------------
registro 2--------------------------
registro 3---------------------------
registro 4-------------------------
registro 5-------------------------
CURP RFC PROVEEDOR3
registro 1----------------------------
registro 2--------------------------
..............
..........
...


TEngo una tabla proveedor y una de Retensiones , como se muestra en el ejemplo, de la tabla proveedor necesito su curp, rfc y nombre, y seguido de ello las retensiones obtenidas de la tabla retensiones, aqui lo que los liga son el nombre del proveedor , lo he intentado de varias maneras , a veces me da error y otras veces veces me da el reporte vacio


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
$pdf = new PDF();
$pdf->AliasNbPages();//Genera el numero de paginas finales
$pdf->AddPage();//Agrega una nueva pagina 
 
 
$totalimporte=0;
$totaliva=0;
$totalisr=0;
$pdf->SetFont('Arial','',10);
$pdf->SetTextColor(3,3,3);//Coor del Texto Negro
$sqlx="SELECT id_proveedor, `proveedores`, `rfc`, `direccion`, `curp` FROM `proveedores` Order By id_proveedor Desc Limit 1";
for ($i=1; $i<=$sqlx;$i++){
	$resultx = $mysqli->query($sqlx);
		$extraidox= mysqli_fetch_array($resultx);
		$nomprovex = $extraidox['proveedores'];
		$rfcprovex = $extraidox['rfc'];
		$cupr_provex = $extraidox['curp'];
	if ($nomprove == $prove_ret){
 
 
 
		$pdf->Cell(75,7, $nomprovex,0,0,'L');
		$pdf->Cell(50,7, $rfcprovex,0,0,'L');
		$pdf->Cell(50,7, $cupr_provex,0,0,'L');
 
		while ($fila = $result->fetch_assoc())
				{
				$pdf->Cell(45,7, utf8_decode($fila['concepto']),0,0,'L');
				$pdf->Cell(25,7, utf8_decode($fila['periodo']),0,0,'L');
				$pdf->Cell(25,7,'$'.number_format (($fila['importe']),'2','.',',').'' ,0,0,'R');  // numer format , le da el formato en centenas miles y millones
				$pdf->Cell(25,7,'$'.number_format (($fila['iva']),'2','.',',').'',0,0,'R');
				$pdf->Cell(25,7,'$'.number_format (($fila['isr']),'2','.',',').'',0,0,'R');
				$pdf->Ln();
				$totalimporte= $totalimporte + ($fila['importe']);
				$totaliva = $totaliva + ($fila['iva']);
				$totalisr = $totalisr + ($fila['isr']);
 
 
				}
	}
}
$pdf->Ln();
$pdf->Ln();
$pdf->Ln();
$pdf->SetFont('Arial','B',10);
$pdf->Cell(20,7 ,"TOTALES",1,0,'L');
$pdf->SetX(110);
$pdf->SetFont('Arial','',12);
$pdf->Cell(35,10,'$ '.number_format (($totalimporte),'2','.',',').'' ,1,0,'L');
$pdf->Cell(30,10,'$ '. number_format (($totaliva),'2','.',',').'' ,1,0,'L');
$pdf->Cell(30,10,'$ '. number_format (($totalisr),'2','.',',').'' ,1,0,'L');
 
$pdf->Output();//Salida del navegador
 
?>


En si la problematica de todo es las condiciones , no se si las estoy haciendo bien , de antemano Gracias
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
sin imagen de perfil
Val: 191
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Reporte php

Publicado por Brayan (76 intervenciones) el 14/03/2017 16:10:35
La sentencia sql esta mal, solo estas tomando 1 registro con Limit 1,
id proveedores esta fuera de las comillas,
Por otra parte yo lo trabajaria de otra forma, en tu caso con un foreach

ej..

Como la tabla debe ser por porveedores te recomiendo hace distintos sql, el primero que traiga en un arreglo los proveedores.
Luego otro sql que traiga en arreglo los datos a mostrar y luego si haces las muestras un ejemplo fuera de tu tabla pero semajante seria:

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
$sql1="Select id_proveedores from mi_tabla ";
$sql2="Select * from proveedores where id_proveedores='1';//en este caso puedes realizarlo tantas veces como tengas
//porveedores o crear un ciclo for antes de esta sentencia por ejemplo:

$contador= count($sql1);//aqui deberia tomar la cantidad de proveedores, ya que el id no se repite y luego lo usas asi
for($i=0;$i<$contador;$i++){
$sqlx[$i]="Select * from proveedores where id_proveedores='$i';//asi te evitas crear muchas consultas a pie
}

foreach($sql1 as $sql1){
echo "$sql1";
for($i=0;$i<$contador;$i++){
foreach($sqlx[$i] as $sqlx[$i])
				$pdf->Cell(45,7, utf8_decode($sqlx[$i]['concepto']),0,0,'L');
				$pdf->Cell(25,7, utf8_decode($sqlx[$i]['periodo']),0,0,'L');
				$pdf->Cell(25,7,'$'.number_format (($sqlx[$i]['importe']),'2','.',',').'' ,0,0,'R');  // numer format , le da el formato en centenas miles y millones
				$pdf->Cell(25,7,'$'.number_format (($sqlx[$i]['iva']),'2','.',',').'',0,0,'R');
				$pdf->Cell(25,7,'$'.number_format (($sqlx[$i]['isr']),'2','.',',').'',0,0,'R');
				$pdf->Ln();
				$totalimporte= $totalimporte + ($sqlx[$i]['importe']);
				$totaliva = $totaliva + ($sqlx[$i]['iva']);
				$totalisr = $totalisr + ($sqlx[$i]['isr']);
 
}
}
}


Algo similar a eso.. lo que pasa es que los desarrollos y las logicas son diferentes, si necesitas algun otro aporte, o si necesitas otra explicacion mas sencilla avisa..

Por cierto te recomiendo usar Mpdf es mucho mejor y menos engorroso de usar.!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Reporte php

Publicado por Lrz (26 intervenciones) el 14/03/2017 17:04:01
oooh , Gracias , Lo intentare y mostrare los resultados , nuevamente te agradezco.

Pero solamente una duda , no seria el segundo sql , con la tabla retensiones , porque lo que quiero es que despues de la informacion del proveedor aparezcan los datos de ese proveedor pero en la tabla proveedor no tengo , concepto , iva , isr, etc.
como comente , lo unico que los liga es el nombre del proveedor


tpr
tr

Estas son mis tablas , mas o menos entiendo como me dices hacerlo ,pero por decir como le indicaria que me imprima los datos de la tabla proveedor digamos jose perez, con el nombre jose perez de la tabla retensiones , bueno al menos yo habia visto ligarlo asi o no se si no comprendi bien la explicacion, Gracias por tu ayuda
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
sin imagen de perfil

Reporte php

Publicado por Lrz (26 intervenciones) el 14/03/2017 17:21:29
Por si acaso este es mi codigo completo creo que sera mejor asi , no lo queria colocar porque hay mucho que no es relevante , la mitad es el diseño de mi pdf

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
 
	//include_once('PDF.php');
	require('fpdf/fpdf.php');
	$mysqli = new mysqli('localhost', 'root', 'pasword.123', 'tesoreria');
 
	if($mysqli->connect_error){
 
		die('Error en la conexion' . $mysqli->connect_error);
 
	}
 
//seleccionar tipo de pago 
$ciclo = $_POST["ciclo"];
 
class PDF extends FPDF
{
		function Header()
		{
			$this->Image('imagenes/logo.jpg',9,10,53,30);
			$this->SetFont('Arial','B',15);
			$this->Cell(50);
			$this->Cell(135,10,'CONSTANCIA DE PERCEPCIONES Y RETENCIONES',1,0,'C');
			$this->Ln();
			$this->SetFont('Arial','B',11);
			$this->Cell(50);
			$this->Cell(135,5,'DIRECCION DE RECURSOS FINANCIEROS',1,0,'C');
			$this->Ln();
			$this->Ln();
			$this->SetFont('Arial','B',11);
			$this->Cell(75);
			$this->Cell(20,5,'CICLO: ',0,0,'L');
			$this->Cell(10,5,$GLOBALS['ciclo'],0,0,'C');
			$this->Ln();
			$this->SetFont('Arial','',11);
			$this->Ln();
			$this->SetFont('Arial','',9);
			$this->Cell(18,4,'CXL',1,0,'C');
			$this->Cell(23,4,'FECHA',1,0,'C');
			$this->Cell(43,4,'CONCEPTO',1,0,'C');
			$this->Cell(23,4,'PERIODO',1,0,'C');
			$this->Cell(30,4,'IMPORTE',1,0,'C');
			$this->Cell(23,4,'I.V.A.',1,0,'C');
			$this->Cell(23,4,'I.S.R.',1,0,'C');
			$this->SetFont('Arial','',8);
			$this->Ln();
			$this->Ln();
 
		}
		function Footer()
		{
			$this->SetFont('Arial','I',8);
			$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
		}
}
 
 
//campos datos de proveedor 
$sql2 = "SELECT `proveedores`, `rfc`, `direccion`, `curp` FROM `proveedores`";
$result2 = $mysqli->query($sql2);
$extraido2= mysqli_fetch_array($result2);
$nomprove = $extraido2['proveedores'];
$rfcprove = $extraido2['rfc'];
$direccion = $extraido2['direccion'];
$cupr_prove = $extraido2['curp'];
 
 
$sql = "SELECT * FROM `retensiones` WHERE ciclo=$ciclo ORDER By proveedores ASC";
$result = $mysqli->query($sql);
$extraido =mysqli_fetch_array($result);
$prove_ret = $extraido['proveedores'];
 
 
$pdf = new PDF();
$pdf->AliasNbPages();//Genera el numero de paginas finales
$pdf->AddPage();//Agrega una nueva pagina 
 
 
$totalimporte=0;
$totaliva=0;
$totalisr=0;
$pdf->SetFont('Arial','',10);
$pdf->SetTextColor(3,3,3);//Coor del Texto Negro
$sqlx="SELECT id_proveedor, `proveedores`, `rfc`, `direccion`, `curp` FROM `proveedores` Order By id_proveedor Desc Limit 1";
for ($i=1; $i<=$sqlx;$i++){
	$resultx = $mysqli->query($sqlx);
		$extraidox= mysqli_fetch_array($resultx);
		$nomprovex = $extraidox['proveedores'];
		$rfcprovex = $extraidox['rfc'];
		$cupr_provex = $extraidox['curp'];
	if ($nomprove == $prove_ret){
 
 
 
		$pdf->Cell(75,7, $nomprovex,0,0,'L');
		$pdf->Cell(50,7, $rfcprovex,0,0,'L');
		$pdf->Cell(50,7, $cupr_provex,0,0,'L');
 
		while ($fila = $result->fetch_assoc())
				{
				$pdf->Cell(45,7, utf8_decode($fila['concepto']),0,0,'L');
				$pdf->Cell(25,7, utf8_decode($fila['periodo']),0,0,'L');
				$pdf->Cell(25,7,'$'.number_format (($fila['importe']),'2','.',',').'' ,0,0,'R');  // numer format , le da el formato en centenas miles y millones
				$pdf->Cell(25,7,'$'.number_format (($fila['iva']),'2','.',',').'',0,0,'R');
				$pdf->Cell(25,7,'$'.number_format (($fila['isr']),'2','.',',').'',0,0,'R');
				$pdf->Ln();
				$totalimporte= $totalimporte + ($fila['importe']);
				$totaliva = $totaliva + ($fila['iva']);
				$totalisr = $totalisr + ($fila['isr']);
 
 
				}
	}
}
$pdf->Ln();
$pdf->Ln();
$pdf->Ln();
$pdf->SetFont('Arial','B',10);
$pdf->Cell(20,7 ,"TOTALES",1,0,'L');
$pdf->SetX(110);
$pdf->SetFont('Arial','',12);
$pdf->Cell(35,10,'$ '.number_format (($totalimporte),'2','.',',').'' ,1,0,'L');
$pdf->Cell(30,10,'$ '. number_format (($totaliva),'2','.',',').'' ,1,0,'L');
$pdf->Cell(30,10,'$ '. number_format (($totalisr),'2','.',',').'' ,1,0,'L');
 
$pdf->Output();//Salida del navegador
 
?>
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