;** Rm_0242 ********************************************************************
;* Resumo das Operacoes ECF's - Produtos                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 27/04/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: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 20/08/2012 por Kamila Gomes e Bruno
;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: 24/06/2016 por Bruno Carvalho
;Motivo Alteracao: Removido Link nos Report "RM_0242" e utilizado fun‡Æo Ajusta_Answer() e Adiciona_Dados_Tabela()
;Ultima Alteracao: 13/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 17/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NFCE                   

;*******************************************************************************
;* Ajusta Dados na Answer                                                      *  
;*******************************************************************************
Proc Ajusta_Answer()

TABELA = Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\RM_0242" TABELA

{Ask} {Answer} Check
Moveto [Codigo do Item        ] Example "_Ite"
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] Example "_Ite"
Moveto [Codigo da Familia     ] Check
Moveto [Descricao da Familia  ] Check
Do_It!
ClearAll

Adiciona_Dados_Tabela(TABELA)    
                               
EndProc ;Ajusta_Answer()

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

;****** Vendas *****************************************************************
{Ask} {NotaC}
Moveto [Codigo da Empresa      ] Example "cemp" Check TypeIn ", ~VSDGEMPRESA.."
Moveto [Numero do Documento    ] Example "ndoc" Check
Moveto [Serie do Documento     ] Example "sdoc" Check 
Moveto [Codigo do Documento    ] TypeIn "~VSDGTPDOCTO.."
Moveto [Tipo do Documento      ] TypeIn "CUP.. or NFCE"
Moveto [Nome Fantasia Empresa  ] Check
Moveto [Tipo de Pagamento      ] TypeIn "V Or P"
Moveto [Data de Emissao        ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Moveto [Hora de Saida          ] Check
Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. OR ..SAIDA.."
Moveto [Tipo Movimento Estoque ] TypeIn "S"
Moveto [Situacao               ] TypeIn "Not C"
{Ask} {NotaI}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Item do Documento      ] Check
Moveto [Codigo do Item         ] Check
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check
Moveto [Descricao da Cor_Tecido] Check
Moveto [NCM                    ] Check
Moveto [Situacao_Item          ] TypeIn "Not C"
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

If IsEmpty("Answer")
   Then Return
EndIf
                                
Ajusta_Answer()

If VSDGOPRELANALSINT="1"
   Then If VSDGOPCUSTO="S"
           Then CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0242" "R" Tabela "R"
           Else CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0242" "1" Tabela "R"
        EndIf
   Else CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0242" "2" Tabela "R"
EndIf

;****** 2. Selecao *************************************************************
{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 [Descricao da Cor_Tecido  ] TypeIn "Changeto " Example "Min"
Moveto [NCM                      ] 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_DTINI"         : Campo="TG_TPDOCTO"
            Case Campo="TG_HRINI"         : Campo="TG_DTINI"
            Case Campo="TG_DTFIM"         : Campo="TG_HRINI"
            Case Campo="TG_HRFIM"         : Campo="TG_DTFIM"
            Case Campo="TG_OPRELANALSINT" : Campo="TG_HRFIM"
            Case Campo="TG_OPCUSTO"       : Campo="TG_OPRELANALSINT"
            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_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_OPRELANALSINT"
                    Case Campo="TG_OPRELANALSINT": Campo="YES"
                         If VSDGOPRELANALSINT="1"
                            Then Campo="TG_OPCUSTO"
                            Else VSDGOPCUSTO   =""
                                 VSDGNOMOPCUSTO=""
                         EndIf
                    Case Campo="TG_OPCUSTO" :
                         VSDGOPCUSTO=ControlValue("TG_OPCUSTO")
                         Switch
                           Case VSDGOPCUSTO="S": VSDGNOMOPCUSTO="SEM PRE€O UNITARIO"
                           OtherWise           : VSDGOPCUSTO="C"
                                                 VSDGNOMOPCUSTO="COM PRE€O UNITARIO"
                         EndSwitch
                         Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

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

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;***********************************************+*******************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()
VSDGEMPRESA=""
VSDGTPDOCTO=""
VSDGDTINI  =BlankDate()
VSDGDTFIM  =BlankDate()
VSDGHRINI  =""
VSDGHRFIM  =""
VSDGOPRELANALSINT=""

While True

  ShowDialog "Resumo das opera‡”es ECF/NFCE - Produtos" 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 12 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 "Per¡odo Referente" For "TG_DTINI"
    Label  @ 05,04 " de" For "TG_DTINI"
    Accept @ 05,09 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,22 "as" For "TG_DTINI"
    Accept @ 05,26 Width 08 "A5"  Picture "##:##" Tag "TG_HRINI" To VSDGHRINI
    Label  @ 06,04 "at‚" For "TG_DTFIM"
    Accept @ 06,09 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
    Label  @ 06,22 "as" For "TG_DTFIM"
    Accept @ 06,26 Width 08 "A5"  Picture "##:##" Tag "TG_HRFIM" To VSDGHRFIM

    Label  @ 00,35 "Op‡„o do Relat¢rio" For "TG_OPRELANALSINT"
    Accept @ 01,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELANALSINT" To VSDGOPRELANALSINT
    Accept @ 01,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPRELANASINT" To VSDGNOMOPRELANALSINT

    Label  @ 02,35 "Op‡„o de Pre‡o Unit rio" For "TG_OPCUSTO"
    Accept @ 03,39 Width 04 "A1"  Picture "C,S" Tag "TG_OPCUSTO" To VSDGOPCUSTO
    Accept @ 03,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPCUSTO" To VSDGNOMOPCUSTO

    Pushbutton @ 08,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 08,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")
  SELECIONA()

  If IsEmpty("Answer")
     Then MENSAGEM("N„o existem registros a processar")
     Else IMPRIREL(Tabela,"R")
          Delete Tabela
  EndIf

  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All

