Import document prin mesaj EDI
Funcțiile customizate de tipul "Import document prin mesaj EDI" sunt de două tipuri: STANDARD și INLINE și sunt utilizate pentru importul automat într-o altă societate, în NexusERP sau pentru automatizarea sincronizării cu alte sisteme. Pentru a utiliza acest tip de funcție customizată este necesară selecția unei funcții în cadrul unui mesaj EDI.
Pentru funcțiile INLINE se va realiza un select care să returneze structura prezentată, iar pentru funcțiile STANDARD se va realiza un INSERT INTO @ret_table, respectând aceeași structură.
Parametri funcție customizată
Parametru | Tip | Descriere |
---|---|---|
@numeFisier | VARCHAR(128) | Numele fișierului, inclusiv extensia |
@continutFisier | NVARCHAR(MAX) | Datele sub formă de JSON/XML |
@id_EdiProvider | BIGINT | Id-ul mesajului EDI |
Structura returnată de funcția customizată va fi în funcție de tabela importex a modulului în care se dorește importul
Exemplu de funcție customizată STANDARD pentru importul comenzilor de client:
Pentru funcția INLINE se va realiza doar select-ul, nu se va insera în tabela @ret_table:
DECLARE @xml XML = REPLACE(@continutFisier, ' encoding="utf-8"', ' encoding="utf-16"');
INSERT INTO @ret_table(id_document, data_document, id_carnet, id_gestiune, data_livrare, scadenta, moneda, den_adresa, observatii, identif, valoare, tip_produs, cod_produs, cantitate, pret_vanzare, denumire_sup, serie_produs)
SELECT dbo.string(t.c.value('@orderId[1]', 'BIGINT')) AS id_document,
GETDATE() AS data_document,
91 AS id_carnet,
'6(1)' AS id_gestiune,
t.c.value('@requested_delivery_date', 'DATE') AS data_livrare,
DATEDIFF(DAY, GETDATE(), t.c.value('@requested_delivery_date', 'DATE')) AS scadenta,
t.c.value('@currency_code', 'CHAR(3)') AS moneda,
ISNULL(t.c.value('@delivery_address_code', 'VARCHAR(200)'), '') AS den_adresa,
ISNULL(t.c.value('@comments', 'NVARCHAR(500)'), '') AS observatii,
ISNULL(t.c.value('@purchase_order_number', 'VARCHAR(50)'), '') AS identif,
t.c.value('@total_order_amount', 'MONEY') AS valoare,
'FAA' AS tip_produs,
l.c.value('@articlenr', 'VARCHAR(50)') AS cod_produs,
l.c.value('@quantity', 'NUMERIC(13,3)') AS cantitate,
CAST(REPLACE(l.c.value('@unit_price', 'VARCHAR(20)'), ',', '.') AS MONEY) AS pret_vanzare,
ISNULL(l.c.value('@description', 'VARCHAR(500)'), '') AS denumire_sup,
ISNULL(l.c.value('@line_no', 'VARCHAR(50)'), '') AS serie_produs
FROM @xml.nodes('CIPOutgoing/OrderHead') AS t(c)
CROSS APPLY @xml.nodes('CIPOutgoing/OrderLine') AS l(c)