;** RM_0079F *******************************************************************
;*  Relacao de Notas Canceladas Rel N§ 87                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 22/07/2004 por Nikolas M. Mateus
;Ultima Alteracao: 23/01/2006 por Nikolas M. Mateus
;Motivo Alteracao: Filtrar Somentes Notas Canceladas
;Ultima Alteracao: 03/02/2008 por Nikolas M. Mateus
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 25/05/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Justificativa
;Ultima Alteracao: 13/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes agrupado RM_0079    
;Ultima Alteracao: 13/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes substituido RM_0076    

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************

Proc RM_0079F_Seleciona()
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter Check
        Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        switch
          case ListaRegra_VSDGDESTIN_Ativo  : Moveto [Codigo da Destinacao] TypeIn ListaRegra_VSDGDESTIN
          otherwise                         : Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
        endswitch
        Moveto [Descricao da Destinacao] TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
        Moveto [Situacao               ] TypeIn "C"
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Tipo de Pagamento      ] TypeIn "~VSDGTPPAGTOVPO.."
        Moveto [Condicao de Pagamento  ] TypeIn "~VSDGCONDPGTO.."
        Moveto [Forma de Pagamento     ] TypeIn "~VSDGTPPAGTO.."
        Moveto [Numero_Carregamento    ] TypeIn "~VSDGNCARREG.."
        Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
        Do_It!
        ClearAll
EndIf
EndProc   ;  (Seleciona)

;*******************************************************************************
;* Rotina p/ Ajustar a Justificativa                                           *
;*******************************************************************************
Proc RM_0079F_Ajusta_Justificativa()

CRIAR_TABELA = False
Adiciona_Campo(Tabela,"Justificativa(A255)")
ClearAll

Coedit Tabela
Scan For Search("[**",[Observacao na Nota Fiscal])>0
  Barra(NRecords(Tabela), RecNo())
  Aguarde("Aguarde, Ajustando Dados "+BARRA_STRING)
  PosI = Search("[**",[Observacao na Nota Fiscal])
  PosF = Search("**]",[Observacao na Nota Fiscal])
  If PosI>0 And PosF>0
     Then ;Exemplo: CANCELADO POR: 0007 GERENTE ADMINISTRATIVO 11.12.2017 16:24 DADOS INCORRETOS**]
          ;NÆo esta sendo exibido o CANCELADO POR, DATA E HORA, apenas o descritivo
          
          JUSTIFICATIVA = SubStr([Observacao na Nota Fiscal],PosI+3,PosF-2)
          PosI = Search(":",JUSTIFICATIVA)
          JUSTIFICATIVA = SubStr(JUSTIFICATIVA,PosI+1,Len(JUSTIFICATIVA))
          PosI = Search(":",JUSTIFICATIVA)
          JUSTIFICATIVA = SubStr(JUSTIFICATIVA,PosI+4,Len(JUSTIFICATIVA))
          PosF = Search("**]",JUSTIFICATIVA)
          If PosF>0
             Then JUSTIFICATIVA = SubStr(JUSTIFICATIVA,1,PosF-1)
          EndIf   
          [Justificativa] = Ltrim(Rtrim(JUSTIFICATIVA))
  EndIf     
EndScan
Do_it!
ClearAll

EndProc ;Ajusta_Justificativa()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0079F_Principal()

AGUARDE("Aguarde, gerando o relat¢rio")

Tabela=Cria_Temp(PrivDir())

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

If not IsEmpty(Tabela)
   Then 
        RM_0079F_Ajusta_Justificativa()

        Switch
          case VSDGCODMODELO="87"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_1001" "5" Tabela "R"
          case VSDGCODMODELO="87A" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_1001" "4" Tabela "R"
      
        endSwitch
        IMPRIREL(Tabela,"R")  

   Else MENSAGEM("N„o existem registros a processar")
EndIf

Delete Tabela
EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0079F_Principal()

Release Vars Tabela
Release Procs RM_0079F_Principal, RM_0079F_Seleciona, RM_0079F_Ajusta_Justificativa 
