Jump to content
Sign in to follow this  
Flávio do carmo

Inserção Movimento (Nucleos) Utilizando Script Sql

Recommended Posts

Boa tarde a todos,

Estou precisando ter uma orientação quando a um desenvolvimento de um script que faça o seguinte:

inserre um novo vomento no rm nucleos (TMOV), insere os itens devidos na (TITMMOV), atualiza contador (GAUTOINC) e me retorne (IDMOV) criado.

Não sei qual seria a melhor solução FUNCTION, PROCEDURE OU TRIGGER

INSERT

[CorporeRM].[dbo].[TMOV]

--[CorporeRM].[dbo].[TITMMOV]

([iDMOV],

[CODCOLIGADA],

[CODLOC],

[CODCFO],

[CODVEN1],

[sERIE],

[VALORBRUTO],

[VALORLIQUIDO],

[iNTEGRAAPLICACAO])

--[TITMMOV.IDMOV],

--[TITMMOV.IDPRD],

--[TITMMOV.VALORUNITARIO],

--[TITMMOV.QUANTIDADE])

VALUES

((SELECT MAX (GAUTOINC.VALAUTOINC) AS VALAUTOINC

FROM GAUTOINC(NOLOCK)

WHERE GAUTOINC.CODSISTEMA = 'T'

AND GAUTOINC.CODAUTOINC = 'IDMOV'),

'1',

'001',

'F104567',

'01.001',

'NF',

'1000',

'1000',

'T')

INSERT

[CorporeRM].[dbo].[TITMMOV]

([iDMOV],

[iDPRD],

[NSEQITMMOV],

[NUMEROSEQUENCIAL],

[VALORUNITARIO],

[QUANTIDADE],

[CODCOLIGADA])

VALUES

((SELECT MAX (TMOV.IDMOV) AS IDMOV

FROM TMOV (NOLOCK)),

'1483',

'1',

'1',

'100',

'10',

'1')

UPDATE GAUTOINC

SET GAUTOINC.VALAUTOINC = GAUTOINC.VALAUTOINC + 1

WHERE

GAUTOINC.CODSISTEMA = 'T'

AND GAUTOINC.CODAUTOINC = 'IDMOV'

Edited by Flaviobtmg

Share this post


Link to post
Share on other sites

Flavio,

Você quer montar um script para importar lançamentos para o Nucleus que tem origem de outro sistema ?

Se for você usar o Integration Services para realizar essa carga de dados. Com função você não irá conseguir pois dentro da função não permite a utilização de Insert, Delete e Update.

A Trigger também não seria adequada para isso, a Procedure você teria que ter os dados já prontos para a inserção ou fazer dentro da procedure ele ir buscar informações no outro banco de dados, se for SQL você pode usar addlinkdserver para conectar um servidor ao outro.

[]'s

Share this post


Link to post
Share on other sites

Flavio,

Você quer montar um script para importar lançamentos para o Nucleus que tem origem de outro sistema ?

Se for você usar o Integration Services para realizar essa carga de dados. Com função você não irá conseguir pois dentro da função não permite a utilização de Insert, Delete e Update.

A Trigger também não seria adequada para isso, a Procedure você teria que ter os dados já prontos para a inserção ou fazer dentro da procedure ele ir buscar informações no outro banco de dados, se for SQL você pode usar addlinkdserver para conectar um servidor ao outro.

[]'s

Correto é isso mesmo! Só que um dos banco eu só acesso via web service que é Dynamics CRM Online -> TOTVS RM NUCLEOS, basicamente o processo seria o seguinte:

Ao finalizar um pedido de venda no Dynamics o mesmo daria inserção deste no Núcleos e retornaria o idmov para que eu possa gravar no Dynamics.

Share this post


Link to post
Share on other sites

Flavio,

Se como o Dynamics é produto Microsoft então a Trigger resolveria o problema, quando citei que a Trigger não era adequada achei que a carga seria feita através de arquivos exportados de outros sistemas. Como nesse caso você tem um processo você a trigger te atenderia melhor quando salvar a informação no Dynamics dispararia a trigger, mas teria de analisar com bem o processo pois as vezes a trigger pode deixar o sistema um pouco mais lento.

