;Script ANTIGO: RM_0010
;Devido a menu de usu rios o script RM_0010 ser  o mesmo que o PED_CORR -> 17.05.2019



;** PED_CORR *********************************************************************
;*  Gera Relatorio com as informa‡äes de pedidos                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 15/01/2018 por Bruno Carvalho
;Ultima Alteracao: 27/12/2018 por Bruno Carvalho                                            
;Motivo Alteracao: Ajustes para corrigir a situa‡Æo do pedido -> Correcao_Pedido()
;Ultima Alteracao: 28/12/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Adicionado processos de #0427#
;Ultima Alteracao: 17/05/2019 por Bruno Carvalho                           
;Motivo Alteracao: Copiado PED_CORR p/ RM_0010 **OS DOIS SCRIPTS SAO IDENTICOS, ALTERANDO UM, DEVE ALTERAR O OUTRO.
;Ultima Alteracao: 20/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog
;Ultima Alteracao: 06/05/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes processo de item sortidos com as procs ClienteUsaItemSortido() e PegaItemSortido()

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

If IsAssigned(PED_CORR)  And IsTable(PED_CORR)  Then Delete PED_CORR  EndIf
If IsAssigned(PED_CORRN) And IsTable(PED_CORRN) Then Delete PED_CORRN EndIf
If IsAssigned(PED_CORRX) And IsTable(PED_CORRX) Then Delete PED_CORRX EndIf

PED_CORR = Cria_Tabela("" ,"PEDIDO Codigo da Empresa(A4*),"+      
                           "PEDIDO Numero do Pedido(A6*),"+      
                           "PEDIDO Codigo do Item(A10*),"+      
                           "PEDIDO Data de Emissao(D),"+      
                           "PEDIDO Situacao do Pedido(A10),"+
                           "PEDIDO Erro(A255),"+
                           "PEDIDO Item do Pedido(S),"+
                           "PEDIDO Quantidade(N),"+
                           "PEDIDO QuantidadeF(N),"+
                           "PEDIDO NOTA Quantidade(N),"+
                           "PEDIDO ITEM Quantidade(N),"+
                           "PEDIDO ITEM QuantidadeF(N),"+
                           "PEDIDO ITEM Situacao(A1),"+
                           "PEDIDO ITEM Erro(A255)")

PED_CORRN = Cria_Tabela("","NOTA Codigo da Empresa(A4*),"+
                           "NOTA Numero do Pedido(A6*),"+
                           "NOTA Codigo do Item(A10*),"+
                           "NOTA Numero do Documento(A10*),"+
                           "NOTA Serie do Documento(A4*),"+
                           "NOTA Item do Documento(S*),"+
                           "NOTA Item do Pedido(S),"+ 
                           "NOTA Codigo do Documento(A4),"+
                           "NOTA Situacao(A1),"+
                           "NOTA Atualiza Pedido(A1),"+
                           "NOTA Quantidade(N)")  

PED_CORRX = Cria_Tabela("","EXPED Codigo da Empresa(A4*),"+
                           "EXPED Numero do Pedido(A6*),"+
                           "EXPED Codigo do Item(A10*),"+
                           "EXPED Numero da OE(A6*),"+
                           "EXPED Situacao(A1),"+
                           "EXPED Quantidade Expedida(N),"+
                           "EXPED Quantidade Pedido(N),"+
                           "EXPED Quantidade Subst(N)")  

EndProc ;Monta_Tabelas()

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

Monta_Tabelas()
                       
Empty PED_CORR
Empty PED_CORRN
Empty PED_CORRX

;---- 1§ Etapa: Verificando os pedidos pelo per¡odo informado ------------------
Aguarde("Preparando as tabelas para processamento das informa‡”es 1/6")
{Ask} {PedidoC}
Moveto [Numero do Pedido       ] Check TypeIn "_Ped, ~VSDGPEDIDO.."  
Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] Check TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
Moveto [Situacao do Pedido     ] Check TypeIn "Not CANCELADO, Not SUSPENSO"
{Ask} {PedidoI}
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Codigo do Item         ] Check TypeIn "Not Blank"
Moveto [Item do Pedido         ] Check
Moveto [Quantidade             ] Check
Moveto [Quantidade Faturada    ] Check
Do_It!
ClearAll 
Adiciona_Dados("PEDIDO")

Aguarde("Preparando as tabelas para processamento das informa‡”es 2/6")
;---- 2§ Etapa: Verificando os pedidos vinculados nas notas ------------
{Ask} {NotaC}
Moveto [Codigo da Empresa      ] Check TypeIn "_Code" 
Moveto [Numero do Documento    ] Check TypeIn "_NumD"
Moveto [Serie do Documento     ] Check TypeIn "_SerD"
Moveto [Codigo do Documento    ] Check
Moveto [Situacao               ] Check
Moveto [Codigo da Destinacao   ] Check
;Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Tipo Movimento Estoque ]       TypeIn "S"
{Ask} TypeIn PED_CORR Enter 
Moveto [PEDIDO Numero do Pedido]       TypeIn "_Ped"
{Ask} {NotaI}                     
Moveto [Codigo da Empresa      ]       TypeIn "_Code" 
Moveto [Numero do Documento    ]       TypeIn "_NumD"
Moveto [Serie do Documento     ]       TypeIn "_SerD"
Moveto [Numero Pedido_Orcamento]       TypeIn "_Ped" 
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then ;Pedidos envolvidos no NotaI (Independente se faturada parcial ou total)
        Adiciona_Indice("Answer","Codigo da Empresa,Numero do Documento,Serie do Documento")
 
        {Ask} {NotaI}
        Moveto [Codigo da Empresa      ] Check TypeIn "_Code" 
        Moveto [Numero do Documento    ] Check TypeIn "_NumD" 
        Moveto [Serie do Documento     ] Check TypeIn "_SerD"
        Moveto [Codigo do Item         ] Check TypeIn "Not Blank"
        Moveto [Item do Documento      ] Check  
        Moveto [Numero Pedido_Orcamento] Check TypeIn "~VSDGPEDIDO.."
        Moveto [Item Pedido_Orcamento  ] Check       
        Moveto [Quantidade             ] Check
        {Ask} {Answer}
        Moveto [Codigo da Empresa      ]       TypeIn "_Code" 
        Moveto [Numero do Documento    ]       TypeIn "_NumD"
        Moveto [Serie do Documento     ]       TypeIn "_SerD" 
        Moveto [Codigo do Documento    ] Check 
        Moveto [Situacao               ] Check  
        Moveto [Codigo da Destinacao   ]       TypeIn "_CodN"
        {Ask} {Destin}
        Moveto [Codigo da Destinacao   ]       TypeIn "_CodN"
        Moveto [Atualiza Pedidos       ] Check
        Do_It!
        ClearAll
        
        Adiciona_Indice("Answer","Codigo da Empresa,Numero do Documento,Serie do Documento,Item do Documento")
        Adiciona_Dados("NOTAI")        
EndIf        

Aguarde("Preparando as tabelas para processamento das informa‡”es 3/6")
;---- 3§ Etapa: Verificando os pedidos vinculados nas notas ------------
{Ask} {NotaC}
Moveto [Codigo da Empresa      ] Check TypeIn "_Code" 
Moveto [Numero do Documento    ] Check TypeIn "_NumD"
Moveto [Serie do Documento     ] Check TypeIn "_SerD"
Moveto [Codigo do Documento    ] Check
Moveto [Situacao               ] Check
Moveto [Codigo da Destinacao   ] Check
;Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Tipo Movimento Estoque ]       TypeIn "S"
Moveto [Numero do Pedido       ]       TypeIn "_Ped" 
{Ask} TypeIn PED_CORR Enter 
Moveto [PEDIDO Numero do Pedido]       TypeIn "_Ped"
{Ask} {NotaI}                     
Moveto [Codigo da Empresa      ]       TypeIn "_Code" 
Moveto [Numero do Documento    ]       TypeIn "_NumD"
Moveto [Serie do Documento     ]       TypeIn "_SerD"
Moveto [Numero Pedido_Orcamento]       TypeIn "Blank" 
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then ;Pedidos envolvidos no NotaC a partir da "CABECA"
        Adiciona_Indice("Answer","Codigo da Empresa,Numero do Documento,Serie do Documento")
        
        ;Excluindo da Tabela de Trabalho, Notas que j  foram adicionadas anteriormente
        {Ask} TypeIn PED_CORRN Enter 
        Moveto [NOTA Codigo da Empresa  ] TypeIn "_Code" 
        Moveto [NOTA Numero do Documento] TypeIn "_NumD"
        Moveto [NOTA Serie do Documento ] TypeIn "_SerD"
        {Ask} {Answer} TypeIn "Fast Delete"
        Moveto [Codigo da Empresa       ] TypeIn "_Code" 
        Moveto [Numero do Documento     ] TypeIn "_NumD"
        Moveto [Serie do Documento      ] TypeIn "_SerD"
        Do_it!
        CleaRall
        
        If Not IsEmpty("Answer")
           Then {Ask} {NotaI}
                Moveto [Codigo da Empresa      ] Check TypeIn "_Code" 
                Moveto [Numero do Documento    ] Check TypeIn "_NumD" 
                Moveto [Serie do Documento     ] Check TypeIn "_SerD"
                Moveto [Codigo do Item         ] Check TypeIn "Not Blank"
                Moveto [Item do Documento      ] Check       
                Moveto [Quantidade             ] Check
                {Ask} {Answer}
                Moveto [Codigo da Empresa      ]       TypeIn "_Code" 
                Moveto [Numero do Documento    ]       TypeIn "_NumD"
                Moveto [Serie do Documento     ]       TypeIn "_SerD" 
                Moveto [Codigo do Documento    ] Check 
                Moveto [Numero do Pedido       ]      TypeIn "~VSDGPEDIDO.."
                Moveto [Situacao               ] Check  
                Moveto [Codigo da Destinacao   ]       TypeIn "_CodN"
                {Ask} {Destin}
                Moveto [Codigo da Destinacao   ]       TypeIn "_CodN"
                Moveto [Atualiza Pedidos       ] Check
                Do_It!
                ClearAll
        
               Adiciona_Indice("Answer","Codigo da Empresa,Numero do Documento,Serie do Documento,Item do Documento")
               Adiciona_Dados("NOTAC")
        EndIf
