;** Rm_0103 ********************************************************************
;*  Acerto Program‡Æo/Produ‡Æo                                                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 16/05/2013 por Bruno Carvalho
;Ultima Alteracao: 24/05/2013 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo para Modo Coedi‡Æo 
;Ultima Alteracao: 11/07/2013 por Bruno Carvalho
;Motivo Alteracao: Script alterado buscando informa‡äes da Produ‡Æo e nÆo da Programa‡Æo
;                  e impressÆo no pr¢prio script com dois modelos.
;Ultima Alteracao: 18/07/2013 por Bruno Carvalho
;Motivo Alteracao: Add fun‡Æo Rodape() p/ quando nÆo existir credito/debito
;Ultima Alteracao: 01/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes CLIENTE
;Ultima Alteracao: 23/10/2013 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo do filtro "Destinat rio" 
;Ultima Alteracao: 11/12/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 18/12/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Seleciona()
;Ultima Alteracao: 24/04/2014 por Luis Gustavo
;Motivo Alteracao: Retirado a proc Rodape() da Proc Relacao_Sintetica()
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog TG_DESTINAT
;Ultima Alteracao: 27/01/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes TG_REFERENCIA

;*******************************************************************************
;* Atribuindo valor para numero de linhas por pagina                           *
;*******************************************************************************
NUM_LINHA_PAG = 33
                                          
;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Seleciona()
ClearAll

