Current Status
Initial export complete. Login, dashboard, invoice/receipt creation and cancellation, article creation, and stock movement requests have been exported from Playwright. The application uses a central /ajaxserver endpoint for many asynchronous operations.
Observed Backend/Frontend Clues
| Evidence | Observed Detail | Interpretation |
|---|---|---|
| Response headers | server: nginx, x-officegest-release: stable, no-cache headers, HSTS | Public edge is nginx; OfficeGest exposes a release channel header. |
| Asset paths | /assets/bs4/..., version query v=4.148 | Bootstrap 4-era UI bundle with OfficeGest version 4.148. |
| Frontend libraries | Ace, Bootstrap, jQuery/DataTables, Select2, FullCalendar, Highcharts, Dropzone, SmartWizard, Bootbox | Server-rendered/jQuery-heavy app with rich widgets and AJAX calls. |
| Application scripts | ogfmin.js, oghmin.js, application.js, OfficeGest UI components | Custom OfficeGest frontend layer on top of common JS libraries. |
| Analytics | Google Analytics measurement ID G-G2PBZEDH13 | Public telemetry is active in the demo environment. |
Dashboard AJAX Calls
| Method | Endpoint | Purpose Observed | Evidence |
|---|---|---|---|
| POST | /ajaxserver | Generic action endpoint used repeatedly during login/dashboard load. | raw/playwright/dashboard-requests.txt |
| GET | /ajaxserver/newsslides | News/slide content on dashboard/login session. | raw/playwright/dashboard-requests.txt |
| GET | /ajaxserver?action=oficinas&option=marcacao_home | Workshop appointments widget. | raw/playwright/ajax-workshop-home-response.txt |
| GET | /ajaxserver?action=oficinas&option=check_open_budget&plate= | Workshop/open-budget lookup by license plate. | raw/playwright/dashboard-requests.txt |
| GET | /ajaxserver?action=getAgendaEventos... | CRM agenda event feed. Response includes event title, start/end, location, entity fields, status, color, and link. | raw/playwright/ajax-agenda-events-request.txt, raw/playwright/ajax-agenda-events-response.txt |
CRM Operational AJAX Calls
Verified read-only. CRM panel, schedule, communications, appointments/tags, tasks, opportunities, leads, occupation, gift certificates, campaigns, pipeline, and task-type calls were captured in crm-readonly-probe-20260519T092953Z. No CRM save/send/delete/end action was submitted.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
getMineRelContQtd | Loads current user's CRM tag/contact count for the panel. | Returned 161. |
getMineOportNegQtd | Loads current user's open opportunity count for the panel. | Returned 40. |
getAgendaEventos | Loads schedule events for the visible calendar range. | Called with employee 1, start=2026-04-26, and end=2026-06-07. |
DT_Select_Communications | Loads communication campaign/list rows. | Returned recordsTotal: 37 with description, campaign, registration date, used channel, contacts, contact summary, and status fields. |
DT_SelectMarcacoes | Loads appointment/tag rows. | Observed for unfinished personal appointment/tag rows with fields such as subject, type, category, entity, and dates. |
gravaEvento | Creates or saves an appointment/tag event. | Verified create request returned appointment 434 with CodTipoEv=Appt, Realizado=F, ETarefa=F, EstadoMarca_c=2, and detail route /crm/marcacoes/view/NDM0. |
UpdateRelcontacto | Updates appointment fields from detail-page inline controls. | Verified appointment completion/reopen used campo=Realizado with value=T/F and campo=EstadoMarca_c with value=4/2. |
DT_Select_MaracacoesNotas | Loads appointment notes. | Verified appointment notes workflow loaded rows with search[CodMarcacao]=434. |
agregarNotaMarcacao, UpdateNotaMarcacao, delete_nota_cliente | Adds, edits, and deletes appointment notes. | Verified workflow created note 2, edited its subject/body, then deleted it with type=MAR. |
create_relcont_entity, delete_relcont_entity, DT_load_relcont_entities | Links, unlinks, and verifies entities related to appointments. | Verified workflow linked customer 910 to appointment 434 as relation 256, then unlinked it. |
create_relcont_entity_contact, delete_relcont_entity_cont | Links and unlinks contacts under an appointment entity relation. | Verified workflow linked contact 23 under customer relation 258, then unlinked it. |
oficinas / list_relcontacto_tiposintervencao, add_relcontacto_tiposintervencao, update_relcont_intervencao, del_relcontacto_tiposintervencao | Lists, adds, edits, and deletes appointment intervention rows. | Verified workflow added intervention 28, edited extra designation and minutes, verified 00h 45m total, then deleted it. |
AceUpload, DT_Select_Attachments, loadAttach, editAttachment, deleteAttachmentById | Uploads, lists, loads, edits, and deletes appointment attachments. | Verified workflow uploaded text attachment 192 to appointment 434, edited its description, then deleted it. |
DeleteRelcontactoRecorrenciaFutura, POST /crm/marcacoes/view/{id} with repetirMarca=1 | Clears future recurrence rows and saves Repeat Tag recurrence settings. | Verified workflow repeated appointment 434 daily with Ocurrencias=2, creating rows 435 and 436, then deleted all matching rows. |
delete_marcacao | Deletes an appointment/tag event. | Verified cleanup deleted appointment 434 with response {"success":true}. |
verMarcacion | Loads occupation/calendar day detail. | Observed for May 2026 occupation context. |
DT_load_relcont_entities | Loads entities linked to a CRM relation/contact item. | Returned relation/entity rows used by appointment/tag detail surfaces. |
dt_tarefas | Loads CRM task rows. | Returned recordsTotal: 77; open-task filtering returned recordsFiltered: 38. |
DT_ListaOportNeg | Loads business opportunity rows. | Returned recordsTotal: 52 and recordsFiltered: 40 for open opportunities during the read-only probe; later used to verify created opportunity 2605-0001, won and lost closure under search[Op.Concluido_c]=T, and cleanup. |
gravaOporNeg, POST /crm/oportunidadesnegocios/view/{id} with actualizarOP=2, UpdateOporNeg, oportneg / update_fase, DT_Select_OptNegFases, deleteAttachmentCascade | Creates, edits, saves observations, changes phase, verifies phase history, and deletes business opportunities. | Verified workflows created opportunity 2605-0001 for customer 910, edited main detail fields, saved rich-text observations, changed phase from SG to CI, closed disposable opportunities as FEC / Fechado and PER / Perdido, then deleted them with tabela=oportneg. |
graphquerys&option=getOportunidadesNegocioSegmentadas | Loads segmented opportunity chart data. | Observed grouped opportunity totals and accumulated estimated values by area. |
DT_SelectLeads | Loads CRM lead lists. | Returned 9 lead rows with description, record count, active flag, and creation date during the read-only probe; later verified disposable lead list 14 from CSV import, edited lead list 18, and cleanup. |
DT_Select_Leads, leads / postNewLead, leads / postEditLead, leads / DELETE_lead | Loads imported lead values, creates lead lists, edits lead-list header/status, and deletes lead lists. | Verified workflow imported one CSV contact into lead list 14, opened its detail page, edited disposable lead list 18 by changing description and setting active=F, then deleted disposable rows. |
DT_Select with table=vales_oferta | Loads gift certificate rows. | Returned gift certificate identifiers, prefix, number, value, purchase document fields, and use-state fields; later used to verify disposable certificate AI124723000001 and cleanup. |
createValesDesconto, delete with tabela=vales_oferta | Creates and deletes gift certificates. | Verified workflow created one active certificate AI124723000001 and deleted it by id 123. |
DT_Select with table=campanhas | Loads CRM campaigns. | Returned active/inactive campaign rows with code, description, objectives, dates, and active flag. |
DT_Select with table=PosPipeline | Loads sales pipeline steps. | Returned 8 steps including description and order. |
crm_tipotarefas&option=dt | Loads CRM task types. | Returned 10 task types with code, description, icon, color, active flag, and dates. |
Sel2_Select_v2 | Resolves CRM selectors. | Observed for employees, representatives, and task-type selectors such as crm_tipo_tarefas. |
validar_dados_sms | Validates SMS sender data. | Read-only probe observed validation response success:false and message Invalid Sender; no SMS was sent. |
Evidence: raw/playwright/workflows/crm-readonly-probe-20260519T092953Z.json and workflows/use-crm.html.
CRM Appointment Create/Delete AJAX Calls
Verified end to end. Workflow run crm-appointment-create-delete-20260519T112807Z created appointment 434, verified the list/detail surfaces, and deleted the disposable appointment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/marcacoes | Loads Tags/Appointments and the New appointment modal markup. | The form form_novamarcacao exposed General, Third Part, Marketing, and Others tabs, plus notification checkboxes, opportunity/campaign fields, responsible employee, commercial, and booking/occupation metadata. |
POST /ajaxserver | Creates the appointment. | Payload used action=gravaEvento, subject AI Demo CRM Appointment 20260519T112807Z, CodTipoEv=Appt, Prioridade=N, CodEmpr=1, DataContacto=19/05/2026, HoraInicio=18:10, DataFim=19/05/2026, HoraFim=18:40, Relatorio=<p>AI verified CRM appointment body</p>, ColabResp_c=1, and CodVend=1. Notification fields were omitted. |
gravaEvento response | Returns the saved event id and normalized values. | Returned id=434, DataContacto=2026-05-19, Realizado=F, ETarefa=F, EventoDiaTodo=F, EstadoMarca_c=2, and registration/change timestamps. |
GET /crm/marcacoes/view/NDM0 | Loads the appointment detail page. | The detail page showed the subject, General/Third Part/Marketing/Attachments/Employees/Notes/Interventions/Logs tabs, Observations, Repeat Tag, Parameters, Conditions, message/SMS surfaces, Attach, and Snapshot controls. |
POST /crm/marcacoes/view/NDM0 | Edits the appointment detail form. | Verified edit payload used update=datalocal, edited subject AI Demo CRM Appointment Edited 20260519T113608Z, CodTipoEv=Appt, Prioridade=N, DataContacto=19/05/2026, HoraInicio=18:55, DataFim=19/05/2026, HoraFim=19:35, edited local, and edited observations. |
DT_SelectMarcacoes | Verifies the appointment list row. | Returned row 434 with codtipoev=Appt, datahinicio=2026-05-19 18:10:00, datahfim=2026-05-19 18:40:00, colab_nome=Demo, resp_nome=Demo, comercial_nome=Comercial 1, desigestado=Aprovado pelo Colaborador, and no associated entity. |
POST /ajaxserver | Deletes the disposable appointment. | Payload used action=delete_marcacao and id=434. Response was {"success":true}; the final list lookup found no matching id or subject. |
Evidence: raw/playwright/workflows/crm-appointment-create-delete-20260519T112807Z.json and workflows/create-delete-crm-appointment.html.
CRM Appointment Edit AJAX and Page Calls
Verified end to end. Workflow run crm-appointment-edit-20260519T113608Z created appointment 434, edited its detail-page data/local form, verified the edited row, and deleted the disposable appointment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/marcacoes/view/NDM0 | Loads the detail edit surface. | Form marcacao_datalocal contains hidden update=datalocal, collaborator/employee/commercial hidden fields, all-day/confirmed/accomplished toggles, subject, receipt/delivery fields, event type, priority, initial/end dates and times, state, local, category, registration, checklist, observations, marketing fields, and related DataTable filters. |
POST /crm/marcacoes/view/NDM0 | Saves the main appointment detail form. | The browser save flow posted update=datalocal, Assunto=AI Demo CRM Appointment Edited 20260519T113608Z, CodTipoEv=Appt, Prioridade=N, DataContacto=19/05/2026, HoraInicio=18:55, DataFim=19/05/2026, HoraFim=19:35, Local=AI verified edited appointment location, and Relatorio=<p>AI verified edited CRM appointment body</p>. |
DT_SelectMarcacoes | Verifies edited list row. | Returned row 434 with edited subject, datahinicio=2026-05-19 18:55:00, datahfim=2026-05-19 19:35:00, edited observations, realizado=F, etarefa=F, colab_nome=Demo, and comercial_nome=Comercial 1. |
POST /ajaxserver | Deletes the disposable appointment. | Payload used action=delete_marcacao and id=434. Response was {"success":true}; the final lookup found no matching original or edited subject. |
Evidence: raw/playwright/workflows/crm-appointment-edit-20260519T113608Z.json and workflows/edit-crm-appointment.html.
CRM Appointment Complete/Reopen AJAX Calls
Verified end to end. Workflow run crm-appointment-complete-reopen-20260519T114343Z created appointment 434, marked it accomplished, verified completed state, reopened it, verified reopened state, and deleted the disposable appointment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /ajaxserver / UpdateRelcontacto | Marks the appointment accomplished. | Request used campo=Realizado, id=434, and value=T. The verified row then showed Realizado=T. |
GET /ajaxserver / UpdateRelcontacto | Sets the completed appointment state. | Request used campo=EstadoMarca_c, id=434, and value=4. The verified row then showed estado=4 and desigestado=Concluido. |
DT_SelectMarcacoes | Verifies completed list state. | Returned row 434 with codtipoev=Appt, datahinicio=2026-05-19 20:00:00, datahfim=2026-05-19 20:30:00, realizado=T, estado=4, and desigestado=Concluido. |
GET /ajaxserver / UpdateRelcontacto | Restores approved appointment state while reopening. | Request used campo=EstadoMarca_c, id=434, and value=2. The verified row then showed estado=2. |
GET /ajaxserver / UpdateRelcontacto | Clears the accomplished flag. | Request used campo=Realizado, id=434, and value=F. The verified row then showed Realizado=F and desigestado=Aprovado pelo Colaborador. |
POST /ajaxserver | Deletes the disposable appointment. | Payload used action=delete_marcacao and id=434. Response was {"success":true}; the final lookup found no matching row. |
Evidence: raw/playwright/workflows/crm-appointment-complete-reopen-20260519T114343Z.json and workflows/complete-reopen-crm-appointment.html.
CRM Appointment Notes AJAX Calls
Verified end to end. Workflow run crm-appointment-notes-20260519T114941Z created appointment 434, added note 2, edited it, deleted it, verified the notes table after each step, and deleted the disposable appointment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_Select_MaracacoesNotas | Loads appointment notes. | Request used search[CodMarcacao]=434. After add, row 2 returned author (1) Demo, subject, description, notificar_venda=0, and formatted registration date. |
agregarNotaMarcacao | Adds a note to an appointment. | Request used CodMarcacao=434, Asunto=AI appointment note 20260519T114941Z, CodEmpr=1, note HTML, and notificar_venda=0. Response was {"success":true}. |
UpdateNotaMarcacao | Edits an appointment note. | Request used Id=2, edited subject, edited HTML body, and notificar_venda=0. Response was {"success":true}; the notes table returned the edited values. |
delete_nota_cliente | Deletes an appointment note. | Request used type=MAR and id_nota=2. Response was {"success":true}; the notes table returned no row for note 2. |
POST /ajaxserver | Deletes the disposable appointment. | Payload used action=delete_marcacao and id=434. Response was {"success":true}. |
Evidence: raw/playwright/workflows/crm-appointment-notes-20260519T114941Z.json and workflows/manage-crm-appointment-notes.html.
CRM Appointment Entity Link AJAX Calls
Verified end to end. Workflow run crm-appointment-entity-20260519T115412Z created appointment 434, linked customer 910, verified relation 256, unlinked it, verified the entity table was empty, and deleted the disposable appointment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
create_relcont_entity | Links an entity to an appointment. | Request used terc_type=C, terc_id=910, empty contacts_ids, all notification/send flags set to 0, and numrel=434. Response was {"success":true,"id":256}. |
DT_load_relcont_entities | Verifies linked appointment entities. | Returned row with terc_id=910, rel_id=256, name=100 Ouvidos Lda, entity_type=C, notify_sms=0, notify_email=0, and relcont_id=434. |
delete_relcont_entity | Unlinks an entity from an appointment. | Request used rel_id=256. Response was {"success":true}; the next entity lookup returned no row for relation 256. |
POST /ajaxserver | Deletes the disposable appointment. | Payload used action=delete_marcacao and id=434. Response was {"success":true}. |
Evidence: raw/playwright/workflows/crm-appointment-entity-20260519T115412Z.json and workflows/link-crm-appointment-entity.html.
CRM Appointment Contact Link AJAX Calls
Verified end to end. Workflow run crm-appointment-contact-20260519T115909Z created appointment 434, linked customer relation 258, added contact 23, verified the child row, removed the contact, removed the entity relation, and deleted the disposable appointment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
Sel2_Select_Contactos | Finds contacts for an appointment entity relation. | For customer 910, the selector returned contact 23, 100 Ouvidos Lda. |
create_relcont_entity | Creates the parent entity relation. | Request linked terc_type=C, terc_id=910, and numrel=434. Response returned {"success":true,"id":258}. |
create_relcont_entity_contact | Adds a contact under the entity relation. | Request used terc_type=C, rel_id=258, contacts_id=23, and all notification/send flags set to 0. Response returned numeric success=1, count=1, and count_success=1. |
DT_load_relcont_entities | Verifies the linked contact row. | Returned child row with entity_type=T, relcont_id=434, terc_id=23, id=23, name=100 Ouvidos Lda, rel_id=258, notify_sms=0, and notify_email=0. |
delete_relcont_entity_cont | Deletes the contact child row. | Request used relcontent_id=258 and codcontacto=23. Response was {"success":true}; the next table lookup returned no contact row. |
delete_relcont_entity | Deletes the parent entity relation. | Request used rel_id=258. Response was {"success":true}; the next table lookup returned no relation row. |
POST /ajaxserver | Deletes the disposable appointment. | Payload used action=delete_marcacao and id=434. Response was {"success":true}. |
Evidence: raw/playwright/workflows/crm-appointment-contact-20260519T115909Z.json and workflows/link-crm-appointment-contact.html.
CRM Appointment Intervention AJAX Calls
Verified end to end. Workflow run crm-appointment-intervention-20260519T120357Z created appointment 434, added intervention 28, edited its extra designation and minutes, verified the totals, deleted the intervention row, and deleted the disposable appointment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
Sel2_Select_arrays | Searches active intervention types. | Selector queried TiposIntervencao ti with tiactivo=1. The verified run used id=28, Diagnóstico. |
oficinas / list_relcontacto_tiposintervencao | Loads appointment intervention rows and totals. | Request used relcontacto_id=434. After update, the response returned minutosTotal=45 and horasTotal=00h 45m. |
add_relcontacto_tiposintervencao | Adds an intervention row to the appointment. | Request used relcontacto_id=434 and tiposintervencao_id=28. Response was {"success":true,"message":null}; the row initially returned default minutes=90. |
update_relcont_intervencao | Edits intervention row fields. | Requests updated name=designacao_extra to AI intervention extra 20260519T120357Z and name=minutes to 45. Both returned {"success":true}. |
del_relcontacto_tiposintervencao | Deletes an intervention row. | Request used relcontacto_id=434 and tiposintervencao_id=28. Response was {"success":true,"affected_rows":1}; the next list returned no row for intervention 28. |
POST /ajaxserver | Deletes the disposable appointment. | Payload used action=delete_marcacao and id=434. Response was {"success":true}. |
Evidence: raw/playwright/workflows/crm-appointment-intervention-20260519T120357Z.json and workflows/manage-crm-appointment-interventions.html.
CRM Appointment Attachment AJAX Calls
Verified end to end. Workflow run crm-appointment-attachment-20260519T121040Z created appointment 434, uploaded text attachment 192, edited its metadata, deleted the attachment row, verified the attachments table was empty for that id, and deleted the disposable appointment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/marcacoes/view/NDM0 | Loads the appointment attachment surface. | The detail page exposes an Attachments tab, Attach modal, required assunto field, category selector from attach_cat, public checkbox, file input files[], and optional snapshot controls. |
POST /ajaxserver / AceUpload | Uploads a file attachment. | Multipart request used location=attachments, codempr=1, codmarcacao=434, assunto=AI appointment attachment 20260519T121040Z, public=1, and files[]. Response returned {"ok":true,"num":192} plus stored filename, MIME type text/plain, size, and upload path. |
DT_Select_Attachments | Loads appointment attachment rows. | Request used order=datareg, sorder=DESC, operator=equal, and search[CodMarcacao]=434. After upload, row 192 returned description, generated filename/show name, file type, file size, public flag, and date fields. |
loadAttach | Loads attachment metadata into the edit modal. | Request used num=192 and returned the saved attachment id, description, public flag, and category id fields. |
editAttachment | Saves attachment metadata edits. | Request used serialized form data with num=192, edited assunto, empty categoria, and public=1. Response was {"success":true}; the next table lookup returned the edited description. |
deleteAttachmentById | Deletes an attachment row. | Request used tabela=Attach and search[Num]=192. Response was bare JSON true; the next DT_Select_Attachments lookup returned no row for attachment 192. |
POST /ajaxserver | Deletes the disposable appointment. | Payload used action=delete_marcacao and id=434. Response was {"success":true}. |
Evidence: raw/playwright/workflows/crm-appointment-attachment-20260519T121040Z.json and workflows/manage-crm-appointment-attachments.html.
CRM Appointment Repeat AJAX and Page Calls
Verified end to end. Workflow run crm-appointment-repeat-20260519T121620Z created appointment 434, opened the Repeat Tag form, saved a daily recurrence ending at two repetitions, verified rows 434, 435, and 436, then deleted all matching appointments.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/marcacoes/view/NDM0 | Loads the Repeat Tag modal. | Form form_repetir contains NumRel, repetirMarca=1, idrecorrencia, period radios for Diary/Weekly/Monthly, end controls for date or occurrence count, subject, initial date/time, final date/time, daily all/working-day conditions, weekly weekday checkboxes, and monthly day/weekday controls. |
DeleteRelcontactoRecorrenciaFutura | Preflight cleanup before saving recurrence changes. | Request used numrel=434 and the form idrecorrencia. Response was {"succeeded":true,"message":null,"params":{"affected_rows":-1}}. |
POST /crm/marcacoes/view/NDM0 | Saves recurrence settings. | Payload used repetirMarca=1, SelectPeriodo=1, endRepeat=F, Ocurrencias=2, Days=T, todosD=1, DataInicio=20/05/2026, and HoraInicio=09:00. The response was HTML for the appointment detail page. |
DT_SelectMarcacoes | Verifies generated recurring rows. | Subject lookup returned rows 436, 435, and 434. Rows 434 and 435 started 2026-05-20 09:00:00; row 436 started 2026-05-21 09:00:00. |
delete_marcacao | Deletes all generated test rows. | Cleanup deleted rows 436, 435, and 434. Each response was {"success":true}, and the final subject lookup returned no rows. |
Evidence: raw/playwright/workflows/crm-appointment-repeat-20260519T121620Z.json and workflows/repeat-crm-appointment.html.
CRM Business Opportunity Create/Delete AJAX Calls
Verified end to end. Workflow run crm-opportunity-create-delete-20260519T122337Z created opportunity 2605-0001, opened its detail page, verified it in the opportunities DataTable, deleted it, and verified that the row no longer appeared.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/oportunidadesnegocios | Loads the opportunities list and New Business Opportunity modal. | Form form_novaopornegocioHEAD exposes third-party type, description, step, campaign, initial date, estimated close date, assigned collaborator, commercial, business area, estimated value, sale probability, notification checkbox, customer/supplier/prospect selector, contact, source, mailing/source contact fields, and observations. |
POST /ajaxserver / gravaOporNeg | Creates the opportunity. | Payload used TipoTerc=C, CodTerc=910, Designacao=AI Demo CRM Opportunity 20260519T122337Z, CodFaseCV=SG, DataFechoPrev=19/06/2026, CodEmpr=1, CodVend=1, AreaNegocio=3, ValorEstimado=1234.56, ProbabilVenda=25, and CodOrigemOport=O. Response returned {"success":true} with data.CodOportNeg=2605-0001. |
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Opens the created opportunity detail page. | The detail route used base64 of the opportunity code and showed the created description. |
DT_ListaOportNeg | Verifies the opportunity list row. | Request used open-opportunity filters search[Op.CodEmpr]=1 and search[Op.Concluido_c]=F, plus a description-column search. The response returned row 2605-0001. |
deleteAttachmentCascade | Deletes the opportunity and related attachments. | Request used tabela=oportneg, search[CodOportNeg]=2605-0001, and searchAt[CodOportNeg]=2605-0001. Response was {"succeeded":true}; the final DT_ListaOportNeg lookup returned no matching row. |
Evidence: raw/playwright/workflows/crm-opportunity-create-delete-20260519T122337Z.json and workflows/create-delete-crm-opportunity.html.
CRM Business Opportunity Edit Page Calls
Verified end to end. Workflow run crm-opportunity-edit-20260519T123004Z created opportunity 2605-0001, edited the main detail form, verified the edited values in the opportunities DataTable, and deleted the disposable record.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Loads the opportunity detail page. | Main form opvalidateview contains actualizarOP=2, description, commercial, business area, third-party type/entity, contact, campaign, company, estimated close date, source, estimated value, source observations, probability, and observations fields. |
POST /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Saves main opportunity data. | Verified payload used actualizarOP=2, edited Designacao, DataFechoPrev=20/06/2026, ValorEstimado=345.67, ProbabilVenda=45, and ObsOri=AI verified CRM opportunity edited source. The HTML response contained the edited description. |
DT_ListaOportNeg | Verifies edited opportunity values. | Edited-description lookup returned row 2605-0001 with ValorEstimado=345.67, ProbabilVenda=45, DataFechoPrev=2026-06-20, area [3] Serviços, and customer 100 Ouvidos Lda. |
UpdateOporNeg | Saves the observations editor separately. | Identified on the detail page for campo=Obs; verified in the observations workflow below. |
oportneg / update_fase | Saves the Change phase / data modal. | Identified with serialized editafase form data; verified in the phase workflow below. |
deleteAttachmentCascade | Deletes the disposable opportunity after verification. | Cleanup used tabela=oportneg and search[CodOportNeg]=2605-0001; response was {"succeeded":true}. |
Evidence: raw/playwright/workflows/crm-opportunity-edit-20260519T123004Z.json and workflows/edit-crm-opportunity.html.
CRM Business Opportunity Observations AJAX Calls
Verified end to end. Workflow run crm-opportunity-observations-20260519T123355Z created opportunity 2605-0001, saved rich-text observations through the separate observations editor, reloaded the detail page to confirm persistence, and deleted the disposable opportunity.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Loads the observations editor. | The detail page includes contenteditable editor #Obs and small save button #saveObs in the observations card. Initial creation can seed the field through Obs in gravaOporNeg. |
UpdateOporNeg | Saves opportunity observations without posting the main detail form. | Verified request used id=2605-0001, campo=Obs, and an HTML value containing a paragraph, bold text, and a list. The endpoint responded HTTP 200. |
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Verifies persisted rich text. | After reload, #Obs contained AI edited opportunity observation 20260519T123355Z and list item Verified via UpdateOporNeg. |
deleteAttachmentCascade | Deletes the disposable opportunity after verification. | Cleanup used tabela=oportneg and search[CodOportNeg]=2605-0001; response was {"succeeded":true}. |
Evidence: raw/playwright/workflows/crm-opportunity-observations-20260519T123355Z.json and workflows/manage-crm-opportunity-observations.html.
CRM Business Opportunity Phase AJAX Calls
Verified end to end. Workflow run crm-opportunity-phase-20260519T123715Z created opportunity 2605-0001, changed it from phase SG to open phase CI, verified detail and grid state, and deleted the disposable opportunity.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Loads the Current situation panel and phase modal. | Before change, #fase_disabled showed SEGUROS. Modal #editafase exposed faseactual, datafimfase, and obs. |
oportneg / update_fase | Saves the phase change. | Request used id=2605-0001 and serialized form=faseactual=CI&datafimfase=20/05/2026&obs=AI opportunity phase comment 20260519T123715Z. Response returned {"success":true}. |
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Verifies detail state. | After reload, #fase_disabled showed Pesquisa/Qualificar/Priorizar. |
DT_ListaOportNeg | Verifies grid state. | The opportunity row returned Fase=[CI] Pesquisa/Qualificar/Priorizar. |
deleteAttachmentCascade | Deletes the disposable opportunity after verification. | Cleanup used tabela=oportneg and search[CodOportNeg]=2605-0001; response was {"succeeded":true}. |
Evidence: raw/playwright/workflows/crm-opportunity-phase-20260519T123715Z.json and workflows/change-crm-opportunity-phase.html.
CRM Business Opportunity Won Closure AJAX Calls
Verified end to end. Workflow run crm-opportunity-won-20260520T005645Z created opportunity 2605-0001, changed it from phase SG to closing phase FEC, verified detail, finished-list, and phase-history state, and deleted the disposable opportunity.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Loads the Current situation panel and phase modal. | The phase selector exposed SG, CI, AP, NEG, EMF, FEC, and PER. Before change, #fase_disabled showed SEGUROS. |
oportneg / update_fase | Saves won closure. | Request used id=2605-0001 and serialized form=faseactual=FEC&datafimfase=20/05/2026&obs=AI opportunity won closure comment 20260520T005645Z. Response returned {"success":true}. |
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Verifies detail state. | After reload, #fase_disabled showed Fechado and the header showed Finished: 20/05/2026. |
DT_ListaOportNeg | Verifies finished list state. | Request used search[Op.Concluido_c]=T and a description-column search. Response returned row 2605-0001 with Fase=[FEC] Fechado. The hidden type field still returned open in this demo build. |
DT_Select_OptNegFases | Verifies phase history. | Response returned FaseAnterior=SG, FaseActual=FEC, DesigActual=Fechado, and the closing comment. |
deleteAttachmentCascade | Deletes the disposable opportunity after verification. | Cleanup used tabela=oportneg and search[CodOportNeg]=2605-0001; response was {"succeeded":true}. Final finished and open list lookups returned no row. |
Evidence: raw/playwright/workflows/crm-opportunity-won-20260520T005645Z.json and workflows/close-crm-opportunity-won.html.
CRM Business Opportunity Lost Closure AJAX Calls
Verified end to end. Workflow run crm-opportunity-lost-20260520T010122Z created opportunity 2605-0001, changed it from phase SG to closing phase PER, verified detail, finished-list, and phase-history state, and deleted the disposable opportunity.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Loads the Current situation panel and phase modal. | The phase selector exposed SG, CI, AP, NEG, EMF, FEC, and PER. Before change, #fase_disabled showed SEGUROS. |
oportneg / update_fase | Saves lost closure. | Request used id=2605-0001 and serialized form=faseactual=PER&datafimfase=20/05/2026&obs=AI opportunity lost closure comment 20260520T010122Z. Response returned {"success":true}. |
GET /crm/oportunidadesnegocios/view/MjYwNS0wMDAx | Verifies detail state. | After reload, #fase_disabled showed Perdido and the header showed Finished: 20/05/2026. |
DT_ListaOportNeg | Verifies finished list state. | Request used search[Op.Concluido_c]=T and a description-column search. Response returned row 2605-0001 with Fase=[PER] Perdido. The hidden type field still returned open in this demo build. |
DT_Select_OptNegFases | Verifies phase history. | Response returned FaseAnterior=SG, FaseActual=PER, DesigActual=Perdido, and the closing comment. |
deleteAttachmentCascade | Deletes the disposable opportunity after verification. | Cleanup used tabela=oportneg and search[CodOportNeg]=2605-0001; response was {"succeeded":true}. Final finished and open list lookups returned no row. |
Evidence: raw/playwright/workflows/crm-opportunity-lost-20260520T010122Z.json and workflows/close-crm-opportunity-lost.html.
CRM Lead Create/Delete AJAX Calls
Verified end to end. Workflow run crm-lead-create-delete-20260519T124223Z created lead list 14 from a one-row CSV import, opened the detail page, verified the list row returned records=1, and deleted the disposable lead list.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/leads | Loads the lead-list page and New lead modal. | Form new_lead_form contains required description, file input file_import, and an Example download. The example CSV header is nome;email;localidade;morada;pais;telemovel;ncontrib. |
POST /ajaxserver / leads / postNewLead | Creates a lead list from CSV. | Multipart request used description=AI Demo CRM Lead 20260519T124223Z and file_import with one CSV row. Response returned {"success":true,"result":14} and parsed columns. |
GET /crm/leads/view/MTQ= | Opens the imported lead list detail page. | The detail page showed lead 14, the imported description, status Active, and one imported contact row with name, email, locality, address, country, mobile phone, and taxpayer number. |
DT_SelectLeads | Verifies the lead-list row. | Request used table=crm_leads, columns=id,description,active,records,created_at, and filter=1. Row 14 returned records=1. |
leads / DELETE_lead | Deletes the lead list. | Request used id=14. Response returned {"success":true,"msg":"Registration Successfully Deleted"}, and the final list lookup returned no matching row. |
Evidence: raw/playwright/workflows/crm-lead-create-delete-20260519T124223Z.json and workflows/create-delete-crm-lead.html.
CRM Lead Edit AJAX Calls
Verified end to end. Workflow run crm-lead-edit-20260520T010726Z created lead list 18, edited its detail header description and Active flag, verified the lead list row and imported value row, and deleted the disposable lead list. Workflow run crm-lead-values-edit-delete-20260520T012503Z created lead list 22, edited imported row 1, bulk-removed row 2, verified the remaining row and list count, and deleted the disposable lead list.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/leads/view/MTg= | Loads the lead detail page. | The detail form formulario includes inline description #description_inline, checkbox #active, the imported values table ListaValuesLead, Column Map, New Import, Delete, and Save controls. |
leads / postEditLead | Saves lead-list header edits. | Multipart request used id=18, description=AI Demo CRM Lead Edited 20260520T010726Z, and active=F. Response returned {"success":true}. |
GET /crm/leads/view/MTg= | Verifies detail state. | After reload, #description_inline showed the edited description and #active was unchecked. |
DT_SelectLeads | Verifies list state. | Row 18 returned the edited description, records=1, active=F, and updated date_alter. |
DT_Select_Leads | Verifies imported values were preserved. | Lookup with lead_id=18 returned the imported contact row with name, email, locality, address, country, mobile phone, and taxpayer number. |
leads / updateLeadColumnValue | Edits an imported lead value cell inline. | Request used id=1, id_lead=22, field=nome, and value=AI Lead Row Edited 20260520T012503Z. Response was bare JSON true, and the next DT_Select_Leads lookup returned the edited name. |
leads / innerLeadsDelete | Removes selected imported lead rows. | Request used ids=2 and lead=22. Response was bare JSON true. The remaining imported row was row 1, and DT_SelectLeads returned records=1. |
leads / getLeadColumnSingularity | Validates Column Map selector changes. | The lead detail page calls this endpoint with id_lead, column_orig, and column_dest when a Column Map selector changes. The verified value-row run documented the selectors but did not change mappings because the CSV already matched expected columns. |
leads / DELETE_lead | Deletes the edited lead list. | Request used id=18. Response returned {"success":true,"msg":"Registration Successfully Deleted"}, and the final list lookup returned no matching row. |
Evidence: raw/playwright/workflows/crm-lead-edit-20260520T010726Z.json, raw/playwright/workflows/crm-lead-values-edit-delete-20260520T012503Z.json, workflows/edit-crm-lead.html, and workflows/edit-crm-lead-values.html.
CRM Gift Certificate Create/Delete and Mark-Sold AJAX Calls
Verified end to end. Workflow run crm-gift-certificate-create-delete-20260519T124723Z created gift certificate AI124723000001, opened the detail page, verified active list state, deleted it, and confirmed the list no longer returned it. Workflow run crm-gift-certificate-mark-sold-20260520T011345Z created certificate MS011345000001, marked it sold, verified sold state, deleted it, and confirmed absence after cleanup.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/valesoferta | Loads the gift certificate list and Create gift cards modal. | Form formnew exposes prefixo, valor, total, and optional data_validade. The list has filters for active, sold, used, canceled, and all statuses. |
createValesDesconto | Creates certificates. | Verified request used serialized form prefixo=AI124723&valor=1&total=1&data_validade=. Response returned {"success":true}. |
DT_Select with table=vales_oferta | Verifies the created certificate row. | Row 123 returned number AI124723000001, value 1, status ACT, and amount credited 0. |
GET /crm/valesoferta/edit/MTIz | Opens certificate detail. | The detail page showed the gift-card number, active status, value, amount credited, purchase document fields, validity, and documents tab. |
crm / valesoferta_mark_as_sold | Marks selected certificates sold. | Verified request used ids[]=124. Response returned {"succeeded":true,"message":null,"params":{"ids":["124"]}}. The list row changed from ACT to SOLD and filled purchase-side marker fields tipoop_compra=MAN, num_compra=-1, and docnumber_compra=Manual -1. |
GET /crm/valesoferta/edit/MTI0 | Opens sold certificate detail. | The detail page showed gift certificate MS011345000001 with Sold status. Amount credited stayed 0, so this does not represent payment use. |
delete with tabela=vales_oferta | Deletes the disposable certificate. | Request used search[id]=123. Response was bare JSON true, and the final DT_Select lookup returned no matching row. |
Evidence: raw/playwright/workflows/crm-gift-certificate-create-delete-20260519T124723Z.json, raw/playwright/workflows/crm-gift-certificate-mark-sold-20260520T011345Z.json, workflows/create-delete-gift-certificate.html, and workflows/mark-gift-certificate-sold.html.
CRM Campaign Create/Edit/Delete Calls
Verified end to end. Workflow run crm-campaign-create-edit-delete-20260519T125631Z created support-file campaign AI125631, edited its detail form, verified detail and list state, deleted it, and confirmed the list no longer returned it.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/apoio/campanhas | Loads the campaign support-file list and New Campaign modal. | Form campanhavalidate exposes required CodCampanha, Designacao, DataIni, DataFim, plus optional Objectivos and Descricao. |
SearchIfExistCodCampanaha | Checks duplicate campaign code. | Verified request used id1=AI125631 and returned F, meaning the code was available. |
POST /crm/apoio/campanhas | Creates a campaign. | Payload used CodCampanha=AI125631, description, start date 19/05/2026, end date 30/05/2026, goals, and notes. The next DT_Select lookup returned the active row. |
POST /crm/apoio/campanhas/view/QUkxMjU2MzE= | Updates campaign detail. | Form campanhavalidateview submitted actualizarcampanaha=1, active flag T, edited description, dates, and rich-text mirrors descricao_val and objectivos_val. |
DT_Select with table=campanhas | Verifies campaign list state. | Edited row returned description AI Demo CRM Campaign Edited 20260519T125631Z, active flag T, FDataIni=20/05/2026 00:00:00, and FDataFim=31/05/2026 00:00:00. |
deleteAttachmentCascade with tabela=campanhas | Deletes the disposable campaign. | Request used search[CodCampanha]=AI125631 and searchAt[CodCampanha]=AI125631. Response returned {"succeeded":true}, and the final list lookup returned no matching row. |
Evidence: raw/playwright/workflows/crm-campaign-create-edit-delete-20260519T125631Z.json and workflows/create-edit-delete-crm-campaign.html.
CRM Pipeline Create/Edit/Delete Calls
Verified end to end. Workflow run crm-pipeline-create-edit-delete-20260519T130232Z created pipeline step 9, loaded its edit modal, edited it, verified list state, deleted it, and confirmed the list no longer returned it.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/apoio/pipeline | Loads Pipeline Sale support-file list and New step modal. | Form formPipe exposes required Designacao and optional numeric Ordem. The list columns are code, designation, order, and action buttons. |
POST /crm/apoio/pipeline with Designacao | Creates a pipeline step. | Verified create used Designacao=AI Demo CRM Pipeline 20260519T130232Z and Ordem=98. The next DT_Select returned id 9. |
editaPipe | Loads edit modal markup for a step. | Request used id=9. Response HTML included hidden id, text field editDesignacao, and numeric Ordem. |
POST /crm/apoio/pipeline with editDesignacao | Updates a pipeline step. | Verified edit used id=9, editDesignacao=AI Demo CRM Pipeline Edited 20260519T130232Z, and Ordem=99. The row kept id 9. |
DT_Select with table=PosPipeline | Verifies pipeline rows. | Request used columns=Id, Designacao, Ordem and order=Id. The edited row returned order 99. |
delete with tabela=PosPipeline | Deletes the disposable pipeline step. | Request used search[Id]=9. Response was bare JSON true, and final list lookup returned no matching row. |
Evidence: raw/playwright/workflows/crm-pipeline-create-edit-delete-20260519T130232Z.json and workflows/create-edit-delete-crm-pipeline.html.
CRM Task Type Create/Edit/Delete Calls
Verified end to end. Workflow run crm-task-type-create-edit-delete-20260519T130724Z created task type AI0724, edited it to inactive with a different icon/color, verified the inactive filter, deleted it, and confirmed the list no longer returned it.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/apoio/tipotarefa | Loads Task Type support-file list and modal form. | Form tipotarefas_form exposes hidden edit, codtipoev, description, icon, color, and hidden/toggle-backed active. |
crm_tipotarefas / save with edit=0 | Creates a task type. | Verified form used codtipoev=AI0724, description, icon=fa fa-tasks, color=blue, and active=1. Response returned {"success":true}. |
crm_tipotarefas / save with edit=1 | Updates a task type. | Verified edit kept code AI0724, changed description, icon to fa fa-phone, color to red, and active to 0. |
crm_tipotarefas / dt | Loads and filters task types. | All-status and inactive-filter lookups returned the expected row. The inactive filter uses active=0. |
crm_tipotarefas / delete | Deletes the disposable task type. | Request used id=AI0724. Response returned {"success":true}, and final all-status lookup returned no matching row. |
Evidence: raw/playwright/workflows/crm-task-type-create-edit-delete-20260519T130724Z.json and workflows/create-edit-delete-crm-task-type.html.
CRM Communication Creation AJAX Calls
Verified end to end. Workflow run crm-communication-create-20260519T103424Z created communication draft 39, opened its detail page, and verified it through DT_Select_Communications.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/communications/new | Loads the New Communication form. | Rendered channel checkboxes, description, campaign selector, business-area multi-select, SMS text, sender, email subject, attachment selector, email body editor, label insertion, Cancel, and Save controls. |
POST /ajaxserver | Creates the communication draft. | Multipart payload included action=communications, option=postNewComm, Descricao=AI Demo CRM Communication 20260519T103424Z, email channel M, AssuntoEMail=AI Demo communication subject 20260519T103424Z, and TextoMail=<p>AI verified CRM communication draft 20260519T103424Z</p>. |
GET /crm/communications/view/Mzk= | Opens the saved communication detail page. | The detail page showed communication 39, description, Ready to Send, Email Content, List Comunication, sender, attachments, labels, and actions for Send test email, Delete, Add Contacts, Duplicate, Save, and Schedule. |
DT_Select_LCommunications | Loads the communication detail contact/list tab. | Called with search[id_communication]=39 and returned an empty data array because no contacts were added. |
DT_Select_Communications | Verifies the communications list row. | Subject search returned one row with id=39, status=RDY, email=1, sms=0, totalcontactos=0, total_sent=0, and total_unsent=0. |
Evidence: raw/playwright/workflows/crm-communication-create-20260519T103424Z.json and workflows/create-crm-communication.html.
CRM Communication Delete AJAX Call
Verified end to end. Workflow run crm-communication-delete-20260519T103942Z opened communication 39, deleted it from the detail page, and verified it no longer appeared in DT_Select_Communications.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/communications/view/Mzk= | Loads the communication detail page. | The page showed communication 39, Ready to Send, its email subject/content, and action buttons including Delete, Add Contacts, Duplicate, Save, and Schedule. |
| Bootbox confirmation | Confirms before deleting. | The dialog text was Are you sure you want to delete? and exposed Cancel and OK actions. |
GET /ajaxserver | Deletes the communication. | Request was action=communications&option=DELETE_communication&id=39. HTTP status was 200; the captured body was empty. |
| Redirect | Returns the browser to CRM panel. | After deletion the browser ended at /crm/painelresumo/ and refreshed CRM panel lists. |
DT_Select_Communications | Verifies deletion. | Subject search for AI Demo CRM Communication 20260519T103424Z returned recordsTotal=37, recordsFiltered=0, and no rows. |
Evidence: raw/playwright/workflows/crm-communication-delete-20260519T103942Z.json and workflows/delete-crm-communication.html.
CRM Communication Duplicate AJAX Call
Verified end to end. Workflow run crm-communication-duplicate-20260519T104653Z opened source communication 39, duplicated it into communication 40, verified the new row through DT_Select_Communications, and then cleaned up both disposable records.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/communications/view/Mzk= | Loads the source communication detail page. | The page showed source communication 39, Ready to Send, email subject/content, no contacts, and action buttons including Delete, Add Contacts, Duplicate, Save, and Schedule. |
| Duplicate modal | Collects copy description and row-copy mode. | The modal text included Are you sure you want to duplicate?, Description, Duplicate all rows, Duplicate rows sent, and Duplicate unsent lines. The verified run selected mode T. |
GET /ajaxserver | Duplicates the communication. | Request was action=communications&option=DUPLICATE_communication&id=39&description=AI+Demo+CRM+Dup+20260519T104653Z&enviado=T. HTTP status was 200; the captured body was empty. |
GET /crm/communications/view/NDA= | Opens the duplicated communication detail page. | The final route encoded duplicate id 40. |
DT_Select_Communications | Verifies the duplicate row. | Id search returned one row with id=40, status=RDY, email=1, sms=0, totalcontactos=0, total_sent=0, and total_unsent=0. |
GET /ajaxserver | Cleans up disposable records. | Cleanup used DELETE_communication for ids 40 and 39; both returned HTTP 200 with body true, and final searches returned recordsFiltered=0. |
Evidence: raw/playwright/workflows/crm-communication-duplicate-20260519T104653Z.json and workflows/duplicate-crm-communication.html.
CRM Communication Edit AJAX Call
Verified end to end. Workflow run crm-communication-edit-20260519T105353Z opened communication 39, edited the email subject and body, saved it, verified the updated subject through DT_Select_Communications, and deleted the disposable record.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/communications/view/Mzk= | Loads the communication detail page. | The page showed communication 39, Ready to Send, the email editor, sender selector, attachments selector, label insertion, contact list tab, and Save/Schedule actions. |
POST /ajaxserver | Saves the edited communication draft. | Multipart payload included action=communications, option=postEditComm, id=39, email=1, subject=AI Demo edited communication subject 20260519T105353Z, content_email=<p>AI verified edited CRM communication body 20260519T105353Z</p>, and empty Attachments. |
DT_Select_Communications | Verifies the edited row. | Id search returned one row with id=39, edited subject, status=RDY, email=1, sms=0, totalcontactos=0, total_sent=0, and total_unsent=0. |
GET /ajaxserver | Cleans up the disposable record. | Cleanup used DELETE_communication for id 39, returned HTTP 200 with body true, and the final description search returned recordsFiltered=0. |
Evidence: raw/playwright/workflows/crm-communication-edit-20260519T105353Z.json and workflows/edit-crm-communication.html.
CRM Communication Schedule AJAX Call
Verified end to end. Workflow run crm-communication-schedule-20260520T015323Z created disposable communication 39 with no contacts, scheduled it for 21/05/2026 10:30, verified the queued state, and deleted it after the probe.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/communications/view/Mzk= | Loads the communication detail page and Schedule modal fields. | The detail page exposed #enviar_submit for Schedule, modal fields #DataInicioEnvio and #HoraInicioEnvio, and confirmation button #submit_comm. |
POST /ajaxserver | Queues the communication for a future send date. | Multipart payload used action=communications, option=postEditComm, id=39, email=1, enviar=1, and date_to_send=21/05/2026 10:30. Response returned success=true, send=true, communication_id=39, attachments_ok=0, and attachments_not_ok=0. |
DT_Select_Communications | Verifies the queued state. | The communication row changed to status=QUE, date_to_send=2026-05-21 10:30:00, date_send empty, totalcontactos=0, total_sent=0, and total_unsent=0. |
DT_Select_LCommunications | Verifies no recipients existed in the safety probe. | The recipient list returned an empty data array, so the run verified scheduling behavior without adding or sending to contacts. |
GET /ajaxserver | Cleans up the disposable queued communication. | Cleanup used communications / DELETE_communication for id 39, returned bare JSON true, and final id lookup returned recordsFiltered=0. |
Evidence: raw/playwright/workflows/crm-communication-schedule-20260520T015323Z.json and workflows/schedule-crm-communication.html.
CRM Communication Add Contact AJAX Calls
Verified end to end. Workflow run crm-communication-add-contact-20260519T110037Z added one customer email contact to communication 39. Workflow run crm-communication-segment-contact-20260520T014407Z added one customer returned by research segment 5. Workflow run crm-communication-csv-import-contact-20260520T013858Z parsed and added one CSV-imported contact to communication 39. Workflow run crm-lead-add-to-communication-20260520T012943Z added one imported lead row to communication 39. These runs verified recipient rows and counters, then deleted disposable records.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/communications/view/Mzk= | Loads the communication detail page and Add Contacts modal. | The Add Contacts modal exposed sources for Based in Research Segment, Entities Search, Leads, and Import. The verified source was TipoOrigemEnt=D for Entities Search with Customers selected. |
GET /ajaxserver | Searches eligible recipients. | Request used action=communications, option=getPesquisaEntidadesComm, TipoOrigemEnt=D, selectTipoT=C, email=1, and meioutiliz=M. Selected row 1240 had address comercial@guisoft.net. |
POST /ajaxserver | Validates selected recipients. | option=postAddLCommunicationsValidate returned {"success":true,"resultado":""} for the selected user_send JSON. |
POST /ajaxserver | Adds selected recipients to the communication. | option=postAddLCommunications, id=39, email=1, MeioUtiliz=M, MeioUtiliz2=M, and TipoOrigemEnt=D returned success=true, ok=1, and notok=0. |
DT_Select_LCommunications | Verifies the contact list row. | Returned row 1171 with tipoterc=C, codterc=628, address=comercial@guisoft.net, type=email, and enviado=F. |
DT_Select_Communications | Verifies communication counters. | The communication row changed to totalcontactos=1, resumocontactos=comercial@guisoft.net, total_sent=0, and total_unsent=1. |
POST /ajaxserver | Loads communication counters. | option=getCountersCommunication returned mail_total_unsent=1, mail_total_sent=0, and mail_total_error=0. |
GET /ajaxserver | Searches contacts from a research segment. | Request used action=communications, option=getPesquisaEntidadesComm, TipoOrigemEnt=M, CodPesqSeg=5, selectTipoT=C, email=1, and meioutiliz=M. Response returned success=true, pesquisa_segmentos=true, and customer 906 with email geral@tecniram.pt. |
POST /ajaxserver | Adds selected segment recipients to the communication. | option=postAddLCommunications, id=39, email=1, MeioUtiliz=M, MeioUtiliz2=M, TipoOrigemEnt=M, CodPesqSeg=5, and user_send returned success=true, ok=1, and notok=0. |
DT_Select_LCommunications | Verifies the segment-source recipient row. | Returned row 1180 with codterc=906, tipoterc=C, uploaded_csv=0, address=geral@tecniram.pt, type=email, enviado=F, and terceiro=Tecniram - Soluções Informáticas e Formação Lda. |
DT_Select_Communications | Verifies segment-source communication counters. | Communication 39 returned totalcontactos=1, resumocontactos=geral@tecniram.pt, total_sent=0, and total_unsent=1. |
GET /assets/csv/importar_contactos_crm.csv | Downloads the import example file. | The example used semicolon-separated columns nome;email;localidade;morada;pais;telemovel;ncontrib. |
POST /ajaxserver | Parses a CSV import file for communication contacts. | Multipart payload used action=communications, option=getPesquisaEntidadesCommCSV, and file field file_import. Response returned success=true with one mailing row for ai-comm-csv-import-20260520t013858z@example.net. |
POST /ajaxserver | Adds selected CSV import rows to the communication. | option=postAddLCommunications, id=39, email=1, MeioUtiliz=M, MeioUtiliz2=M, TipoOrigemEnt=C, and user_send_import returned success=true, ok=2, and notok=0. |
DT_Select_LCommunications | Verifies the CSV-imported recipient row. | Returned row 1179 with tipoterc=O, uploaded_csv=1, address=ai-comm-csv-import-20260520t013858z@example.net, type=email, enviado=F, and terceiro=AI CSV Import Contact 20260520T013858Z. |
DT_Select_Communications | Verifies CSV-import communication counters. | Communication 39 returned totalcontactos=1, resumocontactos=ai-comm-csv-import-20260520t013858z@example.net, total_sent=0, and total_unsent=1. |
POST /ajaxserver | Adds imported CRM lead rows to a communication. | action=leads, option=addToCommunication, comm_id=39, leads_ids=1, and lead_id=23 returned {"success":true,"msg":"(1) Adicionado com sucesso","response":{"ok":1,"ok_ids":[1],"notok":0,"notok_ids":[]}}. |
DT_Select_LCommunications | Verifies the lead-source recipient row. | Returned row 1177 with id_communication=39, tipoterc=L, id_lead=23, uploaded_csv=0, address=ai-lead-communication-20260520t012943z@example.net, type=email, and enviado=F. |
DT_Select_Communications | Verifies lead-source communication counters. | Communication 39 returned totalcontactos=1, resumocontactos=ai-lead-communication-20260520t012943z@example.net, total_sent=0, and total_unsent=1. |
Evidence: raw/playwright/workflows/crm-communication-add-contact-20260519T110037Z.json, raw/playwright/workflows/crm-communication-segment-contact-20260520T014407Z.json, raw/playwright/workflows/crm-communication-csv-import-contact-20260520T013858Z.json, raw/playwright/workflows/crm-lead-add-to-communication-20260520T012943Z.json, workflows/add-crm-communication-contact.html, workflows/add-crm-communication-segment-contact.html, workflows/add-crm-communication-csv-contact.html, and workflows/add-crm-lead-to-communication.html.
CRM Communication Delete Contact AJAX Call
Verified end to end. Workflow run crm-communication-delete-contact-20260519T110614Z added one recipient line, deleted that recipient line from communication 39, verified contacts and counters returned to zero, and then deleted the disposable communication.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_Select_LCommunications | Verifies the recipient row before deletion. | After setup it returned line 1172 with id_communication=39, codterc=628, tipoterc=C, address=comercial@guisoft.net, type=email, and enviado=F. |
GET /ajaxserver | Deletes one communication recipient row. | Request was action=delete&tabela=lcommunication&search[id_communication]=39&search[id]=1172. HTTP status was 200 and body was true. |
DT_Select_LCommunications | Verifies the list row is gone. | Post-delete lookup for communication 39 returned an empty data array. |
DT_Select_Communications | Verifies communication counters returned to zero. | Communication 39 returned totalcontactos=0, resumocontactos=0, total_sent=0, and total_unsent=0. |
POST /ajaxserver | Loads counter widgets after delete. | option=getCountersCommunication returned mail_total_unsent=0, mail_total_sent=0, and mail_total_error=0. |
Evidence: raw/playwright/workflows/crm-communication-delete-contact-20260519T110614Z.json and workflows/delete-crm-communication-contact.html.
CRM Communication Edit Contact AJAX Call
Verified end to end. Workflow run crm-communication-edit-contact-20260519T111049Z added one customer email recipient, edited recipient line 1173 address/content on communication 39, verified the updated row and counters, and then deleted the disposable communication.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /ajaxserver | Loads one recipient row for editing. | Request used action=load, tabela=lcommunication, operator==, search[id_communication]=39, and search[id]=1173. It returned address comercial@guisoft.net, content=null, type=email, and enviado=F. |
POST /ajaxserver | Updates one communication recipient row. | Payload used action=communications, option=UPDATE_lcommunication, id=1173, id_communication=39, type=email, values[address]=ticketsdemo@guisoft.com, and values[content]=<p>AI verified per-recipient email body 20260519T111049Z</p>. Response was {"success":true}. |
DT_Select_LCommunications | Verifies the edited recipient row. | Returned row 1173 with address=ticketsdemo@guisoft.com, type=email, and enviado=F. |
DT_Select_Communications | Verifies communication counters and contact summary. | Communication 39 returned totalcontactos=1, resumocontactos=ticketsdemo@guisoft.com, total_unsent=1, and status=RDY. |
POST /ajaxserver | Loads counter widgets after edit. | option=getCountersCommunication returned mail_total_unsent=1, mail_total_sent=0, and mail_total_error=0. |
GET /ajaxserver | Cleans up the disposable record. | Cleanup used communications / DELETE_communication for id 39. The final id lookup returned recordsFiltered=0. |
Evidence: raw/playwright/workflows/crm-communication-edit-contact-20260519T111049Z.json and workflows/edit-crm-communication-contact.html.
CRM Communication Delete All Contacts AJAX Call
Verified end to end. Workflow run crm-communication-delete-all-contacts-20260519T111724Z added one customer email recipient to communication 39, cleared all recipient lines with the list-level deletelines action, verified contacts and counters returned to zero, and then deleted the disposable communication.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_Select_LCommunications | Verifies the list before clearing. | After setup it returned row 1174 with codterc=628, tipoterc=C, address=comercial@guisoft.net, type=email, and enviado=F. |
POST /ajaxserver | Deletes every communication recipient row for the communication. | Payload used action=communications, option=deletelines, and num=39. HTTP status was 200 and response was {"success":true}. |
DT_Select_LCommunications | Verifies the contact list is empty. | Post-delete-all lookup for communication 39 returned an empty data array. |
DT_Select_Communications | Verifies communication counters returned to zero. | Communication 39 returned totalcontactos=0, resumocontactos=0, total_sent=0, total_unsent=0, and status=RDY. |
POST /ajaxserver | Loads counter widgets after clearing lines. | option=getCountersCommunication returned mail_total_unsent=0, mail_total_sent=0, and mail_total_error=0. |
GET /ajaxserver | Cleans up the disposable record. | Cleanup used communications / DELETE_communication for id 39. The final id lookup returned recordsFiltered=0. |
Evidence: raw/playwright/workflows/crm-communication-delete-all-contacts-20260519T111724Z.json and workflows/delete-all-crm-communication-contacts.html.
CRM Communication Remove Duplicate Contacts AJAX Call
Verified end to end. Workflow run crm-communication-remove-duplicate-contacts-20260519T112153Z added the same customer email recipient twice to communication 39, verified two duplicate rows, filtered duplicates, verified one row remained, and then deleted the disposable communication.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
POST /ajaxserver | Adds the same recipient twice. | Two postAddLCommunications requests for contact 1240 both returned success=true, ok=1, and notok=0. |
DT_Select_LCommunications | Verifies duplicate rows before filtering. | Before filtering, the list contained rows 1176 and 1175, both with codterc=628, tipoterc=C, address=comercial@guisoft.net, type=email, and enviado=F. |
POST /ajaxserver | Filters duplicate recipient rows. | Payload used action=communications, option=filterduplicates, and num=39. HTTP status was 200 and response was {"success":true}. |
DT_Select_LCommunications | Verifies only one duplicate row remains. | After filtering, only row 1175 remained for comercial@guisoft.net. |
DT_Select_Communications | Verifies communication counters after filtering. | Communication 39 returned totalcontactos=1, resumocontactos=comercial@guisoft.net, total_unsent=1, and status=RDY. |
POST /ajaxserver | Loads counter widgets after duplicate filtering. | option=getCountersCommunication returned mail_total_unsent=1, mail_total_sent=0, and mail_total_error=0. |
GET /ajaxserver | Cleans up the disposable record. | Cleanup used communications / DELETE_communication for id 39. The final id lookup returned recordsFiltered=0. |
Evidence: raw/playwright/workflows/crm-communication-remove-duplicate-contacts-20260519T112153Z.json and workflows/remove-duplicate-crm-communication-contacts.html.
CRM Task Creation AJAX Calls
Verified end to end. Workflow run crm-task-20260519T094141Z created task 431 and verified it through dt_tarefas.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadForm | Loads the New task modal. | Posted action=loadForm, form=tarefa, and id=novatarefa. The modal includes required Subject, Estimated End Date, Time, and Employee responsible fields. |
Sel2_Select_v2 | Initializes task selectors. | Observed for employee codempr=1 / Demo and task type selector table crm_tipo_tarefas. |
createNovaTarefa | Creates the CRM task. | Payload included Assunto=AI Demo CRM Task 20260519T094141Z, data=19/05/2026, hour=16, minute=45, hora=16:45, Prioridade=N, CodTipoEv=ToDo, codempr=1, and empty tipoterc. The HTTP status was 200; verification used the task list because this response body was empty in Playwright capture. |
dt_tarefas | Verifies the saved task in the task list. | Subject search returned one matching row: numrel=431, CodTipoEv=ToDo, FDataPrevRealiz=19/05/2026 16:45, Realizado=F, perc_execution=0, and Prioridade=N. |
Evidence: raw/playwright/workflows/crm-task-20260519T094141Z.json and workflows/create-crm-task.html.
CRM Task List Filter AJAX Calls
Verified read-only. Workflow run crm-task-filter-list-20260520T015830Z queried the CRM task list filters for accomplished state and priority without creating, editing, completing, or deleting tasks.
| Filter | Request detail | Verified result |
|---|---|---|
| Open tasks | dt_tarefas with columns[8][data]=Realizado and columns[8][search][value]=F. | recordsFiltered=43; returned rows had Realizado=F. |
| Accomplished tasks | dt_tarefas with columns[8][search][value]=T. | recordsFiltered=40; returned rows had Realizado=T. |
| High priority | dt_tarefas with columns[10][data]=Prioridade and columns[10][search][value]=H. | recordsFiltered=5; returned rows had Prioridade=H. |
| Open high priority | dt_tarefas with columns[8][search][value]=F and columns[10][search][value]=H. | recordsFiltered=2; returned rows were task 410 / Visitar cliente and task 127 / Ligar ao cliente. |
Evidence: raw/playwright/workflows/crm-task-filter-list-20260520T015830Z.json and workflows/filter-crm-tasks.html.
CRM Task Completion Page POST
Verified end to end. Workflow run crm-task-complete-20260519T094911Z completed task 431 and verified it through dt_tarefas.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/tarefas/view/NDMx | Loads the task detail form. | Rendered #marcacao_datalocal with fields for actualizartarefas, realizado, assunto, perc_execution, codtipoev, prioridade, codempr, estimated date/time, notes, entity, and contact. |
POST /crm/tarefas/view/NDMx | Updates the task detail form. | Payload included actualizartarefas=1, assunto=AI Demo CRM Task 20260519T094141Z Completed, perc_execution=100, codtipoev=ToDo, prioridade=N, codempr=1, data=19/05/2026, hour=16, minute=45, hora=16:45, empty note fields, and empty entity/contact fields. The page returned HTTP 200 and displayed Task Data written successfully. |
dt_tarefas | Verifies the completed task in the task list. | Subject search returned one matching row: numrel=431, Assunto=AI Demo CRM Task 20260519T094141Z Completed, Realizado=T, perc_execution=100, and Prioridade=N. |
Sel2_Select_v2 and Sel2_Select_arrays | Initializes detail selectors. | Observed for responsible employee Demo and task type ToDo / Tarefa. |
Evidence: raw/playwright/workflows/crm-task-complete-20260519T094911Z.json and workflows/complete-crm-task.html.
CRM Task Bulk Accomplished AJAX Call
Verified end to end. Workflow run crm-task-bulk-complete-20260519T102105Z created disposable task 433, selected it in the task list, marked it Accomplished through With selected, and verified the row through dt_tarefas.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
createNovaTarefa | Creates a disposable task for the bulk run. | Payload included Assunto=AI Demo CRM Bulk Complete 20260519T102105Z, data=19/05/2026, hour=17, minute=35, hora=17:35, Prioridade=N, CodTipoEv=ToDo, and codempr=1. |
| Task selection | Selects the row for bulk action. | The verified row checkbox value was 433; the With selected count changed to 1. |
| Bootbox confirmation | Confirms before applying the bulk update. | The dialog text was Are you sure? and exposed Cancel and OK actions. |
POST /ajaxserver | Bulk-marks selected tasks accomplished. | Payload was action=updateRelcontactoMultiple&ids=433&valor=T&campo=Realizado. Response was {"sim":1,"nao":0,"list_nao":""}. |
dt_tarefas | Verifies the updated task. | Subject search returned one matching row with numrel=433, Realizado=T, and perc_execution=0. The bulk Accomplished action changed the completed flag but did not change percent execution in this verified run. |
Evidence: raw/playwright/workflows/crm-task-bulk-complete-20260519T102105Z.json and workflows/bulk-complete-crm-task.html.
CRM Task Reopen/Edit Page POST
Verified end to end. Workflow run crm-task-reopen-20260519T095439Z reopened and edited task 431, then verified it through dt_tarefas.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/tarefas/view/NDMx | Loads the task detail form. | Rendered the same #marcacao_datalocal edit form used for completion, including task subject, progress, type, priority, responsible employee, date/time, notes, entity, and contact fields. |
POST /crm/tarefas/view/NDMx | Updates and reopens the task. | Payload included actualizartarefas=1, assunto=AI Demo CRM Task 20260519T094141Z Reopened, perc_execution=0, codtipoev=ToDo, prioridade=N, codempr=1, data=19/05/2026, hour=16, minute=45, hora=16:45, empty note fields, and empty entity/contact fields. Because realizado was unchecked, it was not included in the submitted form body. |
dt_tarefas | Verifies the reopened task in the task list. | Subject search returned one matching row: numrel=431, Assunto=AI Demo CRM Task 20260519T094141Z Reopened, Realizado=F, perc_execution=0, and Prioridade=N. |
Evidence: raw/playwright/workflows/crm-task-reopen-20260519T095439Z.json and workflows/reopen-crm-task.html.
CRM Task Delete AJAX Call
Verified end to end. Workflow run crm-task-delete-20260519T095857Z created disposable task 432, deleted it from its detail page, and verified it no longer appeared in dt_tarefas.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/tarefas/view/NDMy | Loads the disposable task detail page. | Rendered task 432 with the Delete button in the action bar. NDMy is the encoded route id for 432. |
| Bootbox confirmation | Confirms before deleting. | The dialog text was Are you sure you want to delete? and exposed Cancel and OK actions. |
POST /ajaxserver | Deletes the task. | Payload was action=deleteTarefasMultiple&tarefas%5B0%5D=432. HTTP status was 200; the captured response body was empty, and the browser redirected to /crm/tarefas/. |
dt_tarefas | Verifies deletion. | Subject search for AI Demo CRM Task Delete 20260519T095857Z returned recordsFiltered=0 and no matching rows. |
Evidence: raw/playwright/workflows/crm-task-delete-20260519T095857Z.json and workflows/delete-crm-task.html.
CRM Task Bulk Delete AJAX Call
Verified end to end. Workflow run crm-task-bulk-delete-20260519T102751Z created disposable task 434, selected it in the task list, deleted it through With selected, and verified it no longer appeared in dt_tarefas.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
createNovaTarefa | Creates a disposable task for the bulk-delete run. | Payload included Assunto=AI Demo CRM Bulk Delete 20260519T102751Z, data=19/05/2026, hour=17, minute=50, hora=17:50, Prioridade=N, CodTipoEv=ToDo, and codempr=1. |
| Task selection | Selects the row for bulk deletion. | The verified row checkbox value was 434; the With selected count changed to 1. |
| Bootbox confirmation | Confirms before applying the bulk deletion. | The dialog text was Are you sure you want to delete? and exposed Cancel and OK actions. |
GET /ajaxserver | Bulk-deletes selected tasks. | Request was action=deleteTarefasMultiple&tarefas%5B0%5D=434. Response was {"sim":1,"nao":0,"list_nao":""}. |
dt_tarefas | Verifies deletion. | Subject search for AI Demo CRM Bulk Delete 20260519T102751Z returned recordsFiltered=0 and an empty data array. |
Evidence: raw/playwright/workflows/crm-task-bulk-delete-20260519T102751Z.json and workflows/bulk-delete-crm-task.html.
CRM Task Notes Page POST
Verified end to end. Workflow run crm-task-notes-20260519T100440Z edited both additional description fields on task 431 and verified the saved notes through detail reload and dt_tarefas.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /crm/tarefas/view/NDMx | Loads note editors. | The visible note editors are contenteditable areas #relatorio and #relatorio2, backed by hidden fields named relatorio and relatorio2. |
POST /crm/tarefas/view/NDMx | Saves task notes. | Payload included encoded HTML for relatorio=<div>AI verified task note 20260519T100440Z</div> and relatorio2=<div>AI verified follow-up note 20260519T100440Z</div>, while preserving subject, progress, type, priority, responsible employee, and date/time fields. |
dt_tarefas | Verifies the primary note. | Subject search returned one matching row with Relatorio=<div>AI verified task note 20260519T100440Z</div>. The second note was verified by reloading the detail route because it is not exposed in the task-list row. |
Evidence: raw/playwright/workflows/crm-task-notes-20260519T100440Z.json and workflows/edit-crm-task-notes.html.
CRM Task Entity Link Calls
Verified end to end. Workflow run crm-task-entity-20260519T100919Z linked task 431 to customer 910 and verified the relation through detail reload and dt_tarefas.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
Sel2_Select | Initializes selected entity. | Customer entity selection used table=clientes, id=codterc, value=Nome, operator=equal, and term=910; response text was 100 Ouvidos Lda. |
getEntidade | Loads task entity summary fields. | Request used tipo=C and id=910; response populated customer name, address, locality, postal code, country, VAT number, active flag, and GDPR mailing flag. |
POST /crm/tarefas/view/NDMx | Saves the entity relation. | Payload included tipoterc=C, codterc=910, and empty codcontacto, while preserving subject, notes, progress, type, priority, responsible employee, and date/time fields. |
dt_tarefas | Verifies the task relation. | Subject search returned one matching row with TipoTerc=C and CodTerc=910. |
Evidence: raw/playwright/workflows/crm-task-entity-20260519T100919Z.json and workflows/link-crm-task-entity.html.
CRM Task Contact Link Calls
Verified end to end. Workflow run crm-task-contact-20260519T101421Z linked task 431 to contact 27 and verified the relation through detail reload and the save payload.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
Sel2_Select_v2 | Searches active contacts. | The contact selector uses table=contactos, id=CodContacto, value=Nome, and active contact filtering. |
getContacto | Loads contact summary fields. | Request used id=27; response populated AI Demo Contact 20260519T030819Z, e-mail, address, phone, mobile, VAT number, active flag, and GDPR fields. |
POST /crm/tarefas/view/NDMx | Saves the contact relation. | Payload preserved tipoterc=C and codterc=910, and added codcontacto=27. |
| Detail reload | Verifies the contact relation. | Reloaded task detail showed codcontacto=27, contacto_Nome=AI Demo Contact 20260519T030819Z, and the expected contact e-mail. |
Evidence: raw/playwright/workflows/crm-task-contact-20260519T101421Z.json and workflows/link-crm-task-contact.html.
Invoice/Receipt Creation AJAX Calls
Verified end to end. Workflow run invoice-fr-20260519T024739Z created FR 9999/841, received 999900841%OK&=&OKDOC&=&, and reduced warehouse 1 stock for article AI-DEMO-20260519-021105 from 2 to 1.
| Endpoint | Purpose Observed |
|---|---|
action=Sel2_Select_ZonasFiscais | Select2 fiscal-zone lookup initialized with term PT-MA. |
action=NameEntidades | Loads billing customer data. Customer 910 returned activo: T, VAT, address, country, and commercial id. |
action=DT_Select_AdiantamentosClientes | Checks customer advances/open advance documents; customer 910 showed prior FR 9999/819. |
action=loadTabDocumentoArtigos | Loads/searches article data for document lines. |
action=DT_Select_ArtigosEquivalentesLoja | Loads equivalent products by article/store. |
action=detalleDocumentos&option=detalle_vendas | Loads related sales-document details for selected customer/article context. |
action=SearchProduct / action=loadArtigoReducido | Autocomplete and reduced article metadata lookup for line insertion; returns price, VAT, stock, cost, warehouse, lot/serial flags, and accounting classification. |
action=insertLinhaTabDoc | Adds the article line to the draft document id with article payload, customer, currency, series, date, and pricing flags. |
action=listaTabDocumento | Loads document-line tab data for sales document context before and after save. |
action=create_document&option=calcular_totais | Calculates gross, discounts, VAT, retention, and total. Verified total was 1.97. |
action=checkProfitMargins | Checks sales margin rules and returned OK_MARGEM. |
action=payment&option=validate | Validates whether payment covers the document total. Before selecting a payment method the response indicated payment was below total; after adding NUM, it returned valid: true. |
action=payment&option=add | Adds a payment line. Verified payload used modopagamento=NUM, modobase=N, total=1.97, and entity 910. |
action=saveDocument | Finalizes the invoice/receipt document. Verified response: 999900841%OK&=&OKDOC&=&. |
action=payment&option=get_payment | Reloads payment display on the finished document view. |
action=dt_list_recalc_stock_articles_lojas | Verifies stock by warehouse; after final save, article stock in warehouse 1 changed from 2 to 1. |
action=DT_List_Documentos | Loads the FR list page DataTable after finalization. |
Evidence: raw/playwright/vendas-fr-create-requests.txt, raw/playwright/workflows/probe-invoice-line-20260519T023511Z.json, and raw/playwright/workflows/invoice-fr-20260519T024739Z.json.
Invoice / Receipt Missing Payment Validation AJAX Calls
Verified end to end. Workflow run invoice-receipt-missing-payment-validation-20260519T184723Z attempted to finalize an FR with customer and line but no payment row, then stopped at the payment modal without final save.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadArtigoReducido | Loads the FR article line. | Loaded article AI-DEMO-20260519-021105, warehouse 1, for document type FR. |
insertLinhaTabDoc | Adds the article line into the temporary FR grid. | The line grid had one row, quantity 1, and total with VAT 1.96677. |
payment&option=validate | Checks whether payment covers the FR total before final save. | Returned valid:"NONE", troco:-1.97, and message The payment is equal to or greater than the total document. |
saveDocument | Final FR save. | Not called. Payment modal remained visible with payment total 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock after the stopped save attempt. | Warehouse stock stayed at -3. |
Evidence: raw/playwright/workflows/invoice-receipt-missing-payment-validation-20260519T184723Z.json and workflows/handle-invoice-receipt-missing-payment.html.
Simplified Invoice Missing Payment Validation AJAX Calls
Verified end to end. Workflow run simplified-invoice-missing-payment-validation-20260519T185326Z attempted to finalize an FS with customer and line but no payment row, then stopped at the payment modal without final save.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadArtigoReducido | Loads the FS article line. | Loaded article AI-DEMO-20260519-021105, warehouse 1, for document type FS. |
insertLinhaTabDoc | Adds the article line into the temporary FS grid. | The line grid had one row, quantity 1, and total with VAT 1.96677. |
payment&option=validate | Checks whether payment covers the FS total before final save. | Returned valid:"NONE", troco:-1.97, and message The payment is equal to or greater than the total document. |
saveDocument | Final FS save. | Not called. Payment modal remained visible with payment total 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock after the stopped save attempt. | Warehouse stock stayed at -3. |
Evidence: raw/playwright/workflows/simplified-invoice-missing-payment-validation-20260519T185326Z.json and workflows/handle-simplified-invoice-missing-payment.html.
Simplified Invoice Overpayment Calls
Verified end to end. Workflow run simplified-invoice-overpayment-20260519T225200Z finished an FS after entering a payment greater than the document total.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=add | Adds the overpayment row to the modal. | Created NUM row value 2 for a document total of 1.97. |
payment&option=validate | Checks whether payment covers the FS total and calculates change. | Returned valid:true, no errors, and troco:0.03. |
saveDocument | Final FS save. | Returned document 999900009 with OKDOC and redirected to /vendas/fs/view/OTk5OTAwMDA5. |
DT_List_Documentos&table=FactSim | Verifies final FS list state. | Returned FS 9999/9 as LIQ / Finished with total 1.97, ValorPago=1.97, and pending value 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock after final save. | Warehouse stock moved from -28 to -29. |
Evidence: raw/playwright/workflows/simplified-invoice-overpayment-20260519T225200Z.json and workflows/create-simplified-invoice-overpayment.html.
Simplified Invoice Partial Payment Correction Calls
Verified end to end. Workflow run simplified-invoice-fix-partial-payment-20260519T225558Z edited an existing short FS payment row to the full document total, validated payment, saved the FS, and verified list state and stock movement.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=add | Adds the initial short payment row. | Created NUM row value 1.00 against FS total 1.97. |
payment&option=validate | Blocks the short payment, then validates the corrected value. | First returned valid:false and troco:-0.97; after editing the row, returned valid:true and troco:0. |
| Payment modal DOM | Verifies the UI edit before final save. | The existing payment input #payment_input_1 was edited from 1 to 1.97, and #payment_total became 1.97. |
saveDocument | Final FS save. | Returned document 999900010 with OKDOC and redirected to /vendas/fs/view/OTk5OTAwMDEw. |
DT_List_Documentos&table=FactSim | Verifies final FS list state. | Returned FS 9999/10 as LIQ / Finished with ValorPago=1.97 and pending value 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock after final save. | Warehouse stock moved from -29 to -30. |
Evidence: raw/playwright/workflows/simplified-invoice-fix-partial-payment-20260519T225558Z.json and workflows/fix-simplified-invoice-partial-payment.html.
Simplified Invoice Payment Row Deletion Calls
Verified up to the save boundary. Workflow run simplified-invoice-delete-payment-row-20260519T230007Z added a cash payment row to an FS payment modal, deleted that row, and confirmed no final save or stock movement occurred.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=add | Adds a payment row to the modal. | Created NUM row nseq=1, value 1.97, inbox [0] Caixa 0, and estimated date 19/05/2026. |
payment&option=delete | Deletes one payment row from the modal. | Payload used temporary document 55591, compras=F, nseq=1, total=1.97, and edit=F. |
| Payment modal DOM | Verifies the UI after deletion. | #payment_form became empty, no .payment_form inputs remained, no .delete_payment buttons remained, and #payment_total became 0. |
saveDocument | Final FS save. | Not called. No OKDOC response was captured. |
dt_list_recalc_stock_articles_lojas | Checks stock after payment-row deletion. | Warehouse stock stayed at -30. |
Evidence: raw/playwright/workflows/simplified-invoice-delete-payment-row-20260519T230007Z.json and workflows/delete-simplified-invoice-payment-row.html.
Simplified Invoice Split Payment Calls
Verified end to end. Workflow run simplified-invoice-split-payment-20260519T230345Z finished an FS with two payment rows, then verified the final FS list state and stock movement.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=add | Adds the first payment row. | Created NUM row with value 1. |
payment&option=add | Adds the second payment row. | Adding TRA with document total 1.97 produced remaining value 0.97. |
payment&option=validate | Checks whether the combined payments cover the FS total. | Returned valid:true, troco:0, and HTML containing both NUM and TRA payment rows. |
saveDocument | Final FS save. | Returned document 999900011 with OKDOC and redirected to /vendas/fs/view/OTk5OTAwMDEx. |
DT_List_Documentos&table=FactSim | Verifies final FS list state. | Returned FS 9999/11 as LIQ / Finished with paid value 1.97. |
dt_list_recalc_stock_articles_lojas | Checks stock after final save. | Warehouse stock moved from -30 to -31. |
Evidence: raw/playwright/workflows/simplified-invoice-split-payment-20260519T230345Z.json and workflows/create-simplified-invoice-split-payment.html.
Invoice / Receipt Inactive Customer Validation AJAX Calls
Verified end to end. Workflow run invoice-receipt-inactive-customer-validation-20260519T185928Z selected inactive customer 1 on an FR, inserted one line, attempted final save, and stopped without saveDocument.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads billing customer data. | Customer 1 returned nome:"Consumidor Final", VAT 999999990, and activo:"F". |
loadArtigoReducido | Loads the FR article line. | Loaded article AI-DEMO-20260519-021105, warehouse 1, for document type FR. |
insertLinhaTabDoc | Adds the article line into the temporary FR grid. | The line grid had one row, quantity 1, and total with VAT 1.96677. |
create_document&option=calcular_totais | Recalculates totals after the finalization attempt. | Ran with empty codterc after the inactive customer was cleared. |
checkProfitMargins | Checks sales margin rules before final save. | Observed during the stopped finalization attempt. |
saveDocument | Final FR save. | Not called. OfficeGest stayed on /vendas/fr/create. |
dt_list_recalc_stock_articles_lojas | Checks stock after the stopped save attempt. | Warehouse stock stayed at -3. |
Evidence: raw/playwright/workflows/invoice-receipt-inactive-customer-validation-20260519T185928Z.json and workflows/handle-invoice-receipt-inactive-customer.html.
Invoice / Receipt Partial Payment Validation AJAX Calls
Verified end to end. Workflow run invoice-receipt-partial-payment-validation-20260519T190550Z attempted to finish an FR with a NUM payment row below the document total, then stopped at the payment modal without final save.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadArtigoReducido | Loads the FR article line. | Loaded article AI-DEMO-20260519-021105, warehouse 1, for document type FR. |
insertLinhaTabDoc | Adds the article line into the temporary FR grid. | The line grid had one row, quantity 1, and total with VAT 1.96677. |
payment&option=add | Adds a payment row to the modal. | Created NUM payment row value 1 for temporary document 52444. |
payment&option=validate | Checks whether payment covers the FR total before final save. | Returned valid:false, troco:-0.97, and message The payment is equal to or greater than the total document. |
saveDocument | Final FR save. | Not called. Payment modal remained visible with payment total 1.00. |
dt_list_recalc_stock_articles_lojas | Checks stock after the stopped save attempt. | Warehouse stock stayed at -3. |
Evidence: raw/playwright/workflows/invoice-receipt-partial-payment-validation-20260519T190550Z.json and workflows/handle-invoice-receipt-partial-payment.html.
Invoice / Receipt Split Payment AJAX Calls
Verified end to end. Workflow run invoice-receipt-split-payment-20260519T191233Z finished an FR with two payment rows, then verified the final FR list state and stock movement.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, total with VAT 1.96677. |
payment&option=add | Adds the first payment row. | Created NUM row with value 1. |
payment&option=add | Adds the second payment row. | Adding TRA with document total 1.97 produced remaining value 0.97. |
payment&option=validate | Checks whether the combined payments cover the FR total. | Returned valid:true, troco:0, and HTML containing both NUM and TRA payment rows. |
saveDocument | Final FR save. | Returned 999900846%...OKDOC and redirected to the FR view. |
DT_List_Documentos | Verifies final FR list state. | Returned FR 9999/846 as LIQ / Finished with paid value 1.97. |
dt_list_recalc_stock_articles_lojas | Checks stock after final save. | Warehouse stock moved from -4 to -5. |
Evidence: raw/playwright/workflows/invoice-receipt-split-payment-20260519T191233Z.json and workflows/create-invoice-receipt-split-payment.html.
Invoice / Receipt Payment Row Deletion Calls
Verified up to the save boundary. Workflow run invoice-receipt-delete-payment-row-20260519T222826Z added a cash payment row to an FR payment modal, deleted that row, and confirmed no final save or stock movement occurred.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=add | Adds a payment row to the modal. | Created NUM row nseq=1, value 1.97, inbox [0] Caixa 0, and estimated date 19/05/2026. |
payment&option=delete | Deletes one payment row from the modal. | Payload used temporary document 55293, compras=F, nseq=1, total=1.97, and edit=F. |
| Payment modal DOM | Verifies the UI after deletion. | #payment_form became empty, no .payment_form inputs remained, no .delete_payment buttons remained, and #payment_total became 0. |
saveDocument | Final FR save. | Not called. No OKDOC response was captured. |
dt_list_recalc_stock_articles_lojas | Checks stock after payment-row deletion. | Warehouse stock stayed at -26. |
Evidence: raw/playwright/workflows/invoice-receipt-delete-payment-row-20260519T222826Z.json and workflows/delete-invoice-receipt-payment-row.html.
Invoice / Receipt Partial Payment Correction Calls
Verified end to end. Workflow run invoice-receipt-fix-partial-payment-20260519T223353Z edited an existing short FR payment row to the full document total, validated payment, saved the FR, and verified list state and stock movement.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=add | Adds the initial short payment row. | Created NUM row value 1.00 against FR total 1.97. |
payment&option=validate | Blocks the short payment, then validates the corrected value. | First returned valid:false and troco:-0.97; after editing the row, returned valid:true and troco:0. |
| Payment modal DOM | Verifies the UI edit before final save. | The existing payment input #payment_input_1 was edited from 1 to 1.97, and #payment_total became 1.97. |
saveDocument | Final FR save. | Returned document 999900847 with OKDOC and redirected to /vendas/fr/view/OTk5OTAwODQ3. |
DT_List_Documentos | Verifies final FR list state. | Returned FR 9999/847 as LIQ / Finished with ValorPago=1.97 and pending value 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock after final save. | Warehouse stock moved from -26 to -27. |
Evidence: raw/playwright/workflows/invoice-receipt-fix-partial-payment-20260519T223353Z.json and workflows/fix-invoice-receipt-partial-payment.html.
Invoice / Receipt Overpayment Calls
Verified end to end. Workflow run invoice-receipt-overpayment-20260519T224642Z finished an FR after entering a payment greater than the document total.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=add | Adds the overpayment row to the modal. | Created NUM row value 2 for a document total of 1.97. |
payment&option=validate | Checks whether payment covers the FR total and calculates change. | Returned valid:true, no errors, and troco:0.03. |
saveDocument | Final FR save. | Returned document 999900848 with OKDOC and redirected to /vendas/fr/view/OTk5OTAwODQ4. |
DT_List_Documentos | Verifies final FR list state. | Returned FR 9999/848 as LIQ / Finished with total 1.97, ValorPago=1.97, and pending value 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock after final save. | Warehouse stock moved from -27 to -28. |
Evidence: raw/playwright/workflows/invoice-receipt-overpayment-20260519T224642Z.json and workflows/create-invoice-receipt-overpayment.html.
Sales Invoice Line Warehouse AJAX Calls
Verified end to end. Workflow run sales-invoice-line-warehouse-20260519T203515Z updated an FT line warehouse, handled the warehouse confirmation, saved the document, and verified the final line retained 2.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, initial warehouse 1. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=CodLoja, value=2, and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned CodLoja=2. |
saveDocument | Final FT save after both confirmations. | Returned 999901692 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1692 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-line-warehouse-20260519T203515Z.json and workflows/set-sales-invoice-line-warehouse.html.
Sales Invoice Line Description AJAX Calls
Verified end to end. Workflow run sales-invoice-line-description-20260519T205155Z updated an FT line custom description, saved the document, and verified the final line retained the custom text.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105; the line started with the article name and empty DesignacaoExt. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=DesignacaoExt and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned DesignacaoExt=Consultoria operacional OfficeGest. |
saveDocument | Final FT save. | Returned 999901695 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1695 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-line-description-20260519T205155Z.json and workflows/change-sales-invoice-line-description.html.
Sales Invoice Line Expected Date AJAX Calls
Verified end to end. Workflow run sales-invoice-line-expected-date-20260519T210214Z updated an FT line expected date, saved the document, and verified the final line retained 2026-05-26.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105; the line started with DataPrevista=2026-05-19 00:00:00. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=DataPrevista, value=26/05/2026, and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned DataPrevista=2026-05-26 00:00:00. |
saveDocument | Final FT save. | Returned 999901697 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1697 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-line-expected-date-20260519T210214Z.json and workflows/set-sales-invoice-line-expected-date.html.
Sales Invoice Line Unit AJAX Calls
Verified end to end. Workflow run sales-invoice-line-unit-20260519T210702Z updated an FT line unit, saved the document, and verified the final line retained H.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105; the line started with CodUnidade=UN. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=CodUnidade, value=H, and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned CodUnidade=H and TotalCIVA=1.96677. |
saveDocument | Final FT save. | Returned 999901698 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1698 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-line-unit-20260519T210702Z.json and workflows/set-sales-invoice-line-unit.html.
Sales Invoice Line Unit Price AJAX Calls
Verified end to end. Workflow run sales-invoice-line-unit-price-20260519T204703Z updated an FT line unit price, saved the document, and verified the final line retained 2.5.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, initial unit price 1.599. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=PrecoUni, value=2.50, and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned PrecoUni=2.5, ValorIVA=0.575, and TotalCIVA=3.075. |
saveDocument | Final FT save. | Returned 999901694 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1694 as ABR / Open with total and pending value 3.08. |
Evidence: raw/playwright/workflows/sales-invoice-line-unit-price-20260519T204703Z.json and workflows/change-sales-invoice-line-unit-price.html.
Sales Invoice Email Composer Calls
Verified up to the send boundary. Workflow run sales-invoice-prepare-email-20260519T213657Z opened the invoice email composer and confirmed no send-email request was submitted.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
counters | Loads ticket counters attached to the document view. | Called with document_type=ft and document_number=999901699. |
listaTabDocumento | Loads saved invoice lines on the view page. | Returned the FT line for article AI-DEMO-20260519-021105. |
create_document&option=calcular_totais | Recalculates totals displayed on the saved view. | Returned total 3.69, VAT 0.69, and net value 3. |
documents&option=body_email_data | Loads email template/body data for the invoice email modal. | Posted num=999901699, tipoop=FT, codterc=910, tipoterc=C; returned template cli_documentos referencing FT 9999/1699. |
Evidence: raw/playwright/workflows/sales-invoice-prepare-email-20260519T213657Z.json and workflows/prepare-sales-invoice-email.html.
Sales Invoice SMS Composer Calls
Verified up to the send boundary. Workflow run sales-invoice-prepare-sms-20260519T214821Z opened the invoice SMS composer and confirmed no SMS send request was submitted.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
counters | Loads ticket counters attached to the document view. | Called with document_type=ft and document_number=999901699. |
listaTabDocumento | Loads saved invoice lines on the view page. | Returned the FT line for article AI-DEMO-20260519-021105. |
create_document&option=calcular_totais | Recalculates totals displayed on the saved view. | Returned total 3.69, VAT 0.69, and net value 3. |
templates_sms&option=getTexto | Loads SMS template text and available SMS contacts for the invoice customer. | Called with table=Fact, table_entity=clientes, num=999901699, namedoc=Invoice, tipoop=FT, tipoterc=C, and id=32. Returned template cli_documentos_ft, English content 100 Ouvidos Lda999901699, and no SMS contacts. |
validar_dados_sms / send SMS calls | External-send boundary. | No SMS send or validation request was submitted in the verified run. |
Evidence: raw/playwright/workflows/sales-invoice-prepare-sms-20260519T214821Z.json and workflows/prepare-sales-invoice-sms.html.
Sales Invoice WhatsApp Availability Calls
Verified with caveat. Workflow run sales-invoice-whatsapp-availability-20260519T215335Z clicked the invoice WhatsApp action and confirmed the demo account returned unavailable before any composer or send request.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
counters | Loads ticket counters attached to the document view. | Called with document_type=ft and document_number=999901699. |
listaTabDocumento | Loads saved invoice lines on the view page. | Returned the FT line for article AI-DEMO-20260519-021105. |
create_document&option=calcular_totais | Recalculates totals displayed on the saved view. | Returned total 3.69, VAT 0.69, and net value 3. |
chatflow&option=has-whatsapp-service | Checks whether WhatsApp service is enabled for the account. | The verified response body was false; no #sendWhatsapp modal opened. |
| WhatsApp send calls | External-send boundary. | No WhatsApp send request was submitted in the verified run. |
Evidence: raw/playwright/workflows/sales-invoice-whatsapp-availability-20260519T215335Z.json and workflows/check-sales-invoice-whatsapp-availability.html.
Sales Invoice Duplicate Preparation Calls
Verified up to the save boundary. Workflow run sales-invoice-prepare-duplicate-20260519T215925Z opened a saved FT duplicate form and confirmed no final save request was submitted.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /vendas/ft/dupl/OTk5OTAxNjk5 | Opens the source invoice as a new editable FT duplicate form. | Page title became OG - Invoice [FT] and the form showed SalesInvoice New document. |
listaTabDocumento | Loads the duplicated temporary line grid. | Returned one copied line for article AI-DEMO-20260519-021105, Qtd=1, PrecoUni=3, PVP=3.69, IVA=23, and TotalCIVA=3.69. |
DT_Select_AdiantamentosClientes | Loads available customer advances. | For customer 910, returned advance document FR 9999/819, which opened the Advances modal. |
create_document&option=calcular_totais | Recalculates duplicate form totals. | Returned net 3, VAT 0.69, and total 3.69. |
saveDocument | Final save boundary. | No save, payment, print, communication, or stock request was submitted in the verified run. |
Evidence: raw/playwright/workflows/sales-invoice-prepare-duplicate-20260519T215925Z.json and workflows/prepare-duplicate-sales-invoice.html.
Sales Invoice Gift Card Calls
Verified up to the save boundary. Workflow run sales-invoice-gift-card-20260520T024756Z applied an active gift certificate to an FT create form and stopped before final invoice save.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
createValesDesconto | Creates a disposable voucher for the controlled run. | Created active gift certificate IG024756000001 with value 1. |
Sel2_Select_CRM_vales_oferta | Loads eligible gift certificates for the invoice modal. | The selector used where[estado]=ACT. |
retalho&option=save_valeoferta | Applies the selected voucher to the temporary document table. | Response returned success:true, valor_desconto=1, and percentagem=0. |
delete with tabela=vales_oferta | Cleans up the disposable voucher. | Deleted voucher id 127; no invoice finalization request was submitted. |
Evidence: raw/playwright/workflows/sales-invoice-gift-card-20260520T024756Z.json and workflows/apply-sales-invoice-gift-card.html.
Sales Invoice Loyalty Card Calls
Verified up to the discount boundary. Workflow run sales-invoice-loyalty-card-20260520T025748Z looked up a loyalty card on an FT create form, probed the loyalty discount-line endpoint, and stopped before final invoice save.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
fidelizBuscaCartao | Looks up the loyalty card for the selected invoice customer. | Request used num=509031862, tipomov=C, tipoterc_prop=C, and codterc_prop=910; response returned account id 13, card id 10, state A, and qtd_pontos=0. |
fidelizacao&option=add_discount_card_line | Attempts to add the loyalty discount line to the temporary document table. | Response returned succeeded:false because Artigo para descontos is not configured in the demo loyalty parameters. |
listaTabDocumento | Reloads the temporary document rows after the boundary probe. | The invoice still had one original article line; no loyalty discount row was inserted. |
Evidence: raw/playwright/workflows/sales-invoice-loyalty-card-20260520T025748Z.json and workflows/use-sales-invoice-loyalty-card.html.
Sales Invoice Customer Selection Calls
Verified up to the save boundary. Workflow run sales-invoice-customer-selection-20260520T024003Z selected customer 910 on an FT create form and stopped before line insertion or save.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads billing customer data and active status. | Customer 910 returned activo:"T", 100 Ouvidos Lda, VAT 509031862, address, locality, postal code, country, and salesperson id. |
edi&option=get_broker_id_entity | Checks broker/commercial metadata for the selected billing entity. | The request used terc_id=910 and terc_type=C. |
DT_Select_AdiantamentosClientes | Checks customer advances/open advance documents. | The request used entidade=910 and compras=F. |
Sel2_Select&table=moradase / load&tabela=moradase | Loads alternate address options for the selected customer. | The verified customer returned no alternate address rows, so the main customer address remained active. |
saveDocument | Final save boundary. | No final save, draft save, line insertion, print, payment, or delete request was submitted. |
Evidence: raw/playwright/workflows/sales-invoice-customer-selection-20260520T024003Z.json and workflows/select-sales-invoice-customer.html.
Sales Invoice Portes Calls
Verified up to the save boundary. Workflow run sales-invoice-portes-20260520T021905Z added Portes to an FT create form and stopped before final save.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
#btn_Portes | Opens the Portes modal. | The modal id was modalPortes and the numeric input was #valPortes, labelled Valor Total (S/ IVA). |
#addPortes | Saves the Portes value into the temporary document grid. | The verified value was 5.00. |
lancar_novo_portes / insertLinhaTabDoc | Adds the configured shipping article as a document line. | The grid changed from one line to two lines and included PORTES001 / PORTES. |
listaTabDocumento | Reloads the temporary line grid. | The Portes row returned TotalSIVA=5, IVA=23, and TotalCIVA=6.15. |
saveDocument | Final save boundary. | No final save, draft save, print, payment, or delete request was submitted. |
Evidence: raw/playwright/workflows/sales-invoice-portes-20260520T021905Z.json and workflows/add-sales-invoice-portes.html.
Sales Invoice VAT and Totals Calls
Verified read-only. Workflow run sales-invoice-totals-20260520T022740Z read the FT VAT/totals panels and explicitly called the totals calculator without saving the document.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
listaTabDocumento | Loads the current temporary document-line grid. | Returned one line for article AI-DEMO-20260519-021105. |
create_document&option=calcular_totais | Calculates gross/net values, discounts, VAT table, retention, profit, article quantities, and final total. | Returned iliquido=1.599, iva=0.36777, retencao=0, total=1.97, and table_ivas[23] with incidence 1.599. |
| Visible VAT panel | Shows the tax-rate summary below the document lines. | Displayed 23,00%, incidence 1,60 EUR, and VAT value 0,37 EUR. |
| Visible totals panel | Shows gross/net, discount, VAT, retention, and final total before save. | Displayed total gross/net 1,60 EUR, VAT 0,37 EUR, retention 0,00%, and total 1,97 EUR. |
saveDocument | Final save boundary. | No final save, draft save, print, payment, or delete request was submitted. |
Evidence: raw/playwright/workflows/sales-invoice-totals-20260520T022740Z.json and workflows/read-sales-invoice-vat-and-totals.html.
Sales Invoice Article Search and Line Add Calls
Verified up to the save boundary. Workflow run sales-invoice-article-search-line-20260520T023231Z searched for an article inside the FT document tab, selected it, and stopped before final save.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
#buscaArtigo | Document-tab article search field. | The verified search value was AI-DEMO-20260519-021105. |
loadTabDocumentoArtigos | Searches article rows for the document-line selector. | Two article search requests were captured during typing and result loading. |
SearchProduct / loadArtigoReducido | Loads selected article metadata. | Returned data used to populate article price, VAT, warehouse, cost, and stock context. |
insertLinhaTabDoc | Creates the temporary invoice line. | The line grid returned CodArtigo=AI-DEMO-20260519-021105, quantity 1, VAT 23, and TotalCIVA=1.96677. |
listaTabDocumento | Reloads the temporary line grid after insertion. | The verified run captured six line-load/insert-related requests. |
saveDocument | Final save boundary. | No final save, draft save, print, payment, or delete request was submitted. |
Evidence: raw/playwright/workflows/sales-invoice-article-search-line-20260520T023231Z.json and workflows/search-and-add-sales-invoice-article-line.html.
Sales Invoice Attachment Calls
Verified end to end. Workflow run sales-invoice-attachments-20260519T221119Z uploaded and deleted a disposable attachment from a saved FT invoice and confirmed no invoice-changing request was submitted.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /vendas/ft/view/OTk5OTAxNjk5 | Loads the saved invoice attachment surface. | The FT view exposed Attachements, Upload file, the Attach modal, and table columns for description, category, date, filename, MIME type, size, and public flag. |
DT_Select_Attachments | Loads saved invoice attachments. | Request used search[NumDoc]=999901699 and search[tipodoc]=FT. After cleanup, the response returned {"data":[]}. |
POST /ajaxserver / AceUpload | Uploads a file attachment to the saved invoice. | Multipart request used location=attachments, codempr=1, codterc=910, tipoterc=C, numdoc=999901699, tipodoc=FT, required assunto, checked public=1, and files[]. Response returned {"ok":true,"num":193}, MIME type text/plain, and size 66. |
lista_attachments_delete(193) | Deletes the uploaded row after Bootbox confirmation. | The UI opened Are you sure you want to delete?; accepting the prompt removed the row, and the next attachment table lookup returned no data. |
Evidence: raw/playwright/workflows/sales-invoice-attachments-20260519T221119Z.json and workflows/manage-sales-invoice-attachments.html.
Sales Invoice Attachment Download Calls
Verified end to end. Workflow run sales-invoice-download-attachment-20260519T222253Z uploaded a disposable saved-FT attachment, clicked the row download action, verified the browser download, and deleted the attachment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
lista_attachments_edit(193) | Starts attachment file download from the row action. | The browser suggested original filename sales-invoice-download-attachment-20260519T222253Z.txt and downloaded 75 bytes. |
DT_Select_Attachments | Verifies the source FT attachment row. | The row for num=193 returned description AI FT attachment download 20260519T222253Z, MIME type text/plain, size 75, and public=1. |
deleteAttachmentById | Cleans up the disposable attachment. | The final lookup found zero rows for the downloaded attachment id, leaving the demo invoice clean. |
Evidence: raw/playwright/workflows/sales-invoice-download-attachment-20260519T222253Z.json, downloaded artifact raw/playwright/downloads/sales-invoice-download-attachment-20260519T222253Z-sales-invoice-download-attachment-20260519T222253Z.txt, and workflows/download-sales-invoice-attachment.html.
Sales Invoice Attachment Edit Calls
Verified end to end. Workflow run sales-invoice-edit-attachment-20260519T221820Z uploaded a disposable saved-FT attachment, opened the edit modal, changed description and public metadata, verified the table row, and deleted the attachment.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
lista_attachments_edit2(193) | Opens the row edit modal. | The modal id was editattachment with hidden attach_id=193, required edit_attach_assunto, optional edit_attach_categoria, edit_attach_public, and save button btn_edit_attach_submit. |
editAttachment | Saves attachment metadata. | The verified save serialized num=193 and edited assunto=AI FT attachment edited 20260519T221820Z; because Public was unchecked, no public field was sent. Response returned {"success":true}. |
DT_Select_Attachments | Verifies the edited FT attachment row. | The row for num=193 returned edited description, original show name sales-invoice-edit-attachment-20260519T221820Z.txt, MIME type text/plain, size 71, and public=0. |
deleteAttachmentById | Cleans up the disposable attachment. | The final lookup found zero rows for the edited attachment id, leaving the demo invoice clean. |
Evidence: raw/playwright/workflows/sales-invoice-edit-attachment-20260519T221820Z.json and workflows/edit-sales-invoice-attachment.html.
Sales Invoice Public Link Calls
Verified end to end. Workflow run sales-invoice-copy-public-link-20260519T213057Z copied the public document URL from a saved FT view and verified the public document page.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
counters | Loads ticket counters attached to the document view. | Called with document_type=ft and document_number=999901699. |
listaTabDocumento | Loads saved invoice lines on the view page. | Returned the FT line for article AI-DEMO-20260519-021105. |
create_document&option=calcular_totais | Recalculates totals displayed on the saved view. | Returned total 3.69, VAT 0.69, and net value 3. |
navigator.clipboard.writeText | Copies the public document URL. | The click copied https://pdoc.officegest.com/rwsCRlSDlOXcA36UO7Y; no OfficeGest AJAX call was made by the copy click itself. |
https://pdoc.officegest.com/... | Public document view outside the authenticated demo session. | Returned status 200, title OfficeGest's Public Documents, invoice FT 9999/1699, amount 3.69 EUR, and Download. |
Evidence: raw/playwright/workflows/sales-invoice-copy-public-link-20260519T213057Z.json and workflows/copy-sales-invoice-public-link.html.
Public Sales Invoice Download Calls
Verified end to end. Workflow run public-sales-invoice-download-pdf-20260519T214219Z opened the public pdoc page, clicked Download, and verified the generated browser download.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET https://pdoc.officegest.com/rwsCRlSDlOXcA36UO7Y | Loads the public document shell outside the authenticated OfficeGest session. | Returned status 200 and page title OfficeGest's Public Documents. |
GET services.guisoft.pt/officegest/getpublicdoc/{token} | Loads the public document metadata. | Returned success:true, document FT 9999/1699, customer 100 Ouvidos Lda, total 3.69 EUR, and PDF URL democomercial.officegest.com/download/?docfl=.... |
POST democomercial.officegest.com/api/v2/sales/action-log | Logs public document view/download attempts. | The page posted both {"action":"view",...} and {"action":"download","document_type":"FT","document_number":999901699,...}. In the unauthenticated verified run, the action-log response could return 401. |
GET democomercial.officegest.com/download/?docfl=... | Fetches the PDF file for the public document. | The Download click produced filename FT 9999_1699.pdf, 25990 bytes, and a valid %PDF-1.7 header. |
Evidence: raw/playwright/workflows/public-sales-invoice-download-pdf-20260519T214219Z.json and workflows/download-public-sales-invoice-pdf.html.
Sales Invoice PDF Print AJAX Calls
Verified end to end. Workflow run sales-invoice-print-pdf-20260519T212449Z generated a PDF from a saved FT view and verified the PDF download route.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
counters | Loads ticket counters attached to the document view. | Called with document_type=ft and document_number=999901699. |
listaTabDocumento | Loads saved invoice lines on the view page. | Returned the FT line for article AI-DEMO-20260519-021105. |
create_document&option=calcular_totais | Recalculates totals displayed on the saved view. | Returned total 3.69, VAT 0.69, and net value 3. |
imprimir | Generates the PDF output for the selected document. | Posted num=999901699, tipoop=FT, talao=F, impressao=F, and returned FT 9999-1699.pdf. |
/download/?docfl=... | Downloads the generated file. | Returned status 200, application/pdf, 25990 bytes, and a %PDF-1.7 header. |
Evidence: raw/playwright/workflows/sales-invoice-print-pdf-20260519T212449Z.json and workflows/print-sales-invoice-pdf.html.
Sales Invoice Line Gross Price AJAX Calls
Verified end to end. Workflow run sales-invoice-line-gross-price-20260519T211156Z updated an FT line gross price, saved the document, and verified the final line retained PVP=3.69.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105; the line started with PVP=1.96677. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=PVP, value=3.69, and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned PVP=3.69, PrecoUni=3, and TotalCIVA=3.69. |
saveDocument | Final FT save. | Returned 999901699 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1699 as ABR / Open with total and pending value 3.69. |
Evidence: raw/playwright/workflows/sales-invoice-line-gross-price-20260519T211156Z.json and workflows/change-sales-invoice-line-gross-price.html.
Sales Invoice Line VAT AJAX Calls
Verified end to end. Workflow run sales-invoice-line-vat-20260519T204152Z updated an FT line VAT rate, saved the document, and verified the final line retained 13.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
Sel2_Select_v2 | Looks up VAT choices from table ivas. | Term 13 returned Reduzida 1 and Taxa 13%, both with iva=13. |
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, initial VAT 23%. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=IVA, value=13, and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned IVA=13 and TotalCIVA=1.80687. |
saveDocument | Final FT save. | Returned 999901693 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1693 as ABR / Open with total and pending value 1.81. |
Evidence: raw/playwright/workflows/sales-invoice-line-vat-20260519T204152Z.json and workflows/set-sales-invoice-line-vat.html.
Sales Invoice Line VAT Reason AJAX Calls
Verified end to end. Workflow run sales-invoice-line-vat-reason-20260519T205716Z updated an FT line VAT reason, saved the document, and verified the final line retained 7.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, initial RI=null. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=RI, value=7, and received {"success":{"success":true,"m13":false},"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned RI=7, with IVA=23 unchanged. |
saveDocument | Final FT save. | Returned 999901696 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1696 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-line-vat-reason-20260519T205716Z.json and workflows/set-sales-invoice-line-vat-reason.html.
Sales Invoice Line Accounting Classification AJAX Calls
Verified end to end. Workflow run sales-invoice-line-accounting-classification-20260519T202853Z updated an FT line accounting classification, saved the document, and verified the final line retained 1.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, unit price 1.599, VAT 23%. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=id_classifcontab, value=1, and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned id_classifcontab=1. |
saveDocument | Final FT save. | Returned 999901691 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1691 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-line-accounting-classification-20260519T202853Z.json and workflows/set-sales-invoice-line-accounting-classification.html.
Sales Invoice Line Cost Center AJAX Calls
Verified end to end. Workflow run sales-invoice-line-cost-center-20260519T202424Z updated an FT line cost center, saved the document, and verified the final line retained 0002.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, unit price 1.599, VAT 23%. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=cod_centrocusto, value=0002, and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned cod_centrocusto=0002. |
saveDocument | Final FT save. | Returned 999901690 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1690 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-line-cost-center-20260519T202424Z.json and workflows/set-sales-invoice-line-cost-center.html.
Sales Invoice Currency AJAX Calls
Verified end to end. Workflow run sales-invoice-currency-20260519T201838Z saved an FT with currency DOL and exchange rate 1.1.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, unit price 1.599, VAT 23%. |
saveDocument | Final FT save. | The encoded form payload included CodMoeda=DOL and Cambio=1.1, then returned 999901689 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1689 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-currency-20260519T201838Z.json and workflows/set-sales-invoice-currency.html.
Sales Invoice Classification AJAX Calls
Verified end to end. Workflow run sales-invoice-classification-20260519T201417Z saved an FT with classification CF / Cliente Final.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, unit price 1.599, VAT 23%. |
saveDocument | Final FT save. | The encoded form payload included CodClassif=CF, then returned 999901688 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1688 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-classification-20260519T201417Z.json and workflows/set-sales-invoice-classification.html.
Sales Invoice Delivery Details AJAX Calls
Verified end to end. Workflow run sales-invoice-delivery-method-20260519T200919Z saved FT delivery method, vehicle, loading, and unloading fields.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer billing and unloading defaults. | After customer 910, the form exposed unloading defaults based on the customer address. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, unit price 1.599, VAT 23%. |
saveDocument | Final FT save. | The encoded form payload included CodModoExp=NV, Viatura=AI-VAN-2026, CargaMorada, CargaLocalidade, CargaCodPostal, CargaCodPais, CargaData, CargaTime, DescargaMorada, DescargaLocalidade, DescargaCodPostal, DescargaCodPais, DescargaData, and DescargaTime. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1687 as ABR / Open with total and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-delivery-method-20260519T200919Z.json and workflows/set-sales-invoice-delivery-method.html.
Sales Invoice Global Discount AJAX Calls
Verified end to end. Workflow run sales-invoice-global-discount-20260519T200434Z recalculated an FT with a document-level discount, saved it, and verified the discounted list total.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, unit price 1.599, VAT 23%. |
create_document&option=calcular_totais | Recalculates document totals. | Used desconto1=5; totals changed from 1.97 to 1.87. |
saveDocument | Final FT save. | The encoded form payload included PerDesc=5, then returned 999901686 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1686 as ABR / Open with total and pending value 1.87. |
Evidence: raw/playwright/workflows/sales-invoice-global-discount-20260519T200434Z.json and workflows/apply-sales-invoice-global-discount.html.
Sales Invoice Line Discount AJAX Calls
Verified end to end. Workflow run sales-invoice-line-discount-20260519T195856Z updated an FT line discount, saved the document, and verified the discounted total in the FT list.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, unit price 1.599, VAT 23%. |
updateEditableTabDoc | Updates editable document-line fields. | Posted campo=Desconto1, value=10, iscompra=F, and received {"success":true,"msg":""}. |
DT_TabDocumento | Reloads line-grid data after the edit. | The line returned Desconto1=10 and DescontoLinha=0.1599. |
saveDocument | Final FT save. | Returned 999901685 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1685 as ABR / Open with total and pending value 1.77. |
Evidence: raw/playwright/workflows/sales-invoice-line-discount-20260519T195856Z.json and workflows/apply-sales-invoice-line-discount.html.
Sales Invoice Fiscal Zone AJAX Calls
Verified with caveat. Workflow run sales-invoice-fiscal-zone-20260519T195158Z changed an FT fiscal zone to PT, saved the document, and verified the final view restored PT-MA for customer 910.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
Sel2_Select_ZonasFiscais | Looks up fiscal-zone selector values. | Term PT returned PT / Portugal; observed terms also include PT-AC, PT-MA, and ES. |
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, total with VAT 1.96677. |
saveDocument | Final FT save. | The encoded form payload included zonafiscal=PT, then returned 999901684 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1684 as ABR / Open with total 1.97 and pending 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-fiscal-zone-20260519T195158Z.json and workflows/set-sales-invoice-fiscal-zone.html.
Sales Invoice Billing Address AJAX Calls
Verified end to end. Workflow run sales-invoice-billing-address-20260519T194417Z saved an FT with alternate billing name and address.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads default customer billing fields. | Customer 910 initially filled name 100 Ouvidos Lda and the Moura address. |
Sel2_Select&table=moradase | Loads available addresses for the selected customer. | The billing selector exposed -DEF / Main Contact and -OTR / Other Addresses. |
saveDocument | Final FT save. | The encoded form payload included MoradaFact=-OTR, NomeFact=AI Alternate Billing 20260519, Morada=Rua Alternativa OfficeGest 123, Localidade=Leiria, CodPostal=2400-001, and CodPais=PRT. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1682 as ABR / Open with nomefact: AI Alternate Billing 20260519. |
Evidence: raw/playwright/workflows/sales-invoice-billing-address-20260519T194417Z.json and workflows/set-sales-invoice-billing-address.html.
Sales Invoice Payment Terms AJAX Calls
Verified end to end. Workflow run sales-invoice-payment-terms-20260519T193814Z changed the FT payment condition to 30, saved the document, and verified the list row showed 30 Dias.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | The line insert used formapag=30 after the payment term was changed. |
saveDocument | Final FT save. | The encoded form payload included CodFormaPag=30 and DataLimitePaga=18/06/2026, then returned 999901681 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1681 as ABR / Open with fpag: 30 Dias. |
Evidence: raw/playwright/workflows/sales-invoice-payment-terms-20260519T193814Z.json and workflows/set-sales-invoice-payment-terms.html.
Sales Invoice Vehicle AJAX Calls
Verified end to end. Workflow run sales-invoice-vehicle-20260519T193202Z selected customer vehicle 75-XU-14, saved an FT, and verified the final list row exposed the vehicle value.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
Sel2_viaturas | Searches active vehicles available for the selected customer. | For customer 910, returned 75-XU-14 with description Honda Vision - 2018 plus a No registration option. |
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, total with VAT 1.96677. |
saveDocument | Final FT save. | The encoded form payload included CodEquipExt=75-XU-14, Marca=Honda, Modelo=Vision, Versao=2018, ContKmAnt=3111111, ContKmAct=3111222, and imprimirviatura=on. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1680 as ABR / Open with codequipext_c: 75-XU-14. |
Evidence: raw/playwright/workflows/sales-invoice-vehicle-20260519T193202Z.json and workflows/add-sales-invoice-vehicle.html.
Sales Invoice Vehicle Print Flag Calls
Verified read-only. Workflow run sales-invoice-vehicle-print-flag-20260520T020900Z opened the FT create page, confirmed Print vehicle data can be unchecked, and stopped before save or print.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
GET /vendas/ft/create | Loads the sales invoice create form. | The form exposed #imprimirviatura and #doc_CodEquipExt. |
#imprimirviatura | Controls whether vehicle data should print. | The checkbox opened checked by default and became false after clearing it. |
| State-changing invoicing calls | Safety boundary. | No saveDocument, saveRascunho, imprimir, payment, line-insert, or delete request was submitted. |
Evidence: raw/playwright/workflows/sales-invoice-vehicle-print-flag-20260520T020900Z.json and workflows/hide-sales-invoice-vehicle-from-printout.html.
Sales Invoice Notes AJAX Calls
Verified end to end. Workflow run sales-invoice-notes-20260519T192511Z filled a public note and internal note on an FT, saved the document, and verified both values persisted on the final view.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades | Loads customer details after selecting the invoice billing entity. | Customer 910, VAT 509031862, was accepted on /vendas/ft/create. |
loadArtigoReducido / insertLinhaTabDoc | Loads and inserts the invoice article line. | Inserted article AI-DEMO-20260519-021105, quantity 1, total with VAT 1.96677. |
saveDocument | Final FT save. | The encoded form payload included Obs for the public note and Obs2 for the internal note, then returned 999901679 with OKDOC. |
DT_List_Documentos | Verifies final FT list state. | Returned FT 9999/1679 as ABR / Open with total 1.97 and pending value 1.97. |
Evidence: raw/playwright/workflows/sales-invoice-notes-20260519T192511Z.json and workflows/add-sales-invoice-notes.html.
Receipt No Documents Validation AJAX Calls
Verified end to end. Workflow run receipt-no-documents-validation-20260519T191736Z selected customer 910 but did not move any pending document into Documents, then attempted final save.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadTabDocumentoRecibo | Initializes the receipt document tables for the selected customer. | Customer 910 was selected on /vendas/r/create. |
listaTabDocumentoRecibo&estado=F | Loads outstanding documents. | Pending documents were available, but none were moved into Documents. |
changeEstadoRecibo | Moves pending source rows into Documents. | Not called in the empty-receipt validation run. |
payment&option=validate | Payment validation before receipt save. | Not reached because OfficeGest stopped at ErrorNo lines. |
saveDocumentRecibo | Final receipt save. | Not called. OfficeGest stayed on /vendas/r/create. |
Evidence: raw/playwright/workflows/receipt-no-documents-validation-20260519T191736Z.json and workflows/handle-receipt-no-documents-error.html.
Customer Creation AJAX Calls
Verified end to end. Workflow run create-customer-20260519T025604Z created customer 1003, AI Demo Customer 20260519T025604Z, and verified it through the customer grid and customer master-data lookup.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_SelectClientes | Loads and filters the Customers grid. | After save, a name search returned recordsFiltered: 1 and row codterc: 1003. |
loadForm | Loads the New Customer modal. | Posted form=cliente, id=novocliente, params=btn_save_new. |
entidades&option=find_customer_ncontrib | Checks VAT/tax-number duplication. | Observed before saving VAT 590256041. |
searchTelefoneCliente | Checks phone and mobile values for existing customer matches. | Observed for +351.244000001 and +351.919025604. |
createNovoCliente | Creates the customer record. | Returned {"id":1003,...}, including Activo: T, CodFormaPag: PP, CodClassif: CF, CodMoedaHab: EUR, gestorcliente: 1. |
NameEntidades | Loads full customer master data by id. | Lookup for codID=1003 returned address, contacts, VAT, accounting account 2111101003, RGPD fields, payment defaults, and active status. |
Evidence: raw/playwright/workflows/create-customer-20260519T025604Z.json and workflows/create-customer.html.
Supplier Creation AJAX Calls
Verified end to end. Workflow run create-supplier-20260519T030323Z created supplier 100, AI Demo Supplier 20260519T030323Z, and verified it through the supplier grid and supplier master-data lookup.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_SelectFornecedores | Loads and filters the Suppliers grid. | After save, name and VAT searches returned recordsFiltered: 1 and row codterc: 100. |
loadForm | Loads the New Supplier modal. | Posted form=forn, id=novoforn, params=btn_save_new. |
Sel2_Select | Looks up postal code values. | Observed for table=C_Postal, term=2400-002. |
createNovoForn | Creates the supplier record. | Payload included CodPais, NContrib, Nome, Morada, Morada2, Localidade, CodPostal, EMail, phone, mobile, and CodClassif. |
entidades&option=entityContacts | Loads contacts for the supplier detail page. | Called with entity_type=F and entity_id=100; response included phone and SMS/mobile contact entries. |
Sel2_Contas | Resolves the generated accounting account. | Lookup for 2211100100 returned text AI Demo Supplier 20260519T030323Z. |
NameEntidades | Loads full supplier master data by id. | tabla=Forn returned address, contacts, VAT, accounting account, GDPR fields, and active status; tabla=Fornecedor returned []. |
Evidence: raw/playwright/workflows/create-supplier-20260519T030323Z.json and workflows/create-supplier.html.
Contact Creation AJAX Calls
Verified end to end. Workflow run create-contact-20260519T030819Z created contact 27, AI Demo Contact 20260519T030819Z, and verified it through the contact grid and contact master-data lookup.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_SelectContactos | Loads and filters the Contacts grid. | After save, name and VAT searches returned recordsFiltered: 1 and row codcontacto: 27. |
createNovoContacto | Creates the contact record. | Returned {"id":27,...} with VAT, location, postal code, address, name, email, country, phone, mobile, and GDPR processing fields. |
Sel2_Select | Looks up postal codes and contact selector rows. | Observed for table=C_Postal, term=2400-003, and for table=contactos, term=27. |
counters&option=contactos | Loads counts for contact tabs. | Observed for related_entities and anexos with terceiro=27. |
counters&option=tickets_abertos | Loads open-ticket count for the contact. | Called with entity_type=T and entity_code=27. |
Sel2_Select_arrays | Resolves the contact in all-entities selectors. | Called with aent.tipo=T and returned row text AI Demo Contact 20260519T030819Z. |
NameEntidades | Loads full contact master data by id. | tabla=Contactos returned address, contacts, VAT, GDPR fields, and active status; tabla=Contacto returned []. |
Evidence: raw/playwright/workflows/create-contact-20260519T030819Z.json and workflows/create-contact.html.
Prospect Creation AJAX Calls
Verified end to end. Workflow run create-prospect-20260519T031326Z created prospect 22, AI Demo Prospect 20260519T031326Z, and verified it through the prospect grid and prospect master-data lookup.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_Select_Prospects | Loads and filters the Prospects grid. | After save, name and VAT searches returned recordsFiltered: 1 and row codterc: 22. |
loadForm | Loads the New Prospect modal. | Posted form=prospect, id=novoprospect, params=btn_save_new. |
createNovoProspect | Creates the prospect record. | Returned {"id":22,...} with TipoCliente=E, TipoProv=C, CodClassif=CF, CodFormaPag=PP, Activo=T, contact fields, and RGPD defaults. |
Sel2_Select | Looks up postal code values. | Observed for table=C_Postal, term=2400-004. |
NameEntidades | Loads full prospect master data by id. | tabla=Prospect returned the created prospect. tabla=Cliente with the same id returned an unrelated customer, confirming the prospect table parameter is required. |
Evidence: raw/playwright/workflows/create-prospect-20260519T031326Z.json and workflows/create-prospect.html.
Employee Creation AJAX Calls
Verified end to end. Workflow run create-employee-20260519T031958Z created employee 122, AI Demo Employee 20260519T031958Z, and verified it through the employees grid, employee selector lookup, and employee master-data lookup.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
dt_select_empreg_dep | Loads and filters the Employees grid. | After save, name, name-column, and email searches returned recordsFiltered: 1 and row codempr: 122. |
Sel2_Select_v2 | Loads the permissions dropdown and resolves employee selector rows. | Permissions used table=privsgroups, id=id, and value=name. Employee selector verification used table=empreg, id=CodEmpr, value=Nome, and where[activo]=T. |
/ajaxserver form post with newempregado | Creates the employee record. | Payload included Nome, Morada, Localidade, CodPostal, EMail, CodPais=PT, phone/mobile prefix fields, NCaixa_c=0, and PrivGroup_c=24. |
NameEntidades | Loads full employee master data by id. | tabla=Empreg returned employee 122 with web-login, permission, cash-register, agenda, HR, RGPD, store-access, and series-access fields. tabla=Empregado returned []. |
Evidence: raw/playwright/workflows/create-employee-20260519T031958Z.json and workflows/create-employee.html.
Commercial Record Creation AJAX Calls
Verified end to end. Workflow run create-business-20260519T032902Z created commercial record 15, AI Demo Commercial 20260519T032902Z, and verified it through the Business grid and representative selector lookup.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_Select&table=represnt | Loads the Business/Commercial grid. | The verified list response contained row CodRepres: 15, NContrib: 590329022, Activo: T. |
loadForm | Opens the New Commercial modal. | The route also contains form form_nuevocomerciai in the DOM. The modal id is nuevocomerciai. |
createNovoComercial | Creates the commercial/representative record. | Payload included NContrib, Nome, Morada, Localidade, CodPostal, CodPais=PT, EMail, phone, and mobile. |
entidades&option=entityContacts | Loads contact cards on the created record detail page. | Called with entity_type=R and entity_id=15; response included phone and SMS/mobile contact entries. |
Sel2_Select_arrays | Resolves the commercial record in all-entities selectors. | Called with aent.tipo=R and returned the created name for id 15. |
Sel2_Select_v2 | Resolves representative selectors. | Lookup with table=represnt, id=CodRepres, value=Nome, and term=15 returned the created commercial record. |
NameEntidades | Commercial table-name probes. | tabla=Represnt, tabla=Repres, and tabla=Comercial returned []; this workflow should use the list and selector endpoints for verification. |
Evidence: raw/playwright/workflows/create-business-20260519T032902Z.json and workflows/create-business.html.
GDPR Request Creation AJAX Calls
Verified end to end. Workflow run create-gdpr-request-20260519T033345Z created GDPR Look-up request 9, create-gdpr-portability-request-20260519T091329Z created Portability request 10, create-gdpr-anonymity-request-20260519T091554Z created Anonymity request 11, and create-gdpr-other-request-20260520T004853Z created Other request 12, all for customer 1003.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
gdpr&option=DT_list_gdpr_req | Loads and filters the GDPR request grid. | Called with join_entities=1, date range, request type, entity type, entity, and status filters. Verified responses returned request 9, request 10, request 11, and request 12. |
create_gdpr_req | Creates the GDPR request. | Payload is sent as encoded form=... query data and includes terc_type=C, terc_id=1003, req_by, user_document, req_type, and req_text=<br>. Look-up used req_type=1; Portability used req_type=2; Anonymity used req_type=3; Other used req_type=1000. All responses were {"success":true}. |
status_estado SQL expression in list request | Derives request status display code. | The observed list columns include CASE WHEN status = 0 THEN 'I' WHEN status = 1 THEN 'D' ELSE 'E' END AS status_estado. The created request returned status=0 and status_estado=I. |
Evidence: raw/playwright/workflows/create-gdpr-request-20260519T033345Z.json, raw/playwright/workflows/create-gdpr-portability-request-20260519T091329Z.json, raw/playwright/workflows/create-gdpr-anonymity-request-20260519T091554Z.json, raw/playwright/workflows/create-gdpr-other-request-20260520T004853Z.json, and workflows/create-gdpr-request.html.
Pro-Forma Invoice FP AJAX Calls
Verified end to end. Workflow run proforma-invoice-fp-20260520T002252Z created pro-forma invoice 999900066 / FP 9999/66 for customer 910. The document remained open and did not change stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=FactP | Loads and verifies pro-forma invoices. | Called with typesaft=WPF, tipoop=FP, actualizacc=F, recibo=F, and oficinas=F. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
findDocsPendentes | Checks customer pending documents. | Called during customer selection and returned true for the demo customer. |
loadArtigoReducido | Loads article data for FP. | Called with query=AI-DEMO-20260519-021105, compras=F, actualizastocks=F, and tipoop=FP. |
insertLinhaTabDoc | Inserts pro-forma line. | Payload used article AI-DEMO-20260519-021105, customer 910, warehouse 1, and quantity 1. |
create_document&option=calcular_totais | Calculates FP totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
checkProfitMargins | Validates margin rules. | Called before save against the temporary table. |
saveDocument | Saves the FP document. | Response: {"return":"999900066%OK&=&OKDOC&=&","print_documents":[]}. |
dt_list_recalc_stock_articles_lojas | Checks stock after save. | Warehouse 1 stock stayed -41. |
Evidence: raw/playwright/workflows/proforma-invoice-fp-20260520T002252Z.json and workflows/create-proforma-invoice.html.
Pro-Forma Invoice FP Cancellation AJAX Calls
Verified end to end. Workflow run cancel-proforma-invoice-fp-20260520T002319Z cancelled pro-forma invoice 999900066 / FP 9999/66 and verified stock stayed unchanged.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
podeAnularDoc | Checks cancellation permission before opening the final confirmation. | Called with num=999900066 and tipoop=FP. Response body: {"succeeded":true,"message":null,"params":null}. |
Sel2_Select_v2&table=motivos_docs | Loads active cancellation reasons. | Called with where[is_anulacao]=1, where[activo]=1, and term 1. Returned reason 1 / Erro de faturacao. |
deleteDocument | Cancels the pro-forma invoice. | POST payload included num=999900066, tipoop=FP, id_motivo_anulacao=1, anulacao=Erro de faturacao, and tot_fin=1.97. Response body: {"success":true}. |
DT_List_Documentos&table=FactP | Verifies the FP list row. | After cancellation, search for 999900066 returned estado=ANU, desig_estado=Canceled, total 1.97, ValorPago=0, and pending value 1.97. |
dt_list_recalc_stock_articles_lojas | Checks stock after FP cancellation. | Warehouse 1 stock for AI-DEMO-20260519-021105 stayed -41. |
Evidence: raw/playwright/workflows/cancel-proforma-invoice-fp-20260520T002319Z.json and workflows/cancel-proforma-invoice.html.
Converted Pro-Forma FT Draft Finalization AJAX Calls
Verified end to end. Workflow run finalize-converted-proforma-invoice-draft-20260519T170759Z created source pro-forma 999900063 / FP 9999/63, converted it into FT draft 463, and saved the draft as final invoice 999901670 / FT 9999/1670.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
facturardoc | Creates the FT draft from the source pro-forma. | Payload used tipoopdest=ft, tipoop=FP, and source num=999900063. Response opened draft 463. |
listaTabDocumento | Loads copied FT draft lines. | The copied line preserved ndocori=999900063, tipodocori=FP, and linhandocori=1. |
saveDocument | Saves the converted FT draft as a final invoice. | Response was {"return":"999901670%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Checks final FT list state. | Search returned FT 9999/1670, ABR / Open, total 1.97, and paid value 0. |
Evidence: raw/playwright/workflows/finalize-converted-proforma-invoice-draft-20260519T170759Z.json and workflows/finalize-converted-proforma-invoice-draft.html.
Converted Pro-Forma FR Draft Finalization AJAX Calls
Verified end to end. Workflow run finalize-converted-proforma-invoice-receipt-draft-20260519T171230Z created source pro-forma 999900064 / FP 9999/64, converted it into FR draft 463, recorded payment, and saved the draft as final invoice / receipt 999900844 / FR 9999/844.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
facturardoc | Creates the FR draft from the source pro-forma. | Payload used tipoopdest=fr, tipoop=FP, and source num=999900064. Response opened draft 463. |
listaTabDocumento | Loads copied FR draft lines. | The copied line preserved ndocori=999900064, tipodocori=FP, and linhandocori=1. |
payment&option=add | Adds the FR payment line before final save. | The payment modal saved [NUM] Numerário for 1.97. |
saveDocument | Saves the converted FR draft as a final invoice / receipt. | Response was {"return":"999900844%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Checks final FR list state. | Search returned FR 9999/844, LIQ / Finished, total 1.97, and paid value 1.97. |
Evidence: raw/playwright/workflows/finalize-converted-proforma-invoice-receipt-draft-20260519T171230Z.json and workflows/finalize-converted-proforma-invoice-receipt-draft.html.
Converted Pro-Forma ENC Draft Finalization AJAX Calls
Verified end to end. Workflow run finalize-converted-proforma-sales-order-draft-20260519T171841Z created source pro-forma 999900065 / FP 9999/65, converted it into ENC draft 463, and saved the draft as final sales order 999900109 / ENC 9999/109.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
facturardoc | Creates the ENC draft from the source pro-forma. | Payload used tipoopdest=enc, tipoop=FP, and source num=999900065. Response opened draft 463. |
listaTabDocumento | Loads copied ENC draft lines. | The copied line preserved ndocori=999900065, tipodocori=FP, and linhandocori=1. |
saveDocument | Saves the converted ENC draft as a final sales order. | Response was {"return":"999900109%&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Checks final ENC list state. | Search returned ENC 9999/109, ABR / Open, total 1.97, and paid value 0. |
Evidence: raw/playwright/workflows/finalize-converted-proforma-sales-order-draft-20260519T171841Z.json and workflows/finalize-converted-proforma-sales-order-draft.html.
Simplified Invoice FS AJAX Calls
Verified end to end. Workflow run simplified-invoice-fs-20260519T043414Z created simplified invoice 999900008 / FS 9999/8 for customer 910. The document required payment, finished paid, and reduced stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=FactSim | Loads and verifies simplified invoices. | Called with typesaft=FS, tipoop=FS, recibo=F, and oficinas=F. Search for 999900008 returned the created FS row. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
DT_Select_AdiantamentosClientes | Checks customer advances. | Returned an available FR advance row for customer 910, which the workflow did not apply. |
loadArtigoReducido | Loads article data for FS. | Called with query=AI-DEMO-20260519-021105, compras=F, actualizastocks=T, and tipoop=FS. |
insertLinhaTabDoc | Inserts simplified invoice line. | Payload used temporary table 45844, article AI-DEMO-20260519-021105, customer 910, warehouse 1, and quantity 1. |
create_document&option=calcular_totais | Calculates FS totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
checkProfitMargins | Validates margin rules. | Called against table 45844 before save. |
payment&option=validate | Validates whether the FS can save with current payments. | First returned valid:"NONE" when no payment existed; after NUM payment it returned valid:true and troco=0. |
payment&option=add | Adds the cash payment line. | Returned success:true and a payment form row with NUM value 1.97. |
saveDocument | Saves the FS simplified invoice. | Response: {"return":"999900008%OK&=&OKDOC&=&","print_documents":[]}. |
payment&option=get_payment | Loads final payment card. | Final view showed [NUM] Numerário, [CXC] Caixa Defeito - Caixa Colaborador Demo, date 19/05/2026, and value 1.97. |
dt_list_recalc_stock_articles_lojas | Checks stock after FS finalization. | Warehouse 1 stock changed from 1 to 0. |
Evidence: raw/playwright/workflows/simplified-invoice-fs-20260519T043414Z.json and workflows/create-simplified-invoice.html.
Receipt R AJAX Calls
Verified end to end. Workflow run receipt-r-20260519T042639Z created receipt 999900245 / R 9999/245 and settled source invoice 999901666 / FT 9999/1666.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadTabDocumentoRecibo | Loads receipt working table for selected customer. | Called with customer 910, temporary table 45779, tipoop=R, and date 19/05/2026. |
listaTabDocumentoRecibo | Loads pending or selected receipt rows. | estado=F returned open customer documents; estado=T returned selected-to-pay rows. |
changeEstadoRecibo | Moves a pending source document into the receipt. | Verified payload used id=45779, style=ADV2, listado[]=1, and response {"success":true}. |
payment&option=add | Adds the payment line. | Payload used modopagamento=NUM, modobase=N, total=1.97, tipoop=R, and customer 910. |
payment&option=validate | Checks that receipt payment covers the selected total. | Returned valid:true, troco=0, and mbway=false. |
saveDocumentRecibo | Saves the receipt. | Response: {"return":"999900245&=&OKDOC&=&&=&OKDOC&=&"}. |
payment&option=get_payment | Loads final receipt payment card. | Final view showed [NUM] Numerário, [CXC] Caixa Defeito - Caixa Colaborador Demo, date 19/05/2026, and value 1.97. |
DT_List_Documentos&table=Recibos | Verifies the receipt list. | Search for 999900245 returned R 9999/245, status F / Closed, total 1.97. |
DT_List_Documentos&table=Fact | Verifies the settled invoice. | Search for 999901666 returned status LIQ / Finished, ValorPago=1.97, pending 0.00. |
Evidence: raw/playwright/workflows/receipt-r-20260519T042639Z.json, raw/playwright/workflows/receipt-r-20260519T042639Z-recovery.json, and workflows/create-receipt.html.
Receipt Partial Payment Validation AJAX Calls
Verified end to end. Workflow run receipt-r-partial-payment-validation-20260519T232700Z selected source invoice 999901704 / FT 9999/1704, added NUM 1.00 against 1.97, attempted payment save, and confirmed final receipt save was blocked.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
changeEstadoRecibo | Moves the source invoice into the receipt settlement grid. | Selected source FT 9999/1704 for customer 910. |
payment&option=add | Adds the short receipt payment row. | Payload used modopagamento=NUM, total=1.00, tipoop=R, and customer 910. |
payment&option=validate | Checks whether current payment covers the selected receipt total. | Returned valid:false, message The payment is equal to or greater than the total document, and troco=-0.97. |
DT_List_Documentos&table=Fact | Verifies the source invoice state after blocked payment. | Search for 999901704 returned status ABR / Open, ValorPago=0, pending 1.97. |
Evidence: raw/playwright/workflows/receipt-r-partial-payment-validation-20260519T232700Z.json and workflows/handle-receipt-partial-payment.html.
Receipt Partial Payment Correction Calls
Verified end to end. Workflow run receipt-r-fix-partial-payment-20260519T233330Z edited an existing short R payment row to the selected invoice total, validated payment, saved the receipt, and verified source invoice settlement.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
changeEstadoRecibo | Moves the source invoice into the receipt settlement grid. | Selected source FT 9999/1705 for customer 910. |
payment&option=add | Adds the initial short payment row. | Created NUM row value 1.00 against selected total 1.97. |
payment&option=validate | Blocks the short payment. | First returned valid:false and troco=-0.97. |
payment&option=validate | Validates the corrected payment. | After editing the row to 1.97, returned valid:true and troco=0. |
saveDocumentRecibo | Saves the receipt after corrected payment. | Response returned 999900249 and OKDOC, then opened /vendas/r/view/OTk5OTAwMjQ5. |
DT_List_Documentos&table=Recibos | Verifies the receipt list. | Search for 999900249 returned R 9999/249, status F / Closed, total 1.97. |
DT_List_Documentos&table=Fact | Verifies the settled source invoice. | Search for 999901705 returned status LIQ / Finished, ValorPago=1.97, pending 0.00. |
Evidence: raw/playwright/workflows/receipt-r-fix-partial-payment-20260519T233330Z.json and workflows/fix-receipt-partial-payment.html.
Receipt Split Payment AJAX Calls
Verified end to end. Workflow run receipt-r-split-payment-20260519T230946Z created receipt 999900247 / R 9999/247 with NUM 1.00 plus TRA 0.97, settling source invoice 999901701 / FT 9999/1701.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
changeEstadoRecibo | Moves the source invoice into the receipt settlement grid. | Selected source FT 9999/1701 for customer 910. |
payment&option=add | Adds the first receipt payment row. | Payload used modopagamento=NUM, total=1.00, tipoop=R, and customer 910. |
payment&option=add | Adds the second receipt payment row. | Payload used modopagamento=TRA, total=0.97, tipoop=R, and customer 910. |
payment&option=validate | Checks that combined payment covers the selected receipt total. | Returned valid:true, troco=0, and payment total 1.97. |
saveDocumentRecibo | Saves the receipt. | Response returned 999900247 and OKDOC, then opened /vendas/r/view/OTk5OTAwMjQ3. |
DT_List_Documentos&table=Recibos | Verifies the receipt list. | Search for 999900247 returned R 9999/247, status F / Closed, total 1.97. |
DT_List_Documentos&table=Fact | Verifies the settled invoice. | Search for 999901701 returned status LIQ / Finished, ValorPago=1.97, pending 0.00. |
Evidence: raw/playwright/workflows/receipt-r-split-payment-20260519T230946Z.json and workflows/create-receipt-split-payment.html.
Receipt Overpayment AJAX Calls
Verified end to end. Workflow run receipt-r-overpayment-20260519T231638Z created receipt 999900248 / R 9999/248 with NUM 2.00 against a 1.97 value to pay, settling source invoice 999901702 / FT 9999/1702.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
changeEstadoRecibo | Moves the source invoice into the receipt settlement grid. | Selected source FT 9999/1702 for customer 910. |
payment&option=add | Adds the overpayment row. | Payload used modopagamento=NUM, total=2.00, tipoop=R, and customer 910. |
payment&option=validate | Checks that the payment covers the selected receipt total and calculates change. | Returned valid:true, troco=0.03, and payment total 2.00. |
saveDocumentRecibo | Saves the receipt. | Response returned 999900248 and OKDOC, then opened /vendas/r/view/OTk5OTAwMjQ4. |
DT_List_Documentos&table=Recibos | Verifies the receipt list. | Search for 999900248 returned R 9999/248, status F / Closed, total 1.97. |
DT_List_Documentos&table=Fact | Verifies the settled invoice. | Search for 999901702 returned status LIQ / Finished, ValorPago=1.97, pending 0.00. |
Evidence: raw/playwright/workflows/receipt-r-overpayment-20260519T231638Z.json and workflows/create-receipt-overpayment.html.
Receipt Payment Row Deletion AJAX Calls
Verified up to the save boundary. Workflow run receipt-r-delete-payment-row-20260519T232158Z selected source invoice 999901703 / FT 9999/1703, added NUM 1.97, deleted that payment row, and confirmed the source invoice stayed open.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
changeEstadoRecibo | Moves the source invoice into the receipt settlement grid. | Selected source FT 9999/1703 for customer 910. |
payment&option=add | Adds the receipt payment row. | Payload used modopagamento=NUM, total=1.97, tipoop=R, and customer 910. |
payment&option=delete | Deletes one payment row from the modal. | Payload used payment table 55797, compras=F, nseq=1, total=1.97, and edit=F. |
DT_List_Documentos&table=Fact | Verifies the source invoice state after deleting payment. | Search for 999901703 returned status ABR / Open, ValorPago=0, pending 1.97. |
Evidence: raw/playwright/workflows/receipt-r-delete-payment-row-20260519T232158Z.json and workflows/delete-receipt-payment-row.html.
Deferred Receipt RP AJAX Calls
Verified end to end. Workflow run deferred-receipt-rp-20260519T065002Z created deferred receipt 999900009 / RP 9999/9 and settled source invoice 999901667 / FT 9999/1667.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=DocumRP | Loads and verifies deferred receipts. | Called with oficinas=F, recibo=T, actualizacc=T, typesaft=RG, tipoop=RP, and search 999900009. Returned RP 9999/9, ABR / Open, total 1.97, paid 0.00, and pending 1.97. |
loadTabDocumentoRecibo | Loads receipt working table for selected customer. | Called with customer 910, temporary table 47557, tipoop=RP, and date 19/05/2026. |
listaTabDocumentoRecibo | Loads pending or selected receipt rows. | estado=F returned open customer documents; estado=T returned selected-to-pay rows. |
changeEstadoRecibo | Moves a pending source document into the RP. | Verified payload used id=47557, style=ADV2, and selected source FT 9999/1667. |
payment&option=add | Adds the payment line. | Payload used modopagamento=NUM, modobase=N, total=1.97, tipoop=RP, and customer 910. |
payment&option=validate | Checks that payment covers the selected RP total. | The selected payment line was [NUM] Numerario, inbox [0] Caixa 0, value 1.97. |
saveDocumentRecibo | Saves the deferred receipt. | Response: {"return":"999900009&=&OKDOC&=&&=&OKDOC&=&","print_documents":[],"final":"&=&OKDOC&=&"}. |
DT_List_Documentos&table=Fact | Verifies the settled invoice. | Search for 999901667 returned status LIQ / Finished, ValorPago=1.97, pending 0.00. |
Evidence: raw/playwright/workflows/deferred-receipt-rp-20260519T065002Z.json and workflows/create-deferred-receipt-rp.html.
Sales Utility AJAX Calls
Filter behavior verified. Lot Printing and Batch Billing were probed without executing final side-effect actions.
| Page | Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|---|
/vendas/impreslote | listaImpresLote | Loads documents eligible for batch printing. | Default probe sent date_filter_type=date, empty date range with 00:00 to 23:59, nserie=null, table=DocumCI, compras=F, and filtrar=T. Response returned 9 CI rows and changed the button to Print(9). |
/vendas/impreslote | imprimir | Final batch print action configured by page script. | Observed script posts selected document ids, tipoop, oficinas=F, impressao=F, agrupar, docsagrup, tipo_impressao, archive flags derived from print type, and em_lote=T. Not executed. |
/vendas/faturacaolote | get_home_news / notifications | Background page-load AJAX. | Captured during the Batch Billing probe together with the page DOM and filter interaction. |
/vendas/faturacaolote | faturar_lote | Final batch invoice and email action configured by page script. | Observed script posts selected docs, tipoop from tipoDoc, grouping flag agrupar, and serieDoc after confirmation. Not executed because the default filter returned 0 rows and the action may generate invoices and send email. |
Evidence: raw/playwright/vendas-impreslote-interaction-probe.json, raw/playwright/vendas-faturacaolote-interaction-probe.json, workflows/use-lot-printing.html, and workflows/use-batch-billing.html.
Purchase Utility AJAX Calls
Filter behavior verified. Purchase Lot Printing was probed without executing the final print action.
| Page | Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|---|
/compras/impreslote | listaImpresLote | Loads supplier documents eligible for batch printing. | Default probe sent date_filter_type=date, date_time_ini=00:00, date_time_fim=23:59, empty codterc, tipoterc=F, nserie=null, table=documaft, compras=T, and filtrar=T. Response returned {"data":[]}. |
/compras/impreslote | get_home_news / notifications | Background page-load AJAX. | Captured during the Purchase Lot Printing probe together with the page DOM and filter interaction. |
Evidence: raw/playwright/compras-impreslote-interaction-probe.json and workflows/use-purchase-lot-printing.html.
Receipt Reversal RE AJAX Calls
Verified end to end. Workflow run receipt-reversal-re-20260519T044549Z created receipt reversal 999900014 / RE 9999/14 and settled source credit note 999900058 / NC 9999/58.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadTabDocumentoRecibo | Loads receipt-reversal working table for the selected customer. | Called with customer 910, temporary table context, tipoop=RE, and date 19/05/2026. |
listaTabDocumentoRecibo | Loads pending or selected reversal rows. | estado=F returned open credit-note rows for customer 910; estado=T returned selected reversal rows. |
changeEstadoRecibo | Moves a pending source credit note into the reversal. | Verified move selected 999900058 / NC 9999/58 and returned {"success":true}. |
payment&option=add | Adds the reversal payment line. | Payload used modopagamento=NUM, modobase=N, total=74.91, tipoop=RE, and customer 910. |
payment&option=validate | Checks that the reversal payment covers the selected total. | Returned valid:true, troco=0, and mbway=false. |
saveDocumentRecibo | Saves the receipt reversal. | Response: {"return":"999900014&=&OKDOC&=&&=&OKDOC&=&","final":"&=&OKDOC&=&"}. |
payment&option=get_payment | Loads final reversal payment card. | Final view showed [NUM] Numerário and value 74.91. |
DT_List_Documentos&table=RecibosEst | Verifies the RE list. | Called with oficinas=F, recibo=T, actualizacc=T, typesaft=RG, and tipoop=RE. Search for 999900014 returned RE 9999/14, status F / Closed, total 74.91. |
DT_List_Documentos&table=NCred | Verifies the settled credit note. | Search for 999900058 returned status LIQ / Finished, ValorPago=74.91, and pending 0.00. |
Evidence: raw/playwright/workflows/receipt-reversal-re-20260519T044549Z.json and workflows/create-receipt-reversal.html.
Receipt R Cancellation AJAX Calls
Verified end to end. Workflow run cancel-receipt-r-20260519T235225Z created receipt 999900250 / R 9999/250, cancelled it from the R view, and verified source invoice 999901706 / FT 9999/1706 returned to open and unpaid.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
changeEstadoRecibo | Moves the source invoice into the receipt documents grid. | Verified move selected only FT 9999/1706 for customer 910. |
payment&option=add | Adds the receipt payment line. | Payload used modopagamento=NUM, modobase=N, total=1.97, tipoop=R, and customer 910. |
payment&option=validate | Checks that the receipt payment covers the selected total. | Returned valid:true and troco=0. |
saveDocumentRecibo | Saves the receipt. | Response returned 999900250 with OKDOC. Source FT 9999/1706 became LIQ / Finished with ValorPago=1.97. |
podeAnularDoc | Checks whether the receipt can be cancelled. | Request used num=999900250 and tipoop=R. Response returned succeeded:true. |
Sel2_Select_v2 with table=motivos_docs | Loads cancellation reasons for the selector. | The verified run selected reason id 1, Erro de faturacao. |
deleteDocument | Submits the R cancellation. | Payload used action=deleteDocument, num=999900250, tipoop=R, and the serialized R form after reason selection. |
DT_List_Documentos&table=Recibos | Verifies the receipt row after cancellation. | Search for 999900250 returned estado=ANU, desig_estado=Canceled, and total 1.97. |
DT_List_Documentos&table=Fact | Verifies source invoice settlement reversal. | Search for 999901706 returned ABR / Open, ValorPago=0, and pending value 1.97. |
Evidence: raw/playwright/workflows/cancel-receipt-r-20260519T235225Z.json and workflows/cancel-receipt.html.
Receipt Reversal RE Cancellation AJAX Calls
Verified end to end. Workflow run cancel-receipt-reversal-re-20260520T000325Z created receipt reversal 999900015 / RE 9999/15, cancelled it from the RE view, and verified source credit note 999900062 / NC 9999/62 returned to open and unpaid.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
changeEstadoRecibo | Moves the source credit note into the RE documents grid. | Verified move selected only NC 9999/62 for customer 910. |
payment&option=add | Adds the RE payment line. | Payload used modopagamento=NUM, tipoop=RE, and amount 1.97. |
saveDocumentRecibo | Saves the receipt reversal. | Response returned 999900015 with OKDOC. Source NC 9999/62 became LIQ / Finished with ValorPago=1.97. |
podeAnularDoc | Checks whether the RE can be cancelled. | Request used num=999900015 and tipoop=RE. |
Sel2_Select_v2 with table=motivos_docs | Loads cancellation reasons for the selector. | The verified run selected reason id 1, Erro de faturacao. |
deleteDocument | Submits the RE cancellation. | Payload used action=deleteDocument, num=999900015, tipoop=RE, and the serialized RE form after reason selection. |
DT_List_Documentos&table=RecibosEst | Verifies the RE row after cancellation. | Search for 999900015 returned estado=ANU, desig_estado=Canceled, and total 1.97. |
DT_List_Documentos&table=NCred | Verifies source credit-note settlement reversal. | Search for 999900062 returned ABR / Open, ValorPago=0, and pending value 1.97. |
Evidence: raw/playwright/workflows/cancel-receipt-reversal-re-20260520T000325Z.json and workflows/cancel-receipt-reversal.html.
Credit Note NC AJAX Calls
Verified end to end. Workflow run credit-note-nc-20260519T050026Z created credit note 999900059 / NC 9999/59 from source simplified invoice 999900008 / FS 9999/8.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=NCred | Loads and verifies customer credit notes. | Called with typesaft=NC, tipoop=NC, actualizacc=T, and search 999900059. Returned status ABR / Open, total 1.97, and pending 1.97. |
Sel2_Select_v2&table=motivos_docs | Loads selectable NC reasons. | Called with where[is_nc]=1. Observed options included 27 / Adiantamento and 1 / Erro de faturação. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
associar_documento&option=load_modal | Opens the source-document modal. | Verified with tipoop=FS, customer 910, and target tipoopori=NC. |
associar_documento&option=listar_documentos | Lists source documents available to credit. | Before save it returned FS 9999/8; after save it returned {"list":[],"html":""}. |
associar_documento&option=listar_tabela | Loads source lines for selected source documents. | Returned the FS 9999/8 line for article AI-DEMO-20260519-021105, quantity 1, unit price 1.5991869918699, VAT 23. |
associar_documento&option=save_linhas | Copies selected source lines into the NC temporary document table. | Payload contained the association line with source type FS, source number 999900008, source line 1, and target type NC. |
create_document&option=calcular_totais | Calculates NC totals. | Verified gross 1.60, VAT 0.37, total 1.97. |
saveDocument | Saves the credit note. | Response: {"return":"999900059%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos&table=FactSim | Checks the source simplified invoice. | Search for 999900008 still returned LIQ / Finished, paid 1.97, pending 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock after credit-note finalization. | Warehouse 1 stock changed from 0 to 1; order quantities stayed 1. |
Evidence: raw/playwright/workflows/credit-note-nc-20260519T050026Z.json and workflows/create-credit-note.html.
Credit Note NC Cancellation AJAX Calls
Verified end to end. Workflow run cancel-credit-note-nc-20260520T000825Z cancelled credit note 999900062 / NC 9999/62, checked source simplified invoice 999900014 / FS 9999/14, and verified stock movement.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
podeAnularDoc | Checks cancellation permission before opening the final confirmation. | Called with num=999900062 and tipoop=NC. Response body: {"succeeded":true,"message":null,"params":null}. |
Sel2_Select_v2&table=motivos_docs | Loads active cancellation reasons. | Called with where[is_anulacao]=1, where[activo]=1, and term 1. Returned reason 1 / Erro de faturacao. |
deleteDocument | Cancels the credit note. | POST payload included num=999900062, tipoop=NC, id_motivo_anulacao=1, anulacao=Erro de faturacao, and tot_fin=1.97. Response body: {"success":true}. |
DT_List_Documentos&table=NCred | Verifies the NC list row. | After cancellation, search for 999900062 returned estado=ANU, desig_estado=Canceled, total 1.97, ValorPago=0, and pending value 1.97. |
DT_List_Documentos&table=FactSim | Checks the source simplified invoice. | Search for 999900014 returned LIQ / Finished, ValorPago=1.97, and pending value 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock after NC cancellation. | Warehouse 1 stock for AI-DEMO-20260519-021105 changed from -39 to -40. |
Evidence: raw/playwright/workflows/cancel-credit-note-nc-20260520T000825Z.json and workflows/cancel-credit-note.html.
Debit Note ND AJAX Calls
Verified end to end. Workflow run debit-note-nd-20260520T001537Z created debit note 999900005 / ND 9999/5 from source invoice 999901707 / FT 9999/1707.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=NDeb | Loads and verifies customer debit notes. | Called with typesaft=ND, tipoop=ND, actualizacc=T, and search 999900005. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
associar_documento&option=load_modal | Opens the source-document modal. | Verified with tipoop=FT, customer 910, and target tipoopori=ND. |
associar_documento&option=listar_documentos | Lists source documents available for debit-note association. | Before save it returned FT 9999/1707; after save that source was no longer returned for ND association. |
associar_documento&option=listar_tabela | Loads source lines for selected source documents. | Returned the FT 9999/1707 line for article AI-DEMO-20260519-021105, quantity 1, unit price 1.5991869918699, VAT 23. |
associar_documento&option=save_linhas | Copies selected source lines into the ND temporary document table. | Payload contained the association line with source type FT, source number 999901707, source line 1, and target type ND. |
create_document&option=calcular_totais | Calculates ND totals. | Verified gross 1.60, VAT 0.37, total 1.97. |
saveDocument | Saves the debit note. | Response: {"return":"999900005%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos&table=Fact | Checks the source invoice. | Search for 999901707 still returned ABR / Open, paid 0.00, pending 1.97. |
dt_list_recalc_stock_articles_lojas | Checks stock after debit-note finalization. | Warehouse 1 stock stayed -41. |
Evidence: raw/playwright/workflows/debit-note-nd-20260520T001537Z.json and workflows/create-debit-note.html.
Debit Note ND Cancellation AJAX Calls
Verified end to end. Workflow run cancel-debit-note-nd-20260520T001612Z cancelled debit note 999900005 / ND 9999/5, checked source invoice 999901707 / FT 9999/1707, and verified stock stayed unchanged.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
podeAnularDoc | Checks cancellation permission before opening the final confirmation. | Called with num=999900005 and tipoop=ND. Response body: {"succeeded":true,"message":null,"params":null}. |
Sel2_Select_v2&table=motivos_docs | Loads active cancellation reasons. | Called with where[is_anulacao]=1, where[activo]=1, and term 1. Returned reason 1 / Erro de faturacao. |
deleteDocument | Cancels the debit note. | POST payload included num=999900005, tipoop=ND, id_motivo_anulacao=1, anulacao=Erro de faturacao, and tot_fin=1.97. Response body: {"success":true}. |
DT_List_Documentos&table=NDeb | Verifies the ND list row. | After cancellation, search for 999900005 returned estado=ANU, desig_estado=Canceled, total 1.97, ValorPago=0, and pending value 1.97. |
DT_List_Documentos&table=Fact | Checks the source invoice. | Search for 999901707 returned ABR / Open, ValorPago=0, and pending value 1.97. |
dt_list_recalc_stock_articles_lojas | Checks stock after ND cancellation. | Warehouse 1 stock for AI-DEMO-20260519-021105 stayed -41. |
Evidence: raw/playwright/workflows/cancel-debit-note-nd-20260520T001612Z.json and workflows/cancel-debit-note.html.
Shipping Doc GR AJAX Calls
Verified end to end. Workflow run shipping-doc-gr-20260519T051437Z created shipping guide 999900020 / GR 9999/20 for customer 910. The guide remained open and reduced warehouse 1 stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=GRem | Loads and verifies shipping docs. | Called with typesaft=GR, tipoop=GR, actualizacc=F, and search 999900020. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
loadArtigoReducido | Loads article data for GR. | Called for article AI-DEMO-20260519-021105 and returned price, VAT, cost, warehouse, and stock metadata. |
insertLinhaTabDoc | Inserts the GR line. | Payload used the temporary document table, customer 910, article AI-DEMO-20260519-021105, warehouse 1, and quantity 1. |
listaTabDocumento | Loads GR document lines before and after save. | After line insertion it returned the article row with quantity 1, VAT 23, and total with VAT 1.967. |
create_document&option=calcular_totais | Calculates GR totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the GR document. | Response: {"return":"999900020%OK&=&OKDOC&=&","print_documents":[]}. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 stock changed from 1 to 0; customer-order and supplier-order quantities stayed 1. |
Evidence: raw/playwright/workflows/shipping-doc-gr-20260519T051437Z.json and workflows/create-shipping-doc.html.
Transportation Note GT AJAX Calls
Verified end to end. Workflow run transportation-note-gt-20260519T052242Z created transportation note 999900089 / GT 9999/89 for customer 910. The note remained open and did not change warehouse stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=GTrans | Loads and verifies transportation notes. | Called with typesaft=GT, tipoop=GT, actualizacc=F, and search 999900089. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
loadArtigoReducido | Loads article data for GT. | Called with tipoop=GT and actualizastocks=F. Returned article AI-DEMO-20260519-021105, stock 0, price, VAT, cost, warehouse, and order quantities. |
insertLinhaTabDoc | Inserts the GT line. | Payload used the temporary document table, customer 910, article AI-DEMO-20260519-021105, warehouse 1, and quantity 1. |
listaTabDocumento | Loads GT document lines before and after save. | After line insertion it returned the article row with quantity 1, VAT 23, stock 0, and total with VAT 1.967. |
create_document&option=calcular_totais | Calculates GT totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the GT document. | Response: {"return":"999900089%OK&=&OKDOC&=&","print_documents":[]}. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 stock stayed 0; customer-order and supplier-order quantities stayed 1. |
Evidence: raw/playwright/workflows/transportation-note-gt-20260519T052242Z.json and workflows/create-transportation-note.html.
Transportation Note GIP AJAX Calls
Verified end to end. Workflow run transportation-note-gip-20260519T052722Z created transportation note 999900018 / GIP 9999/18 for customer 910. The note remained open and reduced warehouse stock from zero to negative one.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=DocumGIP | Loads and verifies GIP transportation notes. | Called with typesaft=GT, tipoop=GIP, actualizacc=F, and search 999900018. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
loadArtigoReducido | Loads article data for GIP. | Called with tipoop=GIP and actualizastocks=T. Returned article AI-DEMO-20260519-021105, stock 0, price, VAT, cost, warehouse, and order quantities. |
insertLinhaTabDoc | Inserts the GIP line. | Payload used the temporary document table, customer 910, article AI-DEMO-20260519-021105, warehouse 1, and quantity 1. |
listaTabDocumento | Loads GIP document lines before and after save. | After final save the view showed the article row with quantity 1, VAT 23, stock -1, and total with VAT 1.967. |
create_document&option=calcular_totais | Calculates GIP totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the GIP document. | Response: {"return":"999900018%AI-DEMO-20260519-021105:1#&=&OKDOC&=&","print_documents":[]}. This response shape differs from GT and includes an article/quantity token before OKDOC. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 stock changed from 0 to -1; customer-order and supplier-order quantities stayed 1. |
Evidence: raw/playwright/workflows/transportation-note-gip-20260519T052722Z.json, recovered source raw/playwright/workflows/transportation-note-gip-20260519T052722Z-failed.json, and workflows/create-transportation-note-gip.html.
Asset Movement Guide GA AJAX Calls
Verified end to end. Workflow run asset-movement-guide-ga-20260519T053643Z created asset movement guide 999900015 / GA 9999/15 for customer 910. The guide remained open and moved one unit from warehouse 1 to warehouse 2.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=GMovArt | Loads and verifies asset movement guides. | Called with typesaft=GA, tipoop=GA, actualizacc=F, and search 999900015. Returned status ABR / Open, source Armazem de Entradas, destination Armazem de Monos, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
CodLojaEntrada | Sets destination warehouse. | The verified run set CodLojaEntrada=2, and the saved list row returned codlojaentrada: 2. |
loadArtigoReducido | Loads source-warehouse article data for GA. | Called with tipoop=GA, actualizastocks=T, and loja=1. Returned article AI-DEMO-20260519-021105, source stock -1, price, VAT, cost, warehouse, and order quantities. |
insertLinhaTabDoc | Inserts the GA line. | Payload used the temporary document table, customer 910, article AI-DEMO-20260519-021105, source warehouse 1, and quantity 1. |
listaTabDocumento | Loads GA document lines before and after save. | After line insertion it returned the article row with quantity 1, VAT 23, source stock -1, and total with VAT 1.967. |
create_document&option=calcular_totais | Calculates GA totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the GA document. | Response: {"return":"999900015%AI-DEMO-20260519-021105:1#&=&OKDOC&=&","print_documents":[]}. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 changed from -1 to -2; warehouse 2 changed from no article row / 0 to article stock 1. |
Evidence: raw/playwright/workflows/asset-movement-guide-ga-20260519T053643Z.json and workflows/create-asset-movement-guide.html.
Guide to Supplier NGT AJAX Calls
Verified end to end. Workflow run guide-to-supplier-ngt-20260519T054516Z created guide to supplier 999900013 / NGT 9999/13 for supplier 100. The guide remained open and reduced warehouse 2 stock from 1 to 0.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=NGTransF | Loads and verifies guide-to-supplier documents. | Called with typesaft=GT, tipoop=NGT, actualizacc=F, and search 999900013. Returned status ABR / Open, total 1.51, and pending 1.51. |
Sel2_Select_v2&table=forn | Searches supplier entities. | Verified with supplier term 100. |
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236, name AI Demo Supplier 20260519T030323Z, address, seller, and employee context. |
loadArtigoReducido | Loads source-warehouse article data for NGT. | Called with tipoop=NGT, actualizastocks=T, and loja=2. Returned source stock 1 in QtdStockLoja. |
insertLinhaTabDoc | Inserts the NGT line. | Payload used the temporary document table, supplier 100, article AI-DEMO-20260519-021105, warehouse 2, and quantity 1. |
create_document&option=calcular_totais | Calculates NGT totals. | Verified totals were net 1.23, VAT 0.28, and total 1.51. |
saveDocument | Saves the NGT document. | Response: {"return":"999900013%OK&=&OKDOC&=&","print_documents":[]}. Before this response the UI required both stock-movement and final-save confirmations. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 2 changed from 1 to 0; warehouse 1 stayed -2. |
Evidence: raw/playwright/workflows/guide-to-supplier-ngt-20260519T054516Z.json and workflows/create-guide-to-supplier.html.
Consignment Guide GC AJAX Calls
Verified end to end. Workflow run consignment-guide-gc-20260519T055311Z created consignment guide 999900005 / GC 9999/5 for customer 910. The guide remained open and reduced warehouse 1 stock from 2 to 1.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=GConsig | Loads and verifies consignment guides. | Called with typesaft=GC, tipoop=GC, actualizacc=F, and search 999900005. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
loadArtigoReducido | Loads source-warehouse article data for GC. | Called for article AI-DEMO-20260519-021105, warehouse 1, and tipoop=GC. The inserted row recorded source stock 2. |
insertLinhaTabDoc | Inserts the GC line. | Payload used the temporary document table, customer 910, article AI-DEMO-20260519-021105, warehouse 1, and quantity 1. |
create_document&option=calcular_totais | Calculates GC totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the GC document. | Response: {"return":"999900005%OK&=&OKDOC&=&","print_documents":[]}. The UI required the final Are you sure? confirmation. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 changed from 2 to 1; warehouse 2 stayed 0. |
Evidence: raw/playwright/workflows/consignment-guide-gc-20260519T055311Z.json and workflows/create-consignment-guide.html.
Separation Guide GSA AJAX Calls
Verified end to end. Workflow run separation-guide-gsa-20260519T055811Z created separation guide 999900001 / GSA 9999/1 for customer 910. The guide remained open, recorded origin and destination warehouses, and did not change the stock recalculation rows.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=documgsa | Loads and verifies separation guides. | Called with typesaft=GA, tipoop=GSA, actualizacc=F, and search 999900001. Returned status ABR / Open, origin Armazem de Entradas, destination Armazem de Monos, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 replaced the inactive default customer and populated VAT 509031862, address, seller, and employee context. |
CodLojaEntrada | Sets destination warehouse. | The verified run set CodLojaEntrada=2, and the saved list row returned codlojaentrada: 2. |
loadArtigoReducido | Loads source-warehouse article data for GSA. | Called for article AI-DEMO-20260519-021105, warehouse 1, and tipoop=GSA. The inserted row recorded source stock 1. |
insertLinhaTabDoc | Inserts the GSA line. | Payload used the temporary document table, customer 910, article AI-DEMO-20260519-021105, source warehouse 1, and quantity 1. |
create_document&option=calcular_totais | Calculates GSA totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the GSA document. | Response: {"return":"999900001%OK&=&OKDOC&=&","print_documents":[]}. The UI required the final Are you sure? confirmation. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 stayed 1; warehouse 2 stayed 0. |
Evidence: raw/playwright/workflows/separation-guide-gsa-20260519T055811Z.json and workflows/create-separation-guide.html.
Internal Doc GS AJAX Calls
Verified end to end. Workflow run internal-doc-gs-20260519T060333Z created internal document 999900021 / GS 9999/21 for customer 910. The document remained open, left physical stock unchanged, and increased customer-order quantity.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=DocumGS | Loads and verifies GS documents. | Called with typesaft=WNE, tipoop=GS, actualizacc=F, and search 999900021. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
loadArtigoReducido | Loads source-warehouse article data for GS. | Called for article AI-DEMO-20260519-021105, warehouse 1, and tipoop=GS. The inserted row recorded source stock 1. |
insertLinhaTabDoc | Inserts the GS line. | Payload used the temporary document table, customer 910, article AI-DEMO-20260519-021105, warehouse 1, quantity 1, and estimated date 2026-05-19. |
create_document&option=calcular_totais | Calculates GS totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the GS document. | Response: {"return":"999900021%&=&OKDOC&=&","print_documents":[]}. The UI required the final Are you sure? confirmation. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 physical stock stayed 1; qtd_enc_cliente changed from 1 to 2. |
Evidence: raw/playwright/workflows/internal-doc-gs-20260519T060333Z.json and workflows/create-internal-doc-gs.html.
C. Interno CI AJAX Calls
Verified end to end. Workflow run internal-invoice-ci-20260519T060951Z created internal invoice 999900009 / CI 9999/9 for customer 910. The document remained open, used vehicle/entity and delivery-method form context, and reduced warehouse 1 physical stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=DocumCI | Loads and verifies CI documents. | Called with oficinas=T, recibo=F, actualizacc=T, typesaft=FT, tipoop=CI, and search 999900009. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
findDocsPendentes | Checks pending customer documents. | Called with cliente=910 during customer selection. |
loadArtigoReducido | Loads stock-updating sales article data for CI. | Called for article AI-DEMO-20260519-021105, warehouse 1, actualizastocks=T, and tipoop=CI. |
insertLinhaTabDoc | Inserts the CI line. | Payload used temporary table 47273, article AI-DEMO-20260519-021105, customer 910, warehouse 1, quantity 1, payment term PP, currency EUR, and document type CI. |
create_document&option=calcular_totais | Calculates CI totals. | Verified totals were net 1.60, VAT 0.37, retention 0.00, and total 1.97. A first calculation request carried retencao=25, but after customer/line selection later calculations used retencao=0. |
checkProfitMargins | Validates margin rules. | Called against table 47273 before the final save. |
saveDocument | Saves the CI document. | Response: {"return":"999900009%OK&=&OKDOC&=&","print_documents":[]}. The form included TipoOp=CI, imprimirviatura=on, delivery fields, customer 910, reference AI-CI-20260519T060951Z, and totals. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 physical stock changed from 1 to 0; qtd_enc_cliente stayed 2; qtd_enc_forn stayed 1. |
Evidence: raw/playwright/workflows/internal-invoice-ci-20260519T060951Z.json and workflows/create-internal-invoice-ci.html.
Recuperacao FTM AJAX Calls
Verified end to end. Workflow run recovery-ftm-20260519T061803Z created recovery invoice 999900016 / FTM 9999/16 for customer 910. The document remained open, used vehicle/entity and delivery-method form context, and reduced warehouse 1 physical stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=DocumFTM | Loads and verifies FTM documents. | Called with oficinas=T, recibo=F, actualizacc=T, typesaft=FT, tipoop=FTM, and search 999900016. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
findDocsPendentes | Checks pending customer documents. | Called with cliente=910 during customer selection. |
loadArtigoReducido | Loads stock-updating sales article data for FTM. | Called for article AI-DEMO-20260519-021105, warehouse 1, actualizastocks=T, and tipoop=FTM. |
insertLinhaTabDoc | Inserts the FTM line. | Payload used temporary table 47295, article AI-DEMO-20260519-021105, customer 910, warehouse 1, quantity 1, payment term PP, currency EUR, and document type FTM. |
create_document&option=calcular_totais | Calculates FTM totals. | Verified totals were net 1.60, VAT 0.37, retention 0.00, and total 1.97. |
checkProfitMargins | Validates margin rules. | Called against table 47295 before the final save. |
saveDocument | Saves the FTM document. | Response: {"return":"999900016%OK&=&OKDOC&=&","print_documents":[]}. The form included TipoOp=FTM, imprimirviatura=on, delivery fields, customer 910, reference AI-FTM-20260519T061803Z, and totals. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 physical stock changed from 2 to 1; qtd_enc_cliente stayed 2; qtd_enc_forn stayed 1. |
Evidence: raw/playwright/workflows/recovery-ftm-20260519T061803Z.json and workflows/create-recovery-ftm.html.
Reparacao Molde OR AJAX Calls
Verified end to end. Workflow run mold-repair-or-20260519T062304Z created mold repair document 999900003 / OR 9999/3 for customer 910. The document remained open, left physical stock unchanged, and increased customer-order quantity.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=DocumOR | Loads and verifies OR documents. | Called with oficinas=F, recibo=F, actualizacc=F, typesaft=WNE, tipoop=OR, and search 999900003. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
findDocsPendentes | Checks pending customer documents. | Called with cliente=910 during customer selection. |
loadArtigoReducido | Loads non-stock-updating article data for OR. | Called for article AI-DEMO-20260519-021105, warehouse 1, actualizastocks=F, and tipoop=OR. |
insertLinhaTabDoc | Inserts the OR line. | Payload used temporary table 47325, article AI-DEMO-20260519-021105, customer 910, warehouse 1, quantity 1, payment term PP, and document type OR. |
create_document&option=calcular_totais | Calculates OR totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the OR document. | Response: {"return":"999900003%&=&OKDOC&=&","print_documents":[]}. The UI required the final Are you sure? confirmation. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 physical stock stayed 1; qtd_enc_cliente changed from 2 to 3; qtd_enc_forn stayed 1. |
Evidence: raw/playwright/workflows/mold-repair-or-20260519T062304Z.json and workflows/create-mold-repair-or.html.
Damages RMA AJAX Calls
Verified end to end. Workflow run damages-rma-20260519T062812Z created damages document 999900009 / RMA 9999/9 for customer 910. The document remained open, left physical stock unchanged, and increased customer-order quantity.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=DocumRMA | Loads and verifies RMA documents. | Called with oficinas=F, recibo=F, actualizacc=F, typesaft=WNE, tipoop=RMA, and search 999900009. Returned status ABR / Open, total 1.97, and pending 1.97. |
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
findDocsPendentes | Checks pending customer documents. | Called with cliente=910 during customer selection. |
loadArtigoReducido | Loads non-stock-updating article data for RMA. | Called for article AI-DEMO-20260519-021105, warehouse 1, actualizastocks=F, and tipoop=RMA. |
insertLinhaTabDoc | Inserts the RMA line. | Payload used temporary table 47394, article AI-DEMO-20260519-021105, customer 910, warehouse 1, quantity 1, payment term PP, and document type RMA. |
create_document&option=calcular_totais | Calculates RMA totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the RMA document. | Response: {"return":"999900009%&=&OKDOC&=&","print_documents":[]}. The UI required the final Are you sure? confirmation. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 physical stock stayed 1; qtd_enc_cliente changed from 3 to 4; qtd_enc_forn stayed 1. |
Evidence: raw/playwright/workflows/damages-rma-20260519T062812Z.json and workflows/create-damages-rma.html.
Zoom Level PRE AJAX Calls
Verified end to end. Workflow run zoom-level-pre-20260519T064145Z created PRE document 999900079 / PRE 9999/79 for customer 910. The document finished as paid and increased physical stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_Documentos&table=DocumPRE | Loads and verifies PRE documents. | Called with oficinas=F, recibo=F, actualizacc=T, typesaft=NC, tipoop=PRE, and search 999900079. Returned LIQ / Finished, total 1.97, paid 1.97, and pending 0.00. |
Sel2_Select_v2&table=motivos_docs | Loads PRE/NC reason options. | Called with where[is_nc]=1; the verified run used reason 1, Erro de faturacao. |
loadArtigoReducido | Tests direct article loading for PRE. | Direct insertion with tipoop=PRE returned no insertable article row, so the successful workflow used source association. |
associar_documento&option=load_modal | Opens source association. | Loaded the association modal for source type FS, customer 910, and PRE temporary table. |
associar_documento&option=listar_documentos | Lists eligible source documents. | Probe showed source candidates for customer 910, including FS 9999/8, FT 9999/1666, and FR 9999/841. |
associar_documento&option=save_linhas | Copies source line into the PRE draft. | Saved FS_999900008_1 for article AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, and VAT 23%. |
create_document&option=calcular_totais | Calculates PRE totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
payment&option=validate | Validates payment before PRE finalization. | The form opened the payment modal; after adding NUM for 1.97, save proceeded. |
saveDocument | Saves the PRE document. | Response: {"return":"999900079%OK&=&OKDOC&=&","print_documents":[]}. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after save. | Warehouse 1 physical stock changed from 1 to 2; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 1. |
Evidence: raw/playwright/workflows/zoom-level-pre-20260519T064145Z.json and workflows/create-zoom-level-pre.html.
Quotation ORC AJAX Calls
Verified end to end. Workflow run quotation-orc-20260520T004056Z created quotation 999900095 / ORC 9999/95 for customer 910. The quotation remained open and did not change stock or order quantities.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
findDocsPendentes | Checks pending customer documents. | Called with cliente=910 during customer selection. |
loadArtigoReducido | Loads sales article data for the quotation. | Called with query=AI-DEMO-20260519-021105, compras=F, actualizastocks=F, and tipoop=ORC. |
insertLinhaTabDoc | Inserts quotation line. | Payload used temporary table 45759, article AI-DEMO-20260519-021105, customer 910, warehouse 1, and quantity 1. |
create_document&option=calcular_totais | Calculates ORC totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
checkProfitMargins | Validates margin rules. | Called against table 45759 before save. |
saveDocument | Saves the ORC quotation. | Response: {"return":"999900095%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Verifies the quotation list. | Search for 999900095 returned ABR / Open, ValorPago=0, total 1.97, and reference AI-ORC-20260520T004056Z. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after quotation save. | Warehouse 1 physical stock stayed -41; qtd_enc_cliente stayed 5; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/quotation-orc-20260520T004056Z.json and workflows/create-quotation.html.
Quotation ORC Cancellation AJAX Calls
Verified end to end. Workflow run cancel-quotation-orc-20260520T004120Z cancelled quotation 999900095 / ORC 9999/95. The verified ORC run did not capture podeAnularDoc or a cancellation-reason lookup; the view script called btnDelete('Anular') and opened the irreversible confirmation directly.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
deleteDocument | Cancels the ORC quotation. | Payload used num=999900095, tipoop=ORC, serialized form data with empty anulacao=, and tot_fin=1.97. Response returned success. |
DT_List_Documentos | Verifies list state after cancellation. | Search for 999900095 returned ANU / Canceled, ValorPago=0, pending value 1.97, and reference AI-ORC-20260520T004056Z. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after cancellation. | Warehouse 1 stock stayed -41; qtd_enc_cliente stayed 5; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/cancel-quotation-orc-20260520T004120Z.json and workflows/cancel-quotation.html.
Quotation ORC to Invoice FT Draft AJAX Calls
Verified to draft. Workflow run quotation-to-invoice-draft-20260519T160923Z created source quotation 999900089 / ORC 9999/89, converted it with the To convert / Invoice action, and opened FT draft 458. The FT invoice was not finalized.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
saveDocument | Creates the source ORC quotation. | Response contained 999900089%OK&=&OKDOC&=&. |
facturardoc | Creates the target document draft from the source quotation. | Payload used tipoopdest=ft, tipoop=ORC, and num=999900089. Response was "OK:458:vendas". |
listaTabDocumento | Loads copied FT draft lines after opening the draft route. | The copied line preserved ndocori=999900089, tipodocori=ORC, and linhandocori=1. |
dt_list_drafts | Checks generated FT drafts. | Called with search[TipoOp]=FT and typesaft=FT after conversion. |
DT_List_Documentos | Checks source ORC state after draft creation. | The source ORC row still returned ABR / Open, total 1.97, paid 0. |
Evidence: raw/playwright/workflows/quotation-to-invoice-draft-20260519T160923Z.json and workflows/convert-quotation-to-invoice-draft.html.
Converted Quotation FT Draft Finalization AJAX Calls
Verified end to end. Workflow run finalize-converted-quotation-invoice-draft-20260519T165348Z created source quotation 999900092 / ORC 9999/92, converted it into FT draft 463, and saved the draft as final invoice 999901669 / FT 9999/1669.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
facturardoc | Creates the FT draft from the source quotation. | Payload used tipoopdest=ft, tipoop=ORC, and source num=999900092. Response opened draft 463. |
listaTabDocumento | Loads copied FT draft lines. | The copied line preserved ndocori=999900092, tipodocori=ORC, and linhandocori=1. |
saveDocument | Saves the converted FT draft as a final invoice. | Response was {"return":"999901669%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Checks final FT list state. | Search returned FT 9999/1669, ABR / Open, total 1.97, and paid value 0. |
Evidence: raw/playwright/workflows/finalize-converted-quotation-invoice-draft-20260519T165348Z.json and workflows/finalize-converted-quotation-invoice-draft.html.
Quotation ORC to Invoice / Receipt FR Draft AJAX Calls
Verified to draft. Workflow run quotation-to-invoice-receipt-draft-20260519T162111Z created source quotation 999900090 / ORC 9999/90, converted it with the To convert / Invoice / Receipt action, and opened FR draft 460. The FR invoice / receipt was not finalized or paid.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
saveDocument | Creates the source ORC quotation. | Response contained 999900090%OK&=&OKDOC&=&. |
facturardoc | Creates the target document draft from the source quotation. | Payload used tipoopdest=fr, tipoop=ORC, and num=999900090. Response was "OK:460:vendas". |
listaTabDocumento | Loads copied FR draft lines after opening the draft route. | The copied line preserved ndocori=999900090, tipodocori=ORC, and linhandocori=1. |
dt_list_drafts | Checks generated FR drafts. | Called with search[TipoOp]=FR and typesaft=FR after conversion. |
DT_List_Documentos | Checks source ORC state after draft creation. | The source ORC row still returned ABR / Open, total 1.97, paid 0. |
Evidence: raw/playwright/workflows/quotation-to-invoice-receipt-draft-20260519T162111Z.json and workflows/convert-quotation-to-invoice-receipt-draft.html.
Converted Quotation FR Draft Finalization AJAX Calls
Verified end to end. Workflow run finalize-converted-quotation-invoice-receipt-draft-20260519T165805Z created source quotation 999900093 / ORC 9999/93, converted it into FR draft 463, recorded payment, and saved the draft as final invoice / receipt 999900843 / FR 9999/843.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
facturardoc | Creates the FR draft from the source quotation. | Payload used tipoopdest=fr, tipoop=ORC, and source num=999900093. Response opened draft 463. |
listaTabDocumento | Loads copied FR draft lines. | The copied line preserved ndocori=999900093, tipodocori=ORC, and linhandocori=1. |
payment&option=add | Adds the FR payment line before final save. | The payment modal saved [NUM] Numerário for 1.97. |
saveDocument | Saves the converted FR draft as a final invoice / receipt. | Response was {"return":"999900843%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Checks final FR list state. | Search returned FR 9999/843, LIQ / Finished, total 1.97, and paid value 1.97. |
Evidence: raw/playwright/workflows/finalize-converted-quotation-invoice-receipt-draft-20260519T165805Z.json and workflows/finalize-converted-quotation-invoice-receipt-draft.html.
Quotation ORC to Sales Order ENC Draft AJAX Calls
Verified to draft. Workflow run quotation-to-sales-order-draft-20260519T163135Z created source quotation 999900091 / ORC 9999/91, converted it with the To convert / Internal Doc action, and opened ENC draft 462. The sales order was not finalized.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
saveDocument | Creates the source ORC quotation. | Response contained 999900091%OK&=&OKDOC&=&. |
facturardoc | Creates the target document draft from the source quotation. | Payload used tipoopdest=enc, tipoop=ORC, and num=999900091. Response was "OK:462:vendas". |
listaTabDocumento | Loads copied ENC draft lines after opening the draft route. | The copied line preserved ndocori=999900091, tipodocori=ORC, and linhandocori=1. |
dt_list_drafts | Checks generated ENC drafts. | Called with search[TipoOp]=ENC and typesaft=WNE after conversion. |
DT_List_Documentos | Checks source ORC state after draft creation. | The source ORC row still returned ABR / Open, total 1.97, paid 0. |
Evidence: raw/playwright/workflows/quotation-to-sales-order-draft-20260519T163135Z.json and workflows/convert-quotation-to-sales-order-draft.html.
Converted Quotation ENC Draft Finalization AJAX Calls
Verified end to end. Workflow run finalize-converted-quotation-sales-order-draft-20260519T170312Z created source quotation 999900094 / ORC 9999/94, converted it into ENC draft 463, and saved the draft as final sales order 999900108 / ENC 9999/108.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
facturardoc | Creates the ENC draft from the source quotation. | Payload used tipoopdest=enc, tipoop=ORC, and source num=999900094. Response opened draft 463. |
listaTabDocumento | Loads copied ENC draft lines. | The copied line preserved ndocori=999900094, tipodocori=ORC, and linhandocori=1. |
saveDocument | Saves the converted ENC draft as a final sales order. | Response was {"return":"999900108%&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Checks final ENC list state. | Search returned ENC 9999/108, ABR / Open, total 1.97, and paid value 0. |
Evidence: raw/playwright/workflows/finalize-converted-quotation-sales-order-draft-20260519T170312Z.json and workflows/finalize-converted-quotation-sales-order-draft.html.
Sales Order ENC AJAX Calls
Verified end to end. Workflow run sales-order-enc-20260520T002909Z created customer order 999900110 / ENC 9999/110 for customer 910. The order remained open and increased customer-order quantity without changing physical stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
findDocsPendentes | Checks pending customer documents. | Called with cliente=910 during customer selection. |
loadArtigoReducido | Loads sales article data for an order. | Called with query=AI-DEMO-20260519-021105, compras=F, actualizastocks=F, and tipoop=ENC. |
insertLinhaTabDoc | Inserts order line. | Payload used temporary table 45716, article AI-DEMO-20260519-021105, customer 910, warehouse 1, and quantity 1. |
create_document&option=calcular_totais | Calculates ENC totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
saveDocument | Saves the ENC order. | Response: {"return":"999900110%&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Verifies the order list. | Search for 999900110 returned ABR / Open, ValorPago=0, pending value 1.97, and reference AI-ENC-20260520T002909Z. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after order save. | Warehouse 1 physical stock stayed -41; qtd_enc_cliente increased to 6. |
Evidence: raw/playwright/workflows/sales-order-enc-20260520T002909Z.json and workflows/create-sales-order.html.
Sales Order ENC Cancellation AJAX Calls
Verified end to end. Workflow run cancel-sales-order-enc-20260520T003150Z cancelled customer order 999900110 / ENC 9999/110. Unlike FT, FP, NC, and ND cancellations, the verified ENC run did not capture podeAnularDoc or a cancellation-reason lookup; the view script called btnDelete('Anular') and opened the irreversible confirmation directly.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
deleteDocument | Cancels the ENC order. | Payload used num=999900110, tipoop=ENC, serialized form data with empty anulacao=, and tot_fin=1.97. Response returned success. |
DT_List_Documentos | Verifies list state after cancellation. | Search for 999900110 returned ANU / Canceled, ValorPago=0, pending value 1.97, and reference AI-ENC-20260520T002909Z. |
dt_list_recalc_stock_articles_lojas | Checks stock/order quantities after cancellation. | Warehouse 1 physical stock stayed -41; qtd_enc_cliente changed from 6 to 5; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/cancel-sales-order-enc-20260520T003150Z.json and workflows/cancel-sales-order.html.
Sales Order ENC to Invoice FT Draft AJAX Calls
Verified to draft. Workflow run sales-order-to-invoice-draft-20260519T161456Z created source order 999900104 / ENC 9999/104, converted it with the Invoice / Invoice action, and opened FT draft 459. The FT invoice was not finalized.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
saveDocument | Creates the source ENC sales order. | Response contained 999900104%&=&OKDOC&=&. |
facturardoc | Creates the target document draft from the source order. | Payload used tipoopdest=ft, tipoop=ENC, and num=999900104. Response was "OK:459:vendas". |
listaTabDocumento | Loads copied FT draft lines after opening the draft route. | The copied line preserved ndocori=999900104, tipodocori=ENC, and linhandocori=1. |
dt_list_drafts | Checks generated FT drafts. | Called with search[TipoOp]=FT and typesaft=FT after conversion. |
DT_List_Documentos | Checks source ENC state after draft creation. | The source ENC row still returned ABR / Open, total 1.97, paid 0. |
Evidence: raw/playwright/workflows/sales-order-to-invoice-draft-20260519T161456Z.json and workflows/convert-sales-order-to-invoice-draft.html.
Converted Sales Order FT Draft Finalization AJAX Calls
Verified end to end. Workflow run finalize-converted-sales-order-invoice-draft-20260519T164146Z created source order 999900106 / ENC 9999/106, converted it into FT draft 463, and saved the draft as final invoice 999901668 / FT 9999/1668.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
facturardoc | Creates the FT draft from the source order. | Payload used tipoopdest=ft, tipoop=ENC, and source num=999900106. Response opened draft 463. |
listaTabDocumento | Loads copied FT draft lines. | The copied line preserved ndocori=999900106, tipodocori=ENC, and linhandocori=1. |
saveDocument | Saves the converted FT draft as a final invoice. | Response was {"return":"999901668%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Checks final FT list state. | Search returned FT 9999/1668, ABR / Open, total 1.97, and paid value 0. |
Evidence: raw/playwright/workflows/finalize-converted-sales-order-invoice-draft-20260519T164146Z.json and workflows/finalize-converted-sales-order-invoice-draft.html.
Sales Order ENC to Invoice / Receipt FR Draft AJAX Calls
Verified to draft. Workflow run sales-order-to-invoice-receipt-draft-20260519T162611Z created source order 999900105 / ENC 9999/105, converted it with the Invoice / Invoice / Receipt action, and opened FR draft 461. The FR invoice / receipt was not finalized or paid.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
saveDocument | Creates the source ENC sales order. | Response contained 999900105%&=&OKDOC&=&. |
facturardoc | Creates the target document draft from the source order. | Payload used tipoopdest=fr, tipoop=ENC, and num=999900105. Response was "OK:461:vendas". |
listaTabDocumento | Loads copied FR draft lines after opening the draft route. | The copied line preserved ndocori=999900105, tipodocori=ENC, and linhandocori=1. |
dt_list_drafts | Checks generated FR drafts. | Called with search[TipoOp]=FR and typesaft=FR after conversion. |
DT_List_Documentos | Checks source ENC state after draft creation. | The source ENC row still returned ABR / Open, total 1.97, paid 0. |
Evidence: raw/playwright/workflows/sales-order-to-invoice-receipt-draft-20260519T162611Z.json and workflows/convert-sales-order-to-invoice-receipt-draft.html.
Converted Sales Order FR Draft Finalization AJAX Calls
Verified end to end. Workflow run finalize-converted-sales-order-invoice-receipt-draft-20260519T164715Z created source order 999900107 / ENC 9999/107, converted it into FR draft 463, recorded payment, and saved the draft as final invoice / receipt 999900842 / FR 9999/842.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
facturardoc | Creates the FR draft from the source order. | Payload used tipoopdest=fr, tipoop=ENC, and source num=999900107. Response opened draft 463. |
listaTabDocumento | Loads copied FR draft lines. | The copied line preserved ndocori=999900107, tipodocori=ENC, and linhandocori=1. |
payment&option=add | Adds the FR payment line before final save. | The payment modal saved [NUM] Numerário for 1.97. |
saveDocument | Saves the converted FR draft as a final invoice / receipt. | Response was {"return":"999900842%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Checks final FR list state. | Search returned FR 9999/842, LIQ / Finished, total 1.97, and paid value 1.97. |
Evidence: raw/playwright/workflows/finalize-converted-sales-order-invoice-receipt-draft-20260519T164715Z.json and workflows/finalize-converted-sales-order-invoice-receipt-draft.html.
Sales Invoice FT AJAX Calls
Verified end to end. Workflow run sales-invoice-ft-20260519T040734Z created invoice 999901666 / FT 9999/1666 for customer 910. The invoice remained open and unpaid while stock decreased.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT 509031862, name 100 Ouvidos Lda, address, seller, and employee context. |
DT_Select_AdiantamentosClientes | Checks customer advances. | Called with entidade=910 and compras=F. |
findDocsPendentes | Checks pending customer documents. | Called with cliente=910 during customer selection. |
loadArtigoReducido | Loads sales article data. | Called with query=AI-DEMO-20260519-021105, compras=F, actualizastocks=T, and tipoop=FT. |
insertLinhaTabDoc | Inserts invoice line. | Payload used temporary table 45602, article AI-DEMO-20260519-021105, customer 910, warehouse 1, and quantity 1. |
create_document&option=calcular_totais | Calculates FT totals. | Verified totals were net 1.60, VAT 0.37, and total 1.97. |
checkProfitMargins | Validates line/document margin rules. | Called against table 45602 before save. |
saveDocument | Saves the FT invoice. | Response: {"return":"999901666%OK&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Verifies the invoice list. | Search for 999901666 returned ABR / Open, ValorPago=0, pending value 1.97, and reference AI-FT-20260519T040734Z. |
dt_list_recalc_stock_articles_lojas | Checks stock after invoicing. | Warehouse 1 stock changed from 2 to 1. |
Evidence: raw/playwright/workflows/sales-invoice-ft-20260519T040734Z.json and workflows/create-sales-invoice.html.
Sales Invoice FT Draft Save AJAX Calls
Verified end to end. Workflow run sales-invoice-draft-ft-20260519T175248Z filled an FT invoice and saved draft 464 instead of issuing a final invoice.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades&tabla=Cliente | Loads customer master data. | Customer 910 populated VAT, address, seller, and employee context. |
loadArtigoReducido | Loads article metadata for the FT line. | Called with article AI-DEMO-20260519-021105, compras=F, actualizastocks=T, and tipoop=FT. |
insertLinhaTabDoc | Creates the temporary line-table row before save. | The draft line used customer 910, warehouse 1, quantity 1, unit price 1.599, and VAT 23. |
create_document&option=calcular_totais | Calculates FT totals before draft save. | The verified total was 1.97. |
checkProfitMargins | Runs margin validation before saving the draft. | Called against the temporary line table. |
saveRascunho | Saves the FT as a draft. | Response was "OK:464:&=&AI-DEMO-20260519-021105:1#" and OfficeGest opened /vendas/ft/rasc/NDY0. |
listaTabDocumento | Reloads draft lines after opening the draft route. | The draft page contained the same article line and reference AI-FT-DRAFT-20260519T175248Z. |
DT_List_Documentos | Checks whether a final FT exists for the draft reference. | Search for the draft reference returned no final FT rows. |
dt_list_recalc_stock_articles_lojas | Checks stock after draft save. | Warehouse stock stayed at -1 before and after draft save. |
Evidence: raw/playwright/workflows/sales-invoice-draft-ft-20260519T175248Z.json and workflows/save-sales-invoice-draft.html.
Saved Sales Invoice FT Draft Edit AJAX Calls
Verified end to end. Workflow run edit-sales-invoice-draft-20260519T180638Z opened FT draft 467, changed the reference, saved it again as a draft, and verified active draft 468.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
listaTabDocumento | Loads the saved draft line. | Draft 467 loaded article AI-DEMO-20260519-021105, quantity 1, and customer 910. |
create_document&option=calcular_totais | Recalculates totals while the edited draft is open. | The verified total remained 1.97. |
saveRascunho | Saves the edited draft. | Response was "OK:468:&=&AI-DEMO-20260519-021105:1#"; OfficeGest opened /vendas/ft/rasc/NDY4. |
DT_List_Documentos | Checks whether a final FT exists for the edited reference. | Search for AI-FT-DRAFT-20260519T180605Z-EDIT returned no final FT rows. |
dt_list_recalc_stock_articles_lojas | Checks stock after edit re-save. | Warehouse stock stayed at -3 before and after re-save. |
Evidence: raw/playwright/workflows/edit-sales-invoice-draft-20260519T180638Z.json and workflows/edit-sales-invoice-draft.html.
Saved Sales Invoice FT Draft Line Add AJAX Calls
Verified end to end. Workflow run add-line-sales-invoice-draft-20260519T181220Z opened FT draft 469, added another article line, saved it again as a draft, and verified active draft 470.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
listaTabDocumento | Loads the saved draft line grid. | Draft 469 initially had 1 row and total quantity 1. |
loadArtigoReducido | Loads the article added to the saved draft. | The verified run added article AI-DEMO-20260519-021105. |
insertLinhaTabDoc | Adds the second draft line. | The edited draft had 2 rows and total quantity 2 before re-save. |
create_document&option=calcular_totais | Recalculates totals after the added line. | Total with VAT became 3.93354. |
saveRascunho | Saves the edited draft. | Response was "OK:470:&=&AI-DEMO-20260519-021105:1#"; OfficeGest opened active draft /vendas/ft/rasc/NDcw. |
DT_List_Documentos | Checks whether a final FT exists for the edited reference. | Search for AI-FT-DRAFT-20260519T181144Z-ADDLINE returned no final FT rows. |
dt_list_recalc_stock_articles_lojas | Checks stock after draft line add. | Warehouse stock stayed at -3 before and after re-save. |
Evidence: raw/playwright/workflows/add-line-sales-invoice-draft-20260519T181220Z.json and workflows/add-line-sales-invoice-draft.html.
Saved Sales Invoice FT Draft Line Deletion AJAX Calls
Verified end to end. Workflow run delete-line-sales-invoice-draft-20260519T182132Z opened FT draft 472, deleted one article line, saved it again as a draft, and verified active draft 473.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
listaTabDocumento | Loads and reloads the saved draft line grid. | Draft 472 initially had 2 rows and total quantity 2. |
deleteLinhaDoc | Deletes the selected draft line. | The verified run removed line sequence 2. |
create_document&option=calcular_totais | Recalculates totals after the deleted line. | Total with VAT became 1.96677. |
saveRascunho | Saves the edited draft. | Response was "OK:473:&=&AI-DEMO-20260519-021105:1#"; OfficeGest opened active draft /vendas/ft/rasc/NDcz. |
DT_List_Documentos | Checks whether a final FT exists for the edited reference. | Search for AI-FT-DRAFT-20260519T182039Z-ADDLINE-DELLINE returned no final FT rows. |
dt_list_recalc_stock_articles_lojas | Checks stock after draft line deletion. | Warehouse stock stayed at -3 before and after re-save. |
Evidence: raw/playwright/workflows/delete-line-sales-invoice-draft-20260519T182132Z.json and workflows/delete-line-sales-invoice-draft.html.
Saved Sales Invoice FT Draft Quantity Change AJAX Calls
Verified end to end. Workflow run change-quantity-sales-invoice-draft-20260519T182947Z opened FT draft 474, changed line quantity from 1 to 2, saved it again as a draft, and verified active draft 475.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
updateEditableTabDoc | Updates an editable field in the draft line table. | The verified run sent campo=Qtd, original quantity 1, and new value 2. |
listaTabDocumento | Reloads the saved draft line grid. | The edited draft had 1 row and total quantity 2 before re-save. |
create_document&option=calcular_totais | Recalculates totals after the quantity change. | Total with VAT became 3.93354. |
saveRascunho | Saves the edited draft. | Response was "OK:475:&=&AI-DEMO-20260519-021105:1#"; OfficeGest opened active draft /vendas/ft/rasc/NDc1. |
DT_List_Documentos | Checks whether a final FT exists for the edited reference. | Search for AI-FT-DRAFT-20260519T182919Z-QTY2 returned no final FT rows. |
dt_list_recalc_stock_articles_lojas | Checks stock after draft quantity change. | Warehouse stock stayed at -3 before and after re-save. |
Evidence: raw/playwright/workflows/change-quantity-sales-invoice-draft-20260519T182947Z.json and workflows/change-quantity-sales-invoice-draft.html.
Saved Sales Invoice FT Draft Finalization AJAX Calls
Verified end to end. Workflow run finalize-saved-sales-invoice-draft-20260519T175951Z opened FT draft 465 and finalized it as invoice 999901677 / FT 9999/1677.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
listaTabDocumento | Reloads the saved FT draft line. | The draft route /vendas/ft/rasc/NDY1 loaded article AI-DEMO-20260519-021105, quantity 1, and total 1.97. |
checkProfitMargins | Runs margin validation before final save. | Returned the normal margin success response before finalization. |
create_document&option=calcular_totais | Recalculates FT totals. | Returned total 1.97, VAT 0.36777, and net 1.599. |
saveDocument | Saves the draft as a final FT. | Response was {"return":"999901677%AI-DEMO-20260519-021105:1#&=&OKDOC&=&","print_documents":[]}. |
DT_List_Documentos | Verifies the final FT list row. | Search returned FT 9999/1677, ABR / Open, total 1.97, paid 0.00, and pending 1.97. |
dt_list_recalc_stock_articles_lojas | Checks stock after finalization. | Warehouse stock moved from -2 before finalization to -3 after finalization. |
Evidence: raw/playwright/workflows/finalize-saved-sales-invoice-draft-20260519T175951Z.json and workflows/finalize-saved-sales-invoice-draft.html.
Sales Invoice No Lines Validation AJAX Calls
Verified end to end. Workflow run sales-invoice-no-lines-validation-20260519T183637Z attempted Save and Finish on a blank FT and confirmed no final save was submitted.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
listaTabDocumento | Loads and reloads the empty document line grid. | The grid returned 0 rows. |
create_document&option=calcular_totais | Recalculates totals for the empty line table. | Totals remained 0. |
checkProfitMargins | Runs margin validation before attempting final save. | Returned the normal margin success marker. |
saveDocument | Final invoice save. | Not called. The visible toast was ErrorNo lines and the page stayed on /vendas/ft/create. |
Evidence: raw/playwright/workflows/sales-invoice-no-lines-validation-20260519T183637Z.json and workflows/handle-sales-invoice-no-lines-error.html.
Sales Invoice Missing Customer Validation AJAX Calls
Verified end to end. Workflow run sales-invoice-missing-customer-validation-20260519T184220Z added one FT line without a customer, attempted Save and Finish, and confirmed no final save was submitted.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadArtigoReducido | Loads the article before line insertion. | Loaded article AI-DEMO-20260519-021105 for FT, warehouse 1. |
insertLinhaTabDoc | Adds the article line into the temporary FT grid. | The line grid had one row, quantity 1, and total with VAT 1.96677. |
listaTabDocumento | Reloads the document line grid. | Reloaded the line while customer remained empty. |
create_document&option=calcular_totais | Recalculates totals for the line. | Totals reflected the single article line. |
saveDocument | Final invoice save. | Not called. The visible toast was Error There are mandatory fields unfilled; #doc_CodTerc and #doc_NContrib were marked chosen-error. |
Evidence: raw/playwright/workflows/sales-invoice-missing-customer-validation-20260519T184220Z.json and workflows/handle-sales-invoice-mandatory-fields-error.html.
Sales Invoice FT Cancellation AJAX Calls
Verified end to end. Workflow run cancel-sales-invoice-ft-20260519T172726Z created invoice 999901672 / FT 9999/1672, cancelled it from the FT view, and verified the final list state ANU / Canceled.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
podeAnularDoc | Checks whether a document can be cancelled. | Request used num=999901672 and tipoop=FT. Response returned {"succeeded":true,"message":null,"params":null}. |
Sel2_Select_v2 with table=motivos_docs | Loads cancellation reasons for the selector. | Selector filters included where[is_anulacao]=1 and where[activo]=1. The verified run selected reason id 1, Erro de faturacao. |
deleteDocument | Submits the FT cancellation. | Payload used action=deleteDocument, num=999901672, tipoop=FT, and the serialized FT form after reason selection. |
DT_List_Documentos | Verifies the FT row after cancellation. | Search for 999901672 returned estado=ANU, desig_estado=Canceled, total 1.97, paid value 0.00, and pending value 1.97. |
dt_list_recalc_stock_articles_lojas | Checks stock reversal. | Warehouse 1 stock for article AI-DEMO-20260519-021105 changed from -2 before cancellation to -1 after cancellation. |
Evidence: raw/playwright/workflows/cancel-sales-invoice-ft-20260519T172726Z.json and workflows/cancel-sales-invoice.html.
Invoice / Receipt FR Cancellation AJAX Calls
Verified end to end. Workflow run cancel-invoice-receipt-fr-20260519T234010Z created paid invoice / receipt 999900849 / FR 9999/849, cancelled it from the FR view, and verified the final list state ANU / Canceled.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=add | Adds the immediate FR payment row. | Request used tipoop=FR, modopagamento=NUM, customer 910, and amount 1.97. |
payment&option=validate | Validates the FR payment before final save. | Validation returned valid:true and troco:0. |
saveDocument | Saves the paid invoice / receipt. | Response returned 999900849 with OKDOC and opened the final FR view. |
Sel2_Select_v2 with table=motivos_docs | Loads cancellation reasons for the selector. | The verified run selected reason id 1, Erro de faturacao. |
deleteDocument | Submits the FR cancellation. | Payload used action=deleteDocument, num=999900849, tipoop=FR, and the serialized FR form after reason selection. |
DT_List_Documentos | Verifies the FR row after cancellation. | Search for 999900849 returned estado=ANU, desig_estado=Canceled, total 1.97, paid value 1.97, and pending value 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock reversal. | Warehouse 1 stock for article AI-DEMO-20260519-021105 moved from -37 to -38 after save and returned to -37 after cancellation. |
Evidence: raw/playwright/workflows/cancel-invoice-receipt-fr-20260519T234010Z.json and workflows/cancel-invoice-receipt.html.
Simplified Invoice FS Cancellation AJAX Calls
Verified end to end. Workflow run cancel-simplified-invoice-fs-20260519T234643Z created paid simplified invoice 999900012 / FS 9999/12, cancelled it from the FS view, and verified the final list state ANU / Canceled.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=add | Adds the immediate FS payment row. | Request used tipoop=FS, modopagamento=NUM, customer 910, and amount 1.97. |
payment&option=validate | Validates the FS payment before final save. | Validation returned valid:true and troco:0. |
saveDocument | Saves the paid simplified invoice. | Response returned 999900012 with OKDOC and opened the final FS view. |
Sel2_Select_v2 with table=motivos_docs | Loads cancellation reasons for the selector. | The verified run selected reason id 1, Erro de faturacao. |
deleteDocument | Submits the FS cancellation. | Payload used action=deleteDocument, num=999900012, tipoop=FS, and the serialized FS form after reason selection. |
DT_List_Documentos&table=FactSim | Verifies the FS row after cancellation. | Search for 999900012 returned estado=ANU, desig_estado=Canceled, total 1.97, paid value 1.97, and pending value 0.00. |
dt_list_recalc_stock_articles_lojas | Checks stock reversal. | Warehouse 1 stock for article AI-DEMO-20260519-021105 moved from -37 to -38 after save and returned to -37 after cancellation. |
Evidence: raw/playwright/workflows/cancel-simplified-invoice-fs-20260519T234643Z.json and workflows/cancel-simplified-invoice.html.
Sales Invoice FT to Credit Note AJAX Calls
Verified end to end. Workflow run sales-invoice-to-credit-note-20260519T173701Z used source invoice 999901674 / FT 9999/1674 and created credit note 999900061 / NC 9999/61.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
POST /vendas/nc/create | Starts the NC from the source FT view. | Payload included copy=1, codterc_copy=910, num_copy=999901674, tipoop_copy=FT, and source date. |
associar_documento&option=load_modal | Loads the source invoice association modal. | Request used source tipoop=FT, target tipoopori=NC, and num_copy=999901674. |
associar_documento&option=listar_documentos | Preselects eligible source invoices. | Returned source FT 9999/1674 in the modal list. |
associar_documento&option=listar_tabela | Loads creditable FT lines. | Returned line 1, article AI-DEMO-20260519-021105, quantity 1, net 1.599, VAT 23. |
associar_documento&option=save_linhas | Copies selected source lines into the NC draft. | The draft line kept ndocori=999901674, tipodocori=FT, and linhandocori=1. |
Sel2_Select_v2&table=motivos_docs | Loads NC reasons. | Reason lookup with where[is_nc]=1 returned reason id 1, Erro de faturacao. |
saveDocument | Saves the NC. | Final view opened /vendas/nc/view/OTk5OTAwMDYx; NC list returned NC 9999/61, ABR / Open, total 1.97. |
dt_list_recalc_stock_articles_lojas | Verifies stock reversal. | Warehouse 1 stock moved from 0 before FT to -1 after FT and back to 0 after NC. |
Evidence: raw/playwright/workflows/sales-invoice-to-credit-note-20260519T173701Z.json and workflows/convert-sales-invoice-to-credit-note.html.
Sales Invoice FT to Receipt AJAX Calls
Verified end to end. Workflow run sales-invoice-to-receipt-20260519T174312Z used source invoice 999901675 / FT 9999/1675 and created receipt 999900246 / R 9999/246.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
POST /vendas/r/create | Starts the R receipt from the source FT view. | Payload included copy=1, relation_copy=, codterc_copy=910, num_copy=999901675, and tipoop_copy=FT. |
loadTabDocumentoRecibo | Builds the receipt document tab with source invoice context. | Request included cliente=910, target tipoop=R, num_copy=999901675, and tipoop_copy=FT. |
listaTabDocumentoRecibo | Lists selected documents to pay. | The Documents grid returned exactly source FT 9999/1675, total 1.97, value to pay 1.97, and estado=T. |
payment&option=add | Adds the receipt payment line. | The verified run added [NUM] Numerario for 1.97 with inbox option [0] Caixa 0. |
payment&option=validate | Validates payment totals before final save. | Validation returned valid totals and change 0. |
saveDocumentRecibo | Saves the receipt. | Response returned {"return":"999900246&=&OKDOC&=&&=&OKDOC&=&","print_documents":[],"final":"&=&OKDOC&=&"}. |
DT_List_Documentos | Verifies receipt and source invoice states. | The receipt list returned F / Closed. The source FT list returned LIQ / Finished, ValorPago=1.97, pending 0.00. |
Evidence: raw/playwright/workflows/sales-invoice-to-receipt-20260519T174312Z.json and workflows/convert-sales-invoice-to-receipt.html.
Purchase / Expense Draft AJAX Calls
Verified draft save. Workflow run purchase-expense-draft-20260519T034251Z created CD draft 456 for supplier 100. The verified save response was OK:456, and the draft list returned the created row with total 1.51.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
dt_list_drafts | Loads purchase draft documents. | Called with compras=T, search[TipoOp]=CD, and typesaft=FR. After save it returned row Num: 456, supplier AI Demo Supplier 20260519T030323Z, and total 1.51. |
Sel2_Select&table=forn | Resolves supplier selector rows. | Lookup for term 100 returned supplier text and VAT 590303236. |
NameEntidades&tabla=Forn | Loads supplier master data. | Returned address, contacts, VAT, active flag, and accounting account 2211100100. |
Sel2_Select&table=moradasf | Loads supplier address rows. | Called after supplier selection with term=100. |
findNumNoForn | Checks duplicate supplier document number. | Payload used tabela=documcd, forn=100, and numnoforn=AI-CD-DRAFT-20260519T034251Z. |
loadArtigoReducido&compras=T | Loads reduced purchase article metadata. | Returned article AI-DEMO-20260519-021105, cost 1.23, VAT 23, stock 1, and active flag T. |
insertLinhaTabDoc | Inserts the supplier document line. | Payload included document table 45236, id_tipoop=CD, cliente=100, formapag=PP, isforn=T, and article quantity 1. |
price_variation_article | Checks supplier/article price variation. | Returned success:true, price:1.23, and zero variation for supplier 100. |
create_document&option=calcular_totais | Calculates CD totals. | Returned net 1.23, VAT 0.2829, total 1.51, and VAT table for rate 23. |
saveRascunho | Saves the CD draft. | GET request carried the serialized form, totals, table id 45236, and returned OK:456. |
listaTabDocumento | Reloads line-table data. | After save, draft mode request used table 45267 and encoded draft number NDU2. |
DT_List_DocumentosF | Loads finalized supplier document list. | Observed on the CD list route with table documcd, type CD, and supplier document columns. The verified workflow did not finalize a document. |
Evidence: raw/playwright/workflows/purchase-expense-draft-20260519T034251Z.json and workflows/create-purchase-expense-draft.html.
Purchase / Expense Finalization AJAX Calls
Verified end to end. Workflow run purchase-expense-finalize-20260519T035328Z finalized draft 456 into CD document 999900053 / CD 9999/53, paid total 1.51, and increased article warehouse stock from 1 to 2.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
payment&option=validate | Checks payment coverage before final save. | First validation returned valid: NONE until payment was added; second validation returned valid: true. |
payment&option=add | Adds purchase payment line. | Payload used id=45392, compras=T, entidade=100, modopagamento=NUM, tipoop=CD, and total=1.51. |
saveDocument | Finalizes the CD draft. | Payload included num=456, id=45392, estado=ABR, isedit=T, and israsc=1. Response: {"return":"999900053%&=&OKDOC&=&"}. |
payment&option=get_payment | Loads the payment card on the finished CD view. | Returned payment mode [NUM] Numerario, bank/cash account [CXC] Caixa Defeito - Caixa Colaborador Demo, date 19/05/2026, and value 1.51. |
listaTabDocumento | Loads finished CD line data. | View-mode line request used encoded number OTk5OTAwMDUz; line stock fields showed QtdStock: 2. |
DT_List_DocumentosF | Verifies the finalized CD in the document list. | Search for 999900053 returned recordsFiltered: 1, CodEstado: LIQ, ValorPago: 1.51, and supplier reference AI-CD-DRAFT-20260519T034251Z. |
dt_list_recalc_stock_articles_lojas | Verifies article stock after the purchase. | Warehouse 1 for article AI-DEMO-20260519-021105 returned QtdStock: 2. |
Evidence: raw/playwright/workflows/purchase-expense-finalize-20260519T035328Z.json, raw/playwright/workflows/purchase-expense-finalize-20260519T035328Z-recovery.json, and workflows/finalize-purchase-expense.html.
Order to Supplier AJAX Calls
Verified end to end. Workflow run supplier-order-ef-20260519T040050Z created supplier order 999900111 / EF 9999/111 for supplier 100. The order remained open and increased supplier-order quantity without changing physical stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
loadArtigoReducido&compras=T | Loads purchase article data for EF lines. | Returned article AI-DEMO-20260519-021105, physical stock 2, VAT 23, and cost 1.23. |
insertLinhaTabDoc | Inserts supplier order line. | Payload used table 45549, id_tipoop=EF, cliente=100, isforn=T, and quantity 1. |
create_document&option=calcular_totais | Calculates EF totals. | Verified total was 1.51. |
saveDocument | Saves the supplier order. | Payload included TipoOp=EF, NumNoForn=AI-EF-20260519T040050Z, dataentregaprev=19/05/2026, id=45549, isedit=F, and israsc=0. Response: {"return":"999900111%&=&OKDOC&=&"}. |
listaTabDocumento | Loads EF line table. | View-mode line request used encoded document number OTk5OTAwMTEx. |
DT_List_DocumentosF | Verifies the EF order list. | Search for 999900111 returned recordsFiltered: 1, CodEstado=ABR, desig_estado=Open, ValorPago=0, and total 1.51. |
dt_list_recalc_stock_articles_lojas | Checks article stock/order quantities. | Warehouse 1 physical stock stayed 2; qtd_enc_forn changed to 1. |
Evidence: raw/playwright/workflows/supplier-order-ef-20260519T040050Z.json and workflows/create-supplier-order.html.
Supplier Request for Quotation PEC AJAX Calls
Verified end to end. Workflow run supplier-request-quotation-pec-20260519T074730Z created supplier request for quotation 999900017 / PEC 9999/17 for supplier 100. The request remained open and increased supplier-order quantity without changing physical stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_DocumentosF&table=DocumPEC | Loads and verifies PEC requests. | Called with actualizacc=F, tipoop=PEC, recibo=F, and tipoterc=F. Search for 999900017 returned the created PEC row. |
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236, name, address, and payment-condition context. |
findNumNoForn | Checks duplicate supplier reference. | Payload used tabela=DocumPEC, forn=100, and numnoforn=AI-PEC-20260519T074730Z. |
loadArtigoReducido&compras=T | Loads purchase article data for PEC lines. | Returned article AI-DEMO-20260519-021105, physical stock 5, VAT 23, and unit cost 1.23. |
insertLinhaTabDoc | Inserts PEC line. | Payload used temporary table 47912, id_tipoop=PEC, cliente=100, isforn=T, warehouse 1, and quantity 1. |
price_variation_article | Checks supplier/article price variation. | Called for article AI-DEMO-20260519-021105, line 1, supplier 100, and table 47912. |
create_document&option=calcular_totais | Calculates PEC totals. | Verified total was 1.51. |
saveDocument | Saves the supplier request for quotation. | Payload included TipoOp=PEC, NumNoForn=AI-PEC-20260519T074730Z, MovimentaStock=1, id=47912, isedit=F, and israsc=0. Response: {"return":"999900017%&=&OKDOC&=&"}. |
dt_list_recalc_stock_articles_lojas | Checks article stock/order quantities. | Warehouse 1 physical stock stayed 5; qtd_enc_forn changed from 1 to 2; qtd_enc_cliente stayed 4. |
Evidence: raw/playwright/workflows/supplier-request-quotation-pec-20260519T074730Z.json and workflows/create-supplier-request-quotation-pec.html.
Supplier Debit Note NDF AJAX Calls
Verified end to end. Workflow run supplier-debit-note-ndf-20260519T075402Z created supplier debit note 999900005 / 9999/5 for supplier 100. The note remained open, had no payment row, and did not change physical stock or order quantities for the tested article.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_DocumentosF&table=NDebF | Loads and verifies supplier debit notes. | Called with actualizacc=T, tipoop=NDF, recibo=F, and tipoterc=F. Search for 999900005 returned the created NDF row. |
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236, name, address, and payment-condition context. |
findNumNoForn | Checks duplicate supplier reference. | Payload used tabela=NDebF, forn=100, and numnoforn=AI-NDF-20260519T075402Z. |
loadArtigoReducido&compras=T | Loads purchase article data for NDF lines. | Returned article AI-DEMO-20260519-021105, physical stock 5, VAT 23, unit cost 1.23, and supplier-order quantity 2. |
insertLinhaTabDoc | Inserts NDF line. | Payload used temporary table 47957, id_tipoop=NDF, cliente=100, isforn=T, warehouse 1, and quantity 1. |
price_variation_article | Checks supplier/article price variation. | Called for article AI-DEMO-20260519-021105, line 1, supplier 100, and table 47957. |
create_document&option=calcular_totais | Calculates NDF totals. | Verified total was 1.51. |
saveDocument | Saves the supplier debit note. | Payload included TipoOp=NDF, CodTipoLanc=AccNDebFMerc, NumNoForn=AI-NDF-20260519T075402Z, MovimentaStock=1, id=47957, isedit=F, and israsc=0. Response: {"return":"999900005%&=&OKDOC&=&"}. |
dt_list_recalc_stock_articles_lojas | Checks article stock/order quantities. | Warehouse 1 physical stock stayed 5; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/supplier-debit-note-ndf-20260519T075402Z.json and workflows/create-supplier-debit-note-ndf.html.
Supplier Credit Note NCF AJAX Calls
Verified end to end. Workflow run supplier-credit-note-ncf-20260519T075930Z created supplier credit note 999900025 / NCF 9999/25 for supplier 100. The note remained open, had no payment row, and reduced warehouse stock for the tested article.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_DocumentosF&table=NCredF | Loads and verifies supplier credit notes. | Called with actualizacc=T, tipoop=NCF, recibo=F, and tipoterc=F. Search for 999900025 returned the created NCF row. |
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236, name, address, and payment-condition context. |
findNumNoForn | Checks duplicate supplier reference. | Payload used tabela=NCredF, forn=100, and numnoforn=AI-NCF-20260519T075930Z. |
loadArtigoReducido&compras=T | Loads purchase article data for NCF lines. | Returned article AI-DEMO-20260519-021105, physical stock 5, VAT 23, unit cost 1.23, and supplier-order quantity 2. |
insertLinhaTabDoc | Inserts NCF line. | Payload used temporary table 48047, id_tipoop=NCF, cliente=100, isforn=T, warehouse 1, and quantity 1. |
price_variation_article | Checks supplier/article price variation. | Called for article AI-DEMO-20260519-021105, line 1, supplier 100, and table 48047. |
create_document&option=calcular_totais | Calculates NCF totals. | Verified total was 1.51. |
saveDocument | Saves the supplier credit note. | Payload included TipoOp=NCF, CodTipoLanc=AccNCredFMerc, NumNoForn=AI-NCF-20260519T075930Z, MovimentaStock=on, id=48047, isedit=F, and israsc=0. Response: {"return":"999900025%&=&OKDOC&=&"}. |
dt_list_recalc_stock_articles_lojas | Checks article stock/order quantities. | Warehouse 1 physical stock changed from 5 to 4; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/supplier-credit-note-ncf-20260519T075930Z.json and workflows/create-supplier-credit-note-ncf.html.
Supplier Return Note NVF AJAX Calls
Verified end to end. Workflow run supplier-return-note-nvf-20260519T080457Z created supplier return note 999900001 / NVF 9999/1 for supplier 100. The note remained open, had no payment row, returned blank validation fields, and reduced warehouse stock for the tested article.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_DocumentosF&table=NDevolF | Loads and verifies supplier return notes. | Called with actualizacc=F, tipoop=NVF, recibo=F, and tipoterc=F. Search for 999900001 returned the created NVF row. |
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236, name, address, and payment-condition context. |
findNumNoForn | Checks duplicate supplier reference. | Payload used tabela=NDevolF, forn=100, and numnoforn=AI-NVF-20260519T080457Z. |
loadArtigoReducido&compras=T | Loads purchase article data for NVF lines. | Returned article AI-DEMO-20260519-021105, physical stock 4, VAT 23, unit cost 1.23, customer-order quantity 4, and supplier-order quantity 2. |
insertLinhaTabDoc | Inserts NVF line. | Payload used temporary table 48087, id_tipoop=NVF, cliente=100, isforn=T, warehouse 1, and quantity 1. |
price_variation_article | Checks supplier/article price variation. | Called for article AI-DEMO-20260519-021105, line 1, supplier 100, and table 48087. |
create_document&option=calcular_totais | Calculates NVF totals. | Verified total was 1.51. |
saveDocument | Saves the supplier return note. | Payload included TipoOp=NVF, NumNoForn=AI-NVF-20260519T080457Z, MovimentaStock=1, id=48087, isedit=F, and israsc=0. No CodTipoLanc was present. Response: {"return":"999900001%&=&OKDOC&=&"}. |
dt_list_recalc_stock_articles_lojas | Checks article stock/order quantities. | Warehouse 1 physical stock changed from 4 to 3; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/supplier-return-note-nvf-20260519T080457Z.json and workflows/create-supplier-return-note-nvf.html.
Supplier Invoice FAF AJAX Calls
Verified end to end. Workflow run supplier-invoice-faf-20260519T070810Z created supplier invoice 999900342 / FAF 9999/342 for supplier 100. The invoice remained open/unpaid and increased warehouse stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236, name, address, payment condition, and accounting context. |
findNumNoForn | Checks duplicate supplier invoice/reference number. | Payload used tabela=FactF, forn=100, and numnoforn=AI-FAF-20260519T070810Z. |
loadArtigoReducido&compras=T | Loads purchase article data for FAF lines. | Returned article AI-DEMO-20260519-021105, physical stock 1, VAT 23, and unit cost 1.23. |
insertLinhaTabDoc | Inserts supplier invoice line. | Payload used temporary table 47633, id_tipoop=FAF, cliente=100, isforn=T, warehouse 1, and quantity 1. |
price_variation_article | Checks supplier/article price variation. | Called for article AI-DEMO-20260519-021105, line 1, supplier 100, and table 47633. |
create_document&option=calcular_totais | Calculates FAF totals. | Verified total was 1.51. |
saveDocument | Saves the supplier invoice. | Payload included TipoOp=FAF, NumNoForn=AI-FAF-20260519T070810Z, MovimentaStock=1, id=47633, isedit=F, and israsc=0. Response: {"return":"999900342%&=&OKDOC&=&"}. |
listaTabDocumento | Loads FAF line table. | View-mode line request used encoded document number OTk5OTAwMzQy. |
DT_List_DocumentosF | Verifies the FAF invoice list. | Search for 999900342 returned recordsFiltered: 1, CodEstado=ABR, desig_estado=Open, ValorPago=0, validation N/D, and total 1.51. |
dt_list_recalc_stock_articles_lojas | Checks article stock after supplier invoice save. | Warehouse 1 physical stock changed from 1 to 2; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 1. |
Evidence: raw/playwright/workflows/supplier-invoice-faf-20260519T070810Z.json and workflows/create-supplier-invoice-faf.html.
Supplier Invoice / Receipt FRF AJAX Calls
Verified end to end. Workflow run supplier-invoice-receipt-frf-20260519T072511Z created supplier invoice/receipt 999900023 / FRF 9999/23 for supplier 100. The document was paid during creation and increased warehouse stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236 and name AI Demo Supplier 20260519T030323Z. |
findNumNoForn | Checks duplicate supplier invoice/reference number. | Payload used tabela=FactRecF, forn=100, and numnoforn=AI-FRF-20260519T072511Z. |
loadArtigoReducido&compras=T | Loads purchase article data for FRF lines. | Returned article AI-DEMO-20260519-021105, physical stock 2, VAT 23, and unit cost 1.23. |
insertLinhaTabDoc | Inserts supplier invoice/receipt line. | Payload used temporary table 47729, id_tipoop=FRF, cliente=100, isforn=T, warehouse 1, and quantity 1. |
price_variation_article | Checks supplier/article price variation. | Called for article AI-DEMO-20260519-021105, line 1, supplier 100, and table 47729. |
create_document&option=calcular_totais | Calculates FRF totals. | Verified total was 1.51. |
payment&option=validate | Validates payment coverage before save. | Observed before and after the payment row was added; final payment total was 1.51 and troco=0. |
payment&option=add | Adds the immediate supplier payment row. | Request used compras=T, entidade=100, modopagamento=NUM, modobase=N, total=1.51, edit=F, and tipoop=FRF. |
saveDocument | Saves the supplier invoice/receipt. | Payload included TipoOp=FRF, CodTipoLanc=AccVDinFMerc, NumNoForn=AI-FRF-20260519T072511Z, MovimentaStock=1, and id=47729. Response: {"return":"999900023%&=&OKDOC&=&"}. |
payment&option=get_payment | Loads the saved payment card. | Called with num=999900023, tipoop=FRF, compras=T, edit=T, and editable=T. |
DT_List_DocumentosF | Verifies the FRF list. | Search for 999900023 returned recordsFiltered: 1, CodEstado=LIQ, desig_estado=Finished, ValorPago=1.51, validation N/D, and total 1.51. |
dt_list_recalc_stock_articles_lojas | Checks article stock after supplier invoice/receipt save. | Warehouse 1 physical stock changed from 2 to 3; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 1. |
Evidence: raw/playwright/workflows/supplier-invoice-receipt-frf-20260519T072511Z.json and workflows/create-supplier-invoice-receipt-frf.html.
Supplier Simplified Invoice FSF AJAX Calls
Verified end to end. Workflow run supplier-simplified-invoice-fsf-20260519T073106Z created supplier document 999900002 / FSF 9999/2 for supplier 100. The document was paid during creation and increased warehouse stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236 and name AI Demo Supplier 20260519T030323Z. |
findNumNoForn | Checks duplicate supplier reference. | Payload used tabela=FactSimF, forn=100, and numnoforn=AI-FSF-20260519T073106Z. |
loadArtigoReducido&compras=T | Loads purchase article data for FSF lines. | Returned article AI-DEMO-20260519-021105, physical stock 3, VAT 23, and unit cost 1.23. |
insertLinhaTabDoc | Inserts FSF line. | Payload used temporary table 47781, id_tipoop=FSF, cliente=100, isforn=T, warehouse 1, and quantity 1. |
price_variation_article | Checks supplier/article price variation. | Called for article AI-DEMO-20260519-021105, line 1, supplier 100, and table 47781. |
create_document&option=calcular_totais | Calculates FSF totals. | Verified total was 1.51. |
payment&option=validate | Validates payment coverage before save. | Final payment total was 1.51 and troco=0. |
payment&option=add | Adds the immediate supplier payment row. | Request used compras=T, entidade=100, modopagamento=NUM, modobase=N, total=1.51, edit=F, and tipoop=FSF. |
saveDocument | Saves the FSF. | Payload included TipoOp=FSF, CodTipoLanc=AccVDinFMerc, NumNoForn=AI-FSF-20260519T073106Z, MovimentaStock=1, and id=47781. Response: {"return":"999900002%&=&OKDOC&=&"}. |
payment&option=get_payment | Loads the saved payment card. | Called with num=999900002, tipoop=FSF, compras=T, edit=T, and editable=T. |
DT_List_DocumentosF | Verifies the FSF list. | Search for 999900002 returned recordsFiltered: 1, CodEstado=LIQ, desig_estado=Finished, ValorPago=1.51, validation N/D, and total 1.51. |
dt_list_recalc_stock_articles_lojas | Checks article stock after FSF save. | Warehouse 1 physical stock changed from 3 to 4; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 1. |
Evidence: raw/playwright/workflows/supplier-simplified-invoice-fsf-20260519T073106Z.json and workflows/create-supplier-simplified-invoice-fsf.html.
Supplier Cash Sale VDF AJAX Calls
Verified end to end. Workflow run supplier-cash-sale-vdf-20260519T073648Z created supplier cash-sale document 999900001 / VDF 9999/1 for supplier 100. The document was paid during creation and increased warehouse stock.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236 and name AI Demo Supplier 20260519T030323Z. |
findNumNoForn | Checks duplicate supplier reference. | Payload used tabela=VDinF, forn=100, and numnoforn=AI-VDF-20260519T073648Z. |
loadArtigoReducido&compras=T | Loads purchase article data for VDF lines. | Returned article AI-DEMO-20260519-021105, physical stock 4, VAT 23, and unit cost 1.23. |
insertLinhaTabDoc | Inserts VDF line. | Payload used temporary table 47824, id_tipoop=VDF, cliente=100, isforn=T, warehouse 1, and quantity 1. |
price_variation_article | Checks supplier/article price variation. | Called for article AI-DEMO-20260519-021105, line 1, supplier 100, and table 47824. |
create_document&option=calcular_totais | Calculates VDF totals. | Verified total was 1.51. |
payment&option=validate | Validates payment coverage before save. | Final payment total was 1.51 and troco=0. |
payment&option=add | Adds the immediate supplier payment row. | Request used compras=T, entidade=100, modopagamento=NUM, modobase=N, total=1.51, edit=F, and tipoop=VDF. |
saveDocument | Saves the VDF. | Payload included TipoOp=VDF, CodTipoLanc=AccVDinFMerc, NumNoForn=AI-VDF-20260519T073648Z, MovimentaStock=1, and id=47824. Response: {"return":"999900001%&=&OKDOC&=&"}. |
payment&option=get_payment | Loads the saved payment card. | Called with num=999900001, tipoop=VDF, compras=T, edit=T, and editable=T. |
DT_List_DocumentosF | Verifies the VDF list. | Search for 999900001 returned recordsFiltered: 1, CodEstado=LIQ, desig_estado=Finished, ValorPago=1.51, validation N/D, and total 1.51. |
dt_list_recalc_stock_articles_lojas | Checks article stock after VDF save. | Warehouse 1 physical stock changed from 4 to 5; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 1. |
Evidence: raw/playwright/workflows/supplier-cash-sale-vdf-20260519T073648Z.json and workflows/create-supplier-cash-sale-vdf.html.
Supplier Payment Note RF AJAX Calls
Verified end to end. Workflow run supplier-payment-rf-20260519T071455Z created supplier payment note 999900074 / RF 9999/74 for supplier 100 and settled source invoice 999900342 / FAF 9999/342.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_DocumentosF&table=RecibosF | Lists supplier payment notes. | RF verification used recibo=T, actualizacc=T, tipoop=RF, and tipoterc=F. Search for 999900074 returned status F / Closed and total 1.51. |
DT_List_DocumentosF&table=FactF | Checks the source supplier invoice before and after payment. | Before RF, source FAF 999900342 was ABR / Open with ValorPago=0. After RF, it was LIQ / Finished with ValorPago=1.51. |
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236 and name AI Demo Supplier 20260519T030323Z. |
loadTabDocumentoReciboF | Initializes the supplier receipt/payment temporary table. | Request used supplier 100, date 19/05/2026, temp id 47645, tipoop=RF, debita=T, and credita=F. |
listaTabDocumentoRecibo&estado=F | Loads pending supplier documents. | Returned source row FAF 9999/342, total 1.51, paid 0, pending 1.51, due date 2026-05-20. |
changeEstadoRecibo | Moves a source document into the documents-to-pay table. | POST used id 47645, style=ADV2, desconto=0.000000, apagar=0, and listado[]=1. Response: {"success":true}. |
listaTabDocumentoRecibo&estado=T | Loads selected supplier documents to pay. | Selected row changed to state T with valorapagar=1.51. |
payment&option=add | Adds the RF payment row. | Request used compras=T, entidade=100, modopagamento=NUM, modobase=N, total=1.51, edit=F, and tipoop=RF. |
payment&option=validate | Validates payment total before save. | Verified payment total was 1.51 with troco=0 and can_save=true. |
saveDocumentRecibo | Saves the supplier payment note. | Payload included TipoOp=RF, CodTipoLanc=AccReciboF, and totAPagar=1.51. Response: 999900074&=&OKDOC&=&. |
payment&option=get_payment | Loads saved payment details on the RF view. | Called with num=999900074, tipoop=RF, compras=T, edit=T, and editable=T. |
Evidence: raw/playwright/workflows/supplier-payment-rf-20260519T071455Z.json and workflows/create-supplier-payment-rf.html.
Supplier Receipt Chargeback REF AJAX Calls
Verified end to end. Workflow run supplier-receipt-chargeback-ref-20260519T081501Z created supplier receipt chargeback 999900005 / REF 9999/5 for supplier 100 and settled source credit note 999900025 / NCF 9999/25.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_DocumentosF&table=recibosestf | Lists supplier receipt chargebacks. | REF verification used recibo=T, actualizacc=T, tipoop=REF, and tipoterc=F. Search for 999900005 returned status F / Closed, validation N/D, and total 1.51. |
DT_List_DocumentosF&table=NCredF | Checks the source supplier credit note before and after chargeback. | After REF, source NCF 999900025 was LIQ / Finished with ValorPago=1.51. |
NameEntidades&tabla=Forn | Loads supplier master data. | Supplier 100 populated VAT 590303236 and name AI Demo Supplier 20260519T030323Z. |
loadTabDocumentoReciboF | Initializes the supplier chargeback temporary table. | Request used supplier 100, date 19/05/2026, temp id 48104, tipoop=REF, debita=F, and credita=T. |
listaTabDocumentoRecibo&estado=F | Loads pending supplier credit documents. | Returned source row NCF 9999/25, total 1.51, paid 0, pending 1.51, due date 2026-05-20. |
changeEstadoRecibo | Moves a source document into the documents-to-chargeback table. | POST used id 48104, style=ADV2, desconto=0.000000, apagar=0, and listado[]=1. Response: {"success":true}. |
listaTabDocumentoRecibo&estado=T | Loads selected supplier documents. | Selected row changed to state T with valorapagar=1.51. |
payment&option=add | Adds the REF payment row. | Request used compras=T, entidade=100, modopagamento=NUM, modobase=N, total=1.51, edit=F, and tipoop=REF. |
payment&option=validate | Validates payment total before save. | Verified payment total was 1.51 with troco=0 and can_save=true. |
saveDocumentRecibo | Saves the supplier receipt chargeback. | Payload included TipoOp=REF, CodTipoLanc=AccReciboEstF, CodTerc=100, id=48104, totAPagar=1.51, and isedit=F. Response: 999900005&=&OKDOC&=&. |
payment&option=get_payment | Loads saved payment details on the REF view. | Called with num=999900005, tipoop=REF, compras=T, edit=T, and editable=T. |
Evidence: raw/playwright/workflows/supplier-receipt-chargeback-ref-20260519T081501Z.json and workflows/create-supplier-receipt-chargeback-ref.html.
Supplier Transportation Note GTF AJAX Calls
Verified end to end. Workflow run supplier-transport-note-gtf-20260519T082158Z created supplier transportation note 999900005 / GTF 9999/5 for supplier 100. The note remained open, had no payment row, and increased warehouse stock for the tested article.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_DocumentosF&table=GTransF | Loads and verifies supplier transportation notes. | Called with actualizacc=F, tipoop=GTF, recibo=F, and tipoterc=F. Search for 999900005 returned status ABR / Open, validation N/D, and total 1.51. |
listaTabDocumento&isforn=T | Loads the temporary supplier document line table. | Request used temp id 48185, type=C, tipoop=gtf, and create/view mode. |
loadArtigoReducido&compras=T | Loads purchase article data for GTF lines. | Returned article AI-DEMO-20260519-021105, warehouse 1 stock 3, VAT 23, unit cost 1.23, customer-order quantity 4, and supplier-order quantity 2. |
insertLinhaTabDoc | Inserts the GTF line. | Payload used temporary table 48185, id_tipoop=GTF, cliente=100, isforn=T, warehouse 1, and quantity 1. |
create_document&option=calcular_totais | Calculates GTF totals. | Verified total was 1.51. |
saveDocument | Saves the supplier transportation note. | Payload included TipoOp=GTF, NumNoForn=AI-GTF-20260519T082158Z, referencia=AI-GTF-REF-20260519T082158Z, MovimentaStock=1, stockneg=NAO USAR, id=48185, isedit=F, and israsc=0. No CodTipoLanc was present. |
dt_list_recalc_stock_articles_lojas | Checks article stock/order quantities. | Warehouse 1 physical stock changed from 3 to 4; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/supplier-transport-note-gtf-20260519T082158Z.json and workflows/create-supplier-transport-note-gtf.html.
Supplier Waybill GRF AJAX Calls
Verified end to end. Workflow run supplier-waybill-grf-20260519T082819Z created supplier waybill 999900035 / GRF 9999/35 for supplier 100. The waybill remained open, had no payment row, and increased warehouse stock for the tested article.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_DocumentosF&table=GRemF | Loads and verifies supplier waybills. | Called with actualizacc=F, tipoop=GRF, recibo=F, and tipoterc=F. Search for 999900035 returned status ABR / Open, validation N/D, and total 1.51. |
listaTabDocumento&isforn=T | Loads the temporary supplier document line table. | Request used temp id 48302, type=C, tipoop=grf, and create/view mode. |
create_document&option=get_notas_entidade | Loads supplier notes. | Called for supplier 100 with tipoentidade=F. |
loadArtigoReducido&compras=T | Loads purchase article data for GRF lines. | Returned article AI-DEMO-20260519-021105, warehouse 1 stock 4, VAT 23, unit cost 1.23, customer-order quantity 4, and supplier-order quantity 2. |
saveDocument | Saves the supplier waybill. | Payload included TipoOp=GRF, NumNoForn=AI-GRF-20260519T082819Z, referencia=AI-GRF-REF-20260519T082819Z, MovimentaStock=1, stockneg=NAO USAR, id=48302, isedit=F, and israsc=0. No CodTipoLanc was present. |
dt_list_recalc_stock_articles_lojas | Checks article stock/order quantities. | Warehouse 1 physical stock changed from 4 to 5; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/supplier-waybill-grf-20260519T082819Z.json and workflows/create-supplier-waybill-grf.html.
Supplier Consignment Guide GCF AJAX Calls
Verified end to end. Workflow run supplier-consignment-guide-gcf-20260519T083536Z created supplier consignment guide 999900001 / GCF 9999/1 for supplier 100. The guide remained open, had no payment row, and increased warehouse stock for the tested article.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_List_DocumentosF&table=GConsigF | Loads and verifies supplier consignment guides. | Called with actualizacc=F, tipoop=GCF, recibo=F, and tipoterc=F. Search for 999900001 returned status ABR / Open, validation N/D, and total 1.51. |
listaTabDocumento&isforn=T | Loads the temporary supplier document line table. | Request used temp id 48353, type=C, tipoop=gcf, and create/view mode. |
create_document&option=get_notas_entidade | Loads supplier notes. | Called for supplier 100 with tipoentidade=F. |
loadArtigoReducido&compras=T | Loads purchase article data for GCF lines. | Returned article AI-DEMO-20260519-021105, warehouse 1 stock 5, VAT 23, unit cost 1.23, customer-order quantity 4, and supplier-order quantity 2. |
saveDocument | Saves the supplier consignment guide. | Payload included TipoOp=GCF, NumNoForn=AI-GCF-20260519T083536Z, referencia=AI-GCF-REF-20260519T083536Z, delivery fields Carga* and Descarga*, MovimentaStock=1, stockneg=NAO USAR, id=48353, isedit=F, and israsc=0. No CodTipoLanc was present. |
dt_list_recalc_stock_articles_lojas | Checks article stock/order quantities. | Warehouse 1 physical stock changed from 5 to 6; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/supplier-consignment-guide-gcf-20260519T083536Z.json and workflows/create-supplier-consignment-guide-gcf.html.
Supplier Self-Billing AFT AJAX Calls
Verified end to end. Workflow run supplier-self-billing-aft-20260519T084109Z created self-billing invoice 999900001 / AFT 9999/1 for supplier 100. The invoice remained open, had no payment row, included accounting launch fields, and increased warehouse stock for the tested article.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
dt_list_drafts | Loads AFT drafts. | Called with compras=T, search[TipoOp]=AFT, and typesaft=FT. |
DT_List_DocumentosF&table=documaft | Loads and verifies self-billing invoices. | Called with actualizacc=T, tipoop=AFT, recibo=F, and tipoterc=F. Search for 999900001 returned status ABR / Open, validation N/D, and total 1.51. |
listaTabDocumento&isforn=T | Loads the temporary supplier document line table. | Request used temp id 48414, type=C, tipoop=aft, and create/view mode. |
loadArtigoReducido&compras=T | Loads purchase article data for AFT lines. | Returned article AI-DEMO-20260519-021105, warehouse 1 stock 6, VAT 23, unit cost 1.23, customer-order quantity 4, and supplier-order quantity 2. |
saveDocument | Saves the self-billing invoice. | Payload included TipoOp=AFT, NumNoForn=AI-AFT-20260519T084109Z, data_lanc_contabilidade=19/05/2026, CodTipoLanc=AccFactFMerc, referencia=AI-AFT-REF-20260519T084109Z, MovimentaStock=1, stockneg=NAO USAR, id=48414, isedit=F, and israsc=0. |
listaTabDocumentoImpCustos | Loads import-cost/cost allocation rows on the saved document view. | Called with saved view id 48455. |
dt_list_recalc_stock_articles_lojas | Checks article stock/order quantities. | Warehouse 1 physical stock changed from 6 to 7; qtd_enc_cliente stayed 4; qtd_enc_forn stayed 2. |
Evidence: raw/playwright/workflows/supplier-self-billing-aft-20260519T084109Z.json and workflows/create-supplier-self-billing-aft.html.
Purchase Integration AJAX Calls
Safe probe verified. Workflow run purchase-integrations-safe-probe-20260519T084624Z captured Hub4Data and Saphety list/filter behavior without clicking external import, transmit, integrate, or reject actions.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
hub4data&option=documents | Loads Hub4Data supplier documents for possible integration. | Called with from_date=19/04/2026, to_date=19/05/2026, and integrated=0. Demo returned HTTP 500 with JSON message Ocorreu um erro interno no servidor.. |
Sel2_Select_v2&table=lojas | Initializes the Hub4Data warehouse selector. | Observed with warehouse values including 1, 2, 3, 4, 7, and 9. |
Sel2_Select_v2&table=seriesdoc | Initializes the Hub4Data series selector. | Observed with active document series and default term 9999. |
saphetyinbound&option=dt | Loads inbound Saphety records. | Called with dataini=01/04/2026, datafim=19/05/2026, and listar=1. Demo returned HTTP 200 with {"draw":0,"recordsTotal":0,"recordsFiltered":0,"data":[]}. |
Evidence: raw/playwright/workflows/purchase-integrations-safe-probe-20260519T084624Z.json and workflows/use-purchase-integrations.html.
Article Creation AJAX Calls
Verified end to end. The create article workflow generated and verified article AI-DEMO-20260519-021105. Evidence: raw/playwright/workflows/create-article-20260519T021105Z.json and workflows/create-article.html.
| Action or endpoint | Observed purpose | Important fields |
|---|---|---|
action=loadForm&form=artigo&id=novoartigo | Loads the Create New Article modal HTML. | Form identifiers and modal controls. |
action=SearchIfExistCodArtigo | Checks duplicate article code while the user fills Article ID. | id1 contains the candidate article code. Existing code AI-DEMO-20260519-021105 returned T:AI Demo Article 20260519T021105Z in article-duplicate-validation-20260519T090211Z. |
action=createNovoArtigo | Creates the article record. | CodArtigo, Designacao, tipoArtigo, Unidade, PrecoCusto, MargemLucro, PrecoVenda, PVP, CodIva, complementary article fields, tire fields. |
action=dt_list_recalc_stock_articles_lojas | Loads stock by warehouse for the article after save. | artigo is the created code; returned rows include warehouse and zero stock quantities. |
action=DT_Select_ArtigosIVA | Lists and filters the Articles grid. | Global search and columns[1][search][value] both found the created article. |
Stock Movement AJAX Calls
Verified end to end. The movements list, create page, article-line insertion, save confirmation, movement list, and warehouse stock result were captured in stock-movement-20260519T022454Z. Warehouse-transfer and outgoing-recount variants were captured in stock-transfer-movement-20260519T085338Z and stock-exit-movement-20260519T085823Z.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
DT_Select_MovArtigos | Loads the stock movement document list. | After save, returned recordsTotal: 237 and movement 239 at the top of the list. |
/stocks/movstock/movimentos/create | Dedicated stock movement creation page. | Opened by clicking create movement from the movements list. |
listaTabDocumentoMovim | Loads movement article lines for the new movement id. | Observed with id=44558 and loja=1; returned an empty line table before articles were added. |
Sel2_Select | Loads the collaborator selector. | Observed selector for table=empreg, id=CodEmpr, term 1, returning Demo. |
SearchProduct | Autocomplete lookup for article search on the movement page. | Returned the verified article code, description, selling price, and stock values. |
loadArtigoReducido | Loads full reduced article metadata for movement lines. | Returned unit, VAT, cost, stock, lot/serial flags, family/classification, and active status. |
findArtigoCreateMovim | Checks whether the article is already present in the draft movement. | Returned false before line insertion. |
insertLinhaDocMov | Adds the article line to the draft movement. | Posted movement id, article payload, and quantity 2; response "1". |
saveMovimArtigos | Saves the movement after Bootbox confirmation. | Returned 239%&=&OKDOC&=& and redirected to /stocks/movstock/movimentos/view/MjM5. |
dt_list_recalc_stock_articles_lojas | Verifies article stock by warehouse. | Warehouse 1 changed from QtdStock: 0 to QtdStock: 2. |
saveMovimArtigos transfer variant | Saves a transfer between two warehouses. | Movement 243 used CodSTipoMov=10, LojaSaiu=1, LojaEntrou=2, and tipobase=T. Response included warning text plus OKDOC, then redirected to /stocks/movstock/movimentos/view/MjQz. |
DT_Select_MovArtigos transfer verification | Loads the saved transfer in the movements list. | Row 243 showed Tranferencia entre armazens, entrance warehouse [2] Armazem de Monos, exit warehouse [1] Armazem de Entradas, and status Open. |
dt_list_recalc_stock_articles_lojas transfer verification | Confirms both warehouse sides of the transfer. | Warehouse 1 changed from QtdStock: 7 to QtdStock: 6; warehouse 2 changed from QtdStock: 0 to QtdStock: 1. |
saveMovimArtigos outgoing variant | Saves an outgoing recount movement. | Movement 244 used CodSTipoMov=SR, LojaEntrou=2, LojaSaiu=2, and tipobase=S. Response included warning text plus OKDOC, then redirected to /stocks/movstock/movimentos/view/MjQ0. |
DT_Select_MovArtigos outgoing verification | Loads the saved outgoing movement in the movements list. | Row 244 showed Saida p/ Recontagem, warehouse [2] Armazem de Monos, and status Open. |
dt_list_recalc_stock_articles_lojas outgoing verification | Confirms the target warehouse stock reduction. | Warehouse 2 changed from QtdStock: 1 to QtdStock: 0. |
importar_artigos_movart | CSV import action for movement article lines. | Hidden import form posts movement id, movement type, entrance/exit warehouses, valuation, base type, and the required CSV file. |
Stock Route Map AJAX Calls
Verified read-only. Authenticated route-map run stocks-route-map-20260520T105219Z opened all stock module routes and captured list/query endpoints without submitting save, new, delete, import, print, or final actions.
| Action or endpoint | Observed purpose | Route context |
|---|---|---|
DT_Select_ArtigosIVA | Loads and filters article master records. | /stocks/artigos |
DT_Select_MovArtigos | Loads stock movement documents with number, date, description, movement type, warehouses, and state. | /stocks/movstock/movimentos |
DT_Select_Recont | Loads recounting records with warehouse, collaborator, family/sub-family/brand/sector, and open/closed state. | /stocks/movstock/recontagens |
DT_Select_NserieDoc | Loads historical serial-number rows by document, article, serial number, entity, and date. | /stocks/lotser/nserie |
DT_Select_Lotes | Loads article lot rows with validity and cost fields. | /stocks/lotser/lotes |
DT_Select with table=cabtabprecos | Loads base-price management headers. | /stocks/gestprecos |
DT_list_tabprecoartigos | Loads article price-table rows for the price-table wizard. | /stocks/ferramentas/gesttabprecos |
familias&option=dt_familia | Loads family, sub-family, and sub-sub-family support rows. | /stocks/apoio/familias |
DT_MarcasArtigos | Loads stock article brands. | /stocks/apoio/marcas |
POST /stocks/apoio/marcas | Creates an article-brand support-file row. | Verified by stock-brands-crud-20260520T110516Z with multipart form fnewMarca, Designacao=AI Brand 20260520T110516Z, margem_lucro_minima=7, notes, blank image, and blank gfnewmarca. |
deleteMarcaArtigos | Deletes an article-brand support-file row. | Verified with generated codmarca=63; the response returned {"succeeded":true} and the final ListaMarcas search returned No matching records found. |
DT_Select with table=unidades | Loads stock units. | /stocks/apoio/unidades |
POST /stocks/apoio/unidades | Creates a unit support-file row. | Verified by stock-units-crud-20260520T110034Z with form fnewdireccion, gfnewunidad=, CodUnidade=Z00, and Designacao=AI Unit 20260520T110034Z. |
deleteUnidade | Deletes a unit support-file row. | Verified with codUnidade=Z00; the final ListaUnidades search returned No matching records found. |
/api/v2/stocks/label-templates | Loads stock label-layout templates through the v2 API. | /stocks/apoio/etiquetas |
Evidence: raw/playwright/stocks-route-map-20260520T105219Z.json and workflows/use-stock-route-map.html.
Tickets AJAX Calls
Verified with controlled creation. Ticket list, dashboard, and new-ticket form calls were captured in tickets-readonly-probe-20260519T090828Z. Ticket create/trash cleanup was verified in ticket-create-trash-20260519T131756Z, reply with file attachment in ticket-reply-attachment-20260519T133213Z, ticket note add/edit/delete in ticket-notes-20260519T132254Z, ticket task add/delete in ticket-tasks-20260519T133625Z, ticket task completion in ticket-task-completion-20260519T134310Z, ticket task-to-ticket conversion in ticket-task-to-ticket-20260519T134926Z, ticket spam marking in ticket-spam-20260519T135411Z, ticket joining in ticket-merge-20260519T135959Z, ticket forwarding validation in ticket-forward-20260519T140434Z, resend failure handling in ticket-resend-20260519T141001Z, task type support-file CRUD in ticket-task-types-crud-20260519T141538Z, priority support-file CRUD in ticket-priorities-crud-20260519T142035Z, status support-file CRUD in ticket-status-crud-20260519T142644Z, department support-file CRUD in ticket-departments-crud-20260519T143230Z, topic support-file CRUD in ticket-topics-crud-20260519T143724Z, SLA support-file CRUD in ticket-slas-crud-20260519T144235Z, filters support-file CRUD in ticket-filters-crud-20260519T153928Z, macro replies support-file CRUD in ticket-macro-replies-crud-20260519T152909Z, and detail priority/topic/status/owner updates in ticket-detail-updates-20260519T132757Z.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
tickets&option=loadTicketsTree | Loads ticket folder buttons and department/status tree. | Returned Inbox 137, My tickets 15, Unassigned 112, and department/status counters. |
tickets | Loads ticket list rows. | POST response returned recordsTotal: 137 plus ticket number, department, status, assignee, SLA, priority, attachment count, and last-post metadata. |
tickets&option=kanban_refresh | Loads dashboard ticket cards by column. | Observed with type=unsigned, type=doing, and type=done, filtered by assign_id=1. |
tickets&option=MERGE_tickets | Joins selected ticket list rows. | Verified with POST body list[]=188&list[]=189. Response returned {"success":true,"message":""}. Ticket 188 survived with both primary and secondary messages; ticket 189 returned the detail-page message The specified file was not found. |
tickets&option=SPAM_tickets | Marks selected ticket list rows as spam. | Verified with POST body list[]=187 after controlled creation of ticket 187. Response returned {"success":true}. The ticket detail remained accessible and was not automatically marked as trash; the SPAM support-file page still showed no rows for the fake recipient. |
tickets&option=forward_ticket | Forwards the entire ticket to a destination email. | Verified request shape with ticket_id=190, email_dst=aiticket-forward@example.invalid, and empty dst_name. Invalid test recipient returned {"success":false,"message":"Invalid Email"}. |
tickets&option=forward_post | Forwards one ticket post/message to a destination email. | Verified request shape with post_id=217, ticket_id=190, email_dst=aiticket-forward@example.invalid, and empty dst_name. Invalid test recipient returned {"success":false,"values":{"ticket_id":190}}. |
tickets&option=resend_post | Retries sending a failed ticket email post. | Verified with failed post 219 on ticket 191. Response returned {"success":false,"smtp_sent":0,"smtp_date":"2026-05-19 15:10:23","smtp_error":"SMTP connect() failed.","message":"SMTP connect() failed."}. |
DT_Select_tickets_tasks_types | Lists Tickets support-file task types. | Returned id, designation, active flag, registration/alteration metadata, and charge flag. Used before and after CRUD verification. |
tickets&option=create_task_type | Creates a task type support row. | Verified with serialized form id=, designation=AI tt 141538, and active=1. Response returned {"success":true,"id":10}. |
tickets&option=load_task_type | Loads a task type into the edit modal. | Verified with id=10. Response returned task_type with designation, active flag, dates, operator ids, and charge flag. |
tickets&option=update_task_type | Updates a task type support row. | Verified with serialized form id=10, designation=AI tt edit 141538, and active=1. Response returned {"success":true,"affected_rows":1}. |
tickets&option=delete_task_type | Deletes a task type support row. | Verified with id=10. Response returned {"succeeded":true,"message":null,"params":{"affected_rows":1}}; final list no longer contained the edited designation. |
DT_Select_tickets_priorities | Lists ticket priority support rows. | Returned priority id, icon class, name, and active flag. Used to verify create and post-delete absence. |
createUpdateTikPriority | Creates or updates a priority support row. | Verified create with serialized form priority_id=, priority_name=AI pr 142035, priority_active=1, priority_style_fontweight=normal, and empty icon/color fields; response returned {"success":true,"id":5}. Verified update with priority_id=5 and priority_name=AI pr edit 142035; response returned {"success":true,"id":"5"}. |
loadTikPriority | Loads a priority into the edit modal. | Verified with id=5. Response returned name, active flag, style color/background/font weight, icon, icon index, and icon color. |
deleteTikPriority | Deletes a priority support row. | Verified with id=5. Response returned {"success":true}; final list no longer contained the edited name. |
DT_Select_tickets_status | Lists ticket status support rows. | Returned status id, name, type, selectable flag, closed-can-reopen flag, ask-time flag, and active flag. Used to verify create and post-delete absence. |
createUpdateTikStatus | Creates or updates a status support row. | Verified create with serialized form status_id=, status_name=AI st 142644, status_type=normal, status_active=1, status_can_chosen=1, status_closed_can_reopen=1, and ask_time=1; response returned {"success":true,"id":6}. Verified update with status_id=6 and status_name=AI st edit 142644; response returned {"success":true,"id":"6"}. |
loadTikStatus | Loads a status into the edit modal. | Verified with id=6. Response returned top-level fields id, name, type, active, can_chosen, closed_can_reopen, and ask_time. |
deleteTikStatus | Deletes a status support row. | Verified with id=6. Response returned {"success":true}; final list no longer contained the edited name. |
DT_Select_tickets_departments | Lists ticket department support rows. | Returned department id, name, email, active flag, and signature field. Used to verify create and post-delete absence. |
createUpdateTikDepartamento | Creates or updates a department support row. | Verified create with serialized form department_id=, department_name=AI dept 143230, empty email/SLA/tag/signature fields, department_status_reopen=1, and department_active=1; response returned {"success":true,"id":6}. Verified update with department_id=6 and department_name=AI dept edit 143230; response returned {"success":true,"id":"6"}. |
deleteTikDepartment | Deletes a department support row. | Verified with id=6. Response returned {"success":true}; final list no longer contained the edited name. |
DT_Select_tickets_topics | Lists ticket topic support rows. | Returned topic id, name, active flag, public flag, SLA id/name, registration date, and tag format. Used to verify create and post-delete absence. |
createUpdateTikTopic | Creates or updates a topic support row. | Verified create with serialized form topic_id=, topic_name=AI topic 143724, empty topic_sla_id, topic_tag_format=AI, topic_public=1, and topic_active=1; response returned {"success":true,"id":6}. Verified update with topic_id=6 and topic_name=AI topic edit 143724; response returned {"success":true,"id":"6"}. |
loadTikTopic | Loads a topic into the edit modal. | Verified with id=6. Response returned top-level fields id, name, active, public, sla_id, and tag_format. |
deleteTikTopic | Deletes a topic support row. | Verified with id=6. Response returned {"success":true}; final list no longer contained the edited name. |
DT_Select_tickets_slas | Lists ticket SLA support rows. | Returned SLA id, name, active flag, first-response minutes, answer minutes, resolution minutes, and registration/update dates. Used to derive the new id because create returned no id. |
createUpdateTikSLA | Creates or updates an SLA support row. | Verified create with serialized form sla_id=, sla_name=AI sla 144235, sla_period_1st_reply=5, sla_period_reply=10, sla_period_resolution=15, and sla_active=1; response returned {"success":true}. Verified update with sla_id=5, edited name, and minute limits 6, 11, and 16; response returned {"success":true}. |
loadTikSLA | Loads an SLA into the edit modal. | Verified with id=5. Response returned top-level fields id, name, active, period_1st_reply, period_reply, and period_resolution. |
deleteTikSLA | Deletes an SLA support row. | Verified with id=5. Response returned {"success":true}; final list no longer contained the edited name. |
DT_Select_tickets_filters | Lists ticket filter support rows. | Returned filter id, name, execution order, active flag, target, stop-on-match flag, reject-ticket flag, disable-autoresponder flag, and support-file ids for email, status, priority, department, staff, SLA, and topic. |
createUpdateTikFilter | Creates or updates ticket filter support rows. | Verified create with serialized form filter_id=, filter_name=AI filter 153928, filter_execorder=98, filter_target=email, filter_disable_autoresponder=1, and active rule subject contains AI-FILTER-153928; response returned {"success":true,"id":4}. Verified update with filter_id=4, edited name, execution order 99, and edited rule value; response returned {"success":true,"id":"4"}. |
deleteTikFilter | Deletes ticket filter support rows. | Verified delete with id=4 returned {"success":true}; final DT_Select_tickets_filters no longer contained AI filter edit 153928. Validation showed filters require at least one rule and one action. |
DT_Select_tickets_autoanswer | Lists ticket automatic responses. | Returned automatic response id, name, collaborator id, collaborator name, and active flag. Used to verify create, update, and post-delete absence. |
ticketsautoanswer / save_auto_answer | Creates or updates ticket automatic responses. | Verified create with serialized form id=-1, name=AI autoanswer 155118, and codempr=1; response returned {"succeeded":true,"message":{"autoanswer":{"modified":true,"id":5}}}. Verified update with id=5, edited name, and collaborator 1; response returned id 5. |
ticketsautoanswer / delete_auto_answer | Deletes ticket automatic responses. | Verified delete with id=5 returned {"succeeded":true,"message":{"autoanswer":true}}; final list no longer contained the edited name. |
DT_Select_tickets_macro_replies | Lists reusable ticket macro replies. | Returned id, name, rich-text body, department/topic scoping, active flag, reply type, and names for scoped department/topic. |
createUpdateMacroReply | Creates or updates a ticket macro reply. | Verified create with tik_macro_reply_name=AI macro 152909, HTML body, tik_macro_reply_active=1, empty department/topic fields, and tik_macro_reply_type=all; response returned {"success":true,"id":3}. Verified update returned {"success":true,"id":"3"}. |
loadTikMacroReply | Loads a macro reply into the edit modal. | Verified with id=3 and attachs=1. Response returned nested macro_reply with name, text, department/topic ids, active flag, reply type, and attachment list. |
deleteTikMacroReply | Deletes a macro reply support row. | Verified with id=3. Response returned {"success":true}; final list no longer contained the edited name. |
tickets&option=postNewTicket | Creates a ticket from the new-ticket form. | Verified with multipart form data: email_id=2, source=other, customer 910, recipient aiticket@example.invalid, department 2, topic 1, status 1, priority 2, owner 1, send_mail=0, and send_autoresponse=0. Response returned {"success":true,"ticket_id":178}. |
tickets&option=replyTicket | Posts a reply from the ticket detail Reply tab and handles uploaded attachments. | Verified with department=2, ticketID=181, HTML reply_content, empty signature, send_email=0, macro_ticket=0, empty status/assigned/priority update objects, empty system_attach, and text file field anexos[]. Response returned {"succeeded":true,"message":{"data":"true"}}; detail reload showed attachment id 192. |
tickets&option=create_timeline_resolutions | Adds task rows to a ticket timeline. | Verified with serialized form containing ticket_id=182, one tasks[1] row, duration 00:15, designation AI ticket task 20260519T133625Z, date 19/05/2026, time 12:00, assigned user 1, and rich text modal_tasks_body. Response returned {"success":true}; detail reload showed task id 170. |
tickets&option=check_task | Marks a ticket timeline task complete from the completion modal. | Verified with serialized form containing ticket_id=184, task_id=172, duration=15, time_type=m, empty task_type, and completion date/time 19/05/2026 14:40. Response returned {"success":{"success":true,"id":"172"}} plus task data with checked=1, checked_by_name=Demo, and task_duration=15; reload showed row row_172 as table-success with active value 1 and 15m. |
tickets&option=task_newticket | Converts a ticket timeline task into a standalone ticket and replaces the task control with a ticket link. | Verified with id_task=173 and id_ticket=185. Response returned {"success":true,"ticket_id":186}; parent reload showed row row_173 linking to /tickets/tickets/view/MTg2, and converted ticket 186 opened with subject AI ticket conversion task 20260519T134926Z. |
tickets&option=delete_resolution_task | Deletes a task row from the ticket timeline. | Verified with id=170. Response returned {"success":true,"affected_rows":1}; final detail reload no longer contained the task marker. |
tickets&option=noteTicket | Adds a ticket note from the Note tab. | Verified with department=2, ticketID=179, and HTML note_content. Response returned {"succeeded":true,"message":{"data":50}}. |
tickets&option=load_tik_note | Loads an existing ticket note into the edit modal. | Verified with id=50. Response returned note body, ticket id 179, poster Demo, and registration timestamps. |
tickets&option=update_tik_note | Saves an edited ticket note body. | Verified with serialized form id=50 and edited HTML body. Response returned {"success":true,"affected_rows":1}. |
tickets&option=delete_tik_note | Deletes a ticket note. | Verified with id=50. Response returned {"success":true,"affected_rows":1}; the next detail reload no longer contained the edited note marker. |
tickets&option=UPDATE_ticket | Updates ticket detail fields and supports trash cleanup. | Verified field updates on ticket 180: data[prio_id]=3 returned Alta, data[topic_id]=2 returned Manutenção Corretiva, data[status_id]=4 returned Espera, and data[assign_id]=2 returned owner Davidetete Batanete Roberto. Also verified trash action with data[is_trash]=1. |
Sel2_Select | Loads ticket form defaults. | Observed status Aberto from tik_status and collaborator Demo from empreg. |
Sel2_Select_arrays | Loads decorated Select2 options. | Observed priority Normal with icon metadata from tik_priority. |
Settings / Configuration AJAX Calls
Verified read-only. Enterprise Data, Parameters, Documents / Printing, E-Mail Templates, WebHooks, Extra Fields, and Validations calls were captured in settings-readonly-probe-20260519T091902Z. No save/edit/delete/import action was submitted.
| Action or endpoint | Observed purpose | Evidence detail |
|---|---|---|
Sel2_Select_ZonasFiscais | Loads fiscal-zone selector values. | Observed on Enterprise Data and Parameters while resolving Portuguese tax-zone values such as PT-MA. |
Sel2_Contas | Loads accounting account selectors. | Observed in Parameters for exercise/account lookup fields. |
bancos&option=sel2_contasbanc | Loads bank-account selector values. | Observed default bank account value BCP#_#BCP-DO in Parameters. |
Sel2_Select_v2 | Loads newer Select2 selectors. | Observed across Parameters and related configuration selectors. |
Sel2_artigos | Loads article selector values. | Observed on configuration screens that reference article-related settings. |
dt_list_documents | Loads document type rows for Documents / Printing. | Observed on /configuracoes/impressao. |
dt_select_estados | Loads document status rows. | Observed on the Documents / Printing Status tab. |
dt_select_transestados | Loads document status-transition rows. | Observed on Documents / Printing status-transition controls. |
impressao&option=dt_impressao_obs | Loads document print observation/recommendation rows. | Observed on Documents / Printing recommendation/observation areas. |
dt_webemailtemplates | Loads email template rows. | Observed on E-Mail Templates language tabs. |
webhooks&option=list_dt | Loads webhook definitions. | Observed rows included Hook, URL, masked Code key, Order, and Active columns. |
DT_Select with table=ArtExtraGroups | Loads extra-field groups. | Observed on Extra Fields with Code, Name, and Type columns. |
Evidence: raw/playwright/workflows/settings-readonly-probe-20260519T091902Z.json and workflows/use-settings.html.
Aggregate AJAX Action Families From Route Crawl
Verified from 188-route crawl. The crawler captured AJAX/fetch/XHR calls while visiting authenticated routes. OfficeGest uses a mix of the general /ajaxserver endpoint and a smaller number of versioned API paths such as /api/v2/stocks/label-templates.
| Action family | Observed count | Meaning inferred from endpoint names |
|---|---|---|
Sel2_Select_v2 | 193 | Select2 dropdown lookup for entities, employees, document series, statuses, and other tables. |
Sel2_Select | 108 | Older Select2 lookup pattern. |
Sel2_Select_arrays | 92 | Select2 lookup returning multiple display/value columns or decorated values. |
tickets | 54 | Ticket tree, ticket loading, ticket kanban refresh, task/resolution/timeline operations. |
dt_list_drafts | 38 | DataTables draft document listings. |
getEntidade | 25 | Entity detail lookup by type/id. |
edi | 24 | Document status/list calls related to EDI/document communication. |
DT_List_Documentos | 24 | Sales document DataTables listing. |
DT_Select | 17 | Generic DataTables selector/listing calls. |
Sel2_artigos | 16 | Article lookup for document lines and stock workflows. |
mms | 15 | Maintenance-management support calls. |
Sel2_Contas | 12 | Accounting account selector for exercise A2026. |
Raw evidence: raw/playwright/route-crawl/results.json and raw/playwright/route-crawl/module-summary.tsv.