6 versões 26 entradas Actualizado em 30/07/2026

Nenhuma novidade encontrada para esta pesquisa.

Artigo extra passa a ser adicionado também nos documentos criados via API

Quando o Artigo Extra do SmartRecycle está ativo e configurado para um artigo — em SmartRecycle Artigo Extra Definições, com as opções "Aplicar por defeito em vendas" e "Aplicar por defeito em compras" — essa associação passa agora a aplicar-se também aos documentos criados através da API, e não apenas às vendas feitas diretamente no ponto de venda. Por exemplo, se um artigo tiver a taxa de reciclagem associada, ao inserir um documento com esse artigo através da API o sistema acrescenta automaticamente a linha da taxa com a quantidade correspondente, ou atualiza essa quantidade caso a linha já esteja presente no documento.

Alterar artigo

PATCH Customer

{
   "OrganizationName":"Mundo infinito, Lda.",
   "AddressLine1":"Rua da Estrela, 23",
   "AddressLine2":"",
   "PostalCode":"1200-123 Lisboa",
   "CountryID":"PRT",
   "ProvinceID":"11",
   "LocalityID":7,
   "FederalTaxId":"",
   "BirthDate":"1989-08-03T00:00:00",
   "WebAddress":"",
   "Telephone1":"215556644",
   "Telephone2":"",
   "Telephone3":"",
   "Telephone4":"",
   "MobileTelephone1":"967548015",
   "MobileTelephone2":"967548015",
   "Fax":"",
   "Email":"etorre@smartdigit.pt",
   "CustomerPicturePath":"",
   "SalesmanId":1,
   "ZoneID":1,
   "ZoneName":"Viana do Castelo ",
   "CurrencyID":"EUR",
   "PaymentID":2,
   "PaymentName":"30 Dias",
   "CarrierID":1,
   "CarrierName":"CTT - IVA Isento",
   "CashDiscountTermID":"1",
   "CashDiscountTermName":null,
   "TenderID":1,
   "PriceLineID":0,
   "CustomerLevel":1,
   "CustomerGroupDescription":"",
   "EntityFiscalStatusID":1,
}

Alterar Artigo

PATCH Item

{
    "ItemID":"151201",
    "Description":"Caviar, Sturgeon, Black, Jar, Lemberg (box*6) 50g",
    "ShortDescription":"Caviar, Sturgeon, Black",
    "BarCode":"4260051071985",
    "SupplierID":"1",
    "SalePrice":[
        {
            "PriceLineID":0,
            "UnitPrice":0,
            "CreateDate":"2023-12-08T16:45:20Z",
            "TaxIncludedPrice":0,
            "FixedProfitRate":0
        },
        {
            "PriceLineID":1,
            "UnitPrice":0,
            "CreateDate":"2023-12-08T16:45:20Z",
            "TaxIncludedPrice":0,
            "FixedProfitRate":0
        }
    ]
}

Criar Artigo

POST Item

{
    "ItemID":"151201",
    "ItemType":0,
    "Description":"Caviar, Sturgeon, Black, Jar, Lemberg (box*6) 50g",
    "ShortDescription":"Caviar, Sturgeon, Black",
    "BarCode":"4260051071985",
    "BarCodeType":0,
    "WeightUnitOfMeasure":"GM",
    "WeightMeasure":50,
    "TaxableGroupID":4,
    "ItemTax":1,
    "ItemTax2":0,
    "ItemTax3":0,
    "AverageCostPrice":0,
    "SupplierID":"1",
    "Family":{
 "FamilyID":"1"
   },
    "UnitOfSaleID":"UNI",
    "AlternativeUnitOfStock":"UNI",
    "UnitConversion":1,
    "DefaultSellingUnit":"UNI",
    "DefaultBuyUnit":"UNI",
    "DefaultStockUnit":"UNI",
    "Locked":0,
    "ExtraFieldList":[
        
    ],
    "SalePrice":[
        {
            "PriceLineID":0,
            "UnitPrice":0,
            "CreateDate":"2023-12-08T16:45:20Z",
            "TaxIncludedPrice":0,
            "FixedProfitRate":0
        },
        {
            "PriceLineID":1,
            "UnitPrice":0,
            "CreateDate":"2023-12-08T16:45:20Z",
            "TaxIncludedPrice":0,
            "FixedProfitRate":0
        }
    ],
    "Comments":"",
    "StockManagement":true,
    "Discontinued":false
}

