Module

Sales and Invoicing

Sales documents discovered from the dashboard and verified invoice creation behavior.

Start Here for Invoicing

For daily sales work, start with the Invoicing Hub. It explains when to use FT, FR, FS, receipts, credit notes, debit notes, pro-forma invoices, orders, and quotations, then links to the detailed verified workflow for each one.

Invoice / Receipt Cancellation

Verified end to end: Workflow run cancel-invoice-receipt-fr-20260519T234010Z created paid document 999900849 / FR 9999/849, cancelled it from the FR view with reason Erro de faturacao, and verified the list state became ANU / Canceled.

OfficeGest kept the cancelled FR searchable, kept ValorPago=1.97 with pending value 0.00, and reversed the stock movement for article AI-DEMO-20260519-021105 from -38 back to -37.

Detailed how-to: How to Cancel an Invoice / Receipt.

Simplified Invoice Cancellation

Verified end to end: Workflow run cancel-simplified-invoice-fs-20260519T234643Z created paid document 999900012 / FS 9999/12, cancelled it from the FS view with reason Erro de faturacao, and verified the list state became ANU / Canceled.

OfficeGest kept the cancelled FS searchable, kept ValorPago=1.97 with pending value 0.00, and reversed the stock movement for article AI-DEMO-20260519-021105 from -38 back to -37.

Detailed how-to: How to Cancel a Simplified Invoice.

Sales Invoice Fiscal Zone

Verified with caveat: Workflow run sales-invoice-fiscal-zone-20260519T195158Z changed an FT fiscal zone from PT-MA to PT, saved 999901684 / FT 9999/1684, and verified the saved view reset to PT-MA for customer 910.

Raw evidence: raw/playwright/workflows/sales-invoice-fiscal-zone-20260519T195158Z.json and screenshots under assets/screenshots/sales-invoice-fiscal-zone-20260519T195158Z-*.png.

BehaviorObserved detail
Default fiscal zoneThe FT create form opened with #doc_zonafiscal=PT-MA.
Lookup valuesSel2_Select_ZonasFiscais resolved PT / Portugal, with other observed values PT-AC, PT-MA, and ES.
Manual changeThe form accepted #doc_zonafiscal=PT before save.
Final saveThe nested saveDocument form payload included zonafiscal=PT.
Final view nuanceThe saved FT reopened with #doc_zonafiscal=PT-MA, indicating this demo customer default was restored after save.

Detailed how-to: How to Check the Fiscal Zone on a Sales Invoice.

Sales Invoice Line Discount

Verified end to end: Workflow run sales-invoice-line-discount-20260519T195856Z applied a 10% first discount to an FT line, saved 999901685 / FT 9999/1685, and verified the final line and list totals.

Raw evidence: raw/playwright/workflows/sales-invoice-line-discount-20260519T195856Z.json and screenshots under assets/screenshots/sales-invoice-line-discount-20260519T195856Z-*.png.

BehaviorObserved detail
Editable line fieldThe first line discount is stored as Desconto1; the verified run set it to 10.
ValidationThe edit function validates discount values between 0 and 100 and posts to updateEditableTabDoc.
Discount amountFor unit price 1.599, DescontoLinha became 0.1599.
Final lineThe saved FT view retained Desconto1=10, DescontoLinha=0.1599, and VAT value 0.330993.
Invoice resultThe FT list returned total 1.77, paid 0.00, and pending 1.77.

Detailed how-to: How to Apply a Line Discount on a Sales Invoice.

Sales Invoice Line Description

Verified end to end: Workflow run sales-invoice-line-description-20260519T205155Z changed an FT line custom description, saved 999901695 / FT 9999/1695, and verified the final line retained DesignacaoExt.

Raw evidence: raw/playwright/workflows/sales-invoice-line-description-20260519T205155Z.json and screenshots under assets/screenshots/sales-invoice-line-description-20260519T205155Z-*.png.

BehaviorObserved detail
Editable line fieldThe visible designation edit saves the custom value into DesignacaoExt.
Verified valueConsultoria operacional OfficeGest.
Line editupdateEditableTabDoc returned success for campo=DesignacaoExt.
Final lineThe saved FT view retained the original article name in DesignacaoOri and the custom text in DesignacaoExt.
Invoice resultThe FT list returned total 1.97, paid 0.00, and pending 1.97.

Detailed how-to: How to Change a Line Description on a Sales Invoice.

Sales Invoice Line Expected Date

Verified end to end: Workflow run sales-invoice-line-expected-date-20260519T210214Z changed an FT line DataPrevista to 26/05/2026, saved 999901697 / FT 9999/1697, and verified the final line retained the expected date.

Raw evidence: raw/playwright/workflows/sales-invoice-line-expected-date-20260519T210214Z.json and screenshots under assets/screenshots/sales-invoice-line-expected-date-20260519T210214Z-*.png.

BehaviorObserved detail
Editable line fieldThe line expected/planned date is stored as DataPrevista.
Verified value26/05/2026, persisted as 2026-05-26 00:00:00.
Line editupdateEditableTabDoc returned success for campo=DataPrevista.
Final lineThe saved FT view retained DataPrevista=2026-05-26 00:00:00 and TotalCIVA=1.96677.
Invoice resultThe FT list returned total 1.97, paid 0.00, and pending 1.97.

Detailed how-to: How to Set a Line Expected Date on a Sales Invoice.

Sales Invoice Line Unit

Verified end to end: Workflow run sales-invoice-line-unit-20260519T210702Z changed an FT line unit from UN to H, saved 999901698 / FT 9999/1698, and verified the final line retained the unit.

Raw evidence: raw/playwright/workflows/sales-invoice-line-unit-20260519T210702Z.json and screenshots under assets/screenshots/sales-invoice-line-unit-20260519T210702Z-*.png.

BehaviorObserved detail
Editable line fieldThe line unit of measure is stored as CodUnidade.
Verified valueH / Hora / Homem (FTE).
Line editupdateEditableTabDoc returned success for campo=CodUnidade and value=H.
Final lineThe saved FT view retained CodUnidade=H and TotalCIVA=1.96677.
Invoice resultThe FT list returned total 1.97, paid 0.00, and pending 1.97.

Detailed how-to: How to Set a Line Unit of Measure on a Sales Invoice.

Sales Invoice Line Unit Price

Verified end to end: Workflow run sales-invoice-line-unit-price-20260519T204703Z changed an FT line unit price from 1.599 to 2.50, saved 999901694 / FT 9999/1694, and verified the final line and list totals.

Raw evidence: raw/playwright/workflows/sales-invoice-line-unit-price-20260519T204703Z.json and screenshots under assets/screenshots/sales-invoice-line-unit-price-20260519T204703Z-*.png.

BehaviorObserved detail
Editable line fieldThe line unit price is stored as PrecoUni.
Verified value2.50, persisted as 2.5 in the final line data.
Line editupdateEditableTabDoc returned success for campo=PrecoUni and value=2.50.
Final lineThe saved FT view retained PrecoUni=2.5, ValorIVA=0.575, and TotalCIVA=3.075.
Invoice resultThe FT list returned total 3.08, paid 0.00, and pending 3.08.

Detailed how-to: How to Change a Line Unit Price on a Sales Invoice.

Sales Invoice Email Preparation

Verified up to the send boundary: Workflow run sales-invoice-prepare-email-20260519T213657Z opened saved invoice 999901699 / FT 9999/1699, used Communicate / Send email, loaded the email composer, and verified no email send request was submitted.

Raw evidence: raw/playwright/workflows/sales-invoice-prepare-email-20260519T213657Z.json and screenshots under assets/screenshots/sales-invoice-prepare-email-20260519T213657Z-*.png.

BehaviorObserved detail
View actionThe saved FT view exposes Communicate with SMS, Whatsapp, Send email, and Copy document`s public link.
Email datadocuments&option=body_email_data loaded template cli_documentos for invoice 999901699, document type FT, customer 910.
RecipientsThe modal offered demo@example.com from the customer file and luis.santos@guisoft.net as collaborator in To, CC, and BCC selectors.
External-send boundaryNo send-email, SMS, WhatsApp, document creation, payment, or stock request was submitted in the verified run.

Detailed how-to: How to Prepare a Sales Invoice Email.

Sales Invoice SMS Preparation

Verified up to the send boundary: Workflow run sales-invoice-prepare-sms-20260519T214821Z opened saved invoice 999901699 / FT 9999/1699, used Communicate / SMS, loaded the SMS composer, and verified no SMS send request was submitted.

Raw evidence: raw/playwright/workflows/sales-invoice-prepare-sms-20260519T214821Z.json and screenshots under assets/screenshots/sales-invoice-prepare-sms-20260519T214821Z-*.png.

BehaviorObserved detail
View actionThe saved FT view exposes Communicate with SMS, Whatsapp, Send email, and Copy document`s public link.
SMS template datatemplates_sms&option=getTexto loaded template cli_documentos_ft for invoice 999901699, document type FT, customer 910.
Modal defaultsThe modal selected language en, template id 32 / Liquidação das faturas pendentes, and message 100 Ouvidos Lda999901699.
RecipientsThe verified customer had no SMS contact options in #select_sms; OfficeGest returned list_sms_contacts:[].
External-send boundaryNo SMS, email, WhatsApp, document creation, payment, or stock request was submitted in the verified run.

Detailed how-to: How to Prepare a Sales Invoice SMS.

Sales Invoice WhatsApp Availability

Verified with caveat: Workflow run sales-invoice-whatsapp-availability-20260519T215335Z opened saved invoice 999901699 / FT 9999/1699, used Communicate / Whatsapp, and verified the demo account returned false for WhatsApp service availability.

Raw evidence: raw/playwright/workflows/sales-invoice-whatsapp-availability-20260519T215335Z.json and screenshots under assets/screenshots/sales-invoice-whatsapp-availability-20260519T215335Z-*.png.

BehaviorObserved detail
View actionThe saved FT view exposes Communicate with SMS, Whatsapp, Send email, and Copy document`s public link.
Availability checkThe WhatsApp click posted action=chatflow and option=has-whatsapp-service to /ajaxserver.
Demo responseThe response body was false.
Composer stateNo visible modal opened and #sendWhatsapp remained hidden.
External-send boundaryNo WhatsApp, SMS, email, document creation, payment, or stock request was submitted in the verified run.

Detailed how-to: How to Check Sales Invoice WhatsApp Availability.

Sales Invoice Duplicate Preparation

Verified up to the save boundary: Workflow run sales-invoice-prepare-duplicate-20260519T215925Z opened saved invoice 999901699 / FT 9999/1699, clicked Duplicate, verified the copied editable FT form, and confirmed no save request was submitted.

Raw evidence: raw/playwright/workflows/sales-invoice-prepare-duplicate-20260519T215925Z.json and screenshots under assets/screenshots/sales-invoice-prepare-duplicate-20260519T215925Z-*.png.

BehaviorObserved detail
Action linkThe saved FT view exposed Duplicate pointing to /vendas/ft/dupl/OTk5OTAxNjk5.
Copied customerThe duplicate form retained doc_CodTerc=910, 100 Ouvidos Lda, and VAT 509031862.
Copied linelistaTabDocumento returned one line for AI-DEMO-20260519-021105 with quantity 1, unit price 3, PVP=3.69, VAT 23, and total with VAT 3.69.
AdvancesDT_Select_AdiantamentosClientes returned an available FR advance and OfficeGest opened the Advances modal.
Save boundaryNo saveDocument, payment, print, communication, or stock request was submitted.

Detailed how-to: How to Prepare a Duplicate Sales Invoice.

Sales Invoice Gift Card

Verified up to the save boundary: Workflow run sales-invoice-gift-card-20260520T024756Z applied disposable active gift certificate IG024756000001 through the FT Vale oferta modal and received a 1.00 discount value.

Raw evidence: raw/playwright/workflows/sales-invoice-gift-card-20260520T024756Z.json and screenshots under assets/screenshots/sales-invoice-gift-card-20260520T024756Z-*.png.

BehaviorObserved detail
Control#btnValeDesconto opened the Vale oferta modal with selector #numero_valeoferta.
Voucher selectorSel2_Select_CRM_vales_oferta filtered vouchers by estado=ACT.
Apply resultretalho&option=save_valeoferta returned success:true and valor_desconto=1.
BoundaryThe run stopped before final invoice save; no saveDocument, payment, print, or delete-document request was submitted.

Detailed how-to: How to Apply a Gift Card to a Sales Invoice.

Sales Invoice Loyalty Card

Verified up to the discount boundary: Workflow run sales-invoice-loyalty-card-20260520T025748Z looked up loyalty card 509031862 for customer [910] 100 Ouvidos Lda, confirmed active account/card ids 13/10, and verified the demo stops loyalty discount insertion because Artigo para descontos is not configured.

Raw evidence: raw/playwright/workflows/sales-invoice-loyalty-card-20260520T025748Z.json and screenshots under assets/screenshots/sales-invoice-loyalty-card-20260520T025748Z-*.png.

BehaviorObserved detail
Lookup control#fideliz_Cartao and #fideliz_Cartao_btn submitted fidelizBuscaCartao.
Card stateThe lookup returned success:true, card state A, owner customer 910, and qtd_pontos=0.
Discount boundaryfidelizacao&option=add_discount_card_line returned succeeded:false with the missing Artigo para descontos configuration message.
BoundaryThe run stopped before final invoice save; no saveDocument, payment, print, or delete-document request was submitted.

Detailed how-to: How to Use a Loyalty Card on a Sales Invoice.

Sales Invoice Customer Selection

Verified up to the save boundary: Workflow run sales-invoice-customer-selection-20260520T024003Z selected customer [910] 100 Ouvidos Lda on the FT create form and verified that OfficeGest populated billing identity and address fields.

Raw evidence: raw/playwright/workflows/sales-invoice-customer-selection-20260520T024003Z.json and screenshots under assets/screenshots/sales-invoice-customer-selection-20260520T024003Z-*.png.

BehaviorObserved detail
Billing fieldThe FT create form uses #doc_CodTerc for the billing customer / Fact entity.
Lookup resultNameEntidades returned customer 910, 100 Ouvidos Lda, VAT 509031862, and activo:"T".
Populated fieldsOfficeGest filled VAT, billing name, address, locality, postal code, country, and related commercial/customer checks.
Safety boundaryNo saveDocument, saveRascunho, insertLinhaTabDoc, print, payment, or delete request was submitted.

Detailed how-to: How to Select a Customer on a Sales Invoice.

Sales Invoice Portes

Verified up to the save boundary: Workflow run sales-invoice-portes-20260520T021905Z entered 5.00 in the FT Portes modal and verified OfficeGest added a temporary PORTES001 document line.

Raw evidence: raw/playwright/workflows/sales-invoice-portes-20260520T021905Z.json and screenshots under assets/screenshots/sales-invoice-portes-20260520T021905Z-*.png.

BehaviorObserved detail
Control#btn_Portes opened #modalPortes; #valPortes is the net shipping value input.
Added lineThe grid changed from one base article line to two lines after saving the modal.
Portes articleThe added row used CodArtigo=PORTES001, description PORTES, net value 5, VAT 23, and total with VAT 6.15.
Save boundaryNo saveDocument, saveRascunho, print, payment, or delete request was submitted.

Detailed how-to: How to Add Portes to a Sales Invoice.

Sales Invoice VAT and Totals

Verified read-only: Workflow run sales-invoice-totals-20260520T022740Z added one temporary FT line, read the visible VAT/totals panels, called create_document&option=calcular_totais, and stopped before any save or payment action.

Raw evidence: raw/playwright/workflows/sales-invoice-totals-20260520T022740Z.json and screenshots under assets/screenshots/sales-invoice-totals-20260520T022740Z-*.png.

BehaviorObserved detail
VAT rates panelDisplayed 23,00%, incidence 1,60 EUR, and VAT value 0,37 EUR.
Totals panelDisplayed net 1,60 EUR, VAT 0,37 EUR, retention 0,00%, and total 1,97 EUR.
Backend calculationcalcular_totais returned table_ivas[23], iva=0.36777, retencao=0, and total=1.97.
Safety boundaryNo saveDocument, saveRascunho, print, payment, or delete request was submitted.

Detailed how-to: How to Read VAT Rates and Totals on a Sales Invoice.

Sales Invoice Article Search and Line Add

Verified up to the save boundary: Workflow run sales-invoice-article-search-line-20260520T023231Z searched the FT document-tab article field, selected the returned article, and verified the temporary line grid.

Raw evidence: raw/playwright/workflows/sales-invoice-article-search-line-20260520T023231Z.json and screenshots under assets/screenshots/sales-invoice-article-search-line-20260520T023231Z-*.png.

BehaviorObserved detail
Search controlThe document tab exposed #buscaArtigo.
Search termThe verified run typed AI-DEMO-20260519-021105 and captured article search traffic.
Inserted lineThe grid contained AI-DEMO-20260519-021105, description AI Demo Article 20260519T021105Z, quantity 1, VAT 23, and total with VAT 1.96677.
Safety boundaryNo saveDocument, saveRascunho, print, payment, or delete request was submitted.

Detailed how-to: How to Search and Add an Article Line to a Sales Invoice.

Sales Invoice Attachments

Verified end to end: Workflow run sales-invoice-attachments-20260519T221119Z opened saved invoice 999901699 / FT 9999/1699, uploaded a disposable text attachment, verified the row, deleted it, and confirmed the attachment table was empty again.

Raw evidence: raw/playwright/workflows/sales-invoice-attachments-20260519T221119Z.json and screenshots under assets/screenshots/sales-invoice-attachments-20260519T221119Z-*.png.

BehaviorObserved detail
Attachment surfaceThe saved FT view exposed Attachements, Upload file, and a file table with description, category, date, filename, MIME type, size, public flag, and row actions.
Upload bindingThe Attach modal posted AceUpload with location=attachments, codterc=910, tipoterc=C, numdoc=999901699, and tipodoc=FT.
Upload resultThe upload response returned {"ok":true,"num":193} and the table row showed the original text filename, text/plain, and the public flag.
Download resultA separate verified run clicked row Download, and the browser downloaded sales-invoice-download-attachment-20260519T222253Z.txt with the uploaded text content intact.
Delete resultThe row delete action opened Are you sure you want to delete?; after OK, the table returned No data available in table.
Edit resultA separate verified run opened row Edit, saved editAttachment, changed the description to AI FT attachment edited 20260519T221820Z, and cleared the public flag to 0.
Safety boundaryNo invoice save, payment, print, communication, stock, or line-edit request was submitted.

Detailed how-tos: How to Manage Sales Invoice Attachments, How to Download a Sales Invoice Attachment, and How to Edit a Sales Invoice Attachment.

Sales Invoice Public Link

Verified end to end: Workflow run sales-invoice-copy-public-link-20260519T213057Z opened saved invoice 999901699 / FT 9999/1699, used Communicate / Copy document`s public link, copied a pdoc.officegest.com URL, and verified the public page showed the invoice and a download action.

