;** APEPC **********************************************************************
;* Apura‡Æo de PIS/COFINS - Entradas                                           *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 08/04/2011 por Bruno Carvalho
;Ultima Alteracao: 20/08/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desprezar item notai cancalado
;Ultima Alteracao: 20/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo Layout de relatorios e op‡äes de filtro
;Ultima Alteracao: 24/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 28/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes valor contabil
;Ultima Alteracao: 14/11/2014 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes condicoes Natureza Base de Calculo do Credito
;Ultima Alteracao: 18/02/2014 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes tardelli tecidos natureza base de calculo
;Ultima Alteracao: 26/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 24/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_CODMODELO
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()
;Ultima Alteracao: 02/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_ESPDOCTO  
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 17/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NAT_BC_CRED #0370
;Ultima Alteracao: 18/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NAT_BC_CRED #0410
;Ultima Alteracao: 16/03/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Natureza do Frete] na ASK referente ao ESTOQUE 
;Ultima Alteracao: 25/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 08/08/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes sincronizado com spedefd2  NAT_BC_CRED

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona()
ClearAll

;****** Notas Entradas Faturamento *********************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
         Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
         Moveto [Numero do Documento    ] Check Example "ndoc"
         Moveto [Serie do Documento     ] Check Example "sdoc"
         Moveto [Nome Fantasia Empresa  ] Check
         Moveto [Tipo do Documento      ] Check TypeIn VSDGESPDOCTO
         Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
         Switch
           Case VSDGOPERACAO=1 : Moveto [Descricao da Destinacao] TypeIn "..DEVOL.."
           Case VSDGOPERACAO=2 : Moveto [Valor Servico          ] TypeIn ">0"
         EndSwitch
         Moveto [Tipo Movimento Estoque ] TypeIn "E"
         Moveto [Situacao               ] TypeIn "Not C"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
         Moveto [Codigo da Empresa      ] Example "cemp"
         Moveto [Numero do Documento    ] Example "ndoc"
         Moveto [Serie do Documento     ] Example "sdoc"
         Moveto [Item do Documento      ] Check 
         Moveto [CFO                    ] Check TypeIn VSDGCFOP
         Moveto [Preco Total            ] Check
         Moveto [Valor Desconto Total   ] Check
         Moveto [Valor Frete Total      ] Check
         Moveto [Valor Seguro Total     ] Check
         Moveto [Valor OutDesp Total    ] Check
         Moveto [PIS_CST                ] Check TypeIn "~VSDGCST.."
         Moveto [PIS_Aliquota           ] Check
         Moveto [PIS_BC                 ] Check
         Moveto [PIS_Valor              ] Check                     
         Moveto [COFINS_CST             ] Check TypeIn "~VSDGCST.."
         Moveto [COFINS_Aliquota        ] Check
         Moveto [COFINS_BC              ] Check
         Moveto [COFINS_Valor           ] Check
         Moveto [ICMS_ST_Valor          ] Check
         Moveto [Valor do IPI           ] Check
         Moveto [Situacao_Item          ] TypeIn "Not C"
         Do_It!
         ClearAll

         Processa("Faturamento")

EndIf

