;** RO2v0298   *****************************************************************
;** Imprime a Digitacao do Romaneio 2a Via                 **MG Tecidos**      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 19/09/2012 por Kamila Gomes       
;Ultima Alteracao: 16/08/2014 por Andrey Fillipe
;Motivo Alteracao: Adicionado Campo RENDIMENTO  

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

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

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

Print File ARQIMP "\020"
Print File ARQIMP "\027E"+"EMISSAO: "+Format("D13",[Data de Saida])+"-"+Format("W5,AL",[Hora de Saida])+
                  Spaces(85)+"2a VIA "+Spaces(5)+"NUMERO:  "+Format("W06.3,AL",NOTAFISC)+"\027F"+"\n"
                  
Print File ARQIMP "\015"                  
Print File ARQIMP Fill("=",138)+"\n"

Print File ARQIMP "\020"
Print File ARQIMP "CLIENTE.: "
Print File ARQIMP Format("W05,AL",[Codigo])
Print File ARQIMP Format("W40,AL",[Razao Social])+"\n"

Print File ARQIMP "CIDADE..: "+[Cidade]+"/"+[UF]+"\n"
Print File ARQIMP "VENDEDOR: "+Format("W28,AL",[Nome Fantasia Represent])+"\n"    

Print File ARQIMP "ENTREGA.: "+[Endereco   ]+"\n"
Print File ARQIMP "          "+[Bairro     ]+" - "+[CEP      ]+"\n"
Print File ARQIMP "          "+[Cidade     ]+"/"+[UF         ]+"\n"

Print File ARQIMP "\015"         ;Imprime 17 Caracteres por polegada
                                                                                                             
;********************* IMPRESSAO DOS ITENS ********************************
Print File ARQIMP "------------------------------------------------------------------------------------------------------------------------------------------"+"\n"
Print File ARQIMP "Item  Codigo      Ref  Descricao                                                Un      Quantidade  Rendimento      Unitario         Total"+"\n"
Print File ARQIMP "------------------------------------------------------------------------------------------------------------------------------------------"+"\n"
                  ;  XXX XXXXXXXXXXX XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXX XXXXXXXXX.XXX XXXXXXX.XXXX XXXXXXXXXX.XX

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

Print File ARQIMP CI_6LPP
Moveto "NotaI"
Moveto [Codigo da Empresa]
Locate [Answer->Codigo da Empresa  ],
       [Answer->Numero do Documento],
       [Answer->Serie do Documento ]
QUANT    = 0
TOT      = 0
CONTADOR = 0

PARAM_DESC_ITEM = 67 ;Tamanho limite para descricao do item

