;** RO_0003B *******************************************************************
;** Imprime a Digitacao do Romaneio                         ** TRICOSTURA **   *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido  em: 28/04/2005 por Davi Pereira Carrano
;Alterado em     : 20/04/2006 por Nikolas M. Mateus
;Motivo Alteracao: Alteracao endereco
;Alterado em     : 16/06/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Inclusao ImpriArq()
;Alterado em     : 19/06/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes MODELO
;Ultima Alteracao: 14/08/2007 por Antonio Marcelo Alves
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 10/02/2010 por Cleber Alves
;Motivo Alteracao: Imprimir codigo da tabela de preco
;Ultima Alteracao: 19/02/2010 por Cleber Alves
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 29/04/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Quebra de Descricao
;Ultima Alteracao: 12/05/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Quebra de Descricao
;Ultima Alteracao: 30/07/2010 por Bruno Carvalho  
;Motivo Alteracao: Altera‡Æo para 132 Colunas
;Ultima Alteracao: 20/08/2010 por Nikolas
;Motivo Alteracao: Alteracao: ajustes quantidade de casas do campo quantidade
;Ultima Alteracao: 17/05/2011 por Nikolas
;Motivo Alteracao: Alteracao: inversao impressao peso bruno pelo peso liquido..
;Ultima Alteracao: 22/08/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ Folha A4, Checa_Linha() e 2 Romaneios por p gina 
;Ultima Alteracao: 24/08/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes para imprimir 2 vias de Romaneio  

;*******************************************************************************
;* Rotina para Impressao do Relatorio                                          *
;*******************************************************************************
Proc Cabecalho()

;************************** IMPRESSAO DO CABECALHO *****************************
If Not IsAssigned(NOMEMPRESA)
   Then NOMEMPRESA=""
EndIf
Moveto "Faturac"
Print File ARQIMP chr(27)+chr(67)+chr(33) ;Imprime 33 Linhas por pagina
Print File ARQIMP CI_10CPP
Print File ARQIMP CI_8LPP

;Print File ARQIMP "\n"
Print File ARQIMP "                *** TRICOSTURA ACABAMENTOS EM RETILINEA ***" +"\n"
Print File ARQIMP "   R. Inacio Gomes, 01 - B. Padre Liberio - Divinopolis - Tel.:(37) 3221-7680"+"\n"
Print File ARQIMP "______________________________________________________________________________"+"\n\n"

Print File ARQIMP "\027E"
Moveto [Numero do Pedido]
If Busca_Lookup("Numero do Pedido",[FaturaC->Numero do Pedido],"SM")
   Then PDORIGEM = REG_BUSCA_LOOKUP["Numero Pedido Origem"]
   Else PDORIGEM = ""
EndIf
UnLockRecord

;Print File ARQIMP "Operacao: "
;Print File ARQIMP Chr(27)+Chr(71)
;Print File ARQIMP ""+Format("W4,AL",[Codigo da Destinacao])+ Format("W36,AL",[Descricao da Destinacao])
Print File ARQIMP "PED.: N§ "+Format("W6,AL",[NUMERO DO PEDIDO])+Spaces(2)
Print File ARQIMP "TP.: "+Format("W6,AL",[CODIGO DA TABELA])
Print File ARQIMP Spaces(18)+"Emissao: "+Format("D13",[Data de Emissao])+"\n"
Print File ARQIMP "PED/Original.: "+Format("W6,AL",PDORIGEM)+Spaces(2)+"ROM.: N§: "+Format("W06.3,AL",NOTAFISC)
Print File ARQIMP Spaces(5)+"Impress„o: "+Format("D13",Today())+"\n"

;Print File ARQIMP "Imp.: "+Format("D10",Today())+"-"+Time()+ "\n"
Print File ARQIMP "Cliente : "+Format("W05,AL",[Codigo])+Format("W46,AL",[Razao Social])+"\n"
Print File ARQIMP "\027F"

