;** RM_0010 ********************************************************************
;*  Gera Relatorio com as informa‡äes dos pedidos com itens faturados          *
;*  Funcional apenas para pedidos ap¢s 14.09.2016, antes disso poder  ocorrer  *
;*  incosistˆncias                                                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 22/08/2016 por Bruno Carvalho
;Ultima Alteracao: 14/09/2016 por Bruno Carvalho                             
;Motivo Alteracao: Ajustes no processo de corre‡Æo de pedidos -> Processo apenas para pedidos com data de emissÆo >= 15.10.2016
;Ultima Alteracao: 16/09/2016 por Bruno Carvalho                             
;Motivo Alteracao: Ajustes para otimiza‡Æo de todo o processo desta rotina 
;Ultima Alteracao: 13/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes() 
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()                
;Ultima Alteracao: 17/05/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado o nome do script de "RM_0010" para "RM_0010A"
;                  Devido a menu de usu rios o script RM_0010 ser  o mesmo que o PED_CORR -> 17.05.2019
;                  PED_CORR est  sendo o script de corre‡Æo dos pedidos faturados 

;*********************************************************************************
;* Adiciona Dados na Tabela para Trabalho                                        *
;*********************************************************************************
Proc Adiciona_Dados_Tabela()
Private PEDIDO

                      
Empty Tabela
View Tabela
If VSDGOPRELANALSINT="2"
   Then CoEdit Tab_Cabeca
   Else PEDIDO = "***"
        View Tab_Cabeca
        CoEdit Tab_SeqTot
EndIf   
Scan
  CopyToArray REG_AUX

  Moveto Tabela
  End Down
  [Codigo da Empresa      ] = REG_AUX["Codigo da Empresa"] 
  [Numero do Pedido       ] = REG_AUX["Numero do Pedido"]  
  [Item do Pedido         ] = REG_AUX["Item do Pedido"] 
  [Notas Atualiza Pedidos ] = REG_AUX["Notas Atualiza Pedidos"] 
  [Notas Nao_Atualiza Ped ] = REG_AUX["Notas Nao_Atualiza Ped"] 
  [Quantidade Nota Atu    ] = REG_AUX["Quantidade Nota Atu"]  
  [Quantidade Nota Nao Atu] = REG_AUX["Quantidade Nota Nao Atu"]  
  [Quantidade             ] = REG_AUX["Quantidade"]  
  [Quantidade Faturada    ] = REG_AUX["Quantidade Faturada"]  
  [Data de Emissao        ] = REG_AUX["Data de Emissao"]  
  [Situacao do Pedido     ] = REG_AUX["Situacao do Pedido"]
  
  If VSDGOPRELANALSINT="2"
     Then [Numero do Documento    ] = REG_AUX["Numero do Documento"]  
          [Serie do Documento     ] = REG_AUX["Serie do Documento"]   
          [Tipo do Documento      ] = REG_AUX["Tipo do Documento"]  
          [Erro_Cabeca            ] = REG_AUX["Erro_Cabeca"]
          Moveto Tab_Cabeca
     Else [Codigo do Item         ] = REG_AUX["Codigo do Item"]  
          [Descricao do Item      ] = REG_AUX["Descricao do Item"]
          [Erro_Item              ] = REG_AUX["Erro_Item"]
          If PEDIDO<>[Numero do Pedido]
             Then PEDIDO = [Numero do Pedido]
                  Moveto Tab_Cabeca
                  Moveto [Numero do Pedido]
                  Locate PEDIDO
                  If RetVal 
                     Then ERRO_CABECA = [Erro_Cabeca] 
                     Else ERRO_CABECA = ""
                  EndIf    
                  Moveto Tabela 
          EndIf
          If ERRO_CABECA <> ""
            Then [Erro_Cabeca] = ERRO_CABECA
          EndIf
          Moveto Tab_SeqTot
  EndIf
EndScan
Do_It!
ClearAll

EndProc ;Adiciona_Dados_Tabela()

;*********************************************************************************
;* Gera Dados para relatorio sintetico ou dados gerais para complemento da cabeca*
;*********************************************************************************
Proc Gera_Cabeca()

;---- Registrando a Tabela Cabeca ----------------------------------------------
{Ask} TypeIn Tab_SeqPed Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Numero do Documento    ] Check
Moveto [Serie do Documento     ] Check
Moveto [Tipo do Documento      ] Check
Moveto [Numero do Pedido       ] Check TypeIn "_Ped"
Moveto [Quantidade Nota Atu    ] TypeIn "Calc Sum as Quantidade Nota Atu"
Moveto [Quantidade Nota Nao Atu] TypeIn "Calc Sum as Quantidade Nota Nao Atu"
Do_It!
ClearAll

Tab_Cabeca=Cria_Temp(PrivDir())
Copy Tab_SeqPed Tab_Cabeca

{Ask} TypeIn Tab_Cabeca Enter
Moveto [Numero do Documento    ] TypeIn "Changeto Blank"
Moveto [Serie do Documento     ] TypeIn "Changeto Blank"
Moveto [Tipo do Documento      ] TypeIn "Changeto Blank"
Moveto [Item do Pedido         ] TypeIn "Changeto Blank"
Moveto [Quantidade Nota Atu    ] TypeIn "Changeto Blank"
Moveto [Quantidade Nota Nao Atu] TypeIn "Changeto Blank"
Do_It!
ClearAll

Adiciona_Indice(Tab_Cabeca,"Codigo da Empresa,Numero do Pedido")
NR=NRecords("Answer")