;**** Produ‡Æo **************************************
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] Example "ITEM"
Moveto [Referencia            ] TypeIn "~VSDGREFERENCIA.."
Moveto [Codigo da Marca       ] Check TypeIn "~VSDGMARCA.."
Moveto [Descricao da Marca    ] Check
{Ask} {Rfacc}
Moveto [Numero_Producao       ] Example "num"
Moveto [Numero_Programacao    ] Check
Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Nome Fantasia Empresa ] Check
Moveto [Data_Producao         ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Moveto [Codigo                ] Check TypeIn "~VSDGDESTINAT.."
Moveto [Razao Social          ] Check
Moveto [Destino_Producao      ] Check
If VSDGOPDEST="INTERNO + FACCAO"
   Then TypeIn "INTERNO Or FACCAO"
   Else TypeIn "~VSDGOPDEST" 
EndIf

{Ask} {RfacRI} 
Moveto [Codigo do Item        ] Check Example "ITEM"
Moveto [Numero_Producao       ] Check Example "num"
Moveto [Referencia            ] Check
Moveto [Descricao do Item     ] Check
Moveto [Unidade Fiscal        ] Check
Moveto [Quantidade Programada ] Check
Moveto [Quantidade Produzida  ] Check
Moveto [Custo Unitario        ] Check
Moveto [Preco Total           ] Check
Do_It!
ClearAll

{Ask} {Answer} TypeIn "Fast"
Moveto [Quantidade Programada ] TypeIn "Changeto Blank"
Do_It!
ClearAll

Tabela=Cria_Temp(PrivDir())
Rename "Answer" Tabela

;**** Programa‡Æo ***********************************
{Ask} TypeIn Tabela Enter
Moveto [Numero_Programacao    ] Example "num"
Moveto [Codigo do Item        ] Example "codi"
{Ask} {PfacRI} 
Moveto [Numero_Programacao    ] Check Example "num"
Moveto [Codigo do Item        ] Check Example "codi"
Moveto [Quantidade Programada ] Check
Do_It!
ClearAll

{Ask} {Answer} 
Moveto [Numero_Programacao    ] Example "num"
Moveto [Quantidade Programada ] Example "Qtd"
Moveto [Codigo do Item        ] Example "CodI"
{Ask} TypeIn Tabela Enter
Moveto [Numero_Programacao    ] Example "num"
Moveto [Codigo do Item        ] Example "CodI"
Moveto [Quantidade Programada ] TypeIn "Changeto _Qtd"
Do_It!
ClearAll

;{Ask} TypeIn Tabela Enter Check Enter
;Moveto [Quantidade Programada  ] TypeIn "Calc Sum as Quantidade Programada"
;Moveto [Quantidade Produzida   ] TypeIn "Calc Sum as Quantidade Produzida"
;Moveto [Preco Total            ] TypeIn "Calc Sum as Preco Total"
;Do_It!
;ClearAll

If Not IsEmpty(Tabela)
   Then {Ask} {\\Sistemas\\Estoque\\Itens} 
        Moveto [Referencia       ] Example "Ref"
        Moveto [Descricao do Item] Example "Des"
        Moveto [Tipo do Item     ] TypeIn "D"
        {Ask} TypeIn Tabela Enter 
        Moveto [Referencia       ] Example "Ref"
        Moveto [Descricao do Item] TypeIn "Changeto _Des"       
        Do_It!
        ClearAll
EndIf

{Ask} TypeIn Tabela Enter Check
Moveto [Codigo             ] Example "Cod"
{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo             ] Example "Cod"
Moveto [CGC                ] Check
Do_It!
ClearAll

Rename "Answer" Tabela

{Ask} TypeIn Tabela Enter CheckPlus
Moveto [Codigo             ] Example "Cod" TypeIn "!"
{Ask} {\\Sistemas\\Cadastro\\DestObs}
Moveto [Codigo             ] Example "Cod"
Moveto [Observacoes        ] Check
Do_It!
ClearAll

;**** Em 11.12.2013 -> Para agrupar os itens ****
;{Ask} {Answer} Check
;Moveto [Numero_Programacao   ]  
;Moveto [Codigo da Empresa    ] 
;Moveto [Nome Fantasia Empresa] 
;Moveto [Data_Producao        ] Check
;Moveto [Destino_Producao     ] 
;Moveto [Codigo               ] 
;Moveto [Razao Social         ] 
;Moveto [Numero_Producao      ] Check
;Moveto [Codigo do Item       ] 
;Moveto [Referencia           ] 
;Moveto [Descricao do Item    ] 
;Moveto [Quantidade Programada] Check TypeIn "Calc Sum as Quantidade Programada" 
;Moveto [Quantidade Produzida ] Check TypeIn "Calc Sum as Quantidade Produzida" 
;Moveto [Unidade Fiscal       ] 
;Moveto [Custo Unitario       ]
;Moveto [Preco Total          ] Check TypeIn "Calc Sum as Preco Total" 
;Moveto [Codigo da Marca      ] 
;Moveto [Descricao da Marca   ] 
;Moveto [CGC                  ] 
;;;Moveto [Observacoes          ] Check
;Do_It!
;ClearAll

Rename "Answer" Tabela

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina Ajusta Dados                                                         *
;*******************************************************************************
Proc Ajusta_Dados()

;*** Contas a Pagar ************************************************************ 
If IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos") 
   Then {Ask} TypeIn Tabela Enter  
        Moveto [Codigo da Empresa       ] Example "Empr"
        Moveto [Codigo                  ] Example "CodT"           
        {Ask} {\\Sistemas\\Ctapag\\Titulos}
        Moveto [Codigo da Empresa       ] Check Example "Empr"
        Moveto [Nome Fantasia Empresa   ] Check
        Moveto [Numero do Documento     ] Check
        Moveto [Serie do Documento      ] Check
        Moveto [Codigo do Documento     ] Check
        Moveto [Tipo do Documento       ] Check        
        Moveto [Data de Emissao         ] Check 
        Moveto [Codigo do Emitente      ] Check Example "CodT ,as CodigoC"
        Moveto [Nome Fantasia EmitDest  ] Check TypeIn "as NomeC"
        Moveto [Razao Social            ] Check   
        Moveto [Saldo do Documento      ] Check TypeIn "> 0.01 ,as Valor" 
        Do_It!         
        ClearAll
        
        If Not IsEmpty("Answer")
          Then Adiciona_Dados("CTAPAG")
        EndIf  
EndIf               

;*** Contas a Receber ********************************************************** 
If IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic") 
   Then {Ask} TypeIn Tabela Enter  
        Moveto [Codigo da Empresa       ] Example "Empr"
        Moveto [Codigo                  ] Example "CodT"           
        {Ask} {\\Sistemas\\Ctarec\\Duplic}
        Moveto [Codigo da Empresa       ] Check Example "Empr"
        Moveto [Nome Fantasia Empresa   ] Check
        Moveto [Numero do Documento     ] Check
        Moveto [Serie do Documento      ] Check
        Moveto [Codigo do Documento     ] Check
        Moveto [Tipo do Documento       ] Check        
        Moveto [Data de Emissao         ] Check         
        Moveto [Codigo do Destinatario  ] Check Example "CodT ,as CodigoC"
        Moveto [Nome Fantasia EmitDest  ] Check TypeIn "as NomeC"
        Moveto [Razao Social            ] Check   
        Moveto [Saldo do Documento      ] Check TypeIn "> 0.01 ,as Valor" 
        Do_It!         
        ClearAll        
                              
        If Not IsEmpty("Answer")
          Then Adiciona_Dados("CTAREC")
        EndIf      
EnDIf

EndProc ;Ajusta_Dados()

;*******************************************************************************
;* Rotina Ajusta Dados                                                         *
;*******************************************************************************
Proc Adiciona_Dados(PARAM)
Private PARAM
ClearAll

Switch
  Case PARAM="CTAPAG" : PARAM="Credito"  
  Case PARAM="CTAREC" : PARAM="Debito"          
EndSwitch   

{Ask} {Answer}
Moveto [Codigo da Empresa       ] Example "Empre"
Moveto [Nome Fantasia Empresa   ] Example "NFEmp"
Moveto [Numero do Documento     ] Example "Docto"
Moveto [Serie do Documento      ] Example "Serie"
Moveto [Codigo do Documento     ] Example "CodD" 
Moveto [Tipo do Documento       ] Example "TipD" 
Moveto [Data de Emissao         ] Example "DataE"
Moveto [CodigoC                 ] Example "CC"
Moveto [NomeC                   ] Example "NC"
Moveto [Razao Social            ] Example "RazS"
Moveto [Valor                   ] Example "Valor"

{Ask} TypeIn Tabela2 Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa       ] Example "Empre"
Moveto [Nome Fantasia Empresa   ] Example "NFEmp"
Moveto [Numero do Documento     ] Example "Docto"
Moveto [Serie do Documento      ] Example "Serie"
Moveto [Codigo do Documento     ] Example "CodD" 
Moveto [Tipo do Documento       ] Example "TipD" 
Moveto [Data de Emissao         ] Example "DataE"
Moveto [CodigoC                 ] Example "CC"
Moveto [NomeC                   ] Example "NC"
Moveto [Razao Social            ] Example "RazS"
Moveto [Valor                   ] Example "Valor"
Moveto [Tipo                    ] TyPeIn "~PARAM"
Do_It!
ClearAll