Print File ARQIMP CI_10CPP
Print File ARQIMP CI_8LPP
Print File ARQIMP "CNPJ/CPF: "+Format("W18,AL",[CGC])
Print File ARQIMP "  Inscricao: "+Format("W15,AL",[IE])+Spaces(02)+Format("W10,AL",[CEP])+"\n"
Print File ARQIMP "End.: "+Format("W40,AL",[Endereco])
Print File ARQIMP Spaces(02)+Format("W15,AL",[Bairro])+"\n"
Print File ARQIMP "Cidade: "+Format("W20,AL",[Cidade])
Print File ARQIMP " - "+Format("W2,AL",[UF])
Print File ARQIMP Spaces(02)+"Telefone.: "+Format("W15,AL",[Telefone])+"\n"

;Print File ARQIMP "CEP: "+Format("W20,AL",[CEP])+"\n"
Print File ARQIMP "Vendedor: "+Format("W05,AL",[Codigo do Representante])
Print File ARQIMP Format("W25,AL",[Nome Fantasia Represent])+"\n"
Print File ARQIMP "\015"         ;Imprime 17 Caracteres por polegada

;********************* IMPRESSAO DOS ITENS ********************************
;Print File ARQIMP "-------------------------------------------------------------------------------------------------------------------------"+"\n"
;Print File ARQIMP Spaces(02)+"Item                                             Modelo/Cor                       Un  Quantidade  Unitario        Total"+"\n"
;Print File ARQIMP "-------------------------------------------------------------------------------------------------------------------------"+"\n"

Print File ARQIMP "--------------------------------------------------------------------------------------------------------------------------------------"+"\n"
Print File ARQIMP "Item                                                                     Modelo/Cor                 Un     Qtde    Unitario      Total"+"\n"
Print File ARQIMP "--------------------------------------------------------------------------------------------------------------------------------------"+"\n"

EndProc ;(Cabecalho)
                
;*******************************************************************************
;* Rotina para Impressao do Relatorio . Itens                                  *
;*******************************************************************************
Proc Itens()

Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
QUANT    = 0
TOT      = 0
CONTADOR = 0
NITENS   = 0
                                                               
While [Numero da OF]=[FaturaC->Numero da OF]
   Itemdes = SubStr([Descricao do Item],52,51) ;35
   Numero_de_Linhas=Int(Len(Itemdes)/51)       ;31
   Contador_Linhas=Numero_de_Linhas
   If Contador_Linhas = 0 Then Contador_Linhas = 1 EndIf
   If (Len(Itemdes)/51)>Numero_de_Linhas       ;31
      Then Numero_de_Linhas=Numero_de_Linhas+1
           Contador_Linhas=Contador_Linhas+1
   EndIf 
   
   Checa_Linha(Contador_Linhas)
    
   LINHA_ITEM = Spaces(02)+Format("W03,AL",StrVal([Item da OF]))                   
   LINHA_ITEM = LINHA_ITEM + Spaces(01)+Format("W11,AL",[Codigo do Item])                          
   LINHA_ITEM = LINHA_ITEM + Format("W30,AL",SubStr([Descricao do Item],1,30))+Format("W21,AL",SubStr([Descricao do Item],36,57))  
    
   pos_inicial=58                              ;35
   For nl From 1 To Numero_de_Linhas
       If nl=1 
          then LINHA_ITEM = LINHA_ITEM + "\n" +Spaces(17)
       EndIf
   LINHA_ITEM = LINHA_ITEM + Format("W51,AL",SubStr([Descricao do Item],pos_inicial,51)) 
   If nl<Numero_de_Linhas
      Then Print File ARQIMP LINHA_ITEM + "\n"
           LINHA_ITEM = Spaces(17)
           pos_inicial=pos_inicial+51
   EndIf
   EndFor

   LINHA_ITEM = LINHA_ITEM + Spaces(05)+Format("W04,AL",Substr([Descricao do Item],31,5))
   LINHA_ITEM = LINHA_ITEM + Spaces(01)+Format("W20,AL",[Descricao da Cor_Tecido])
   LINHA_ITEM = LINHA_ITEM + Spaces(01)+Format("W03,Al",[Unidade Fiscal])
   If [Quantidade]-Int([Quantidade])>0
      Then LINHA_ITEM = LINHA_ITEM + Spaces(01)+Format("W10.3,EIC",[Quantidade])
      Else LINHA_ITEM = LINHA_ITEM + Spaces(01)+Format("W10.3,EIC",[Quantidade])
   EndIf
   LINHA_ITEM = LINHA_ITEM + Spaces(01)+Format("W11.5,EIC",[Preco Unitario])
   LINHA_ITEM = LINHA_ITEM + Format("W10.2,EIC",[Preco Total])

   Print File ARQIMP LINHA_ITEM + "\n" 
  
   TOT   = TOT + [Preco Total]
   QUANT = QUANT+[Quantidade]
   Skip
   If EOT() Then QuitLoop EndIf
   CONTADOR = CONTADOR + 1
   NITENS   = NITENS + 1
