- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Dúvida MsExecAuto({|x,y,z|MATA140(x,y,z)},_aAutoSF1,_aAutoSD1,3)
×
Linguagem de Programação ADVPL
Perguntas Dúvida MsExecAuto({|x,y,z|MATA140(x,y,z)},_aAutoSF1,_aAutoSD1,3)
- gustavo13
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 119
- Obrigados Recebidos: 0
11 anos 4 meses atrás #15306
por gustavo13
Olá!
Quando adiciono no _aLinha o campo D1_PEDIDO e D1_ITEMPC, ele simplesmente não funciona e quando os retiro funciona.
_aLinha = {}
AADD(_aLinha , {"D1_COD" , sb1 -> b1_cod , Nil } )
AADD(_aLinha , {"D1_DESCRI" , _sDescri , Nil } )
AADD(_aLinha , {"D1_TOTAL" , _nVlTot , Nil } )
AADD(_aLinha , {"D1_UM" , sb1 -> B1_UM , Nil } )
AADD(_aLinha , {"D1_TP" , sb1 -> B1_TIPO , Nil } )
AADD(_aLinha , {"D1_LOCAL" , sb1 -> B1_LOCPAD, Nil } )
AADD(_aLinha , {"D1_QUANT" , _nQuant , Nil } )
AADD(_aLinha , {"D1_VUNIT" , _nVlUni , Nil } )
aadd(_aLinha,{"D1_PEDIDO",'',Nil,Nil})
aadd(_aLinha,{"D1_ITEMPC",'',Nil,Nil})
if mv_par05 == "2" // Gerar nota
AADD(_aLinha , {"D1_TES" , _sTES , Nil } )
endif
AADD(_aAutoSD1, aClone (U_OrdAuto (_aLinha)))
next
endif
else
u_help ("Layout ou versao de XML desconhecidos na rotina " + procname ())
_lContinua = .F.
endif
// Gera a NF ou pre-NF de entrada.
if _lContinua
//acols := AlteraTeste(_aAutoSD1)
/* For i := 1 to len(acols)
If _aAutoSD1[1][2] == acols[1]
_aAutoSD1[9][2] := acols[3]
_aAutoSD1[8][2] := acols[2]
Endif
Next */
lMsHelpAuto := .F. // se .t. direciona as mensagens de help
lMsErroAuto := .F. // necessario a criacao
_aAmbAnt := U_SalvaAmb () // As rotinas automaticas alteram o conteudo das variaveis mv_par.
DbSelectArea("SF1")
if mv_par05 == "1" // Gerar pre-nota
MsExecAuto({|x,y,z|MATA140(x,y,z)},_aAutoSF1,_aAutoSD1,3)
elseif mv_par05 == "2" // Gerar nota
//U_EL_SOLTESTE("2121",.T., _aLinha,"1212")
// Abre tela do doc. entrada (parametro .T.) para possibilitar conferencia e manutencao do usuario.
MATA103 (_aAutoSF1, _aAutoSD1, 3, .T.)
endif
U_SalvaAmb (_aAmbAnt)
//If lMsErroAuto
// MostraErro()
//else
// Verifica se a nota foi gravada (usuario pode ter cancelado no final)
if sf1 -> f1_filial == xfilial ("SF1") ;
.and. sf1 -> f1_doc == right (zzx -> zzx_doc, tamsx3 ("F1_DOC")[1]) ;
.and. sf1 -> f1_serie == zzx -> zzx_serie ;
.and. sf1 -> f1_fornece == zzx -> zzx_clifor ;
.and. sf1 -> f1_loja == zzx -> zzx_loja
reclock ("ZZX", .F.)
zzx -> zzx_NFGer = 'S'
msunlock ()
u_help ("Documento '" + sf1 -> f1_doc + "' gerado com sucesso.")
endif
//endif
endif
Quando adiciono no _aLinha o campo D1_PEDIDO e D1_ITEMPC, ele simplesmente não funciona e quando os retiro funciona.
_aLinha = {}
AADD(_aLinha , {"D1_COD" , sb1 -> b1_cod , Nil } )
AADD(_aLinha , {"D1_DESCRI" , _sDescri , Nil } )
AADD(_aLinha , {"D1_TOTAL" , _nVlTot , Nil } )
AADD(_aLinha , {"D1_UM" , sb1 -> B1_UM , Nil } )
AADD(_aLinha , {"D1_TP" , sb1 -> B1_TIPO , Nil } )
AADD(_aLinha , {"D1_LOCAL" , sb1 -> B1_LOCPAD, Nil } )
AADD(_aLinha , {"D1_QUANT" , _nQuant , Nil } )
AADD(_aLinha , {"D1_VUNIT" , _nVlUni , Nil } )
aadd(_aLinha,{"D1_PEDIDO",'',Nil,Nil})
aadd(_aLinha,{"D1_ITEMPC",'',Nil,Nil})
if mv_par05 == "2" // Gerar nota
AADD(_aLinha , {"D1_TES" , _sTES , Nil } )
endif
AADD(_aAutoSD1, aClone (U_OrdAuto (_aLinha)))
next
endif
else
u_help ("Layout ou versao de XML desconhecidos na rotina " + procname ())
_lContinua = .F.
endif
// Gera a NF ou pre-NF de entrada.
if _lContinua
//acols := AlteraTeste(_aAutoSD1)
/* For i := 1 to len(acols)
If _aAutoSD1[1][2] == acols[1]
_aAutoSD1[9][2] := acols[3]
_aAutoSD1[8][2] := acols[2]
Endif
Next */
lMsHelpAuto := .F. // se .t. direciona as mensagens de help
lMsErroAuto := .F. // necessario a criacao
_aAmbAnt := U_SalvaAmb () // As rotinas automaticas alteram o conteudo das variaveis mv_par.
DbSelectArea("SF1")
if mv_par05 == "1" // Gerar pre-nota
MsExecAuto({|x,y,z|MATA140(x,y,z)},_aAutoSF1,_aAutoSD1,3)
elseif mv_par05 == "2" // Gerar nota
//U_EL_SOLTESTE("2121",.T., _aLinha,"1212")
// Abre tela do doc. entrada (parametro .T.) para possibilitar conferencia e manutencao do usuario.
MATA103 (_aAutoSF1, _aAutoSD1, 3, .T.)
endif
U_SalvaAmb (_aAmbAnt)
//If lMsErroAuto
// MostraErro()
//else
// Verifica se a nota foi gravada (usuario pode ter cancelado no final)
if sf1 -> f1_filial == xfilial ("SF1") ;
.and. sf1 -> f1_doc == right (zzx -> zzx_doc, tamsx3 ("F1_DOC")[1]) ;
.and. sf1 -> f1_serie == zzx -> zzx_serie ;
.and. sf1 -> f1_fornece == zzx -> zzx_clifor ;
.and. sf1 -> f1_loja == zzx -> zzx_loja
reclock ("ZZX", .F.)
zzx -> zzx_NFGer = 'S'
msunlock ()
u_help ("Documento '" + sf1 -> f1_doc + "' gerado com sucesso.")
endif
//endif
endif
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 4 meses atrás #15308
por kanaamlrr
Respondido por kanaamlrr no tópico Dúvida MsExecAuto({|x,y,z|MATA140(x,y,z)},_aAutoSF1,_aAutoSD1,3)
Você tem que preencher esses campos com algum valor, senão não irá funcionar, da forma que você está colocando, ele está tentando atribuir em branco.
Se você estiver parametrizado para que o doc de entrada só entre com um PC, ele irá dar rejeição na inclusão.
Se você estiver parametrizado para que o doc de entrada só entre com um PC, ele irá dar rejeição na inclusão.
Por favor Acessar ou Registrar para participar da conversa.
- gustavo13
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 119
- Obrigados Recebidos: 0
11 anos 4 meses atrás #15378
por gustavo13
Respondido por gustavo13 no tópico Dúvida MsExecAuto({|x,y,z|MATA140(x,y,z)},_aAutoSF1,_aAutoSD1,3)
Mesmo colocando valor continua não funcionando quando adiciono os dois campos no código, ele não retorna erro. Ele apenas nesta verificação "sf1 -> f1_filial == xfilial ("SF1") .and. sf1 -> f1_doc == right (zzx -> zzx_doc, tamsx3 ("F1_DOC")[1]) .and. sf1 -> f1_serie == zzx -> zzx_serie .and. sf1 -> f1_fornece == zzx -> zzx_clifor .and. sf1 -> f1_loja == zzx -> zzx_loja" retorna todos os campos SF1 em branco e cai fora, pois fica diferente dos campos zzx, mas quando tiro do fonte o D1_PEDIDO e D1_ITEMPED ele retornar os campos SF1 preenchidos e funciona.
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 4 meses atrás #15386
por kanaamlrr
Respondido por kanaamlrr no tópico Dúvida MsExecAuto({|x,y,z|MATA140(x,y,z)},_aAutoSF1,_aAutoSD1,3)
Cara, quando você for fazer essa verificação você tem que reposicionar a SF1, pode ser que internamente ela esteja perdendo o posicionamento.
Coloca uma validação com dbSeek antes para ver se criou.
Coloca uma validação com dbSeek antes para ver se criou.
Por favor Acessar ou Registrar para participar da conversa.
- gustavo13
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 119
- Obrigados Recebidos: 0
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Dúvida MsExecAuto({|x,y,z|MATA140(x,y,z)},_aAutoSF1,_aAutoSD1,3)
Tempo para a criação da página:0.121 segundos