View Tab_SeqPed 
Edit Tab_Cabeca
Scan
  Barra(NR, RecNo())                                              
  Aguarde("Aguarde, Verifica notas que controlam pedidos "+BARRA_STRING)

  COD_EMP = [Codigo da Empresa]
  PED_DOC = [Numero do Pedido]
  NOTA_ATUALIZA    =""                                                        
  NOTA_NAO_ATUALIZA=""
  
  ;---- Verifica Notas que Controlam Pedidos -----------------------------------
  Moveto Tab_SeqPed
  Moveto [Codigo da Empresa]
  Locate COD_EMP,PED_DOC
  If RetVal
     Then While COD_EMP = [Codigo da Empresa] And PED_DOC = [Numero do Pedido]
            NOTA = Format("W11",Rtrim(Format("W4",[Tipo do Documento]))+" "+[Numero do Documento])
            If [Quantidade Nota Atu]>0
               Then If NOTA_ATUALIZA=""
                       Then If [Numero do Documento]<>""
                               Then NOTA_ATUALIZA = NOTA
                            EndIf    
                       Else If [Numero do Documento]<>""
                               Then If Search(NOTA,NOTA_ATUALIZA)=0
                                       Then NOTA_ATUALIZA = NOTA_ATUALIZA + NOTA
                                    EndIf   
                            EndIf   
                    EndIf
               Else If NOTA_NAO_ATUALIZA=""
                       Then If [Numero do Documento]<>""
                               Then NOTA_NAO_ATUALIZA = NOTA
                            EndIf    
                       Else If [Numero do Documento]<>""
                               Then If Search(NOTA,NOTA_NAO_ATUALIZA)=0
                                       Then NOTA_NAO_ATUALIZA = NOTA_NAO_ATUALIZA + NOTA
                                    EndIf
                            EndIf   
                    EndIf
            EndIf             
            Skip
            If Eot() Then QuitLoop EndIf
            Locate Next COD_EMP,PED_DOC
            If Not RetVal
               Then QuitLoop
            EndIf   
          EndWhile
  EndIf     
  Moveto Tab_Cabeca
  [Notas Atualiza Pedidos] = NOTA_ATUALIZA
  [Notas Nao_Atualiza Ped] = NOTA_NAO_ATUALIZA
EndScan
Do_It!
ClearAll

;Total de Notas Faturadas
{Ask} TypeIn Tab_SeqPed Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Numero do Pedido       ] Check
Moveto [Quantidade Nota Atu    ] TypeIn "Calc Sum as Quantidade Nota Atu"
Moveto [Quantidade Nota Nao Atu] TypeIn "Calc Sum as Quantidade Nota Nao Atu"
Do_it!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Pedido       ] TypeIn "_NumP"
Moveto [Quantidade Nota Atu    ] TypeIn "_Qtd"
Moveto [Quantidade Nota Nao Atu] TypeIn "_QtdF"
{Ask} TypeIn Tab_Cabeca Enter
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Pedido       ] TypeIn "_NumP"
Moveto [Quantidade Nota Atu    ] TypeIn "Changeto _Qtd"
Moveto [Quantidade Nota Nao Atu] TypeIn "Changeto _QtdF"
Do_it!
ClearAll

;Total de Pedidos Faturados
{Ask} TypeIn Tab_SeqTot Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Numero do Pedido       ] Check
Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade"
Moveto [Quantidade Faturada    ] TypeIn "Calc Sum as Quantidade Faturada"  
Do_it!
ClearAll

Adiciona_Campo(Tab_Cabeca,"Quantidade(N) , Quantidade Faturada(N) , Situacao do Pedido(A10) , Data de Emissao(D)")

{Ask} {Answer}
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Pedido       ] TypeIn "_NumP"
Moveto [Quantidade             ] TypeIn "_Qtd"
Moveto [Quantidade Faturada    ] TypeIn "_QtdF"
{Ask} TypeIn Tab_Cabeca Enter
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Pedido       ] TypeIn "_NumP"
Moveto [Quantidade             ] TypeIn "Changeto _Qtd"
Moveto [Quantidade Faturada    ] TypeIn "Changeto _QtdF"
Do_it!
ClearAll

;---- Data de Emissao e Situa‡Æo do Pedido -------------------------------------
Aguarde("Verificando Informa‡”es do Pedido")
{Ask} {PedidoC}
Moveto [Numero do Pedido    ] TypeIn "_Ped"
Moveto [Situacao do Pedido  ] TypeIn "_Sit"
Moveto [Data de Emissao     ] TypeIn "_Dat"
{Ask} TypeIn Tab_Cabeca Enter  
Moveto [Numero do Pedido    ] TypeIn "_Ped"
Moveto [Situacao do Pedido  ] TypeIn "Changeto _Sit"
Moveto [Data de Emissao     ] TypeIn "Changeto _Dat"
Do_It!
ClearAll

NR=NRecords(Tab_Cabeca)

Edit Tab_Cabeca
Scan
  Barra(NR, RecNo())                                              
  Aguarde("Aguarde, verificando as notas do pedido "+[Numero do Pedido]+BARRA_STRING)
          
  Switch
    Case [Quantidade] < [Quantidade Faturada] : 
         [Erro_Cabeca] = "Itens com Quantidade Faturada > Quantidade do Item do Pedido"
    Case [Quantidade]=[Quantidade Nota Atu] And [Quantidade]<>[Quantidade Faturada] :
         [Erro_Cabeca] = "Pedido FATURADO com quantidade faturada divergente"                   
    Case [Quantidade Nota Atu] > [Quantidade] :
         [Erro_Cabeca] = "Quantidade da Nota difere da Quantidade do Pedido"
    Case [Quantidade Faturada]<>[Quantidade Nota Atu] And [Quantidade Nota Atu]>0 : 
         [Erro_Cabeca] = "Quantidade Faturada difere da Quantidade da Nota"
    Case [Quantidade Faturada]<>[Quantidade Nota Atu] And [Quantidade Faturada]>0 :
         [Erro_Cabeca] = "Pedido com quantidade faturada divergente"       
    Case [Situacao do Pedido]="ABERTO" And ([Quantidade]=[Quantidade Faturada] And [Quantidade]=[Quantidade Nota Atu]) :
         [Erro_Cabeca] = "Pedido encontra FATURADO"
    ;Case [Situacao do Pedido]="FATURADO" And ([Quantidade]<>[Quantidade Nota Atu] Or [Quantidade]<>[Quantidade Faturada])  :
    ;     [Erro_Cabeca] = "Pedido encontra EM ABERTO"
  EndSwitch  
 EndScan