EndProc ;Adiciona_Dados()

;*******************************************************************************
;* Rotina p/ Cabecalho                                                         *
;*******************************************************************************
Proc Observacao()

If VSDGOPRELANALSINT="1"
   Then OBS=""
        If SubStr([Observacoes],1,97)<>""
           Then Linha=Linha+1
                Print File ARQIMP "\027E"+"   Observacoes: "+"\027F"+SubStr([Observacoes],1,97)+"\n"
        EndIf
        
        If SubStr([Observacoes],98,97)<>""
           Then Linha=Linha+1
                Print File ARQIMP         "                "+SubStr([Observacoes],98,97)+"\n"
        EndIf
        
        If SubStr([Observacoes],195,97)<>""
           Then Linha=Linha+1
                Print File ARQIMP         "                "+SubStr([Observacoes],195,97)+"\n"
        EndIf
        
        Print File ARQIMP "\n"
   Else OBS=""
        If SubStr([Observacoes],1,97)<>""
           Then OBS=SubStr([Observacoes],1,97)
        EndIf   
EndIf   
   
EndProc ;Observacao() 

;*******************************************************************************
;* Rotina p/ Totalizar Registros                                               *
;*******************************************************************************
Proc Totalizador(PARAM)
Private PARAM
      
If VSDGOPRELANALSINT="1"
   Then Switch
          Case PARAM="DESTINATARIO" :
               ;**** Totalizando o Destinatario ******************************************
               Print File ARQIMP Spaces(38)+"Total Destinatario..."+Format("W8,EIC",DES_QTD_PROG) +Spaces(1)
               Print File ARQIMP Format("W8,EIC",DES_QTD_PROD) +Spaces(1)
               Print File ARQIMP Format("W10,EIC",DES_QTD_PRGD)+Spaces(14)
               Print File ARQIMP Format("W12.2,EIC",DES_PRE_TOTA)+"\n\n"  
          Case PARAM="EMPRESA" :
               ;**** Totalizando a Empresa ***********************************************
               If SYS_CODIGO_CLIENTE<>"0266"
                  Then ;**** Cacharrel pediu para retirar o totalizador em 11.12.2013 ****
                       Print File ARQIMP "\n"
                       Print File ARQIMP Spaces(38)+"     Total Empresa..."+Format("W8,EIC",QTD_PROG) +Spaces(1)
                       Print File ARQIMP Format("W8,EIC",QTD_PROD) +Spaces(1)
                       Print File ARQIMP Format("W10,EIC",QTD_PRGD)+Spaces(14)
                       Print File ARQIMP Format("W12.2,EIC",PRE_TOTA)+"\n\n"
                  Else Print File ARQIMP "\n\n" ;;; Adicionado em 11.12.2013
               EndIf   
        EndSwitch
   Else Print File ARQIMP "\n"
        Print File ARQIMP "                                       ------------  ------------  ------------  ------------"+"\n"
        Print File ARQIMP Spaces(18)+"Total por Empresa... "+Format("W12.2,EIC",GERAL_TOTP)+Spaces(02)+Format("W12.2,EIC",GERAL_TOTC)+
                          Spaces(02)+Format("W12.2,EIC",GERAL_TOTD)+Spaces(02)+Format("W12.2,EIC",GERAL)+"\n"
EndIf   
EndProc ;Totalizador()

