ApiEditDocument
extends ApiController
in package
uses
ApiBusinessDocumentTrait
Edita un documento de negocio existente (factura, albarán, pedido o presupuesto) en una sola llamada: modificación tanto el documento como las líneas, recalculando totales y manteniendo el stock consistente.
Table of Contents
Constants
- API_VERSION : mixed = 3
- INCIDENT_EXPIRATION_TIME : mixed = 600
- IP_LIST : mixed = 'api-ip-list'
- MAX_INCIDENT_COUNT : mixed = 5
Properties
Methods
- __construct() : mixed
- Inicializa el controlador asociado a una ruta.
- getPageData() : array<string|int, mixed>
- Devuelve los metadatos de la página, como el nombre, título, icono y ubicación en el menú.
- run() : void
- Ejecuta el ciclo principal del controlador para procesar la petición actual.
- applyLineFields() : void
- Asigna a la línea los campos recibidos en el array de datos.
- checkCompany() : bool
- Comprueba que la empresa (idempresa) no se cambia, porque rompería la numeración, la contabilidad y el stock asociado al documento.
- checkSubject() : bool
- Comprueba que el sujeto (codcliente / codproveedor) no se cambia.
- checkWarehouse() : bool
- Comprueba que el almacén (codalmacen) no se cambia, porque descuadraría el stock de las líneas existentes.
- db() : DataBase
- decodeLines() : array<string|int, mixed>|null
- Decodifica y valida la lista de líneas recibida por la API.
- editDocument() : bool
- editLockedDocument() : bool
- Edita un documento no editable: solo se permiten los campos desbloqueados (femail, idestado, idestado_ant, numdocs, pagada). Cualquier intento de modificar la cabecera o las líneas se rechaza con 422.
- getUriParam() : string
- loadModel() : bool
- processInvoicePaid() : void
- runResource() : void
- syncLines() : bool
- Sincroniza las líneas del documento (full sync): las líneas con idlinea existente se modifican, las que no traen idlinea se crean y las líneas existentes ausentes del payload se borran (revirtiendo el stock).
- toBool() : bool
- Convierte un valor a booleano.
- updateHeader() : bool
- Actualiza la cabecera del documento con los campos permitidos. No toca el sujeto ni el almacén (ya validados como inmutables), ni la clave primaria, la numeración (numero, codigo, codejercicio) ni el estado (idestado), que deben cambiarse por sus mecanismos propios y no por asignación directa.
Constants
API_VERSION
public
mixed
API_VERSION
= 3
INCIDENT_EXPIRATION_TIME
public
mixed
INCIDENT_EXPIRATION_TIME
= 600
IP_LIST
public
mixed
IP_LIST
= 'api-ip-list'
MAX_INCIDENT_COUNT
public
mixed
MAX_INCIDENT_COUNT
= 5
Properties
$apiKey
protected
ApiKey
$apiKey
$model
protected
string
$model
$request
protected
Request
$request
$response
protected
Response
$response
$url
protected
string
$url
Methods
__construct()
Inicializa el controlador asociado a una ruta.
public
__construct(string $className[, string $url = '' ]) : mixed
Parameters
- $className : string
-
Nombre de la clase final del controlador.
- $url : string = ''
-
Ruta solicitada por el usuario.
getPageData()
Devuelve los metadatos de la página, como el nombre, título, icono y ubicación en el menú.
public
getPageData() : array<string|int, mixed>
Este método se consulta durante la construcción y no debe depender de que el usuario esté autenticado.
Return values
array<string|int, mixed>run()
Ejecuta el ciclo principal del controlador para procesar la petición actual.
public
run() : void
El kernel invoca este método una vez después de construir el controlador.
applyLineFields()
Asigna a la línea los campos recibidos en el array de datos.
protected
applyLineFields(BusinessDocumentLine &$line, array<string|int, mixed> $data, bool $isNew) : void
Si un campo no viene en los datos se conserva el valor actual de la línea, salvo la cantidad, que en una línea nueva ($isNew) toma 1 por defecto.
Parameters
- $line : BusinessDocumentLine
- $data : array<string|int, mixed>
- $isNew : bool
checkCompany()
Comprueba que la empresa (idempresa) no se cambia, porque rompería la numeración, la contabilidad y el stock asociado al documento.
protected
checkCompany(BusinessDocument &$doc) : bool
Parameters
- $doc : BusinessDocument
Return values
boolcheckSubject()
Comprueba que el sujeto (codcliente / codproveedor) no se cambia.
protected
checkSubject(BusinessDocument &$doc) : bool
Parameters
- $doc : BusinessDocument
Return values
boolcheckWarehouse()
Comprueba que el almacén (codalmacen) no se cambia, porque descuadraría el stock de las líneas existentes.
protected
checkWarehouse(BusinessDocument &$doc) : bool
Parameters
- $doc : BusinessDocument
Return values
booldb()
protected
db() : DataBase
Return values
DataBasedecodeLines()
Decodifica y valida la lista de líneas recibida por la API.
protected
decodeLines(mixed $data) : array<string|int, mixed>|null
Parameters
- $data : mixed
Return values
array<string|int, mixed>|nulleditDocument()
protected
editDocument(BusinessDocument &$doc) : bool
Parameters
- $doc : BusinessDocument
Return values
booleditLockedDocument()
Edita un documento no editable: solo se permiten los campos desbloqueados (femail, idestado, idestado_ant, numdocs, pagada). Cualquier intento de modificar la cabecera o las líneas se rechaza con 422.
protected
editLockedDocument(BusinessDocument &$doc) : bool
Parameters
- $doc : BusinessDocument
Return values
boolgetUriParam()
protected
getUriParam(string $num) : string
Parameters
- $num : string
Return values
stringloadModel()
protected
loadModel() : bool
Return values
boolprocessInvoicePaid()
protected
processInvoicePaid(BusinessDocument &$doc) : void
Parameters
- $doc : BusinessDocument
runResource()
protected
runResource() : void
syncLines()
Sincroniza las líneas del documento (full sync): las líneas con idlinea existente se modifican, las que no traen idlinea se crean y las líneas existentes ausentes del payload se borran (revirtiendo el stock).
protected
syncLines(BusinessDocument &$doc) : bool
Parameters
- $doc : BusinessDocument
Return values
booltoBool()
Convierte un valor a booleano.
protected
toBool(mixed $value) : bool
Acepta: true, false, 1, 0, "1", "0", "true", "false"
Parameters
- $value : mixed
Return values
boolupdateHeader()
Actualiza la cabecera del documento con los campos permitidos. No toca el sujeto ni el almacén (ya validados como inmutables), ni la clave primaria, la numeración (numero, codigo, codejercicio) ni el estado (idestado), que deben cambiarse por sus mecanismos propios y no por asignación directa.
protected
updateHeader(BusinessDocument &$doc) : bool
Parameters
- $doc : BusinessDocument