Ir al contenido


Foto

Sistema de Facturacion PHP


  • Por favor identifícate para responder
7 respuestas en este tema

#1 Natsuki

Natsuki

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 07 agosto 2014 - 08:33

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
  • 0

#2 marcosp

marcosp

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 04 septiembre 2014 - 11:35

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:
 

delphi
  1. $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.
  • 0

#3 Natsuki

Natsuki

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 04 septiembre 2014 - 05:23

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

  • 0

#4 marcosp

marcosp

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 04 septiembre 2014 - 07:56

Tenes que indicar que $fila es un array antes de entrar en el bucle

delphi
  1. $fila=array();

sino siempre te va a sobreescribir lo que tenga dentro

Tambien podes probar cambiar


delphi
  1. array_push($fila, $ins);



por


delphi
  1. $fila[] = $ins;



para agregar la siguiente linea de la factura
  • 0

#5 Natsuki

Natsuki

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 05 septiembre 2014 - 05:38

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
  1. public function indexAction()
  2.     {
  3.         $this->dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter');
  4.         $f=new Factura($this->dbAdapter);
  5.         $cliente=$f->getCliente();
  6.         $productos=$f->getProductos();
  7.         $categ=$f->getnNameCategoria();
  8.         $form=new Formularios("form");
  9.         $fila=array();
  10.         $subtotal=0;
  11.         $iva=0;
  12.         $total=0;
  13.         if($this->getRequest()->isPost())
  14.         {
  15.             $data=$this->request->getPost();
  16.             $cantidad=$data['cantidad'];
  17.             $valcan=$data['cantidad'];
  18.             $valor=$f->getProductoPorId($data['selec2']);
  19.             $exit=$valor[0]['Existencia_producto'];
  20.             $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>";
  21.             array_push($fila, $ins);
  22.             $subtotal=$subtotal+($cantidad*$valor[0]['Precio_producto']);
  23.             $iva=$iva+($subtotal*0.16);
  24.             $total=$total+($subtotal+$iva);
  25.             if($valcan>$valor)
  26.             {
  27.                 $mensaje='No hay suficiente cantidad del producto.';
  28.                 $valores=array
  29.                 (
  30.                 'form'=>$form,
  31.                 'url'=>$this->getRequest()->getBaseUrl(),
  32.                 'datos'=>$cliente,
  33.                 'productos'=>$productos,
  34.                 'name_categ'=>$categ,
  35.                 'mensaje'=>$mensaje,
  36.                 'valida'=>0,
  37.                 'fila'=>$fila,
  38.                 'subtotal'=>$subtotal,
  39.                 'iva'=>$iva,
  40.                 'total'=>$total,
  41.                 );
  42.                 return new ViewModel($valores);
  43.             }
  44.             else
  45.             {
  46.                 $valores=array
  47.                 (
  48.                 'form'=>$form,
  49.                 'url'=>$this->getRequest()->getBaseUrl(),
  50.                 'datos'=>$cliente,
  51.                 'productos'=>$productos,
  52.                 'name_categ'=>$categ,
  53.                 'datosfac'=>$valor,
  54.                 'cantidad'=>$valcan,
  55.                 'valida'=>1,
  56.                 'fila'=>$fila,
  57.                 'subtotal'=>$subtotal,
  58.                 'iva'=>$iva,
  59.                 'total'=>$total,
  60.                 );
  61.                 return new ViewModel($valores);
  62.             }
  63.         }
  64.         else
  65.         {
  66.             $valores=array(
  67.                 'url'=>$this->getRequest()->getBaseUrl(),
  68.                 'datos'=>$cliente,
  69.                 'productos'=>$productos,
  70.                 'name_categ'=>$categ,
  71.                 'valida'=>0,
  72.             );
  73.             return new ViewModel($valores);
  74.         }


  • 0

#6 Sephiroth_801

Sephiroth_801

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 09 septiembre 2014 - 10:13

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?.
  • 0

#7 Natsuki

Natsuki

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 10 septiembre 2014 - 01:46

el valor de $this->datosfac se lo envia el controlador a la vista
  • 0

#8 Sephiroth_801

Sephiroth_801

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 11 septiembre 2014 - 06:22

Si, ¿pero donde está el ciclo que llena ese arreglo?.
  • 0




IP.Board spam blocked by CleanTalk.