FacturaScripts

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

$apiKey  : ApiKey
$model  : string
$request  : Request
$response  : Response
$url  : string

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

INCIDENT_EXPIRATION_TIME

public mixed INCIDENT_EXPIRATION_TIME = 600

Properties

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
bool

checkWarehouse()

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
bool

decodeLines()

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>|null

editLockedDocument()

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
bool

getUriParam()

protected getUriParam(string $num) : string
Parameters
$num : string
Return values
string

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
bool

toBool()

Convierte un valor a booleano.

protected toBool(mixed $value) : bool

Acepta: true, false, 1, 0, "1", "0", "true", "false"

Parameters
$value : mixed
Return values
bool

updateHeader()

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
Return values
bool
On this page

Search results