Pipes para extensiones añadidas para importación manual de CSVimport

Pipes de las clases ManualTemplates

Los pipes se implementan vía ExtensionsTrait y permiten que otros plugins intercepten el flujo de importación. Se invocan con $this->pipe('nombre', $param1, ...). Si el pipe devuelve un valor del tipo esperado, sustituye al objeto original; si no, se ignora.


Pipes comunes (presentes en todas las clases)

Estos 4 pipes existen en todas las clases de Lib/ManualTemplates/.


getDataFields

  • Momento: Al construir el listado de campos disponibles para mapear columnas del CSV.
  • Parámetros: array $fields — array asociativo [clave => ['title' => ..., 'group' => ...]] con los campos base de la clase.
  • Valor de retorno: Si devuelve un array, reemplaza completamente el array de campos. Permite añadir, modificar o eliminar campos del selector de columnas en la UI.

getFieldsToColumn

  • Momento: Al obtener el mapeo extra de campos a columnas (transformaciones adicionales no estándar).
  • Parámetros: array $fields — array vacío por defecto.
  • Valor de retorno: Si devuelve un array, lo usa como lista de campos adicionales que se mapean automáticamente a columnas del CSV.

getRequiredFieldsAnd

  • Momento: Al validar si una fila del CSV tiene todos los campos obligatorios (lógica AND: todos deben estar presentes).
  • Parámetros: array $fields — array de claves de campos que son obligatorios según la clase base.
  • Valor de retorno: Si devuelve un array, reemplaza la lista de campos obligatorios AND.

getRequiredFieldsOr

  • Momento: Al validar si una fila del CSV tiene al menos uno de los campos requeridos (lógica OR: basta con que uno esté presente).
  • Parámetros: array $fields — array de claves de campos requeridos OR según la clase base.
  • Valor de retorno: Si devuelve un array, reemplaza la lista de campos requeridos OR.

Pipes comunes de importación (presentes en la mayoría de clases)


importItemBefore

  • Presente en: Todas las clases.
  • Momento: Al inicio de importItem(), antes de cualquier procesamiento de la fila.
  • Parámetros: array $item — datos de la fila actual del CSV, ya transformados según el mapeo de columnas.
  • Valor de retorno: Si devuelve un array, reemplaza $item con los datos modificados. Permite preprocesar o cancelar el ítem.

importItemAfter

  • Presente en: AccountingEntries, Attributes, Products.
  • Momento: Tras guardar exitosamente el objeto principal de la fila.
  • Parámetros: varía por clase:
    • AccountingEntries: (Partida $line, array $item)
    • Attributes: (array $item)
    • Products: (Producto $product, array $item)
  • Valor de retorno: No se usa (pipe de notificación pura). Permite ejecutar acciones post-guardado.

importAfter

  • Presente en: Products, CustomerInvoices, SupplierInvoices, CustomerDeliveryNotes.
  • Momento: Al finalizar el método import() completo, después de procesar todas las filas del lote.
  • Parámetros: array $data — resultado del import: ['save' => int, 'offset' => int, 'total' => int, 'options' => array].
  • Valor de retorno: Si devuelve un array, reemplaza el $data de respuesta. Permite modificar las estadísticas finales o ejecutar acciones post-importación de lote.

AccountingEntries — Asientos contables

importItemBeforeSaveEntry

  • Momento: Justo antes de guardar el objeto Asiento (cabecera del asiento), solo cuando el asiento es nuevo.
  • Parámetros: (Asiento $entry, array $item)
  • Valor de retorno: Si devuelve una instancia de Asiento, reemplaza el objeto que se guardará.

importItemBeforeSaveLine

  • Momento: Justo antes de guardar la Partida (línea del asiento contable).
  • Parámetros: (Partida $line, array $item)
  • Valor de retorno: Si devuelve una instancia de Partida, reemplaza el objeto que se guardará.

Attributes — Atributos y valores de atributo

importAtributoAttributeBeforeSave

  • Momento: Justo antes de guardar un Atributo importado directamente (fila que solo define un atributo sin valor).
  • Parámetros: (Atributo $attribute, array $item)
  • Valor de retorno: Si devuelve una instancia de Atributo, reemplaza el objeto que se guardará.

importAtributoValorAttributeBeforeSave

  • Momento: Justo antes de guardar un Atributo que se crea automáticamente porque no existía, durante la importación de un AtributoValor.
  • Parámetros: (Atributo $attribute, array $item)
  • Valor de retorno: Si devuelve una instancia de Atributo, reemplaza el objeto que se guardará.

importAtributoValorValueBeforeSave

  • Momento: Justo antes de guardar el AtributoValor (el valor de atributo de la fila).
  • Parámetros: (AtributoValor $attributeValue, array $item)
  • Valor de retorno: Si devuelve una instancia de AtributoValor, reemplaza el objeto que se guardará.

Products — Productos

importItemBeforeSave

  • Momento: Justo antes de guardar el Producto, tras asignar todos sus campos (familia, fabricante, impuesto, etc.).
  • Parámetros: (Producto $product, array $item)
  • Valor de retorno: Si devuelve una instancia de Producto, reemplaza el objeto que se guardará.