Criar Artigo + Campos extra

POST Item

{
  "ItemID":"0001",
  "ItemType":0,
  "Description":"Product Name ",
  "ShortDescription":"Product Name",
  "BarCode":"4260051071985",
  "TaxableGroupID":4,
  "SupplierID":"1",
  "Family":{
    "FamilyID":"1"
  },
  "UnitOfSaleID":"UNI",
  "Locked":0,
  "ExtraFieldList":[
    {
      "ExtraFieldID":"1",
      "TextAnswer":"Auto Tires"
    },
    {
      "ExtraFieldID":"2",
      "TextAnswer":"4x4 road tires"
    },
    {
      "ExtraFieldID":"3",
      "TextAnswer":"Bridgestone"
    },
    {
      "ExtraFieldID":"4",
      "TextAnswer":"Alenza 001"
    },
    {
      "ExtraFieldID":"5",
      "TextAnswer":"245"
    },
    {
      "ExtraFieldID":"6",
      "TextAnswer":"55"
    },
    {
      "ExtraFieldID":"7",
      "TextAnswer":"16"
    },
    {
      "ExtraFieldID":"8",
      "TextAnswer":"R"
    },
    {
      "ExtraFieldID":"9",
      "TextAnswer":"W"
    },
    {
      "ExtraFieldID":"10",
      "TextAnswer":"105"
    },
    {
      "ExtraFieldID":"11",
      "TextAnswer":"XL"
    },
    {
      "ExtraFieldID":"12",
      "TextAnswer":"A"
    },
    {
      "ExtraFieldID":"13",
      "TextAnswer":"B"
    },
    {
      "ExtraFieldID":"14",
      "TextAnswer":"B (71db)"
    }
  ],
  "SalePrice":[
    {
      "PriceLineID":0,
      "UnitPrice":0,
      "CreateDate":"2023-12-08T16:45:20Z",
      "TaxIncludedPrice":0,
      "FixedProfitRate":0
    },
    {
      "PriceLineID":1,
      "UnitPrice":10,
      "CreateDate":"2023-12-08T16:45:20Z",
      "TaxIncludedPrice":0,
      "FixedProfitRate":0
    }
  ],
  "Comments":""
}

Criar Cliente

Post Customer

{
    "OrganizationName":"Hrach Barseghyan",
    "SalesmanId":1,
    "ZoneID":"1",
    "CarrierID":1,
    "PaymentID":1,
    "TenderID":"1",
    "AddressLine1":"90 Aram srt.",
    "AddressLine2":"",
    "PostalCode":"1234-123",
    "CountryID":"ARM",
    "MobileTelephone1":"00 374 99 747747",
    "Telephone1":"",
    "EntityFiscalStatusID":"6",
    "CustomerLevel":1,
    "Email":"hrachb2002@gmail.com",
    "IssuingOutput":0,
    "LimitType":1,
    "CurrencyID":"EUR",
    "ActiveParty":true,
    "PriceLineID":"1",
    "IntranetEMailDaily":true,
    "IntranetEMailWeekly":true,
    "TaxablePersonType":1,
    "GDPRConsent":true,
    "FrequentShopperPoints":0,
    "FederalTaxID":"123456789",
    "KeyFederalTaxID":"0"
}

Criar Documento

POST ItemTransaction

{
"TransSerial":"1",
   "TransDocument":"FR",
   "PartyID":"2",
   "Comments":"Document Comments",
   "TransactionTaxIncluded":"True",

   "Details":[
      {
         "ItemID":"arroz001",
         "Quantity":10,
         "UnitPrice":1.22,
         "WarehouseID":1,
         "Color":{
            "ColorID":0
         },
         "Size":{
            "SizeID":0
         },
         "DiscountPercent":0
      },
      {
         "ItemID":"arroz002",
         "Quantity":6,
         "UnitPrice":1.15,
         "WarehouseID":1,
         "Color":{
            "ColorID":0
         },
         "Size":{
            "SizeID":0
         },
         "DiscountPercent":0
      }
   ],

   "Salesman":{
      "SalesmanID":1
   },
   "Payment":{
      "PaymentID":1
   },
   "ContractReferenceNumber":"Document Reference",
   "UnloadPlace":{
      "LoadUnloadPlaceID":2
   },
   "UnloadPlaceAddress":{
      "AddressLine1":"Vale da Grama - Alto do Assilho Intermarche Albergaria-a-Velha",
      "AddressLine2":"",
      "PostalCode":"3850-226 Albergaria-a-Vel"
   }
}

