;** Ro_0298c *******************************************************************
;** Imprime a Digitacao do Romaneio                     MG Tecidos . VersÆo C  *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido  em: 20/07/2012 por Bruno Carvalho
;Alterado em     : 25/07/2012 por Bruno Carvalho                
;Motivo Alteracao: Adicionado Sigla da Forma de Pagamento nos Vencimentos e retirado a FP
;Alterado em     : 01/08/2012 por Bruno Carvalho                
;Motivo Alteracao: Ajustado quebras para Vencimentos, caso ultrapasse 6 parcelas 
;Alterado em     : 03/08/2012 por Bruno Carvalho                
;Motivo Alteracao: Ajustado Sigla da Forma de Pagamento nos Vencimentos
;Ultima Alteracao: 24/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes imprimir 2a via
;Ultima Alteracao: 01/11/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ ¤ imprimir "CodPagto" e "Vencto" quando nÆo for final da impressÆo
;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 e RO_0298c 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, sendo 
; em formulario RAZAO.
; O modelo C imprime os itens conforme os parƒmetros inseridos no scrit, podendo
; ser em formul rio razÆo ou nÆo, e configurado em impressÆo em folha A4!

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("=",137)+"\n"

Print File ARQIMP "\020"
Print File ARQIMP "\027E"+"EMISSAO: "+Format("D13",[Data de Saida])+"-"+Format("W5,AL",[Hora de Saida])+
                  Spaces(84)+"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("=",137)+"\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"    

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     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 "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=""
  QTD_LINHA=0
  
  If busca_Lookup("Codigo do Item",[FaturaI->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          
            ;If CONTADOR_LINHA<>QTD_LINHA Then LINHA_DESC = LINHA_DESC + "\n" EndIf                       
          EndFor    
          DESC_COMP = LINHA_DESC     
  EndIf 
                                                  
  Checa_Linha(QTD_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
  KeyPress "Esc" 
  LINHA_ITEM = Spaces(02)+ Format("W03,AR",StrVal([Item da OF]))
  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("W67,AL",[Descricao do Item])
  LINHA_ITEM = LINHA_ITEM + Spaces(02) + Format("W04,Al",[Unidade Fiscal])
  LINHA_ITEM = LINHA_ITEM + Spaces(01) + Format("W13.3,EIC",[Quantidade])
  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 "FaturaC"

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

;**************** PARCELAS/VENCIMENTOS ********************
;OUTRA FORMA DE SER EXIBIDO AS PARCELAS DO ROMANEIO

;Print File ARQIMP "Condicao de Pagamento: "+Format("W04,AR",[FaturaC->Condicao de Pagamento])+" - "+Format("W20,AL",[FaturaC->Descricao CondPagto])
;
;If QUEBRAFORM                    
;   Then Print File ARQIMP Spaces(45)+"**********"+Spaces(15)+"**********"+"\n" 
;   Else Print File ARQIMP Spaces(42)+Format("W13.3,EIC",QUANT)+Spaces(12)+Format("W13.2,EIC",[Valor Mercadoria])+"\n"
;EndIf

;Moveto "FaturaV"
;Print File ARQIMP "PARCELA"+Spaces(03)+"ND"+Spaces(05)+"VENCIMENTO"+Spaces(06)+"VALOR"+Spaces(02)+"FP"+"\n"
;
;CONT_ARRAY= 0
;CONTADOR  = 0
;Moveto [Numero da OF]
;Locate [FaturaC->Numero da OF]
;If RetVal
;   Then While ([Numero da OF]=[FaturaC->Numero da OF])
;          CONT_ARRAY=CONT_ARRAY+1
;          Skip
;          If EOT() Then QuitLoop EndIf
;        EndWhile
;EndIf

;If CONT_ARRAY<>0 
;   Then Array VENCIMENTO[CONT_ARRAY]
;        Moveto [Numero da OF]
;        Locate [FaturaC->Numero da OF]
;        If RetVal
;           Then While ([Numero da OF]=[FaturaC->Numero da OF])
;                  CONTADOR=CONTADOR+1
;                  VENCIMENTO[CONTADOR]=Spaces(03)+AlinhM([Sequencia],2)+Spaces(03)+Format("W4",[Numero de Dias])+
;                                       Spaces(05)+ Format("D13",[Data])+Spaces(01)+Format("W11.2,EIC",[Valor])+Spaces(01)+Format("W2",[Forma de Pagamento])
;                  Skip
;                  If EOT() Then QuitLoop EndIf
;                EndWhile
;        EndIf
;EndIf    
  
;Moveto "FaturaC"    
;If CONTADOR>0
;   Then Print File ARQIMP Format("W95,AL",VENCIMENTO[1])
;   Else Print File ARQIMP Spaces(95)
;EndIf

;If QUEBRAFORM
;   Then Print File ARQIMP "Desconto..: "+"  ****  "+"% "+"*************"+"\n"
;   Else Print File ARQIMP "Desconto..: "+Format("W8.2,EIC",[Taxa de Desconto])+"% "+Format("W13.2,EIC",[Valor Desconto])+"\n"
;EndIf

;If CONTADOR>1
;   Then Print File ARQIMP Format("W95,AL",VENCIMENTO[2])
;   Else Print File ARQIMP Spaces(95)
;EndIf

;If QUEBRAFORM
;   Then Print File ARQIMP "Frete.............: "+Spaces(2)+"*************"+"\n"
;   Else Print File ARQIMP "Frete.............: "+Spaces(2)+Format("W13.2,EIC",[Valor do Frete])+"\n"
;EndIf

;If CONTADOR>2
;   Then Print File ARQIMP Format("W95,AL",VENCIMENTO[3])
;   Else Print File ARQIMP Spaces(95)
;EndIf

;If QUEBRAFORM
;   Then Print File ARQIMP "A Pagar...........: "+Spaces(2)+"*************"+"\n"
;   Else Print File ARQIMP "A Pagar...........: "+Spaces(2)+Format("W13.2,EIC",[Valor Nota Fiscal])+"\n"
;EndIf

;If CONTADOR > 3
;   Then For War From 4 To CONTADOR
;           Print File ARQIMP Format("W95,AL",VENCIMENTO[War])+"\n"
;        EndFor
;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 "FaturaC" 

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

;If SubStr([Observacao na Nota Fiscal],116,115)<>""
;   Then Print File ARQIMP Spaces(12)+Format("W115,AL",SubStr([Observacao na Nota Fiscal],116,115))+"\n\n"
;   Else Print File ARQIMP "\n\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",[FaturaC->Condicao de Pagamento])+" - "+Rtrim(Format("W50,AL",[FaturaC->Composicao de Dias]))+"\n"
                          ;Spaces(5)+"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        

;Checa_Linha(5)
;************************ IMPRESSAO DOS VENCIMENTOS ****************************
If Not QUEBRAFORM
   Then Print File ARQIMP "Vencimentos: "
        Print File ARQIMP "\027E"
        
        Array DATA[24]
        Array VALOR[24]
        Array FP[24]
        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
          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"

EndIf

If QUEBRAFORM  
  Then Print File ARQIMP "\n\n\n\n\n\n\n\n"
       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 ******************
;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                
  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 "FaturaI"
   Else CONTADOR=CONTADOR+nl
EndIf
EndProc

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

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

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(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,Cabecalho, Itens, Rodape, VENC, Checa_linha
LIMPAGUARDE()
