Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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
titleImportante:

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.

...

Bloco de código
languagejava
themeMidnight
//-- 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
languagejava
themeMidnight
//-- 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


Opção 6 - Complemento
* 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.

* Valor do documento:
Para a chamada da funcionalidade de complemento, é obrigatório que sejam enviados todos os itens com os componentes e os valores a serem complementados.
Como trata-se de complemento de um documento, apenas componentes do documento original poderão ser complementados.
IMPORTANTE: NÃO poderá complementar o documento pelo total do frete (internamente tratado como componente "TF").
Os campos a serem enviados no array de itens são:
- DT8_CODPAS (Obrigatório): Código do componente a ser complementado.
- DT8_VALTOT (Obrigatório): Valor do complemento para o componente.

Exemplo:

Bloco de código
languagejava
themeMidnight
//-- 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 := {}
If MsgYesNo("Testar com erro?")
    //-- "Maus" exemplos de uso da rotina, deve-se enviar ao menos um componente e ele deve ser válido e com valor positivo.
    aAdd( aItens, {})
    If !MsgYesNo("Zerado?")
        AAdd( aItens[Len(aItens)], { "DT8_CODPAS", 'XX'                             , Nil } ) //-- Código do Componente: Obrigatório
        AAdd( aItens[Len(aItens)], { "DT8_VALTOT",  100                             , Nil } ) //-- Valor do Componente: Obrigatório
    EndIf
Else
    //-- Exemplo complementando todos os componentes do documento por 15% do seu valor original
    DT8->(DbSetOrder(2)) //-- DT8_FILIAL+DT8_FILDOC+DT8_DOC+DT8_SERIE+DT8_CODPRO+DT8_CODPAS
    DT8->(MsSeek(xFilial("DT8")+DT6->(DT6_FILDOC+DT6_DOC+DT6_SERIE)))
    Do While DT8->(!Eof()) .And. DT8->(DT8_FILIAL+DT8_FILDOC+DT8_DOC+DT8_SERIE) == xFilial("DT8")+DT6->(DT6_FILDOC+DT6_DOC+DT6_SERIE)
        //-- O Total do Frete é ignorado pela rotina, se passado
        If AllTrim(DT8->DT8_CODPAS) != "TF"
            aAdd( aItens, {})
            AAdd( aItens[Len(aItens)], { "DT8_CODPAS", DT8->DT8_CODPAS               , Nil } ) //-- Código do Componente: Obrigatório
            AAdd( aItens[Len(aItens)], { "DT8_VALTOT", DT8->DT8_VALTOT   * 0.15      , Nil } ) //-- Valor do Componente: Obrigatório
        EndIf
        DT8->(DbSkip())
    EndDo
EndIf
 
//-- Montagem das Nfs
//-- Apenas a opção de devolução e reentrega possuem esta opção e não é necessário seu envio
//-- 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


  • Opção 7 - Cancelamento
    * 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.
    Na opção de Cancelamento, apenas o Cabeçalho é necessário, onde informa-se o documento a ser cancelado.

Exemplo:

Bloco de código
languagejava
themeMidnight
//-- 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
//-- Não há itens para a opção de cancelamento.
aItens := {}
aAdd( aItens, {})
 
//-- Montagem das Nfs
//-- Apenas a opção de devolução e reentrega possuem esta opção e não é necessário seu envio
 
//-- 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
  • Opção 8 - Aliança
    * 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.

    * Itens:
    Para a chamada da manutenção Aliança, será observado, assim como na tela, se o TMS está com o serviço de Aliança ativo.
    Existem 3 ações que podem ser executadas nesta opção:
    - Documento Aliança ser alterado para Documento Normal
    Neste caso, não é necessário envio de qualquer informação no Item.
    - Documento Normal para Aliança 1º percurso
    Indicar apenas que é 1º percurso, não havendo outras informações a serem enviadas.
    Para esta opção, enviar 1 item com a constante "NPERCURDOC" preenchida com número 1 (um).
    - Documento Normal para Aliança 2º percurso
    Deve-se indicar a filial e o Ctrc Aliança, assim como numero do parceiro (de acordo com a tabela MI do cadastro de tabelas - SX5).
    Para esta opção, enviar 1 item com as seguintes constantes:
    * "NPERCURDOC"- fixo 2
    * "CFILDPCDOC"- Filial aliança
    * "CCTRDPCDOC"- Ctrc Aliança
    * "NPARCEIDOC"- Número do parceiro de acordo com a ordem na tabela "MI" do cadastro de tabelas - SX5