API – Help document

How to see swagger to check json Struture – Access http://locahost:PORT/swagger

Go to endpoint v1/itemTransaction for example, and you can see example value to structure (this endpoint is used for Sales and Purchase documents):

Using QUERY Endpoint to get data:

Sage 50c Database Tables Structure: https://smartdigit.pt/SageDataDicionary.html

QUERY Endpoint: http://locahost:PORT/swagger/ui/index#!/Query/Query_V2Post

How to retrieve exception logs:

SELECT TOP(10) * FROM UX_SD_LOGS

How to filter by date

SELECT i.itemID, ItemNames.Description, i.ItemPictureName, i.FamilyID, f.Description
FROM Item I
INNER JOIN ItemNames ON i.itemID = ItemNames.ItemID
INNER JOIN Family f ON f.FamilyID = i.FamilyID
WHERE ItemNames.LanguageID = 'PTG' AND
CONCAT(CONVERT(VARCHAR(10), i.DtAlt, 120),' ', CAST(CONVERT(VARCHAR,DATEADD(SECOND, i.HrAlt*86400, 0),108) AS TIME)) > '2021-02-20 10:00:00'

SELECT        ItemID, BarCode, BarCodeType, ColorID, SizeID, PropertyID1, Description, UnitPrice, UnitOfSaleID, MaximumDecimals, Quantity, FindON, ItemType
FROM            (SELECT        i.ItemID, i.BarCode, i.BarCodeType, ISNULL(c.ColorID, 0) AS ColorID, ISNULL(s.SizeID, 0) AS SizeID, ISNULL(i.PropertyID1, NULL) AS PropertyID1, [in].Description,
                                                    CASE WHEN ispS.UnitPrice > 0 THEN ispS.UnitPrice ELSE isp.UnitPrice END AS UnitPrice, i.UnitOfSaleID, um.MaximumDecimals, NULL AS Quantity, 1 AS FindON, i.ItemType
                          FROM            dbo.Item AS i INNER JOIN
                                                    dbo.ItemNames AS [in] ON i.ItemID = [in].ItemID AND [in].LanguageID =
                                                        (SELECT        DefaultLanguageID
                                                          FROM            dbo.ConfSystem) INNER JOIN
                                                    dbo.UnitOfMeasure AS um ON um.UnitOfMeasureID = i.UnitOfSaleID INNER JOIN
                                                    dbo.ItemSellingPrices AS isp ON i.ItemID = isp.ItemID AND isp.PriceLineID = 1 AND isp.SizeID = 0 LEFT OUTER JOIN
                                                    dbo.ItemColor AS c ON i.ItemID = c.ItemID LEFT OUTER JOIN
                                                    dbo.ItemSize AS s ON i.ItemID = s.ItemID LEFT OUTER JOIN
                                                    dbo.ItemSellingPrices AS ispS ON i.ItemID = ispS.ItemID AND ispS.PriceLineID = 1 AND ispS.SizeID = s.SizeID
                          WHERE        (i.Discontinued = 0)
                          UNION
                          SELECT        POSi.ItemID, POSi.POSItemID, POSi.BarCodeType, ISNULL(POSi.ColorID, 0) AS ColorID, ISNULL(POSi.SizeID, 0) AS SizeID, ISNULL(i.PropertyID1, NULL) AS PropertyID1,
                                                   CASE WHEN POSi.Description <> '' THEN POSi.Description ELSE [in].Description END AS Description,
                                                   (CASE WHEN POSi.SalePrice > 0 THEN POSi.SalePrice ELSE (CASE WHEN ispS.UnitPrice > 0 THEN ispS.UnitPrice ELSE isp.UnitPrice END) END) AS UnitPrice, POSi.UnitOfMeasure, um.MaximumDecimals,
                                                   POSi.Quantity, 3 AS FindON, i.ItemType
                          FROM            dbo.POSIdentity AS POSi INNER JOIN
                                                   dbo.Item AS i ON POSi.ItemID = i.ItemID INNER JOIN
                                                   dbo.ItemNames AS [in] ON POSi.ItemID = [in].ItemID AND [in].LanguageID =
                                                       (SELECT        DefaultLanguageID
                                                         FROM            dbo.ConfSystem) INNER JOIN
                                                   dbo.UnitOfMeasure AS um ON um.UnitOfMeasureID = POSi.UnitOfMeasure INNER JOIN
                                                   dbo.ItemSellingPrices AS isp ON POSi.ItemID = isp.ItemID AND isp.PriceLineID = 1 AND isp.SizeID = POSi.SizeID LEFT OUTER JOIN
                                                   dbo.ItemSellingPrices AS ispS ON POSi.ItemID = ispS.ItemID AND ispS.PriceLineID = 1 AND ispS.SizeID = POSi.SizeID
                          WHERE        (POSi.POSItemID <> '') AND (i.Discontinued = 0)) AS T