[]'s

  • Like 1

Share this post


Link to post
Share on other sites

Frederico desde já lhe agradeço pela sua analise, mas gostaria que vc desse uma olhada na Trigger criada por favor:

CREATE TRIGGER [T_INSEREITEMMOV]

ON [dbo].[TITMMOV]

AFTER INSERT

AS

BEGIN TRANSACTION

DECLARE

@IDPRD INT,

@NSEQITMMOV INT,

@NUMEROSEQUENCIAL INT,

@VALORUNITARIO INT,

@QUANTIDADE INT,

@CODCOLIGADA INT

INSERT INTO

[CorporeRM].[dbo].[TITMMOV]

([iDMOV],

[iDPRD],

[NSEQITMMOV],

[NUMEROSEQUENCIAL],

[VALORUNITARIO],

[QUANTIDADE],

[CODCOLIGADA])

VALUES

((SELECT MAX (TMOV.IDMOV) AS IDMOV

FROM TMOV (NOLOCK)),

@IDPRD,

@NSEQITMMOV,

@NUMEROSEQUENCIAL,

@VALORUNITARIO,

@QUANTIDADE,

@CODCOLIGADA)

UPDATE

GAUTOINC

SET

GAUTOINC.VALAUTOINC = GAUTOINC.VALAUTOINC + 1

WHERE

GAUTOINC.CODSISTEMA = 'T'

AND GAUTOINC.CODAUTOINC = 'IDMOV'

COMMIT TRANSACTION

/*------------------------------------------------------------------------------------------------------*/

CREATE TRIGGER [T_INSEREMOV]

ON [dbo].[TMOV]

AFTER INSERT

AS

BEGIN TRANSACTION

DECLARE

@IDMOV INT,

@CODCOLIGADA INT,

@CODLOC NVARCHAR (10),

@CODCFO NVARCHAR (10),

@CODVEN1 NVARCHAR (10),

@SERIE NVARCHAR (10),

@VALORBRUTO INT,

@VALORLIQUIDO INT,

@INTEGRAAPLICACAO NVARCHAR (5),

@NUMEROMOV INT,

@CODFILIAL INT,

@CODCOLCFOAUX INT,

@CODCFOAUX NVARCHAR (10),

@CODTDO INT,

@CODTMV NVARCHAR (10),

@DATA DATETIME

INSERT INTO

[CorporeRM].[dbo].[TMOV]

([iDMOV],

[CODCOLIGADA],

[CODLOC],

[CODCFO],

[CODVEN1],

[sERIE],

[VALORBRUTO],

[VALORLIQUIDO],

[iNTEGRAAPLICACAO],

[NUMEROMOV],

[CODFILIAL],

[CODCOLCFOAUX],

[CODCFOAUX],

[CODTDO],

[CODTMV])

VALUES

( (SELECT MAX (GAUTOINC.VALAUTOINC) AS VALAUTOINC

FROM GAUTOINC(NOLOCK)

WHERE GAUTOINC.CODSISTEMA = 'T'

AND GAUTOINC.CODAUTOINC = 'IDMOV'),

@CODCOLIGADA,

@CODLOC,

@CODCFO,

@CODVEN1,

@SERIE,

@VALORBRUTO,

@VALORLIQUIDO,

@INTEGRAAPLICACAO,

@NUMEROMOV,

@CODFILIAL,

@CODCOLCFOAUX,

@CODCFOAUX,

@CODTDO,

@CODTMV)

RETURN (@IDMOV)

COMMIT TRANSACTION

Edited by Flaviobtmg

Share this post


Link to post
Share on other sites

Flávio,

A trigger teria que ser no banco do Dynamics ? Na tabela que recebe pedidos ?

Pois da forma que está ai ela será disparada quando houver um insert na TMOV e TITMMMOV, sendo que essas tabelas vão receber o insert do outro banco.

  • Like 1

Share this post


Link to post
Share on other sites

Bom dia Flavio,

Estou precisando de uma solução muito parecida com a sua, no entanto vou utilizar o Engeman como sistema de origem. O script acima deu certo???

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.