Workflow

How to Manage Sales Invoice Attachments

Verified end to end. Demo run sales-invoice-attachments-20260519T221119Z uploaded a disposable file to saved invoice FT 9999/1699, verified the attachment row, deleted it, and confirmed the table returned to empty.

Evidence Summary

Source invoice
999901699 / FT 9999/1699
Customer
910 / 100 Ouvidos Lda
Route
/vendas/ft/view/OTk5OTAxNjk5
Evidence file
raw/playwright/workflows/latest-sales-invoice-attachments.json

Verified sales invoice attachment workflow

When to Use This

Use this after an invoice is already saved and you need to store supporting files against the document, such as signed copies, proof of delivery, internal evidence, or customer-supplied documents. The attachment action is on the saved invoice view; it does not change invoice totals, customer, lines, stock, payment, print state, or communication state.

Step-by-Step

  1. Open the saved sales invoice view. The verified run used /vendas/ft/view/OTk5OTAxNjk5.
  2. Open the Attachements tab.
  3. Click Upload file.
  4. In the Attach modal, enter a required Description.
  5. Choose an optional category if your company uses attachment categories.
  6. Leave Public checked if the file should be public; uncheck it for internal-only evidence.
  7. Choose the file in the files[] field or drop it in the file area.
  8. Click Upload file.
  9. Confirm the attachment table shows the description, date, original file name, MIME type, size, public flag, and action buttons.
  10. To remove an attachment, click the row's trash action and confirm OK in the delete prompt.

Verified Behavior

CheckObserved result
Tab and tableThe saved FT view exposed Attachements 0, Upload file, and table columns Description, Category, Date, File Name, Type, Size, and Public.
Document bindingThe modal posted action=AceUpload with location=attachments, codempr=1, codterc=910, tipoterc=C, numdoc=999901699, and tipodoc=FT.
Required fields#novoattachment_assunto was required; #novoattachment_categoria was optional; #novoattachment_public defaulted checked; the file field was files[].
Upload responsePOST /ajaxserver returned {"ok":true,"num":193} with the stored generated filename, MIME type text/plain, size 66, and upload path.
Attachment listDT_Select_Attachments used search[NumDoc]=999901699 and search[tipodoc]=FT. After upload, the row showed the verified description, original file name, text/plain, file size, public check, and Download/Edit/Delete row actions.
DeleteThe row delete action opened Are you sure you want to delete?; after confirming OK, the attachment table returned No data available in table.
Safety boundaryNo invoice save, payment, print, communication, stock, or line-edit request was submitted.

Backend Calls Observed

Action or endpointPurpose
DT_Select_AttachmentsLoads attachment rows for the saved invoice using search[NumDoc] and search[tipodoc].
AceUploadUploads the selected file and stores the attachment metadata against the FT document.
lista_attachments_delete({id})Opens the row delete confirmation and removes the attachment after confirmation.

Raw evidence: raw/playwright/workflows/sales-invoice-attachments-20260519T221119Z.json. Screenshots: assets/screenshots/sales-invoice-attachments-20260519T221119Z-01-attachments-tab.png through assets/screenshots/sales-invoice-attachments-20260519T221119Z-04-after-delete.png.