Do_It!
ClearAll

;----- Alterando ERRO na cabe‡a se ocorrer erro nos itens ------------------------------      
{Ask} Typein Tab_SeqTot Enter
Moveto [Numero do Pedido] TypeIn "_Nped"
Moveto [Erro_Item       ] TypeIn "Not Blank"
{Ask} TypeIn Tab_Cabeca Enter
Moveto [Numero do Pedido] TypeIn "_Nped"
Moveto [Erro_Cabeca     ] TypeIn "Changeto \"Inconsistencia nos itens deste pedido\""
Do_It!
ClearAll     

EndProc ;Gera_Cabeca()

;****************************************************************************************
;* Agrupa todos os totais em relacao ao pedido e sequencia ja relacionando com as notas *
;****************************************************************************************
Proc Gera_Sequencia_Agrupados()  
                                  
;---- Totalizando a quantidade de itens por sequencia --------------------------                                  
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Numero do Pedido       ] Check
Moveto [Item do Pedido         ] Check
Moveto [Notas Atualiza Pedidos ] Check
Moveto [Notas Nao_Atualiza Ped ] Check
 
Moveto [Quantidade Nota Atu    ] TypeIn "Calc Sum as Quantidade Nota Atu"
Moveto [Quantidade Nota Nao Atu] TypeIn "Calc Sum as Quantidade Nota Nao Atu"  
Do_It!
ClearAll
Tab_SeqTot=Cria_Temp(PrivDir())
Copy "Answer" Tab_SeqTot      
        
;---- Totalizando a Quantidade da Nota -----------------------------------------
Aguarde("Totalizando a Quantidade do Pedido")

{Ask} TypeIn Tab_SeqTot Enter Check
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_Item"                
{Ask} {PedidoI}      
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_Item"
Moveto [Codigo do Item         ] Check
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Quantidade Faturada    ] Check
Do_It!
ClearAll
Copy "Answer" Tab_SeqTot

;---- Data de Emissao e Situa‡Æo do Pedido -------------------------------------
Aguarde("Verificando Informa‡”es do Pedido")
{Ask} TypeIn Tab_SeqTot Enter Check 
Moveto [Numero do Pedido    ] TypeIn "_Ped"
{Ask} {PedidoC}
Moveto [Numero do Pedido    ] TypeIn "_Ped"
Moveto [Situacao do Pedido  ] Check
Moveto [Data de Emissao     ] Check
Do_It!
ClearAll
Copy "Answer" Tab_SeqTot

;---- Verificando erro nos pedido ---------------------------------------------
NR=NRecords(Tabela)

Adiciona_Indice(Tab_SeqPed,"Codigo da Empresa,Numero do Pedido,Item do Pedido,Numero do Documento,Serie do Documento,Tipo do Documento")

View Tab_SeqPed
Edit Tab_SeqTot
Scan
  Barra(NR, RecNo())                                              
  Aguarde("Aguarde, verificando as notas do pedido "+[Numero do Pedido]+BARRA_STRING)
         
  COD_EMP            = [Codigo da Empresa]        
  PED_DOC            = [Numero do Pedido]
  PED_ITEM           = [Item do Pedido]
  NOTA_ATUALIZA      = ""
  NOTA_NAO_ATUALIZA  = ""
  
  ;---- Verifica Notas que Controlam Pedidos -----------------------------------
  Moveto Tab_SeqPed
  Moveto [Codigo da Empresa]
  Locate COD_EMP,PED_DOC,PED_ITEM
  If RetVal
     Then While COD_EMP = [Codigo da Empresa] And PED_DOC = [Numero do Pedido] And PED_ITEM=[Item do Pedido]
            If [Quantidade Nota Atu]>0
               Then If NOTA_ATUALIZA=""
                       Then If [Numero do Documento]<>""
                               Then NOTA_ATUALIZA = Format("W11",Rtrim(Format("W4",[Tipo do Documento]))+" "+[Numero do Documento])
                            EndIf    
                       Else If [Numero do Documento]<>""
                               Then NOTA_ATUALIZA = NOTA_ATUALIZA + Format("W11",Rtrim(Format("W4",[Tipo do Documento]))+" "+[Numero do Documento])
                            EndIf   
                    EndIf
               Else If NOTA_NAO_ATUALIZA=""
                       Then If [Numero do Documento]<>""
                               Then NOTA_NAO_ATUALIZA = Format("W11",Rtrim(Format("W4",[Tipo do Documento]))+" "+[Numero do Documento])
                            EndIf    
                       Else If [Numero do Documento]<>""
                               Then NOTA_NAO_ATUALIZA = NOTA_NAO_ATUALIZA + Format("W11",Rtrim(Format("W4",[Tipo do Documento]))+" "+[Numero do Documento])
                            EndIf   
                    EndIf
            EndIf             
            Skip
            If Eot() Then QuitLoop EndIf
            Locate Next COD_EMP,PED_DOC,PED_ITEM
            If Not RetVal
               Then QuitLoop
            EndIf   
          EndWhile
  EndIf       
  
  Moveto Tab_SeqTot
  [Notas Atualiza Pedidos] = NOTA_ATUALIZA
  [Notas Nao_Atualiza Ped] = NOTA_NAO_ATUALIZA   
EndScan
Do_It!
ClearAll   

Adiciona_Indice(Tab_SeqTot,"Codigo da Empresa,Numero do Pedido,Item do Pedido")
Adiciona_Campo(Tab_SeqTot,"Codigo do Item(A10),Descricao do Item(A30),Erro_Item(A250)")
Aguarde("Adicionado dados complementares")

{Ask} {PedidoC}
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Pedido       ] TypeIn "_Ped"    
{Ask} {PedidoI}
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_IPed"
Moveto [Codigo do Item         ] TypeIn "_CodI"
Moveto [Descricao do Item      ] TypeIn "_DesI"
{Ask} TypeIn Tab_SeqTot Enter
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_IPed"
Moveto [Codigo do Item         ] TypeIn "Changeto _CodI"
Moveto [Descricao do Item      ] TypeIn "Changeto _DesI"
Do_It!
Clearall