EndIf        

Aguarde("Preparando as tabelas para processamento das informa‡”es 4/6")
;---- 4§ Etapa: Verificando os pedidos vinculados nas notas ------------
{Ask} {FaturaC}
Moveto [Numero da OF           ] Check TypeIn "_OF"
Moveto [Codigo da Empresa      ] Check 
;Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Tipo Movimento Estoque ]       TypeIn "S"
Moveto [Sistema Gerador        ] Check TypeIn "as Situacao"
Moveto [Codigo da Destinacao   ] Check
Moveto [Docto Nota Gerada      ]       TypeIn "Blank"
{Ask} TypeIn PED_CORR Enter 
Moveto [PEDIDO Numero do Pedido]       TypeIn "_Ped"
{Ask} {FaturaI}
Moveto [Numero da OF           ]       TypeIn "_OF"
Moveto [Numero Pedido_Orcamento]       TypeIn "_Ped" 
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then ;Pedidos envolvidos no FaturaI (Independente se faturada parcial ou total)
        Adiciona_Indice("Answer","Numero da OF")
 
        {Ask} {FaturaI}
        Moveto [Numero da OF           ] Check TypeIn "_OF" 
        Moveto [Codigo do Item         ] Check TypeIn "Not Blank"
        Moveto [Item da OF             ] Check  
        Moveto [Numero Pedido_Orcamento] Check TypeIn "~VSDGPEDIDO.."
        Moveto [Item Pedido_Orcamento  ] Check       
        Moveto [Quantidade             ] Check
        {Ask} {Answer}
        Moveto [Numero da OF           ]       TypeIn "_OF"
        Moveto [Codigo da Empresa      ] Check 
        Moveto [Situacao               ] Check  
        Moveto [Codigo da Destinacao   ]       TypeIn "_CodN"
        {Ask} {Destin}
        Moveto [Codigo da Destinacao   ]       TypeIn "_CodN"
        Moveto [Atualiza Pedidos       ] Check
        Do_It!
        ClearAll
        
        Adiciona_Indice("Answer","Numero da OF,Item da OF")
        Adiciona_Dados("FATURAI")
EndIf    

Aguarde("Preparando as tabelas para processamento das informa‡”es 5/6")
;---- 5§ Etapa: Verificando os pedidos vinculados no fatura --------------------
{Ask} {FaturaC}
Moveto [Numero da OF           ] Check TypeIn "_OF"
Moveto [Codigo da Empresa      ] Check
;Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Tipo Movimento Estoque ]       TypeIn "S"
Moveto [Sistema Gerador        ] Check TypeIn "as Situacao"
Moveto [Codigo da Destinacao   ] Check
Moveto [Docto Nota Gerada      ]       TypeIn "Blank"
Moveto [Numero do Pedido       ]       TypeIn "_Ped" 
{Ask} TypeIn PED_CORR Enter 
Moveto [PEDIDO Numero do Pedido]       TypeIn "_Ped"
{Ask} {FaturaI}                     
Moveto [Numero da OF           ]       TypeIn "_OF" 
Moveto [Numero Pedido_Orcamento]       TypeIn "Blank"
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then ;Pedidos envolvidos no NotaC a partir da "CABECA"
        Adiciona_Indice("Answer","Numero da OF")
        
        ;Excluindo da Tabela de Trabalho, Faturas que j  foram adicionadas anteriormente
        {Ask} TypeIn PED_CORRN Enter
        Moveto [NOTA Numero do Documento] TypeIn "_OF"
        Moveto [NOTA Codigo do Documento] TypeIn "OF"
        {Ask} {Answer} TypeIn "Fast Delete"
        Moveto [Numero da OF            ] TypeIn "_OF"
        Do_it!
        CleaRall
        
        If Not IsEmpty("Answer")
           Then {Ask} {FaturaI}
                Moveto [Numero da OF           ] Check TypeIn "_OF"
                Moveto [Item da OF             ] Check
                Moveto [Codigo da Empresa      ] Check
                Moveto [Codigo do Item         ] Check TypeIn "Not Blank"
                Moveto [Quantidade             ] Check
                {Ask} {Answer}
                Moveto [Numero da OF           ]       TypeIn "_OF" 
                Moveto [Situacao               ] Check  
                Moveto [Codigo da Destinacao   ]       TypeIn "_CodN"
                Moveto [Numero do Pedido       ]       TypeIn "~VSDGPEDIDO.."
                {Ask} {Destin}
                Moveto [Codigo da Destinacao   ]       TypeIn "_CodN"
                Moveto [Atualiza Pedidos       ] Check
                Do_It!
                ClearAll
        
                Adiciona_Indice("Answer","Numero da OF,Item do Documento")
                Adiciona_Dados("FATURAC")
        EnDIf
EndIf      

Aguarde("Preparando as tabelas para processamento das informa‡”es 6/6")
;---- 6§ Etapa: Verificando os pedidos vinculados no fatura --------------------
{Ask} TypeIn PED_CORR Enter 
Moveto [PEDIDO Numero do Pedido]       TypeIn "_Ped"
{Ask} {ExpedC}
Moveto [Numero da OE           ] Check Typein "_NOE"
Moveto [Codigo da Empresa      ] Check 
Moveto [Numero do Pedido       ] Check TypeIn "_Ped"
Moveto [Situacao da OE         ] Check TypeIn "as Situacao"
{Ask} {ExpedI}
Moveto [Numero da OE           ]      Typein "_NOE"
Moveto [Codigo do Item         ] Check TypeIn "Not Blank"
Moveto [Quantidade_Pedido      ] Check 
Moveto [Quantidade_Expedida    ] Check TypeIn ">0" 
Moveto [Quantidade_Substituida ] Check
Do_It!
ClearAll                   
Adiciona_Indice("Answer","Numero da OE,Codigo do Item")
Adiciona_Dados("EXPED")

Verifica_Itens_Sortidos()
Verificar_Inconsistencias()