;****** Notas Entradas Estoque *************************************************
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
   Then {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
         Moveto [Numero do Lancamento   ] Example "nlan"
         Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
         Moveto [Numero do Documento    ] Check 
         Moveto [Serie do Documento     ] Check 
         Moveto [Nome Fantasia Empresa  ] Check
         Moveto [Codigo do Documento    ] Check
         Moveto [Tipo do Documento      ] Check TypeIn VSDGESPDOCTO
         Moveto [Data de Entrada        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
         Moveto [Tipo de Operacao       ] Check
         Moveto [Valor Servico          ] Check
         Moveto [Natureza do Frete      ] Check
         Switch
           Case VSDGOPERACAO=1 : Moveto [Tipo de Operacao       ] TypeIn "C or D or I"
           Case VSDGOPERACAO=2 : Moveto [Valor Servico          ] TypeIn ">0"
         EndSwitch
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
         Moveto [Numero do Lancamento   ] Example "nlan"
         Moveto [Sequencia do Lancamento] Check 
         Moveto [CFO                    ] Check TypeIn VSDGCFOP
         Moveto [Preco Total            ] Check
         Moveto [Valor Desconto Total   ] Check
         Moveto [Valor Frete Total      ] Check
         Moveto [Valor Seguro Total     ] Check
         Moveto [Valor OutDesp Total    ] Check
         Moveto [PIS_CST                ] Check TypeIn "~VSDGCST.."
         Moveto [PIS_Aliquota           ] Check
         Moveto [PIS_BC                 ] Check
         Moveto [PIS_Valor              ] Check                     
         Moveto [COFINS_CST             ] Check TypeIn "~VSDGCST.."
         Moveto [COFINS_Aliquota        ] Check
         Moveto [COFINS_BC              ] Check
         Moveto [COFINS_Valor           ] Check
         Moveto [ICMS_ST_Valor          ] Check
         Moveto [Valor do IPI           ] Check
         Do_It!
         ClearAll

         Processa("Estoque")

EndIf

EndProc  ;  (Seleciona)

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc Processa(Tipo)

View Tabela
Coedit "Answer" 
Scan For [Codigo da Empresa]<>""

  If IsBlank([Answer->PIS_Aliquota])    Then [Answer->PIS_Aliquota   ]=0 EndIf
  If IsBlank([Answer->COFINS_Aliquota]) Then [Answer->COFINS_Aliquota]=0 EndIf


  vr_tributacao=[ICMS_ST_Valor]+[Valor do IPI]
  vr_acresc    =[Valor Frete Total]+[Valor Seguro Total]+[Valor OutDesp Total]
  Vr_contabil  =([Preco Total]-[Valor Desconto Total])+vr_acresc+vr_tributacao
  
  For i From 1 to 2 

    empr=[Answer->Codigo da Empresa    ]
    tdoc=[Answer->Tipo do Documento    ]
    sdoc=[Answer->Serie do Documento   ]
    ndoc=[Answer->Numero do Documento  ]
    cfop=[Answer->CFO                  ]
    
    NAT_BC_CRED=""

    Switch
      Case Tipo="Estoque"    :

        If [Codigo do Documento]<>"TEL" And            ; Nota Telefone
           SubStr([Codigo do Documento],1,2)<>"CT" And ; Conhecimentos Transporte
           [Codigo do Documento]<>"CA" And             ; Conhecimentos Transporte Avulsa 
           [Codigo do Documento]<>"NFST" And           ; NF Servi‡o de Transporte
           [Codigo do Documento]<>"NFSF" And           ; NF Servi‡o de Transporte/Ferroviario
           [Codigo do Documento]<>"NFSC"               ; NF Servi‡o de Transporte/Ferroviario
            Then MODELO="03"
        EndIf       

        Switch
          Case [Codigo do Documento]="TEL"             : MODELO="22"
          Case [Codigo do Documento]="NFSC"            : MODELO="21"
          
          Case [Codigo do Documento]="NFST"            : MODELO="07"
          Case [Codigo do Documento]="NFSF"            : MODELO="27"
      
          Case [Codigo do Documento]="CTRC"            : MODELO="08"
          Case [Codigo do Documento]="CTAC"            : MODELO="09"
          Case [Codigo do Documento]="CA"              : MODELO="10"
          Case [Codigo do Documento]="CTFC"            : MODELO="11"
          Case [Codigo do Documento]="CTA"             : MODELO="8B" ;MODELO="12"
          Case [Codigo do Documento]="CTRM"            : MODELO="26"
          Case [Codigo do Documento]="CT-E"            : MODELO="57"
          Case SubStr([Codigo do Documento],1,3)="CTR" : MODELO="08"
        EndSwitch
      
        if [Valor Servico   ]>0
           Then 
                If [Tipo de Operacao]="D"
                   Then NAT_BC_CRED="13"
                   Else NAT_BC_CRED="03"
                EndIf
                
           Else
            ;sempre sincronizar esta regra NAT_BC_CRED no script SPEDEFD2 icms_ipi

                Switch
                  Case MODELO="22" Or MODELO="21": ; Telefone/Comunica‡Æo
                    NAT_BC_CRED="13"

                  Case MODELO<>"03"              : ; Transporte
                    NAT_BC_CRED="14"
                    
                   Switch
                     Case [Answer->Natureza do Frete]="0" : VSDGNATFRETE="VEND/VENDEDOR"
                     Case [Answer->Natureza do Frete]="1" : VSDGNATFRETE="VEND/ADQUIR."
                     Case [Answer->Natureza do Frete]="2" : VSDGNATFRETE="COMP./C/CRED"
                     Case [Answer->Natureza do Frete]="3" : VSDGNATFRETE="COMP./S/CRED"
                     Case [Answer->Natureza do Frete]="4" : VSDGNATFRETE="T. ACABADOS"
                     Case [Answer->Natureza do Frete]="5" : VSDGNATFRETE="T. SEMI-ACAB"
                     Case [Answer->Natureza do Frete]="9" : VSDGNATFRETE="OUTRAS"
                     OtherWise                            : VSDGNATFRETE = ""
                  EndSwitch
                  
                  if (sys_Codigo_Cliente="0370" Or
                      sys_Codigo_Cliente="0343" Or
                      sys_Codigo_Cliente="0418" Or
                      sys_Codigo_Cliente="0410")  and
                     ([Answer->Natureza do Frete]="2" or [Answer->Natureza do Frete]="3")
                     then NAT_BC_CRED="01" endif 
  
                  if (sys_Codigo_Cliente="0370" Or
                      sys_Codigo_Cliente="0343" Or
                      sys_Codigo_Cliente="0418" Or
                      sys_Codigo_Cliente="0410")  and
                     ([Answer->Natureza do Frete]="0" or [Answer->Natureza do Frete]="1")
                     then NAT_BC_CRED="07" endif 

                EndSwitch
        EndIf
        
      Case Tipo="Faturamento":

    EndSwitch

    If [Answer->PIS_CST]=[Answer->COFINS_CST]
       Then i=3
            cst            =[PIS_CST        ] 
            PIS_Aliquota   =[PIS_Aliquota   ]
            COFINS_Aliquota=[COFINS_Aliquota] 
       Else Switch
              case i=1: cst            =[PIS_CST        ]
                        PIS_Aliquota   =[PIS_Aliquota   ]
                        COFINS_Aliquota=BlankNum()
              case i=2: cst            =[COFINS_CST     ]
                        COFINS_Aliquota=[COFINS_Aliquota]
                        PIS_Aliquota   =BlankNum()
            EndSwitch
    EndIf

    Switch
      Case VSDGCODMODELO="01" :         sdoc="" ndoc=""  
      
      Case VSDGCODMODELO="02" : tdoc="" sdoc="" ndoc=""          
       
      Case VSDGCODMODELO="03" : tdoc="" sdoc="" ndoc="" cfop=""

      Case VSDGCODMODELO="04" : tdoc="" sdoc="" ndoc="" cfop="" NAT_BC_CRED=""

      Case VSDGCODMODELO="05" :
       
    EndSwitch

    Moveto Tabela
    Moveto [Numero do Lancamento]
    Locate "",empr,tdoc,sdoc,ndoc,cfop,cst,NAT_BC_CRED,PIS_Aliquota,COFINS_Aliquota                        
    If Not Retval
       Then
            End Down
            [Numero do Lancamento ]=""
            [Codigo da Empresa    ]=empr
            [Tipo do Documento    ]=tdoc
            [Serie do Documento   ]=sdoc
            [Numero do Documento  ]=ndoc
            [CFOP                 ]=cfop
            [CST                  ]=cst
            [NAT_BC_CRED          ]=NAT_BC_CRED  
            [PIS_Aliquota         ]=PIS_Aliquota
            [COFINS_Aliquota      ]=COFINS_Aliquota      
    EndIf

    If i=3 Or i=1
       Then [Valor Item     ]=[Valor Item     ]+[Answer->Preco Total          ]
            [Valor Desconto ]=[Valor Desconto ]+[Answer->Valor Desconto Total ]
            [Valor Acrescimo]=[Valor Acrescimo]+vr_acresc
            [Valor Contabil ]=[Valor Contabil ]+vr_contabil
    EndIf   

    If i=1 Or i=3
       Then [PIS_BC   ]=[PIS_BC   ]+[Answer->PIS_BC]
            [PIS_Valor]=[PIS_Valor]+[Answer->PIS_Valor]
    EndIf        
    If i=2 Or i=3
       Then [COFINS_BC   ]=[COFINS_BC   ]+[Answer->COFINS_BC]
            [COFINS_Valor]=[COFINS_Valor]+[Answer->COFINS_Valor]
    EndIf   
    UnLockRecord
    
    Moveto "Answer"
    If i=3 Then  QuitLoop EndIf

  EndFor
  
EndScan
Do_It!
ClearAll
Delete "Answer"

;******* Ajusta dados do cadastro de Empresas ******
{Ask} {\\Sistemas\\Cadastro\\Empresas}
Moveto [Codigo da Empresa    ] Example "empr"
Moveto [Nome Fantasia Empresa] Example "nome"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa    ] Example "empr"
Moveto [Nome Fantasia Empresa] TypeIn "Changeto _nome"
Do_It!
ClearAll

EndProc  ; (Processa)

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01  Sint‚tico por TpDocto/CFOP/CST/NBCC/%PIS e ou COFINS")
ModeloRelatoriosAdd("02  Sint‚tico por         CFOP/CST/NBCC/%PIS e ou COFINS")
ModeloRelatoriosAdd("03  Sint‚tico por              CST/NBCC/%PIS e ou COFINS")
ModeloRelatoriosAdd("04  Sint‚tico por                   CST/%PIS e ou COFINS[PadrÆo]")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("05  Anal¡tico por documento")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento,Temp,MSG_CAMPO,TECLA

Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN" Then AoCriarShowDialog() EndIf 
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9           : Temp=False
     Case Evento["KeyCode"] = -59         : Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_CFOP"          : Campo="TG_EMPRESA"
            Case Campo="TG_ESPDOCTO"      : Campo="TG_CFOP"
            Case Campo="TG_CST"           : Campo="TG_ESPDOCTO"
            Case Campo="TG_DTINI"         : Campo="TG_CST"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPERACAO"      : Campo="TG_DTFIM"  
            Case Campo="TG_CODMODELO"     : Campo="TG_OPERACAO"  
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"       : Campo="TG_CFOP"
                    Case Campo="TG_CFOP"          : Campo="TG_ESPDOCTO"
                     VSDGCFOP=ControlValue("TG_CFOP")
                    Case Campo="TG_ESPDOCTO"      : Campo="TG_CST"
                    Case Campo="TG_CST"           : Campo="TG_DTINI"
                     VSDGCST=ControlValue("TG_CST")
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"         : Campo="TG_OPERACAO"
                    Case Campo="TG_OPERACAO"      : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"     : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTFIM"     : MSG_CAMPO="Informe a Data Final"
  Case Campo="TG_CFOP"      : MSG_CAMPO="Informe um CFOP.. ou Em Branco=TODOS"
  Case Campo="TG_CST"       : MSG_CAMPO="Informe um CST ou Em Branco=TODOS"
  Case Campo="TG_OPERACAO":
       MensagemRadioButtons()
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

VSDGEMPRESA =""
VSDGESPDOCTO=""
VSDGCFOP    =""
VSDGCST     =""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Apura‡Æo PIS/COFINS - Entradas" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 14 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

    Label  @ 02,00 "CFOP"  For "TG_CFOP"
    Accept @ 03,01 Width 08 "A5"  Picture "!*!" Tag "TG_CFOP" To VSDGCFOP

    Label  @ 02,09 "EspDocto"  For "TG_ESPDOCTO"
    Accept @ 03,10 Width 08 "A5"  Picture "!*!" Tag "TG_ESPDOCTO" To VSDGESPDOCTO

    Label  @ 02,18 "CST"  For "TG_CST"
    Accept @ 03,19 Width 08 "A5"  Picture "#*#" Tag "TG_CST" To VSDGCST 

    Label  @ 04,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 05,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,16 "at‚" For "TG_DTFIM"
    Accept @ 05,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label @ 00,35 "Opera‡äes " For "TG_OPERACAO"
    RadioButtons @ 01,35 Height 3 Width 34
      "~1~ Compras e Devolu‡äes[PadrÆo]",
      "~2~ Servi‡os",
      "~3~ Todas"
        Tag "TG_OPERACAO"
        To VSDGOPERACAO

    Label  @ 07,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 08,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 08,06  Width 63 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

    Pushbutton @ 10,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 10,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  if not ValidarModelosRelatorios() then loop endif         
  If Not Valida_ShowDialog("") Then Loop EndIf  

  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
  If IsBlank(VSDGCODMODELO)
     Then Mensagem("Modelo relat¢rio invalido !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK=""  Then Loop EndIf

  AGUARDE("Aguarde, gerando o relat¢rio")
  
  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Icms_Ipi\\apepc" Tabela
  Empty(Tabela)

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Seleciona()
  EndWhile

  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Loop
  EndIf

  Filtro="Filtro = Entradas - "
  Switch
    Case VSDGOPERACAO=1 : Filtro=Filtro+"Operacao=Compras e Devolucoes  "
    Case VSDGOPERACAO=2 : Filtro=Filtro+"Operacao=Servicos  "
    OtherWise           : Filtro=Filtro+"Operacao=TODAS  "
  EndSwitch

  Switch
    Case VSDGESPDOCTO<>"": Filtro=Filtro+"TPDOC="+VSDGESPDOCTO+"  "
    OtherWise            : Filtro=Filtro+"TPDOC=TODOS  "
  EndSwitch

  Switch
    Case VSDGCFOP <>""  : Filtro=Filtro+" CFOP="+VSDGCFOP +"  "
    OtherWise           : Filtro=Filtro+" CFOP=TODOS  "
  EndSwitch

  Switch
    Case VSDGCST  <>""  : Filtro=Filtro+"  CST="+VSDGCST  +"  "
    OtherWise           : Filtro=Filtro+"  CST=TODOS  "
  EndSwitch
  
  Switch
    Case VSDGCODMODELO="01" : IMPRIREL(Tabela,"1")
    Case VSDGCODMODELO="02" : IMPRIREL(Tabela,"2")
    Case VSDGCODMODELO="03" : IMPRIREL(Tabela,"3")
    Case VSDGCODMODELO="04" : IMPRIREL(Tabela,"4")
    Case VSDGCODMODELO="05" : IMPRIREL(Tabela,"5")
    OtherWise:
      Mensagem("Modelo relat¢rio invalido !")
  EndSwitch

  Delete Tabela
       
EndWhile
ClearAll
Release Vars All
Release Procs All
