;** Rm_0246 ********************************************************************
;* Relacao de ECF's -                                                          *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 14/05/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 08/09/2004 por Jos‚ Lu¡s Ameno da Silva
;Motivo Alteracao: PrivDir
;Ultima Alteracao: 19/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cupom
;Ultima Alteracao: 04/08/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao TG_NOMECARTAO
;Ultima Alteracao: 17/08/2012 por Bruno Carvalho e Kamila
;Motivo Alteracao: Ajustado report e ASK p/ quebrar por tipo de documento
;Ultima Alteracao: 06/09/2012 por Kamila Gomes        
;Motivo Alteracao: Ajustado filtro por tipo de documento
;Ultima Alteracao: 14/03/2016 por Kamila Gomes        
;Motivo Alteracao: InclusÆo dos Cupons Cancelados
;Ultima Alteracao: 19/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes dos Cupons Cancelados
;Ultima Alteracao: 13/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 11/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CL=CartÆo Parcelado
;Ultima Alteracao: 17/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NFCE                   
;Ultima Alteracao: 10/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes agrupado RM_0243, RM_0242
;Ultima Alteracao: 19/05/2020 por Bruno Carvalho
;Motivo Alteracao: Alterado CopyReport "...\\Vendas\\NotaV" p/ "...\\Vendas\\RM_0046"
;Ultima Alteracao: 10/09/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 01, 01b ask e campos no report

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

If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV")
   Then
       {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter check
        Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Documento    ] TypeIn "~VSDGTPDOCTO.."

        switch
          case EXECUTOR_RM_0246A=true : ; todos tipos de documento
          
          otherwise:
            Moveto [Tipo do Documento      ] TypeIn "CUP.. or NFCE"
            If VSDGCODMODELO="01B"
               then Moveto [Situacao               ] TypeIn "Not C"
            Endif   
           
        endswitch

        Moveto [Tipo de Pagamento      ] TypeIn "V Or P"
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. OR ..SAIDA.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Do_It!
        ClearAll
        
        For i From 1 To 2
          {Ask} {Answer} TypeIn "Fast Delete"
          If i=1
             Then Moveto [Data de Emissao        ] TypeIn "~VSDGDTINI"
                  Moveto [Hora de Saida          ] TypeIn "<~VSDGHRINI"
             Else Moveto [Data de Emissao        ] TypeIn "~VSDGDTFIM"
                  Moveto [Hora de Saida          ] TypeIn ">~VSDGHRFIM"
          EndIf
          Do_It!
          ClearAll
        EndFor
        
        ;****** 2. Selecao *************************************************************
        {Ask} TypeIn "\\Sistemas\\Cadastro\\TpPagto" Enter
        Moveto [Tipo do Pagamento       ] Example "tpg" 
        Moveto [Descricao Tipo Pagamento] Check 
        {Ask} {Answer}
        Moveto [Codigo da Empresa      ] Example "cemp" 
        Moveto [Numero do Documento    ] Example "ndoc" 
        Moveto [Serie do Documento     ] Example "sdoc" 
        Moveto [Nome Fantasia Empresa  ] Check
        Moveto [Data de Emissao        ] Check
        Moveto [Codigo                 ] Check
        Moveto [Nome Fantasia EmitDest ] Check
        Moveto [Situacao               ] Check
        Moveto [Forma de Pagamento     ] Example "tpg" 
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV" Enter check
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        Moveto [Forma de Pagamento     ] TypeIn "~VSDGTPPAGTO.."
        Moveto [Nome do Cartao         ] TypeIn "~VSDGNOMECARTAO.."
        Do_It!
        ClearAll

        CoEdit "Answer"
        Scan
        
         If [Forma de Pagamento     ]="CT" or
            [Forma de Pagamento     ]="CD" Or
            [Forma de Pagamento     ]="CL"
            Then [Observacao]=Format("W30,AL",[Numero do Cartao])+" - "+[Observacao]
         EndIf
         If [Forma de Pagamento     ]="CH" or
            [Forma de Pagamento     ]="CP"
            Then [Observacao]=Format("W20,AL",[Nome_Banco])+" - "+[Numero_Cheque]
         EndIf

         if [Situacao]="C"
            then [Observacao             ]="* CANCELADO *"
                 [Valor                  ]=blanknum()
         endif

        EndScan
        Do_It!
        ClearAll
endif

endproc


;*******************************************************************************
;* Rotina p/                                                                   *
;*******************************************************************************
Proc Processa()

{Ask} typein Tabela Enter 
Moveto [Codigo da Empresa      ] Check
Moveto [Serie do Documento     ] Check
Moveto [Numero do Documento    ] TypeIn "calc Min, Calc Max"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa        ] Example "CodE" 
Moveto [Serie do Documento       ] Example "Seri"
Moveto [Min of Numero do Document] Example "Min"
Moveto [Max of Numero do Document] Example "Max"
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa        ] Example "CodE" 
Moveto [Serie do Documento       ] Example "Seri"
Moveto [Numero_conta             ] TypeIn "Changeto " Example "Min"
Moveto [Numero_cheque            ] TypeIn "Changeto " Example "Max"
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
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_TPDOCTO"       : Campo="TG_EMPRESA"
            Case Campo="TG_TPPAGTO"       : Campo="TG_TPDOCTO"
            Case Campo="TG_NOMECARTAO"    : Campo="TG_TPPAGTO"
            Case Campo="TG_DTINI"         : Campo="TG_NOMECARTAO"
            Case Campo="TG_HRINI"         : Campo="TG_DTINI"
            Case Campo="TG_DTFIM"         : Campo="TG_HRINI"
            Case Campo="TG_HRFIM"         : Campo="TG_DTFIM"
            Case Campo="TG_CODMODELO"     : Campo="TG_HRFIM"
            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_TPDOCTO" 
                    Case Campo="TG_TPDOCTO"      : Campo="TG_TPPAGTO"
                    Case Campo="TG_TPPAGTO"      : Campo="TG_NOMECARTAO"
                    Case Campo="TG_NOMECARTAO"   : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"        : Campo="TG_HRINI"
                    Case Campo="TG_HRINI"        : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"        : Campo="TG_HRFIM"
                    Case Campo="TG_HRFIM"        : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"    : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_EMPRESA":
     MSG_CAMPO="Informe uma Empresa"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01  Por Emissor/Forma Pagamento/Documentos")
