;** RO_0419 ********************************************************************
;** Imprime a Digitacao do Romaneio                          ** STUDIO TEXTIL **
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 04/08/2018 por Bruno Carvalho
;Ultima Alteracao: 08/08/2018 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado vari vel de controle para numero de vias -> NVIA = 2
;Ultima Alteracao: 10/08/2018 por Anivel Augusto Rodrigues  
;Motivo Alteracao: Ajustes quebra por referencia e totais        

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

ntable=table()

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

EndProc ;(Checa_Linha)

;*******************************************************************************
;* ImpressÆo do Cabe‡alho                                                      *
;*******************************************************************************
Proc Cabecalho()
private regdestinat, email

If Not IsAssigned(NOMEMPRESA)
   Then NOMEMPRESA=""
EndIf

getrecord "\\sistemas\\cadastro\\Destinat" [Faturac->Codigo] to regdestinat
if retval
   then email=regdestinat["Endereco_Eletronico"]
   else email=""
endif
   
Moveto "Faturac"

NPAG = NPAG+1

Print File ARQIMP "\n"
Print File ARQIMP CI_10CPP+CI_12CPP+CI_8LPP+CI_INEG+CI_IEXP 
Print File ARQIMP "N§ "+Format("W06.3,AL",NOTAFISC)+" - 0419"+CI_FNEG+CI_FEXP+Spaces(23)+
           "Impressao: "+Format("D13",Today())+"-"+Time()+"   Pag:"+format("W3,AR",NPAG)+"\n\n"
Print File ARQIMP "CLIENTE.: "+CI_INEG+Format("W05,AL",[Codigo])+Format("W30,AL",Upper([Razao Social]))+CI_FNEG+
           Spaces(5)+"FONE/FAX: "+Format("W15,AL",[Telefone])+"    N.PEDIDO: "+[Numero do Pedido]+"\n"
Print File ARQIMP "CNPJ/CPF: "+Format("W38,AL",[CGC])+" INSC.EST.: "+Format("W25,AL",[IE])+"\n"
Print File ARQIMP "ENDERECO: "+Format("W37,AL",Upper([Endereco]))+Spaces(5)+"BAIRRO: "+Format("W15,AL",Upper([Bairro]))+"\n"
Print File ARQIMP "CIDADE..: "+Format("W30,AL",Ltrim(Upper([Cidade]))+"/"+[UF])+Spaces(15)+"CEP: "+[CEP]+"\n"
Print File ARQIMP "EMAIL...: "+email+"\n"
Print File ARQIMP "EMISSAO.: "+Format("D13",[Data de Emissao])+Spaces(34)+"SAIDA: "+Format("D13",[Data de Saida])+"\n"
Print File ARQIMP "VENDEDOR: "+CI_INEG+Format("W05,AL",[Codigo do Representante])+Format("W34,AL",[Nome Fantasia Represent])+CI_FNEG
Print File ARQIMP "DESTINACAO: "+Format("W04,AL",[Codigo da Destinacao])+[Descricao da Destinacao]+"\n\n"

Print File ARQIMP "REFERENCIA DESCRICAO                      DESENHO      QUANTIDADE UN   VR.UNITARIO         TOTAL"+"\n"
                  ;NNNNNNNNNN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1234567890 999999999,99 XX 9999999999,99 9999999999,99
                   
Print File ARQIMP Fill("=",96)+"\n"

CONTADOR = 12

EndProc ;(Cabecalho)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc SomarReferencia()

Checa_Linha(1)
Print File ARQIMP spaces(22)+Ci_INEG+Format("W30,AL","Total "+refant+".. ")
Print File ARQIMP Format("W13.3,EIC",TOTREF)+CI_FNEG+"\n"

TOTGER=TOTGER+TOTREF

refant=[Referencia]
TOTREF=0
endproc

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

Moveto TABELA_TEMP
Home
refant=[Referencia]
TOTREF=0
TOTGER=0
Cont=1
Scan

   if [Referencia]<>refant
      then SomarReferencia()
   endif   

  Descricao_Cor = [Descricao da Cor_Tecido]
  desccompl     = [Descricao do Item      ]
  
  getrecord "\\sistemas\\estoque\\itens" [Codigo do Item] to regitens 
  If RetVal
     Then 
          if not isblank(regitens["Descricao Complementar"])
             then desccompl=regitens["Descricao do Item"] + " " + regitens["Descricao Complementar"]
                  ;Descricao_Cor=regitens["Descricao da Cor_Tecido"]            
          endif    
  EndIf
  ;If Descricao_Cor<>""
  ;   Then If desccompl<>""  
  ;           Then desccompl = desccompl + " " + Descricao_Cor
  ;           Else desccompl = Descricao_Cor
  ;        EnDIf
  ;EndIf
  
  nl=len(desccompl)/30
  if (len(desccompl)/30) > int(nl) or nl=0
     then nl=int(nl)+1
  endif    
  Checa_Linha(nl)
  posi=1
  s=Format("W10,AL",[Referencia])+Spaces(1)
  for ii from 1 to nl
    s=s+Format("W31,AL",Substr(desccompl,posi,30))
    posi=posi+30
    if Substr(desccompl,posi,30)<>""
     then Print File ARQIMP s+"\n"
          s=Spaces(11)
    endif      
  endfor
  Print File ARQIMP s
  Print File ARQIMP Format("W10",Descricao_Cor)+Spaces(1)
  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("W02,Al",[Unidade Fiscal])+Spaces(1)     
  Print File ARQIMP Format("W13.2,EIC",[Preco Unitario])+Spaces(1)
  Print File ARQIMP Format("W13.2,EIC",[Preco Total])+"\n"
  
  TOTREF=TOTREF+[Quantidade]
