;** Ro_0298b *******************************************************************
;** Imprime a Digitacao do Romaneio                               MG Tecidos   *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido  em: 09/02/2012 por Bruno Carvalho
;Alterado em     : 21/05/2012 por Bruno Carvalho                   
;Motivo Alteracao: Ajustes nos Vencimentos (Exibir 12 Venctos)
;Alterado em     : 28/05/2012 por Karina Andrade
;Motivo Alteracao: Ajustes na Descri‡Æo do Item e Composi‡Æo de Dias
;Alterado em     : 21/06/2012 por Bruno Carvalho
;Motivo Alteracao: Alterado Desc. do Item p/ Desc. Complementar e campo unit rio com 4 casas decimais.
;Alterado em     : 22/06/2012 por Bruno Carvalho
;Motivo Alteracao: Alterado Desc. Complementar p/ Desc. do Item
;Alterado em     : 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado Descri‡Æo complementar a baixo da descri‡Æo do item
;Ultima Alteracao: 24/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes imprimir 2a via
;Ultima Alteracao: 22/10/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ imprimir com 135 caracteres 
;Ultima Alteracao: 05/11/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ ¤ imprimir "CodPagto" e "Vencto" quando nÆo for final da impressÆo
;Ultima Alteracao: 13/02/2014 por Andrey Fillipe
;Motivo Alteracao: Adicionado email do Cliente
;Ultima Alteracao: 20/05/2014 por Luis Gustavo
;Motivo Alteracao: Adicionado Campo RENDIMENTO a pedido do Cliente
;Ultima Alteracao: 08/06/2015 por Andrey Fillipe
;Motivo Alteracao: Adicionado Campo PR/MT a pedido do Cliente
;Ultima Alteracao: 15/06/2016 por Bruno Carvalho 
;Motivo Alteracao: Adicionado Pega_Endereco_Fatura() e ajustado dados do endere‡o

;*******************************************************************************
;* Rotina para Impressao do Relatorio . Cabe‡alho                              *
;*******************************************************************************
; Criado Modelo RO_0298a e RO_0298b conforme solicita‡Æo do cliente!
; O modelo A imprime os itens em duas colunas em formul rio razÆo (33 linhas)
; O modelo B imprime os itens conforme os parƒmetros inseridos no scrit, podendo
; ser em formul rio razÆo ou nÆo!

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_6LPP

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

Print File ARQIMP "\020"
Print File ARQIMP "\027E"+"EMISSAO: "+Format("D13",[Data de Saida])+"-"+Format("W5,AL",[Hora de Saida])+
                  Spaces(07)+"NUMERO: "+Format("W06.3,AL",NOTAFISC)+"\027F"
                  
If IsAssigned(SOIMPRIMIR) And SOIMPRIMIR
   Then Print File ARQIMP CI_IEXP+CI_INEG+" 2a Via"+CI_FNEG+CI_FEXP+"\n"
   Else Print File ARQIMP "\n"
EndIf
                  
Print File ARQIMP "\015"                  
Print File ARQIMP Fill("=",135)+"\n"

Print File ARQIMP "\020"
Print File ARQIMP "CLIENTE.: "
Print File ARQIMP Format("W05,AL",[Codigo])
Print File ARQIMP Format("W40,AL",[Razao Social])
GetRecord "\\Sistemas\\Cadastro\\Destinat" [Faturac->Codigo] To EMAIL
If RetVal
   Then EMAIL = EMAIL["Endereco_Eletronico"]
   Else EMAIL = ""
EndIf
If EMAIL<>""
   Then Print File ARQIMP "Email: "+Format("W40,AL",EMAIL)+"\n"
   Else Print File ARQIMP "\n"
EndIf
Print File ARQIMP "CIDADE..: "+[Cidade]+"/"+[UF]+"\n"
Print File ARQIMP "VENDEDOR: "+Format("W28,AL",[Nome Fantasia Represent])+"\n"    

If Not IsBlank(VSD_E_Endereco) And VSD_E_Endereco<>"O MESMO"
   Then Print File ARQIMP "ENTREGA.: "+VSD_E_Endereco+"\n"
        Print File ARQIMP "          "+VSD_E_Bairro+" - "+VSD_E_CEP+"\n"
        Print File ARQIMP "          "+VSD_E_Cidade+"/"+VSD_E_UF+"\n"
EndIf

Print File ARQIMP "\015"         ;Imprime 17 Caracteres por polegada

Moveto "FaturaC"
;********************* IMPRESSAO DOS ITENS ********************************
Print File ARQIMP "---------------------------------------------------------------------------------------------------------------------------------------"+"\n"
Print File ARQIMP "Item Codigo     Ref  Descricao                                          Un    Quantidade Rendimento      PR/MT    Unitario        Total"+"\n"
Print File ARQIMP "---------------------------------------------------------------------------------------------------------------------------------------"+"\n"
                  ; XXX XXXXXXXXXX XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX XXXXXXX.XXXX XXXXXXXXXX XXXXXXXXXX XXXXXX.XXXX XXXXXXXXX.XX

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