While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
      [Numero do Documento]=[Answer->Numero do Documento] And
      [Serie do Documento ]=[Answer->Serie do Documento ]
      
  MoveTo [Codigo do Item]
  DESC_COMP=""
  QTD_LINHA=0
  
  If busca_Lookup("Codigo do Item",[NotaI->Codigo do Item],"SM")
     Then DESC_COMP = REG_BUSCA_LOOKUP["Descricao Complementar"]
  EndIf
  KeyPress "Esc"
  
  If DESC_COMP<>"" 
     Then QTD_LINHA = Round(Len(DESC_COMP)/PARAM_DESC_ITEM,0)
          If ((Len(DESC_COMP)/PARAM_DESC_ITEM)-QTD_LINHA) > 0
             Then QTD_LINHA=QTD_LINHA+1
          EndIf
          
          LINHA_DESC=""
          For CONTADOR_LINHA From 1 To QTD_LINHA
            Switch
              Case CONTADOR_LINHA=1 : INICIO=CONTADOR_LINHA
                                      LINHA_DESC=LINHA_DESC+Spaces(23)+Format("W67,AL",SubStr(DESC_COMP,INICIO,PARAM_DESC_ITEM))+"\n"
              OtherWise             : INICIO=PARAM_DESC_ITEM*(CONTADOR_LINHA-1)+1
                                      LINHA_DESC=LINHA_DESC+Spaces(23)+Format("W67,AL",SubStr(DESC_COMP,INICIO,PARAM_DESC_ITEM))+"\n"
            EndSwitch                        
          EndFor    
          DESC_COMP = LINHA_DESC     
  EndIf 
                                                  
  Checa_Linha(QTD_LINHA+1)
  
  MoveTo [Codigo do Item]
  REFERENCIA=""
  If busca_Lookup("Codigo do Item",[NotaI->Codigo do Item],"SM")
     Then REFERENCIA = REG_BUSCA_LOOKUP["Referencia"]
  EndIf
  If busca_Lookup("Codigo do Item",[NotaI->Codigo do Item],"SM")
     Then RENDIMENTO = REG_BUSCA_LOOKUP["Fator Conversao Embalagem"]
  EndIf  
  KeyPress "Esc" 
  LINHA_ITEM = Spaces(02)+ Format("W03,AR",StrVal([Item do Documento]))
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W11,AL",[Codigo do Item])
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W04,AL",REFERENCIA)
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W55,AL",[Descricao do Item])
  LINHA_ITEM = LINHA_ITEM + Spaces(02) + Format("W03,AL",[Unidade Fiscal])
  LINHA_ITEM = LINHA_ITEM + Spaces(02) + Format("W13.3,EIC",[Quantidade])
  LINHA_ITEM = LINHA_ITEM + Spaces(06) + Format("W07.3,AL",RENDIMENTO)  
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W12.4,EIC",[Preco Unitario])
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W13.2,EIC",[Preco Total])

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

For ITEM From CONTADOR+1 To PARAM_NITENS
    Print File ARQIMP "\n"
EndFor

EndProc ;(Itens)

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

Print File ARQIMP "------------------------------------------------------------------------------------------------------------------------------------------"+"\n"

If QUEBRAFORM                    
   Then Print File ARQIMP Spaces(100)+"**********"+Spaces(17)+"**********"+"\n" 
   Else Print File ARQIMP Spaces(97)+Format("W13.3,EIC",QUANT)+Spaces(14)+Format("W13.2,EIC",[Valor Mercadoria])+"\n"
EndIf


;********************** VALORES *************************

If QUEBRAFORM
   Then Print File ARQIMP Spaces(102)+"Desconto..: "+"  ****  "+"% "+"*************"+"\n"
        Print File ARQIMP Spaces(102)+"Frete.............: "+Spaces(2)+"*************"+"\n"
        Print File ARQIMP Spaces(102)+"A Pagar...........: "+Spaces(2)+"*************"+"\n"
   Else Print File ARQIMP Spaces(102)+"Desconto..: "+Format("W8.2,EIC",[Taxa de Desconto])+"% "+Format("W13.2,EIC",[Valor Desconto])+"\n"
        Print File ARQIMP Spaces(102)+"Frete.............: "+Spaces(2)+Format("W13.2,EIC",[Valor do Frete])+"\n"
        Print File ARQIMP Spaces(102)+"A Pagar...........: "+Spaces(2)+Format("W13.2,EIC",[Valor Nota Fiscal])+"\n"
EndIf

;******************** OBSERVACAO ************************
Moveto "Answer" 

If Not QUEBRAFORM
   Then If SubStr([Observacao na Nota Fiscal],001,115)<>""
           Then Print File ARQIMP "Observacao: "+Format("W115,AL",SubStr([Observacao na Nota Fiscal],001,115))+"\n"
           Else Print File ARQIMP "\n"
        EndIf
   Else Print File ARQIMP "\n"        
EndIf