;---- Verificando erro nos itens do pedido -------------------------------------
NR=NRecords(Tab_SeqTot)
Edit Tab_SeqTot
Scan
  Barra(NR, RecNo())                                              
  Aguarde("Aguarde, verificando os itens do pedido "+[Numero do Pedido]+BARRA_STRING)
  Switch
    Case ([Quantidade Nota Atu]>0 And [Quantidade Nota Nao Atu]>0) And (([Quantidade Nota Atu]+[Quantidade Nota Nao Atu])>[Quantidade]) : 
         [Erro_Item] = "Faturamento em 2 Notas com Quantidade Divergente"
    ;Case ([Quantidade Nota Atu]=BlankNum() Or [Quantidade Nota Atu]=0) And 
    ;     ([Quantidade Nota Nao Atu]=BlankNum() Or [Quantidade Nota Nao Atu]=0) And 
    ;     [Situacao do Pedido]="FATURADO" : 
    ;     [Erro_Item] = "Nao ocorreu Faturamento"
    Case ([Quantidade Faturada]=0 Or [Quantidade Faturada]=BlankNum()) And ([Quantidade]=0 Or [Quantidade]=BlankNum()) :
         [Erro_Item] = "Item n„o localizado no pedido"
    Case [Quantidade Nota Nao Atu]=[Quantidade Faturada] And [Quantidade Faturada]>0 : 
         [Erro_Item] = "Quantidade Faturada Divergente -> Nota nao atualiza pedido"     
    Case [Quantidade Faturada] > [Quantidade] : 
         [Erro_Item] = "Quantidade Faturada > Quantidade do Pedido"
    Case ([Quantidade Faturada] = 0 Or [Quantidade Faturada]=BlankNum()) And [Quantidade Nota Atu]>0 :
         [Erro_Item] = "Quantidade Faturada Divergente"
    Case ([Quantidade Faturada] < 0 And [Quantidade Faturada]<>BlankNum()) Or 
         ([Quantidade Faturada]>0 And [Quantidade Nota Atu]=[Quantidade]  And [Quantidade Nota Atu]<>[Quantidade Faturada]) Or
         ([Quantidade Nota Atu]>[Quantidade] And [Quantidade Faturada]<>[Quantidade]) :
         [Erro_Item] = "Quantidade Faturada Divergente"
    Case [Quantidade Faturada]>0 And ([Quantidade Nota Atu]=0 Or [Quantidade Nota Atu]=BlankNum()) :
         [Erro_Item] = "Quantidade Faturada Divergente"
    Case [Quantidade Nota Atu]>0 And [Quantidade Faturada]<>[Quantidade Nota Atu] :
         [Erro_Item] = "Quantidade Faturada Divergente"                                
  EndSwitch                           
EndScan
Do_It!
ClearAll

EndProc ;Gera_Sequencia_Agrupados()

;*******************************************************************************
;* Rotina para Acertar Pedidos Faturados                                       *
;*******************************************************************************
Proc Verifica_Pedido()

Tabela=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\Rm_0083" Tabela                                 