Print File ARQIMP CI_6LPP
Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
QUANT    = 0
TOT      = 0
CONTADOR = 0

PARAM_DESC_ITEM = 67 ;Tamanho limite para descricao do item

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

  MoveTo [Codigo do Item]
  DESC_COMP=""

  If Busca_Lookup("Codigo do Item",[FaturaI->Codigo do Item],"SM")
     Then DESC_COMP = REG_BUSCA_LOOKUP["Descricao Complementar"]
  EndIf

  KeyPress "Esc"

  ;QTD_LINHA=0
  ; Cliente nÆo quer mais a impressÆo da Descricao Complementar afim de ganhar espa‡o p/ impressÆo de itens
  ;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("W65,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("W65,AL",SubStr(DESC_COMP,INICIO,PARAM_DESC_ITEM))+"\n"
  ;          EndSwitch          
  ;          ;If CONTADOR_LINHA<>QTD_LINHA Then LINHA_DESC = LINHA_DESC + "\n" EndIf                       
  ;        EndFor    
  ;        DESC_COMP = LINHA_DESC     
  ;EndIf 
  ;                                                
  ;Checa_Linha(QTD_LINHA+1)
  
  Checa_Linha(1)
  MoveTo [Codigo do Item]
  REFERENCIA=""
  If busca_Lookup("Codigo do Item",[FaturaI->Codigo do Item],"SM")
     Then REFERENCIA = REG_BUSCA_LOOKUP["Referencia"]
  EndIf
  If busca_Lookup("Codigo do Item",[FaturaI->Codigo do Item],"SM")
     Then UNEMB = REG_BUSCA_LOOKUP["Unidade Embalagem"]
  EndIf
  If busca_Lookup("Codigo do Item",[FaturaI->Codigo do Item],"SM")
     Then RENDIMENTO = REG_BUSCA_LOOKUP["Fator Conversao Embalagem"]
  EndIf
  
  KeyPress "Esc" 
  LINHA_ITEM = Spaces(01)+ Format("W03,AR",StrVal([Item da OF]))
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W10,AL",[Codigo do Item])
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W04,AL",REFERENCIA)
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W50,AL",[Descricao do Item])
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W03,AL",[Unidade Fiscal])
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W12.3,EIC",[Quantidade])
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W10.3,EIC",RENDIMENTO)
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W10.3,EIC",([Preco Unitario]/RENDIMENTO))
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W11.4,EIC",[Preco Unitario])
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W12.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 "FaturaC"

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

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

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

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

;******************** OBSERVACAO ************************
Moveto "FaturaC" 

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

;If SubStr([Observacao na Nota Fiscal],114,113)<>""
;   Then Print File ARQIMP Spaces(12)+Format("W113,AL",SubStr([Observacao na Nota Fiscal],114,113))+"\n\n"
;   Else Print File ARQIMP "\n\n"
;EndIf

;******************* INFORMACOES ***********************
If QUEBRAFORM                             
   Then ;Print File ARQIMP "CondPago..: ********* "+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",[FaturaC->Condicao de Pagamento])+" - "+Rtrim(Format("W50,AL",[FaturaC->Composicao de Dias]))+
                          Spaces(5)+"\n";+"Forma de Pagamento: "+[FaturaC->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        

;********************* IMPRESSAO DOS VENCIMENTOS **************************
If Not QUEBRAFORM
   Then Print File ARQIMP "\020"
        Print File ARQIMP "\027E"
        Print File ARQIMP "Vencimentos: "
        
        Array DATA[12]
        Array VALOR[12]
        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=11
             Then VENC()
                  K=0
          EndIf
          Skip
          If EOT() Then QuitLoop EndIf
        EndWhile
        If K>0
           Then If QUEBRAFORM
                   Then Print File ARQIMP "**********"+"\n\n\n"
                   Else VENC()
                EndIf   
        EndIf
        
        Print File ARQIMP "\027F"
EndIf

;******************* INFORMACOES ***********************
Print File ARQIMP "\015"

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

;***************** IMPRESSAO DO RODAPE ******************
;If QUEBRAFORM
;   Then Print File ARQIMP "\n\n\n" 
;   Else Print File ARQIMP Spaces(40)+"   /   /     -                                   " + "\n"
;        Print File ARQIMP Spaces(40)+"-------------------------------------------------" + "\n"
;        Print File ARQIMP Spaces(40)+"              Data e Assinatura"+"\n" 
;EndIf        
;Print File ARQIMP CI_6LPP
;Print File ARQIMP CI_10CPP
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
  Print File ARQIMP DATA[I]+Spaces(01)
EndFor
Print File ARQIMP "\n"
Print File ARQIMP Spaces(13)
For I From 1 to K
  Print File ARQIMP VALOR[I]+Spaces(01)
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_0298b.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

PARAM_NITENS=11            

Moveto "FaturaC"
Pega_Endereco_Fatura([Numero da OF])

If Not IsBlank(VSD_E_Endereco) And VSD_E_Endereco<>"O MESMO"
   Then PARAM_NITENS=PARAM_NITENS-3
EndIf        

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

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

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