Spis treści
Przykład procedury eksportującej
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Synchronization].[GetCustomData]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION [Synchronization].[GetCustomData] GO CREATE FUNCTION [Synchronization].[GetCustomData] ( @syncType int, @documentId int ) RETURNS XML AS BEGIN declare @data XML; set @data = (select [Implementations].[GetSpecificData](@syncType, @documentId) for xml path('SpecificElements'), root('CustomData'), type) return @data END GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Implementations].[GetSpecificData]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION [Implementations].[GetSpecificData] GO CREATE FUNCTION [Implementations].[GetSpecificData] ( @syncType int, @documentId int ) RETURNS XML AS BEGIN declare @specifics XML; set @specifics = (select el.OrdinalNumber as [@OrdinalNumber], el.SpecificCode as [@SpecificCode], el. SpecificTypeId as [@SpecificTypeId] from ExtensionSchema.SpecificDataTable el inner join Documents.TradeDocuments doc on el.DocumentId = doc.Id where el.DocumentId = @documentId and @syncType = 45 for xml path('row')) return @specifics END GO
Eksport danych z POS
Istnieje możliwość aby do obiektów tworzonych na POS i synchronizowanych do systemu ERP dołączyć własne dane. W tym celu należy nadpisać na bazie POS funkcję Synchronization.GetCustomData. Funkcja zwraca XMLa, a jako argumenty przyjmuje typ synchronizowanego obiektu (int) oraz jego identyfikator (int). Funkcja uruchamiana jest osobno dla każdego obiektu jaki ma zostać przesłany do systemu ERP.
Import po stronie DataService
Import danych odbywa się w kodzie C#. Każdy przetwarzany obiekt posiada property CustomData, typu XElement. Dane należy zdeserializować i samemu przetworzyć.
Przydatne informacje można pobrać ze statycznej klasy WebServiceHelper. Dla każdego wywołania metody kontraktu DataService-u można uzyskać informację o instancji POSa:
– kod POSa
– GUID POSa
– kod profilu
– wersja
Przykład importu na DataService-ie
[DataServiceBusinessModule] public static class Module { [MethodInitializer] public static void Initialize() { var customerService = IoC.Container.Resolve<IDataCustomerExtensionPointService>(); customerService.AfterSaveCustomerEvent += CustomerServiceEx_AfterSaveCustomerEvent; } private static void CustomerServiceEx_AfterSaveCustomerEvent(object sender, DTOResultEventArgs<Queue.DTO.CustomerDTO, string, int> e) { Console.WriteLine("{0}: {1}", e.Argument, e.EntityRow.CustomData.Name); var xe = e.EntityRow.CustomData; // XElement } }