ModeloRelatoriosAdd("01B Por Emissor/Forma Pagamento/EmissÆo")
ModeloRelatoriosAdd("25  Por Emissor/Forma Pagamento")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("26  Por Emissor/Fam¡lia/Produto")
ModeloRelatoriosAdd("26A Por Emissor/Fam¡lia/Produto - com Pre‡o Unit rio")
ModeloRelatoriosAdd("26B Por Emissor/Fam¡lia")
ModeloRelatoriosAdd("Fim")

EndProc ;ModeloRelatoriosCarregaLista

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

sys_valor()

If Not IsAssigned(EXECUTOR_RM_0246A)          Then EXECUTOR_RM_0246A=False     EndIf

VSDGEMPRESA=""
VSDGTPDOCTO=""
VSDGDTINI  =BlankDate()
VSDGDTFIM  =BlankDate()
VSDGHRINI  =""
VSDGHRFIM  =""
VSDGTPPAGTO =""
VSDGNOMECARTAO=""

ModeloRelatoriosCarregaLista()

If not EXECUTOR_RM_0246A
   then tit_Showdialog="Vendas por emissor ECF, NFEC/ ?"
   else tit_Showdialog="Vendas por emissor de documentos/ ?"
endif   

While True

  ShowDialog tit_Showdialog 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 19 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 "Tipo do Documento"  For "TG_TPDOCTO"
    Accept @ 03,01 Width 07 "A4"  Picture "!*!" Tag "TG_TPDOCTO" To VSDGTPDOCTO
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPDOCTO"  To VSDGNOMTPDOCTO
    
    Label  @ 04,00 "Forma de Pagamento"  For "TG_TPPAGTO"
    Accept @ 05,03 Width 05 "A2"  Picture "!*!" Tag "TG_TPPAGTO"    To VSDGTPPAGTO
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPPG"    To VSDGNOMTPPAGTO

    Label  @ 06,00 "Nome do Cart„o"  For "TG_NOMECARTAO"
    Accept @ 07,01 Width 33 "A15"  Picture "!*!" Tag "TG_NOMECARTAO"    To VSDGNOMECARTAO

    Label  @ 08,00 "Per¡odo Referente" For "TG_DTINI"
    Label  @ 09,04 " de" For "TG_DTINI"
    Accept @ 09,09 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,22 "as" For "TG_DTINI"
    Accept @ 09,26 Width 08 "A5"  Picture "##:##" Tag "TG_HRINI" To VSDGHRINI
    Label  @ 10,04 "at‚" For "TG_DTFIM"
    Accept @ 10,09 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
    Label  @ 10,22 "as" For "TG_DTFIM"
    Accept @ 10,26 Width 08 "A5"  Picture "##:##" Tag "TG_HRFIM" To VSDGHRFIM

    Label  @ 12,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 13,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 13,06  Width 63 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO
    
    Pushbutton @ 15,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 15,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Empresa Invalida !")
          Loop
  EndIf
  If IsBlank(VSDGDTINI)  Or IsBlank(VSDGDTFIM)
     Then Mensagem("Data Invalida !")
          Loop
  EndIf
  If IsBlank(VSDGHRINI)  Or IsBlank(VSDGHRFIM)
     Then Mensagem("Hora Invalida !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK=""  Then Loop EndIf

  AGUARDE("Aguarde, gerando o relat¢rio")
  
  switch
    case VSDGCODMODELO="25"  :
      play "RM_0246B"
    
    case VSDGCODMODELO="26"   or
         VSDGCODMODELO="26A"  or
         VSDGCODMODELO="26B" :
      play "RM_0246C"
    
    otherwise :

      Tabela=Cria_Temp(PrivDir())

      Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
      While Novo_Dir_Trab()
       If IsTable("Answer")     Then Delete "Answer" EndIf
       Seleciona()
       If Not IsTable("Answer") Then Loop EndIf
       If IsTable(Tabela)
          Then Add "Answer" Tabela
          Else Rename "Answer" Tabela
       EndIf
      EndWhile

      If IsEmpty(Tabela)
         Then MENSAGEM("N„o existem registros a processar")
         Else 
              Processa()

              Switch
                Case VSDGCODMODELO="01"  : CopyReport "\\base\\sistemas\\vendas\\RM_0046" "3" Tabela "R"
                Case VSDGCODMODELO="01B" : CopyReport "\\base\\sistemas\\vendas\\RM_0046" "4" Tabela "R"
              EndSwitch
              IMPRIREL(Tabela,"R")
         
              Delete Tabela
      EndIf
    
  endswitch

EndWhile
ClearAll
Release Vars All
Release Procs All
