Cómo crear una factura, albarán, pedido o presupuesto

Los documentos de compra o venta son más complejos, ya que se relacionan directamente con un cliente o proveedor, incluyen una o varias líneas y requieren el cálculo de totales.


1. Creación de un Presupuesto de Compra

A continuación se muestra un ejemplo de cómo crear un presupuesto para un proveedor. El mismo procedimiento aplica para pedidos, albaranes y facturas de proveedor.

Ejemplo en PHP

// Cargamos el proveedor con código "1"
$proveedor = new Proveedor();
if (!$proveedor->load('1')) {
    // No se encontró el proveedor
}

// Creamos el presupuesto asignando empresa, almacén, serie, divisa, forma de pago y fecha predeterminada
$presupuesto = new PresupuestoProveedor();
$presupuesto->setSubject($proveedor); // Asignamos el proveedor
if (!$presupuesto->save()) {
    // No se pudo guardar el presupuesto
}

// Añadimos una línea con un producto al presupuesto
$newLinea1 = $presupuesto->getNewProductLine('referencia1'); // Se asigna el producto, descripción, precio, etc.
$newLinea1->cantidad = 1;
if (!$newLinea1->save()) {
    // No se pudo guardar la línea
}

// Añadimos una línea de texto
$newLinea2 = $presupuesto->getNewLine();
$newLinea2->descripcion = 'Mano de obra';
$newLinea2->cantidad = 5;
$newLinea2->pvpunitario = 10;
if (!$newLinea2->save()) {
    // No se pudo guardar la línea
}

// Actualizamos los totales del presupuesto
$lineas = $presupuesto->getLines();
if (!Calculator::calculate($presupuesto, $lineas, true)) {
    // No se pudieron actualizar los totales
}

Notas:

  • Para asignar el proveedor se utiliza el método setSubject().
  • Para agregar líneas de producto, utiliza getNewProductLine('referencia'), pasando como parámetro la referencia del producto.
  • Para agregar líneas de texto (sin producto), utiliza getNewLine().
  • Finalmente, se invoca la clase Calculator para recalcular y actualizar los totales del documento. Recuerda incluir la directiva:
use FacturaScripts\Core\Base\Calculator;

2. Creación de una Factura de Venta

El siguiente ejemplo ilustra cómo crear una factura para un cliente. El proceso es similar al del presupuesto, variando únicamente el nombre de la clase, ya que se utiliza para facturas. Este método es aplicable igualmente para albaranes, pedidos y presupuestos de cliente.

Ejemplo en PHP

// Cargamos el cliente con código "1"
$cliente = new Cliente();
if (!$cliente->load('1')) {
    // No se encontró el cliente
}

// Creamos la factura asignando empresa, almacén, serie, divisa, forma de pago y fecha predeterminada
$factura = new FacturaCliente();
$factura->setSubject($cliente); // Asignamos el cliente
if (!$factura->save()) {
    // No se pudo guardar la factura
}

// Añadimos una línea con un producto a la factura
$newLinea1 = $factura->getNewProductLine('referencia1'); // Se asigna el producto, descripción, precio, etc.
$newLinea1->cantidad = 1;
if (!$newLinea1->save()) {
    // No se pudo guardar la línea
}

// Añadimos una línea de texto
$newLinea2 = $factura->getNewLine();
$newLinea2->descripcion = 'Mano de obra';
$newLinea2->cantidad = 5;
$newLinea2->pvpunitario = 10;
if (!$newLinea2->save()) {
    // No se pudo guardar la línea
}

// Actualizamos los totales de la factura
$lineas = $factura->getLines();
if (!Calculator::calculate($factura, $lineas, true)) {
    // No se pudieron actualizar los totales
}

3. Actualización del Stock

El stock se actualiza automáticamente al guardar cualquier documento de compra o venta. A continuación, se detalla cómo se gestionan las cantidades:

  • Albaranes y facturas de compra: Las cantidades se suman al stock de los productos.
  • Albaranes y facturas de venta: Las cantidades se restan del stock de los productos.
  • Pedidos de compra: Las cantidades se registran como pendiente de recepción.
  • Pedidos de venta: Las cantidades se anotan como reservadas.

Este comportamiento se define en los estados del documento, los cuales pueden configurarse desde el panel de control.

Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2025 FacturaScripts
1.36572s

Soporte