If VSDGFINAL=1 Or VSDGPEDIDO<>""
   Then ;---- 1§ Etapa: Verificando os pedidos pelo per¡odo informado ----------
        Aguarde("Preparando as tabelas para processamento das informa‡”es - NotC 1/4")
        {Ask} {PedidoC}
        Moveto [Numero do Pedido       ] Check TypeIn "~VSDGPEDIDO.."  
        Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
        Moveto [Situacao do Pedido     ] TypeIn "Not CANCELADO, Not SUSPENSO"
        Do_It!
        ClearAll 
        
        Aguarde("Preparando as tabelas para processamento das informa‡”es - NotC 2/4")
        ;---- 2§ Etapa: Verificando os pedidos vinculados nas notas ------------
        {Ask} {Answer} 
        Moveto [Numero do Pedido       ] TypeIn "_Ped"
        {Ask} {NotaI}
        Moveto [Codigo da Empresa      ] Check 
        Moveto [Numero do Documento    ] Check 
        Moveto [Serie do Documento     ] Check  
        Moveto [Numero Pedido_Orcamento] Check TypeIn "_Ped"
        Do_It!
        ClearAll
        
        Aguarde("Preparando as tabelas para processamento das informa‡”es - NotC 3/4")
        ;---- 3§ Etapa: Verificando Dados para Trabalho ------------------------
        {Ask} {Answer}
        Moveto [Codigo da Empresa      ] Check TypeIn "_CodE"
        Moveto [Numero do Documento    ] Check TypeIn "_NumE"
        Moveto [Serie do Documento     ] Check TypeIn "_SerE"
        Moveto [Numero Pedido_Orcamento] Check
        {Ask} {NotaC}
        Moveto [Codigo da Empresa      ] TypeIn "_CodE"
        Moveto [Numero do Documento    ] TypeIn "_NumE"
        Moveto [Serie do Documento     ] TypeIn "_SerE"
        Moveto [Tipo do Documento      ] Check
        Moveto [Codigo da Destinacao   ] TypeIn "_CodN"
        Moveto [Situacao               ] TypeIn "Not C"
        {Ask} {Destin}
        Moveto [Codigo da Destinacao   ] TypeIn "_CodN"
        Moveto [Atualiza Pedidos       ] Check 
        Do_It!
        ClearAll
        
        ;---- 4§ Etapa: Inserindo Registros ------------------------------------
        Aguarde("Preparando as tabelas para processamento das informa‡”es - NotC 4/4")
        {Ask} {Answer}
        Moveto [Codigo da Empresa      ] TypeIn "_CodE"
        Moveto [Numero do Documento    ] TypeIn "_NumE"
        Moveto [Serie do Documento     ] TypeIn "_SerE"
        Moveto [Tipo do Documento      ] Typein "_TpDoc"
        Moveto [Numero Pedido_Orcamento] TypeIn "_Ped"
        Moveto [Atualiza Pedidos       ] TypeIn "_APed"
        {Ask} TypeIn Tabela Enter TypeIn "Fast Insert" 
        Moveto [Codigo da Empresa      ] TypeIn "_CodE"
        Moveto [Numero do Documento    ] TypeIn "_NumE"
        Moveto [Serie do Documento     ] TypeIn "_SerE"
        Moveto [Tipo do Documento      ] Typein "_TpDoc"
        Moveto [Numero do Pedido       ] TypeIn "_Ped"
        Moveto [Atualiza Pedidos       ] TypeIn "_APed"
        Do_It!
        ClearAll        
   Else Aguarde("Preparando as tabelas para processamento das informa‡”es - NotC 1/3")
        ;---- 1§ Etapa: Selecionando as Notas do Periodo -----------------------
        {Ask} {NotaC}
        Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Numero do Documento    ] Check
        Moveto [Serie do Documento     ] Check
        Moveto [Tipo do Documento      ] Check
        Moveto [Codigo da Destinacao   ] TypeIn "_CodN"
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
        Moveto [Situacao               ] TypeIn "Not C"
        {Ask} {Destin}
        Moveto [Codigo da Destinacao   ] TypeIn "_CodN"
        Moveto [Atualiza Pedidos       ] Check 
        Do_it!
        ClearAll
        
        ;---- 1§ Etapa: Pedidos Vinculados a Nota no Periodo -------------------
        Aguarde("Preparando as tabelas para processamento das informa‡”es - NotC 2/3")
        {Ask} {NotaI}
        Moveto [Codigo da Empresa      ] Check TypeIn "_CodE"
        Moveto [Numero do Documento    ] Check TypeIn "_NumE"
        Moveto [Serie do Documento     ] Check TypeIn "_SerE"
        Moveto [Numero Pedido_Orcamento] Check TypeIn "Not Blank"
        {Ask} {Answer}
        Moveto [Codigo da Empresa      ] TypeIn "_CodE"
        Moveto [Numero do Documento    ] TypeIn "_NumE"
        Moveto [Serie do Documento     ] TypeIn "_SerE"
        Moveto [Tipo do Documento      ] Check
        Moveto [Atualiza Pedidos       ] Check
        Do_it!
        ClearAll
          
        ;---- 3§ Etapa: Inserindo Registros ------------------------------------
        Aguarde("Preparando as tabelas para processamento das informa‡”es - NotC 3/3")  
        {Ask} {Answer}
        Moveto [Codigo da Empresa      ] TypeIn "_CodE"
        Moveto [Numero do Documento    ] TypeIn "_NumE" 
        Moveto [Serie do Documento     ] TypeIn "_SerE"
        Moveto [Tipo do Documento      ] Typein "_TpDoc"
        Moveto [Numero Pedido_Orcamento] TypeIn "_Ped"
        Moveto [Atualiza Pedidos       ] TypeIn "_APed"
        {Ask} TypeIn Tabela Enter TypeIn "Fast Insert" 
        Moveto [Codigo da Empresa      ] TypeIn "_CodE"
        Moveto [Numero do Documento    ] TypeIn "_NumE"
        Moveto [Serie do Documento     ] TypeIn "_SerE"
        Moveto [Tipo do Documento      ] Typein "_TpDoc"
        Moveto [Numero do Pedido       ] TypeIn "_Ped"
        Moveto [Atualiza Pedidos       ] TypeIn "_APed"
        Do_It!
        ClearAll
EndIf

If IsEmpty(Tabela)
   Then Mensagem("N„o h  registros a processar!")
        Return False
EndIf   

;---- Filtrando os Itens da Nota de Saida --------------------------------------
Aguarde("Preparando as tabelas para processamento das informa‡”es - NotI 1/2")

{Ask} TypeIn Tabela Enter  
Moveto [Codigo da Empresa      ] Check TypeIn "_CodE"
Moveto [Numero do Documento    ] Check TypeIn "_NumE"
Moveto [Serie do Documento     ] Check TypeIn "_SerE"
Moveto [Tipo do Documento      ] Check Typein "_TpDoc"
Moveto [Numero do Pedido       ] Check TypeIn "_Ped"
Moveto [Atualiza Pedidos       ] Check TypeIn "_APed"
{Ask} {NotaI}
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Documento    ] TypeIn "_NumE"
Moveto [Serie do Documento     ] TypeIn "_SerE"
Moveto [Numero Pedido_Orcamento] TypeIn "_Ped"
Moveto [Item Pedido_Orcamento  ] Check
Moveto [Codigo do Item         ] Check
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Do_it!
ClearAll

Aguarde("Preparando as tabelas para processamento das informa‡”es - NotI 2/2")
Empty Tabela  
                  
{Ask} {Answer}
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Documento    ] TypeIn "_NumE"
Moveto [Serie do Documento     ] TypeIn "_SerE"
Moveto [Tipo do Documento      ] Typein "_TpDoc"
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Atualiza Pedidos       ] TypeIn "_APed"
Moveto [Item Pedido_Orcamento  ] TypeIn "_IPed"
Moveto [Codigo do Item         ] TypeIn "_CodI"
Moveto [Descricao do Item      ] TypeIn "_DesI"
Moveto [Quantidade             ] TypeIn "_Qtd"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert" 
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Documento    ] TypeIn "_NumE"
Moveto [Serie do Documento     ] TypeIn "_SerE"
Moveto [Tipo do Documento      ] Typein "_TpDoc"
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Atualiza Pedidos       ] TypeIn "_APed"
Moveto [Item do Pedido         ] TypeIn "_IPed"
Moveto [Codigo do Item         ] TypeIn "_CodI"
Moveto [Descricao do Item      ] TypeIn "_DesI"
Moveto [Quantidade Nota Atu    ] TypeIn "_Qtd"
Do_It!
ClearAll

;---- Filtrando os Itens do Pedido que nÆo foram encontrados nas notas ---------
Aguarde("Preparando as tabelas para processamento das informa‡”es")  

