;** Rm_3004 ********************************************************************
;*  Relat¢rio de Ocorrencias                                  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/01/2017 por Rafael Matos
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 25/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   

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

If IsTable("\\Sistemas\\Faccao\\"+Dir_Trab+"CprobC") And
   IsTable("\\Sistemas\\Faccao\\"+Dir_Trab+"CprobI")

   Then {Ask} TypeIn "\\Sistemas\\Faccao\\"+Dir_Trab+"CprobC" Enter Check
        Moveto [Numero do Lancamento  ] Example "lanc"
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo                ] TypeIn "~VSDGDESTINAT.."
        Moveto [Data_Ocorrencia       ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"        

        {Ask} TypeIn "\\Sistemas\\Faccao\\"+Dir_Trab+"CprobI" Enter Check
        Moveto [Numero do Lancamento  ] Example "lanc"
        Moveto [Codigo do Item        ] Example "cite"
        Moveto [Codigo_Etapa          ] TypeIn ETAPAP
        Moveto [Referencia            ] TypeIn "~VSDGREFERENCIA.."
        
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item        ] Example "cite"
        Moveto [Codigo da Familia     ] TypeIn "~VSDGFAMI.."
        Moveto [Codigo do Grupo       ] TypeIn "~VSDGGRP.."
        Moveto [Codigo da Marca       ] TypeIn "~VSDGMARCA.."
        
        Do_It!
        ClearAll
        
        Adiciona_Dados()

EndIf
EndProc   ; (Seleciona)

;************************************************************************
;* Rotina p/ adicionar dados a partir da answer                         *
;************************************************************************
Proc Adiciona_Dados()

If IsEmpty("Answer")
   Then Return
EndIf

View Tabela
CoEdit "Answer"
Scan
  Moveto Tabela
  End
  Down

  [Numero do Lancamento      ]=[Answer->Numero do Lancamento   ]
  [Codigo da Empresa         ]=[Answer->Codigo da Empresa      ]
  [Nome Fantasia Empresa     ]=[Answer->Nome Fantasia Empresa  ]
  [Data_Ocorrencia           ]=[Answer->Data_Ocorrencia        ]
  
  If IsBlank([Answer->Numero_ProducaoCorte])
     Then [Numero_Producao   ]=[Answer->Numero_ProducaoIE      ]
          [Tipo_Producao     ]="INT/EXT"
     Else [Numero_Producao   ]=[Answer->Numero_ProducaoCorte   ]
          [Tipo_Producao     ]="CORTE"
  EndIf  
  [Destino_Producao          ]=[Answer->Destino_Producao       ]           
  [Codigo_Etapa              ]=[Answer->Codigo_Etapa           ]
  [Descricao_Etapa           ]=Ltrim([Answer->Descricao_Etapa ])
  [Codigo                    ]=[Answer->Codigo                 ]
  [Razao Social              ]=[Answer->Razao Social           ]
  [Nome Fantasia EmitDest    ]=[Answer->Nome Fantasia EmitDest ]
  [Sequencia do Lancamento   ]=[Answer->Sequencia do Lancamento]
  [Codigo do Item            ]=[Answer->Codigo do Item         ]
  [Descricao do Item         ]=[Answer->Descricao do Item      ]
  [Referencia                ]=[Answer->Referencia             ]
  [Custo Unitario            ]=[Answer->Custo Unitario         ]
  [Custo Total               ]=[Answer->Custo Total            ]
  [Sequencia_Problema        ]=[Answer->Sequencia_Problema     ]
  [Descricao_Problema        ]=[Answer->Descricao_Problema     ]
  Switch
    Case [Answer->Tipo_Ocorrencia]="LD"         : [Quantidade_LD        ]=[Answer->Quantidade]
    Case [Answer->Tipo_Ocorrencia]="PERDA"      : [Quantidade_PERDA     ]=[Answer->Quantidade]
    Case [Answer->Tipo_Ocorrencia]="RECICLAGEM" : [Quantidade_RECICLAGEM]=[Answer->Quantidade]
  EndSwitch

  Moveto "Answer"
EndScan

Do_IT!
ClearAll

Edit Tabela
Scan
  If VSDGOPANALISE="2"
    Then [Codigo do Item   ]=PegaCodigoRaiz([Codigo do Item])
         [Descricao do Item]=TiraCorTamanhoDescricaoItem([Descricao do Item])
  EndIf         
  If VSDGOPANALISE="3"
    Then [Codigo do Item   ]=PegaCodigoRaizCor([Codigo do Item])
         [Descricao do Item]=TiraTamanhoDescricaoItem([Descricao do Item])
  EndIf
EndScan

Do_It!
ClearAll  

EndProc

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

CodEtapa="***"

View "Tbetapac"
CoEdit Tabela
Scan For Not IsBlank([Codigo_Etapa])
   [Codigo_Etapa1]=SubStr([Codigo_Etapa],1,4)+"000"

   if [Codigo_Etapa1]<>CodEtapa
      then
           CodEtapa = [Codigo_Etapa1]
           MoveTo "Tbetapac"
           Moveto [Codigo_Etapa]
           Locate CodEtapa
           If RetVal
              Then DescEtapa = [Descricao_Etapa]
              Else DescEtapa = ""
           Endif
   endif   

   MoveTo Tabela
   [Descricao_Etapa1]=DescEtapa