EndScan
SomarReferencia()

Checa_Linha(1)
Print File ARQIMP "\n"

TOTREF=TOTGER
refant=""
SomarReferencia()

If CONTADOR<=27
   Then PARAM_NITENS = 27
        For ITEM From CONTADOR To PARAM_NITENS
            Print File ARQIMP "\n"
        EndFor
EndIf

EndProc ;(Itens)

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

ntable=table()

Print File ARQIMP Fill("=",96)+"\n"
If QUEBRAFORM
   Then  Moveto "FaturaC"
         
         Print File ARQIMP Spaces(57)+"(=) Total dos Produtos :   *********  "+"\n"
         Print File ARQIMP Spaces(57)+"(-) Descontos   **  %  :   *********  "+"\n"
         
         Print File ARQIMP Spaces(13)+"** CONTINUA NA PROXIMA FOLHA **"+Spaces(13)
         Print File ARQIMP            "(+) Frete............. :   *********  "+"\n"
         
         Print File ARQIMP Spaces(57)+"(=) Total............. :   *********  "+"\n\n"
         
         Print File ARQIMP "(+)Frete..:   ******    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"
    Else Moveto "FaturaC"

         If [Faturac->Frete Incluso na Nota]="S" or
            [Faturac->Frete Incluso na Nota]="+"
            Then  vrfrete=[Faturac->Valor do Frete]
                 lvrfrete="(+)Frete..: "+Format("W10.2,EIC",vrfrete)
            Else  vrfrete=BlankNum()
                 lvrfrete="(:)Frete..: "+Format("W10.2,EIC",vrfrete)
        EndIf
           
        CONT_OBS = 0
        OBS = [Observacao na Nota Fiscal]
        PosI = Search("\n",OBS)
        If PosI > 0
           Then While PosI > 0
                  CONT_OBS = CONT_OBS + 1
                  Switch
                    Case CONT_OBS=1 : OBS_1 = Substr(OBS,1,PosI-1)
                    Case CONT_OBS=2 : OBS_2 = Substr(OBS,1,PosI-1)
                    OtherWise  : QuitLoop
                  EndSwitch
                  OBS   = Substr(OBS,PosI+1,Len(OBS))
                  PosI  = Search("\n",OBS)
                  If PosI=0
                     Then OBS_2 = OBS
                          QuitLoop
                  EndIf    
                EndWhile              
                
                ;Apenas duas linhas de OBS, e se a primeira linha for maior que 50 caracteres, 
                ;a segunda linha ser  a sequencia destes caracteres
                If SubStr(OBS_1,51,50)<>"" Then OBS_2 = SubStr(OBS_1,51,50) EndIf
                If SubStr(OBS_1,01,50)<>"" Then OBS_1 = SubStr(OBS_1,01,50) EndIf
                
           Else OBS_1 = Ltrim(Rtrim(SubStr([Observacao na Nota Fiscal],01,50)))
                OBS_2 = Ltrim(Rtrim(SubStr([Observacao na Nota Fiscal],51,50)))
        EndIf    
        
         If OBS_1<>""
            Then Print File ARQIMP "Obs.: "+Completa(OBS_1,50," ")+Spaces(1)
            Else Print File ARQIMP Spaces(57)
         EndIf
         Print File ARQIMP "(=) Total dos Produtos : "+Format("W13.2,EIC",[Faturac->Valor Mercadoria])+"\n"
         
         If OBS_2<>""
            Then Print File ARQIMP "      "+Completa(OBS_2,50," ")+Spaces(1)
            Else Print File ARQIMP Spaces(57)
         EndIf
         Print File ARQIMP            "(-) Descontos "+Format("W6.2,EIC",[Faturac->Taxa de Desconto])+"%  : "+Format("W13.2,EIC",[Faturac->Valor Desconto])+"\n"
         Print File ARQIMP Spaces(57)+"(+) Frete............. : "+Format("W13.2,EIC",vrfrete)+"\n"
         
         If [Faturac->Frete Incluso na Nota]="S" or
            [Faturac->Frete Incluso na Nota]="+"
            Then Print File ARQIMP Spaces(4)+"* O VALOR DO FRETE JA ESTA INCLUIDO NA NOTINHA !"+Spaces(5)
            Else Print File ARQIMP Spaces(57)
         EndIf
         Print File ARQIMP            "(=) Total............. : "+Format("W13.2,EIC",[Faturac->Valor Nota Fiscal])+"\n\n"

         Print File ARQIMP lvrfrete+"  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"