{Ask} TypeIn Tabela Enter  
Moveto [Numero do Pedido       ] Check TypeIn "_Ped"
Moveto [Codigo da Empresa      ] Check 
{Ask} {PedidoI}
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] Check 
Moveto [Codigo do Item         ] Check
Moveto [Descricao do Item      ] Check
Do_it!
ClearAll

{Ask} TypeIn Tabela Enter  
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_ItPed"
{Ask} {Answer} TypeIn "Fast Delete"
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_ItPed"
Do_It!
ClearAll

{Ask} {Answer} 
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_ItPed"
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Codigo do Item         ] TypeIn "_CodI"
Moveto [Descricao do Item      ] TypeIn "_DesI"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert" 
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_ItPed"
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Codigo do Item         ] TypeIn "_CodI"
Moveto [Descricao do Item      ] TypeIn "_DesI"
Do_It!
ClearAll

;---- Notas que nÆo atualiza pedidos -------------------------------------------
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Numero do Documento    ] Check
Moveto [Serie do Documento     ] Check
Moveto [Numero do Pedido       ] Check
Moveto [Item do Pedido         ] Check
Moveto [Atualiza Pedidos       ] TypeIn "N"
Moveto [Quantidade Nota Atu    ] Check
Do_It!
ClearAll
                                
If Not IsEmpty("Answer")
   Then {Ask} TypeIn Tabela Enter 
        Moveto [Atualiza Pedidos       ] TypeIn "N"
        Moveto [Quantidade Nota Atu    ] TypeIn "Changeto Blank"
        Do_It!          
        ClearAll       
        
        {Ask} {Answer}
        Moveto [Codigo da Empresa      ] TypeIn "_CodE"  
        Moveto [Numero do Documento    ] TypeIn "_NumE"  
        Moveto [Serie do Documento     ] TypeIn "_SerE"  
        Moveto [Numero do Pedido       ] TypeIn "_NumP"
        Moveto [Item do Pedido         ] TypeIn "_ItP"
        Moveto [Quantidade Nota Atu    ] TypeIn "_Qtd"   
        {Ask} TypeIn Tabela Enter
        Moveto [Codigo da Empresa      ] TypeIn "_CodE"  
        Moveto [Numero do Documento    ] TypeIn "_NumE"  
        Moveto [Serie do Documento     ] TypeIn "_SerE"
        Moveto [Numero do Pedido       ] TypeIn "_NumP"
        Moveto [Item do Pedido         ] TypeIn "_ItP"
        Moveto [Quantidade Nota Nao Atu] TypeIn "Changeto _Qtd"   
        Do_It!          
        ClearAll
                
        {Ask} TypeIn Tabela Enter
        Moveto [Atualiza Pedidos       ] TypeIn "Blank"
        Do_it!
        ClearAll 
EndIf       

;---- Totalizando a Quantidade dos Itens de Sequencias Iguais (Sortidos) -------
Aguarde("Totalizando a Quantidade dos Itens de Sequencia")

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Numero do Documento    ] Check
Moveto [Serie do Documento     ] Check
Moveto [Tipo do Documento      ] Check
Moveto [Numero do Pedido       ] Check
Moveto [Item do Pedido         ] Check
Moveto [Quantidade Nota Atu    ] TypeIn "Calc Sum as Quantidade Nota Atu"
Moveto [Quantidade Nota Nao Atu] TypeIn "Calc Sum as Quantidade Nota Nao Atu"
Do_It!
ClearAll

;---- Totalizando a Quantidade da Nota -----------------------------------------
Aguarde("Totalizando a Quantidade da Nota")
Empty Tabela

{Ask} {Answer}
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Documento    ] TypeIn "_NumE"
Moveto [Serie do Documento     ] TypeIn "_SerE"
Moveto [Tipo do Documento      ] Typein "_TpDoc"
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_IPed"
Moveto [Quantidade Nota Atu    ] TypeIn "_Qtd"
Moveto [Quantidade Nota Nao Atu] TypeIn "_QtdN"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert" 
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero do Documento    ] TypeIn "_NumE"
Moveto [Serie do Documento     ] TypeIn "_SerE"
Moveto [Tipo do Documento      ] Typein "_TpDoc"
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Item do Pedido         ] TypeIn "_IPed"
Moveto [Quantidade Nota Atu    ] TypeIn "_Qtd"
Moveto [Quantidade Nota Nao Atu] TypeIn "_QtdN"
Do_It!
ClearAll

;---- Armazenando o Numero e Sequencia do Pedido relacionado as Notas ----------
Aguarde("Verificando a rela‡„o das notas com os pedidos")

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Numero do Documento    ] Check
Moveto [Serie do Documento     ] Check
Moveto [Tipo do Documento      ] Check
Moveto [Numero do Pedido       ] Check
Moveto [Item do Pedido         ] Check
Moveto [Erro_Cabeca            ] Check
Moveto [Notas Atualiza Pedidos ] Check
Moveto [Notas Nao_Atualiza Ped ] Check 
Moveto [Quantidade Nota Atu    ] Check
Moveto [Quantidade Nota Nao Atu] Check  
Do_It!
ClearAll

Tab_SeqPed=Cria_Temp(PrivDir())
Copy "Answer" Tab_SeqPed

;----- Tabela Complementar -----------------------------------------------------
;Tab_SeqPed -> Tabela com as informa‡äes das notas e da sequencias dos pedidos (sequencias podem ser repetidas para o mesmo pedido)
;----- Tabela p/ Trabalho ------------------------------------------------------
;Tab_SeqTot -> Tabela com as informa‡äes das quantidade de cada sequencia (agrupadas) - sem vinculo com notas
;Tab_Cabeca -> Tabela com as informa‡äes por empresa/pedido totalizando todas as quantidade referente aquele pedido

Gera_Sequencia_Agrupados()
Gera_Cabeca()
Adiciona_Dados_Tabela()                     