;*******************************************************************************
;* Rotina p/ Cabecalho                                                         *
;*******************************************************************************
Proc Cabecalho()

pag=pag+1

Print File ARQIMP CI_15CPP
Print File ARQIMP CI_8LPP
Print File ARQIMP "\n\n"

Print File ARQIMP "  "+Fill("-",130)+"\n"
Print File ARQIMP "  "+COMPLETA(NOMEMPRESA,37," ")

Print File ARQIMP Format("W93,AR","Emissao.: "+AlinhM(LTrim(Format("D13",Today())),10)+"-"+AlinhM(LTrim(Time()),8)+"  Pag.: "+Format("W4,EIC",pag))+"\n"
Print File ARQIMP "  "+Fill("-",130)+"\n\n"

Print File ARQIMP Format("W130,AC","Acerto Producao/Programacao de "+StrVal(VSDGDTINI)+" ate "+StrVal(VSDGDTFIM))+"\n"
Print File ARQIMP Format("W130,AC",VSDGOPDEST)+"\n\n"
                                         
If VSDGOPRELANALSINT="1"
   Then Linha=13
        Print File ARQIMP "                                                           "+Fill(Chr(196),8)+" Quantidade "+Fill(Chr(196),8)+"\n"
        Print File ARQIMP "  Prog.  Data       Ref.  Item                          Un (A)Prog. (B)Prod. (A-B)Saldo   (C)Vr.Un.    (B*C)Total"+"\n"
        Print File ARQIMP "  ------ ---------- ----- ----------------------------- -- -------- -------- ----------  ----------  ------------"+"\n"
   Else Linha=12
        Print File ARQIMP "  Destinatario                         (A)Vr. Prod.   (B) Credito    (C) Debito  (A+B-C)Total  Observacao"+"\n"
        Print File ARQIMP "  -----------------------------------  ------------  ------------  ------------  ------------  -------------------------------------"+"\n"   
EndIf
              
Print File ARQIMP "\027E"+"       Empresa: "+"\027F"+VSDGEMPRESA+" "+VSDGNOMEMP+"\027F"+"\n"

EndProc   ; (Cabecalho)

;*******************************************************************************
;* Rotina para ImpressÆo Sintetica                                             *
;*******************************************************************************
Proc Relacao_Sintetica()

DESTINATARIO = "*****"      
CODEMP       = "*****"   
CONT_CDA     = 1
pag          = 0
Contador     = 0

GERAL_TOTP = 0
GERAL_TOTC = 0
GERAL_TOTD = 0
GERAL      = 0

If Not IsAssigned(NOMEMPRESA) Then NOMEMPRESA="" EndIf

Cabecalho()

;**** Totalizado para Empresa ****
PRE_TOTA=0

;**** Totalizado para Destinatario ****
DES_PRE_TOTA=0

Print File ARQIMP "\n"

NR=NRecords(Tabela)

Moveto Tabela
Scan 
  Contador = Contador + 1
  ;*** Se futuramente liberar para mais de uma empresa ************************* 
  If CODEMP="*****"
     Then CODEMP=[Codigo da Empresa]
  EndIf   
  
  If (CODEMP<>[Codigo da Empresa] And CODEMP<>"*****") 
     Then Totalizador("EMPRESA")
          Linha = Linha + 1

          PRE_TOTA=0

          Print File ARQIMP "\f"
          Cabecalho()
          CODEMP=[Codigo da Empresa]
  EndIf  
   
  If DESTINATARIO<>[Codigo] ;And DESTINATARIO<>"*****"
     Then If DESTINATARIO<>"*****"
             Then Linha        = Linha + 1 
                  TOTP         = DES_PRE_TOTA
                  DES_PRE_TOTA = 0 
                  
                  ;---- Em 24.04.2014 por Luis Gustavo -------------------------
                  Cred_Deb_Ad()
                  ;If Not Cred_Deb_Ad()
                  ;   Then Rodape()
                  ;EndIf
                  Observacao()                  
                  
                  GERAL_TOTP = GERAL_TOTP + TOTP
                  GERAL_TOTC = GERAL_TOTC + TOTC
                  GERAL_TOTD = GERAL_TOTD + TOTD
                  GERAL      = GERAL      + (TOTP+TOTC-TOTD)

                  Print File ARQIMP Spaces(2)+CLIENTE+Spaces(02)+Format("W12.2,EIC",TOTP)+Spaces(02)+
                                    Format("W12.2,EIC",TOTC)+Spaces(02)+Format("W12.2,EIC",TOTD) +Spaces(02)+
                                    Format("W12.2,EIC",TOTP+TOTC-TOTD)+Spaces(02)+Format("W37",OBS)+"\n" 
          EndIf
          DESTINATARIO=[Codigo]
          CLIENTE     =[Codigo]+" "+Format("W30",[Razao Social])     
  EndIf

  PRE_TOTA = PRE_TOTA + ([Custo Unitario]*[Quantidade Produzida])                     
  DES_PRE_TOTA = DES_PRE_TOTA + ([Custo Unitario]*[Quantidade Produzida])       

  If Linha >= NUM_LINHA_PAG     
     Then Print File ARQIMP "\f"
          Cabecalho()
  EndIf    

  If NR=Contador
     Then Linha        = Linha + 3 
         
          If Linha >= NUM_LINHA_PAG     
             Then Print File ARQIMP "\f"
                  Cabecalho()
          EndIf           
          
          TOTP         = DES_PRE_TOTA
          
          If Not Cred_Deb_Ad()
             Then Rodape()
          EndIf
          Observacao()
          
          GERAL_TOTP = GERAL_TOTP + TOTP
          GERAL_TOTC = GERAL_TOTC + TOTC
          GERAL_TOTD = GERAL_TOTD + TOTD
          GERAL      = GERAL      + (TOTP+TOTC-TOTD)
                            
          Print File ARQIMP Spaces(2)+CLIENTE+Spaces(02)+Format("W12.2,EIC",TOTP)+Spaces(02)+
                            Format("W12.2,EIC",TOTC)+Spaces(02)+Format("W12.2,EIC",TOTD) +Spaces(02)+
                            Format("W12.2,EIC",TOTP+TOTC-TOTD)+Spaces(02)+Format("W37",OBS)+"\n"
          
          Totalizador("EMPRESA")                  
     Else If Linha >= NUM_LINHA_PAG     
             Then Print File ARQIMP "\f"
                  Cabecalho()
          EndIf                 
  EndIf

