Pipes para extensiones añadidas para importación manual de CSVimport
Pipes de las clases ManualTemplates
Los pipes se implementan vía
ExtensionsTraity 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$itemcon 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$datade 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
Atributoimportado 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
Atributoque se crea automáticamente porque no existía, durante la importación de unAtributoValor. - 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
setModelValuesysave()sobre el objetoStock. - Parámetros:
(Stock $stock, array $item, mixed $stockQty)—$stockQtyes el valor de cantidad raw del CSV (puede sernull). - Valor de retorno: No se usa el retorno (pipe de notificación). Permite modificar
$stockpor referencia o ejecutar lógica previa al guardado.
importStockAfterSave
- Momento: Justo después de haber guardado el
Stockcon 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 laFacturaClientenueva. - 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
ReciboClienteal 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 laFacturaProveedornueva. - 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
ReciboProveedoral 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 deCustomerInvoices. - 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 elAlbaranClientenuevo. - 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
LineaAlbaranClienteen 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
LineaAlbaranClienteen 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 pipeimportItemBeforeSavese llama tres veces con firmas diferentes según se esté guardando el proveedor, su dirección o su cuenta bancaria.