Estensibilità della sincronizzazione dei dati da POS: opzione 1

Esempio della procedura di esportazione

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],

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

Esportazione dei dati da POS

 

Esportazione dei dati da POS

È anche possibile aggiungere i propri dati agli oggetti creati in POS e sincronizzati verso il sistema ERP. Per farlo bisogna sovrascrivere nel database POS la funzione Synchronization.GetCustomData. La funzione restituisce XML e come argomenti assume il tipo dell’oggetto sincronizzato (int) e il suo identificatore (int). La funzione viene avviata separatamente pe rogni ogetto che va inviato al sistema ERP.

Importazione in DataService

L’importazione dei dati viene eseguita in codice C#. Ogni oggetto elaborato possiede la proprietà CustomData, del tipo XEelement. I dati vanno deserializzati e elaborati manualmente.
Le informazioni utili possono essere scaricate dalla classe statica WebServiceHelper. Per ciascuna chiamata del metodo del contratto di DataService è possibile ottenere le seguenti informazioni sull’istanza POS:

– codice POS

– GUID POS

– codice profilo

– versione

Esempio di importazione su DataService

[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

}

}


 

Czy ten artykuł był pomocny?