CONCAT(CONVERT(VARCHAR(10), i.DtAlt, 120),' ', CAST(CONVERT(VARCHAR,DATEADD(SECOND, i.HrAlt*86400, 0),108) AS TIME)) > '2021-02-20 10:00:00'

Item list filtered by the language PTG and the date of the last change

dfsdf

SELECT i.itemID, ItemNames.Description, i.ItemPictureName, i.FamilyID, f.Description
FROM Item I
INNER JOIN ItemNames ON i.itemID = ItemNames.ItemID
INNER JOIN Family f ON f.FamilyID = i.FamilyID
WHERE ItemNames.LanguageID = 'PTG' AND
CONCAT(CONVERT(VARCHAR(10), i.DtAlt, 120),' ', CAST(CONVERT(VARCHAR,DATEADD(SECOND, i.HrAlt*86400, 0),108) AS TIME)) > '2021-02-20 10:00:00'

SELECT        ItemID, BarCode, BarCodeType, ColorID, SizeID, PropertyID1, Description, UnitPrice, UnitOfSaleID, MaximumDecimals, Quantity, FindON, ItemType
FROM            (SELECT        i.ItemID, i.BarCode, i.BarCodeType, ISNULL(c.ColorID, 0) AS ColorID, ISNULL(s.SizeID, 0) AS SizeID, ISNULL(i.PropertyID1, NULL) AS PropertyID1, [in].Description,
                                                    CASE WHEN ispS.UnitPrice > 0 THEN ispS.UnitPrice ELSE isp.UnitPrice END AS UnitPrice, i.UnitOfSaleID, um.MaximumDecimals, NULL AS Quantity, 1 AS FindON, i.ItemType
                          FROM            dbo.Item AS i INNER JOIN
                                                    dbo.ItemNames AS [in] ON i.ItemID = [in].ItemID AND [in].LanguageID =
                                                        (SELECT        DefaultLanguageID
                                                          FROM            dbo.ConfSystem) INNER JOIN
                                                    dbo.UnitOfMeasure AS um ON um.UnitOfMeasureID = i.UnitOfSaleID INNER JOIN
                                                    dbo.ItemSellingPrices AS isp ON i.ItemID = isp.ItemID AND isp.PriceLineID = 1 AND isp.SizeID = 0 LEFT OUTER JOIN
                                                    dbo.ItemColor AS c ON i.ItemID = c.ItemID LEFT OUTER JOIN
                                                    dbo.ItemSize AS s ON i.ItemID = s.ItemID LEFT OUTER JOIN
                                                    dbo.ItemSellingPrices AS ispS ON i.ItemID = ispS.ItemID AND ispS.PriceLineID = 1 AND ispS.SizeID = s.SizeID
                          WHERE        (i.Discontinued = 0)
                          UNION
                          SELECT        POSi.ItemID, POSi.POSItemID, POSi.BarCodeType, ISNULL(POSi.ColorID, 0) AS ColorID, ISNULL(POSi.SizeID, 0) AS SizeID, ISNULL(i.PropertyID1, NULL) AS PropertyID1,
                                                   CASE WHEN POSi.Description <> '' THEN POSi.Description ELSE [in].Description END AS Description,
                                                   (CASE WHEN POSi.SalePrice > 0 THEN POSi.SalePrice ELSE (CASE WHEN ispS.UnitPrice > 0 THEN ispS.UnitPrice ELSE isp.UnitPrice END) END) AS UnitPrice, POSi.UnitOfMeasure, um.MaximumDecimals,
                                                   POSi.Quantity, 3 AS FindON, i.ItemType
                          FROM            dbo.POSIdentity AS POSi INNER JOIN
                                                   dbo.Item AS i ON POSi.ItemID = i.ItemID INNER JOIN
                                                   dbo.ItemNames AS [in] ON POSi.ItemID = [in].ItemID AND [in].LanguageID =
                                                       (SELECT        DefaultLanguageID
                                                         FROM            dbo.ConfSystem) INNER JOIN
                                                   dbo.UnitOfMeasure AS um ON um.UnitOfMeasureID = POSi.UnitOfMeasure INNER JOIN
                                                   dbo.ItemSellingPrices AS isp ON POSi.ItemID = isp.ItemID AND isp.PriceLineID = 1 AND isp.SizeID = POSi.SizeID LEFT OUTER JOIN
                                                   dbo.ItemSellingPrices AS ispS ON POSi.ItemID = ispS.ItemID AND ispS.PriceLineID = 1 AND ispS.SizeID = POSi.SizeID
                          WHERE        (POSi.POSItemID <> '') AND (i.Discontinued = 0)) AS T