EndWhile

For ITEM From CONTADOR+1 To 12 ;PARAM_NITENS-6
    Print File ARQIMP "\n"
EndFor

EndProc ;(Itens)

;*******************************************************************************
;* Rotina para Impressao do Relatorio . Rodap‚                                 *
;*******************************************************************************
Proc Rodape(QUEBRAFORM)
Private QUEBRAFORM

If QUEBRAFORM
   Then Print File ARQIMP Spaces(82)+"Total Mercadorias:       ******   "+Spaces(9)+"   ******* "+"\n"  
   Else Print File ARQIMP Spaces(82)+"Total Mercadorias: "+Format("W12.03,EIC",QUANT)+Spaces(12)+Format("W10.2,EIC",TOT)+"\n"  ;68
EndIf
   
Print File ARQIMP "\n"
Print File ARQIMP "_____________________________________________________________________________________________________________________________________"+"\n" 
Print File ARQIMP "   Mercadorias      Desconto      Liquido         Frete         Total"+"\n"
                  ;123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789 

;********************* IMPRESSAO DOS TOTAIS **************************
Moveto "FaturaC"
If QUEBRAFORM
   Then Print File ARQIMP Spaces(3)+"  *********  "
        Print File ARQIMP Spaces(1)+"  *********  "
        Print File ARQIMP Spaces(1)+"  ********  "
        Print File ARQIMP Spaces(1)+"  *********  "
        Print File ARQIMP Spaces(1)+"  *********  "+"\n" 
   Else ;Print File ARQIMP Spaces(1)+Format("W06.2,EIC",[Taxa de Desconto])+"%..."
        Print File ARQIMP Spaces(1)+Format("W13.2,EIC",[Valor Mercadoria])
        Print File ARQIMP Spaces(1)+Format("W13.2,EIC",[Valor Desconto])
        Print File ARQIMP Spaces(1)+Format("W12.2,EIC",[Valor Mercadoria Liquido])
        Print File ARQIMP Spaces(1)+Format("W13.2,EIC",[Valor do Frete])
        Print File ARQIMP Spaces(1)+Format("W13.2,EIC",[Valor Nota Fiscal])+"\n"
EndIf        

If QUEBRAFORM
   Then Print File ARQIMP Spaces(3)+"  *********  "
        Print File ARQIMP Spaces(1)+"  *********  "
        Print File ARQIMP Spaces(1)+"  ********  "
        Print File ARQIMP Spaces(1)+"  *********  "
        Print File ARQIMP Spaces(1)+"  *********  "+"\n" 
   Else Print File ARQIMP Spaces(1)+Format("W13.2,EIC",[Valor Mercadoria])
        Print File ARQIMP Spaces(1)+Format("W13.2,EIC",[Valor Desconto])
        Print File ARQIMP Spaces(1)+Format("W12.2,EIC",[Valor Mercadoria Liquido])
        Print File ARQIMP Spaces(1)+Format("W13.2,EIC",[Valor do Frete])
        Print File ARQIMP Spaces(1)+Format("W13.2,EIC",[Valor Nota Fiscal])+"\n" 
EndIf   

Print File ARQIMP "_____________________________________________________________________________________________________________________________________"+"\n"
Print File ARQIMP "Cond. Pagto: "+[Descricao CondPagto]+"\n"

;********************* IMPRESSAO DOS VENCIMENTOS **************************
Print File ARQIMP "\015"
Print File ARQIMP "\027E"+"Vencimentos: "

