;** DICMSIPI *******************************************************************
;* Demonstrativo de ICMS/IPI - Entradas/Saidas                                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/05/2013 por Bruno Carvalho
;Ultima Alteracao: 28/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes valor contabil
;Ultima Alteracao: 22/07/2013 por Bruno Carvalho
;Motivo Alteracao: Alterado "TG_CSTICMS" de A2 d¡gitos para A3
;Ultima Alteracao: 25/09/2013 por Andrey Fillipe
;Motivo Alteracao: Adicionado Modelo 05 para detalhar os Itens  
;Ultima Alteracao: 04/10/2013 por Andrey Fillipe
;Motivo Alteracao: Ajustes no Report do Modelo 05   
;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: 09/05/2017 por Rafael Matos
;Motivo Alteracao: InclusÆo parametro PARAM_DICMSIPI_ENT
;Ultima Alteracao: 16/05/2017 por Rafael Matos
;Motivo Alteracao: Ajuste filtro VSDGCSOSN
;Ultima Alteracao: 27/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelo 05 por item do documento
;Ultima Alteracao: 22/01/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes pegar todas as entradas              
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 21/12/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajuste CST e CSOSN                       
;Ultima Alteracao: 25/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona()
ClearAll
        
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"
         if not isblank(VSDGNUMDOCTO) then       TypeIn ", "+VSDGNUMDOCTO endif
         Moveto [Serie do Documento       ] Check Example "sdoc"
         Moveto [Nome Fantasia Empresa    ] Check
         Moveto [Tipo do Documento        ] Check TypeIn VSDGESPDOCTO
         Moveto [Data de Emissao          ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
         If IsAssigned(PARAM_DICMSIPI_ENT) and PARAM_DICMSIPI_ENT 
           Then ;;;Moveto [Descricao da Destinacao] TypeIn "..DEVOL.." 
                Moveto [Tipo Movimento Estoque ] TypeIn "E"
           Else Moveto [Tipo Movimento Estoque ] TypeIn "S"
         EndIf         
         Moveto [Situacao                 ] TypeIn "Not C"
         Moveto [Razao Social             ] Check
         Moveto [CGC                      ] Check
        
        {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 [Aliquota Reduzida BCICMS ] Check
         Moveto [Aliquota de ICMS         ] Check
         Moveto [Valor do ICMS            ] Check
         Moveto [ICMS_BC                  ] Check
         Moveto [ICMS_ST_BC               ] Check
         Moveto [ICMS_ST_Valor            ] Check
         Moveto [ICMS_ST_Aliquota         ] Check
         Moveto [ICMS_CredSN_Aliquota     ] Check
         Moveto [ICMS_CredSN_Valor        ] Check
         Moveto [ICMS_ST_Aliquota Reduzida] Check
         Moveto [Tipo Tributacao          ] Check TypeIn "~VSDGCSTICMS.." 
         Moveto [CSOSN                    ] Check TypeIn "~VSDGCSOSN.."
         Moveto [Aliquota Reduzida BCIPI  ] Check
         Moveto [Aliquota de IPI          ] Check
         Moveto [Valor do IPI             ] Check
         Moveto [IPI_CST                  ] Check TypeIn "~VSDGCSTIPI.."
         Moveto [IPI_BC                   ] Check        
         Moveto [Situacao_Item            ] TypeIn "Not C"
         Moveto [Codigo do Item           ] Check
         Moveto [Descricao do Item        ] Check
         Do_It!
         ClearAll
         
         Processa("Faturamento")
EndIf

If IsAssigned(PARAM_DICMSIPI_ENT) and PARAM_DICMSIPI_ENT  
   Then 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 
                 if not isblank(VSDGNUMDOCTO) then        TypeIn VSDGNUMDOCTO endif
                 Moveto [Serie do Documento       ] Check 
                 Moveto [Nome Fantasia Empresa    ] Check
                 Moveto [Tipo do Documento        ] Check TypeIn VSDGESPDOCTO
                 Moveto [Data de Entrada          ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                 Moveto [Tipo de Operacao         ] Check
                 Moveto [Data de Emissao          ] Check
                 Moveto [Razao Social             ] Check
                 Moveto [CGC                      ] Check
                 
                {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
                 Moveto [Numero do Lancamento     ] Example "nlan"
                 Moveto [Sequencia do Lancamento  ] Check typein "as Item do Documento"
                 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 [Aliquota Reduzida BCICMS ] Check
                 Moveto [Aliquota de ICMS         ] Check
                 Moveto [Valor do ICMS            ] Check
                 Moveto [ICMS UF_ORIGEM           ] Check
                 Moveto [ICMS UF_DESTINO          ] Check 
                 Moveto [ICMS_BC                  ] Check
                 Moveto [ICMS_ST_BC               ] Check
                 Moveto [ICMS_ST_Valor            ] Check
                 Moveto [ICMS_ST_Aliquota         ] Check
                 Moveto [Tipo Tributacao          ] Check TypeIn "~VSDGCSTICMS.."
                 Moveto [CSOSN                    ] Check TypeIn "~VSDGCSOSN.."
                 Moveto [Aliquota Reduzida BCIPI  ] Check
                 Moveto [Aliquota de IPI          ] Check
                 Moveto [Valor do IPI             ] Check
                 Moveto [IPI_CST                  ] Check TypeIn "~VSDGCSTIPI.."
                 Moveto [IPI_BC                   ] Check
                 Moveto [Codigo do Item           ] Check
                 Moveto [Descricao do Item        ] Check
                 Do_It!
                 ClearAll
        
                 Processa("Estoque")
        EndIf
EndIf

EndProc  ;Seleciona()

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc Processa(Tipo)
                     
If VSDGCODMODELO="05"
   Then 
        Sort "Answer" On "Codigo da Empresa","Tipo do Documento","Serie do Documento","Numero do Documento","Item do Documento"    
   Else 
        Sort "Answer" On "Codigo da Empresa","Tipo do Documento","Serie do Documento","Numero do Documento","Cfo"
Endif
ClearAll    

empant="????"
View "\\Sistemas\\Cadastro\\Empresas"
View Tabela
Coedit "Answer" 
Scan For [Codigo da Empresa]<>""

  If [Codigo da Empresa]<>empant
     Then empant=[Codigo da Empresa]
          Moveto "\\Sistemas\\Cadastro\\Empresas"
          Moveto [Codigo da Empresa]
          Locate VSDGEMPRESA
          If RetVal
             Then TPEMPR = [Tipo da Empresa]
             Else TPEMPR = ""
          EndIf
          Moveto "Answer"
  EndIf                 

  If IsBlank([Answer->Aliquota de ICMS]) Then [Answer->Aliquota de ICMS]=0 EndIf
  If IsBlank([Answer->Aliquota de IPI]) Then [Answer->Aliquota de IPI]=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
  
  empr =[Answer->Codigo da Empresa    ]
  tdoc =[Answer->Tipo do Documento    ]
  sdoc =[Answer->Serie do Documento   ]
  ndoc =[Answer->Numero do Documento  ]
  idoc =[Answer->Codigo do Item       ]
  cfop =[Answer->CFO                  ]
  cst  =[Answer->Tipo Tributacao      ]
  csosn=[Answer->CSOSN                ]
    
  If TPEMPR<>"SIMPLES NACIONAL" And TPEMPR<>"SIMPLES NAC. ESRB"
     Then 
          csosn="" 
  EndIf  
  cst_ipi  =[IPI_CST]
  aliq_icms=[Aliquota de ICMS]
  aliq_ipi =[Aliquota de IPI]
        
  Switch
    Case VSDGCODMODELO="01" :         sdoc="" ndoc=""  
    
    Case VSDGCODMODELO="02" : tdoc="" sdoc="" ndoc=""          
     
    Case VSDGCODMODELO="03" : tdoc="" sdoc="" ndoc="" cfop=""

    Case VSDGCODMODELO="04" :
  
    Case VSDGCODMODELO="05" :
  EndSwitch

  seqitem=blanknum()
  If VSDGCODMODELO="05"
     Then seqitem=[Item do Documento      ]
  endif
  
  FAZ_ROTINA=False
  
  Moveto Tabela
  Moveto [Numero do Lancamento]     
  Locate "",empr,tdoc,sdoc,ndoc,seqitem,cfop,cst,csosn,cst_ipi,aliq_icms,aliq_ipi                       
  If RetVal
     Then FAZ_ROTINA=True
  EndIf

  If Not FAZ_ROTINA
     Then End Down
          [Numero do Lancamento     ]=""
          [Codigo da Empresa        ]=empr
          [Tipo do Documento        ]=tdoc
          [Serie do Documento       ]=sdoc
          [Numero do Documento      ]=ndoc
          [Item do Documento        ]=seqitem
          [CFOP                     ]=cfop
          [CST                      ]=cst
          [CSOSN                    ]=csosn
          [Aliquota de ICMS         ]=aliq_icms 
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
          [Valor Item               ]=[Answer->Preco Total              ]
          [Valor Desconto           ]=[Answer->Valor Desconto Total     ]
          [Valor Acrescimo          ]=vr_acresc
          [Valor Contabil           ]=vr_contabil
          [Aliquota Reduzida BCICMS ]=[Answer->Aliquota Reduzida BCICMS ]
          [Valor do ICMS            ]=[Answer->Valor do ICMS            ]
          [Tipo Tributacao          ]=[Answer->Tipo Tributacao          ]
          [ICMS_BC                  ]=[Answer->ICMS_BC                  ]
          [ICMS_ST_BC               ]=[Answer->ICMS_ST_BC               ]
          [ICMS_ST_Valor            ]=[Answer->ICMS_ST_Valor            ]
          [ICMS_ST_Aliquota         ]=[Answer->ICMS_ST_Aliquota         ]
          [Aliquota Reduzida BCIPI  ]=[Answer->Aliquota Reduzida BCIPI  ]
          [Aliquota de IPI          ]=[Answer->Aliquota de IPI          ]
          [Valor do IPI             ]=[Answer->Valor do IPI             ]
          [IPI_CST                  ]=[Answer->IPI_CST                  ]
          [IPI_BC                   ]=[Answer->IPI_BC                   ]
          [Data de Emissao          ]=[Answer->Data de Emissao          ]
          [Razao Social             ]=[Answer->Razao Social             ]
          [CGC                      ]=[Answer->CGC                      ]

          If VSDGCODMODELO="05"
             Then
                  [Codigo do Item           ]=[Answer->Codigo do Item           ]
                  [Descricao do Item        ]=[Answer->Descricao do Item        ]
          endif    

;;        If Tipo<>"Estoque"  
;;           Then [ICMS_CredSN_Aliquota     ]=[Answer->ICMS_CredSN_Aliquota     ]
;;                [ICMS_CredSN_Valor        ]=[Answer->ICMS_CredSN_Valor        ]
;;                [ICMS_ST_Aliquota Reduzida]=[Answer->ICMS_ST_Aliquota Reduzida]
;;        EndIf   
      Else [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
           [ICMS_BC        ]=[ICMS_BC        ]+[Answer->ICMS_BC             ]
           [Valor do ICMS  ]=[Valor do ICMS  ]+[Answer->Valor do ICMS       ]
           [ICMS_ST_BC     ]=[ICMS_ST_BC     ]+[Answer->ICMS_ST_BC          ]
           [ICMS_ST_Valor  ]=[ICMS_ST_Valor  ]+[Answer->ICMS_ST_Valor       ]
           [IPI_BC         ]=[IPI_BC         ]+[Answer->IPI_BC              ]
           [Valor do IPI   ]=[Valor do IPI   ]+[Answer->Valor do IPI        ]
          
;;         If Tipo<>"Estoque"  
;;            Then [ICMS_CredSN_Valor ]=[ICMS_CredSN_Valor]+[Answer->ICMS_CredSN_Valor]
;;         EndIf   
    EndIf  
    UnLockRecord
    Moveto "Answer" 
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 ICMS/CST IPI/%ICMS/%IPI")
ModeloRelatoriosAdd("02  Sint‚tico             CFOP/CST ICMS/CST IPI/%ICMS/%IPI")
ModeloRelatoriosAdd("03  Sint‚tico                  CST ICMS/CST IPI/%ICMS/%IPI[PadrÆo]")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("04  Anal¡tico por documento")
ModeloRelatoriosAdd("05  Anal¡tico por documento/Itens")
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_NUMDOCTO"      : Campo="TG_ESPDOCTO"
            Case Campo="TG_CSTICMS"       : Campo="TG_NUMDOCTO"
            Case Campo="TG_CSOSN"         : Campo="TG_CSTICMS"
            Case Campo="TG_CSTIPI"        : Campo="TG_CSOSN"
            Case Campo="TG_DTINI"         : Campo="TG_CSTIPI"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"    
            Case Campo="TG_CODMODELO"     : Campo="TG_DTFIM"  
            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_NUMDOCTO"
                    Case Campo="TG_NUMDOCTO"      : Campo="TG_CSTICMS"
                         VSDGNUMDOCTO=ControlValue("TG_NUMDOCTO")
                    Case Campo="TG_CSTICMS"       : Campo="TG_CSOSN"
                         VSDGCSTICMS=ControlValue("TG_CSTICMS")
                    Case Campo="TG_CSOSN"         : Campo="TG_CSTIPI"
                         VSDGCSOSN=ControlValue("TG_CSOSN")
                    Case Campo="TG_CSTIPI"         : Campo="TG_DTINI"     
                         VSDGCSTIPI=ControlValue("TG_CSTIPI")   
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"         : 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_NUMDOCTO"  : MSG_CAMPO="Informe o ..N£mero do Documento ou Em Branco=TODOS"
  Case Campo="TG_CFOP"      : MSG_CAMPO="Informe um CFOP.. ou Em Branco=TODOS"
  Case Campo="TG_CSOSN"     : MSG_CAMPO="Informe um CSOSN ou Em Branco=TODOS"
  Case Campo="TG_CSTICMS"   : MSG_CAMPO="Informe um CST de ICMS ou Em Branco=TODOS"
  Case Campo="TG_CSTIPI"    : MSG_CAMPO="Informe um CST de IPI ou Em Branco=TODOS"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGEMPRESA =""
VSDGESPDOCTO=""
VSDGNUMDOCTO=""
VSDGCFOP    =""
VSDGCSTICMS =""
VSDGCSTIPI  =""
VSDGCSOSN   =""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()

If IsAssigned(PARAM_DICMSIPI_ENT) and PARAM_DICMSIPI_ENT
   Then titulo = "Entradas"
   Else titulo = "Sa¡das"
        PARAM_DICMSIPI_ENT=False
EndIf 

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Demonstrativo ICMS/IPI - " + titulo 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 16 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 "A26" 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 "N£mero Docto"  For "TG_NUMDOCTO"
    Accept @ 03,19 Width 13 "A10"  Picture "!*!" Tag "TG_NUMDOCTO" To VSDGNUMDOCTO

    Label  @ 04,00 "CST ICMS"  For "TG_CSTICMS"
    Accept @ 05,01 Width 08 "A3"  Picture "#*#" Tag "TG_CSTICMS" To VSDGCSTICMS 

    Label  @ 04,09 "CSOSN"  For "TG_CSOSN"
    Accept @ 05,10 Width 08 "A3"  Picture "#*#" Tag "TG_CSOSN" To VSDGCSOSN

    Label  @ 04,18 "CST IPI"  For "TG_CSTIPI"
    Accept @ 05,19 Width 08 "A3"  Picture "#*#" Tag "TG_CSTIPI" To VSDGCSTIPI

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

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

    Pushbutton @ 12,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 12,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\\Dicmsipi" 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
  
  If IsAssigned(PARAM_DICMSIPI_ENT) and PARAM_DICMSIPI_ENT 
     Then Filtro="Filtro = Entradas - " 
     Else Filtro="Filtro = Saidas - "
  EndIf   

  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 VSDGCSOSN<>""  : Filtro=Filtro+"  CSOSN="+VSDGCSOSN  +"  "
    OtherWise           : Filtro=Filtro+"  CSOSN=TODOS  "
  EndSwitch
  Switch
    Case VSDGCSTICMS<>"": Filtro=Filtro+"  CST ICMS="+VSDGCSTICMS  +"  "
    OtherWise           : Filtro=Filtro+"  CST ICMS =TODOS  "
  EndSwitch

  Switch
    Case VSDGCSTIPI<>"" : Filtro=Filtro+"  CST IPI="+VSDGCSTIPI  +"  "
    OtherWise           : Filtro=Filtro+"  CST IPI=TODOS  "
  EndSwitch

  Impressao_Orientacao="Paisagem"
  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 de relat¢rio inv lido !")
  EndSwitch

  Delete Tabela
       
EndWhile
ClearAll
Release Vars All
Release Procs All