EndScan
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  Etapa Pai")
ModeloRelatoriosAdd("02  Etapa Pai/Etapa Filho")
ModeloRelatoriosAdd("03  Etapa Pai/Problema")
ModeloRelatoriosAdd("04  Etapa Pai/Etapa Filho/Problema")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("05  Anal¡tico - Etapa Pai")
ModeloRelatoriosAdd("Fim")

EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_DESTINAT"      : Campo="TG_EMPRESA"
            Case Campo="TG_FAMI"          : Campo="TG_DESTINAT"
            Case Campo="TG_GRP"           : Campo="TG_FAMI"
            Case Campo="TG_MARCA"         : Campo="TG_GRP"
            Case Campo="TG_ETAPAP"        : Campo="TG_MARCA"
            Case Campo="TG_REFERENCIA"    : Campo="TG_ETAPAP"
            Case Campo="TG_DTINI"         : Campo="TG_REFERENCIA"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPANALISE"     : Campo="TG_DTFIM"
            Case Campo="TG_CODMODELO"     : Campo="TG_OPANALISE"            
            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_DESTINAT"
                      Case Campo="TG_DESTINAT"      : Campo="TG_FAMI"
                      Case Campo="TG_FAMI"          : Campo="TG_GRP"
                      Case Campo="TG_GRP"           : Campo="TG_MARCA"
                      Case Campo="TG_MARCA"         : Campo="TG_ETAPAP"
                      Case Campo="TG_ETAPAP"        : Campo="TG_REFERENCIA"
                      Case Campo="TG_REFERENCIA"    : Campo="TG_DTINI"
                      Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                      Case Campo="TG_DTFIM"         : Campo="TG_OPANALISE"
                      Case Campo="TG_OPANALISE"     : Campo="TG_CODMODELO"
                           VSDGOPANALISE=ControlValue("TG_OPANALISE")
                           Switch
                              Case VSDGOPANALISE="2": VSDGNOMOPANALISE="SO REFERENCIA"
                              Case VSDGOPANALISE="3": VSDGNOMOPANALISE="REFERENCIA+COR"
                              OtherWise             : VSDGNOMOPANALISE="REFERENCIA+COR+TAMANHO"
                                                      VSDGOPANALISE="1"
                           EndSwitch                       
                      Case Campo="TG_CODMODELO"     : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_OPANALISE":
       MSG_CAMPO="1=Referˆncia+Cor+Tamanho  2=Referˆncia  3=Referˆncia+Cor"
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Bloq"

;***** Verificar se o Cliente tem acesso a esta rotina *****
If Bloqueia_Rotina("PROBLEMAS")
   Then Return
EndIf

SYS_VALOR()

LimpAguarde()

VSDGEMPRESA      = ""
VSDGDTINI        = BlankDate()
VSDGDTFIM        = BlankDate()
VSDGFAMI         = ""
VSDGMARCA        = ""
VSDGGRP          = ""
VSDGREFERENCIA   = ""
VSDGOPANALISE    = ""
VSDGNOMOPANALISE = ""
VSDGCODMODELO    = ""
VSDGMODELO       = ""
VSDGETAPAP       = ""
VSDGNOMETAPAP    = ""

ModeloRelatoriosCarregaLista()

While True
  
  ShowDialog "Relat¢rio de Ocorrˆncias" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140,-68
    @ 01,07 Height 22 Width 80

    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 "Pessoa"  For "TG_DESTINAT"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMDEST"  To VSDGNOMDEST
    
    Label  @ 04,00 "Familia"  For "TG_FAMI"
    Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 05,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 06,00 "Grupo"  For "TG_GRP"
    Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
    Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 08,00 "Marca"  For "TG_MARCA"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 10,00 "Etapa"  For "TG_ETAPAP"
    Accept @ 11,01 Width 10 "A7"  Picture "!*!" Tag "TG_ETAPAP"    To VSDGETAPAP
    Accept @ 11,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMETAPAP" To VSDGNOMETAPAP    

    Label  @ 12,00 "Referˆncia"  For "TG_REFERENCIA"
    Accept @ 13,01 Width 33 "A10" Picture "!*!" Tag "TG_REFERENCIA"     To VSDGREFERENCIA

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

    Label  @ 00,35 "Op‡„o de An lise" For "TG_OPANALISE"
    Accept @ 01,39 Width 04 "A1"  Picture "1,2,3" Tag "TG_OPANALISE" To VSDGOPANALISE
    Accept @ 01,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPANALISE" To VSDGNOMOPANALISE

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

    Pushbutton @ 18,54 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,66 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

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

  If VSDGDTFIM=BlankDate()
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
  
  If LEN(VSDGETAPAP)=7 And Substr(VSDGETAPAP,5,7)="000"
     Then ETAPAP=Substr(VSDGETAPAP,1,3)+".."
     Else ETAPAP=VSDGETAPAP
  EndIf         
  
  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Processando Dados")
  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Faccao\\RM_3004" 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")
          Delete Tabela
          Loop
  EndIf

  Processa()

	If VSDGCODMODELO="01" Then IMPRIREL(Tabela,"R")   EndIf
  If VSDGCODMODELO="02" Then IMPRIREL(Tabela,"1")   EndIf
  If VSDGCODMODELO="03" Then IMPRIREL(Tabela,"2")   EndIf
  If VSDGCODMODELO="04" Then IMPRIREL(Tabela,"3")   EndIf
  If VSDGCODMODELO="05" Then Impressao_Orientacao="Paisagem" IMPRIREL(Tabela,"4")   EndIf  

  Delete Tabela
  
  Mensagem("Fim da Opera‡Æo !")

EndWhile
ClearAll
Release Vars All
Release Procs All