Array DATA[9]
Array VALOR[9]
K=0
KV=0
Moveto "FaturaV"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  K=K+1
  DATA[K]  = Format("D13",[Data])
  VALOR[K] = Format("W10.2,AR,EIC",[Valor])
  If K=9
     Then VENC()
          K=0
  EndIf
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile
If K>0
   Then VENC()
EndIf

Moveto "FaturaC"
Print File ARQIMP "______________________________________________________________________________"+"\n"     

Print File ARQIMP "\027F"
Print File ARQIMP "\015"         ;Imprime 17 Caracteres por polegada
Print File ARQIMP CI_8LPP
Print File ARQIMP "Transport..: "+Format("W41,AL",[Razao Social Transport])
Print File ARQIMP "Volumes:"+Format("W5,AL",[Numero de Volumes])
Print File ARQIMP "  Peso Bruto:"+Format("W11.3,EIC,AL",[Peso Bruto])
Print File ARQIMP "  Peso Liq.:"+Format("W11.3,EIC,AL",[Peso Liquido])+"\n"

Print File ARQIMP "\018"
Print File ARQIMP "\027E"
Print File ARQIMP "OBS.: "
Print File ARQIMP Format("W70,AL",SubStr([Observacao na Nota Fiscal],01,70))+"\n"

Print File ARQIMP "\027F"                        

;************************* IMPRESSAO DO RODAPE *********************************
;Print File ARQIMP Spaces(20)+"   /   /     -                              " + "\n"
;Print File ARQIMP Spaces(20)+"--------------------------------------------" + "\n"
;Print File ARQIMP Spaces(20)+"              Data e Assinatura"+"\n"
Print File ARQIMP CI_6LPP
Print File ARQIMP CI_10CPP

If PARAM_NITENS < 24 Or NITENS <= 12
   Then If PAGINA=1
           Then Print File ARQIMP "\n\n\n\n\n"
                PAGINA=2
           Else Print File ARQIMP "\f"
                PAGINA=1
        
        EndIf   
   Else Print File ARQIMP "\f"
EndIf                     

EndProc ;(Rodape)

;*******************************************************************************
;* Rotina de Impressao dos Vencimentos                                         *
;*******************************************************************************
Proc VENC()
If KV>0
   Then Print File ARQIMP Spaces(13)
EndIf
For I From 1 to K
  Print File ARQIMP DATA[I]+Spaces(02)
EndFor
Print File ARQIMP "\n"
Print File ARQIMP Spaces(13)
For I From 1 to K
  Print File ARQIMP VALOR[I]+Spaces(02)
EndFor
Print File ARQIMP "\n\n"

KV=KV+1
EndProc

;*******************************************************************************
;* Checa linha na area de impressao dos itens                                  *
;*******************************************************************************
Proc Checa_Linha(Nl)
private nl

If (CONTADOR+nl)>(PARAM_NITENS)
   Then RodaPe(True)
        Cabecalho()
        CONTADOR=nl
        Moveto "FaturaI"
   Else CONTADOR=CONTADOR+nl
EndIf
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
ArqImp =PrivDir()+"Ro_0003b.Txt"

If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

Moveto "Faturac"
Switch
  Case [Numero de Parcelas] <=  9                                : CONTA_LINHA_VENC = 2
  Case [Numero de Parcelas] >= 10 And [Numero de Parcelas] <= 18 : CONTA_LINHA_VENC = 4
  Case [Numero de Parcelas] >= 18 And [Numero de Parcelas] <= 27 : CONTA_LINHA_VENC = 6
EndSwitch  

                                               ; Quantidade de Linhas de Itens por Pagina
PARAM_NITENS=110                               ; Para impressÆo em formul rio razao: PARAM_NITENS = 23
PARAM_NITENS= PARAM_NITENS - CONTA_LINHA_VENC
PAGINA=1

For Vias From 1 To 2
  AGUARDE("Imprimindo Romaneio -> "+NOTAFISC)
    
  Cabecalho()
  Itens()
  Rodape(False) 
  
EndFor       

Print File ARQIMP CI_10CPP
Print File ARQIMP CI_6LPP
ImpriArq(ARQIMP)

Release Vars VALOR,DATA
Release Procs IMPFAT,VENC
LIMPAGUARDE()