;******************* INFORMACOES ***********************
If QUEBRAFORM                             
   Then Print File ARQIMP "CondPago..: ********* "+"\n";+Spaces(5)+"Forma de Pagamento: **"+"\n" 
        Print File ARQIMP "Volumes...: ********* "+"\n"
        Print File ARQIMP "Peso......: ********* "+"\n\n"
   Else Print File ARQIMP "CondPago..: "+Format("W04,AR",[Answer->Condicao de Pagamento])+" - "+Rtrim(Format("W50,AL",[Answer->Composicao de Dias]))+"\n"
                          ;Spaces(5)+"Forma de Pagamento: "+[Answer->Forma de Pagamento]+"\n"
        Print File ARQIMP "Volumes...: "+Format("W13",[Numero de Volumes])+"\n"
        Print File ARQIMP "Peso......: "+Format("W13.3,EIC",[Peso Liquido])+"\n\n"
EndIf        

;Checa_Linha(5)
;************************ IMPRESSAO DOS VENCIMENTOS ****************************
Print File ARQIMP "Vencimentos: "
Print File ARQIMP "\027E"

Array DATA[24]
Array VALOR[24]
Array FP[24]
K     = 0
KV    = 0

Moveto "NotaV"
Moveto [Codigo da Empresa]
Locate [Answer->Codigo da Empresa  ],
       [Answer->Numero do Documento],
       [Answer->Serie do Documento ]
While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
      [Numero do Documento]=[Answer->Numero do Documento] And
      [Serie do Documento ]=[Answer->Serie do Documento ]
  K = K+1
  KK= K+1
  DATA[K]  = Format("D13",[Data])
  VALOR[K] = Format("W11.2,AR,EIC",[Valor])+Spaces(4)
  FP[K]    = Format("W2,AL",[Forma de Pagamento])
  If K=8
     Then PARCELAS = K
          VENC()
          K=0
  EndIf
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile
If K>0
   Then PARCELAS = K
        VENC()
EndIf
Print File ARQIMP "\n\n"
Print File ARQIMP "\027F"
;******************* INFORMACOES ***********************
Print File ARQIMP "\015"

If QUEBRAFORM  
   Then Print File ARQIMP Spaces(53)+"CONTINUA NA PROXIMA PAGINA"
   Else Print File ARQIMP Spaces(31)+"FA€A O PAGAMENTO NOMINAL E CRUZADO E ENVIE PARA O ENDERECO DA NOTA"
EndIf   

;***************** IMPRESSAO DO RODAPE ******************

Print File ARQIMP "\f"
                     
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                
  If Len(Ltrim(DATA[I]))=9
     Then DATA[I] = "0"+Ltrim(DATA[I])
  EndIf
  Print File ARQIMP DATA[I]+Spaces(01)+FP[I]+Spaces(03)
EndFor
Print File ARQIMP "\n"
Print File ARQIMP Spaces(12)
For I From 1 to K
  Print File ARQIMP VALOR[I]+Spaces(01)
EndFor
Print File ARQIMP "\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 "NotaI"
   Else CONTADOR=CONTADOR+nl
EndIf
EndProc

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

         
Moveto "Answer"
Switch
  Case [Numero de Parcelas] < 11                                : CONTA_LINHA_VENC = 2
  Case [Numero de Parcelas] > 10 And [Numero de Parcelas] <= 20 : CONTA_LINHA_VENC = 4
  Case [Numero de Parcelas] > 20 And [Numero de Parcelas] <= 30 : CONTA_LINHA_VENC = 6
EndSwitch  

; Quantidade de Linhas de Itens por Pagina
PARAM_NITENS=44
PARAM_NITENS= PARAM_NITENS - CONTA_LINHA_VENC       

If Not IsBlank([Endereco ]) 
   Then PARAM_NITENS=PARAM_NITENS-3
EndIf 

AGUARDE("Imprimindo 2a Via Romaneio -> "+[Answer->Numero do Documento])
            Print File ARQIMP Chr(27)+Chr(48)
            Print File ARQIMP Chr(27)+Chr(18)
Cabecalho()
Itens()
Rodape(False) 

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

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