EndScan
ClearAll

EndProc   ;Relacao_Sintetica() 

;*******************************************************************************
;* Rotina para ImpressÆo Analitica                                             *
;*******************************************************************************
Proc Relacao_Analitica()

COD_ITEM     = "*****"
PROGRAMACAO  = "*****"
DESTINATARIO = "*****"      
CODEMP       = "*****"   
DESTIN       = "*****"
CONT_CDA     = 1
pag          = 0
Contador     = 0

If Not IsAssigned(NOMEMPRESA) Then NOMEMPRESA="" EndIf

Cabecalho()

;**** Totalizado para Empresa ****
QTD_PROG=0
QTD_PROD=0
QTD_PRGD=0
PRE_TOTA=0

;**** Totalizado para Destinatario ****
DES_QTD_PROG=0
DES_QTD_PROD=0
DES_QTD_PRGD=0
DES_PRE_TOTA=0

NR=NRecords(Tabela)
      
Moveto Tabela
Scan 
  Contador = Contador + 1
  ;*** Se futuramente liberar para mais de uma empresa ************************* 
  If CODEMP="*****"
     Then CODEMP=[Codigo da Empresa]
  EndIf   
  
  If (CODEMP<>[Codigo da Empresa] And CODEMP<>"*****") 
     Then Totalizador("EMPRESA")
          Linha = Linha + 1            
          
          QTD_PROG=0
          QTD_PROD=0
          QTD_PRGD=0
          PRE_TOTA=0
                  
          Print File ARQIMP "\f"
          Cabecalho()
          CODEMP=[Codigo da Empresa]
  EndIf  
                               
  If DESTINATARIO<>[Codigo]
     Then If DESTINATARIO<>"*****"              
             Then CLIENTE=[Razao Social]
                  Totalizador("DESTINATARIO")    

                  Linha = Linha + 1  
                  
                  TOTP=DES_PRE_TOTA
                  
                  DES_QTD_PROG=0
                  DES_QTD_PROD=0
                  DES_QTD_PRGD=0
                  DES_PRE_TOTA=0 
                  
                  If Not Cred_Deb_Ad()
                     Then Rodape()
                  EndIf   
                  Print File ARQIMP "\f"
                  Cabecalho()                   
          EndIf
          DESTINATARIO=[Codigo]
          CLIENTE     =[Razao Social]
          
          Print File ARQIMP "\n"
          Print File ARQIMP "\027E"+"  Destinatario: "+"\027F"+[Codigo]+" "+[Razao Social]+"\027E"+"    CPF: "+"\027F"+[CGC]+"\027F"+"\n"
          Print File ARQIMP "\n"                                                        
          Observacao()
  EndIf  
  If (DESTIN<>[Destino_Producao]) And (DESTIN<>"*****")
     Then Print File ARQIMP "\027E"+"       Destino: "+"\027F"+[Destino_Producao]+"\027F"+"\n\n"
          DESTIN = [Destino_Producao] 
          Linha = Linha + 1
  EndIf 
                                                                      
  If PROGRAMACAO<>[Numero_Programacao] Or COD_ITEM<>[Codigo do Item]
     Then COD_ITEM    = [Codigo do Item] 
          PROGRAMACAO = [Numero_Programacao]
          QPROG       = [Quantidade Programada]
          QPROD       = [Quantidade Produzida]
     Else QPROG       = QPROG - QPROD
          QPROD       = [Quantidade Produzida] 
  EndIf   
                                       
  Print File ARQIMP Spaces(2)
  Print File ARQIMP Format("W6,AL",[Numero_Producao])+Spaces(1)   
  Print File ARQIMP Format("D13",[Data_Producao])+Spaces(1)  
  Print File ARQIMP Format("W5,AL",[Referencia])+Spaces(1)
  Print File ARQIMP Format("W29,AL",[Descricao do Item])+Spaces(1)
  Print File ARQIMP Format("W2,AL",[Unidade Fiscal])+Spaces(1)
  Print File ARQIMP Format("W8,AR",QPROG)+Spaces(1)
  Print File ARQIMP Format("W8,AR",QPROD)+Spaces(1)
  Print File ARQIMP Format("W10,AR",QPROG-QPROD)+Spaces(2)
  Print File ARQIMP Format("W10.2,EIC",[Custo Unitario])+Spaces(2)
  Print File ARQIMP Format("W12.2,EIC",[Custo Unitario]*QPROD)+"\n"
              
  QTD_PROG = QTD_PROG + QPROG         
  QTD_PROD = QTD_PROD + QPROD
  QTD_PRGD = QTD_PRGD + (QPROG-QPROD)           
  PRE_TOTA = PRE_TOTA + ([Custo Unitario]*QPROD)            

  DES_QTD_PROG = DES_QTD_PROG + QPROG          
  DES_QTD_PROD = DES_QTD_PROD + QPROD
  DES_QTD_PRGD = DES_QTD_PRGD + (QPROG-QPROD)           
  DES_PRE_TOTA = DES_PRE_TOTA + ([Custo Unitario]*QPROD)       

  Linha = Linha + 1
  If Linha >= NUM_LINHA_PAG
     Then Print File ARQIMP "\f"
          Cabecalho()
  EndIf   
  If Contador = NR
     Then Totalizador("DESTINATARIO") 
          TOTP=DES_PRE_TOTA
          If Not Cred_Deb_Ad()
             Then Rodape()
          EndIf   
          Totalizador("EMPRESA")
  EndIf