If VSDGCODMODELO="02"
   Then If Not IsEmpty(PED_CORRN) 
           Then {Ask} TypeIn PED_CORRN Enter
                Moveto [NOTA Codigo da Empresa  ] Check
                Moveto [NOTA Numero do Pedido   ] Check
                Moveto [NOTA Numero do Documento] Check
                Moveto [NOTA Serie do Documento ] Check
                Moveto [NOTA Codigo do Documento] Check
                Moveto [NOTA Atualiza Pedido    ] Check
                Moveto [NOTA Situacao           ] Check
                Moveto [NOTA Quantidade         ]       TypeIn "Calc Sum as NOTA Quantidade"
                Do_it!
                Clearall
                
                Empty PED_CORRN
                
                {Ask} {Answer}
                Moveto [NOTA Codigo da Empresa  ] TypeIn "_CodE" 
                Moveto [NOTA Numero do Pedido   ] TypeIn "_Nped" 
                Moveto [NOTA Numero do Documento] TypeIn "_NumD" 
                Moveto [NOTA Serie do Documento ] TypeIn "_SerD" 
                Moveto [NOTA Codigo do Documento] TypeIn "_CodD" 
                Moveto [NOTA Atualiza Pedido    ] TypeIn "_Atua" 
                Moveto [NOTA Situacao           ] TypeIn "_Sit" 
                Moveto [NOTA Quantidade         ] TypeIn "_Qtd"
                {Ask} TypeIn PED_CORRN Enter TypeIn "Fast Insert" Enter
                Moveto [NOTA Codigo da Empresa  ] TypeIn "_CodE" 
                Moveto [NOTA Numero do Pedido   ] TypeIn "_Nped" 
                Moveto [NOTA Numero do Documento] TypeIn "_NumD" 
                Moveto [NOTA Serie do Documento ] TypeIn "_SerD" 
                Moveto [NOTA Codigo do Documento] TypeIn "_CodD" 
                Moveto [NOTA Atualiza Pedido    ] TypeIn "_Atua" 
                Moveto [NOTA Situacao           ] TypeIn "_Sit"
                Moveto [NOTA Quantidade         ] TypeIn "_Qtd"
                Do_it!
                Clearall
        EndIf
        
        If Not IsEmpty(PED_CORRX) 
           Then {Ask} TypeIn PED_CORRX Enter
                Moveto [EXPED Codigo da Empresa  ] Check
                Moveto [EXPED Numero do Pedido   ] Check
                Moveto [EXPED Numero da OE       ] Check
                Moveto [EXPED Quantidade Expedida] TypeIn "Calc Sum as EXPED Quantidade Expedida"
                Moveto [EXPED Quantidade Pedido  ] TypeIn "Calc Sum as EXPED Quantidade Pedido"
                Moveto [EXPED Quantidade Subst   ] TypeIn "Calc Sum as EXPED Quantidade Subst"
                Do_it!
                Clearall
                
                Empty PED_CORRX
                
                {Ask} {Answer}
                Moveto [EXPED Codigo da Empresa  ] TypeIn "_CodE"
                Moveto [EXPED Numero do Pedido   ] TypeIn "_NumP"
                Moveto [EXPED Numero da OE       ] TypeIn "_NoE"
                Moveto [EXPED Quantidade Expedida] TypeIn "_QtdE"
                Moveto [EXPED Quantidade Pedido  ] TypeIn "_QtdP"
                Moveto [EXPED Quantidade Subst   ] TypeIn "_QtdS"
                {Ask} TypeIn PED_CORRX Enter TypeIn "Fast Insert" Enter
                Moveto [EXPED Codigo da Empresa  ] TypeIn "_CodE"
                Moveto [EXPED Numero do Pedido   ] TypeIn "_NumP"
                Moveto [EXPED Numero da OE       ] TypeIn "_NoE"
                Moveto [EXPED Quantidade Expedida] TypeIn "_QtdE"
                Moveto [EXPED Quantidade Pedido  ] TypeIn "_QtdP"
                Moveto [EXPED Quantidade Subst   ] TypeIn "_QtdS"
                Do_it!
                Clearall
        EndIf
        
        If Not IsEmpty(PED_CORRX) 
           Then {Ask} TypeIn PED_CORRX Enter
                Moveto [EXPED Codigo da Empresa  ] Check
                Moveto [EXPED Numero do Pedido   ] Check
                Moveto [EXPED Numero da OE       ] Check
                Moveto [EXPED Quantidade Expedida] TypeIn "Calc Sum as EXPED Quantidade Expedida"
                Moveto [EXPED Quantidade Pedido  ] TypeIn "Calc Sum as EXPED Quantidade Pedido"
                Moveto [EXPED Quantidade Subst   ] TypeIn "Calc Sum as EXPED Quantidade Subst"
                Do_it!
                Clearall
                
                Empty PED_CORRX
                
                {Ask} {Answer}
                Moveto [EXPED Codigo da Empresa  ] TypeIn "_CodE"
                Moveto [EXPED Numero do Pedido   ] TypeIn "_NumP"
                Moveto [EXPED Numero da OE       ] TypeIn "_NoE"
                Moveto [EXPED Quantidade Expedida] TypeIn "_QtdE"
                Moveto [EXPED Quantidade Pedido  ] TypeIn "_QtdP"
                Moveto [EXPED Quantidade Subst   ] TypeIn "_QtdS"
                {Ask} TypeIn PED_CORRX Enter TypeIn "Fast Insert" Enter
                Moveto [EXPED Codigo da Empresa  ] TypeIn "_CodE"
                Moveto [EXPED Numero do Pedido   ] TypeIn "_NumP"
                Moveto [EXPED Numero da OE       ] TypeIn "_NoE"
                Moveto [EXPED Quantidade Expedida] TypeIn "_QtdE"
                Moveto [EXPED Quantidade Pedido  ] TypeIn "_QtdP"
                Moveto [EXPED Quantidade Subst   ] TypeIn "_QtdS"
                Do_it!
                Clearall
        EndIf
        
        {Ask} TypeIn PED_CORR Enter 
        Moveto [PEDIDO Codigo da Empresa ] Check
        Moveto [PEDIDO Numero do Pedido  ] Check
        Moveto [PEDIDO Data de Emissao   ] Check
        Moveto [PEDIDO Situacao do Pedido] Check             
        Moveto [PEDIDO Erro              ] Check
        Moveto [PEDIDO ITEM Quantidade   ]       TypeIn "Calc sum as PEDIDO ITEM Quantidade"
        Moveto [PEDIDO ITEM QuantidadeF  ]       TypeIn "Calc sum as PEDIDO ITEM QuantidadeF" 
        Do_it!  
        Clearall
        
        Adiciona_Indice("Answer","PEDIDO Codigo da Empresa,PEDIDO Numero do Pedido,PEDIDO Data de Emissao,PEDIDO Situacao do Pedido,PEDIDO Erro")
        Empty PED_CORR
        
        {Ask} {Answer}
        Moveto [PEDIDO Codigo da Empresa ] TypeIn "_CodE"
        Moveto [PEDIDO Numero do Pedido  ] TypeIn "_NPed" 
        Moveto [PEDIDO Data de Emissao   ] TypeIn "_Dat"
        Moveto [PEDIDO Situacao do Pedido] TypeIn "_Sit"            
        Moveto [PEDIDO Erro              ] TypeIn "_Erro"
        Moveto [PEDIDO ITEM Quantidade   ] TypeIn "_Qtd"
        Moveto [PEDIDO ITEM QuantidadeF  ] TypeIn "_QtdF"
        {Ask} TypeIn PED_CORR Enter TypeIn "Fast Insert" Enter 
        Moveto [PEDIDO Codigo da Empresa ] TypeIn "_CodE"
        Moveto [PEDIDO Numero do Pedido  ] TypeIn "_NPed" 
        Moveto [PEDIDO Data de Emissao   ] TypeIn "_Dat"
        Moveto [PEDIDO Situacao do Pedido] TypeIn "_Sit"            
        Moveto [PEDIDO Erro              ] TypeIn "_Erro" 
        Moveto [PEDIDO ITEM Quantidade   ] TypeIn "_Qtd"
        Moveto [PEDIDO ITEM QuantidadeF  ] TypeIn "_QtdF"
        Do_it!  
        Clearall
        
        Adiciona_Indice(PED_CORR,"PEDIDO Codigo da Empresa,PEDIDO Numero do Pedido,PEDIDO Data de Emissao,PEDIDO Situacao do Pedido,PEDIDO Erro")
EnDIf        

If CheckTG_OPERRO[1]
   Then Tabela  = Cria_Temp(PrivDir())
        Copy PED_CORR Tabela
        Empty PED_CORR
        For wi From 1 To 2
          {Ask} TypeIn Tabela Enter
          Moveto [PEDIDO Codigo da Empresa] Check
          Moveto [PEDIDO Numero do Pedido ] Check 
          Switch
            Case wi = 1 : Moveto [PEDIDO Erro     ] Check TypeIn "Not Blank"          ;**** Erros no Cabe‡a
            Case wi = 2 : Moveto [PEDIDO ITEM Erro] Check TypeIn "Not Blank"          ;**** Erros nos Itens
          EndSwitch   
          Do_it!
          ClearAll
          
          If Not IsEmpty("Answer")
             Then {Ask} TypeIn Tabela Enter TypeIn "Delete" Enter 
                  Moveto [PEDIDO Codigo da Empresa] TypeIn "_CodE"
                  Moveto [PEDIDO Numero do Pedido ] TypeIn "_NPed" 
                  {Ask} {Answer}
                  Moveto [PEDIDO Codigo da Empresa] TypeIn "_CodE"
                  Moveto [PEDIDO Numero do Pedido ] TypeIn "_NPed"
                  Do_it!
                  ClearAll
                  
                  If Not IsEmpty("Deleted")
                     Then Add "Deleted" PED_CORR
                          ClearAll
                  EndIf
          EndIf              
        EndFor
        If IsTable(Tabela)    Then Delete Tabela    EndIf
        If isTable("Deleted") Then Delete "Deleted" EndIf
EndIf
     
If Not Isempty(PED_CORR)
   Then Return True
   Else Return False
EndIf   

EndProc ;Verifica_Pedido()

;*******************************************************************************
;* Rotina p/ Adicionar Dados  -  Espec¡ficos                                   *
;*******************************************************************************
Proc Adiciona_Dados(PARAM)
Private PARAM

If IsEmpty("Answer")
   Then Return
EndIF

