Alterar artigo
Altera dados de um artigo.
Endpoint: PATCH Item
A carregar...
Centro do produto
Integração e API SmartDigit. Manuais na wiki SmartDigit.
Nenhuma novidade encontrada para esta pesquisa.
Altera dados de um artigo.
Endpoint: PATCH Item
Altera dados de um cliente. (O título original dizia «Alterar artigo».)
Endpoint: PATCH Customer
Cria um artigo.
Endpoint: POST Item
Cria um artigo com campos extra.
Endpoint: POST Item
Cria um cliente.
Endpoint: POST Customer
Cria um documento de venda ou compra.
Endpoint: POST ItemTransaction
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):

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
A SmartAPI expõe a camada do Sage 50 como Web API. Tudo o que faz no Sage pode ser feito via API: criar, alterar e apagar documentos, artigos e outras tabelas; comunicar guias à AT; imprimir documentos; gerar SAF-T; e muito mais.
Execute o instalador como administrador.
O quadro de configuração faz a ligação ao Sage:
| Campo | Descrição |
|---|---|
| Versão Sage | 50c Faturação ou 50c Loja. |
| Empresa | ID/nome da empresa (o mesmo da área de sistema do Sage). |
| Chave de licença | Chave de licenciamento da SmartAPI. |
| ID da máquina | Opcional. Machine ID definido na configuração de postos, se o serviço não usar o do servidor. |
| Nome do serviço | Opcional. Nome a dar ao serviço Windows. |
Após a instalação é criado o serviço Windows SmartAPI.Sage50cLoja.
Com o serviço a correr, abra no browser da máquina onde foi instalada:
Para alterar a API key ou a porta predefinida (5581), edite C:\SmartApps\API\Service\SmartAPI.ini.
X-API-KEYS | Palavra-passe de acesso. Várias chaves separam-se por ponto e vírgula, por exemplo DEMO1;DEMO2;DEMO3. |
APIPort | Porta da SmartAPI. |
Este manual está protegido. Introduza a senha para visualizar o conteúdo.
Este manual está protegido. Introduza a senha para visualizar o conteúdo.
| 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 |
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":""
}