EndScan
ClearAll

EndProc   ;Relacao_Analitica() 

;*******************************************************************************
;* Rotina Imprimir Credito/Debito/Adiantamento                                 *
;*******************************************************************************
Proc Debito()

If TITD="" 
   Then Print File ARQIMP "\n"
        Print File ARQIMP "\027E"+"  ->       Debito:"+"\027F"+"\n" 
        TITD="Debito"
        Linha = Linha + 2
EndIf
Print File ARQIMP "  "+Format("W4",[Tipo do Documento])+" "+Format("W6",[Numero do Documento])+Spaces(2)
Print File ARQIMP ""+Format("D13",[Data de Emissao])+Spaces(2)
Print File ARQIMP ""+Format("W12.2,EIC",[Valor])+"\n"
TOTD = TOTD + [Valor]

Linha = Linha + 1
If Linha >= NUM_LINHA_PAG
   Then Print File ARQIMP "\f"
        Cabecalho()
        TITD=""
EndIf  

EndProc ;Debito()

;*******************************************************************************
;* Rotina Imprimir Credito/Debito/Adiantamento                                 *
;*******************************************************************************
Proc Credito()

If TITC="" 
   Then Print File ARQIMP "\n"
        Print File ARQIMP "\027E"+"  ->      Credito:"+"\027F"+"\n" 
        TITC="Credito"
        Linha = Linha + 2
EndIf  
Print File ARQIMP "  "+Format("W4",[Tipo do Documento])+" "+Format("W6",[Numero do Documento])+Spaces(2)
Print File ARQIMP ""+Format("D13",[Data de Emissao])+Spaces(2)
Print File ARQIMP ""+Format("W12.2,EIC",[Valor])+"\n"
TOTC = TOTC + [Valor]

Linha = Linha + 1
If Linha >= NUM_LINHA_PAG
   Then Print File ARQIMP "\f"
        Cabecalho()
        TITC=""
EndIf

EndProc ;Credito()        
        
;*******************************************************************************
;* Rotina Imprimir Rodap‚ personalizado caso nÆo tenha credito/debito          *
;*******************************************************************************       
Proc Rodape()        
       
Linha = Linha + 8
       
NEG="\027E"                                  
NOR="\027F"          
        