Exemplo:

Bloco de código
languagejava
themeMidnight
//-- 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, {})
 
If TmsDocAli(DT6->DT6_FILDOC,DT6->DT6_DOC,DT6->DT6_SERIE)
    MsgAlert("Neste teste, o Documento é aliança, será retornado para transporte ou entrega normal")
 
 
ElseIf !MsgYesNo("Deseja testar com erro? ")
    If MsgYesNo("1º percurso?")
        AAdd( aItens[1], { "NPERCURDOC", 1          , Nil } )
    Else
        AAdd( aItens[1], { "NPERCURDOC", 2          , Nil } )
        AAdd( aItens[1], { "CFILDPCDOC", "02"       , Nil } )
        AAdd( aItens[1], { "CCTRDPCDOC", "123456"   , Nil } )
        AAdd( aItens[1], { "NPARCEIDOC", 1          , Nil } )
    EndIf
EndIf
 
 
//-- Montagem das Nfs
//-- Apenas a opção de devolução e reentrega possuem esta opção e não é necessário seu envio
 
 
//-- 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 9 - Manutenção Transporte
    * 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.

    * Itens:
    Para a chamada da manutenção de Transporte do documento, pode-se alterar apenas 2 informações:
    - Serviço de transporte: Indicar o serviço de transposte, exemplo: "1"-Coleta, "2"-Transporte; "3"-Entrega.
    Para esta opção, enviar 1 item com a constante "CSERTMSDOC" preenchida com a informação desejada.
    - Tipo de transporte: 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 a informação desejada.

Exemplo:

Bloco de código
languagejava
themeMidnight
//-- 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, {})
If !MsgYesNo("Deseja testar com erro?")
    AAdd( aItens[1], { "CSERTMSDOC"  , Iif(DT6->DT6_SERTMS=="3","2","3")  , Nil } )
    AAdd( aItens[1], { "CTIPTRADOC"  , Iif(DT6->DT6_TIPTRA=="1","2","1")  , Nil } )
EndIf
//-- Montagem das Nfs
//-- Apenas a opção de devolução e reentrega possuem esta opção e não é necessário seu envio
//-- 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
  • Opção 10 - Complemento de Imposto
    * 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.

    * Valor do documento:
    Para a chamada do complemento de imposto, pode-se gerá-la de 2 formas para o cálculo do Valor do documento:
    - 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
languagejava
themeMidnight
//-- 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, {})
If MsgYesNo("Deseja testar por valor ($150)? Se a oção for 'Não', o percentual será de 30%")
    AAdd( aItens[1], { "NVLRDOC"   , 150    , Nil } )
Else
    AAdd( aItens[1], { "NPERCDOC"  , 30 , Nil } )
EndIf
//-- Montagem das Nfs
//-- Apenas a opção de devolução e reentrega possuem esta opção e não é necessário seu envio
//-- 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
  • Opção 11 - Armazenagem
    * 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.

    * Valor do documento:
    Para a chamada do documento de armazenagem, é necessário informar a quantidade de dias de armazenagem.
    Para esta opção, enviar 1 item com a constante "NDIASDOC" preenchida com a quantidade de dias de armazenagem.

Exemplo:

Bloco de código
languagejava
themeMidnight
//-- 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, {})
If !MsgYesNo("Testar com erro?")
AAdd( aItens[1], { "NDIASDOC" , 3 , Nil } )
EndIf
//-- Montagem das Nfs
//-- Apenas a opção de devolução e reentrega possuem esta opção e não é necessário seu envio
//-- 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

...