No Naci Caminando Buscador

Envia sms gratis a Personal, Tigo; Claro y Vox...

martes, 31 de marzo de 2009

¿Es posible imprimir una factura con formato ?

Simplemente muestro una factura generada por el Fpdf.php a la cual le he dado un formato diferente para lograr acercarme a lo que seria una factura o recibo...

espero sirva la imagen para demostrar dicha posibilidad...


NOTA: los datos de la imagen no reflejan datos reales de una factura....

P/D: consultas y sugerencias a Kriok.medina@hotmail.com

domingo, 29 de marzo de 2009

jugando con js

Este es un ejemplo sencillo de como hacer cálculos rápidos apenas ingesando al cuadro donde deberia aparecer el resultado.

entiendase que tengo tres cuadros donde en los dos primeros ingreso registros y en el tercero muestro el producto de los dos anteriores:
para ello creo mis cuadros de textos en html:




luego creo mi funcion Suma() en mi mismo archivo js:

jueves, 26 de marzo de 2009

filtro por igualdad de caracteres(symfony)

crea una funcion que liste la totalidad de los registros y la visualize en una vista con el cuadro del filtro:

public function executeListconfiltro()
{
$c = new Criteria();
$numero_reg = MedidaPeer::doCount($c);
if(0!=$numero_reg)
{
$this->datos = MedidaPeer::doSelect($c);
}
}
public function executeFiltrar()
{
$id=$_POST['filtro'];

$c = new Criteria();
if($id!='')
{
$c->add(MedidaPeer::DESCRIPCION,"%$id%", Criteria::LIKE);
$this->datos = MedidaPeer::doSelect($c);
}
else
{
$this->datos = MedidaPeer::doSelect($c);
}
}

para cada funcion crea una vista, en este caso la vista es la misma pero renombradas.:




para que el boton ok funcione agrega al archivo .js lo que sigue:

function filtrar(form, actions, confirma, messages)
{ var filtro=document.getElementById("filtro").value;

form.action= actions;
if (confirma)
{
if (!confirm(messages))
{

return false;
}
}
form.submit();
return true;
}
la vista terminada es algo parecido a esto:

viernes, 20 de marzo de 2009

Symfony (PHP hacer que mi reporte me abra en una nueva ventana)

has notado que en la misma ventana que llama al reporte es mostrado el mismo, pues hagamos que el reporte se proyecte a una nueva ventana y de la manera mas facil:

en tu carpeta web\js de tu proyecto crea un archivo .js (e.j nombre.js) en el copia este codigo de ejemplo:


ahora debes incluir tu script dentro del symfony para ello modifica el archivo view.yml de tu directorio apps\frontend\config

javascripts: [nombre.js]


ahora modifiquemos el template donde tenemos nuestro boton que envia la peticion del reporte


reemplaza el fragmento de codigo de:

por el siquiente:


Nota: el .js hace referencia a la funcion executeRep2 la que seria una copia de tu
executeRep del accionclass.php de tu modulo reportes, ahora con una pequeña modificacion
busca la linea donde este esto: $var=$_POST['tipo_tarjeta']; y remplazalo por $var=$_GET['var'];

esto es por que en el js tenemos
var id=document.getElementById('tipo_tarjeta').value;//esto recibe del form el valor del combo y lo guarda en una variable id
abrir_ventana("rep2?var="+id+"",'Reporte');// esto llama a la funcion abrir_ventana() y le pasa como parametros ("rep2?var="+id+"",'Reporte') esto asu ves llama a rep2 de tu accionclass.php y le pasa la variable id por el metodo get...

esto es todo!!!! pruebalo

miércoles, 18 de marzo de 2009

Fpdf en Symfony = Reportes

Crea un modulo para tus reportes:
> cd ~/miproyecto
> symfony init-module miaplicacion mimodulo

una ves creado tu modulo. verificalo en la url:


ahora crear una funcion y una vista para levantar un combo:
accionClass.php:
class reporteActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/

public function executeIndex(sfWebRequest $request)
{
$this->forward('default', 'module');
}
public function executeAccion()
{
$this->datos = BancoPeer::doSelect(new Criteria());

}
}

Vista o template:
en este caso accionSuccess.php---



quendo la vista asi:


notese que el boton hace referencia a la funcion Rep: para ello crearas dicha fuccion y antes del class principal incluiras el archivo fpdf :
include_once('fpdf.php');
class reporteActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/

public function executeIndex(sfWebRequest $request)
{
$this->forward('default', 'module');
}
public function executeAccion()
{
$this->datos = BancoPeer::doSelect(new Criteria());

}
public function executeRep()
{
}
}

el contenido de la funcion executeRep es la que sigue:
public function executeRep()
{ $var=$_POST['tipo_tarjeta'];
// armando el reporte
$pdf=new FPDF();
$pdf->Open();
$pdf->Header();
$pdf->AddPage();
//Set fonts y colores
$pdf->SetFont('Arial','B',15);
$pdf->SetFillColor(155,0,0);
$pdf->SetTextColor(0,0,265);
$pdf->Cell(190,10,'ProjectClick',1,1,'C',0,'');
$pdf->Cell(190,5,'',0,1,'C',0);

$pdf->SetTextColor(255);
$pdf->SetFillColor(155,0,0);
$pdf->SetLineWidth(.1);
$pdf->SetFont('Arial','B',8);

$pdf->Cell(8,5,'Nº',1,0,'C',1);
$pdf->Cell(36,5,'ID',1,0,'C',1);
$pdf->Cell(36,5,'Banco',1,1,'C',1);
//$pdf->Cell(80,5,'depto',1,1,'C',1);
//Consulta
$c = new Criteria();
if($var!=0)
{
$c->add(BancoPeer::IDBANCO, $var);
}
$c->addAscendingOrderByColumn(BancoPeer::NOMBRE_BANCO);
$numero_reg = BancoPeer::doCount($c);
$datos = BancoPeer::doSelect($c);
//Construir la tabla
//Restaurar fuentes y colores
$pdf->SetFont('Arial','',7);
$pdf->SetFillColor(224,235,255);
$pdf->SetTextColor(0);
$i =0;
foreach ($datos as $dat):
$i++;
$pdf->Cell(8,7,$i,1,0,'C',1);
$id =$dat->getIdBanco(); $pdf->Cell(36,7,$id,1,0,'C',1);
$descripcion = strtoupper($dat->getNombreBanco()); $pdf->Cell(36,7,$descripcion,1,1,'C',1);

endforeach;

$pdf->SetFillColor(220,220,220);
$pdf->Cell(65,5,'TOTAL Registros ',1,0,'R',1);
$pdf->Cell(15,5,$numero_reg,1,1,'C',1);
$pdf->SetFillColor(224,235);
$pdf->SetFont('Arial','',7);
$pdf->Cell(190,5,'',0,1,'C',0);
$pdf->Cell(190,5,'',0,1,'C',0);


$pdf->SetFont('Arial','B',15);
$pdf->SetFillColor(224,235,235);
$pdf->SetTextColor(0,0,265);
$pdf->Cell(190,10,' Report End ',1,1,'C',0,'www.hotmail.com');
$pdf->SetFont('Arial','',8);
$pdf->Cell(190,4,'By Pablo Medina cel:(0975 633035/ 0985 830946 )',1,1,'C',0);

$pdf->SetXY(5,300);
$pdf->Output();
return sfView::NONE;
}

de ir todo bien el resultado seria algo como esto: