Sumar una columna en php y fpdf
Publicado por ClaudioGS (70 intervenciones) el 21/04/2015 15:24:45
Hola que tal.
Necesito agregar una suma de una columna segun condición en un reporte en php y pasarlo a pdf con fpdf.
Tengo una tabla que contiene en otros campos id_desembolso, id_complemento y monto, necesito que me sume los montos asignados a complementos y los montos asignados a suplementos, el caso es que mo se como hacerlo en fpdf.
Lo que tengo hasta ahora es lo siguiente, se me olvida un detalle, que lo tengo con MVC.
movimientos.php,
Controdor movimientosController.php
y el modelo, movimientosModel.php
No se como efectuar la suma, debo sumar todos los montos que sean iguales a id_complemto y todos los montos que sean igual a id_suplemento, y en que lugar ponerlos para que aparezca al final de la tabla un resumen con Total Complemento y Total Suplemento.
Cualquier ayuda o comentario es muy bien venido. de antemanos Gracias.
Necesito agregar una suma de una columna segun condición en un reporte en php y pasarlo a pdf con fpdf.
Tengo una tabla que contiene en otros campos id_desembolso, id_complemento y monto, necesito que me sume los montos asignados a complementos y los montos asignados a suplementos, el caso es que mo se como hacerlo en fpdf.
Lo que tengo hasta ahora es lo siguiente, se me olvida un detalle, que lo tengo con MVC.
movimientos.php,
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
<?php
require_once('fpdf.php');
class MOVIMIENTOS extends FPDF
{
function Header()
{
//* Cabecera de la página
//* Logotipo
$this->Image(BASE_URL . 'public/img/logo.png',10,12,30,0,'',BASE_URL);
//* Fuente
$this->SetFont('Arial','B',18);
//* Nos movemos a la derecha
$this->Cell(90);
//* Título
$this->Cell(30,10, utf8_decode('Listado de Movimientos'),0,0,'C');
//* Salto de línea
$this->Ln(10);
//**********
//* Fuente
$this->SetFont('Arial','',10);
//* Fecha en que se genera el documento PDF (dd-mm-yy)
$fecha = date('d-m-Y');
$this->Cell(0,10, utf8_decode('Fecha: ' . $fecha),0,0,'R');
$this->Ln(8);
//* Fuente
$this->SetFont('Arial','B',14);
//* Subtítulo
// $this->Cell(0,10, utf8_decode('Listado de Productos Disponibles'),0,0,'C');
// $this->Ln();
}
function Table($header, $data)
{
$sumades = 0;
$sumasup = 0;
// Colores, ancho de línea y fuente en negrita
$this->SetFillColor(221,221,221);
$this->SetTextColor(0);
$this->SetDrawColor(0,0,0);
$this->SetLineWidth(.3);
$this->SetFont('','B');
// Cabecera
$w = array(40,40, 30, 30, 50, 90);
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C',true);
$this->Ln();
// Restauración de colores y fuentes
$this->SetFillColor(221,221,221);
$this->SetTextColor(0);
$this->SetFont('');
// Datos
$fill = false;
foreach($data as $row)
{
if($row['id_desembolso'] > 0){
$this->Cell($w[0],6,$row['id_desembolso']. ' ' . utf8_decode($row['desembolso']),'LR',0,'L',$fill);
}else{
$this->Cell($w[0],6,' ','LR',0,'L',$fill);
}
if($row['id_suplemento'] > 0){
$this->Cell($w[1],6,$row['id_suplemento']. ' ' . utf8_decode($row['suplemento']),'LR',0,'L',$fill);
}else{
$this->Cell($w[0],6,' ','LR',0,'L',$fill);
}
$this->Cell($w[2],6,$row['fecha'],'LR',0,'C',$fill);
if($row['id_desembolso'] > 0){
$this->SetTextColor(255,3.62);
$this->Cell($w[3],6,'$'.number_format($row['monto'],0,",","."),'LR',0,'R',$fill);
$this->SetTextColor(0);
$sumades = $row['monto'];
}else{
$this->Cell($w[3],6,'$'.number_format($row['monto'],0,",","."),'LR',0,'R',$fill);
$sumasup = $row['monto'];
}
$this->Cell($w[4],6,$row['id_curso']. ' ' . utf8_decode($row['curso']),'LR',0,'L',$fill);
$this->Cell($w[5],6,utf8_decode($row['concepto']),'LR',0,'L',$fill);
$this->Ln();
// $this->Cell($w[6],6,$row['SumaDesem'],'LR',0,'L',$fill);
$fill = !$fill;
}
// Línea de cierre
$this->Cell(array_sum($w),0,'','T');
}
function Footer()
{
//* Posición a 1.5cm del final del documento
$this->SetY(-15);
//* Fuente: Arial Italic 8
$this->SetFont('Arial','I',8);
//* Número de página
$this->Cell(0,10, utf8_decode('Página: ' . $this->PageNo() . '/{nb}'),0,0,'C');
$this->Ln(4);
}
}
Controdor movimientosController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public function movimientos()
{
//* Obtenemos los Datos para generación la tabla del PDF
$data = $this->_modelo->getMovimientos();
//* llamamos la Libreria que contiene toda la clase
$this->getLibrary('movimientos');
$movimientos = new MOVIMIENTOS;
//* Headers
$header = array(
'Desembolso', 'Suplemento', 'Fecha', 'Monto', 'Curso', 'Concepto'
);
//* Fuente
$movimientos->AliasNbPages();
$movimientos->SetFont('Arial','',10);
$movimientos->AddPage('L');
$movimientos->Table($header, $data);
// $pdf->Output('nombre_del_documento_pdf.pdf', 'D');
$movimientos->Output();
}
y el modelo, movimientosModel.php
1
2
3
4
5
6
7
public function getMovimientos()
{
$movimientos = $this->_db->query(
"select m.*, d.*, s.*, c.* from movtos m, desembolsos d, suplementos s, cursos c where m.id_curso = c.id_curso"
);
return $movimientos->fetchAll(PDO::FETCH_ASSOC);
}
No se como efectuar la suma, debo sumar todos los montos que sean iguales a id_complemto y todos los montos que sean igual a id_suplemento, y en que lugar ponerlos para que aparezca al final de la tabla un resumen con Total Complemento y Total Suplemento.
Cualquier ayuda o comentario es muy bien venido. de antemanos Gracias.
Valora esta pregunta


0