;** RO_0319 ********************************************************************
;** Imprime a Digitacao do Romaneio                                ** GM **    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 16/08/2012 por Bruno Carvalho
;Alterado      em: 21/08/2012 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo "Codigo do Item -> Codigo Fornecedor"
;Alterado      em: 24/08/2012 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo no layout da impressÆo conforme modelo do cliente
;Alterado      em: 01/10/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ impressao em folha inteira e layout
;Ultima Alteracao: 17/10/2012 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes p/ impressao Frete, Forma Pgto 
;Ultima Alteracao: 11/11/2014 por Andrey Fillipe                           
;Motivo Alteracao: Ajustes p/ impressao Numero de paginas e Continua na proxima pagina          
;Ultima Alteracao: 17/11/2014 por Luis Gustavo                          
;Motivo Alteracao: Ajustes p/ impressao dos totais e vencimentos na ultima pagina 
;Ultima Alteracao: 27/11/2014 por Andrey Fillipe                           
;Motivo Alteracao: Retirado impressao "Continua na proxima pagina"                          
;Ultima Alteracao: 27/09/2016 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes VOlumes,Peso e vencimentos      
;Ultima Alteracao: 23/12/2016 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes descricao complementar          
;Ultima Alteracao: 28/12/2016 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes LINHAS ITENS+SEPARADOR          
;Ultima Alteracao: 30/12/2016 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes numero de linhas          
;Ultima Alteracao: 30/18/2017 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes observacoes          
;Ultima Alteracao: 08/09/2017 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado impressÆo de LOGOMARCA
;Ultima Alteracao: 11/09/2017 por Bruno Carvalho                           
;Motivo Alteracao: Add vari vel de controle IMPRIME_LOGO -> Logo nÆo imprime diretamente em impressora matricial,  
;                  logo, nÆo foi cobrado do cliente a implement‡Æo e IMPRIME_LOGO=False para nÆo ser impresso a logo 
;Ultima Alteracao: 12/09/2017 por Bruno Carvalho                           
;Motivo Alteracao: Processo de impressÆo da logo habilitado IMPRIME_LOGO -> Sol.: 31463

;*******************************************************************************
;* ImpressÆo do Cabe‡alho                                                      *
;*******************************************************************************
Proc Cabecalho()
If Not IsAssigned(NOMEMPRESA)
   Then NOMEMPRESA=""
EndIf

Moveto "Faturac"

NPAG = NPAG+1

Print File ARQIMP CI_10CPP+CI_12CPP+CI_8LPP+CI_INEG 
Print File ARQIMP "ORCAMENTO N§ "+Format("W06.3,AL",NOTAFISC)+"\027F"+Spaces(66)+"\027E"+"Pagina  "+Format("W5,AL",NPAG)+CI_FNEG+"\n\n"

If IMPRIME_LOGO
   Then ESPACO = 10
        Print File ARQIMP Chr(27)+"\""+SubStr(Directory(),1,2)+"\\Sistemas\\ESTOQUE\\LOGO\\GM.BMP"+"\""
   Else ESPACO = 0
Endif

Print File ARQIMP Spaces(ESPACO)+"CLIENTE.: "+Format("W05,AL",[Codigo])+Format("W30,AL",Upper([Razao Social]))+Spaces(1)+"FONE/FAX: "+Format("W15,AL",[Telefone])+"\n"
Print File ARQIMP Spaces(ESPACO)+"ENDERECO: "+Format("W37,AL",Upper([Endereco]))+Spaces(1)+"BAIRRO: "+Format("W15,AL",Upper([Bairro]))+"\n"
Print File ARQIMP Spaces(ESPACO)+"CIDADE..: "+Format("W30,AL",Ltrim(Upper([Cidade]))+"/"+[UF])+Spaces(11)+"CEP: "+[CEP]+"\n"
Print File ARQIMP Spaces(ESPACO)+"EMISSAO.: "+Format("D13",[Data de Emissao])+Spaces(29)+"SAIDA: "+Format("D13",[Data de Saida])+"\n"
Print File ARQIMP Spaces(ESPACO)+"VENDEDOR: "+Format("W05,AL",[Codigo do Representante])+Format("W25,AL",Upper([Nome Fantasia Represent]))+"\n"
Print File ARQIMP Spaces(ESPACO)+"TRANSPOR: "+Format("W05,AL",[Codigo da Transportadora])+Format("W25,AL",Upper([Nome Fantasia Transport]))+"\n\n"