Get document identifiers and filter them by date

SELECT TransDocument, TransSerial, TransDocNumber, CONCAT(CONVERT(VARCHAR(10), DtAlt, 120),' ', CAST(CONVERT(VARCHAR,DATEADD(SECOND, HrAlt*86400, 0),108) AS TIME)) AS DtAlt FROM SaleTransaction 
WHERE CONCAT(CONVERT(VARCHAR(10), DtAlt, 120),' ', CAST(CONVERT(VARCHAR,DATEADD(SECOND, HrAlt*86400, 0),108) AS TIME)) > '2021-03-20 23:59:00'

Get list Open unpaid document of specific customer ordered by deferred payment date

SELECT CreateDate, DeferredPaymentDate, ContractReferenceNumber, TransSerial, TransDocument, TransDocNumber, TransInstallmentID, TotalAmount, TotalPendingAmount, DebitTotalAmount, CreditTotalAmount, PartyAccountTypeID, PartyAddressID
FROM CustomerLedgerAccount
  where TotalPendingAmount <> '0' and PartyID = '1'
  Order By DeferredPaymentDate

Manual (SmartAPI)

Minimum requirements:

  • .NET Framework 4.7.2
  • Database in SQL Server 2016 or above
  • Sage 2021 version or above

Introdução

A SmrtAPI é um produto que transforma toda a camada do sage numa WebAPI, conseguem com isso fazer qualquer operação que fazem em sage na SmartAPI.
Exemplos:
Criar/alterar/apagar Documentos
Criar/alterar/apagar Artigos
Criar/alterar/apagar qualquer tabela, documento
Comunicar guias á AT
Imprimir Documentos
Gerar Safts
e muito mais

Manual de instalação

O processo de instalação da extensibilidade é bastante simples. 
Pedimos ao utilizador que siga os passos abaixo indicados para instalar o produto SmartAPI.
Para a utilização a base de dados deve correr numa versão SQL Server 2016 ou superior.

Passo 1 – Instalação

Executar o exe de instalação do produto como administrador.

Irá ser apresentado o quadro de configuração, que irá servir para fazermos a ligação ao Sage

Versao Sage: Devemos selecionar se estamos a usar o 50c faturação ou 50c Loja
Empresa: ID/Nome da empresa (a mesma definida na area de sistema do sage)
Chave de Licença: Chave de licenciamento da aplicação SmartAPI
ID da Máquina: Caso pretendamos que o serviço use um machideID diferente do servidor, devemos indicar qual o machineID definido na conf de postos do Sage. (opcional)
Nome do Serviço: Nome a dar ao serviço (opcional)

Uma vez instalada a SmartAPI com sucesso, podemos verificar que foi criado um serviço no windows de nome SmartAPI.Sage50cLoja

Esse serviço é responsável por colocar em funcionamento toda a SmartAPI, para verificarmos se a API está em fucnionamento depois de garantir que o serviço está a correr sem problemas, na maquina onde foi instalada a smartAPI devemos abrir o seguinte link no browser http://localhost:5581/swagger/ui/index

Irá ser mostrado o swagger da api onde têm ativos todos os endpoints que o licencimaneto pedido tem acesso.

NOTAS
Caso pretendam alterar a API_KEY ou a porta default (5581) da SmartAPI devem editar o seguinte ficheiro
C:\SmartApps\API\Service\SmartAPI.ini



nesse ficheiro encontramos as seguintes settings
X-API-KEYS=pass de acesso á api, caso coloquem varias senhas, devem separar as mesmas por ponto e virgula, ficando algo como A-API-KEYS=DEMO1;DEMO2;DEMO3
APIPort=porta usada pela SmartAPI

