Notas Fiscais de Serviço
Lista NFS-e (ServiceOrder)
Lista as NFS-e (`ServiceOrder`) cadastradas pela empresa autenticada, com `StatusInvoice` (de `TypeStatusInvoice`), `CityName`/`State` (de `IBGECityCode`), `ServiceDescription` (de `NfsServiceCode` quando cadastrado para o município), faturador (`IDCompanyInvoice` + `AccountNameInvoice` + `CompanyNameCorporateNameInvoice`), `NfsValue` computado como `NfsServiceQuantity * NfsServiceUnitValue` e `ValuePaid` (soma de `Value` em `AccountsPayableReceivable` vinculadas). Paginação fixa em **1000 registros por página** (`Page=N` → offset `N*1000`).
Cria NFS-e (modal Nova NF de Serviço)
Cria uma NFS-e em status **Pendente** (`IDStatusInvoice=0`). Pré-condições verificadas pelo handler: empresa precisa ter `Inscrição Municipal` cadastrada (`Company.CompanyCityInscription`); endereço completo cadastrado (`Company.CompanyAddressIbgeCityCode`); o município emite NFS-e (`IBGECityCode.NfseIssue = 1`). Quando `IDCompanyInvoice` informado, valida que pertence à empresa principal (`CompanyMain`).
Exclui NFS-e (ação Deletar da linha)
Exclui fisicamente uma NFS-e. **Bloqueado** quando o status da NF é diferente de **Pendente** ou **Erro** (`IDStatusInvoice > 1` — Enviada/Emitida/Cancelada não podem ser excluídas) ou quando há contas a receber **Pagas** ou **Parcialmente Pagas** vinculadas (`AccountsPayableReceivable.IDStatusAccountPayableReceivable IN (2,3)`). Quando liberada, remove em cascata `ServiceOrderLog` e `AccountsPayableReceivable` vinculadas, desvincula `ConsumerBankSlip` (`IDServiceOrder = NULL`) e deleta o `ServiceOrder`.
Emite a NFS-e na prefeitura (Mais Ações)
Dispara a emissão da NFS-e identificada por `idserviceorder` chamando o worker PHP `/nfe/invoiceservicesingle.php?idserviceorder=<id>&an=<AccountName>`, que conecta ao webservice da prefeitura, valida e devolve o número/protocolo da nota emitida. Mensagens de erro retornadas pelo worker (validação local ou rejeição da prefeitura) são prefixadas com `[BadRequest]`.