Print File ARQIMP "\n\n" 
Print File ARQIMP " "+Fill("=",112)+"\n"                   
Print File ARQIMP NEG+"  "+NOR+" Total Producao = "+Format("W12.2,EIC",TOTP)+"\n\n"
Print File ARQIMP Spaces(65)+Format("W48,AC",Fill(Chr(196),Len(CLIENTE)+10))+"\n"
        
Print File ARQIMP Spaces(65)+Format("W48,AC",CLIENTE)+"\n" 
Print File ARQIMP " "+Fill("=",112)+"\n"        
        
EndProc ;Rodape()        
        
;*******************************************************************************
;* Rotina Imprimir Credito/Debito/Adiantamento                                 *
;*******************************************************************************
Proc Cred_Deb_Ad()

TITC = ""
TITD = ""

TOTC = 0
TOTD = 0

Sort Tabela2 On "CodigoC","Tipo"

Moveto [CodigoC]
Locate DESTINATARIO
If Not RetVal 
   Then Moveto Tabela
        Return False 
EndIf

FAZ_ROTINA1=False
While [CodigoC]=DESTINATARIO
  If [Tipo]="Credito"
     Then FAZ_ROTINA1=True
          QuitLoop
  EndIf        
  Skip 
  If Eot() Then QuitLoop EndIf
EndWhile

If FAZ_ROTINA1
   Then ;**** Credito ********************************************************** 
        While [Tipo]="Credito" And [CodigoC]=DESTINATARIO And CODEMP=[Codigo da Empresa]       
          If VSDGOPRELANALSINT="1"
             Then Credito()
             Else TOTC = TOTC + [Valor]
          EndIf 
          Skip
          If Eot() Then QuitLoop EndIf
        EndWhile
EndIf

FAZ_ROTINA2=False

Home
Moveto [CodigoC]
Locate DESTINATARIO
If RetVal 
   Then While [CodigoC]=DESTINATARIO
          If [Tipo]="Debito"
             Then FAZ_ROTINA2=True
                  QuitLoop
          EndIf        
          Skip 
          If Eot() Then QuitLoop EndIf
        EndWhile
EndIf

If FAZ_ROTINA2
   Then ;**** Debito ***********************************************************   
        While [Tipo]="Debito" And [CodigoC]=DESTINATARIO And CODEMP=[Codigo da Empresa]
          If VSDGOPRELANALSINT="1"
             Then Debito()
             Else TOTD = TOTD + [Valor]
          EndIf 
          Skip 
          If Eot() Then QuitLoop EndIf
        EndWhile
EndIf

If Not FAZ_ROTINA1 And Not FAZ_ROTINA2
   Then Moveto Tabela
        Return False
EndIf        

If VSDGOPRELANALSINT="1"
   Then ;**** Totalizador ******************************************************
        Linha = Linha + 8 
        If Linha >= NUM_LINHA_PAG
           Then Print File ARQIMP "\f"
                Cabecalho()
        EndIf   
        
        NEG="\027E"                                  
        NOR="\027F"              
        
        Moveto Tabela
        
        Print File ARQIMP "\n\n" 
        Print File ARQIMP " "+Fill("=",112)+"\n"                   
        Print File ARQIMP NEG+"  (P)"+NOR+" Total Producao = "+Format("W12.2,EIC",TOTP)+"\n"
        Print File ARQIMP NEG+"  (C)"+NOR+" Total Credito  = "+Format("W12.2,EIC",TOTC)+"\n"
        Print File ARQIMP NEG+"  (D)"+NOR+" Total Debito   = "+Format("W12.2,EIC",TOTD)+Spaces(30)+Format("W48,AC",Fill(Chr(196),Len(CLIENTE)+10))+"\n"
        
        Print File ARQIMP "  TOTAL "+NEG+"(P)"+NOR+"+"+NEG+"(C)"+NOR+"-"+NEG+"(D)"+NOR+" = "
        Print File ARQIMP Format("W13.2,EIC",(TOTP + TOTC - TOTD))+Spaces(30)+Format("W48,AC",CLIENTE)+"\n" 
        Print File ARQIMP " "+Fill("=",112)+"\n"
  Else Moveto Tabela       
EndIf

Return True