De notar que qualquer alteração que façam ao ficheiro em questão, devem reiniciar o serviço SmartAPI, para que as novas configurações sejam carregadas no arranque.





x- Install SSL Protegido

Este manual está protegido. Introduza a senha para visualizar o conteúdo.

x- Create Cloudflare Tunnel Protegido

Este manual está protegido. Introduza a senha para visualizar o conteúdo.

Downloads

Ficheiro Tamanho Data
API202302001.v21.05.06.exe 154 MB 06/08/2026 Descarregar
APIUNIVERSAL202302001.v21.05.06.exe 73 MB 04/08/2026 Descarregar
API202302001.v21.05.05.exe 154 MB 10/07/2026 Descarregar

FAQs

POST Item

{
    "ItemID":"151201",
    "ItemType":0,
    "Description":"Caviar, Sturgeon, Black, Jar, Lemberg (box*6) 50g",
    "ShortDescription":"Caviar, Sturgeon, Black",
    "BarCode":"4260051071985",
    "BarCodeType":0,
    "WeightUnitOfMeasure":"GM",
    "WeightMeasure":50,
    "TaxableGroupID":4,
    "ItemTax":1,
    "ItemTax2":0,
    "ItemTax3":0,
    "AverageCostPrice":0,
    "SupplierID":"1",
    "Family":{
 "FamilyID":"1"
   },
    "UnitOfSaleID":"UNI",
    "AlternativeUnitOfStock":"UNI",
    "UnitConversion":1,
    "DefaultSellingUnit":"UNI",
    "DefaultBuyUnit":"UNI",
    "DefaultStockUnit":"UNI",
    "Locked":0,
    "ExtraFieldList":[
        
    ],
    "SalePrice":[
        {
            "PriceLineID":0,
            "UnitPrice":0,
            "CreateDate":"2023-12-08T16:45:20Z",
            "TaxIncludedPrice":0,
            "FixedProfitRate":0
        },
        {
            "PriceLineID":1,
            "UnitPrice":0,
            "CreateDate":"2023-12-08T16:45:20Z",
            "TaxIncludedPrice":0,
            "FixedProfitRate":0
        }
    ],
    "Comments":"",
    "StockManagement":true,
    "Discontinued":false
}

POST Item

{
  "ItemID":"0001",
  "ItemType":0,
  "Description":"Product Name ",
  "ShortDescription":"Product Name",
  "BarCode":"4260051071985",
  "TaxableGroupID":4,
  "SupplierID":"1",
  "Family":{
    "FamilyID":"1"
  },
  "UnitOfSaleID":"UNI",
  "Locked":0,
  "ExtraFieldList":[
    {
      "ExtraFieldID":"1",
      "TextAnswer":"Auto Tires"
    },
    {
      "ExtraFieldID":"2",
      "TextAnswer":"4x4 road tires"
    },
    {
      "ExtraFieldID":"3",
      "TextAnswer":"Bridgestone"
    },
    {
      "ExtraFieldID":"4",
      "TextAnswer":"Alenza 001"
    },
    {
      "ExtraFieldID":"5",
      "TextAnswer":"245"
    },
    {
      "ExtraFieldID":"6",
      "TextAnswer":"55"
    },
    {
      "ExtraFieldID":"7",
      "TextAnswer":"16"
    },
    {
      "ExtraFieldID":"8",
      "TextAnswer":"R"
    },
    {
      "ExtraFieldID":"9",
      "TextAnswer":"W"
    },
    {
      "ExtraFieldID":"10",
      "TextAnswer":"105"
    },
    {
      "ExtraFieldID":"11",
      "TextAnswer":"XL"
    },
    {
      "ExtraFieldID":"12",
      "TextAnswer":"A"
    },
    {
      "ExtraFieldID":"13",
      "TextAnswer":"B"
    },
    {
      "ExtraFieldID":"14",
      "TextAnswer":"B (71db)"
    }
  ],
  "SalePrice":[
    {
      "PriceLineID":0,
      "UnitPrice":0,
      "CreateDate":"2023-12-08T16:45:20Z",
      "TaxIncludedPrice":0,
      "FixedProfitRate":0
    },
    {
      "PriceLineID":1,
      "UnitPrice":10,
      "CreateDate":"2023-12-08T16:45:20Z",
      "TaxIncludedPrice":0,
      "FixedProfitRate":0
    }
  ],
  "Comments":""
}