Hola Chicos!! en estos momentos estoy haciendo uno pero tengo algunas dudas, con respecto a en que momento se hace la inserción en la base de datos , es decir, al momento de agregar el producto o al de generar la factura, y como lo estoy manejando es con un campo que carga las referencias de los productos y otro campo para obtener la cantidad y con eso hago operaciones en php para calcular costo e imprimirlo en una tabla pero el problema es que si el usuario desea cambiar la cantidad no puede ; estaba pensando en poner una tabla con muchos campos pero creo que es como complicarse
De antemano Gracias por tu ayuda

Sistema de Facturacion PHP
Started by
Natsuki
, Aug 07 2014 08:33 AM
7 replies to this topic
#1
Posted 07 August 2014 - 08:33 AM
#2
Posted 04 September 2014 - 11:35 AM
Hola.. No se si es esto lo que preguntas, pero bue jeje..
La factura se deberia registrar en la base de datos una vez que el usuario confirme. Es decir se completa todos los datos de la factura que consta de dos partes: el encabezado y el detalle.
Ej.:
encabezado-> fecha, nro., punto venta, cliente, etc.
detalle -> idproducto, cantidad, precio.
Cada factura tiene un encabezado y uno o mas detalles (cada detalle es un renglon en la factura que indica producto, cantidad y precio).
El usuario ingresa los datos de la factura, encabezado y detalles, luego presiona 'confirmar' y el sistema registra dicho encabezado y sus detalles en la base de datos.
Lo que podes hacer es ir poniendo el detalle de la factura en un array.
Cada vez que se agrega un producto a la factura haces:
Luego al momento de confirmar (para guardarla en la bd) recorres ese array y vas registrando cada linea.
La factura se deberia registrar en la base de datos una vez que el usuario confirme. Es decir se completa todos los datos de la factura que consta de dos partes: el encabezado y el detalle.
Ej.:
encabezado-> fecha, nro., punto venta, cliente, etc.
detalle -> idproducto, cantidad, precio.
Cada factura tiene un encabezado y uno o mas detalles (cada detalle es un renglon en la factura que indica producto, cantidad y precio).
El usuario ingresa los datos de la factura, encabezado y detalles, luego presiona 'confirmar' y el sistema registra dicho encabezado y sus detalles en la base de datos.
Lo que podes hacer es ir poniendo el detalle de la factura en un array.
Cada vez que se agrega un producto a la factura haces:
delphi
$detFactura[]=array("idproducto"=>$idprod, "cantidad"=>$cantidad, "precio"=>$precioProd);
Luego al momento de confirmar (para guardarla en la bd) recorres ese array y vas registrando cada linea.
#3
Posted 04 September 2014 - 05:23 PM
eso es lo que me habia planteado pero ahora tengo un problema con el array, estoy utilizando la funcion array_push para agregar la siguiente linea de la factura pero me la esta sobrescribiendo, este es el codigo que estoy implementando
foreach ($this->datosfac as $fac )
{
$ins="<tr><td>".$fac['Referencia_producto']."</td><td>".$fac['Nombre_Categoria']."</td><td>".$this->cantidad."</td><td>".$fac['Precio_producto']."</td><td>".$this->cantidad * $fac['Precio_producto']."</td></tr>";
array_push($fila, $ins);
}
por cierto estoy trabajando con Zf2
foreach ($this->datosfac as $fac )
{
$ins="<tr><td>".$fac['Referencia_producto']."</td><td>".$fac['Nombre_Categoria']."</td><td>".$this->cantidad."</td><td>".$fac['Precio_producto']."</td><td>".$this->cantidad * $fac['Precio_producto']."</td></tr>";
array_push($fila, $ins);
}
por cierto estoy trabajando con Zf2
#4
Posted 04 September 2014 - 07:56 PM
Tenes que indicar que $fila es un array antes de entrar en el bucle
sino siempre te va a sobreescribir lo que tenga dentro
Tambien podes probar cambiar
por
para agregar la siguiente linea de la factura
delphi
$fila=array();
sino siempre te va a sobreescribir lo que tenga dentro
Tambien podes probar cambiar
delphi
array_push($fila, $ins);
por
delphi
$fila[] = $ins;
para agregar la siguiente linea de la factura
#5
Posted 05 September 2014 - 05:38 PM
eso es lo que estaba haciendo pero aun asi me lo esta sobrescribiendo, por ahora pase este procedimiento al controlador y en la vista solo estoy mostrando datos, aca esta el codigo del controlador:
delphi
public function indexAction() { $this->dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter'); $f=new Factura($this->dbAdapter); $cliente=$f->getCliente(); $productos=$f->getProductos(); $categ=$f->getnNameCategoria(); $form=new Formularios("form"); $fila=array(); $subtotal=0; $iva=0; $total=0; if($this->getRequest()->isPost()) { $data=$this->request->getPost(); $cantidad=$data['cantidad']; $valcan=$data['cantidad']; $valor=$f->getProductoPorId($data['selec2']); $exit=$valor[0]['Existencia_producto']; $ins="<tr><td>".$valor[0]['Referencia_producto']."</td><td>".$valor[0]['Nombre_Categoria']."</td><td>".$cantidad."</td><td>".$valor[0]['Precio_producto']."</td><td>".$cantidad*$valor[0]['Precio_producto']."</td></tr>"; array_push($fila, $ins); $subtotal=$subtotal+($cantidad*$valor[0]['Precio_producto']); $iva=$iva+($subtotal*0.16); $total=$total+($subtotal+$iva); if($valcan>$valor) { $mensaje='No hay suficiente cantidad del producto.'; $valores=array ( 'form'=>$form, 'url'=>$this->getRequest()->getBaseUrl(), 'datos'=>$cliente, 'productos'=>$productos, 'name_categ'=>$categ, 'mensaje'=>$mensaje, 'valida'=>0, 'fila'=>$fila, 'subtotal'=>$subtotal, 'iva'=>$iva, 'total'=>$total, ); return new ViewModel($valores); } else { $valores=array ( 'form'=>$form, 'url'=>$this->getRequest()->getBaseUrl(), 'datos'=>$cliente, 'productos'=>$productos, 'name_categ'=>$categ, 'datosfac'=>$valor, 'cantidad'=>$valcan, 'valida'=>1, 'fila'=>$fila, 'subtotal'=>$subtotal, 'iva'=>$iva, 'total'=>$total, ); return new ViewModel($valores); } } else { $valores=array( 'url'=>$this->getRequest()->getBaseUrl(), 'datos'=>$cliente, 'productos'=>$productos, 'name_categ'=>$categ, 'valida'=>0, ); return new ViewModel($valores); }
#6
Posted 09 September 2014 - 10:13 AM
Respecto al último código, en que parte se llena : '$this->datosfac', porque por lo que entendí, tienes problemas al recorrer ese arreglo. ¿te muestra siempre lo mismo, te muestra solo un registro?.
#7
Posted 10 September 2014 - 01:46 PM
el valor de $this->datosfac se lo envia el controlador a la vista
#8
Posted 11 September 2014 - 06:22 AM
Si, ¿pero donde está el ciclo que llena ese arreglo?.