Raw evidence: raw/playwright/workflows/sales-invoice-copy-public-link-20260519T213057Z.json and screenshots under assets/screenshots/sales-invoice-copy-public-link-20260519T213057Z-*.png.

BehaviorObserved detail
View actionThe saved FT view exposes Communicate with SMS, Whatsapp, Send email, and Copy document`s public link.
Copy actionThe click writes the embedded https://pdoc.officegest.com/rwsCRlSDlOXcA36UO7Y URL to the browser clipboard and shows a Successfully copied toast.
Public pageThe copied URL returned status 200, title OfficeGest's Public Documents, invoice FT 9999/1699, customer 100 Ouvidos Lda, amount 3.69 EUR, and Download.
Side effectsNo email, SMS, WhatsApp, document creation, payment, or stock action was submitted.

Detailed how-to: How to Copy a Sales Invoice Public Link.

Public Sales Invoice PDF Download

Verified end to end: Workflow run public-sales-invoice-download-pdf-20260519T214219Z opened the public link for saved invoice 999901699 / FT 9999/1699, clicked Download, and verified the browser downloaded a valid PDF.

Raw evidence: raw/playwright/workflows/public-sales-invoice-download-pdf-20260519T214219Z.json, screenshot assets/screenshots/public-sales-invoice-download-pdf-20260519T214219Z-01-public-document-page.png, and downloaded artifact raw/playwright/downloads/public-sales-invoice-download-pdf-20260519T214219Z-FT 9999_1699.pdf.

BehaviorObserved detail
Public URLhttps://pdoc.officegest.com/rwsCRlSDlOXcA36UO7Y.
Metadatagetpublicdoc returned success:true, document FT 9999/1699, customer 100 Ouvidos Lda, total 3.69 EUR, and a PDF URL.
Downloaded fileBrowser suggested filename FT 9999_1699.pdf.
PDF checkThe file was 25990 bytes and started with a %PDF-1.7 header.
Action logThe public page posted {"action":"download","document_type":"FT","document_number":999901699,...} to /api/v2/sales/action-log; the download still completed when that unauthenticated log response returned 401.

Detailed how-to: How to Download a Sales Invoice PDF from a Public Link.

Sales Invoice PDF Output

Verified end to end: Workflow run sales-invoice-print-pdf-20260519T212449Z opened saved invoice 999901699 / FT 9999/1699, used Print / PDF, generated FT 9999-1699.pdf, and verified the generated file downloaded as application/pdf.

Raw evidence: raw/playwright/workflows/sales-invoice-print-pdf-20260519T212449Z.json and screenshots under assets/screenshots/sales-invoice-print-pdf-20260519T212449Z-*.png.

BehaviorObserved detail
View actionThe saved FT view exposes Print with PDF Original, PDF, PDF Signed, Printer, Print Talo, Offer, electronic invoicing choices, and Excel.
PDF action#imprimirpdf posted action=imprimir, num=999901699, and tipoop=FT.
Generation response{"success":true,"file":"FT 9999-1699.pdf"}.
Download check/download/?docfl=... returned status 200, content type application/pdf, 25990 bytes, and a %PDF-1.7 header.

Detailed how-to: How to Print or Download a Sales Invoice PDF.

Sales Invoice Line Gross Price

Verified end to end: Workflow run sales-invoice-line-gross-price-20260519T211156Z changed an FT line PVP to 3.69, saved 999901699 / FT 9999/1699, and verified the final line and list totals.

Raw evidence: raw/playwright/workflows/sales-invoice-line-gross-price-20260519T211156Z.json and screenshots under assets/screenshots/sales-invoice-line-gross-price-20260519T211156Z-*.png.

BehaviorObserved detail
Editable line fieldThe gross price including VAT is stored as PVP.
Verified valuePVP=3.69.
Line editupdateEditableTabDoc returned success for campo=PVP and value=3.69.
Final lineThe saved FT view retained PVP=3.69, PrecoUni=3, ValorIVA=0.69, and TotalCIVA=3.69.
Invoice resultThe FT list returned total 3.69, paid 0.00, and pending 3.69.

Detailed how-to: How to Change a Line Gross Price on a Sales Invoice.

Sales Invoice Line Warehouse

Verified end to end: Workflow run sales-invoice-line-warehouse-20260519T203515Z changed the line warehouse from 1 to 2, saved 999901692 / FT 9999/1692, and verified the final line retained CodLoja=2.

Raw evidence: raw/playwright/workflows/sales-invoice-line-warehouse-20260519T203515Z.json and screenshots under assets/screenshots/sales-invoice-line-warehouse-20260519T203515Z-*.png.

BehaviorObserved detail
Editable line fieldThe line warehouse/store is stored as CodLoja.
Verified value2 / Armazém de Monos.
Line editupdateEditableTabDoc returned success for campo=CodLoja and value=2.
Save promptsChanging warehouse triggered Will move stock a different warehouse of your preference. Confirm? before the normal save confirmation.
Final lineThe saved FT view retained CodLoja=2.

Detailed how-to: How to Change a Line Warehouse on a Sales Invoice.

Sales Invoice Line VAT

Verified end to end: Workflow run sales-invoice-line-vat-20260519T204152Z changed an FT line VAT rate from 23 to 13, saved 999901693 / FT 9999/1693, and verified the final line and list totals.

Raw evidence: raw/playwright/workflows/sales-invoice-line-vat-20260519T204152Z.json and screenshots under assets/screenshots/sales-invoice-line-vat-20260519T204152Z-*.png.

BehaviorObserved detail
Editable line fieldThe line VAT rate is stored as IVA.
Verified value13, with lookup labels Reduzida 1 and Taxa 13%.
Line editupdateEditableTabDoc returned success for campo=IVA and value=13.
Final lineThe saved FT view retained IVA=13, ValorIVA=0.20787, and TotalCIVA=1.80687.
Invoice resultThe FT list returned total 1.81, paid 0.00, and pending 1.81.

Detailed how-to: How to Change a Line VAT Rate on a Sales Invoice.

Sales Invoice Line VAT Reason

Verified end to end: Workflow run sales-invoice-line-vat-reason-20260519T205716Z set line RI=7, saved 999901696 / FT 9999/1696, and verified the final line retained the VAT reason.

Raw evidence: raw/playwright/workflows/sales-invoice-line-vat-reason-20260519T205716Z.json and screenshots under assets/screenshots/sales-invoice-line-vat-reason-20260519T205716Z-*.png.

BehaviorObserved detail
Editable line fieldThe line VAT reason is stored as RI.
Verified value7 / [M07] Isento Artigo 9.º do CIVA.
Line editupdateEditableTabDoc returned success for campo=RI and value=7.
Final lineThe saved FT view retained RI=7, while IVA=23, ValorIVA=0.36777, and TotalCIVA=1.96677 stayed unchanged.
Invoice resultThe FT list returned total 1.97, paid 0.00, and pending 1.97.

Detailed how-to: How to Set a Line VAT Reason on a Sales Invoice.

Sales Invoice Line Cost Center

Verified end to end: Workflow run sales-invoice-line-cost-center-20260519T202424Z set line cod_centrocusto=0002, saved 999901690 / FT 9999/1690, and verified the final line retained the cost center.

Raw evidence: raw/playwright/workflows/sales-invoice-line-cost-center-20260519T202424Z.json and screenshots under assets/screenshots/sales-invoice-line-cost-center-20260519T202424Z-*.png.

BehaviorObserved detail
Editable line fieldThe line cost center is stored as cod_centrocusto.
Verified value0002 / [0002] Dep.Comercial.
Line editupdateEditableTabDoc returned success for campo=cod_centrocusto and value=0002.
Final lineThe saved FT view retained cod_centrocusto=0002.
Invoice resultThe FT list returned total 1.97, paid 0.00, and pending 1.97.

Detailed how-to: How to Set a Line Cost Center on a Sales Invoice.

Sales Invoice Line Accounting Classification

Verified end to end: Workflow run sales-invoice-line-accounting-classification-20260519T202853Z set line id_classifcontab=1, saved 999901691 / FT 9999/1691, and verified the final line retained the accounting classification.

Raw evidence: raw/playwright/workflows/sales-invoice-line-accounting-classification-20260519T202853Z.json and screenshots under assets/screenshots/sales-invoice-line-accounting-classification-20260519T202853Z-*.png.

BehaviorObserved detail
Editable line fieldThe line accounting classification is stored as id_classifcontab.
Verified value1 / [1] Mercadorias.
Line editupdateEditableTabDoc returned success for campo=id_classifcontab and value=1.
Final lineThe saved FT view retained id_classifcontab=1.
Invoice resultThe FT list returned total 1.97, paid 0.00, and pending 1.97.

Detailed how-to: How to Set a Line Accounting Classification on a Sales Invoice.

Sales Invoice Global Discount

Verified end to end: Workflow run sales-invoice-global-discount-20260519T200434Z applied a 5% document discount, saved 999901686 / FT 9999/1686, and verified the final view and list total.

Raw evidence: raw/playwright/workflows/sales-invoice-global-discount-20260519T200434Z.json and screenshots under assets/screenshots/sales-invoice-global-discount-20260519T200434Z-*.png.

BehaviorObserved detail
Editable document fieldThe first document-level discount is #doc_PerDesc, submitted as PerDesc.
Totals recalculationcreate_document with option=calcular_totais recalculated totals using desconto1=5.
Before discountTotal discount 0.00 EUR, net total 1.60 EUR, VAT 0.37 EUR, final total 1.97 EUR.
After discountTotal discount 0.08 EUR, net total 1.52 EUR, VAT 0.35 EUR, final total 1.87 EUR.
Invoice resultThe FT list returned total 1.87, paid 0.00, and pending 1.87.

Detailed how-to: How to Apply a Global Discount on a Sales Invoice.

Sales Invoice Delivery Details

Verified end to end: Workflow run sales-invoice-delivery-method-20260519T200919Z set delivery method NV, vehicle AI-VAN-2026, loading and unloading fields, saved 999901687 / FT 9999/1687, and verified the final view retained delivery data.

Raw evidence: raw/playwright/workflows/sales-invoice-delivery-method-20260519T200919Z.json and screenshots under assets/screenshots/sales-invoice-delivery-method-20260519T200919Z-*.png.

BehaviorObserved detail
Delivery method#doc_CodModoExp accepted NV / Nossa Viatura. Other observed options were TRA and VV.
Vehicle#doc_Viatura=AI-VAN-2026 persisted on the final FT view.
Loading fieldsCargaMorada, CargaLocalidade, CargaCodPostal, CargaCodPais, and CargaData persisted.
Unloading fieldsDescargaMorada, DescargaLocalidade, DescargaCodPostal, DescargaCodPais, DescargaData, and DescargaTime persisted.
Time nuanceThe entered loading time 10:30 was saved as current form time 21:14; the unloading time 15:45 persisted as entered.

Detailed how-to: How to Set Delivery Details on a Sales Invoice.

Sales Invoice Classification

Verified end to end: Workflow run sales-invoice-classification-20260519T201417Z selected CF / Cliente Final, saved 999901688 / FT 9999/1688, and verified the final view retained the classification.

Raw evidence: raw/playwright/workflows/sales-invoice-classification-20260519T201417Z.json and screenshots under assets/screenshots/sales-invoice-classification-20260519T201417Z-*.png.

BehaviorObserved detail
Classification field#doc_CodClassif stores the FT header classification.
Verified valueCodClassif=CF, label [CF] Cliente Final.
Available optionsObserved options included CF, LJW1, LJW2, MIC001, MOTP01 through MOTP04, OFI001 through OFI003, and PME001.
Final saveThe nested saveDocument form payload included CodClassif=CF.
Invoice resultThe FT list returned total 1.97, paid 0.00, and pending 1.97.

Detailed how-to: How to Set the Classification on a Sales Invoice.

Sales Invoice Currency

Verified end to end: Workflow run sales-invoice-currency-20260519T201838Z changed an FT from EUR to DOL, set exchange rate 1.1, saved 999901689 / FT 9999/1689, and verified the final view retained both values.

Raw evidence: raw/playwright/workflows/sales-invoice-currency-20260519T201838Z.json and screenshots under assets/screenshots/sales-invoice-currency-20260519T201838Z-*.png.

BehaviorObserved detail
Currency field#doc_CodMoeda stores the FT currency; default was EUR.
Exchange field#doc_Cambio stores the exchange rate; default was 1.
Verified valueCodMoeda=DOL, label [DOL] DOLLAR T, and Cambio=1.1.
Final saveThe nested saveDocument form payload included CodMoeda=DOL and Cambio=1.1.
Visible totals nuanceThe final view and FT list still displayed the total as 1.97 with euro formatting in the verified run.

Detailed how-to: How to Set Currency on a Sales Invoice.

Sales Invoice Billing Address

Verified end to end: Workflow run sales-invoice-billing-address-20260519T194417Z selected Other Addresses, entered a manual billing name and address, saved 999901682 / FT 9999/1682, and verified the FT list used the alternate billing name.

Raw evidence: raw/playwright/workflows/sales-invoice-billing-address-20260519T194417Z.json and screenshots under assets/screenshots/sales-invoice-billing-address-20260519T194417Z-*.png.

BehaviorObserved detail
Default addressMoradaFact=-DEF loads the main customer billing name and address.
Alternate addressMoradaFact=-OTR unlocks the billing address fields for manual entry.
Final saveThe nested saveDocument form payload included NomeFact, Morada, Localidade, CodPostal, and CodPais.
Final view nuanceThe final view retained the alternate name/address fields even though the selector displayed -DEF again.
Invoice resultThe FT list returned nomefact: AI Alternate Billing 20260519.

Detailed how-to: How to Set the Billing Address on a Sales Invoice.

Sales Invoice Payment Terms

Verified end to end: Workflow run sales-invoice-payment-terms-20260519T193814Z changed an FT from PP to payment condition 30, saved 999901681 / FT 9999/1681, and verified the due date persisted.

Raw evidence: raw/playwright/workflows/sales-invoice-payment-terms-20260519T193814Z.json and screenshots under assets/screenshots/sales-invoice-payment-terms-20260519T193814Z-*.png.

BehaviorObserved detail
Available terms-, 10, 30, 45, 60, 90, PA, and PP.
Verified termCodFormaPag=30, shown as 30 Dias.
Due dateDataLimitePaga=18/06/2026.
Final saveThe nested saveDocument form payload included both CodFormaPag and DataLimitePaga.
Invoice resultThe FT list returned ABR / Open and fpag: 30 Dias.

Detailed how-to: How to Set Payment Terms and Due Date on a Sales Invoice.

Sales Invoice Vehicle Details

Verified end to end: Workflow run sales-invoice-vehicle-20260519T193202Z selected existing vehicle 75-XU-14 for customer 910, saved 999901680 / FT 9999/1680, and verified the vehicle data persisted.

Raw evidence: raw/playwright/workflows/sales-invoice-vehicle-20260519T193202Z.json and screenshots under assets/screenshots/sales-invoice-vehicle-20260519T193202Z-*.png.

BehaviorObserved detail
Vehicle lookup#doc_CodEquipExt calls Sel2_viaturas and filters active vehicles by selected customer owner or billing customer.
Verified vehicle75-XU-14, Honda, Vision, version 2018.
KilometersPrevious km loaded as 3111111; current km 3111222 was entered and saved.
Final saveThe nested saveDocument form payload included CodEquipExt, Marca, Modelo, Versao, ContKmAnt, ContKmAct, and imprimirviatura.
Invoice resultThe FT list returned ABR / Open and exposed codequipext_c: 75-XU-14.

Verified up to the save/print boundary: Read-only workflow run sales-invoice-vehicle-print-flag-20260520T020900Z confirmed Print vehicle data is checked by default on the FT create form, can be unchecked, and submitted no save, print, payment, line, or document request.

Detailed how-tos: How to Add Vehicle Details to a Sales Invoice and How to Hide Vehicle Details from a Sales Invoice Printout.

Sales Invoice Notes

Verified end to end: Workflow run sales-invoice-notes-20260519T192511Z created 999901679 / FT 9999/1679 with both a public document note and an internal note.

Raw evidence: raw/playwright/workflows/sales-invoice-notes-20260519T192511Z.json and screenshots under assets/screenshots/sales-invoice-notes-20260519T192511Z-*.png.

BehaviorObserved detail
Public note fieldThe create form stores the document/customer note in #doc_Obs, submitted as Obs.
Internal note fieldThe create form stores the back-office note in #i_message2, submitted as Obs2.
Final saveThe nested saveDocument form payload included both note values and returned 999901679 with OKDOC.
PersistenceThe final FT view retained both values in the same fields.
Invoice resultThe FT list returned ABR / Open, total 1.97, paid 0.00, pending 1.97.

Detailed how-to: How to Add Notes to a Sales Invoice.

Discovered Document Types

LabelRouteExploration Status
Factura [FT]/vendas/ftVerified end-to-end creation, cancellation, list validation, and stock reversal on cancellation
Novo documento: Factura [FT]/vendas/ft/createVerified end-to-end creation
Fatura Simplificada [FS]/vendas/fsVerified end-to-end creation, payment, and list validation
Novo documento: Fatura Simplificada [FS]/vendas/fs/createVerified end-to-end creation
Factura / Recibo/vendas/frVerified list page after invoice save
Novo documento: Factura / Recibo/vendas/fr/createVerified end-to-end creation
Encomenda/vendas/encVerified end-to-end creation, cancellation, list validation, and customer-order quantity update
Novo documento: Encomenda/vendas/enc/createVerified end-to-end creation
Orçamento/vendas/orcVerified end-to-end creation, cancellation, and list validation
Novo documento: Orçamento/vendas/orc/createVerified end-to-end creation
Fatura Pro-Forma [FP]/vendas/fpVerified end-to-end creation, cancellation, conversion, and list validation
Novo documento: Fatura Pro-Forma [FP]/vendas/fp/createVerified end-to-end creation
Recibo/vendas/rVerified end-to-end creation and source invoice settlement
Novo documento: Recibo/vendas/r/createVerified end-to-end creation
Receipt Reversal [RE]/vendas/reVerified end-to-end creation and source credit note settlement
Novo documento: Receipt Reversal [RE]/vendas/re/createVerified end-to-end creation
Credit Note [NC]/vendas/ncVerified end-to-end creation from source FS, creation from FT view, cancellation, stock reversal, and list validation
Novo documento: Credit Note [NC]/vendas/nc/createVerified end-to-end creation
Debit Note [ND]/vendas/ndVerified end-to-end creation from source FT, cancellation, and list validation
Novo documento: Debit Note [ND]/vendas/nd/createVerified end-to-end creation
Shipping Doc [GR]/vendas/grVerified end-to-end creation, list validation, and stock update
Novo documento: Shipping Doc [GR]/vendas/gr/createVerified end-to-end creation
Transportation Note [GT]/vendas/gtVerified end-to-end creation, list validation, and unchanged stock
Novo documento: Transportation Note [GT]/vendas/gt/createVerified end-to-end creation
Transportation Note [GIP]/vendas/gipVerified end-to-end creation, list validation, and stock update into negative stock
Novo documento: Transportation Note [GIP]/vendas/gip/createVerified end-to-end creation
Asset Movement Guide [GA]/vendas/gaVerified end-to-end creation, list validation, and source-to-destination stock movement
Novo documento: Asset Movement Guide [GA]/vendas/ga/createVerified end-to-end creation
Guide to the supplier [NGT]/vendas/ngtVerified end-to-end creation, list validation, supplier entity context, and stock update
Novo documento: Guide to the supplier [NGT]/vendas/ngt/createVerified end-to-end creation
Guide consignao [GC]/vendas/gcVerified end-to-end creation, list validation, customer consignment context, and stock update
Novo documento: Guide consignao [GC]/vendas/gc/createVerified end-to-end creation
Separation guide [GSA]/vendas/gsaVerified end-to-end creation, list validation, origin/destination warehouse context, and no immediate stock update
Novo documento: Separation guide [GSA]/vendas/gsa/createVerified end-to-end creation
Internal Doc [GS]/vendas/gsVerified end-to-end creation, list validation, and customer-order quantity update without physical stock movement
Novo documento: Internal Doc [GS]/vendas/gs/createVerified end-to-end creation
C. Interno [CI]/vendas/ciVerified end-to-end creation, vehicle/entity context, list validation, and stock reduction
Novo documento: C. Interno [CI]/vendas/ci/createVerified end-to-end creation
Recuperacao [FTM]/vendas/ftmVerified end-to-end creation, vehicle/entity context, list validation, and stock reduction
Novo documento: Recuperacao [FTM]/vendas/ftm/createVerified end-to-end creation
Reparacao Molde [OR]/vendas/orVerified end-to-end creation, list validation, and customer-order quantity update without physical stock movement
Novo documento: Reparacao Molde [OR]/vendas/or/createVerified end-to-end creation
Damages [RMA]/vendas/rmaVerified end-to-end creation, list validation, and customer-order quantity update without physical stock movement
Novo documento: Damages [RMA]/vendas/rma/createVerified end-to-end creation
Lot Printing/vendas/impresloteVerified filter behavior and print-batch list loading; final print not clicked
Batch Billing/vendas/faturacaoloteVerified page controls and default filter behavior; final invoice/email action not clicked

Sales Utility Pages

Filter behavior verified: /vendas/impreslote and /vendas/faturacaolote were probed with Playwright. Both pages are operational utilities, so the final side-effect buttons were intentionally not clicked.

PageObserved controlsObserved backend behaviorHow-to
Lot Printing
/vendas/impreslote
Customers, Sellers, date type radio buttons, date/time range, NSerie, tipoDoc, tipo_impressao, inicial, final, checked agrupar, and table search fields. listaImpresLote returned 9 default CI rows and changed the button to Print(9). The page script configures final imprimir with selected documents, grouping, print type, and em_lote=T. How to Use Lot Printing
Batch Billing
/vendas/faturacaolote
Customers, Sellers, date range, NSerie, tipoDoc, agrupar, nao_processar_adiant, select_all, table search fields, and required modal series field serieDoc. The default filter returned no eligible rows and left the button at Invoice & Send email(0). The page script configures final faturar_lote with selected docs, document type, grouping, and target series. How to Use Batch Billing

Pro-Forma Invoice Creation Page

Verified route, save, and cancellation: /vendas/fp/create. Page title: OG - ´´Pro-Forma´´ Invoice [FP]. Workflow run proforma-invoice-fp-20260520T002252Z created open pro-forma invoice FP 9999/66. Cancellation run cancel-proforma-invoice-fp-20260520T002319Z cancelled FP 9999/66 and left stock unchanged.

Raw evidence: raw/playwright/workflows/proforma-invoice-fp-20260520T002252Z.json and screenshots under assets/screenshots/proforma-invoice-fp-20260520T002252Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
CustomerCustomer 910, 100 Ouvidos Lda, was accepted with VAT 509031862.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%. The line was allowed with physical stock -41.
Final savesaveDocument returned 999900066%OK&=&OKDOC&=& and opened /vendas/fp/view/OTk5OTAwMDY2.
Pro-forma stateThe FP list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, and reference AI-FP-20260520T002252Z.
Stock/order effectWarehouse 1 physical stock stayed unchanged at -41.

Detailed how-to: How to Create a Pro-Forma Invoice.

Pro-Forma Invoice Cancellation

Verified end to end: /vendas/fp/view/OTk5OTAwMDY2 exposed the red cancellation action. Workflow run cancel-proforma-invoice-fp-20260520T002319Z selected cancellation reason 1 / Erro de faturacao, confirmed the irreversible dialog, and posted deleteDocument for 999900066 / FP 9999/66.

Raw evidence: raw/playwright/workflows/cancel-proforma-invoice-fp-20260520T002319Z.json and screenshots under assets/screenshots/cancel-proforma-invoice-fp-20260520T002319Z-*.png.

BehaviorObserved detail
Cancellation permissionpodeAnularDoc with num=999900066 and tipoop=FP returned succeeded:true.
Cancellation reasonThe reason list used motivos_docs with is_anulacao=1 and activo=1; the verified run used id_motivo_anulacao=1, Erro de faturacao.
Final FP stateThe FP list returned ANU / Canceled, total 1.97, ValorPago=0, and pending value 1.97.
Stock effectWarehouse 1 stock for article AI-DEMO-20260519-021105 stayed -41.

Detailed how-to: How to Cancel a Pro-Forma Invoice.

Converted Pro-Forma Invoice Draft Finalization

Verified end to end: /vendas/fp/view/OTk5OTAwMDYz exposed To convert options for Invoice, Invoice / Receipt, and Internal Doc. The verified Invoice path created FT draft 463 and saved it as final invoice 999901670 / FT 9999/1670. The final FT invoice remained open and unpaid.

Raw evidence: raw/playwright/workflows/finalize-converted-proforma-invoice-draft-20260519T170759Z.json and screenshots under assets/screenshots/finalize-converted-proforma-invoice-draft-20260519T170759Z-*.png.

BehaviorObserved detail
Source pro-formaCreated and converted 999900063 / FP 9999/63.
Visible conversion optionsInvoice calls facturar('ft'); the same menu also showed Invoice / Receipt and Internal Doc.
Draft source metadataThe FT draft copied article AI-DEMO-20260519-021105, quantity 1, and source metadata ndocori=999900063, tipodocori=FP, linhandocori=1.
Final savesaveDocument returned {"return":"999901670%OK&=&OKDOC&=&","print_documents":[]}.
Final invoiceOfficeGest opened /vendas/ft/view/OTk5OTAxNjcw with title OG - FT 9999/1670.
Final stateThe FT list returned ABR / Open, total 1.97, and ValorPago=0.

Detailed how-to: How to Finalize a Converted Pro-Forma Invoice Draft.

Converted Pro-Forma Invoice / Receipt Draft Finalization

Verified end to end: /vendas/fp/view/OTk5OTAwMDY0 converted source pro-forma FP 9999/64 to FR draft 463, accepted payment, and saved it as final invoice / receipt 999900844 / FR 9999/844. The final FR document was finished and paid.

Raw evidence: raw/playwright/workflows/finalize-converted-proforma-invoice-receipt-draft-20260519T171230Z.json and screenshots under assets/screenshots/finalize-converted-proforma-invoice-receipt-draft-20260519T171230Z-*.png.

BehaviorObserved detail
Source pro-formaCreated and converted 999900064 / FP 9999/64.
Draft source metadataThe FR draft copied article AI-DEMO-20260519-021105, quantity 1, and source metadata ndocori=999900064, tipodocori=FP, linhandocori=1.
PaymentThe Payment modal accepted [NUM] Numerário for total 1.97.
Final savesaveDocument returned {"return":"999900844%OK&=&OKDOC&=&","print_documents":[]}.
Final invoice / receiptOfficeGest opened /vendas/fr/view/OTk5OTAwODQ0 with title OG - FR 9999/844.
Final stateThe FR list returned LIQ / Finished, total 1.97, and ValorPago=1.97.

Detailed how-to: How to Finalize a Converted Pro-Forma Invoice / Receipt Draft.

Converted Pro-Forma Sales Order Draft Finalization

Verified end to end: /vendas/fp/view/OTk5OTAwMDY1 converted source pro-forma FP 9999/65 to ENC draft 463 and saved it as final sales order 999900109 / ENC 9999/109. The final ENC order remained open and unpaid.

Raw evidence: raw/playwright/workflows/finalize-converted-proforma-sales-order-draft-20260519T171841Z.json and screenshots under assets/screenshots/finalize-converted-proforma-sales-order-draft-20260519T171841Z-*.png.

BehaviorObserved detail
Source pro-formaCreated and converted 999900065 / FP 9999/65.
Draft source metadataThe ENC draft copied article AI-DEMO-20260519-021105, quantity 1, and source metadata ndocori=999900065, tipodocori=FP, linhandocori=1.
Final savesaveDocument returned {"return":"999900109%&=&OKDOC&=&","print_documents":[]}.
Final sales orderOfficeGest opened /vendas/enc/view/OTk5OTAwMTA5 with title OG - ENC 9999/109.
Final stateThe ENC list returned ABR / Open, total 1.97, and ValorPago=0.

Detailed how-to: How to Finalize a Converted Pro-Forma Sales Order Draft.

Simplified Invoice Creation Page

Verified route and save: /vendas/fs/create. Page title: OG - Simplified invoice [FS]. Workflow run simplified-invoice-fs-20260519T043414Z created finished, paid simplified invoice FS 9999/8. Payment edge cases are also verified: split payment NUM 1.00 plus TRA 0.97 saved FS 9999/11, NUM 1.00 corrected to 1.97 saved FS 9999/10, NUM 2.00 against total 1.97 returned troco:0.03 and saved FS 9999/9, and row deletion removed NUM 1.97 before save with no stock movement.

Raw evidence: raw/playwright/workflows/simplified-invoice-fs-20260519T043414Z.json and screenshots under assets/screenshots/simplified-invoice-fs-20260519T043414Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft and End. Ending without payment opens the Payment modal.
CustomerCustomer 910, 100 Ouvidos Lda, was accepted with VAT 509031862.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%.
Paymentpayment&option=add added [NUM] Numerário for 1.97; payment&option=validate returned valid:true and troco=0.
Final savesaveDocument returned 999900008%OK&=&OKDOC&=& and opened /vendas/fs/view/OTk5OTAwMDA4.
Final stateThe FS list returned LIQ / Finished, ValorPago=1.97, pending 0.00, total 1.97, and reference AI-FS-20260519T043414Z.
Stock effectWarehouse 1 physical stock changed from 1 to 0.

Detailed how-to: How to Create a Simplified Invoice. Split-payment how-to: How to Create a Simplified Invoice with Split Payment. Partial-payment how-to: How to Fix a Partial Payment on a Simplified Invoice. Overpayment how-to: How to Handle Overpayment on a Simplified Invoice. Payment row deletion how-to: How to Delete a Payment Row from a Simplified Invoice.

Receipt Creation Page

Verified route and save: /vendas/r/create. Page title: OG - Receipt [R]. Workflow run receipt-r-20260519T042639Z created closed receipt R 9999/245 and settled invoice FT 9999/1666. Invoice-view receipt creation is also verified: run sales-invoice-to-receipt-20260519T174312Z preloaded FT 9999/1675 and created R 9999/246. Split-payment settlement is verified: run receipt-r-split-payment-20260519T230946Z created R 9999/247 with NUM 1.00 plus TRA 0.97 and settled FT 9999/1701. Overpayment is verified: run receipt-r-overpayment-20260519T231638Z created R 9999/248 with NUM 2.00, change 0.03, and settled FT 9999/1702. Payment-row deletion is verified: run receipt-r-delete-payment-row-20260519T232158Z removed NUM 1.97 before save and left FT 9999/1703 open. Partial-payment validation is verified: run receipt-r-partial-payment-validation-20260519T232700Z blocked NUM 1.00 and left FT 9999/1704 open. Partial-payment correction is verified: run receipt-r-fix-partial-payment-20260519T233330Z edited the same row to 1.97, saved R 9999/249, and settled FT 9999/1705. Cancellation is verified: run cancel-receipt-r-20260519T235225Z cancelled R 9999/250 and reopened FT 9999/1706.

Raw evidence: raw/playwright/vendas-r-create-probe.json, raw/playwright/workflows/receipt-r-20260519T042639Z.json, recovery verifier raw/playwright/workflows/receipt-r-20260519T042639Z-recovery.json, and screenshots under assets/screenshots/receipt-r-20260519T042639Z-*.png.

BehaviorObserved detail
Source documentOpen invoice 999901666 / FT 9999/1666, total 1.97, pending 1.97.
Pending document selectionchangeEstadoRecibo moved only the source FT row into Documents.
Paymentpayment&option=add added [NUM] Numerário for 1.97.
Final savesaveDocumentRecibo returned 999900245&=&OKDOC&=&&=&OKDOC&=& and opened /vendas/r/view/OTk5OTAwMjQ1.
Receipt stateThe R list returned F / Closed, total 1.97, customer 910.
Invoice resultThe source FT invoice changed to LIQ / Finished with ValorPago=1.97 and pending 0.00.

Detailed how-to: How to Create a Receipt. Partial-payment how-tos: How to Handle a Partial Payment on a Receipt and How to Fix a Partial Payment on a Receipt. Split-payment how-to: How to Create a Receipt with Split Payment. Overpayment how-to: How to Handle Overpayment on a Receipt. Payment row deletion how-to: How to Delete a Payment Row from a Receipt. Cancellation how-to: How to Cancel a Receipt. Invoice-view path: How to Create a Receipt from a Sales Invoice.

Receipt Cancellation

Verified end to end: Workflow run cancel-receipt-r-20260519T235225Z created closed receipt 999900250 / R 9999/250, cancelled it with reason Erro de faturacao, and verified the receipt list state became ANU / Canceled.

The verified cancellation reversed the settlement: source invoice 999901706 / FT 9999/1706 changed from LIQ / Finished with ValorPago=1.97 back to ABR / Open with ValorPago=0 and pending value 1.97.

Detailed how-to: How to Cancel a Receipt.

Receipt Partial Payment Validation

Verified end to end: Workflow run receipt-r-partial-payment-validation-20260519T232700Z selected open invoice 999901704 / FT 9999/1704, added NUM 1.00 against a 1.97 selected balance, clicked the payment modal save action, and confirmed OfficeGest blocked final save.

Raw evidence: raw/playwright/workflows/receipt-r-partial-payment-validation-20260519T232700Z.json and screenshots under assets/screenshots/receipt-r-partial-payment-validation-20260519T232700Z-*.png.

BehaviorObserved detail
Source document selectionchangeEstadoRecibo moved source FT 9999/1704 from Outstanding documents to Documents.
Payment rowpayment&option=add created NUM 1.00.
Payment validationpayment&option=validate returned valid:false and troco:-0.97.
Modal resultThe payment form remained populated with NUM 1.00 and payment total 1.00.
Save boundaryNo saveDocumentRecibo request and no OKDOC response were captured.
Source invoice resultFT 9999/1704 stayed ABR / Open with ValorPago=0 and pending value 1.97.

Detailed how-to: How to Handle a Partial Payment on a Receipt.

Receipt Partial Payment Correction

Verified end to end: Workflow run receipt-r-fix-partial-payment-20260519T233330Z selected open invoice 999901705 / FT 9999/1705, added NUM 1.00, received the short-payment warning, edited the same row to 1.97, and saved 999900249 / R 9999/249.

Raw evidence: raw/playwright/workflows/receipt-r-fix-partial-payment-20260519T233330Z.json and screenshots under assets/screenshots/receipt-r-fix-partial-payment-20260519T233330Z-*.png.

BehaviorObserved detail
Source document selectionchangeEstadoRecibo moved source FT 9999/1705 from Outstanding documents to Documents.
Short payment validationpayment&option=validate first returned valid:false and troco:-0.97 for NUM 1.00 against selected total 1.97.
CorrectionThe existing payment row input was edited to 1.97, and #payment_total changed to 1.97.
Final validationpayment&option=validate returned valid:true and troco:0.
Final savesaveDocumentRecibo returned OKDOC and redirected to /vendas/r/view/OTk5OTAwMjQ5.
Receipt and invoice resultR 9999/249 was F / Closed, and FT 9999/1705 became LIQ / Finished with pending value 0.00.

Detailed how-to: How to Fix a Partial Payment on a Receipt.

Receipt Split Payment

Verified end to end: Workflow run receipt-r-split-payment-20260519T230946Z selected open invoice 999901701 / FT 9999/1701, added two receipt payment rows, and saved 999900247 / R 9999/247.

Raw evidence: raw/playwright/workflows/receipt-r-split-payment-20260519T230946Z.json and screenshots under assets/screenshots/receipt-r-split-payment-20260519T230946Z-*.png.

BehaviorObserved detail
Source document selectionchangeEstadoRecibo moved source FT 9999/1701 from Outstanding documents to Documents.
Payment rowspayment&option=add created NUM 1.00, then TRA 0.97.
Payment validationpayment&option=validate returned valid:true and troco:0.
Final savesaveDocumentRecibo returned OKDOC and redirected to /vendas/r/view/OTk5OTAwMjQ3.
Receipt list resultThe R list returned R 9999/247 as F / Closed with total 1.97.
Source invoice resultFT 9999/1701 became LIQ / Finished with ValorPago=1.97 and pending value 0.00.

Detailed how-to: How to Create a Receipt with Split Payment.

Receipt Overpayment

Verified end to end: Workflow run receipt-r-overpayment-20260519T231638Z selected open invoice 999901702 / FT 9999/1702, entered a NUM 2.00 cash payment against a 1.97 value to pay, and saved 999900248 / R 9999/248.

Raw evidence: raw/playwright/workflows/receipt-r-overpayment-20260519T231638Z.json and screenshots under assets/screenshots/receipt-r-overpayment-20260519T231638Z-*.png.

BehaviorObserved detail
Source document selectionchangeEstadoRecibo moved source FT 9999/1702 from Outstanding documents to Documents.
Payment rowpayment&option=add created NUM 2.00.
Payment validationpayment&option=validate returned valid:true and troco:0.03.
Final savesaveDocumentRecibo returned OKDOC and redirected to /vendas/r/view/OTk5OTAwMjQ4.
Receipt list resultThe R list returned R 9999/248 as F / Closed with total 1.97.
Source invoice resultFT 9999/1702 became LIQ / Finished with ValorPago=1.97 and pending value 0.00.

Detailed how-to: How to Handle Overpayment on a Receipt.

Receipt Payment Row Deletion

Verified up to the save boundary: Workflow run receipt-r-delete-payment-row-20260519T232158Z selected open invoice 999901703 / FT 9999/1703, added NUM 1.97, deleted that payment row, and confirmed no receipt was saved.

Raw evidence: raw/playwright/workflows/receipt-r-delete-payment-row-20260519T232158Z.json and screenshots under assets/screenshots/receipt-r-delete-payment-row-20260519T232158Z-*.png.

BehaviorObserved detail
Source document selectionchangeEstadoRecibo moved source FT 9999/1703 from Outstanding documents to Documents.
Payment addpayment&option=add created NUM 1.97 with one row delete button.
Payment deletepayment&option=delete used payment table 55797, nseq=1, and total 1.97.
Modal resultThe payment form became empty and #payment_total returned to 0.
Save boundaryNo saveDocumentRecibo request and no OKDOC response were captured.
Source invoice resultFT 9999/1703 stayed ABR / Open with ValorPago=0 and pending value 1.97.

Detailed how-to: How to Delete a Payment Row from a Receipt.

Receipt No Documents Validation

Verified end to end: Workflow run receipt-no-documents-validation-20260519T191736Z selected customer 910 on /vendas/r/create, left the Documents grid empty, clicked End, and confirmed OfficeGest blocked the save.

Raw evidence: raw/playwright/workflows/receipt-no-documents-validation-20260519T191736Z.json and screenshots under assets/screenshots/receipt-no-documents-validation-20260519T191736Z-*.png.

BehaviorObserved detail
Receipt stateCustomer 910 selected; Documents / DocsAPagar had zero rows.
Validation messageVisible toast showed ErrorNo lines.
NavigationOfficeGest stayed on /vendas/r/create.
Final saveNo saveDocumentRecibo request was submitted.
RecoverySelect at least one pending document and move it into Documents before adding payment and saving.

Detailed how-to: How to Handle the Receipt No Lines Error.

Sales Invoice to Receipt Conversion

Verified end to end: /vendas/ft/view/OTk5OTAxNjc1 exposed To convert / Receipt. Workflow run sales-invoice-to-receipt-20260519T174312Z opened /vendas/r/create with source invoice 999901675 / FT 9999/1675 preloaded, added a cash payment, and finalized 999900246 / R 9999/246.

Raw evidence: raw/playwright/workflows/sales-invoice-to-receipt-20260519T174312Z.json and screenshots under assets/screenshots/sales-invoice-to-receipt-20260519T174312Z-*.png.

BehaviorObserved detail
View actionThe FT view posts to /vendas/r/create with copy=1, codterc_copy=910, num_copy=999901675, and tipoop_copy=FT.
Preloaded receipt documentThe Documents grid contained exactly source FT 9999/1675, total 1.97, value to pay 1.97, and estado=T.
Pending documentsOther open customer documents remained in Outstanding documents and were not automatically settled.
PaymentThe verified run added [NUM] Numerario for 1.97; validation returned change 0.
Final receipt stateThe R list returned F / Closed and total 1.97.
Source FT stateThe source FT list row changed to LIQ / Finished, ValorPago=1.97, and pending value 0.00.

Detailed how-to: How to Create a Receipt from a Sales Invoice.

Deferred Receipt RP Creation Page

Verified route and save: /vendas/rp/create. Page title: OG - Deferred receipt [RP]. Workflow run deferred-receipt-rp-20260519T065002Z created open deferred receipt RP 9999/9 and settled invoice FT 9999/1667.

Raw evidence: raw/playwright/vendas-rp-create-probe.json, raw/playwright/workflows/deferred-receipt-rp-20260519T065002Z.json, and screenshots under assets/screenshots/deferred-receipt-rp-20260519T065002Z-*.png.

BehaviorObserved detail
Route/list identityRP uses /vendas/rp, list table DocumRP, typesaft=RG, tipoop=RP, oficinas=F, recibo=T, and actualizacc=T.
Primary actionsLiquidate moves selected pending documents to the payment grid; End runs the final receipt save.
Form tabsThe create page includes Entity, Details, Recomendations, and Document.
Source documentOpen invoice 999901667 / FT 9999/1667, total 1.97, pending 1.97, due date 20/05/2026.
Pending document selectionchangeEstadoRecibo moved only the source FT row into Documents.
Paymentpayment&option=add added [NUM] Numerario for 1.97, inbox [0] Caixa 0.
Final savesaveDocumentRecibo returned 999900009&=&OKDOC&=&&=&OKDOC&=&.
RP stateThe RP list returned ABR / Open, total 1.97, ValorPago=0, and pending value 1.97.
Invoice resultThe source FT invoice changed to LIQ / Finished with ValorPago=1.97 and pending 0.00.

Detailed how-to: How to Create a Deferred Receipt RP.

Receipt Reversal Creation Page

Verified route and save: /vendas/re/create. Page title: OG - Receipt Reversal [RE]. Workflow run receipt-reversal-re-20260519T044549Z created closed reversal RE 9999/14 and settled credit note NC 9999/58. Cancellation is also verified: run cancel-receipt-reversal-re-20260520T000325Z cancelled RE 9999/15 and reopened source NC 9999/62.

Raw evidence: raw/playwright/vendas-re-create-probe.json, raw/playwright/workflows/receipt-reversal-re-20260519T044549Z.json, and screenshots under assets/screenshots/receipt-reversal-re-20260519T044549Z-*.png.

BehaviorObserved detail
Source documentOpen credit note 999900058 / NC 9999/58, total 74.91, pending 74.91, reference FR 2026/1.
Pending document selectionchangeEstadoRecibo moved only the source NC row into Documents.
Paymentpayment&option=add added [NUM] Numerário for 74.91, and validation allowed saving with troco=0.
Final savesaveDocumentRecibo returned 999900014&=&OKDOC&=&&=&OKDOC&=& and opened /vendas/re/view/OTk5OTAwMDE0.
Reversal stateThe RE list returned F / Closed and total 74.91. The list row still displayed pending 74,91, so the source document state is the stronger settlement check.
Credit note resultThe source NC credit note changed to LIQ / Finished with ValorPago=74.91 and pending 0.00.

Detailed how-to: How to Create a Receipt Reversal. Cancellation how-to: How to Cancel a Receipt Reversal.

Receipt Reversal Cancellation

Verified end to end: Workflow run cancel-receipt-reversal-re-20260520T000325Z created closed reversal 999900015 / RE 9999/15, cancelled it with reason Erro de faturacao, and verified the RE list state became ANU / Canceled.

The verified cancellation reversed the settlement: source credit note 999900062 / NC 9999/62 changed from LIQ / Finished with ValorPago=1.97 back to ABR / Open with ValorPago=0 and pending value 1.97.

Detailed how-to: How to Cancel a Receipt Reversal.

Credit Note Creation Page

Verified route, save, and cancellation: /vendas/nc/create. Page title: OfficeGest with visible document label Credit note. Workflow run credit-note-nc-20260519T050026Z created open credit note NC 9999/59 from source simplified invoice FS 9999/8. Cancellation run cancel-credit-note-nc-20260520T000825Z cancelled NC 9999/62, left source FS 9999/14 finished and paid, and reversed the NC stock effect.

Raw evidence: raw/playwright/vendas-nc-create-probe.json, raw/playwright/vendas-nc-associate-fs-probe.json, raw/playwright/workflows/credit-note-nc-20260519T050026Z.json, and screenshots under assets/screenshots/credit-note-nc-20260519T050026Z-*.png.

BehaviorObserved detail
Source document associationThe Holding-Source menu exposes [FR] Invoice / Receipt, [FS] Simplified invoice, [FT] Invoice, [NV] Note Devolução, and [VD] Cash Sales. The verified run selected FS 9999/8.
ReasonThe reason field is mandatory. It loads from motivos_docs with is_nc=1; the verified run used 1, Erro de faturação.
Associated lineassociar_documento option=save_linhas copied source line 1 from FS 9999/8: article AI-DEMO-20260519-021105, quantity 1, price 1.60, VAT 23%.
Final savesaveDocument returned 999900059%OK&=&OKDOC&=& and opened /vendas/nc/view/OTk5OTAwMDU5.
Credit note stateThe NC list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97.
Source resultAfter save, the FS association list for customer 910 returned no source documents, so FS 9999/8 was no longer creditable through this NC flow.
Stock effectWarehouse 1 stock for the demo article changed from 0 to 1.

Detailed how-to: How to Create a Credit Note. Invoice-view path: How to Convert a Sales Invoice to a Credit Note.

Credit Note Cancellation

Verified end to end: /vendas/nc/view/OTk5OTAwMDYy exposed the red cancellation action. Workflow run cancel-credit-note-nc-20260520T000825Z selected cancellation reason 1 / Erro de faturacao, confirmed the irreversible dialog, and posted deleteDocument for 999900062 / NC 9999/62.

Raw evidence: raw/playwright/workflows/cancel-credit-note-nc-20260520T000825Z.json and screenshots under assets/screenshots/cancel-credit-note-nc-20260520T000825Z-*.png.

BehaviorObserved detail
Cancellation permissionpodeAnularDoc with num=999900062 and tipoop=NC returned succeeded:true.
Cancellation reasonThe reason list used motivos_docs with is_anulacao=1 and activo=1; the verified run used id_motivo_anulacao=1, Erro de faturacao.
Final NC stateThe NC list returned ANU / Canceled, total 1.97, ValorPago=0, and pending value 1.97.
Source FS resultSource 999900014 / FS 9999/14 stayed LIQ / Finished with ValorPago=1.97 and pending value 0.00.
Stock effectWarehouse 1 stock for article AI-DEMO-20260519-021105 moved from -39 to -40, reversing the stock increase created by the credit note.

Detailed how-to: How to Cancel a Credit Note.

Sales Invoice to Credit Note Conversion

Verified end to end: /vendas/ft/view/OTk5OTAxNjc0 exposed To convert / Credit note. Workflow run sales-invoice-to-credit-note-20260519T173701Z copied source invoice 999901674 / FT 9999/1674 into NC create, saved the associated line, and finalized 999900061 / NC 9999/61.

Raw evidence: raw/playwright/workflows/sales-invoice-to-credit-note-20260519T173701Z.json and screenshots under assets/screenshots/sales-invoice-to-credit-note-20260519T173701Z-*.png.

BehaviorObserved detail
View actionThe FT view posts to /vendas/nc/create with copy=1, num_copy=999901674, and tipoop_copy=FT.
Association modalThe NC create page opened Associate documents: Invoice with source FT 9999/1674 preselected and line 1 available.
ReasonThe verified run selected id_motivo=1, Erro de faturacao.
Copied lineThe NC draft kept ndocori=999901674, tipodocori=FT, linhandocori=1, article AI-DEMO-20260519-021105, quantity 1, and total 1.97.
Final NC stateThe NC list returned ABR / Open, total 1.97, ValorPago=0, pending 1.97.
Source FT stateThe source FT list row remained ABR / Open after the NC was saved.
Stock effectFT reduced warehouse 1 stock from 0 to -1; the NC restored it to 0.

Detailed how-to: How to Convert a Sales Invoice to a Credit Note.

Debit Note Creation Page

Verified route, save, and cancellation: /vendas/nd/create. Page title: OfficeGest with visible document label Note debit. Workflow run debit-note-nd-20260520T001537Z created open debit note ND 9999/5 from source invoice FT 9999/1707. Cancellation run cancel-debit-note-nd-20260520T001612Z cancelled ND 9999/5, left the source FT open and unpaid, and left stock unchanged.

Raw evidence: raw/playwright/vendas-nd-create-probe.json, raw/playwright/workflows/debit-note-nd-20260520T001537Z.json, and screenshots under assets/screenshots/debit-note-nd-20260520T001537Z-*.png.

BehaviorObserved detail
Source document associationThe source menu exposes [FR] Invoice / Receipt, [FS] Simplified invoice, [FT] Invoice, and [VD] Cash Sales. The verified run selected FT 9999/1707.
ReasonNo id_motivo reason field was present on the verified ND create page, unlike NC.
Associated lineassociar_documento option=save_linhas copied source line 1 from FT 9999/1707: article AI-DEMO-20260519-021105, quantity 1, price 1.60, VAT 23%.
Final savesaveDocument returned 999900005%OK&=&OKDOC&=& and opened /vendas/nd/view/OTk5OTAwMDA1.
Debit note stateThe ND list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97.
Source resultThe source FT invoice stayed ABR / Open, paid 0.00, pending 1.97.
Stock effectWarehouse 1 stock for the demo article stayed -41 after the ND was saved, matching the configuration that ND does not update stock.

Detailed how-to: How to Create a Debit Note.

Debit Note Cancellation

Verified end to end: /vendas/nd/view/OTk5OTAwMDA1 exposed the red cancellation action. Workflow run cancel-debit-note-nd-20260520T001612Z selected cancellation reason 1 / Erro de faturacao, confirmed the irreversible dialog, and posted deleteDocument for 999900005 / ND 9999/5.

Raw evidence: raw/playwright/workflows/cancel-debit-note-nd-20260520T001612Z.json and screenshots under assets/screenshots/cancel-debit-note-nd-20260520T001612Z-*.png.

BehaviorObserved detail
Cancellation permissionpodeAnularDoc with num=999900005 and tipoop=ND returned succeeded:true.
Cancellation reasonThe reason list used motivos_docs with is_anulacao=1 and activo=1; the verified run used id_motivo_anulacao=1, Erro de faturacao.
Final ND stateThe ND list returned ANU / Canceled, total 1.97, ValorPago=0, and pending value 1.97.
Source FT resultSource 999901707 / FT 9999/1707 stayed ABR / Open with ValorPago=0 and pending value 1.97.
Stock effectWarehouse 1 stock for article AI-DEMO-20260519-021105 stayed -41.

Detailed how-to: How to Cancel a Debit Note.

Shipping Doc Creation Page

Verified route and save: /vendas/gr/create. Page title: OfficeGest with visible document label Shipping Doc. Workflow run shipping-doc-gr-20260519T051437Z created open shipping guide GR 9999/20.

Raw evidence: raw/playwright/vendas-gr-create-probe.json, raw/playwright/workflows/shipping-doc-gr-20260519T051437Z.json, and screenshots under assets/screenshots/shipping-doc-gr-20260519T051437Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Source association menuThe GR create page exposes source association options for [ENC] Internal Doc and [ORC] Quotation, but the verified run created a direct article-line GR.
Delivery tabsThe form includes Entity, Delivery Method, Details, Marketing, Recomendations, and Document.
Transport valuesLoad details defaulted to Leiria headquarters. The verified run set discharge to the customer address in Moura, postal code 7860-004, country PRT.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97.
Final savesaveDocument returned 999900020%OK&=&OKDOC&=& and opened /vendas/gr/view/OTk5OTAwMDIw.
Shipping guide stateThe GR list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, and reference AI-GR-20260519T051437Z.
Stock effectWarehouse 1 stock for the demo article changed from 1 to 0, matching the document configuration that GR updates stock.

Detailed how-to: How to Create a Shipping Doc.

Transportation Note Creation Page

Verified route and save: /vendas/gt/create. Page title: OfficeGest with visible document label Transportation Note. Workflow run transportation-note-gt-20260519T052242Z created open transportation note GT 9999/89.

Raw evidence: raw/playwright/vendas-gt-create-probe.json, raw/playwright/workflows/transportation-note-gt-20260519T052242Z.json, and screenshots under assets/screenshots/transportation-note-gt-20260519T052242Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Source association menuThe GT create page exposes source association options for [ENC] Internal Doc and [ORC] Quotation, but the verified run created a direct article-line GT.
Delivery tabsThe form includes Entity, Delivery Method, Details, Marketing, Recomendations, and Document.
Transport valuesLoad details defaulted to Leiria headquarters. The verified run set discharge to the customer address in Moura, postal code 7860-004, country PRT.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97. The line was accepted with physical stock 0.
Final savesaveDocument returned 999900089%OK&=&OKDOC&=& and opened /vendas/gt/view/OTk5OTAwMDg5.
Transportation note stateThe GT list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, and reference AI-GT-20260519T052242Z.
Stock effectWarehouse 1 stock for the demo article stayed 0, matching the observed GT call context actualizastocks=F.

Detailed how-to: How to Create a Transportation Note.

GIP Transportation Note Creation Page

Verified route and save: /vendas/gip/create. Page title: OfficeGest with visible document label Transportation Note. Workflow run transportation-note-gip-20260519T052722Z created open transportation note GIP 9999/18.

Raw evidence: raw/playwright/vendas-gip-create-probe.json, raw/playwright/workflows/transportation-note-gip-20260519T052722Z.json, recovered parser evidence raw/playwright/workflows/transportation-note-gip-20260519T052722Z-failed.json, and screenshots under assets/screenshots/transportation-note-gip-20260519T052722Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Route/list identityGIP uses /vendas/gip and list table DocumGIP, while still sending typesaft=GT with tipoop=GIP.
Delivery tabsThe probe found Entity, Delivery Method, Details, Recomendations, and Document tabs on the create page.
Transport valuesLoad details defaulted to Leiria headquarters. The verified run set discharge to the customer address in Moura, postal code 7860-004, country PRT.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97. The line was accepted with physical stock 0.
Final savesaveDocument returned 999900018%AI-DEMO-20260519-021105:1#&=&OKDOC&=& and opened /vendas/gip/view/OTk5OTAwMDE4.
GIP stateThe GIP list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, and reference AI-GIP-20260519T052722Z.
Stock effectWarehouse 1 stock for the demo article changed from 0 to -1, matching the observed GIP article lookup context actualizastocks=T.

Detailed how-to: How to Create a GIP Transportation Note.

Asset Movement Guide Creation Page

Verified route and save: /vendas/ga/create. Page title: OfficeGest with visible document label Asset Movement Guide. Workflow run asset-movement-guide-ga-20260519T053643Z created open movement guide GA 9999/15.

Raw evidence: raw/playwright/vendas-ga-create-probe.json, raw/playwright/workflows/asset-movement-guide-ga-20260519T053643Z.json, and screenshots under assets/screenshots/asset-movement-guide-ga-20260519T053643Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Route/list identityGA uses /vendas/ga, list table GMovArt, typesaft=GA, and tipoop=GA.
Warehouse controlsThe source is the line/store warehouse and load selection; the destination is CodLojaEntrada, visible as Warehouse Destination. The verified run moved from warehouse 1 to warehouse 2.
Delivery tabsThe create page includes Entity, Delivery Method, Details, Marketing, Recomendations, and Document.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, source warehouse 1, unit price 1.60, VAT 23%, total 1.97. The line was accepted with source stock -1.
Final savesaveDocument returned 999900015%AI-DEMO-20260519-021105:1#&=&OKDOC&=& and opened /vendas/ga/view/OTk5OTAwMDE1.
GA stateThe GA list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, and reference AI-GA-20260519T053643Z.
Stock effectWarehouse 1 changed -1 to -2; warehouse 2 changed 0 to 1.

Detailed how-to: How to Create an Asset Movement Guide.

Guide to Supplier Creation Page

Verified route and save: /vendas/ngt/create. Page title: OfficeGest with visible document label Guide to the supplier. Workflow run guide-to-supplier-ngt-20260519T054516Z created open supplier guide NGT 9999/13.

Raw evidence: raw/playwright/vendas-ngt-create-probe.json, raw/playwright/workflows/guide-to-supplier-ngt-20260519T054516Z.json, and screenshots under assets/screenshots/guide-to-supplier-ngt-20260519T054516Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Route/list identityNGT uses /vendas/ngt, list table NGTransF, typesaft=GT, and tipoop=NGT.
Supplier entityThe entity selector searches forn, and NameEntidades is called with tabla=Forn. The verified list row returned tipoterc=F and codterc=100.
Confirmation behaviorFinal save showed two confirmations: Will move stock a different warehouse of your preference. Confirm? and Are you sure?.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 2, unit price 1.23, VAT 23%, total 1.51. The line was accepted with source stock 1.
Final savesaveDocument returned 999900013%OK&=&OKDOC&=& and opened /vendas/ngt/view/OTk5OTAwMDEz.
NGT stateThe NGT list returned ABR / Open, ValorPago=0, pending 1.51, total 1.51, and reference AI-NGT-20260519T054516Z.
Stock effectWarehouse 2 stock for the demo article changed from 1 to 0; warehouse 1 stayed -2.

Detailed how-to: How to Create a Guide to Supplier.

Consignment Guide Creation Page

Verified route and save: /vendas/gc/create. Page title: OfficeGest with visible document label Guide consignao. Workflow run consignment-guide-gc-20260519T055311Z created open consignment guide GC 9999/5.

Raw evidence: raw/playwright/vendas-gc-create-probe.json, raw/playwright/workflows/consignment-guide-gc-20260519T055311Z.json, and screenshots under assets/screenshots/consignment-guide-gc-20260519T055311Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Route/list identityGC uses /vendas/gc, list table GConsig, typesaft=GC, and tipoop=GC.
Source association menuThe create page exposes source association options for [ENC] Internal Doc and [ORC] Quotation, but the verified run created a direct article-line GC.
Delivery tabsThe create page includes Entity, Delivery Method, Details, Marketing, Recomendations, and Document.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97. The line was accepted with source stock 2.
Final savesaveDocument returned 999900005%OK&=&OKDOC&=& and opened /vendas/gc/view/OTk5OTAwMDA1.
GC stateThe GC list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, and reference AI-GC-20260519T055311Z.
Stock effectWarehouse 1 stock for the demo article changed from 2 to 1; warehouse 2 stayed 0.

Detailed how-to: How to Create a Consignment Guide.

Separation Guide Creation Page

Verified route and save: /vendas/gsa/create. Page title: OfficeGest with visible document label Separation guide. Workflow run separation-guide-gsa-20260519T055811Z created open separation guide GSA 9999/1.

Raw evidence: raw/playwright/vendas-gsa-create-probe.json, raw/playwright/workflows/separation-guide-gsa-20260519T055811Z.json, and screenshots under assets/screenshots/separation-guide-gsa-20260519T055811Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Route/list identityGSA uses /vendas/gsa, list table documgsa, typesaft=GA, and tipoop=GSA.
Document purposeThe create page describes GSA as a Material preparation document for shipment between internal warehouses.
Warehouse controlsThe source is localCarga and the line/store warehouse; the destination is CodLojaEntrada, visible as Warehouse Destination. The verified run used source 1 and destination 2.
Follow-up actionThe saved GSA view exposed Convert to GA, which indicates GSA can be used as preparation before the stock-moving asset movement guide.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, source warehouse 1, unit price 1.60, VAT 23%, total 1.97. The line was accepted with source stock 1.
Final savesaveDocument returned 999900001%OK&=&OKDOC&=& and opened /vendas/gsa/view/OTk5OTAwMDAx.
GSA stateThe GSA list returned ABR / Open, origin Armazem de Entradas, destination Armazem de Monos, ValorPago=0, pending 1.97, total 1.97, and reference AI-GSA-20260519T055811Z.
Stock effectNo stock change observed after save: warehouse 1 stayed 1; warehouse 2 stayed 0.

Detailed how-to: How to Create a Separation Guide.

Internal Doc GS Creation Page

Verified route and save: /vendas/gs/create. Page title: OG - Internal Doc [GS]. Workflow run internal-doc-gs-20260519T060333Z created open internal document GS 9999/21.

Raw evidence: raw/playwright/vendas-gs-create-probe.json, raw/playwright/workflows/internal-doc-gs-20260519T060333Z.json, and screenshots under assets/screenshots/internal-doc-gs-20260519T060333Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Route/list identityGS uses /vendas/gs, list table DocumGS, typesaft=WNE, and tipoop=GS.
Form tabsThe create page includes Entity, Details, Marketing, Recomendations, and Document; no delivery-method tab was present.
Source association menuThe create page exposes source association for [ORC] Quotation. The verified run created a direct article-line GS.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97, estimated date 19/05/2026.
Final savesaveDocument returned 999900021%&=&OKDOC&=& and opened /vendas/gs/view/OTk5OTAwMDIx.
GS stateThe GS list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, and reference AI-GS-20260519T060333Z.
Stock/order effectWarehouse 1 physical stock stayed 1; customer-order quantity changed from 1 to 2.

Detailed how-to: How to Create an Internal Doc GS.

C. Interno CI Creation Page

Verified route and save: /vendas/ci/create. Page title: OG - C. Interno [CI]. Workflow run internal-invoice-ci-20260519T060951Z created open internal invoice CI 9999/9.

Raw evidence: raw/playwright/vendas-ci-create-probe.json, raw/playwright/workflows/internal-invoice-ci-20260519T060951Z.json, and screenshots under assets/screenshots/internal-invoice-ci-20260519T060951Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish. The page also exposed document/printing and lot-printing controls.
Route/list identityCI uses /vendas/ci, list table DocumCI, typesaft=FT, tipoop=CI, oficinas=T, recibo=F, and actualizacc=T.
Form tabsThe create page includes Vehicle & Entity, Delivery Method, Details, Marketing, Recomendations, and Document. The saved view also exposed an Accounting tab.
Vehicle contextVehicle fields were visible and Print vehicle data was checked. The verified direct article-line save left license plate, brand, model, and mileage blank, so vehicle selection was optional for that path.
Delivery contextThe verified run populated load fields with Leiria, postal code 2400, country PRT, and discharge fields from customer 910 in Moura.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97.
Final savesaveDocument returned 999900009%OK&=&OKDOC&=& and opened /vendas/ci/view/OTk5OTAwMDA5.
CI stateThe CI list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, payment term Pronto Pagamento, and reference AI-CI-20260519T060951Z.
Stock effectWarehouse 1 physical stock changed from 1 to 0; warehouse 2 stayed 0; customer-order and supplier-order quantities stayed unchanged.

Detailed how-to: How to Create a C. Interno CI.

Recuperacao FTM Creation Page

Verified route and save: /vendas/ftm/create. Page title: OG - Recuperacao [FTM]. Workflow run recovery-ftm-20260519T061803Z created open recovery invoice FTM 9999/16.

Raw evidence: raw/playwright/vendas-ftm-create-probe.json, raw/playwright/workflows/recovery-ftm-20260519T061803Z.json, and screenshots under assets/screenshots/recovery-ftm-20260519T061803Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish. The page also exposed document/printing and lot-printing controls.
Route/list identityFTM uses /vendas/ftm, list table DocumFTM, typesaft=FT, tipoop=FTM, oficinas=T, recibo=F, and actualizacc=T.
Form tabsThe create page includes Vehicle & Entity, Delivery Method, Details, Marketing, Recomendations, and Document. The saved view also exposed an Accounting tab.
Vehicle contextVehicle fields were visible and Print vehicle data was checked. The verified direct article-line save left license plate, brand, model, and mileage blank, so vehicle selection was optional for that path.
Delivery contextThe verified run populated load fields with Leiria, postal code 2400, country PRT, and discharge fields from customer 910 in Moura.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97.
Final savesaveDocument returned 999900016%OK&=&OKDOC&=& and opened /vendas/ftm/view/OTk5OTAwMDE2.
FTM stateThe FTM list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, payment term Pronto Pagamento, and reference AI-FTM-20260519T061803Z.
Stock effectWarehouse 1 physical stock changed from 2 to 1; warehouse 2 stayed 0; customer-order and supplier-order quantities stayed unchanged.

Detailed how-to: How to Create a Recuperacao FTM.

Reparacao Molde OR Creation Page

Verified route and save: /vendas/or/create. Page title: OG - Reparacao Molde [OR]. Workflow run mold-repair-or-20260519T062304Z created open mold repair document OR 9999/3.

Raw evidence: raw/playwright/vendas-or-create-probe.json, raw/playwright/workflows/mold-repair-or-20260519T062304Z.json, and screenshots under assets/screenshots/mold-repair-or-20260519T062304Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Route/list identityOR uses /vendas/or, list table DocumOR, typesaft=WNE, tipoop=OR, oficinas=F, recibo=F, and actualizacc=F.
Form tabsThe create page includes Entity, Delivery Method, Details, Marketing, Recomendations, and Document. The saved view also exposed Validation Notes.
Source association menuThe create page exposes source association for [ENC] Internal Doc. The verified run created a direct article-line OR.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97, estimated date 19/05/2026.
Final savesaveDocument returned 999900003%&=&OKDOC&=& and opened /vendas/or/view/OTk5OTAwMDAz.
OR stateThe OR list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, payment term Pronto Pagamento, and reference AI-OR-20260519T062304Z.
Stock/order effectWarehouse 1 physical stock stayed 1; customer-order quantity changed from 2 to 3; supplier-order quantity stayed 1.

Detailed how-to: How to Create a Reparacao Molde OR.

Damages RMA Creation Page

Verified route and save: /vendas/rma/create. Page title: OG - Damages [RMA]. Workflow run damages-rma-20260519T062812Z created open damages document RMA 9999/9.

Raw evidence: raw/playwright/vendas-rma-create-probe.json, raw/playwright/workflows/damages-rma-20260519T062812Z.json, and screenshots under assets/screenshots/damages-rma-20260519T062812Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
Route/list identityRMA uses /vendas/rma, list table DocumRMA, typesaft=WNE, tipoop=RMA, oficinas=F, recibo=F, and actualizacc=F.
Form tabsThe create page includes Entity, Details, Marketing, Recomendations, and Document; no delivery-method tab was present. The saved view also exposed Validation Notes.
Source association menuThe create page exposes source association for [ORC] Quotation. The verified run created a direct article-line RMA.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97, estimated date 19/05/2026.
Final savesaveDocument returned 999900009%&=&OKDOC&=& and opened /vendas/rma/view/OTk5OTAwMDA5.
RMA stateThe RMA list returned ABR / Open, ValorPago=0, pending 1.97, total 1.97, payment term Pronto Pagamento, and reference AI-RMA-20260519T062812Z.
Stock/order effectWarehouse 1 physical stock stayed 1; customer-order quantity changed from 3 to 4; supplier-order quantity stayed 1.

Detailed how-to: How to Create Damages RMA.

Zoom Level PRE Creation Page

Verified route and save: /vendas/pre/create. Page title: OG - Zoom Level [PRE]. Workflow run zoom-level-pre-20260519T064145Z created finished document PRE 9999/79.

Raw evidence: raw/playwright/vendas-pre-create-probe.json, raw/playwright/vendas-pre-source-association-probe.json, raw/playwright/workflows/zoom-level-pre-20260519T064145Z.json, and screenshots under assets/screenshots/zoom-level-pre-20260519T064145Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft and End. Final save opens the standard payment modal.
Route/list identityPRE uses /vendas/pre, list table DocumPRE, typesaft=NC, tipoop=PRE, oficinas=F, recibo=F, and actualizacc=T.
Form tabsThe create page includes Entity, Details, Marketing, Recomendations, and Document.
Source association menuThe create page exposes [FR] Invoice / Receipt, [FS] Simplified invoice, [FT] Invoice, [NV] Note Devoluo, and [VD] Cash Sales. The verified run used 999900008 / FS 9999/8.
Direct line behaviorA direct article insertion attempt called loadArtigoReducido with tipoop=PRE but returned no insertable article row, so the successful workflow used source association.
Associated lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%, total 1.97, source FS_999900008_1.
Final saveThe payment modal required [NUM] Numerario for 1.97, then confirmation. saveDocument returned 999900079%OK&=&OKDOC&=&.
PRE stateThe PRE list returned LIQ / Finished, ValorPago=1.97, pending 0.00, total 1.97, and reference AI-PRE-20260519T064145Z.
Stock/order effectWarehouse 1 physical stock changed from 1 to 2; customer-order quantity stayed 4; supplier-order quantity stayed 1.

Detailed how-to: How to Create a Zoom Level PRE.

Quotation Creation Page

Verified route and save: /vendas/orc/create. Page title: OG - Quotation [ORC]. Workflow run quotation-orc-20260520T004056Z created open quotation ORC 9999/95.

Raw evidence: raw/playwright/vendas-orc-create-probe.json, raw/playwright/workflows/quotation-orc-20260520T004056Z.json, and screenshots under assets/screenshots/quotation-orc-20260520T004056Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
CustomerCustomer 910, 100 Ouvidos Lda, was accepted with VAT 509031862.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%.
Final savesaveDocument returned 999900095%OK&=&OKDOC&=& and opened /vendas/orc/view/OTk5OTAwMDk1.
Quotation stateThe ORC list returned ABR / Open, ValorPago=0, total 1.97, and reference AI-ORC-20260520T004056Z.
Stock/order effectWarehouse 1 stock stayed -41; customer-order quantity stayed 5; supplier-order quantity stayed 2.

Detailed how-to: How to Create a Quotation.

Quotation Cancellation

Verified end to end: /vendas/orc/view/OTk5OTAwMDk1 cancelled open quotation 999900095 / ORC 9999/95 and verified the final ORC list state plus stock/order quantities.

Raw evidence: raw/playwright/workflows/cancel-quotation-orc-20260520T004120Z.json and screenshots under assets/screenshots/cancel-quotation-orc-20260520T004120Z-*.png.

BehaviorObserved detail
Visible actionThe saved ORC view exposes a cancellation action that calls btnDelete('Anular').
Confirmation styleThe verified ORC cancellation showed the irreversible confirmation directly; no cancellation-reason selector or podeAnularDoc request was captured.
Backend calldeleteDocument posted num=999900095, tipoop=ORC, tot_fin=1.97, and serialized form data with empty anulacao=.
Final stateThe ORC list returned ANU / Canceled, total 1.97, ValorPago=0, and pending value 1.97.
Stock/order effectWarehouse 1 stock stayed -41; qtd_enc_cliente stayed 5; qtd_enc_forn stayed 2.

Detailed how-to: How to Cancel a Quotation.

Quotation to Invoice Draft Conversion

Verified to draft: /vendas/orc/view/OTk5OTAwMDg5 converted quotation ORC 9999/89 into FT draft 458 at /vendas/ft/rasc/NDU4. The invoice draft was not finalized.

Raw evidence: raw/playwright/workflows/quotation-to-invoice-draft-20260519T160923Z.json and screenshots under assets/screenshots/quotation-to-invoice-draft-20260519T160923Z-*.png.

BehaviorObserved detail
Visible actionThe saved ORC view exposes To convert with Invoice, Invoice / Receipt, Internal Doc, and Order of Service options.
Verified conversionInvoice calls facturar('ft'), which posts facturardoc with tipoopdest=ft, source tipoop=ORC, and source number 999900089.
Responsefacturardoc returned "OK:458:vendas" and opened /vendas/ft/rasc/NDU4.
Draft lineThe FT draft copied article AI-DEMO-20260519-021105, quantity 1, VAT 23%, and source metadata ndocori=999900089, tipodocori=ORC, linhandocori=1.
Source quotationThe ORC list still returned ABR / Open immediately after draft creation, so final invoice state still needs the normal FT save/finalization check.

Detailed how-to: How to Convert a Quotation to an Invoice Draft.

Converted Quotation Invoice Draft Finalization

Verified end to end: /vendas/ft/rasc/NDYz saved converted draft 463 as final invoice 999901669 / FT 9999/1669. The final FT invoice remained open and unpaid.

Raw evidence: raw/playwright/workflows/finalize-converted-quotation-invoice-draft-20260519T165348Z.json and screenshots under assets/screenshots/finalize-converted-quotation-invoice-draft-20260519T165348Z-*.png.

BehaviorObserved detail
Source quotationCreated and converted 999900092 / ORC 9999/92.
Draft source metadataThe FT draft copied article AI-DEMO-20260519-021105, quantity 1, and source metadata ndocori=999900092, tipodocori=ORC, linhandocori=1.
Final savesaveDocument returned {"return":"999901669%OK&=&OKDOC&=&","print_documents":[]}.
Final invoiceOfficeGest opened /vendas/ft/view/OTk5OTAxNjY5 with title OG - FT 9999/1669.
Final stateThe FT list returned ABR / Open, total 1.97, and ValorPago=0.

Detailed how-to: How to Finalize a Converted Quotation Invoice Draft.

Quotation to Invoice / Receipt Draft Conversion

Verified to draft: /vendas/orc/view/OTk5OTAwMDkw converted quotation ORC 9999/90 into FR draft 460 at /vendas/fr/rasc/NDYw. The invoice / receipt draft was not finalized or paid.

Raw evidence: raw/playwright/workflows/quotation-to-invoice-receipt-draft-20260519T162111Z.json and screenshots under assets/screenshots/quotation-to-invoice-receipt-draft-20260519T162111Z-*.png.

BehaviorObserved detail
Visible actionThe saved ORC view exposes To convert with Invoice, Invoice / Receipt, Internal Doc, and Order of Service options.
Verified conversionInvoice / Receipt calls facturar('fr'), which posts facturardoc with tipoopdest=fr, source tipoop=ORC, and source number 999900090.
Responsefacturardoc returned "OK:460:vendas" and opened /vendas/fr/rasc/NDYw.
Draft lineThe FR draft copied article AI-DEMO-20260519-021105, quantity 1, VAT 23%, and source metadata ndocori=999900090, tipodocori=ORC, linhandocori=1.
Source quotationThe ORC list still returned ABR / Open immediately after draft creation, so final paid state still needs the normal FR save/payment/finalization check.

Detailed how-to: How to Convert a Quotation to an Invoice / Receipt Draft.

Converted Quotation Invoice / Receipt Draft Finalization

Verified end to end: /vendas/fr/rasc/NDYz saved converted draft 463 as final invoice / receipt 999900843 / FR 9999/843. The final FR document was finished and paid.

Raw evidence: raw/playwright/workflows/finalize-converted-quotation-invoice-receipt-draft-20260519T165805Z.json and screenshots under assets/screenshots/finalize-converted-quotation-invoice-receipt-draft-20260519T165805Z-*.png.

BehaviorObserved detail
Source quotationCreated and converted 999900093 / ORC 9999/93.
Draft source metadataThe FR draft copied article AI-DEMO-20260519-021105, quantity 1, and source metadata ndocori=999900093, tipodocori=ORC, linhandocori=1.
PaymentThe Payment modal accepted [NUM] Numerário for total 1.97.
Final savesaveDocument returned {"return":"999900843%OK&=&OKDOC&=&","print_documents":[]}.
Final invoice / receiptOfficeGest opened /vendas/fr/view/OTk5OTAwODQz with title OG - FR 9999/843.
Final stateThe FR list returned LIQ / Finished, total 1.97, and ValorPago=1.97.

Detailed how-to: How to Finalize a Converted Quotation Invoice / Receipt Draft.

Quotation to Sales Order Draft Conversion

Verified to draft: /vendas/orc/view/OTk5OTAwMDkx converted quotation ORC 9999/91 into ENC draft 462 at /vendas/enc/rasc/NDYy. The sales order draft was not finalized.

Raw evidence: raw/playwright/workflows/quotation-to-sales-order-draft-20260519T163135Z.json and screenshots under assets/screenshots/quotation-to-sales-order-draft-20260519T163135Z-*.png.

BehaviorObserved detail
Visible actionThe saved ORC view exposes To convert with Invoice, Invoice / Receipt, Internal Doc, and Order of Service options.
Verified conversionInternal Doc calls facturar('enc'), which posts facturardoc with tipoopdest=enc, source tipoop=ORC, and source number 999900091.
Responsefacturardoc returned "OK:462:vendas" and opened /vendas/enc/rasc/NDYy.
Draft lineThe ENC draft copied article AI-DEMO-20260519-021105, quantity 1, VAT 23%, and source metadata ndocori=999900091, tipodocori=ORC, linhandocori=1.
Source quotationThe ORC list still returned ABR / Open immediately after draft creation, so final order state still needs the normal ENC save/finalization check.

Detailed how-to: How to Convert a Quotation to a Sales Order Draft.

Converted Quotation Sales Order Draft Finalization

Verified end to end: /vendas/enc/rasc/NDYz saved converted draft 463 as final sales order 999900108 / ENC 9999/108. The final ENC order remained open and unpaid.

Raw evidence: raw/playwright/workflows/finalize-converted-quotation-sales-order-draft-20260519T170312Z.json and screenshots under assets/screenshots/finalize-converted-quotation-sales-order-draft-20260519T170312Z-*.png.

BehaviorObserved detail
Source quotationCreated and converted 999900094 / ORC 9999/94.
Draft source metadataThe ENC draft copied article AI-DEMO-20260519-021105, quantity 1, and source metadata ndocori=999900094, tipodocori=ORC, linhandocori=1.
Final savesaveDocument returned {"return":"999900108%&=&OKDOC&=&","print_documents":[]}.
Final sales orderOfficeGest opened /vendas/enc/view/OTk5OTAwMTA4 with title OG - ENC 9999/108.
Final stateThe ENC list returned ABR / Open, total 1.97, and ValorPago=0.

Detailed how-to: How to Finalize a Converted Quotation Sales Order Draft.

Sales Order Creation Page

Verified route and save: /vendas/enc/create. Page title: OG - Internal Doc [ENC]. Workflow run sales-order-enc-20260520T002909Z created open order ENC 9999/110.

Raw evidence: raw/playwright/vendas-enc-create-probe.json, raw/playwright/workflows/sales-order-enc-20260520T002909Z.json, and screenshots under assets/screenshots/sales-order-enc-20260520T002909Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
CustomerCustomer 910, 100 Ouvidos Lda, was accepted with VAT 509031862.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%.
Final savesaveDocument returned 999900110%&=&OKDOC&=& and opened /vendas/enc/view/OTk5OTAwMTEw.
Order stateThe ENC list returned ABR / Open, ValorPago=0, pending value 1.97, and reference AI-ENC-20260520T002909Z.
Stock/order effectWarehouse 1 physical stock stayed -41; customer-order quantity qtd_enc_cliente increased to 6.

Detailed how-to: How to Create a Sales Order.

Sales Order Cancellation

Verified end to end: /vendas/enc/view/OTk5OTAwMTEw cancelled open sales order 999900110 / ENC 9999/110 and verified the final ENC list state plus stock/order quantities.

Raw evidence: raw/playwright/workflows/cancel-sales-order-enc-20260520T003150Z.json and screenshots under assets/screenshots/cancel-sales-order-enc-20260520T003150Z-*.png.

BehaviorObserved detail
Visible actionThe saved ENC view exposes a cancellation action that calls btnDelete('Anular').
Confirmation styleThe verified ENC cancellation showed the irreversible confirmation directly; no cancellation-reason selector or podeAnularDoc request was captured.
Backend calldeleteDocument posted num=999900110, tipoop=ENC, tot_fin=1.97, and serialized form data with empty anulacao=.
Final stateThe ENC list returned ANU / Canceled, total 1.97, ValorPago=0, and pending value 1.97.
Stock/order effectWarehouse 1 physical stock stayed -41; qtd_enc_cliente changed from 6 to 5; qtd_enc_forn stayed 2.

Detailed how-to: How to Cancel a Sales Order.

Sales Order to Invoice Draft Conversion

Verified to draft: /vendas/enc/view/OTk5OTAwMTA0 converted sales order ENC 9999/104 into FT draft 459 at /vendas/ft/rasc/NDU5. The invoice draft was not finalized.

Raw evidence: raw/playwright/workflows/sales-order-to-invoice-draft-20260519T161456Z.json and screenshots under assets/screenshots/sales-order-to-invoice-draft-20260519T161456Z-*.png.

BehaviorObserved detail
Visible actionThe saved ENC view exposes Invoice with Invoice, Invoice / Receipt, and Internal Doc options.
Verified conversionInvoice calls facturar('ft'), which posts facturardoc with tipoopdest=ft, source tipoop=ENC, and source number 999900104.
Responsefacturardoc returned "OK:459:vendas" and opened /vendas/ft/rasc/NDU5.
Draft lineThe FT draft copied article AI-DEMO-20260519-021105, quantity 1, VAT 23%, and source metadata ndocori=999900104, tipodocori=ENC, linhandocori=1.
Source orderThe ENC list still returned ABR / Open immediately after draft creation, so final invoice state still needs the normal FT save/finalization check.

Detailed how-to: How to Convert a Sales Order to an Invoice Draft.

Converted Sales Order Invoice Draft Finalization

Verified end to end: /vendas/ft/rasc/NDYz saved converted draft 463 as final invoice 999901668 / FT 9999/1668. The final FT invoice remained open and unpaid.

Raw evidence: raw/playwright/workflows/finalize-converted-sales-order-invoice-draft-20260519T164146Z.json and screenshots under assets/screenshots/finalize-converted-sales-order-invoice-draft-20260519T164146Z-*.png.

BehaviorObserved detail
Source orderCreated and converted 999900106 / ENC 9999/106.
Draft source metadataThe FT draft copied article AI-DEMO-20260519-021105, quantity 1, and source metadata ndocori=999900106, tipodocori=ENC, linhandocori=1.
Final savesaveDocument returned {"return":"999901668%OK&=&OKDOC&=&","print_documents":[]}.
Final invoiceOfficeGest opened /vendas/ft/view/OTk5OTAxNjY4 with title OG - FT 9999/1668.
Final stateThe FT list returned ABR / Open, total 1.97, and ValorPago=0.

Detailed how-to: How to Finalize a Converted Sales Order Invoice Draft.

Sales Order to Invoice / Receipt Draft Conversion

Verified to draft: /vendas/enc/view/OTk5OTAwMTA1 converted sales order ENC 9999/105 into FR draft 461 at /vendas/fr/rasc/NDYx. The invoice / receipt draft was not finalized or paid.

Raw evidence: raw/playwright/workflows/sales-order-to-invoice-receipt-draft-20260519T162611Z.json and screenshots under assets/screenshots/sales-order-to-invoice-receipt-draft-20260519T162611Z-*.png.

BehaviorObserved detail
Visible actionThe saved ENC view exposes Invoice with Invoice, Invoice / Receipt, and Internal Doc options.
Verified conversionInvoice / Receipt calls facturar('fr'), which posts facturardoc with tipoopdest=fr, source tipoop=ENC, and source number 999900105.
Responsefacturardoc returned "OK:461:vendas" and opened /vendas/fr/rasc/NDYx.
Draft lineThe FR draft copied article AI-DEMO-20260519-021105, quantity 1, VAT 23%, and source metadata ndocori=999900105, tipodocori=ENC, linhandocori=1.
Source orderThe ENC list still returned ABR / Open immediately after draft creation, so final paid state still needs the normal FR save/payment/finalization check.

Detailed how-to: How to Convert a Sales Order to an Invoice / Receipt Draft.

Converted Sales Order Invoice / Receipt Draft Finalization

Verified end to end: /vendas/fr/rasc/NDYz saved converted draft 463 as final invoice / receipt 999900842 / FR 9999/842. The final FR document was finished and paid.

Raw evidence: raw/playwright/workflows/finalize-converted-sales-order-invoice-receipt-draft-20260519T164715Z.json and screenshots under assets/screenshots/finalize-converted-sales-order-invoice-receipt-draft-20260519T164715Z-*.png.

BehaviorObserved detail
Source orderCreated and converted 999900107 / ENC 9999/107.
Draft source metadataThe FR draft copied article AI-DEMO-20260519-021105, quantity 1, and source metadata ndocori=999900107, tipodocori=ENC, linhandocori=1.
PaymentThe Payment modal accepted [NUM] Numerário for total 1.97.
Final savesaveDocument returned {"return":"999900842%OK&=&OKDOC&=&","print_documents":[]}.
Final invoice / receiptOfficeGest opened /vendas/fr/view/OTk5OTAwODQy with title OG - FR 9999/842.
Final stateThe FR list returned LIQ / Finished, total 1.97, and ValorPago=1.97.

Detailed how-to: How to Finalize a Converted Sales Order Invoice / Receipt Draft.

Invoice Creation Page

Verified route and save: /vendas/ft/create. Page title: OG - Invoice [FT]. Workflow run sales-invoice-ft-20260519T040734Z created open receivable invoice FT 9999/1666.

Raw evidence: raw/playwright/vendas-ft-create-probe.json, raw/playwright/workflows/sales-invoice-ft-20260519T040734Z.json, and screenshots under assets/screenshots/sales-invoice-ft-20260519T040734Z-*.png.

BehaviorObserved detail
Primary actionsSave Draft, Save and Print, and Save and Finish.
CustomerCustomer 910, 100 Ouvidos Lda, was accepted for billing with VAT 509031862.
Article lineArticle AI-DEMO-20260519-021105, quantity 1, warehouse 1, unit price 1.60, VAT 23%.
Draft savesaveRascunho returned OK:464 and opened draft route /vendas/ft/rasc/NDY0 in the verified draft run. Draft header edit is verified: re-saving edited draft 467 returned active draft 468. Draft line add is verified: re-saving draft 469 with another line returned active draft 470. Draft quantity change is verified: re-saving draft 474 after changing quantity returned active draft 475. Draft line deletion is verified: re-saving draft 472 after deleting one line returned active draft 473. A later verified draft finalization saved draft 465 as 999901677 / FT 9999/1677.
Final savesaveDocument returned 999901666%OK&=&OKDOC&=& and opened /vendas/ft/view/OTk5OTAxNjY2.
Receivable stateThe FT list returned ABR / Open, ValorPago=0, pending value 1.97, and reference AI-FT-20260519T040734Z.
Stock effectWarehouse 1 stock for the article decreased from 2 to 1.

Detailed how-to: How to Create a Sales Invoice. Draft how-to: How to Save a Sales Invoice Draft, How to Edit a Saved Sales Invoice Draft, How to Add a Line to a Sales Invoice Draft, How to Change Quantity on a Sales Invoice Draft, How to Delete a Line from a Sales Invoice Draft, and How to Finalize a Saved Sales Invoice Draft. Validation how-to: How to Handle the Sales Invoice No Lines Error and How to Handle the Sales Invoice Mandatory Fields Error. Cancellation how-to: How to Cancel a Sales Invoice.

Sales Invoice Draft Save

Verified end to end: /vendas/ft/create exposed Save Draft. Workflow run sales-invoice-draft-ft-20260519T175248Z filled an FT for customer 910, saved draft 464, and opened /vendas/ft/rasc/NDY0.

Raw evidence: raw/playwright/workflows/sales-invoice-draft-ft-20260519T175248Z.json and screenshots under assets/screenshots/sales-invoice-draft-ft-20260519T175248Z-*.png.

BehaviorObserved detail
ActionSave Draft calls sendForm('Rascunho', false).
Backend savesaveRascunho returned "OK:464:&=&AI-DEMO-20260519-021105:1#".
Draft routeOfficeGest opened /vendas/ft/rasc/NDY0 with page title OG - Invoice [FT].
Draft contentThe draft kept customer 910, reference AI-FT-DRAFT-20260519T175248Z, type FT, and article AI-DEMO-20260519-021105.
Not finalizedThe final FT list search for the draft reference returned no rows.
Stock effectWarehouse stock stayed at -1 before and after the draft save.

Detailed how-to: How to Save a Sales Invoice Draft.

Saved Sales Invoice Draft Edit

Verified end to end: Workflow run edit-sales-invoice-draft-20260519T180638Z created source draft 467, opened /vendas/ft/rasc/NDY3, changed the reference, clicked Save Draft, and verified the edited draft reopened as active draft 468 at /vendas/ft/rasc/NDY4.

Raw evidence: raw/playwright/workflows/edit-sales-invoice-draft-20260519T180638Z.json and screenshots under assets/screenshots/edit-sales-invoice-draft-20260519T180638Z-*.png.

BehaviorObserved detail
Edit scopeThe verified edit changed the header reference from AI-FT-DRAFT-20260519T180605Z to AI-FT-DRAFT-20260519T180605Z-EDIT.
Backend savesaveRascunho returned "OK:468:&=&AI-DEMO-20260519-021105:1#".
Draft replacementOfficeGest moved from draft 467 to active draft 468; users should continue from the new draft route after saving edits.
Line preservationThe edited draft kept article AI-DEMO-20260519-021105, quantity 1, warehouse 1, and VAT 23%.
Not finalizedThe final FT list search for the edited reference returned no rows.
Stock effectWarehouse stock stayed at -3 before and after the edit re-save.

Detailed how-to: How to Edit a Saved Sales Invoice Draft.

Saved Sales Invoice Draft Line Add

Verified end to end: Workflow run add-line-sales-invoice-draft-20260519T181220Z created source draft 469, opened /vendas/ft/rasc/NDY5, added another article line, clicked Save Draft, and verified active draft 470 at /vendas/ft/rasc/NDcw.

Raw evidence: raw/playwright/workflows/add-line-sales-invoice-draft-20260519T181220Z.json and screenshots under assets/screenshots/add-line-sales-invoice-draft-20260519T181220Z-*.png.

BehaviorObserved detail
Line addThe draft changed from 1 row / quantity 1 to 2 rows / total quantity 2.
Backend savesaveRascunho returned "OK:470:&=&AI-DEMO-20260519-021105:1#".
Draft replacementOfficeGest moved from draft 469 to active draft 470; users should continue from the new draft route after saving line edits.
Total effectTotal with VAT changed from 1.96677 to 3.93354.
Not finalizedThe final FT list search for the edited reference returned no rows.
Stock effectWarehouse stock stayed at -3 before and after the draft line add.

Detailed how-to: How to Add a Line to a Sales Invoice Draft.

Saved Sales Invoice Draft Line Deletion

Verified end to end: Workflow run delete-line-sales-invoice-draft-20260519T182132Z created a two-line source draft 472, opened /vendas/ft/rasc/NDcy, deleted one article line, clicked Save Draft, and verified active draft 473 at /vendas/ft/rasc/NDcz.

Raw evidence: raw/playwright/workflows/delete-line-sales-invoice-draft-20260519T182132Z.json and screenshots under assets/screenshots/delete-line-sales-invoice-draft-20260519T182132Z-*.png.

BehaviorObserved detail
Line deletionThe draft changed from 2 rows / quantity 2 to 1 row / total quantity 1.
Backend deletedeleteLinhaDoc removed line sequence 2 from draft table id 51872.
Backend savesaveRascunho returned "OK:473:&=&AI-DEMO-20260519-021105:1#".
Draft replacementOfficeGest moved from draft 472 to active draft 473; users should continue from the new draft route after saving line edits.
Total effectTotal with VAT changed from 3.93354 to 1.96677.
Not finalizedThe final FT list search for the edited reference returned no rows.
Stock effectWarehouse stock stayed at -3 before and after the draft line deletion.

Detailed how-to: How to Delete a Line from a Sales Invoice Draft.

Saved Sales Invoice Draft Quantity Change

Verified end to end: Workflow run change-quantity-sales-invoice-draft-20260519T182947Z created source draft 474, opened /vendas/ft/rasc/NDc0, changed the article line quantity from 1 to 2, clicked Save Draft, and verified active draft 475 at /vendas/ft/rasc/NDc1.

Raw evidence: raw/playwright/workflows/change-quantity-sales-invoice-draft-20260519T182947Z.json and screenshots under assets/screenshots/change-quantity-sales-invoice-draft-20260519T182947Z-*.png.

BehaviorObserved detail
Quantity editThe draft stayed at 1 row while total quantity changed from 1 to 2.
Backend editupdateEditableTabDoc updated campo=Qtd with value 2.
Backend savesaveRascunho returned "OK:475:&=&AI-DEMO-20260519-021105:1#".
Draft replacementOfficeGest moved from draft 474 to active draft 475; users should continue from the new draft route after saving line edits.
Total effectTotal with VAT changed from 1.96677 to 3.93354.
Not finalizedThe final FT list search for the edited reference returned no rows.
Stock effectWarehouse stock stayed at -3 before and after the draft quantity change.

Detailed how-to: How to Change Quantity on a Sales Invoice Draft.

Saved Sales Invoice Draft Finalization

Verified end to end: Workflow run finalize-saved-sales-invoice-draft-20260519T175951Z created source draft 465, opened /vendas/ft/rasc/NDY1, clicked Save and Finish, confirmed the dialog, and created final invoice 999901677 / FT 9999/1677.

Raw evidence: raw/playwright/workflows/finalize-saved-sales-invoice-draft-20260519T175951Z.json and screenshots under assets/screenshots/finalize-saved-sales-invoice-draft-20260519T175951Z-*.png.

BehaviorObserved detail
Draft sourceDraft 465 came from run sales-invoice-draft-ft-20260519T175923Z and used reference AI-FT-DRAFT-20260519T175923Z.
Final actionSave and Finish showed Are you sure?, then submitted the normal final save.
Backend savesaveDocument returned {"return":"999901677%AI-DEMO-20260519-021105:1#&=&OKDOC&=&","print_documents":[]}.
Final invoiceOfficeGest opened /vendas/ft/view/OTk5OTAxNjc3 with title OG - FT 9999/1677.
Final stateThe FT list returned ABR / Open, total 1.97, ValorPago=0, and pending 1.97.
Stock effectWarehouse stock moved from -2 before finalization to -3 after finalization.

Detailed how-to: How to Finalize a Saved Sales Invoice Draft.

Sales Invoice No Lines Validation

Verified end to end: Workflow run sales-invoice-no-lines-validation-20260519T183637Z opened blank route /vendas/ft/create, clicked Save and Finish, and captured visible toast ErrorNo lines.

Raw evidence: raw/playwright/workflows/sales-invoice-no-lines-validation-20260519T183637Z.json and screenshots under assets/screenshots/sales-invoice-no-lines-validation-20260519T183637Z-*.png.

BehaviorObserved detail
Blank invoice stateCustomer empty, article search empty, line grid row count 0.
Attempted actionSave and Finish called sendForm('Guardar', false).
Visible validationOfficeGest showed toast ErrorNo lines.
NavigationThe page stayed on /vendas/ft/create with title OG - Invoice [FT].
Final saveNo saveDocument request was submitted.

Detailed how-to: How to Handle the Sales Invoice No Lines Error.

Sales Invoice Mandatory Fields Validation

Verified end to end: Workflow run sales-invoice-missing-customer-validation-20260519T184220Z added article AI-DEMO-20260519-021105 to a blank FT without selecting a customer, clicked Save and Finish, and captured visible toast Error There are mandatory fields unfilled.

Raw evidence: raw/playwright/workflows/sales-invoice-missing-customer-validation-20260519T184220Z.json and screenshots under assets/screenshots/sales-invoice-missing-customer-validation-20260519T184220Z-*.png.

BehaviorObserved detail
Invoice stateLine grid had one article line; customer and VAT number stayed empty.
Visible validationOfficeGest showed toast Error There are mandatory fields unfilled.
Field marking#doc_CodTerc and #doc_NContrib had chosen-error.
NavigationThe page stayed on /vendas/ft/create with title OG - Invoice [FT].
Final saveNo saveDocument request was submitted.

Detailed how-to: How to Handle the Sales Invoice Mandatory Fields Error.

Sales Invoice Cancellation

Verified end to end: /vendas/ft/view/OTk5OTAxNjcy exposed the red Cancel action for invoice 999901672 / FT 9999/1672. Workflow run cancel-sales-invoice-ft-20260519T172726Z selected a cancellation reason, confirmed the irreversible dialog, and verified the FT list state changed to ANU / Canceled.

Raw evidence: raw/playwright/workflows/cancel-sales-invoice-ft-20260519T172726Z.json and screenshots under assets/screenshots/cancel-sales-invoice-ft-20260519T172726Z-*.png.

BehaviorObserved detail
Eligibility checkpodeAnularDoc returned {"succeeded":true,"message":null,"params":null} for num=999901672, tipoop=FT.
Reason modalThe Reason for Cancellation modal contained hidden anulacao and selector id_motivo_anulacao. The verified run used reason id 1, Erro de faturacao.
Final confirmationOfficeGest displayed Are you sure you want to cancel? This irreversible operation, then submitted deleteDocument.
Final stateThe FT list search returned estado=ANU, desig_estado=Canceled, total 1.97, and ValorPago=0.
Stock effectWarehouse 1 stock for article AI-DEMO-20260519-021105 moved from -2 before cancellation to -1 after cancellation.

Detailed how-to: How to Cancel a Sales Invoice.

Invoice / Receipt Creation Page

Verified route and save: /vendas/fr/create. Page title: OG - Invoice / Receipt [FR]. Workflow run invoice-fr-20260519T024739Z created finished document FR 9999/841.

Raw evidence: raw/playwright/vendas-fr-create-snapshot.yml, raw/playwright/vendas-fr-create-dom-inventory.json, raw/playwright/vendas-fr-create-requests.txt, raw/playwright/workflows/invoice-fr-20260519T024739Z.json, and screenshots under assets/screenshots/invoice-fr-20260519T024739Z-*.png.

AreaObserved Controls / Fields
Workflow tabsVehicle & Entity, Delivery Method, Details, Marketing, Recommendations, Document
VehiclePrint vehicle data, License Plate, New Car, Brand, Sinister, Version, chassis/frame number, Year, Previous kms, Current Km
EntitiesOwner, Fact entity, New Customer, Final Customer, VAT Number
Document detailsDelivery Method, Car, load/discharge addresses, collaborator, commercial, payment method, due date, classification, reference, currency, exchange rate, billing address, campaign/contact/business opportunity, series, emission date, tax zone, process, advance invoice
Document linesArticle ID, Description, Qty, Unit Price, Discounts, VAT, Store, Stock Qty, Cost Center, loyalty points
Auxiliary toolsArticle search, document duplicate modal, attachments, shipping, gift card, loyalty card, extra fields, associated documents, serial numbers, import articles, line sorting. A separate true duplicate-line action was not exposed in the captured FT create UI.
TotalsTotal gross, line volume, discount, net total, VAT, retention, total, profit margin, number of articles
Primary actionsSave Draft, Supervisor, End

Verified Invoice Save Behavior

StepObserved detail
Billing customerCustomer 910, 100 Ouvidos Lda, is active and accepted for billing. Customer 1 from Final Customer is inactive in the demo and blocks finalization.
Article lineArticle AI-DEMO-20260519-021105 inserted with quantity 1,00, unit price 1.60, VAT 23%, store 1, and total without VAT 1,60.
TotalsGross 1,60 EUR, VAT 0,37 EUR, total 1,97 EUR.
PaymentThe Payment modal requires a payment line. Selecting [NUM] Numerario creates a line for 1.97; Save then asks Are you sure?. Missing-payment validation is verified: payment&option=validate returned valid:"NONE", opened the Payment modal, and did not submit saveDocument.
Payment row correctionPayment row deletion is verified: after adding NUM 1.97, the row trash button submitted payment&option=delete, cleared the payment form, reset total to 0, and did not save the FR. Partial-payment correction is also verified: editing NUM 1.00 to NUM 1.97 validated the modal and saved FR 9999/847. Overpayment is verified: NUM 2.00 against total 1.97 returned troco:0.03 and saved FR 9999/848.
Final savesaveDocument returned 999900841%OK&=&OKDOC&=& and redirected to /vendas/fr/view/OTk5OTAwODQx.
Stock effectWarehouse 1 stock for the article decreased from 2 to 1, confirming that the finished invoice/receipt updates stock.

Detailed how-to: How to Create an Invoice. Validation how-to: How to Handle Missing Payment on an Invoice / Receipt. Partial-payment how-tos: How to Handle a Partial Payment on an Invoice / Receipt and How to Fix a Partial Payment on an Invoice / Receipt. Overpayment how-to: How to Handle Overpayment on an Invoice / Receipt. Payment row deletion how-to: How to Delete a Payment Row from an Invoice / Receipt.

Invoice / Receipt Missing Payment Validation

Verified end to end: Workflow run invoice-receipt-missing-payment-validation-20260519T184723Z selected customer 910, inserted article AI-DEMO-20260519-021105, clicked Save and Finish without a payment line, and confirmed OfficeGest opened the Payment modal instead of saving.

Raw evidence: raw/playwright/workflows/invoice-receipt-missing-payment-validation-20260519T184723Z.json and screenshots under assets/screenshots/invoice-receipt-missing-payment-validation-20260519T184723Z-*.png.

BehaviorObserved detail
Invoice stateCustomer 910 selected and one article line inserted, total 1.97.
Payment validationpayment&option=validate returned valid:"NONE", troco:-1.97, and message The payment is equal to or greater than the total document.
Payment modalPayment modal was visible with no payment rows and payment total 0.00.
Final saveNo saveDocument request was submitted.
Stock effectWarehouse stock stayed at -3 because the document was not finalized.

Detailed how-to: How to Handle Missing Payment on an Invoice / Receipt.

Simplified Invoice Missing Payment Validation

Verified end to end: Workflow run simplified-invoice-missing-payment-validation-20260519T185326Z selected customer 910, inserted article AI-DEMO-20260519-021105, clicked Save and Finish without a payment line, and confirmed OfficeGest opened the Payment modal instead of saving.

Raw evidence: raw/playwright/workflows/simplified-invoice-missing-payment-validation-20260519T185326Z.json and screenshots under assets/screenshots/simplified-invoice-missing-payment-validation-20260519T185326Z-*.png.

BehaviorObserved detail
Invoice stateCustomer 910 selected and one article line inserted, total 1.97.
Payment validationpayment&option=validate returned valid:"NONE", troco:-1.97, and message The payment is equal to or greater than the total document.
Payment modalPayment modal was visible with no payment rows and payment total 0.00.
Final saveNo saveDocument request was submitted.
Stock effectWarehouse stock stayed at -3 because the document was not finalized.

Detailed how-to: How to Handle Missing Payment on a Simplified Invoice.

Simplified Invoice Overpayment

Verified end to end: Workflow run simplified-invoice-overpayment-20260519T225200Z created finished document 999900009 / FS 9999/9 after entering NUM 2.00 against a 1.97 total.

Raw evidence: raw/playwright/workflows/simplified-invoice-overpayment-20260519T225200Z.json and screenshots under assets/screenshots/simplified-invoice-overpayment-20260519T225200Z-*.png.

BehaviorObserved detail
Payment rowpayment&option=add created a NUM row with value 2.
Payment validationpayment&option=validate returned valid:true and troco:0.03.
Final savesaveDocument returned OKDOC and redirected to /vendas/fs/view/OTk5OTAwMDA5.
List resultThe FS list returned FS 9999/9 as LIQ / Finished with total 1.97, paid value 1.97, and pending value 0.00.
Stock effectWarehouse stock moved from -28 to -29.

Detailed how-to: How to Handle Overpayment on a Simplified Invoice.

Simplified Invoice Partial Payment Correction

Verified end to end: Workflow run simplified-invoice-fix-partial-payment-20260519T225558Z created a short NUM 1.00 payment on an FS, edited the same payment row to 1.97, and saved finished document 999900010 / FS 9999/10.

Raw evidence: raw/playwright/workflows/simplified-invoice-fix-partial-payment-20260519T225558Z.json and screenshots under assets/screenshots/simplified-invoice-fix-partial-payment-20260519T225558Z-*.png.

BehaviorObserved detail
Short payment validationpayment&option=validate first returned valid:false and troco:-0.97 for NUM 1.00 against total 1.97.
CorrectionThe existing payment row input was edited to 1.97, and #payment_total changed to 1.97.
Final validationpayment&option=validate returned valid:true and troco:0.
Final savesaveDocument returned OKDOC and redirected to /vendas/fs/view/OTk5OTAwMDEw.
List resultThe FS list returned FS 9999/10 as LIQ / Finished with paid value 1.97 and pending value 0.00.
Stock effectWarehouse stock moved from -29 to -30.

Detailed how-to: How to Fix a Partial Payment on a Simplified Invoice.

Simplified Invoice Payment Row Deletion

Verified up to the save boundary: Workflow run simplified-invoice-delete-payment-row-20260519T230007Z added NUM 1.97 on an FS payment modal, deleted the row, and confirmed no final save or stock movement occurred.

Raw evidence: raw/playwright/workflows/simplified-invoice-delete-payment-row-20260519T230007Z.json and screenshots under assets/screenshots/simplified-invoice-delete-payment-row-20260519T230007Z-*.png.

BehaviorObserved detail
Payment addpayment&option=add created a NUM 1.97 row for temporary document 55591.
Delete actionpayment&option=delete used nseq=1 and total 1.97.
Modal after delete#payment_form was empty, no payment inputs or delete buttons remained, and #payment_total was 0.
Save boundaryNo saveDocument request or OKDOC response was captured.
Stock effectWarehouse stock stayed at -30.

Detailed how-to: How to Delete a Payment Row from a Simplified Invoice.

Simplified Invoice Split Payment

Verified end to end: Workflow run simplified-invoice-split-payment-20260519T230345Z created finished document 999900011 / FS 9999/11 with two payment rows: NUM 1.00 and TRA 0.97.

Raw evidence: raw/playwright/workflows/simplified-invoice-split-payment-20260519T230345Z.json and screenshots under assets/screenshots/simplified-invoice-split-payment-20260519T230345Z-*.png.

BehaviorObserved detail
Payment rowspayment&option=add created NUM value 1, then TRA value 0.97.
Payment validationpayment&option=validate returned valid:true and troco:0.
Final savesaveDocument returned OKDOC and redirected to /vendas/fs/view/OTk5OTAwMDEx.
List resultThe FS list returned FS 9999/11 as LIQ / Finished with paid value 1.97 and pending value 0.00.
Stock effectWarehouse stock moved from -30 to -31.

Detailed how-to: How to Create a Simplified Invoice with Split Payment.

Invoice / Receipt Inactive Customer Validation

Verified end to end: Workflow run invoice-receipt-inactive-customer-validation-20260519T185928Z selected inactive customer 1, inserted article AI-DEMO-20260519-021105, clicked Save and Finish, and confirmed OfficeGest did not save the document.

Raw evidence: raw/playwright/workflows/invoice-receipt-inactive-customer-validation-20260519T185928Z.json and screenshots under assets/screenshots/invoice-receipt-inactive-customer-validation-20260519T185928Z-*.png.

BehaviorObserved detail
Customer lookupNameEntidades returned customer 1, Consumidor Final, VAT 999999990, with activo:"F".
Selection warningOfficeGest showed Inactive billing entity! The billing entity is inactive.
Field stateAfter selection, #doc_CodTerc and #doc_NContrib were empty while billing name still displayed Consumidor Final.
Finish attemptWith the customer/VAT fields empty, OfficeGest showed Error There are mandatory fields unfilled.
Final saveNo saveDocument request was submitted.
Stock effectWarehouse stock stayed at -3 because the document was not finalized.

Detailed how-tos: How to Use Final Customer During Invoicing and How to Handle an Inactive Billing Customer on an Invoice / Receipt.

Invoice / Receipt Partial Payment Validation

Verified end to end: Workflow run invoice-receipt-partial-payment-validation-20260519T190550Z selected customer 910, inserted article AI-DEMO-20260519-021105, added a NUM payment of 1.00 against a 1.97 total, clicked the payment modal Save, and confirmed OfficeGest blocked final save.

Raw evidence: raw/playwright/workflows/invoice-receipt-partial-payment-validation-20260519T190550Z.json and screenshots under assets/screenshots/invoice-receipt-partial-payment-validation-20260519T190550Z-*.png.

BehaviorObserved detail
Invoice stateCustomer 910 selected and one article line inserted, total 1.97.
Payment rowpayment&option=add created a NUM payment line with value 1.
Payment validationpayment&option=validate returned valid:false, troco:-0.97, and message The payment is equal to or greater than the total document.
Payment modalPayment modal stayed visible with payment total 1.00.
Final saveNo saveDocument request was submitted.
Stock effectWarehouse stock stayed at -3 because the document was not finalized.

Detailed how-to: How to Handle a Partial Payment on an Invoice / Receipt.

Invoice / Receipt Partial Payment Correction

Verified end to end: Workflow run invoice-receipt-fix-partial-payment-20260519T223353Z created a short NUM 1.00 payment on an FR, edited the same payment row to 1.97, and saved finished document 999900847 / FR 9999/847.

Raw evidence: raw/playwright/workflows/invoice-receipt-fix-partial-payment-20260519T223353Z.json and screenshots under assets/screenshots/invoice-receipt-fix-partial-payment-20260519T223353Z-*.png.

BehaviorObserved detail
Short payment validationpayment&option=validate first returned valid:false and troco:-0.97 for NUM 1.00 against total 1.97.
CorrectionThe existing payment row input was edited to 1.97, and #payment_total changed to 1.97.
Final validationpayment&option=validate returned valid:true and troco:0.
Final savesaveDocument returned OKDOC and redirected to /vendas/fr/view/OTk5OTAwODQ3.
List resultThe FR list returned FR 9999/847 as LIQ / Finished with paid value 1.97 and pending value 0.00.
Stock effectWarehouse stock moved from -26 to -27.

Detailed how-to: How to Fix a Partial Payment on an Invoice / Receipt.

Invoice / Receipt Split Payment

Verified end to end: Workflow run invoice-receipt-split-payment-20260519T191233Z created finished document 999900846 / FR 9999/846 with two payment rows: NUM 1.00 and TRA 0.97.

Raw evidence: raw/playwright/workflows/invoice-receipt-split-payment-20260519T191233Z.json and screenshots under assets/screenshots/invoice-receipt-split-payment-20260519T191233Z-*.png.

BehaviorObserved detail
Invoice stateCustomer 910 selected and one article line inserted, total 1.97.
Payment rowspayment&option=add created NUM value 1, then TRA value 0.97.
Payment validationpayment&option=validate returned valid:true and troco:0.
Final savesaveDocument returned 999900846%...OKDOC and redirected to /vendas/fr/view/OTk5OTAwODQ2.
List resultThe FR list returned LIQ / Finished, total 1.97, paid 1.97, and pending 0.00.
Stock effectWarehouse stock moved from -4 to -5.

Detailed how-to: How to Create an Invoice / Receipt with Split Payment.

Invoice / Receipt Overpayment

Verified end to end: Workflow run invoice-receipt-overpayment-20260519T224642Z created finished document 999900848 / FR 9999/848 after entering NUM 2.00 against a 1.97 total.

Raw evidence: raw/playwright/workflows/invoice-receipt-overpayment-20260519T224642Z.json and screenshots under assets/screenshots/invoice-receipt-overpayment-20260519T224642Z-*.png.

BehaviorObserved detail
Payment rowpayment&option=add created a NUM row with value 2.
Payment validationpayment&option=validate returned valid:true and troco:0.03.
Final savesaveDocument returned OKDOC and redirected to /vendas/fr/view/OTk5OTAwODQ4.
List resultThe FR list returned FR 9999/848 as LIQ / Finished with total 1.97, paid value 1.97, and pending value 0.00.
Stock effectWarehouse stock moved from -27 to -28.

Detailed how-to: How to Handle Overpayment on an Invoice / Receipt.