importStockBeforeSave

  • Momento: Justo antes de llamar a setModelValues y save() sobre el objeto Stock.
  • Parámetros: (Stock $stock, array $item, mixed $stockQty)$stockQty es el valor de cantidad raw del CSV (puede ser null).
  • Valor de retorno: No se usa el retorno (pipe de notificación). Permite modificar $stock por referencia o ejecutar lógica previa al guardado.

importStockAfterSave

  • Momento: Justo después de haber guardado el Stock con los valores base.
  • Parámetros: (Stock $stock, array $item, mixed $stockQty, string $codalmacen, Variante $variant)
  • Valor de retorno: No se usa el retorno (pipe de notificación). Permite ejecutar lógica post-guardado de stock.

CustomerInvoices — Facturas de cliente

importItemBeforeSave

  • Momento: Justo antes de llamar a Calculator::calculate() y guardar la FacturaCliente nueva.
  • Parámetros: (FacturaCliente $invoice, array $item)
  • Valor de retorno: Si devuelve una instancia de FacturaCliente, reemplaza el objeto que se guardará.

importItemReceiptBeforeSave

  • Momento: Justo antes de guardar un ReciboCliente al marcar la factura como pagada.
  • Parámetros: (FacturaCliente $invoice, array $item) — el pipe recibe la factura, no el recibo directamente.
  • Valor de retorno: Si devuelve una instancia de ReciboCliente, reemplaza el recibo que se guardará.

newLineOptBeforeSave

  • Momento: Justo antes de guardar una LineaFacturaCliente, tanto en modo "totales" (línea sintética) como en modo "líneas detalladas".
  • Parámetros: (FacturaCliente $invoice, LineaFacturaCliente $line, array $item)
  • Valor de retorno: Si devuelve una instancia de LineaFacturaCliente, reemplaza la línea que se guardará.

SupplierInvoices — Facturas de proveedor

importItemBeforeSave

  • Momento: Justo antes de llamar a Calculator::calculate() y guardar la FacturaProveedor nueva.
  • Parámetros: (FacturaProveedor $invoice, array $item)
  • Valor de retorno: Si devuelve una instancia de FacturaProveedor, reemplaza el objeto que se guardará.

importItemReceiptBeforeSave

  • Momento: Justo antes de guardar un ReciboProveedor al marcar la factura como pagada.
  • Parámetros: (FacturaProveedor $invoice, array $item) — el pipe recibe la factura, no el recibo directamente.
  • Valor de retorno: Si devuelve una instancia de ReciboProveedor, reemplaza el recibo que se guardará.

newLineBeforeSave

  • Momento: Justo antes de guardar una LineaFacturaProveedor, tanto en modo "totales" como en modo "líneas detalladas".
  • Parámetros: (LineaFacturaProveedor $line, FacturaProveedor $invoice, array $item) — ⚠️ el orden es $line, $invoice, inverso al de CustomerInvoices.
  • Valor de retorno: Si devuelve una instancia de LineaFacturaProveedor, reemplaza la línea que se guardará.

CustomerDeliveryNotes — Albaranes de cliente

importItemBeforeSave

  • Momento: Justo antes de llamar a Calculator::calculate() y guardar el AlbaranCliente nuevo.
  • Parámetros: (AlbaranCliente $deliveryNote, array $item)
  • Valor de retorno: Si devuelve una instancia de AlbaranCliente, reemplaza el objeto que se guardará.

newLineOptBeforeSave

  • Momento: Justo antes de guardar una LineaAlbaranCliente en modo "totales" (línea sintética con neto/iva/total).
  • Parámetros: (AlbaranCliente $deliveryNote, LineaAlbaranCliente $line, array $item)
  • Valor de retorno: Si devuelve una instancia de LineaAlbaranCliente, reemplaza la línea que se guardará.

newLineBeforeSave

  • Momento: Justo antes de guardar una LineaAlbaranCliente en modo "líneas detalladas".
  • Parámetros: (AlbaranCliente $deliveryNote, LineaAlbaranCliente $line, array $item)
  • Valor de retorno: Si devuelve una instancia de LineaAlbaranCliente, reemplaza la línea que se guardará.

Customers, Suppliers, Contacts, Families, Manufacturers, Variants, SupplierProducts

Estas clases tienen únicamente el pipe genérico importItemBeforeSave (además de los 4 comunes):

Clase Parámetros del pipe importItemBeforeSave Tipo esperado en retorno
Customers (Cliente $customer, array $item) Cliente
Suppliers Tres llamadas: ($supplier, $item), ($supplier, $address, $item), ($supplier, $bank, $item) Proveedor
Contacts (Contacto $contact, array $item) Contacto
Families (Familia $family, array $item) Familia
Manufacturers (Fabricante $manufacturer, array $item) Fabricante
Variants (Variante $variant, array $item) Variante
SupplierProducts (ProductoProveedor $productSupplier, array $item) ProductoProveedor

Nota sobre Suppliers: el pipe importItemBeforeSave se llama tres veces con firmas diferentes según se esté guardando el proveedor, su dirección o su cuenta bancaria.

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-2026 FacturaScripts
0.05722s

Soporte