Switch
  Case PARAM = "PEDIDO" :
       {Ask} {Answer}
       Moveto [Numero do Pedido         ] TypeIn "_Ped"  
       Moveto [Codigo da Empresa        ] TypeIn "_Emp" 
       Moveto [Data de Emissao          ] TypeIn "_DtEmi" 
       Moveto [Situacao do Pedido       ] TypeIn "_Sit"
       Moveto [Item do Pedido           ] TypeIn "_Seq"
       Moveto [Codigo do Item           ] TypeIn "_CodI"
       Moveto [Quantidade               ] TypeIn "_Qtd"
       Moveto [Quantidade Faturada      ] TypeIn "_QtdF"
       {Ask} TypeIn PED_CORR Enter TypeIn "Fast Insert"
       Moveto [PEDIDO Numero do Pedido  ] TypeIn "_Ped"  
       Moveto [PEDIDO Codigo da Empresa ] TypeIn "_Emp" 
       Moveto [PEDIDO Data de Emissao   ] TypeIn "_DtEmi" 
       Moveto [PEDIDO Situacao do Pedido] TypeIn "_Sit"
       Moveto [PEDIDO Item do Pedido    ] TypeIn "_Seq"
       Moveto [PEDIDO Codigo do Item    ] TypeIn "_CodI"
       Moveto [PEDIDO ITEM Quantidade   ] TypeIn "_Qtd"
       Moveto [PEDIDO ITEM QuantidadeF  ] TypeIn "_QtdF"
       Do_It!
       ClearAll
        
       ;---- Totaliza a Quantidade e Quantidade Faturada -> Cabe‡a do Pedido ---
       {Ask} TypeIn PED_CORR Enter TypeIn "Fast"
       Moveto [PEDIDO Numero do Pedido  ] Check TypeIn "_Ped, as Numero do Pedido"
       Moveto [PEDIDO ITEM Quantidade   ] TypeIn "Calc Sum as Quantidade"
       Moveto [PEDIDO ITEM QuantidadeF  ] TypeIn "Calc Sum as QuantidadeF"
       Do_It!
       ClearAll
       
       {Ask} {Answer}
       Moveto [Numero do Pedido         ] Check TypeIn "_Ped"
       Moveto [Quantidade               ] TypeIn "_Qtd"
       Moveto [QuantidadeF              ] TypeIn "_QtdF"
       {Ask} TypeIn PED_CORR Enter TypeIn "Fast"
       Moveto [PEDIDO Numero do Pedido  ] TypeIn "_Ped"
       Moveto [PEDIDO Quantidade        ] TypeIn "Changeto _Qtd"
       Moveto [PEDIDO QuantidadeF       ] TypeIn "Changeto _QtdF"
       Do_It!
       ClearAll
              
  Case PARAM="NOTAC" Or PARAM="NOTAI" Or PARAM="FATURAI" Or PARAM="FATURAC" :   
       {Ask} {Answer} 
       Moveto [Codigo da Empresa] TypeIn "_CodE"
       If PARAM="FATURAI" Or PARAM="FATURAC" 
          Then Moveto [Numero da OF       ] TypeIn "_NumD"
               Moveto [Item da OF         ] TypeIn "_Item"
          Else Moveto [Numero do Documento] TypeIn "_NumD"
               Moveto [Serie do Documento ] TypeIn "_SerD"   
               Moveto [Item do Documento  ] TypeIn "_Item"
               Moveto [Codigo do Documento     ] TypeIn "_CodD"
       EndIf   
       If PARAM="NOTAI" Or PARAM="FATURAI"  
          Then Moveto [Numero Pedido_Orcamento] TypeIn "_NPed"
               Moveto [Item Pedido_Orcamento  ] TypeIn "_ItemP"
          Else Moveto [Numero do Pedido       ] TypeIn "_NPed"      
       EndIf         
       Moveto [Codigo do Item          ] TypeIn "_CodI"
       Moveto [Quantidade              ] TypeIn "_Qtd"
       Moveto [Situacao                ] TypeIn "_Sit"
       Moveto [Atualiza Pedidos        ] TypeIn "_Atua"
       {Ask} TypeIn PED_CORRN Enter TypeIn "Fast Insert"
       Moveto [NOTA Codigo da Empresa  ] TypeIn "_CodE"      
       Moveto [NOTA Codigo do Item     ] TypeIn "_CodI"    
       Moveto [NOTA Numero do Documento] TypeIn "_NumD"
       If PARAM="FATURAI" Or PARAM="FATURAC" 
          Then Moveto [NOTA Codigo do Documento] TypeIn "OF"
          Else Moveto [NOTA Serie do Documento ] TypeIn "_SerD"
               Moveto [NOTA Codigo do Documento] TypeIn "_CodD"
       EndIf
       Moveto [NOTA Item do Documento  ] TypeIn "_Item"
       Moveto [NOTA Numero do Pedido   ] TypeIn "_NPed"
       If PARAM="NOTAI" Or PARAM="FATURAI"
          Then Moveto [NOTA Item do Pedido] TypeIn "_ItemP"
       EndIf
       Moveto [NOTA Situacao           ] TypeIn "_Sit"
       Moveto [NOTA Atualiza Pedido    ] TypeIn "_Atua"
       Moveto [NOTA Quantidade         ] TypeIn "_Qtd"
       Do_it!
       ClearAll
       
  Case PARAM = "EXPED" : 
       {Ask} {Answer} 
       Moveto [Numero da OE          ] TypeIn "_OE"
       Moveto [Numero do Pedido      ] TypeIn "_NPed"
       Moveto [Codigo da Empresa     ] TypeIn "_CodE"
       Moveto [Situacao              ] TypeIn "_Sit"
       Moveto [Codigo do Item        ] TypeIn "_CodI"
       Moveto [Quantidade_Pedido     ] TypeIn "_qtdP"
       Moveto [Quantidade_Expedida   ] TypeIn "_qtdE"
       Moveto [Quantidade_Substituida] TypeIn "_qtdS"
       {Ask} TypeIn PED_CORRX Enter TypeIn "Fast Insert"
       Moveto [EXPED Codigo da Empresa  ] TypeIn "_CodE"               
       Moveto [EXPED Codigo do Item     ] TypeIn "_CodI"                  
       Moveto [EXPED Numero da OE       ] TypeIn "_OE"      
       Moveto [EXPED Numero do Pedido   ] TypeIn "_NPed"       
       Moveto [EXPED Situacao           ] TypeIn "_Sit"                      
       Moveto [EXPED Quantidade Expedida] TypeIn "_qtdE"
       Moveto [EXPED Quantidade Pedido  ] TypeIn "_qtdP"
       Moveto [EXPED Quantidade Subst   ] TypeIn "_qtdS"
       Do_it!
       ClearAll        
EndSwitch

EndProc ;Adiciona_Dados2()

;*******************************************************************************
;* Rotina para Verificar Linha                                                 *
;*******************************************************************************
Proc Verifica_Linha()
  
If NLINHA >= 46
   Then Print File ARQIMP "\f"
        Cabecalho()
EndIf

EndProc ;Verifica_Linha()

;*******************************************************************************
;* Rotina de ImpressÆo de Cabe‡alho                                            *
;*******************************************************************************
Proc Cabecalho()

If EMPRESA = ""
  Then ARQIMP = PrivDir()+"PED_ERRO.INI"
       If IsFile(ArqImp)
          Then Deleta_Arquivo(ARQIMP)
       EndIf
       PAG=0
       If Not IsAssigned(NOMEMPRESA)
          Then NOMEMPRESA=""
      EndIf
EndIf

NLINHA = 0
PAG    = PAG + 1

Print File ARQIMP CI_15CPP
Print File ARQIMP "\n\n"
Print File ARQIMP Spaces(2)+Fill("-",190) + "\n"
Print File ARQIMP Spaces(2)+Format("W152",NOMEMPRESA)+"Emissao: "+Format("D13",Today())+"-"+Format("W8",Time())+"  Pag: "+Format("W3,AR",StrVal(PAG))+"\n"
Print File ARQIMP Spaces(2)+Fill("-",190)+ "\n\n"
Print File ARQIMP Spaces(2)+Format("W190,AC","Conferencia de Pedidos Faturados de "+Format("D13",VSDGDTINI)+" ate "+Format("D13",VSDGDTFIM))+"\n"
Print File ARQIMP Spaces(2)+"* NAP (N„o Atualiza Pedido)"+"\n"
Print File ARQIMP Spaces(2)+"* C   (Nota/Fatura Cancelada)"+"\n"

If VSDGCODMODELO="02"
   Then
Print File ARQIMP Spaces(2)+"                               _______ PEDIDO ______  ________ NOTA/FATURA ________ "+
                            "___ EXPEDICAO ___                    "+"\n"
Print File ARQIMP Spaces(2)+"Pedido  Dt Emissao  Situacao       QtdPed     QtdFat  No.                Qtd  NAP C "+
                           "                  Ocorrencia de Erros"+"\n"
Print File ARQIMP Spaces(2)+"------  ----------  ---------- ---------- ----------  ----------- ----------  --- - "+
                            "------ ---------- ----------------------------------------------------------------------------------------"+"\n"
   Else 
Print File ARQIMP Spaces(2)+"                                                  _______ PEDIDO ______  ________ NOTA/FATURA ________ "
Print File ARQIMP           "___ EXPEDICAO ___"+"\n"
Print File ARQIMP Spaces(2)+"Item                                                  QtdPed     QtdFat  No.                Qtd  NAP C "
Print File ARQIMP           "No.           Qtd Ocorrencia de Erros"+"\n"
Print File ARQIMP Spaces(2)+"------------------------------------------------- ---------- ----------  ----------- ----------  --- - "
Print File ARQIMP           "------ ---------- -------------------------------------------------------------------"+"\n"      
Linha_Pedido()                            
EndIf        

NLINHA = NLINHA  + 13
IMPRIME_CABECALHO = False

EndProc ;Cabecalho()

;*******************************************************************************
;* Imprime Linha do Pedido                                                     *
;*******************************************************************************
Proc Linha_Pedido()

NLINHA = NLINHA  + 1
Print File ARQIMP Spaces(2)+CI_INEG+LINHA_PEDIDO+CI_FNEG+"\n"

EndProc ;Cabecalho()

;*******************************************************************************
;* Rotina p/ Carregar Variaveis de Trabalho                                   *
;*******************************************************************************
Proc Carrega_Variaveis()

;PEDIDO: Cabe‡a do Pedido
PED_CODIGO_EMPRESA    = [PEDIDO Codigo da Empresa ]
PED_NUMERO_PEDIDO     = [PEDIDO Numero do Pedido  ]
PED_ITEM_PEDIDO       = [PEDIDO Item do Pedido    ]
PED_CODIGO_ITEM       = [PEDIDO Codigo do Item    ]
PED_DATA_EMISSAO      = [PEDIDO Data de Emissao   ]
PED_SITUACAO          = [PEDIDO Situacao do Pedido]
PED_TOTAL_QUANTIDADE  = [PEDIDO Quantidade        ]
PED_TOTAL_QUANTIDADEF = [PEDIDO QuantidadeF       ]
PED_ERRO              = [PEDIDO Erro              ]
PED_NOTA_TOTAL_QTD    = [PEDIDO NOTA Quantidade   ]