Print File ARQIMP "CODIGO          DESCRICAO                             QUANTIDADE   VR.UNITARIO         TOTAL UN"+"\n"
;Print File ARQIMP "--------------- ----------------------------------- ------------ ------------- ------------- --"+"\n"
                  ;NNNNNNNNNNNNNNN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 999999999,99 9999999999,99 9999999999,99 XX

CONTADOR = 10
Moveto "FaturaI"

EndProc ;(Cabecalho)

;*******************************************************************************
;* ImpressÆo dos Itens                                                         *
;*******************************************************************************
Proc Itens()
private desccompl, regitens, nl, ii, s, posi

Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
QUANT    = 0
TOT      = 0

While [Numero da OF]=[FaturaC->Numero da OF]

  Checa_Linha(1)
  Print File ARQIMP Fill("-",95)+"\n"


  desccompl=[Descricao do Item]
  
  getrecord "\\sistemas\\estoque\\itens" [Faturai->Codigo do Item] to regitens 
  If RetVal
     Then COD_FORNECEDOR = regitens["Codigo Fornecedor"]
          if not isblank(regitens["Descricao Complementar"])
             then desccompl=regitens["Descricao Complementar"]
          endif    
     Else COD_FORNECEDOR = ""
  EndIf
  
  nl=len(desccompl)/35
  if (len(desccompl)/35) > int(nl) or nl=0
     then nl=int(nl)+1
  endif    


  posi=1
  s=Format("W15,AL",COD_FORNECEDOR)+Spaces(1)
  for ii from 1 to nl
  
    Checa_Linha(1)
    s=s+Format("W36,AL",Substr(desccompl,posi,35))
    
    posi=posi+35
    if Substr(desccompl,posi,35)<>""
     then Print File ARQIMP s+"\n"
          
          s=Spaces(16)
    endif      
     
  endfor
  Print File ARQIMP s
  
  If [Quantidade]-Int([Quantidade])>0
     Then Print File ARQIMP Format("W12.3,EIC",[Quantidade])+Spaces(1)
     Else Print File ARQIMP Format("W12,EIC",[Quantidade])+Spaces(1)
  EndIf
  Print File ARQIMP Format("W13.2,EIC",[Preco Unitario])+Spaces(1)
  Print File ARQIMP Format("W13.2,EIC",[Preco Total])+Spaces(1)
  Print File ARQIMP Format("W02,Al",[Unidade Fiscal])+"\n"
  
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

Checa_Linha(1)
Print File ARQIMP Fill("-",95)+"\n"

For ITEM From CONTADOR To PARAM_NITENS-18
    Print File ARQIMP "\n"
EndFor

EndProc ;(Itens)

;*******************************************************************************
;* ImpressÆo do Rodap‚                                                         *
;*******************************************************************************
Proc Rodape(QUEBRAFORM)
Private QUEBRAFORM, Vrfrete, s1,s2

Print File ARQIMP Fill("=",95)+"\n"