;---- Mostrar apenas inconsistˆncia de dados dos pedidos -----------------------
If CheckTG_OPERRO[1] Or CheckTG_OPAJUSTA[1]
   Then If VSDGOPRELANALSINT="1"
           Then {Ask} TypeIn Tab_Cabeca Enter TypeIn "Delete"
                Moveto [Erro_Cabeca     ] TypeIn "Blank"
                Do_it!
                ClearAll

                {Ask} {Deleted} 
                Moveto [Numero do Pedido] TypeIn "_NPed"
                Moveto [Item do Pedido  ] TypeIn "_NPed" 
                {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
                Moveto [Numero do Pedido] TypeIn "_NPed"
                Moveto [Item do Pedido  ] TypeIn "_NPed"
                Do_it!
                ClearAll
                
                {Ask} TypeIn Tabela Enter TypeIn "Delete"
                Moveto [Erro_Item       ] TypeIn "Blank"
                Do_it!
                ClearAll

                {Ask} {Deleted} 
                Moveto [Numero do Pedido] TypeIn "_NPed"
                Moveto [Item do Pedido  ] TypeIn "_NPed" 
                {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
                Moveto [Numero do Pedido] TypeIn "_NPed"
                Moveto [Item do Pedido  ] TypeIn "_NPed"
                Do_it!
                ClearAll
                
                If IsEmpty(Tabela)
                   Then Return False
                EndIf
           Else {Ask} TypeIn Tabela Enter TypeIn "Fast Delete" 
                Moveto [Erro_Cabeca    ] TypeIn "Blank"
                Do_it!
                ClearAll
        EndIf
EndIf

Return True 

EndProc ;Verifica_Pedido()

;*******************************************************************************
;* Rotina para Corre‡Æo de Pedidos                                             *
;*******************************************************************************
Proc Correcao_Pedido()

NR        = NRecords(Tabela)
NUM_ERROS = 0

View "PedidoI"
Coedit Tabela
Scan
  Barra(NR, RecNo())                                              
  Aguarde("Aguarde, ajustando a quantidade faturada do pedido "+[Numero do Pedido]+BARRA_STRING)
  
  PED_NUM  = [Numero do Pedido]
  PED_ITEM = [Item do Pedido] 
  
  If (([Quantidade Nota Atu]=0 Or [Quantidade Nota Atu]=BlankNum()) And [Quantidade Faturada]>0) Or
     ([Quantidade Nota Atu]=[Quantidade] And [Quantidade Faturada]<>[Quantidade]) Or
     ([Quantidade Nota Atu]>[Quantidade] And [Quantidade Faturada]<>[Quantidade]) Or
     ([Quantidade Nota Atu]>0 And [Quantidade Nota Atu]<>[Quantidade Faturada] And [Quantidade Nota Atu]<=[Quantidade])   
     Then If [Quantidade Nota Atu]=0 Or [Quantidade Nota Atu]=BlankNum()
             Then QTD = BlankNum()
             Else QTD = [Quantidade Nota Atu]
          EndIf   
          Moveto "PedidoI"
          Moveto [Numero do Pedido]
          Locate PED_NUM,PED_ITEM 
          If RetVal
             Then NUM_ERROS=NUM_ERROS+1
                  [Quantidade Faturada] = QTD
                  UnLockRecord
          EndIf   
  EndIf
  
  Moveto Tabela    
EndSCan
Do_It!
CleaRAll

Switch
  Case NUM_ERROS=0   : COR_MENSAGEM="ALERTA"
                       MSG = "N„o ocorreram corre‡”es de erros!"
  Case NUM_ERROS<>NR : COR_MENSAGEM="ALERTA"
                       MSG = "Corrigidos "+StrVal(NUM_ERROS)+" de "+StrVal(NR)+" erros!"
  OtherWise          : MSG = "Todos os erros foram corrigidos do pedido "+VSDGPEDIDO+"!" 
EndSwitch

Mensagem(MSG)
Release Vars COR_MENSAGEM
 
EndProc ;Correcao_Pedido()

;*******************************************************************************
;* Rotina Bloqueia Tabelas da Pasta                                            *
;*******************************************************************************
Proc BloqueiaTabela()
Private MSG

If IsTable("\\Sistemas\\Vendas\\PedidoC")
   Then Lock "\\Sistemas\\Vendas\\PedidoC" FL
        If Not RetVal
           Then MSG="O usu rio "+Upper(ErrorUser())+" esta usando o Sistema !// //"
                MSG=MSG+Completa("- Contact -lo para liberar o Sistema;",40," ")+"//"
                MSG=MSG+Completa("- Esta rotina ser  abortado.",40," ")+"// //"
                MSG=MSG+"Execute esta rotina novamente para que//"
                MSG=MSG+"a mesma seja concluida corretamente !"
                Mensagem(MSG)
                Return False
        EndIf
EndIf

Return True
EndProc

;*******************************************************************************
;* Rotina Desbloqueia Tabelas da Pasta                                         *
;*******************************************************************************
Proc DesbloqueiaTabela()

If IsTable("\\Sistemas\\Vendas\\PedidoC")
   Then UnLock "\\Sistemas\\Vendas\\PedidoC" FL
EndIf

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_PEDIDO"        : Campo="TG_EMPRESA"
            Case Campo="TG_FINALIDADE"    : Campo="TG_PEDIDO"
            Case Campo="TG_DTINI"         : Campo="TG_FINALIDADE"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPRELANALSINT" : If Not IsBlank(VSDGPEDIDO)
                                               Then Campo="TG_PEDIDO"
                                               Else Campo="TG_DTFIM"
                                            EndIf   
            Case Campo="TG_OPERRO"        : Campo="TG_OPRELANALSINT"
            Case Campo="TG_OPAJUSTA"      : Campo="TG_OPERRO"
            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_PEDIDO"
                    Case Campo="TG_PEDIDO"        : Campo="TG_FINALIDADE"
                         If Not IsBlank(VSDGPEDIDO)
                            Then Campo="TG_OPRELANALSINT"
                                 VSDGDTINI            = BlankDate()
                                 VSDGDTFIM            = BlankDate()
                         EndIf          
                    Case Campo="TG_FINALIDADE"    : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"         : Campo="TG_OPRELANALSINT"
                    Case Campo="TG_OPRELANALSINT" : Campo="TG_OPERRO"
                    Case Campo="TG_OPERRO"        : Campo="TG_OPAJUSTA"
                    Case Campo="TG_OPAJUSTA"      : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_OPERRO" Or
       Campo="TG_OPAJUSTA" :
       MensagemCheckBoxes()
  Case Campo="TG_FINALIDADE":
       MensagemRadioButtons()     
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()
SYS_VALOR()
SYS_DATA()

VSDGEMPRESA          = ""
VSDGNOMEMP           = ""
VSDGPEDIDO           = ""
VSDGNOMPEDIDO        = ""
VSDGOPRELANALSINT    = ""
VSDGNOMOPRELANALSINT = ""
VSDGDTINI            = BlankDate()
VSDGDTFIM            = BlankDate()  

Array TG_OPERRO[1]
TG_OPERRO[1]="Apenas Ocorrˆncia de Erros"
Array TG_OPAJUSTA[1]
TG_OPAJUSTA[1]="Corrigir Erros"

Array CheckTG_OPERRO[ArraySize(TG_OPERRO)]
CheckTG_OPERRO[1]=False
Array CheckTG_OPAJUSTA[ArraySize(TG_OPAJUSTA)]
CheckTG_OPAJUSTA[1]=False

While True
  ShowDialog "Conferˆncia da Qtd Faturada dos Pedidos" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"                                                   
  Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 09,12 Height 13 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 "Pedido"  For "TG_PEDIDO"
    Accept @ 03,01 Width 09 "A6"  Picture "[&,#][#*#]" Tag "TG_PEDIDO" To VSDGPEDIDO
    Accept @ 03,09 Width 25 "A20"  Picture "!*!" Tag "TG_NOMPEDIDO" To VSDGNOMPEDIDO
  
    Label @ 04,00 "Op‡„o de Data" For "TG_FINALIDADE"
    RadioButtons @ 05,01 Height 1 Width 33
      "~1~ Pedidos",
      "~2~ Faturamento"
        Tag "TG_FINALIDADE"
        To VSDGFINAL                              
                              
    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  @ 00,35 "Op‡„o de Relat¢rio" For "TG_OPRELANALSINT"
    Accept @ 01,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELANALSINT" To VSDGOPRELANALSINT
    Accept @ 01,44 Width 25 "A20"  Picture "!*!" Tag "TG_NOMOPRELANALSINT" To VSDGNOMOPRELANALSINT

    CheckBoxes @ 06,35 Height 1 Width 33 Tag "TG_OPERRO"
    TG_OPERRO[1] to CheckTG_OPERRO[1]

    CheckBoxes @ 07,35 Height 1 Width 33 Tag "TG_OPAJUSTA"
    TG_OPAJUSTA[1] to CheckTG_OPAJUSTA[1]

    Pushbutton @ 09,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 09,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
                          
  Switch
    Case CheckTG_OPAJUSTA[1]     : If IsBlank(VSDGPEDIDO)
                                      Then Mensagem("Para corrigir erros, ser  preciso especificar o pedido!")
                                           Loop         
                                   EndIf
                                   VSDGOPRELANALSINT="1"
    Case Not IsBlank(VSDGPEDIDO) : VSDGDTINI = BlankDate()
                                   VSDGDTFIM = BlankDate()
    Case VSDGDTINI=BlankDate()   : Mensagem("Informe a Data Inicial!")
                                   Loop                               
  EndSwitch
          
  PEDIDO_COM_ERRO = False
  DISPOSITIVO()
  If OK="" Then Loop EndIf    
  
  DATA_REF     = Today()
  If VSDGPEDIDO<>""
     Then GetRecord "\\Sistemas\\Vendas\\PedidoC" VSDGPEDIDO To REG_PED 
          VSDGDTINI = REG_PED["Data de Emissao"]
          VSDGDTFIM = DATA_REF
          VSDGDTINC = REG_PED["Data_Inclusao"]
  EndIf

  ;---- Apenas para pedidos com data de emissÆo maior ou igual a 15.10.2016
  ;     Em 14.09.2016 foi realizado um ajustes para um controle mais preciso na SEQUENCIA DO PEDIDO quando ‚ gerado no PedidoI 
  If CheckTG_OPAJUSTA[1] And (SYSTABLE_DT_ATUAL < DateVal("15.09.2016") Or VSDGDTINC < DateVal("15.09.2016"))  
     Then Mensagem("A op‡„o para corre‡„o est  liberada apenas para pedidos//"+
                   "a partir da atualiza‡„o do sistema de 15 de Setembro de 2016//"+
                   "e pedidos emitidos a partir desta atualiza‡„o!")
          Loop
  EndIf

  CORRIGI_ERRO = False
  If Verifica_Pedido()
     Then Impressao_Orientacao="Paisagem"
          If VSDGOPRELANALSINT="1"
             Then MODELO = "R"
             Else MODELO = "1"
          EndIf
          IMPRIREL(Tabela,MODELO)  
          
          If CheckTG_OPAJUSTA[1]
             Then ConfGeral("Deseja corrigir o pedido "+VSDGPEDIDO+"?")
                  If Ok="S"
                     Then Correcao_Pedido()
                  EndIf   
          EndIf   
          
          Delete Tabela
     Else Mensagem("N„o h  registros a processar!")     
  EndIf
  If IsAssigned(Tabela)     Then If IsTable(Tabela)     Then Delete Tabela     EndIf EndIf
  If IsAssigned(Tab_SeqTot) Then If IsTable(Tab_SeqTot) Then Delete Tab_SeqTot EndIf EndIf
  If IsAssigned(Tab_SeqPed) Then If IsTable(Tab_SeqPed) Then Delete Tab_SeqPed EndIf EndIf
  If IsAssigned(Tab_Cabeca) Then If IsTable(Tab_Cabeca) Then Delete Tab_Cabeca EndIf EndIf
EndWhile

Release Vars All
Release Procs All