;PEDIDO: Item do Pedido
PED_ITEM_QUANTIDADE   = [PEDIDO ITEM Quantidade   ]
PED_ITEM_QUANTIDADEF  = [PEDIDO ITEM QuantidadeF  ]
PED_ITEM_SITUACAO     = [PEDIDO ITEM Situacao     ]
PED_ITEM_ERRO         = [PEDIDO ITEM Erro         ]

EndProc ;Carrega_Variaveis()

;*******************************************************************************
;* Rotina de ImpressÆo                                                         *
;*******************************************************************************
Proc Imprimir()
Private TM1,TM2,AUX_SERIE,AUX_DOCTO

EMPRESA      = ""
PEDIDO       = ""
LINHA_PEDIDO = ""

View PED_CORRX ;Expedicao
View PED_CORRN ;Notas e Faturas
View PED_CORR
Scan
  Barra(NRecords(PED_CORR), RecNo())
  Aguarde("Aguarde a impressÆo... "+BARRA_STRING) 

  Carrega_Variaveis()

  If PEDIDO<>PED_NUMERO_PEDIDO
     Then If PEDIDO=""
             Then IMPRIME_CABECALHO=True
          EndIf   
          PEDIDO = PED_NUMERO_PEDIDO
          If VSDGCODMODELO<>"02"
             Then PEDIDO = PED_NUMERO_PEDIDO
                  GetRecord "\\Sistemas\\Vendas\\PedidoC" PEDIDO To REG_PEDIDO
                  LINHA_PEDIDO =           CI_INEG+"Pedido: "+CI_FNEG+Format("W6",REG_PEDIDO["Numero do Pedido"])+
                                 Spaces(3)+CI_INEG+"Cliente: "+CI_FNEG+Format("W20",REG_PEDIDO["Nome Fantasia EmitDest"])+
                                 Spaces(3)+CI_INEG+"Situacao: "+CI_FNEG+Format("W8",REG_PEDIDO["Situacao do Pedido"])+
                                 Spaces(3)+CI_INEG+"Emissao: "+CI_FNEG+Format("D13",REG_PEDIDO["Data de Emissao"])+
                                 Spaces(3)+CI_INEG+"Entrega: "+CI_FNEG+Format("D13",REG_PEDIDO["Data de Entrega"])
                         
                  If Not IMPRIME_CABECALHO
                     Then NLINHA = NLINHA + 1
                          Print File ARQIMP "\n"
                          Linha_Pedido()
                  Endif     
          EndIf                                         
  EndIf 

  If EMPRESA<>PED_CODIGO_EMPRESA
     Then If EMPRESA=""
             Then Cabecalho() 
          EndIf
          EMPRESA = PED_CODIGO_EMPRESA
  EndIf
  
  If VSDGCODMODELO="02"
     Then CONTADOR     = 0
          DynArray IMPRIME_LINHA[]
          If PED_ITEM_QUANTIDADEF=0 Then PED_ITEM_QUANTIDADEF = BlankNum() EndIf
          
          CONTADOR = CONTADOR + 1
          IMPRIME_LINHA[CONTADOR] = Spaces(2)+
                                    Format("W6",[PEDIDO Numero do Pedido])+Spaces(2)+
                                    Format("D13",[PEDIDO Data de Emissao])+Spaces(2)+                     
                                    Format("W10",[PEDIDO Situacao do Pedido])+Spaces(1)+                  
                                    Format("W10,AR",PED_ITEM_QUANTIDADE)+Spaces(1)+                      
                                    Format("W10,AR",PED_ITEM_QUANTIDADEF)+Spaces(2)  
          
          OCORRENCIA_NOTA = 0
          Moveto PED_CORRN
          Moveto [NOTA Codigo da Empresa]
          Locate PED_CODIGO_EMPRESA,PED_NUMERO_PEDIDO
          If RetVal
             Then While [NOTA Codigo da Empresa] = PED_CODIGO_EMPRESA And
                        [NOTA Numero do Pedido ] = PED_NUMERO_PEDIDO  
                    
                    AUX_ATUA = [NOTA Atualiza Pedido]
                    If AUX_ATUA="S"
                       Then AUX_ATUA = ""
                       Else AUX_ATUA = "S" ;Mostrando o usu rio que NAO ATUALIZA PEDIDO conforme legenda
                    EndIf
                    
                    AUX_SITUACAO = [NOTA Situacao]
                    If AUX_SITUACAO<>"C" And AUX_SITUACAO<>"S"
                       Then AUX_SITUACAO = ""
                       Else AUX_SITUACAO = "S" ;Mostrando o usu rio que NAO ATUALIZA PEDIDO conforme legenda
                    EndIf
                    
                    OCORRENCIA_NOTA = OCORRENCIA_NOTA + 1
                    Switch
                      Case OCORRENCIA_NOTA = 1 : IMPRIME_LINHA[CONTADOR] = IMPRIME_LINHA[CONTADOR] + 
                                                                           Format("W4,AL",[NOTA Codigo do Documento])+Spaces(1)+
                                                                           Format("W6,AL",[NOTA Numero do Documento])+Spaces(1)+
                                                                           Format("W10,EIC",[NOTA Quantidade])+Spaces(3)+
                                                                           Format("W3,AC",AUX_ATUA)+Format("W1",AUX_SITUACAO)+Spaces(1)
                    OtherWise                :   CONTADOR = CONTADOR + 1
                                                 IMPRIME_LINHA[CONTADOR] = Spaces(56)+
                                                                           Format("W4,AL",[NOTA Codigo do Documento])+Spaces(1)+
                                                                           Format("W6,AL",[NOTA Numero do Documento])+Spaces(1)+
                                                                           Format("W10,EIC",[NOTA Quantidade])+Spaces(3)+
                                                                           Format("W3,AC",AUX_ATUA)+Format("W1",AUX_SITUACAO)+Spaces(1)         
                    EndSwitch
                    Skip 
                    If Eot() Then QuitLoop EndIF
                  EndWhile     
             Else IMPRIME_LINHA[CONTADOR] = IMPRIME_LINHA[CONTADOR] + Spaces(30)   
          EndIf
          
          Moveto PED_CORRX
          Moveto [EXPED Codigo da Empresa]
          Locate PED_CODIGO_EMPRESA,PED_NUMERO_PEDIDO
          If RetVal
             Then CONTADOR=0
                  While [EXPED Codigo da Empresa] = PED_CODIGO_EMPRESA And
                        [EXPED Numero do Pedido ] = PED_NUMERO_PEDIDO   
                    
                    CONTADOR = CONTADOR+ 1 
                    If IsAssigned(IMPRIME_LINHA[CONTADOR])
                       Then IMPRIME_LINHA[CONTADOR] = IMPRIME_LINHA[CONTADOR] + Format("W6",[EXPED Numero da OE])+Spaces(1)+
                                                                                Format("W10",[EXPED Quantidade Expedida])
                       Else IMPRIME_LINHA[CONTADOR] = Spaces(86) + Format("W6",[EXPED Numero da OE])+Spaces(1)+
                                                                    Format("W10",[EXPED Quantidade Expedida])
                    EndIf 
                    Skip 
                    If Eot() Then QuitLoop EndIF
                  EndWhile     
          EndIf           
          Moveto PED_CORR
          
          For ii From 1 To DynArraySize(IMPRIME_LINHA)
            NLINHA = NLINHA + 1
            If ii=1
               Then Print File ARQIMP Format("W103",IMPRIME_LINHA[ii]) + Spaces(1) + Format("W88",PED_ERRO) + "\n"
               Else Print File ARQIMP IMPRIME_LINHA[ii]+"\n"
            EndIf   
            Verifica_Linha() 
          EndFor
          
     Else GetRecord "\\Sistemas\\Estoque\\Itens" PED_CODIGO_ITEM To REG_ITEM
          If Not RetVal
             Then Mensagem("Item "+PED_CODIGO_ITEM+" n„o localizado no cadastro de itens!")
                  Loop
          EndIf
          
          CONTADOR     = 0
          DynArray IMPRIME_LINHA[]
          If PED_ITEM_QUANTIDADEF=0 Then PED_ITEM_QUANTIDADEF = BlankNum() EndIf   
          
          CONTADOR = CONTADOR + 1
          IMPRIME_LINHA[CONTADOR] = Spaces(2)+
                                    Format("W7,AR",PED_ITEM_PEDIDO)+Spaces(1)+                                                 
                                    Format("W11",REG_ITEM["Codigo do Item"])+Format("W30",REG_ITEM["Descricao do Item"])+Spaces(1)+
                                    Format("W10,AR",PED_ITEM_QUANTIDADE)+Spaces(1)+                                                
                                    Format("W10,AR",PED_ITEM_QUANTIDADEF)+Spaces(2)                                                
          
          OCORRENCIA_ITEM = 0
          Moveto PED_CORRN
          Moveto [NOTA Codigo da Empresa]
          Locate PED_CODIGO_EMPRESA,PED_NUMERO_PEDIDO,PED_CODIGO_ITEM
          If RetVal
             Then While [NOTA Codigo da Empresa] = PED_CODIGO_EMPRESA And
                        [NOTA Numero do Pedido ] = PED_NUMERO_PEDIDO  And
                        [NOTA Codigo do Item   ] = PED_CODIGO_ITEM 
                    
                    AUX_ATUA = [NOTA Atualiza Pedido]
                    If AUX_ATUA="S"
                       Then AUX_ATUA = ""
                       Else AUX_ATUA = "S" ;Mostrando o usu rio que NAO ATUALIZA PEDIDO conforme legenda
                    EndIf
                    
                    AUX_SITUACAO = [NOTA Situacao]
                    If AUX_SITUACAO<>"C" And AUX_SITUACAO<>"S"
                       Then AUX_SITUACAO = ""
                       Else AUX_SITUACAO = "S" ;Mostrando o usu rio que NAO ATUALIZA PEDIDO conforme legenda
                    EndIf
                    
                    OCORRENCIA_ITEM = OCORRENCIA_ITEM + 1
                    Switch
                      Case OCORRENCIA_ITEM = 1 : IMPRIME_LINHA[CONTADOR] = IMPRIME_LINHA[CONTADOR] + 
                                                                           Format("W4,AL",[NOTA Codigo do Documento])+Spaces(1)+
                                                                           Format("W6,AL",[NOTA Numero do Documento])+Spaces(1)+
                                                                           Format("W10,EIC",[NOTA Quantidade])+Spaces(3)+
                                                                           Format("W3,AC",AUX_ATUA)+Format("W1",AUX_SITUACAO)+Spaces(1)
                    OtherWise                :   CONTADOR = CONTADOR + 1
                                                 IMPRIME_LINHA[CONTADOR] = Spaces(75)+
                                                                           Format("W4,AL",[NOTA Codigo do Documento])+Spaces(1)+
                                                                           Format("W6,AL",[NOTA Numero do Documento])+Spaces(1)+
                                                                           Format("W10,EIC",[NOTA Quantidade])+Spaces(3)+
                                                                           Format("W3,AC",AUX_ATUA)+Format("W1",AUX_SITUACAO)+Spaces(1)         
                    EndSwitch
                    Skip 
                    If Eot() Then QuitLoop EndIF
                  EndWhile     
             Else IMPRIME_LINHA[CONTADOR] = IMPRIME_LINHA[CONTADOR] + Spaces(30)   
          EndIf
          
          Moveto PED_CORRX
          Moveto [EXPED Codigo da Empresa]
          Locate PED_CODIGO_EMPRESA,PED_NUMERO_PEDIDO,PED_CODIGO_ITEM
          If RetVal
             Then CONTADOR=0
                  While [EXPED Codigo da Empresa] = PED_CODIGO_EMPRESA And
                        [EXPED Numero do Pedido ] = PED_NUMERO_PEDIDO  And
                        [EXPED Codigo do Item   ] = PED_CODIGO_ITEM 
                    
                    CONTADOR = CONTADOR+ 1 
                    If IsAssigned(IMPRIME_LINHA[CONTADOR])
                       Then IMPRIME_LINHA[CONTADOR] = IMPRIME_LINHA[CONTADOR] + Format("W6",[EXPED Numero da OE])+Spaces(1)+
                                                                                Format("W10",[EXPED Quantidade Expedida])
                       Else IMPRIME_LINHA[CONTADOR] = Spaces(105) + Format("W6",[EXPED Numero da OE])+Spaces(1)+
                                                                    Format("W10",[EXPED Quantidade Expedida])
                    EndIf 
                    Skip 
                    If Eot() Then QuitLoop EndIF
                  EndWhile
          EndIf           
          Moveto PED_CORR
          
          For ii From 1 To DynArraySize(IMPRIME_LINHA)
            NLINHA = NLINHA + 1
            If ii=1
               Then Print File ARQIMP Format("W122",IMPRIME_LINHA[ii]) + Spaces(1) + Format("W67",PED_ITEM_ERRO) + "\n"
               Else Print File ARQIMP IMPRIME_LINHA[ii]+"\n"
            EndIf   
            Verifica_Linha() 
          EndFor
  EndIf