If Not QUEBRAFORM                                 
   Then  
         Checa_Linha(18)

         Moveto "FaturaC"

         If [Faturac->Frete Incluso na Nota]="S" or
            [Faturac->Frete Incluso na Nota]="+"
            Then vrfrete=[Faturac->Valor do Frete]
            Else vrfrete=BlankNum()
         EndIf   
         
         Print File ARQIMP Spaces(54)+"(=) Total dos Produtos : "+Format("W13.2,EIC",[Faturac->Valor Mercadoria])+"\n"
         Print File ARQIMP Spaces(54)+"(-) Descontos "+Format("W6.2,EIC",[Faturac->Taxa de Desconto])+"%  : "+Format("W13.2,EIC",[Faturac->Valor Desconto])+"\n"
         Print File ARQIMP Spaces(54)+"(+) Frete............. : "+Format("W13.2,EIC",vrfrete)+"\n"
         Print File ARQIMP Spaces(54)+"(=) Total............. : "+Format("W13.2,EIC",[Faturac->Valor Nota Fiscal])+"\n\n"

         Print File ARQIMP "N.Volumes.: "+Format("W06,EIC",[FaturaC->Numero de Volumes])
         Print File ARQIMP "  Peso Liquido: "+Format("W11.3,EIC",[FaturaC->Peso Liquido])
         Print File ARQIMP "  Peso Bruto: "+Format("W11.3,EIC",[FaturaC->Peso Bruto])+"\n"

        
         Print File ARQIMP "Cond. Pgto: "+[Faturac->Descricao CondPagto]+" - Forma Pgto: "+[Faturac->Forma de Pagamento]+"\n\n"
 
         ;************************ IMPRESSAO DOS VENCIMENTOS ****************************
         Print File ARQIMP "\027E"
         
         s1=""
         s2=""
         KV=0
         for K from 1 to 24

           if isblank(DATA[k])
              then quitloop
           endif    
           
           if kv=8
              then Print File ARQIMP s1+"\n"
                   Print File ARQIMP s2+"\n"
          
                   kv=0
                   s1=""
                   s2=""
           endif
          
           kv=kv+1
           s1=s1+Format("D13",DATA[k])       +Spaces(02)
           s2=s2+Format("W10.2,EIC",VALOR[k])+Spaces(02)

         endfor
         if kv>0
            then Print File ARQIMP s1+"\n"
                 Print File ARQIMP s2+"\n"
          
                 kv=0
                 s1=""
                 s2=""
         endif
          
         Print File ARQIMP "\n"
         
         imprimeobs()
          
         If [Faturac->Frete Incluso na Nota]="S" or
            [Faturac->Frete Incluso na Nota]="+"
            Then Print File ARQIMP Spaces(6)+"* O VALOR DO FRETE JA ESTA INCLUIDO NA NOTINHA !"+"\n"
         EndIf  
         
EndIf

Print File ARQIMP CI_6LPP+CI_12CPP+"\027F"+"\f"

EndProc

;*******************************************************************************
;* Checa linha na area de impressÆo dos Itens                                  *
;*******************************************************************************
Proc Checa_Linha(Nl)
Private nl

If (CONTADOR+nl)>(PARAM_NITENS)
   Then 
        RodaPe(True)
        Cabecalho()
EndIf
CONTADOR=CONTADOR+nl

EndProc ;(Checa_Linha)

;*******************************************************************************
;* Rotina de Impressao de Observa‡äes                                          *
;*******************************************************************************
proc imprimeobs()
private TamObs, nlobs, posobs, i, s

TamObs=94

s="Observacoes: "+[Observacao na Nota Fiscal]

nlobs=Len(s)/tamobs
If nlobs-Int(nlobs)>0
   Then nlobs=Int(nlobs)+1
   Else nlobs=Int(nlobs)
EndIf

posobs=1
For i from 1 to nlobs
  Checa_Linha(1)

  Print File ARQIMP CI_INEG+SubStr(s,posobs,tamobs)+CI_FNEG+"\n"
  posobs=posobs+tamobs
EndFor

Moveto "FaturaC"
endproc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
ArqImp=PrivDir()+"Ro_0319.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

IMPRIME_LOGO=True
                 
Array  DATA[24]
Array VALOR[24]
for K from 1 to 24
   DATA[k]=blankdate()
  VALOR[k]=blanknum()
endfor

K=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]=[Data ]
  VALOR[K]=[Valor]
  
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile
Moveto "Faturac"
                                            
PARAM_NITENS=82
NPAG        =0

AGUARDE("Imprimindo Romaneio -> "+NOTAFISC)
Cabecalho()
Itens()
Rodape(False) 

;---- Imprime Arquivo Impressao ------------------------------------------------
ImpriArq(ARQIMP)

Release Vars VALOR,DATA,PARAM_NITENS,NPAG,QUANT,TOT,CONTADOR,COD_FORNECEDOR,K,KV 
Release Procs Cabecalho,Itens,Rodape,Checa_Linha
LIMPAGUARDE()
