> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superoffice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Samples

> Working with quotes in CRMScript

## Find available quote connections

```crmscript! theme={null}
SearchEngine se;
se.addFields("QuoteConnection", "quoteconnection_id,DisplayName,Rank");
print(se.executeTextTable());
```

## Find the latest version

```crmscript! theme={null}
NSQuoteAgent qa;
NSQuote quote = qa.GetQuote(2);
Integer versionNumber = quote.GetActiveQuoteVersionId();

printLine("Active version: " + versionNumber.toString());
```

## Order-related info you might want to check

### Accepted quote alternative

```crmscript! theme={null}
NSQuoteAgent qa;
NSQuoteEntity quote = qa.GetQuoteEntity(11);
printLine(quote.GetAcceptedQuoteAlternativeId().toString());
```

### PO number

```crmscript! theme={null}
NSQuoteAgent qa;
NSQuoteEntity quote = qa.GetQuoteEntity(11);
printLine(quote.GetPoNumber());
```

### Accepted by customer?

```crmscript! theme={null}
NSQuoteAgent qa;
NSQuoteEntity quote = qa.GetQuoteEntity(11);
NSQuoteVersion version = qa.GetQuoteVersion(quote.GetActiveQuoteVersionId());
Integer state = version.GetState();

if (state == 9) {
  printLine("Accepted by customer");
}
else if (state == 8) {
  printLine("Rejected by customer");
}
else {
  printLine("quote not finalized yet");
}
```

## Mark sale as sold

```crmscript theme={null}
NSQuoteAgent qa;
NSQuoteEntity quote = qa.GetQuoteEntity(11);

NSSaleEntity sale = saleAgent.GetSaleEntity(quote.GetSaleId());
sale.SetStatus(2);
sale = saleAgent.SaveSaleEntity(sale);
```


## Related topics

- [Samples](/en/automation/crmscript/howto/sale/samples.md)
- [TicketStaticSelectionV2](/en/api/archive-providers/reference/ticketstaticselectionv2.md)
- [TicketTransferredNotification](/en/api/archive-providers/reference/tickettransferrednotification.md)
- [TimeZones](/en/api/archive-providers/reference/timezones.md)