EndScan
ClearAll

Release Vars PED_CODIGO_EMPRESA,PED_NUMERO_PEDIDO,PED_ITEM_PEDIDO,PED_CODIGO_ITEM,PED_DATA_EMISSAO,PED_SITUACAO,          
             PED_TOTAL_QUANTIDADE,PED_TOTAL_QUANTIDADEF,PED_ERRO,PED_NOTA_TOTAL_QTD,
             PED_ITEM_QUANTIDADE,PED_ITEM_QUANTIDADEF,PED_ITEM_SITUACAO,PED_ITEM_ERRO,        
         
             FAT_NUMERO_OF,FAT_NUMERO_PEDIDO,FAT_QUANTIDADE,FAT_ATUALIZA_PEDIDO,
             FAT_ITEM_NUMERO_OF,FAT_ITEM_NUMERO_PEDIDO,FAT_ITEM_QUANTIDADE,FAT_ITEM_ATUALIZA_PEDIDO, 

             NOTA_NUMERO_DOCUMENTO,NOTA_SERIE_DOCUMENTO,NOTA_NUMERO_PEDIDO,NOTA_QUANTIDADE,NOTA_ATUALIZA_PEDIDO, 
             NOTA_ITEM_NUMERO_DOCUMENTO,NOTA_ITEM_SERIE_DOCUMENTO,NOTA_ITEM_NUMERO_PEDIDO,NOTA_ITEM_QUANTIDADE,NOTA_ITEM_ATUALIZA_PEDIDO, 

            EXPED_NUMERO_OE,EXPED_QUANTIDADE_EXPEDIDA,EXPED_QUANTIDADE_PEDIDO,EXPED_QUANTIDADE_SUBSTITUIDA,
            TM1,TM2,AUX_SERIE,AUX_DOCTO
            
EndProc ;Imprimir()

;*******************************************************************************
;* Rotina para Verificar Itens Sortidos                                        *
;*******************************************************************************
Proc Verifica_Itens_Sortidos()
Private i

If SYS_CODIGO_CLIENTE="0222" Or
   SYS_CODIGO_CLIENTE="0232" Or
   SYS_CODIGO_CLIENTE="0079"
   Then For i From 1 To 2
          View PED_CORR
          Switch 
            Case i=1 : NR=NRecords(PED_CORRN)
                       Edit PED_CORRN
            Case i=2 : NR=NRecords(PED_CORRX)
                       Edit PED_CORRX
          EndSwitch
          Scan
            Barra(NR, RecNo())
            Aguarde("Aguarde, verificando itens sortidos "+BARRA_STRING)
            If i=1
               Then NOTA_EMPRESA = [NOTA Codigo da Empresa ] 
                    NOTA_PEDIDO  = [NOTA Numero do Pedido  ]
                    NOTA_ITEM    = [NOTA Codigo do Item    ]
               Else NOTA_EMPRESA = [EXPED Codigo da Empresa]
                    NOTA_PEDIDO  = [EXPED Numero do Pedido ]   
                    NOTA_ITEM    = [EXPED Codigo do Item   ]
            EndIf            
            GetRecord PED_CORR NOTA_EMPRESA,NOTA_PEDIDO,NOTA_ITEM To REG_ITEM
            If Not RetVal
               Then If ClienteUsaItemSortido()
                       Then CODIT=NOTA_ITEM
                            PegaItemSortido()
                            
                            GetRecord PED_CORR NOTA_EMPRESA,NOTA_PEDIDO,CODIT To REG_ITEM
                            If RetVal
                               Then If i=1
                                       Then [NOTA Codigo do Item~] = CODIT
                                       Else [EXPED Codigo do Item] = CODIT
                                    EndIf   
                            EndIf   
                    EndIf
            EndIf        
          EndScan
          Do_it!
          ClearAll
        EndFor  
EndIf

EndProc ;Verifica_Itens_Sortidos()

;*******************************************************************************
;* Rotina para Verificar as Inconsistˆncias nos Pedidos                        *
;*******************************************************************************
Proc Verificar_Inconsistencias()  

;---- Totaliza Quantidade e Quantidade Faturada por PEDIDO ---------------------  
{Ask} TypeIn PED_CORR Enter
Moveto [PEDIDO Codigo da Empresa ] Check
Moveto [PEDIDO Numero do Pedido  ] Check
Moveto [PEDIDO ITEM QuantidadeF  ] TypeIn "Calc Sum as PEDIDO ITEM QuantidadeF"
Moveto [PEDIDO ITEM Quantidade   ] TypeIn "Calc Sum as PEDIDO ITEM Quantidade"
Do_it!
Clearall
        
Tabela_Pedido = Adiciona_Indice_Temp("PEDIDO Codigo da Empresa,PEDIDO Numero do Pedido")        

;---- Totaliza Quantidade e Quantidade Faturada por PEDIDO/ITEM ----------------  
{Ask} TypeIn PED_CORR Enter
Moveto [PEDIDO Codigo da Empresa ] Check
Moveto [PEDIDO Numero do Pedido  ] Check
Moveto [PEDIDO Codigo do Item    ] Check
Moveto [PEDIDO ITEM QuantidadeF  ] TypeIn "Calc Sum as PEDIDO ITEM QuantidadeF"
Moveto [PEDIDO ITEM Quantidade   ] TypeIn "Calc Sum as PEDIDO ITEM Quantidade"
Do_it!
Clearall
        
Tabela_Pedido_Item = Adiciona_Indice_Temp("PEDIDO Codigo da Empresa,PEDIDO Numero do Pedido,PEDIDO Codigo do Item")        

;---- Totaliza Quantidade das Notas por PEDIDO ---------------------------------
{Ask} TypeIn PED_CORRN Enter
Moveto [NOTA Codigo da Empresa  ] Check
Moveto [NOTA Numero do Pedido   ] Check
Moveto [NOTA Item do Pedido     ]       TypeIn "Not Blank"
Moveto [NOTA Situacao           ]       TypeIn "Not C" 
Moveto [NOTA Atualiza Pedido    ]       TypeIn "S"
Moveto [NOTA Quantidade         ]       TypeIn "Calc Sum as NOTA Quantidade"
Do_it!
Clearall

