Ir para conteúdo
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Inserção Movimento (Nucleos) Utilizando Script Sql


Posts Recomendados


  • Tópicos Que Criei:  4
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  10
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  94
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

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'

Editado por Flaviobtmg
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  11
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  1.140
  • Conteúdo/Dia:  0.22
  • Reputação:   60
  • Pontos/Conquistas:  6.161
  • Conteúdo Resolvido:  0
  • Dias Ganho:  33
  • Status:  Offline
  • Idade:  42
  • Dispositivo:  Windows

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

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  4
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  10
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  94
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

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.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  11
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  1.140
  • Conteúdo/Dia:  0.22
  • Reputação:   60
  • Pontos/Conquistas:  6.161
  • Conteúdo Resolvido:  0
  • Dias Ganho:  33
  • Status:  Offline
  • Idade:  42
  • Dispositivo:  Windows

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
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  4
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  10
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  94
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

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

Editado por Flaviobtmg
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  11
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  1.140
  • Conteúdo/Dia:  0.22
  • Reputação:   60
  • Pontos/Conquistas:  6.161
  • Conteúdo Resolvido:  0
  • Dias Ganho:  33
  • Status:  Offline
  • Idade:  42
  • Dispositivo:  Windows

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
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  4
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  10
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  94
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Obrigado pelas sua análise e orientação Frederico!

Link para comentar
Compartilhar em outros sites

  • 2 meses depois...

  • Tópicos Que Criei:  11
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  129
  • Conteúdo/Dia:  0.02
  • Reputação:   0
  • Pontos/Conquistas:  750
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

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???

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

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

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.