EndProc ;Cred_Deb_Ad()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp = True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
          If Campo="TG_OPDEST"
             Then Seleciona_Opcoes("Op‡”es de Desinat rio","7,15")
          EndIf

     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_OPDEST"        : Campo="TG_EMPRESA"
            Case Campo="TG_DESTINAT"      : Campo="TG_OPDEST"
            Case Campo="TG_MARCA"         : Campo="TG_DESTINAT"
            Case Campo="TG_REFERENCIA"    : Campo="TG_MARCA"
            Case Campo="TG_DTINI"         : Campo="TG_REFERENCIA"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPRELANALSINT" : Campo="TG_DTFIM"
            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_OPDEST"
                    Case Campo="TG_OPDEST"     :
                         VSDGOPDEST=ControlValue("TG_OPDEST")
                         If IsBlank(VSDGOPDEST) 
                            Then Campo="TG_OPDEST" 
                            Else If Not Checa_Opcoes("Op‡”es de Desinat rio",VSDGOPDEST)
                                   Then Mensagem("Destino inv lido !")
                                        Campo="TG_OPDEST"
                                   Else If Not Isblank(VSDGOPDEST) 
                                           Then If Not IsBlank(VSDGOPDEST)
                                                   Then Campo="TG_DESTINAT"
                                                EndIf           
                                        EndIf
                                EndIf
                         EndIf  
                    Case Campo="TG_DESTINAT"      : Campo="TG_MARCA" 
                    Case Campo="TG_MARCA"         : Campo="TG_REFERENCIA"
                    Case Campo="TG_REFERENCIA"    : Campo="TG_DTINI"        
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"         : Campo="TG_OPRELANALSINT" 
                    Case Campo="TG_OPRELANALSINT" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
     MSG_CAMPO=""
  Case Campo="TG_OPDEST":
     TECLA="F1=Op‡”es  "
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
SYS_VALOR()
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf

CLIENTE = ""
LimpAguarde()

ArqImp=PrivDir()+"RM_0103.TXT"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

VSDGEMPRESA     = ""
VSDGOPDT        = "T"
VSDGDESTINAT    = ""
VSDGMARCA       = ""
VSDGREFERENCIA  = ""
VSDGOPDEST      = ""
VSDGDTINI       = BlankDate()
VSDGDTFIM       = BlankDate()

Coedit "P_DESTI"
Monta_Opcoes("Op‡”es de Desinat rio","INTERNO + FACCAO") 
Do_It!
ClearAll   

While True
  ShowDialog "Acerto Programa‡„o/Produ‡„o" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 17 Width 54

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 01,09 Width 26 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 02,00 "Op‡”es Destinat rio" For "TG_OPDEST"
    Accept @ 03,01 Width 34 "A31"  Picture "!*!" Tag "TG_OPDEST" To VSDGOPDEST

    Label  @ 04,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 05,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 05,09 Width 26 "A22" Picture "!*!" Tag "TG_NOMCLI" To VSDGNOMDEST
 
    Label  @ 06,00 "Marca"  For "TG_MARCA"
    Accept @ 07,01 Width 07 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 07,09 Width 26 "A22" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
   
    Label  @ 06,36 "Referˆncia"  For "TG_REFERENCIA"
    Accept @ 07,37 Width 14 "A20" Picture "!*!" Tag "TG_REFERENCIA"     To VSDGREFERENCIA  

    Label  @ 08,00 "Per¡odo Referente" For "TG_DTINI"
    Label  @ 09,00 "de" For "TG_DTINI"
    Accept @ 09,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,17 "at‚" For "TG_DTFIM"
    Accept @ 09,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 10,00 "Tipo" For "TG_OPRELANALSINT"
    Accept @ 11,01 Width 05 "A1"  Picture "1,2" Tag "TG_OPRELANALSINT" To VSDGOPRELANALSINT
    Accept @ 11,07 Width 28 "A25"  Picture "!*!" Tag "TG_NOMOPRELANALSINT" To VSDGNOMOPRELANALSINT

    Pushbutton @ 13,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 13,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If VSDGOPDT="D" And VSDGDTFIM=BlankDate()
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Processando Dados")

  Tabela=Cria_Temp(PrivDir())
  Seleciona()
 
  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar !")
          If IsTable(Tabela)
             Then Delete Tabela
          EndIf  
  EndIf        
 
  Tabela2=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\RM_0033" Tabela2 

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Ajusta_Dados()
  EndWhile 
                        
  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          If IsTable(Tabela)
             Then Delete Tabela
          EndIf
          
          If IsTable(Tabela2)
             Then Delete Tabela2
          EndIf
          Loop
  EndIf

  AGUARDE("Aguarde, gerando o relat¢rio")     
          
  View Tabela
  View Tabela2
  
  If VSDGOPRELANALSINT="1"
     Then Relacao_Analitica()
     Else Relacao_Sintetica()
  EndIf   
 
  ImpriArq(ARQIMP)

  If IsTable(Tabela)
     Then Delete Tabela
  EndIf
  
  If IsTable(Tabela2)
     Then Delete Tabela2
  EndIf
    
  If IsTable("Answer")
     Then Delete "Answer"
  EndIf   

EndWhile
ClearAll
Release Vars All
Release Procs All