Tabela_Nota = Adiciona_Indice_Temp("NOTA Codigo da Empresa,NOTA Numero do Pedido")

;---- Totaliza Quantidade das Notas por PEDIDO ---------------------------------
{Ask} TypeIn PED_CORRN Enter
Moveto [NOTA Codigo da Empresa  ] Check
Moveto [NOTA Numero do Pedido   ] Check
Moveto [NOTA Codigo do Item     ] Check
Moveto [NOTA Item do Pedido     ]       TypeIn "Not Blank"      
Moveto [NOTA Situacao           ]       TypeIn "Not C" 
Moveto [NOTA Atualiza Pedido    ]       TypeIn "S"
Moveto [NOTA Quantidade         ]       TypeIn "Calc Sum as NOTA Quantidade"
Do_it!
Clearall

Tabela_Nota_Item = Adiciona_Indice_Temp("NOTA Codigo da Empresa,NOTA Numero do Pedido,NOTA Codigo do Item")

;---- Totaliza Quantidade das Expedicoes por PEDIDO ----------------------------
{Ask} TypeIn PED_CORRX Enter
Moveto [EXPED Codigo da Empresa  ] Check
Moveto [EXPED Numero do Pedido   ] Check
Moveto [EXPED Codigo do Item     ] Check
Moveto [EXPED Quantidade Expedida]       TypeIn ">0, Calc Sum as EXPED Quantidade Expedida"
Do_it!
Clearall

Tabela_Expedicao_Item = Adiciona_Indice_Temp("EXPED Codigo da Empresa,EXPED Numero do Pedido,EXPED Codigo do Item")

If VSDGCODMODELO="01"
   Then Adiciona_Indice(PED_CORR,"PEDIDO Codigo da Empresa,PEDIDO Numero do Pedido,PEDIDO Codigo do Item")
   Else Adiciona_Indice(PED_CORR,"PEDIDO Codigo da Empresa,PEDIDO Numero do Pedido")
EndIf    

View Tabela_Nota
View Tabela_Nota_Item
View Tabela_Expedicao_Item
Edit PED_CORR
Scan
  PEDIDO_EMPRESA   = [PEDIDO Codigo da Empresa ]
  PEDIDO_PEDIDO    = [PEDIDO Numero do Pedido  ]
  PEDIDO_ITEM      = [PEDIDO Codigo do Item    ]
  PEDIDO_QTD       = [PEDIDO Quantidade        ]
  PEDIDO_QTDF      = [PEDIDO QuantidadeF       ]
  PEDIDO_ITEM_QTD  = [PEDIDO ITEM Quantidade   ]
  PEDIDO_ITEM_QTDF = [PEDIDO ITEM QuantidadeF  ]    
  PEDIDO_SITUACAO  = [PEDIDO Situacao do Pedido]
  
  Barra(NRecords(PED_CORR), RecNo())                                              
  Aguarde("Aguarde, analisando o pedido "+PEDIDO_PEDIDO+" "+BARRA_STRING)
  
  QTD_EXPEDICAO = BlankNum()
  GetRecord Tabela_Expedicao_Item PEDIDO_EMPRESA,PEDIDO_PEDIDO,PEDIDO_ITEM To REG_EXPEDICAO
  If RetVal 
     Then QTD_EXPEDICAO = REG_EXPEDICAO["EXPED Quantidade Expedida"]
  EndIf
  
  ACHOU_NOTA    = False
  NOTA_ITEM_QTD = BlankNum()
  GetRecord Tabela_Nota_Item PEDIDO_EMPRESA,PEDIDO_PEDIDO,PEDIDO_ITEM To REG_NOTA_ITEM
  If RetVal 
     Then ACHOU_NOTA    = True
          NOTA_ITEM_QTD = REG_NOTA_ITEM["NOTA Quantidade"]
  EndIf
  
  NOTA_QUANTIDADE = BlankNum()
  GetRecord Tabela_Nota PEDIDO_EMPRESA,PEDIDO_PEDIDO To REG_NOTA
  If RetVal 
     Then NOTA_QUANTIDADE = REG_NOTA["NOTA Quantidade"]
  EndIf
  
  PEDIDO_ITEM_QTD_TOTAL  = BlankNum()
  PEDIDO_ITEM_QTDF_TOTAL = BlankNum()
  GetRecord Tabela_Pedido PEDIDO_EMPRESA,PEDIDO_PEDIDO To REG_PEDIDO
  If RetVal 
     Then PEDIDO_ITEM_QTD_TOTAL  = REG_PEDIDO["PEDIDO ITEM Quantidade"]
          PEDIDO_ITEM_QTDF_TOTAL = REG_PEDIDO["PEDIDO ITEM QuantidadeF"]
  EndIf
  
  ;** ERRO POR ITEM  
  PEDIDO_ITEM_ERRO = ""
  Switch
    Case PEDIDO_ITEM_QTDF>0 And Not ACHOU_NOTA And QTD_EXPEDICAO<>BlankNum() :
         PEDIDO_ITEM_ERRO = "H  divergˆncia no(s) item(ns) deste pedido"
          
    Case PEDIDO_ITEM_QTDF>0 And Not ACHOU_NOTA : 
         PEDIDO_ITEM_ERRO = "H  divergˆncia no(s) item(ns) deste pedido"
         
    Case (PEDIDO_ITEM_QTDF = 0 Or PEDIDO_ITEM_QTDF=BlankNum()) And NOTA_ITEM_QTD > 0 :
         PEDIDO_ITEM_ERRO = "Quantidade Faturada Divergente"

    Case PEDIDO_ITEM_QTD < PEDIDO_ITEM_QTDF : 
         PEDIDO_ITEM_ERRO = "Item com Quantidade Faturada > Quantidade do Item do Pedido"
         
    Case PEDIDO_ITEM_QTD = NOTA_ITEM_QTD And PEDIDO_ITEM_QTD <> PEDIDO_ITEM_QTDF :
         PEDIDO_ITEM_ERRO = "Item FATURADO com quantidade faturada divergente"
                            
    Case NOTA_ITEM_QTD > PEDIDO_ITEM_QTD  :
         PEDIDO_ITEM_ERRO = "Quantidade da Nota difere da Quantidade do Pedido"
         
    Case PEDIDO_ITEM_QTDF<>NOTA_ITEM_QTD And NOTA_ITEM_QTD>0 : 
         PEDIDO_ITEM_ERRO = "Quantidade Faturada difere da Quantidade da Nota"
         
    Case PEDIDO_ITEM_QTDF<>NOTA_ITEM_QTD And PEDIDO_ITEM_QTDF>0  :
         PEDIDO_ITEM_ERRO = "Item com quantidade faturada divergente"
  EndSwitch
  If PEDIDO_ITEM_ERRO<>"" Then [PEDIDO ITEM Erro] = PEDIDO_ITEM_ERRO EndIf
  
  ;** ERRO POR PEDIDO
  
  PED_ERRO = ""
  Switch
    Case PEDIDO_QTD<>PEDIDO_ITEM_QTD_TOTAL :
         PED_ERRO = "Quantidade dos itens difere da quantidade do pedido"
         
    Case PEDIDO_QTDF<>PEDIDO_ITEM_QTDF_TOTAL :
         PED_ERRO = "Quantidade faturada difere da quantidade do pedido"
                   
    Case PEDIDO_QTD < PEDIDO_QTDF : 
         PED_ERRO = "Itens com Quantidade Faturada > Quantidade do Item do Pedido"
         
    Case PEDIDO_QTD=NOTA_QUANTIDADE And PEDIDO_QTD<>PEDIDO_QTDF : 
         PED_ERRO = "Pedido FATURADO com quantidade faturada divergente"
                            
    Case NOTA_QUANTIDADE > PEDIDO_QTDF :
         PED_ERRO = "Quantidade da Nota difere da Quantidade do Pedido"
         
    Case PEDIDO_QTDF<>NOTA_QUANTIDADE And NOTA_QUANTIDADE>0   :  
         PED_ERRO = "Quantidade Faturada difere da Quantidade da Nota"
         
    Case PEDIDO_QTDF<>NOTA_QUANTIDADE And PEDIDO_QTDF>0 :
         PED_ERRO = "Pedido com quantidade faturada divergente"
                
    Case PEDIDO_SITUACAO="ABERTO" And PEDIDO_QTD=PEDIDO_QTDF And PEDIDO_QTDF=NOTA_QUANTIDADE :
         PED_ERRO = "Pedido encontra FATURADO"
  EndSwitch
  If PED_ERRO<>"" Then [PEDIDO Erro] = PED_ERRO EndIf
EndScan
Do_It!
ClearAll

EndProc ;Verificar_Inconsistencias()

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

;---- Verifica a Ocorrencia de Erros -------------------------------------------
{Ask} TypeIn PED_CORR Enter 
Moveto [PEDIDO Codigo da Empresa] Check 
Moveto [PEDIDO Numero do Pedido ] Check
Moveto [PEDIDO ITEM Erro        ] TypeIn "Not Blank"
Do_it!
ClearAll

If IsEmpty("Answer")
   Then Mensagem("N„o h  erro nos itens do pedido "+VSDGPEDIDO+" a ser corrigidos!")
        Return
EndIf