EndIf

Print File ARQIMP "Transport.: "+Format("W05,AL",[Faturac->Codigo da Transportadora])+Format("W25,AL",Upper([Faturac->Nome Fantasia Transport]))+"\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=""
s3=""
KV=0
for K from 1 to 36

 if isblank(DATA[k])
    then quitloop
 endif    
 
 if kv=8
    then Print File ARQIMP s1+"\n"
         Print File ARQIMP s2+"\n"
         Print File ARQIMP s3+"\n"

         kv=0
         s1=""
         s2=""
         s3=""
 endif

 kv=kv+1
 s1=s1+spaces(08)+FPGT[K]          +Spaces(02)
 s2=s2+Format("D13",DATA[k])       +Spaces(02)
 s3=s3+Format("W10.2,EIC",VALOR[k])+Spaces(02)

endfor
if kv>0
  then Print File ARQIMP s1+"\n"
       Print File ARQIMP s2+"\n"
       Print File ARQIMP s3+"\n"

       kv=0
       s1=""
       s2=""
       s3=""
endif

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

;If CONTA_PAGINA=1
;   Then CONTA_PAGINA = CONTA_PAGINA + 1
;        Print File ARQIMP "\n\n\n\n"
;   Else Print File ARQIMP CI_6LPP+CI_12CPP+"\027F"+"\f"
;        CONTA_PAGINA = 1
;EndIf

moveto ntable
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc Seleciona()
Do_It!

TABELA_TEMP=Cria_Tabela("","Numero da OF(A6*),Referencia(A20*),Descricao do Item(A30*),Descricao da Cor_Tecido(A20*),Item da OF(S*),Codigo do Item(A10),"+
                           "Preco Unitario($),Quantidade(N),Unidade Fiscal(A4),Preco Total($)")

CoEditKey

{TableAdd} TypeIn TABELA_TEMP Enter

Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]

  Moveto TABELA_TEMP
  End
  Down
  [Numero da OF           ]=[FaturaI->Numero da OF           ]
  [Referencia             ]=[FaturaI->Referencia             ]
  [Descricao do Item      ]=[FaturaI->Descricao do Item      ]
  [Descricao da Cor_Tecido]=[FaturaI->Descricao da Cor_Tecido]
  [Item da OF             ]=[FaturaI->Item da OF             ]
  [Codigo do Item         ]=[FaturaI->Codigo do Item         ]
  [Preco Unitario         ]=[FaturaI->Preco Unitario         ]
  [Quantidade             ]=[FaturaI->Quantidade             ]
  [Unidade Fiscal         ]=[FaturaI->Unidade Fiscal         ]
  [Preco Total            ]=[FaturaI->Preco Total            ]
  UnLockRecord

  Moveto "FaturaI"
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

EndProc ;Seleciona()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AGUARDE("Imprimindo Romaneio -> "+NOTAFISC)

ArqImp=PrivDir()+"RO_0419.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

Do_it!

CONTA_PAGINA = 1                
                 
Array  DATA[36]
Array VALOR[36]
Array FPGT [36]

for K from 1 to 36
   DATA[k]=blankdate()
  VALOR[k]=blanknum()
   FPGT[K]=""
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]
   FPGT[K]=[Forma de Pagamento]
  
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile
Moveto "Faturac" 
Switch
  Case K > 24 : NLINHA = 9
  Case K > 16 : NLINHA = 6
  Case K > 08 : NLINHA = 3
  OtherWise   : NLINHA = 0
EndSwitch 

Seleciona()

PARAM_NITENS = 74-NLINHA
NVIA         = 2

For ii From 1 To NVIA
  NPAG         = 0
  Cabecalho()
  Itens()
  Rodape(False)   
EndFor

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

Do_It!
Moveto TABELA_TEMP ClearImage Delete TABELA_TEMP

Moveto "FaturaC"
CoEditKey

Release Vars VALOR,DATA,PARAM_NITENS,NPAG,CONTADOR,K,KV,TOTREF,TOTGER,NUMOF,TABELA_TEMP
Release Procs Cabecalho,Itens,Rodape,Checa_Linha,Seleciona,SomarReferencia
LIMPAGUARDE()
