Histórico da Página
...
Para visualizar o exemplo completo, basta clicar no Link a seguir: TSTA500.PRW
Opções disponíveis - nOpcAut
04-Devolução
05-Reentrega
06-Complemento
07-Cancelamento
08-Aliança
09-Manut. Transp
10-Compl.Impost
11-Armazenagem
12-Anulação
13-Substituição
14-Can.Anul
Aviso | ||
---|---|---|
| ||
Parâmetros e processo abaixo desativados à partir de atendendo Ajuste SINIEF 9/07 CONFAZ, onde para o prestador de serviços, foi revogado a obrigação de emissão do CT-e de Anulação. Devendo ser seguido à partir desta data emissão de CTe Substituição. |
...
* Valor do documento:
Para a chamada da devolução, pode-se gerá-la de 3 formas para o cálculo do Valor do documento:
- Calculado: O Sistema calculará, baseado nas condições comerciais cadastradas, o valor do documento de devolução.
Para efetivar uma devolução nesta condição, o array aItens deverá conter uma linha vazia.
- Valor Informado: Um valor líquido será informado para a rotina, que acatará este valor para o documento.
Para esta opção, enviar 1 item com a constante "NVLRDOC" preenchida com o valor desejado.
- Percentual informado: Um percentual sobre o Documento original será informado à rotina, que fará o cálculo e o gravará no documento.
Para esta opção, enviar 1 item com a constante "NPERCDOC" preenchida com o percentual desejado.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
//-- Montagem do Cabeçalho aCab := {} AAdd( aCab, { "DT6_FILDOC" , DT6->DT6_FILDOC , Nil } ) //-- Obrigatorio AAdd( aCab, { "DT6_DOC" , DT6->DT6_DOC , Nil } ) //-- Obrigatorio AAdd( aCab, { "DT6_SERIE" , DT6->DT6_SERIE , Nil } ) //-- Obrigatorio //-- Montagem dos Itens aItens := {} aAdd( aItens, {}) //-- Para que o valor da devolução seja calculada, enviar uma linha com array vazio If !MsgYesNo("No teste, deseja calcular valor da devolução? ") If MsgYesNo("Deseja testar por valor ($150)? Se a oção for 'Não', o percentual será de 30%") //-- Exemplo de opção de Valor informado em $150,00 AAdd( aItens[1], { "NVLRDOC" , 150 , Nil } ) Else //-- Exemplo de opção de percentual informado em 30% AAdd( aItens[1], { "NPERCDOC" , 30 , Nil } ) EndIf EndIf //-- Montagem das Nfs - Este array será apenas avaliado se a opção de devolução seja por NF (3ª pergunta do <F12> da rotina) aNfs := {} aAdd( aNfs, {}) DTC->(DbSetOrder(3)) //-- DTC_FILIAL+DTC_FILDOC+DTC_DOC+DTC_SERIE+DTC_SERVIC+DTC_CODPRO If DTC->(MsSeek(xFilial("DTC") + DT6->(DT6_FILDOC+DT6_DOC+DT6_SERIE))) AAdd( aNfs[Len(aNfs)], { "DTC_NUMNFC" , DTC->DTC_NUMNFC , Nil } ) //-- Obrigatorio, quando selecionado por NF (3º pergunte do F12 do TMSA500) AAdd( aNfs[Len(aNfs)], { "DTC_SERNFC" , DTC->DTC_SERNFC , Nil } ) //-- Obrigatorio, quando selecionado por NF (3º pergunte do F12 do TMSA500) AAdd( aNfs[Len(aNfs)], { "DTC_CLIREM" , DTC->DTC_CLIREM , Nil } ) //-- Obrigatorio, quando selecionado por NF (3º pergunte do F12 do TMSA500) AAdd( aNfs[Len(aNfs)], { "DTC_LOJREM" , DTC->DTC_LOJREM , Nil } ) //-- Obrigatorio, quando selecionado por NF (3º pergunte do F12 do TMSA500) AAdd( aNfs[Len(aNfs)], { "DTC_CODPRO" , DTC->DTC_CODPRO , Nil } ) //-- Obrigatorio, quando selecionado por NF (3º pergunte do F12 do TMSA500) AAdd( aNfs[Len(aNfs)], { "DTC_FILORI" , DTC->DTC_FILORI , Nil } ) //-- Obrigatorio, quando selecionado por NF (3º pergunte do F12 do TMSA500) AAdd( aNfs[Len(aNfs)], { "DTC_LOTNFC" , DTC->DTC_LOTNFC , Nil } ) //-- Obrigatorio, quando selecionado por NF (3º pergunte do F12 do TMSA500) EndIf //-- Chamada à MsExecAuto, os dois primeiros argumentos são de uso interno e serão ignorados, se passado algum conteúdo Private lMsErroAuto := .F. //-- Utilizada na funcao MsExecAuto() MsExecAuto({|a,b,c,d,e,f| TMSA500(a,b,c,d,e,f)},Nil,Nil,nOpcAut,aCab,aItens,aNfs) If lMsErroAuto MostraErro() Else MsgAlert("TESTE OK") EndIf |
Opção 5 - Reentrega
* Cabeçalho - Documento a receber a manutenção
Em todas as opções de chamadas, o TMSA500 espera os campos DT6_FILDOC, DT6_DOC e DT6_SERIE como cabeçalho.
* Opção de Reentrega por Documento ou Nf:
A opção reentrega por NFou por documento (3ª pergunta da tecla de função <F12>), será respeitada na execução automática.
Caso a opção seja de reentrega por Docto, o array de NF não será necessário.
Caso a opção de reentrega por NF esteja ativa, um array com as NF's a serem devolvidas será obrigatório para o sucesso.
Os campos obrigatórios para cada NF serão os seguintes:
- DTC_NUMNFC
- DTC_SERNFC
- DTC_CLIREM
- DTC_LOJREM
- DTC_CODPRO
- DTC_FILORI
- DTC_LOTNFC
* Valor do documento:
Para a chamada da reentrega, pode-se gerá-la de 3 formas para o cálculo do Valor do documento:
- Calculado: O Sistema calculará, baseado nas condições comerciais cadastradas, o valor do documento de reentrega.
Para efetivar uma reentrega nesta condição, o array aItens deverá conter uma linha vazia.
- Valor Informado: Um valor líquido será informado para a rotina, que acatará este valor para o documento.
Para esta opção, enviar 1 item com a constante "NVLRDOC" preenchida com o valor desejado.
- Percentual informado: Um percentual sobre o Documento original será informado à rotina, que fará o cálculo e o gravará no documento.
Para esta opção, enviar 1 item com a constante "NPERCDOC" preenchida com o percentual desejado.
Exemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
//-- Montagem do Cabeçalho
aCab := {}
AAdd( aCab, { "DT6_FILDOC" , DT6->DT6_FILDOC , Nil } ) //-- Obrigatorio
AAdd( aCab, { "DT6_DOC" , DT6->DT6_DOC , Nil } ) //-- Obrigatorio
AAdd( aCab, { "DT6_SERIE" , DT6->DT6_SERIE , Nil } ) //-- Obrigatorio
//-- Montagem dos Itens
aItens := {}
aAdd( aItens, {})
//-- Para que o valor da reentrega seja calculada, enviar uma linha com array vazio
If !MsgYesNo("No teste, deseja calcular valor da Reentrega? ")
If MsgYesNo("Deseja testar por valor ($250)? Se a oção for 'Não', o percentual será de 70%")
//-- Exemplo de opção de Valor informado em $250,00
AAdd( aItens[1], { "NVLRDOC" , 250 , Nil } )
Else
//-- Exemplo de opção de percentual informado em 70%
AAdd( aItens[1], { "NPERCDOC" , 70 , Nil } )
EndIf
EndIf
//-- Montagem das Nfs
//-- Diferente do exemplo da devolução (acima), este demonstra a chamada por documento, sem envio ou citação do array de NFs
//-- Chamada à MsExecAuto, os dois primeiros argumentos são de uso interno e serão ignorados, se passado algum conteúdo
Private lMsErroAuto := .F. //-- Utilizada na funcao MsExecAuto()
MsExecAuto({|a,b,c,d,e| TMSA500(a,b,c,d,e)},Nil,Nil,nOpcAut,aCab,aItens)
If lMsErroAuto
MostraErro()
Else
MsgAlert("TESTE OK")
EndIf |
04. ASSUNTOS RELACIONADOS
...