{Ask} TypeIn PED_CORR Enter 
Moveto [PEDIDO Numero do Pedido] Check
Do_it!
ClearAll

Adiciona_Indice("Answer","PEDIDO Numero do Pedido")

{Ask} {Answer}
Moveto [PEDIDO Numero do Pedido] TypeIn "_Ped"
{Ask} {PedidoI}
Moveto [Numero do Pedido       ] TypeIn "_Ped"
Moveto [Quantidade Faturada    ] TypeIn "Changeto Blank"
Do_it!
ClearAll

If IsEmpty(Tabela_Nota_Item)
   Then Mensagem("N„o h  faturamento do pedido "+VSDGPEDIDO+"!")        
EndIf
    
;---- Faturamento --------------------------------------------------------------  
If Not IsEmpty(Tabela_Nota_Item)   
   Then ACHOU_ERRO=False
  
        View "PedidoI"
        View Tabela_Nota_Item
        Coedit PED_CORR
        Scan
          PED_CODIGO_EMPRESA    = [PEDIDO Codigo da Empresa ]
          PED_NUMERO_PEDIDO     = [PEDIDO Numero do Pedido  ]
          PED_CODIGO_ITEM       = [PEDIDO Codigo do Item    ]
          
          Barra(NRecords(PED_CORR), RecNo())                                              
          Aguarde("Aguarde, ajustando a quantidade do pedido "+PED_NUMERO_PEDIDO+" "+BARRA_STRING)
          
          NOTA_QUANTIDADE = BlankNum() 
          GetRecord Tabela_Nota_Item PED_CODIGO_EMPRESA,PED_NUMERO_PEDIDO,PED_CODIGO_ITEM To REG_NOTA_ITEM
          If RetVal
             Then NOTA_QUANTIDADE =  REG_NOTA_ITEM["NOTA Quantidade"]
          EndIf   
               
          Moveto "PedidoI"
          Moveto [Numero do Pedido]
          Locate PED_NUMERO_PEDIDO 
          If RetVal
             Then While [Numero do Pedido] = PED_NUMERO_PEDIDO
                    If [Codigo do Item] = PED_CODIGO_ITEM And [Quantidade]<>[Quantidade Faturada] 
                       Then If NOTA_QUANTIDADE > [Quantidade]
                               Then If Not ACHOU_ERRO Then ACHOU_ERRO=True EndIf
                                    [Quantidade Faturada] = [Quantidade]
                                    NOTA_QUANTIDADE = NOTA_QUANTIDADE - [Quantidade]  
                               Else If [Quantidade Faturada] <> NOTA_QUANTIDADE
                                       Then If Not ACHOU_ERRO Then ACHOU_ERRO=True EndIf
                                            [Quantidade Faturada] = NOTA_QUANTIDADE
                                    EndIf
                                    QuitLoop                           
                            EndIf    
                    EndIf
                    Skip 
                    If Eot() Then QuitLoop EndIf
                  EndWhile  
                  UnLockRecord
           EndIf
           Moveto PED_CORR    
        EndSCan
        Do_It!
        CleaRAll
   Else If IsBlank(VSDGPEDIDO)
           Then Return
           Else PED_NUMERO_PEDIDO = VSDGPEDIDO
        EndIf        
EndIf

;---- Corrigir a Situa‡Æo do Pedido --------------------------------------------
WC_NUMPED=0
WC_PEDFAT=0

View "PedidoI"
Scan for [Numero do Pedido] = PED_NUMERO_PEDIDO
  WC_NUMPED=WC_NUMPED+1
  If [Quantidade Faturada]>=[Quantidade]
     Then WC_PEDFAT=WC_PEDFAT+1
  EndIf
EndScan
CleaRall

If WC_NUMPED>0
   Then CoEdit "PedidoC"
        Moveto [Numero do Pedido]
        Locate PED_NUMERO_PEDIDO
        If RetVal
           Then If WC_NUMPED=WC_PEDFAT
                   Then [Situacao do Pedido   ]="FATURADO"
                   Else [Situacao do Pedido   ]="ABERTO"   
                        If SYS_CODIGO_CLIENTE = "0377" Or
                           SYS_CODIGO_CLIENTE = "0345" Or
                           SYS_CODIGO_CLIENTE = "0388" Or
                           SYS_CODIGO_CLIENTE = "0427" 
                           Then [Situacao do Pedido]="FATURADO"   
                        EndIf                         
                EndIf
        EndIf
        Do_it!
        ClearAll
EndIf

Mensagem("As poss¡veis corre‡”es para o pedido "+VSDGPEDIDO+" foram aplicadas!")
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_DTINI"         : Campo="TG_PEDIDO"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPERRO"        : 
                                            If Not IsBlank(VSDGPEDIDO)
                                               Then Campo="TG_PEDIDO"
                                               Else Campo="TG_DTFIM"
                                            EndIf   
            Case Campo="TG_OPAJUSTA"      : Campo="TG_OPERRO"
            Case Campo="TG_CODMODELO"     : Campo="TG_OPAJUSTA"
            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_DTINI"
                         If Not IsBlank(VSDGPEDIDO)
                            Then Campo="TG_CODMODELO"
                                 VSDGDTINI            = BlankDate()
                                 VSDGDTFIM            = BlankDate()
                         EndIf          
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"         : Campo="TG_OPERRO"
                    Case Campo="TG_OPERRO"        : Campo="TG_OPAJUSTA"
                    Case Campo="TG_OPAJUSTA"      : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"     : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

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

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog()

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

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01  Anal¡tico")
ModeloRelatoriosAdd("02  Sint‚tico")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

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

VSDGEMPRESA          = ""
VSDGNOMEMP           = ""
VSDGPEDIDO           = ""
VSDGNOMPEDIDO        = ""
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

ModeloRelatoriosCarregaLista()

While True
  ShowDialog "Conferˆncia de 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 14 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 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 05,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,16 "at‚" For "TG_DTFIM"
    Accept @ 05,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

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

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

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

    Pushbutton @ 10,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 10,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 numero do pedido!")
                                           Loop         
                                   EndIf
                                   VSDGCODMODELO="02"
    Case Not IsBlank(VSDGPEDIDO) : VSDGDTINI = BlankDate()
                                   VSDGDTFIM = BlankDate()
    Case VSDGDTINI=BlankDate()   : Mensagem("Informe a Data Inicial!")
                                   Loop                               
  EndSwitch
  
  If CheckTG_OPAJUSTA[1]
     Then VSDGCODMODELO = "01"
  EndIf        
  
  ;If VSDGDTFIM - VSDGDTINI > 90
  ;   Then Mensagem("O per¡odo m ximo para pesquisa ‚ de 90 dias!")
  ;        Loop
  ;EndIf   

  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 = VSDGDTINI
          VSDGDTINC = REG_PED["Data_Inclusao"]
  EndIf

  CORRIGI_ERRO = False
  If Verifica_Pedido()
     Then Mensagem("Ser  exibido um relat¢rio de conferˆncia de pedidos!")
          Impressao_Orientacao="Paisagem"
          Imprimir()
          If IsFile(ARQIMP)
             Then ImpriArq(ARQIMP)
                  Deleta_Arquivo(ARQIMP)
          EndIf
          
          If CheckTG_OPAJUSTA[1]
             Then ;If IsAssigned(MSG_ERRO) And MSG_ERRO>0
                  ;   Then COR_MENSAGEM="ALERTA"
                  ;        MSG =       Completa("H   itens  do pedido "+VSDGPEDIDO+" com quantidade faturada em notas",60," ")+"//"
                  ;        MSG = MSG + Completa("maior que a quantidade dos itens deste pedido.",60," ")+"//"
                  ;        MSG = MSG + Completa("Deseja continuar a corrigir este pedido "+VSDGPEDIDO+"?",60," ")
                  ;        ConfGeral(MSG)
                  ;   Else ConfGeral("Deseja corrigir o pedido "+VSDGPEDIDO+"?")
                  ;EndIf   
                  ConfGeral("Deseja corrigir o pedido "+VSDGPEDIDO+"?")
                  If Ok="S"
                     Then If Not BloqueiaTabela()
                             Then Loop
                          EndIf
                          Correcao_Pedido()
                          DesbloqueiaTabela()
                  EndIf   
          EndIf
     Else Mensagem("N„o h  registros a processar!")
  EndIf
  If IsAssigned(PED_CORR)              And IsTable(PED_CORR)              Then Delete PED_CORR              EndIf
  If IsAssigned(PED_CORRN)             And IsTable(PED_CORRN)             Then Delete PED_CORRN             EndIf
  If IsAssigned(PED_CORRX)             And IsTable(PED_CORRX)             Then Delete PED_CORRX             EndIf
  If IsAssigned(Tabela_Pedido)         And IsTable(Tabela_Pedido)         Then Delete Tabela_Pedido         EndIf
  If IsAssigned(Tabela_Pedido_Item)    And IsTable(Tabela_Pedido_Item)    Then Delete Tabela_Pedido_Item    EndIf
  If IsAssigned(Tabela_Nota)           And IsTable(Tabela_Nota)           Then Delete Tabela_Nota           EndIf
  If IsAssigned(Tabela_Nota_Item)      And IsTable(Tabela_Nota_Item)      Then Delete Tabela_Nota_Item      EndIf
  If IsAssigned(Tabela_Expedicao_Item) And IsTable(Tabela_Expedicao_Item) Then Delete Tabela_Expedicao_Item EndIf   
EndWhile

Release Vars All
Release Procs All
